Viewing file: pragma_cpp_predefs_1.c (5.69 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
/* { dg-do compile } */ /* { dg-options "-O2 -march=armv8-a+crypto" } */
/* Test that pragma option pushing and popping works. Also that CPP predefines redefinitions on #pragma works. */
#pragma GCC push_options #pragma GCC target ("arch=armv8-a+nofp+nosimd") #ifdef __ARM_FEATURE_FMA #error "__ARM_FEATURE_FMA is defined but should not be!" #endif
#ifdef __ARM_FP #error "__ARM_FP is defined but should not be!" #endif
#pragma GCC push_options #pragma GCC target ("arch=armv8-a+fp+nosimd") #ifndef __ARM_FP #error "__ARM_FP is not defined but should be!" #endif
#ifdef __ARM_NEON #error "__ARM_NEON is defined but should not be!" #endif
#pragma GCC push_options #pragma GCC target ("arch=armv8-a+fp+simd")
#ifndef __ARM_NEON #error "__ARM_NEON is not defined but should be!" #endif
#ifdef __ARM_FEATURE_CRYPTO #error "__ARM_FEATURE_CRYPTO is defined but should not be!" #endif
#pragma GCC push_options #pragma GCC target ("arch=armv8-a+fp+simd+crypto")
#ifndef __ARM_FEATURE_CRYPTO #error "__ARM_FEATURE_CRYPTO is not defined but should be!" #endif
#pragma GCC pop_options
#ifndef __ARM_NEON #error "__ARM_NEON is not defined but should be!" #endif
#ifdef __ARM_FEATURE_CRYPTO #error "__ARM_FEATURE_CRYPTO is defined but should not be!" #endif
#pragma GCC pop_options
#ifndef __ARM_FP #error "__ARM_FP is not defined but should be!" #endif
#ifdef __ARM_NEON #error "__ARM_NEON is defined but should not be!" #endif
#pragma GCC pop_options
#ifdef __ARM_FP #error "__ARM_FP is defined but should not be!" #endif
#ifdef __ARM_NEON #error "__ARM_NEON is defined but should not be!" #endif
/* And again, but using cpu=. */
#pragma GCC push_options #pragma GCC target ("cpu=cortex-a53+nofp+nosimd") #ifdef __ARM_FEATURE_FMA #error "__ARM_FEATURE_FMA is defined but should not be!" #endif
#ifdef __ARM_FP #error "__ARM_FP is defined but should not be!" #endif
#pragma GCC push_options #pragma GCC target ("cpu=cortex-a53+fp+nosimd") #ifndef __ARM_FP #error "__ARM_FP is not defined but should be!" #endif
#ifdef __ARM_NEON #error "__ARM_NEON is defined but should not be!" #endif
#pragma GCC push_options #pragma GCC target ("cpu=cortex-a53+fp+simd+nocrypto")
#ifndef __ARM_NEON #error "__ARM_NEON is not defined but should be!" #endif
#ifdef __ARM_FEATURE_CRYPTO #error "__ARM_FEATURE_CRYPTO is defined but should not be!" #endif
#pragma GCC push_options #pragma GCC target ("cpu=cortex-a53+fp+simd+crypto")
#ifndef __ARM_FEATURE_CRYPTO #error "__ARM_FEATURE_CRYPTO is not defined but should be!" #endif
#pragma GCC pop_options
#ifndef __ARM_NEON #error "__ARM_NEON is not defined but should be!" #endif
#ifdef __ARM_FEATURE_CRYPTO #error "__ARM_FEATURE_CRYPTO is defined but should not be!" #endif
#pragma GCC pop_options
#ifndef __ARM_FP #error "__ARM_FP is not defined but should be!" #endif
#ifdef __ARM_NEON #error "__ARM_NEON is defined but should not be!" #endif
#pragma GCC pop_options
#ifdef __ARM_FP #error "__ARM_FP is defined but should not be!" #endif
#ifdef __ARM_NEON #error "__ARM_NEON is defined but should not be!" #endif
/* And again, but using just the ISA extensions. */
#pragma GCC push_options #pragma GCC target ("+nofp") #ifdef __ARM_FEATURE_FMA #error "__ARM_FEATURE_FMA is defined but should not be!" #endif
#ifdef __ARM_FP #error "__ARM_FP is defined but should not be!" #endif
#pragma GCC push_options #pragma GCC target ("+fp+nosimd") #ifndef __ARM_FP #error "__ARM_FP is not defined but should be!" #endif
#ifdef __ARM_NEON #error "__ARM_NEON is defined but should not be!" #endif
#pragma GCC push_options #pragma GCC target ("+fp+simd+nocrypto")
#ifndef __ARM_NEON #error "__ARM_NEON is not defined but should be!" #endif
#ifdef __ARM_FEATURE_CRYPTO #error "__ARM_FEATURE_CRYPTO is defined but should not be!" #endif
#pragma GCC push_options #pragma GCC target ("+fp+simd+crypto")
#ifndef __ARM_FEATURE_CRYPTO #error "__ARM_FEATURE_CRYPTO is not defined but should be!" #endif
#pragma GCC pop_options
#ifndef __ARM_NEON #error "__ARM_NEON is not defined but should be!" #endif
#ifdef __ARM_FEATURE_CRYPTO #error "__ARM_FEATURE_CRYPTO is defined but should not be!" #endif
#pragma GCC pop_options
#ifndef __ARM_FP #error "__ARM_FP is not defined but should be!" #endif
#ifdef __ARM_NEON #error "__ARM_NEON is defined but should not be!" #endif
#pragma GCC pop_options
#ifdef __ARM_FP #error "__ARM_FP is defined but should not be!" #endif
#ifdef __ARM_NEON #error "__ARM_NEON is defined but should not be!" #endif
/* Make sure that general-regs-only works too. */ #pragma GCC push_options #pragma GCC target ("general-regs-only") #ifdef __ARM_FEATURE_FMA #error "__ARM_FEATURE_FMA is defined but should not be!" #endif
#ifdef __ARM_FP #error "__ARM_FP is defined but should not be!" #endif
#ifdef __ARM_NEON #error "__ARM_NEON is defined but should not be!" #endif
#ifdef __ARM_FEATURE_CRYPTO #error "__ARM_FEATURE_CRYPTO is defined but should not be!" #endif
#pragma GCC pop_options
/* Also check that crc re-defines work. */ #pragma GCC target ("+nocrc") #ifdef __ARM_FEATURE_CRC32 #error "__ARM_FEATURE_CRC32 is defined but should not be!" #endif
#pragma GCC target ("+crc") #ifndef __ARM_FEATURE_CRC32 #error "__ARM_FEATURE_CRC32 is not defined but should be!" #endif
#pragma GCC target ("arch=armv8.2-a") #ifdef __ARM_FEATURE_RCPC #error "__ARM_FEATURE_RCPC is defined but should not be!" #endif
#pragma GCC target ("arch=armv8.2-a+rcpc") #ifndef __ARM_FEATURE_RCPC #error "__ARM_FEATURE_RCPC is not defined but should be!" #endif
#pragma GCC target ("+norcpc") #ifdef __ARM_FEATURE_RCPC #error "__ARM_FEATURE_RCPC is defined but should not be!" #endif
#pragma GCC target ("arch=armv8.3-a") #ifndef __ARM_FEATURE_RCPC #error "__ARM_FEATURE_RCPC is not defined but should be!" #endif
int foo (int a) { return a; }
|