Articles of clang

En clang, ¿cómo se usan los atributos de optimización por función?

Estoy tratando de comstackr una función específica sin optimización utilizando clang , para evitar que se memset() las llamadas relacionadas con la seguridad a memset() . De acuerdo con la documentación que se puede encontrar aquí , existe un atributo optnone que permite esto. Además, un ejemplo se puede encontrar aquí . Lamentablemente, (al menos […]

¿Por qué ARC retiene los argumentos del método?

Al comstackr con ARC, los argumentos del método a menudo parecen conservarse al comienzo del método y liberarse al final. Este par de retención / liberación parece superfluo, y contradice la idea de que ARC “produce el código que usted habría escrito de todos modos”. Nadie en esos días oscuros anteriores al ARC realizó una […]

Fusionado multiplicar agregar y modos de redondeo predeterminados

Con GCC 5.3 el siguiente código compield con -O3 -fma float mul_add(float a, float b, float c) { return a*b + c; } produce el siguiente ensamblaje vfmadd132ss %xmm1, %xmm2, %xmm0 ret Noté que GCC hacía esto con -O3 ya en GCC 4.8 . Clang 3.7 con -O3 -mfma produce vmulss %xmm1, %xmm0, %xmm0 vaddss […]

Valor del puntero Constexpr

Intento declarar un puntero constexpr inicializado a un valor entero constante, pero clang frustra todos mis bashs: Intento 1: constexpr int* x = reinterpret_cast(0xFF); test.cpp:1:20: note: reinterpret_cast is not allowed in a constant expression Intento 2: constexpr int* x = (int*)0xFF; test.cpp:1:20: note: cast which performs the conversions of a reinterpret_cast is not allowed in […]

Suprimir advertencia “Categoría está implementando un método que también será implementado por su clase principal”

Me preguntaba cómo suprimir la advertencia: La categoría está implementando un método que también será implementado por su clase primaria. Tengo esto para una categoría de código específica: + (UIFont *)systemFontOfSize:(CGFloat)fontSize { return [self aCustomFontOfSize:fontSize]; }

Poniendo a cero las referencias débiles en ARC

Si mi lectura de la reseña de “Reducir a cero las referencias débiles” de Mike Ash es correcta, las referencias débiles son como assign referencias sin ARC. Sin embargo, si el objeto al que se hace referencia es desasignado, en lugar de obtener un “puntero colgante” (es decir, un puntero que apunta a un objeto […]

¿Cómo le digo a CMake que use Clang en Windows?

Tengo un proyecto de C ++ que se crea con CMake. Normalmente construyo sobre OSX pero ahora estoy tratando de hacer que funcione una versión de Windows. Me gustaría usar Clang en Windows por razones de compatibilidad. Instalé el binario Clang 3.8 precomstackdo de LLVM: C:\Program Files\LLVM\bin\clang.exe C:\Program Files\LLVM\bin\clang++.exe También está instalado en mi PATH: […]

¿Dónde se define PATH_MAX en Linux?

¿Qué archivo de encabezado debo invocar con #include para poder usar PATH_MAX como int para dimensionar una cadena? Quiero poder declarar: char *current_path[PATH_MAX]; Pero cuando lo hago, mi comstackdor (Clang / LLVM en Linux) emite el siguiente error: recursive_find6.c:29:20: error: use of undeclared identifier ‘PATH_MAX’ char *current_path[PATH_MAX]; ^ Intenté hacer una búsqueda en Google, pero […]

¿Pueden los nuevos literales de Clang Objective-C redirigirse a clases personalizadas?

Aunque la sobrecarga de @ comienza a pisar territorio peligroso, me encanta la adición de los nuevos literales de Objective-C en Clang 3.1. Lamentablemente, los nuevos literales son de uso limitado para mí. Excepto en los casos en los que el código necesita interactuar con AppKit, he descartado el uso de las clases Foundation a […]

¿Cuál es el significado de clang’s -Wweak-vtables?

Básicamente no entiendo clang‘s -Wweak-vtables . Esto es lo que observé hasta ahora: Primer caso: (desencadena la advertencia) class A { public: virtual ~A(){} }; class B : public A { public: virtual ~B(){} }; int main(){} Caso dos: (No desencadena advertencia) class A { public: virtual ~A(){} }; int main(){} Caso tres: (No desencadena […]