Articles of clang

OpenMP no se vincula correctamente al comstackr con Clang

He construido clang 4.0 desde la fuente en Ubuntu 16.04 y estoy intentando comstackr un progtwig OpenMP simple pero recibo los siguientes errores. /tmp/test-7f2c7c.o: In function `main’: /home/me/sf_shared/test.c:(.text+0x52): undefined reference to `__kmpc_fork_call’ /tmp/test-7f2c7c.o: In function `.omp_outlined.’: /home/me/sf_shared/test.c:(.text+0xd9): undefined reference to `__kmpc_for_static_init_4′ /home/me/sf_shared/test.c:(.text+0x16d): undefined reference to `__kmpc_for_static_fini’ clang-4.0: error: linker command failed with exit code 1 […]

¿Alternativa a -pg con Clang?

Deseo hacer un perfil de la CPU (muestra si es posible), con el menor impacto posible en el rendimiento (por lo tanto, similar a GCC’s -pg ), binarios comstackdos con Clang. ¿Existe alguna alternativa que use la instrumentación del código o produzca resultados similares a gprof?

¿Está la memoria de puesta a cero libre ()?

Hasta hoy vivía en la creencia de que llamar a free() en el espacio de memoria lo libera para una asignación adicional sin ninguna otra modificación. Especialmente, teniendo en cuenta esta pregunta SO que indica claramente que free() NO pone a cero la memoria. Sin embargo, consideremos este fragmento de código (test.c): #include #include int […]

¿Hay alguna forma de obtener el tipo en bruto del valor del indicador de deferencia llvm (es decir, el tipo de indicador)?

Tal vez el título sea algo confuso. Pero déjame mostrarte un ejemplo. void foo(int val) { // do something } int i = 27; int* pi = &i; foo(*pi); Aquí, si lo comstackmos usando clang, el tipo de * pi será i32, pero sabemos que pi es de tipo puntero. mi pregunta es que usamos […]

Use un registro particular para una variable en LLVM

Estoy escribiendo un paso de LLVM que modifica el código de bits de LLVM. Para una variable, quiero que use un registro, digamos R15 en x86. ¿Cómo puedo indicarle a LLVM que use este registro cuando genere un código de máquina? ¿Se puede instruir esto a nivel de código de bits?

Número de recuento de matrices

¿Cómo puede contarse el número total de arreglos en un progtwig en C? Las declaraciones de matriz en LLVM IR corresponden al tipo de operación de alloca . Asi que int a[10]; corresponde a %a = alloca [10 x i32], align 4 en LLVM IR. Pero también me di cuenta de que int j = […]

C: Advertencia sobre la visibilidad de una estructura.

Tengo un proyecto complejo de C. En un archivo message.h declaro esta estructura. struct message { int err; struct header { char *protocol_version; char *type; long int sequence_number; } header; struct body { int num_tag; char *tag_labels[LEN]; int num_attr_tag[LEN]; char *attr_labels[LEN][LEN]; char *attr_values[LEN][LEN]; char *attr_types[LEN][LEN]; } body; }; En el archivo “castfunctions.h”, incluyo el archivo […]

¿Cómo definir una matriz de estructuras en tiempo de comstackción compuesta de estructuras estáticas (privadas) de módulos separados?

Esta pregunta es algo así como una pregunta de truco C o una pregunta de truco clang / gcc. No estoy seguro de cuál. Lo expresé como lo hice porque la matriz final está en main.c, pero las estructuras que están en la matriz están definidas en C módulos. El objective final de lo que […]

Forma correcta de incluir código C de directorios que no sean el directorio actual

Tengo dos directorios, sorting y searching (hijos del mismo directorio), que tienen .c origen .c y archivos de encabezado .h : mbp:c $ ls sorting array_tools.c bubble_sort.c insertion_sort.c main selection_sort.c array_tools.h bubble_sort.h insertion_sort.h main.c selection_sort.h mbp:c $ ls searching array_tools.c array_tools.h binary_search.c binary_search.h linear_search.c linear_search.h main main.c Dentro de la searching , estoy creando un […]

Clang stdio, archivo h no encontrado

Instalé Clang con Visual Studio y luego construí el proyecto resaltado como se dice en la documentación. La construcción fue exitosa, sin embargo, cuando bash esto: clang -cc1 -analyze -analyzer-checker=core.DivideZero test.c Dice: test.c:1:10: fatal error: ‘stdio.h’ file not found #include ^~~~~~~~~ 1 error generated. Intenté muchas sugerencias pero nada funcionó. Sin embargo si hago algo […]