Parece que la opción del compilador -malign-double
se ha eliminado de Clang. Código de ejemplo:¿Clang tiene un equivalente al indicador de malignidad doble de GCC?
#include <stddef.h>
#include <stdio.h>
typedef struct X { char a; long long b; } X;
int main(void)
{
printf("%zd\n", offsetof(X, b));
return 0;
}
cuando se compila con GCC en el modo de 32 bits (-m32
), esto se puede hacer a la salida 8 o 4 dependiendo de si -malign-double
está habilitado o no, respectivamente. Pero Clang no parece apoyar esta opción:
$ clang test.c -m32 -malign-double
clang: warning: argument unused during compilation: '-malign-double'
$ ./a.out
4
versión Clang:
Apple clang version 3.1 (tags/Apple/clang-318.0.58) (based on LLVM 3.1svn)
Target: x86_64-apple-darwin11.3.0
Thread model: posix
Me parece que no puede encontrar ninguna documentación oficial sobre la lista completa de los parámetros del compilador con el apoyo de Sonido metálico, que acaba parece diferir a la documentación de GCC en su mayor parte.
¿Hay alguna corriente equivalente a -malign-double
en Clang? ¿O tengo que usar un compilador diferente por ahora? Necesito compilar algún código que vincule con una biblioteca de terceros de solo binario que usa esa bandera.
¿Recibió alguna respuesta al respecto? – tito
Ok, parece que todavía no es posible, como alguien me dijo en IRC: " no hay opción para eso, si es posible (por ejemplo, no está limitado por el ABI), LLVM usará alineación natural | si se genera código, usted siempre se puede forzar la alineación usando atributos " –
tito