Skip to content

[AArch64] Remove strict checks from init-aarch64.c #134338

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 1 commit into from

Conversation

madhur13490
Copy link
Contributor

The checks in init-aarch64.c expect macros to be back-to-back which seems very strict. This change aims to relax this and use just AARCH64 instead of AARCH64-NEXT. This way, we maintain the order of the macros but also don't require them to be back-to-back.

This aligns with how

  1. DARWIN and MSVC checks are done in the same file
  2. init-* test for other backends do the checks.

The checks in init-aarch64.c expect macros to be back-to-back which seems
very strict. This change aims to relax this and use just AARCH64 instead of
AARCH64-NEXT. This way, we maintain the order of the macros but also don't
require them to be back-to-back.

This aligns with how
1. DARWIN and MSVC checks are done in the same file
2. How init-* test for other backends do the checks.
@llvmbot llvmbot added the clang Clang issues not falling into any other category label Apr 4, 2025
@llvmbot
Copy link
Member

llvmbot commented Apr 4, 2025

@llvm/pr-subscribers-clang

Author: Madhur Amilkanthwar (madhur13490)

Changes

The checks in init-aarch64.c expect macros to be back-to-back which seems very strict. This change aims to relax this and use just AARCH64 instead of AARCH64-NEXT. This way, we maintain the order of the macros but also don't require them to be back-to-back.

This aligns with how

  1. DARWIN and MSVC checks are done in the same file
  2. init-* test for other backends do the checks.

Patch is 38.01 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/134338.diff

1 Files Affected:

  • (modified) clang/test/Preprocessor/init-aarch64.c (+388-388)
diff --git a/clang/test/Preprocessor/init-aarch64.c b/clang/test/Preprocessor/init-aarch64.c
index 3036b496db25d..307e083455314 100644
--- a/clang/test/Preprocessor/init-aarch64.c
+++ b/clang/test/Preprocessor/init-aarch64.c
@@ -6,398 +6,398 @@
 // RUN: %clang_cc1 -E -dM -triple=arm64 -xc++ /dev/null | FileCheck --check-prefixes=AARCH64,AARCH64_LE,AARCH64_CXX --match-full-lines %s
 
 // AARCH64: #define _LP64 1
-// AARCH64_BE-NEXT: #define __AARCH64EB__ 1
-// AARCH64_BE-NEXT: #define __AARCH64_CMODEL_SMALL__ 1
-// AARCH64_BE-NEXT: #define __AARCH_BIG_ENDIAN 1
-// AARCH64_LE-NEXT: #define __AARCH64EL__ 1
-// AARCH64_LE-NEXT: #define __AARCH64_CMODEL_SMALL__ 1
-// AARCH64-NEXT: #define __ARM_64BIT_STATE 1
-// AARCH64-NEXT: #define __ARM_ACLE 202420
-// AARCH64-NEXT: #define __ARM_ACLE_VERSION(year,quarter,patch) (100 * (year) + 10 * (quarter) + (patch))
-// AARCH64-NEXT: #define __ARM_ALIGN_MAX_STACK_PWR 4
-// AARCH64-NEXT: #define __ARM_ARCH 8
-// AARCH64-NEXT: #define __ARM_ARCH_ISA_A64 1
-// AARCH64-NEXT: #define __ARM_ARCH_PROFILE 'A'
-// AARCH64_BE-NEXT: #define __ARM_BIG_ENDIAN 1
-// AARCH64-NEXT: #define __ARM_FEATURE_CLZ 1
-// AARCH64-NEXT: #define __ARM_FEATURE_DIRECTED_ROUNDING 1
-// AARCH64-NEXT: #define __ARM_FEATURE_DIV 1
-// AARCH64-NEXT: #define __ARM_FEATURE_FMA 1
-// AARCH64-NEXT: #define __ARM_FEATURE_IDIV 1
-// AARCH64-NEXT: #define __ARM_FEATURE_LDREX 0xF
-// AARCH64-NEXT: #define __ARM_FEATURE_NUMERIC_MAXMIN 1
-// AARCH64-NEXT: #define __ARM_FEATURE_UNALIGNED 1
-// AARCH64-NEXT: #define __ARM_FP 0xE
-// AARCH64-NEXT: #define __ARM_FP16_ARGS 1
-// AARCH64-NEXT: #define __ARM_FP16_FORMAT_IEEE 1
-// AARCH64-NEXT: #define __ARM_NEON_SVE_BRIDGE 1
-// AARCH64-NEXT: #define __ARM_PCS_AAPCS64 1
-// AARCH64-NEXT: #define __ARM_SIZEOF_MINIMAL_ENUM 4
-// AARCH64-NEXT: #define __ARM_SIZEOF_WCHAR_T 4
-// AARCH64-NEXT: #define __ARM_STATE_ZA 1
-// AARCH64-NEXT: #define __ARM_STATE_ZT0 1
-// AARCH64-NEXT: #define __ATOMIC_ACQUIRE 2
-// AARCH64-NEXT: #define __ATOMIC_ACQ_REL 4
-// AARCH64-NEXT: #define __ATOMIC_CONSUME 1
-// AARCH64-NEXT: #define __ATOMIC_RELAXED 0
-// AARCH64-NEXT: #define __ATOMIC_RELEASE 3
-// AARCH64-NEXT: #define __ATOMIC_SEQ_CST 5
+// AARCH64_BE: #define __AARCH64EB__ 1
+// AARCH64_BE: #define __AARCH64_CMODEL_SMALL__ 1
+// AARCH64_BE: #define __AARCH_BIG_ENDIAN 1
+// AARCH64_LE: #define __AARCH64EL__ 1
+// AARCH64_LE: #define __AARCH64_CMODEL_SMALL__ 1
+// AARCH64: #define __ARM_64BIT_STATE 1
+// AARCH64: #define __ARM_ACLE 202420
+// AARCH64: #define __ARM_ACLE_VERSION(year,quarter,patch) (100 * (year) + 10 * (quarter) + (patch))
+// AARCH64: #define __ARM_ALIGN_MAX_STACK_PWR 4
+// AARCH64: #define __ARM_ARCH 8
+// AARCH64: #define __ARM_ARCH_ISA_A64 1
+// AARCH64: #define __ARM_ARCH_PROFILE 'A'
+// AARCH64_BE: #define __ARM_BIG_ENDIAN 1
+// AARCH64: #define __ARM_FEATURE_CLZ 1
+// AARCH64: #define __ARM_FEATURE_DIRECTED_ROUNDING 1
+// AARCH64: #define __ARM_FEATURE_DIV 1
+// AARCH64: #define __ARM_FEATURE_FMA 1
+// AARCH64: #define __ARM_FEATURE_IDIV 1
+// AARCH64: #define __ARM_FEATURE_LDREX 0xF
+// AARCH64: #define __ARM_FEATURE_NUMERIC_MAXMIN 1
+// AARCH64: #define __ARM_FEATURE_UNALIGNED 1
+// AARCH64: #define __ARM_FP 0xE
+// AARCH64: #define __ARM_FP16_ARGS 1
+// AARCH64: #define __ARM_FP16_FORMAT_IEEE 1
+// AARCH64: #define __ARM_NEON_SVE_BRIDGE 1
+// AARCH64: #define __ARM_PCS_AAPCS64 1
+// AARCH64: #define __ARM_SIZEOF_MINIMAL_ENUM 4
+// AARCH64: #define __ARM_SIZEOF_WCHAR_T 4
+// AARCH64: #define __ARM_STATE_ZA 1
+// AARCH64: #define __ARM_STATE_ZT0 1
+// AARCH64: #define __ATOMIC_ACQUIRE 2
+// AARCH64: #define __ATOMIC_ACQ_REL 4
+// AARCH64: #define __ATOMIC_CONSUME 1
+// AARCH64: #define __ATOMIC_RELAXED 0
+// AARCH64: #define __ATOMIC_RELEASE 3
+// AARCH64: #define __ATOMIC_SEQ_CST 5
 // AARCH64:      #define __BIGGEST_ALIGNMENT__ 16
-// AARCH64_BE-NEXT: #define __BIG_ENDIAN__ 1
-// AARCH64-NEXT: #define __BITINT_MAXWIDTH__ 128
-// AARCH64-NEXT: #define __BOOL_WIDTH__ 1
-// AARCH64_BE-NEXT: #define __BYTE_ORDER__ __ORDER_BIG_ENDIAN__
-// AARCH64_LE-NEXT: #define __BYTE_ORDER__ __ORDER_LITTLE_ENDIAN__
-// AARCH64-NEXT: #define __CHAR16_TYPE__ unsigned short
-// AARCH64-NEXT: #define __CHAR32_TYPE__ unsigned int
-// AARCH64-NEXT: #define __CHAR_BIT__ 8
-// AARCH64-NEXT: #define __CLANG_ATOMIC_BOOL_LOCK_FREE 2
-// AARCH64-NEXT: #define __CLANG_ATOMIC_CHAR16_T_LOCK_FREE 2
-// AARCH64-NEXT: #define __CLANG_ATOMIC_CHAR32_T_LOCK_FREE 2
-// AARCH64-NEXT: #define __CLANG_ATOMIC_CHAR_LOCK_FREE 2
-// AARCH64-NEXT: #define __CLANG_ATOMIC_INT_LOCK_FREE 2
-// AARCH64-NEXT: #define __CLANG_ATOMIC_LLONG_LOCK_FREE 2
-// AARCH64-NEXT: #define __CLANG_ATOMIC_LONG_LOCK_FREE 2
-// AARCH64-NEXT: #define __CLANG_ATOMIC_POINTER_LOCK_FREE 2
-// AARCH64-NEXT: #define __CLANG_ATOMIC_SHORT_LOCK_FREE 2
-// AARCH64-NEXT: #define __CLANG_ATOMIC_WCHAR_T_LOCK_FREE 2
-// AARCH64-NEXT: #define __CONSTANT_CFSTRINGS__ 1
-// AARCH64-NEXT: #define __DBL_DECIMAL_DIG__ 17
-// AARCH64-NEXT: #define __DBL_DENORM_MIN__ 4.9406564584124654e-324
-// AARCH64-NEXT: #define __DBL_DIG__ 15
-// AARCH64-NEXT: #define __DBL_EPSILON__ 2.2204460492503131e-16
-// AARCH64-NEXT: #define __DBL_HAS_DENORM__ 1
-// AARCH64-NEXT: #define __DBL_HAS_INFINITY__ 1
-// AARCH64-NEXT: #define __DBL_HAS_QUIET_NAN__ 1
-// AARCH64-NEXT: #define __DBL_MANT_DIG__ 53
-// AARCH64-NEXT: #define __DBL_MAX_10_EXP__ 308
-// AARCH64-NEXT: #define __DBL_MAX_EXP__ 1024
-// AARCH64-NEXT: #define __DBL_MAX__ 1.7976931348623157e+308
-// AARCH64-NEXT: #define __DBL_MIN_10_EXP__ (-307)
-// AARCH64-NEXT: #define __DBL_MIN_EXP__ (-1021)
-// AARCH64-NEXT: #define __DBL_MIN__ 2.2250738585072014e-308
-// AARCH64-NEXT: #define __DBL_NORM_MAX__ 1.7976931348623157e+308
-// AARCH64-NEXT: #define __DECIMAL_DIG__ __LDBL_DECIMAL_DIG__
-// AARCH64-NEXT: #define __ELF__ 1
-// AARCH64-NEXT: #define __FINITE_MATH_ONLY__ 0
-// AARCH64-NEXT: #define __FLT16_DECIMAL_DIG__ 5
-// AARCH64-NEXT: #define __FLT16_DENORM_MIN__ 5.9604644775390625e-8F16
-// AARCH64-NEXT: #define __FLT16_DIG__ 3
-// AARCH64-NEXT: #define __FLT16_EPSILON__ 9.765625e-4F16
-// AARCH64-NEXT: #define __FLT16_HAS_DENORM__ 1
-// AARCH64-NEXT: #define __FLT16_HAS_INFINITY__ 1
-// AARCH64-NEXT: #define __FLT16_HAS_QUIET_NAN__ 1
-// AARCH64-NEXT: #define __FLT16_MANT_DIG__ 11
-// AARCH64-NEXT: #define __FLT16_MAX_10_EXP__ 4
-// AARCH64-NEXT: #define __FLT16_MAX_EXP__ 16
-// AARCH64-NEXT: #define __FLT16_MAX__ 6.5504e+4F16
-// AARCH64-NEXT: #define __FLT16_MIN_10_EXP__ (-4)
-// AARCH64-NEXT: #define __FLT16_MIN_EXP__ (-13)
-// AARCH64-NEXT: #define __FLT16_MIN__ 6.103515625e-5F16
-// AARCH64-NEXT: #define __FLT16_NORM_MAX__ 6.5504e+4F16
-// AARCH64-NEXT: #define __FLT_DECIMAL_DIG__ 9
-// AARCH64-NEXT: #define __FLT_DENORM_MIN__ 1.40129846e-45F
-// AARCH64-NEXT: #define __FLT_DIG__ 6
-// AARCH64-NEXT: #define __FLT_EPSILON__ 1.19209290e-7F
-// AARCH64-NEXT: #define __FLT_HAS_DENORM__ 1
-// AARCH64-NEXT: #define __FLT_HAS_INFINITY__ 1
-// AARCH64-NEXT: #define __FLT_HAS_QUIET_NAN__ 1
-// AARCH64-NEXT: #define __FLT_MANT_DIG__ 24
-// AARCH64-NEXT: #define __FLT_MAX_10_EXP__ 38
-// AARCH64-NEXT: #define __FLT_MAX_EXP__ 128
-// AARCH64-NEXT: #define __FLT_MAX__ 3.40282347e+38F
-// AARCH64-NEXT: #define __FLT_MIN_10_EXP__ (-37)
-// AARCH64-NEXT: #define __FLT_MIN_EXP__ (-125)
-// AARCH64-NEXT: #define __FLT_MIN__ 1.17549435e-38F
-// AARCH64-NEXT: #define __FLT_NORM_MAX__ 3.40282347e+38F
-// AARCH64-NEXT: #define __FLT_RADIX__ 2
-// AARCH64-NEXT: #define __FPCLASS_NEGINF 0x0004
-// AARCH64-NEXT: #define __FPCLASS_NEGNORMAL 0x0008
-// AARCH64-NEXT: #define __FPCLASS_NEGSUBNORMAL 0x0010
-// AARCH64-NEXT: #define __FPCLASS_NEGZERO 0x0020
-// AARCH64-NEXT: #define __FPCLASS_POSINF 0x0200
-// AARCH64-NEXT: #define __FPCLASS_POSNORMAL 0x0100
-// AARCH64-NEXT: #define __FPCLASS_POSSUBNORMAL 0x0080
-// AARCH64-NEXT: #define __FPCLASS_POSZERO 0x0040
-// AARCH64-NEXT: #define __FPCLASS_QNAN 0x0002
-// AARCH64-NEXT: #define __FPCLASS_SNAN 0x0001
-// AARCH64-NEXT: #define __FP_FAST_FMA 1
-// AARCH64-NEXT: #define __FP_FAST_FMAF 1
-// AARCH64-NEXT: #define __FUNCTION_MULTI_VERSIONING_SUPPORT_LEVEL 202430
-// AARCH64-NEXT: #define __GCC_ASM_FLAG_OUTPUTS__ 1
-// AARCH64-NEXT: #define __GCC_CONSTRUCTIVE_SIZE 64
-// AARCH64-NEXT: #define __GCC_DESTRUCTIVE_SIZE 256
-// AARCH64-NEXT: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1
-// AARCH64-NEXT: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_16 1
-// AARCH64-NEXT: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1
-// AARCH64-NEXT: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1
-// AARCH64-NEXT: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1
-// AARCH64_CXX-NEXT: #define __GLIBCXX_BITSIZE_INT_N_0 128
-// AARCH64_CXX-NEXT: #define __GLIBCXX_TYPE_INT_N_0 __int128
-// AARCH64-NEXT: #define __HAVE_FUNCTION_MULTI_VERSIONING 1
-// AARCH64-NEXT: #define __INT16_C(c) c
-// AARCH64-NEXT: #define __INT16_C_SUFFIX__
-// AARCH64-NEXT: #define __INT16_FMTd__ "hd"
-// AARCH64-NEXT: #define __INT16_FMTi__ "hi"
-// AARCH64-NEXT: #define __INT16_MAX__ 32767
-// AARCH64-NEXT: #define __INT16_TYPE__ short
-// AARCH64-NEXT: #define __INT32_C(c) c
-// AARCH64-NEXT: #define __INT32_C_SUFFIX__
-// AARCH64-NEXT: #define __INT32_FMTd__ "d"
-// AARCH64-NEXT: #define __INT32_FMTi__ "i"
-// AARCH64-NEXT: #define __INT32_MAX__ 2147483647
-// AARCH64-NEXT: #define __INT32_TYPE__ int
-// AARCH64-NEXT: #define __INT64_C(c) c##L
-// AARCH64-NEXT: #define __INT64_C_SUFFIX__ L
-// AARCH64-NEXT: #define __INT64_FMTd__ "ld"
-// AARCH64-NEXT: #define __INT64_FMTi__ "li"
-// AARCH64-NEXT: #define __INT64_MAX__ 9223372036854775807L
-// AARCH64-NEXT: #define __INT64_TYPE__ long int
-// AARCH64-NEXT: #define __INT8_C(c) c
-// AARCH64-NEXT: #define __INT8_C_SUFFIX__
-// AARCH64-NEXT: #define __INT8_FMTd__ "hhd"
-// AARCH64-NEXT: #define __INT8_FMTi__ "hhi"
-// AARCH64-NEXT: #define __INT8_MAX__ 127
-// AARCH64-NEXT: #define __INT8_TYPE__ signed char
-// AARCH64-NEXT: #define __INTMAX_C(c) c##L
-// AARCH64-NEXT: #define __INTMAX_C_SUFFIX__ L
-// AARCH64-NEXT: #define __INTMAX_FMTd__ "ld"
-// AARCH64-NEXT: #define __INTMAX_FMTi__ "li"
-// AARCH64-NEXT: #define __INTMAX_MAX__ 9223372036854775807L
-// AARCH64-NEXT: #define __INTMAX_TYPE__ long int
-// AARCH64-NEXT: #define __INTMAX_WIDTH__ 64
-// AARCH64-NEXT: #define __INTPTR_FMTd__ "ld"
-// AARCH64-NEXT: #define __INTPTR_FMTi__ "li"
-// AARCH64-NEXT: #define __INTPTR_MAX__ 9223372036854775807L
-// AARCH64-NEXT: #define __INTPTR_TYPE__ long int
-// AARCH64-NEXT: #define __INTPTR_WIDTH__ 64
-// AARCH64-NEXT: #define __INT_FAST16_FMTd__ "hd"
-// AARCH64-NEXT: #define __INT_FAST16_FMTi__ "hi"
-// AARCH64-NEXT: #define __INT_FAST16_MAX__ 32767
-// AARCH64-NEXT: #define __INT_FAST16_TYPE__ short
-// AARCH64-NEXT: #define __INT_FAST16_WIDTH__ 16
-// AARCH64-NEXT: #define __INT_FAST32_FMTd__ "d"
-// AARCH64-NEXT: #define __INT_FAST32_FMTi__ "i"
-// AARCH64-NEXT: #define __INT_FAST32_MAX__ 2147483647
-// AARCH64-NEXT: #define __INT_FAST32_TYPE__ int
-// AARCH64-NEXT: #define __INT_FAST32_WIDTH__ 32
-// AARCH64-NEXT: #define __INT_FAST64_FMTd__ "ld"
-// AARCH64-NEXT: #define __INT_FAST64_FMTi__ "li"
-// AARCH64-NEXT: #define __INT_FAST64_MAX__ 9223372036854775807L
-// AARCH64-NEXT: #define __INT_FAST64_TYPE__ long int
-// AARCH64-NEXT: #define __INT_FAST64_WIDTH__ 64
-// AARCH64-NEXT: #define __INT_FAST8_FMTd__ "hhd"
-// AARCH64-NEXT: #define __INT_FAST8_FMTi__ "hhi"
-// AARCH64-NEXT: #define __INT_FAST8_MAX__ 127
-// AARCH64-NEXT: #define __INT_FAST8_TYPE__ signed char
-// AARCH64-NEXT: #define __INT_FAST8_WIDTH__ 8
-// AARCH64-NEXT: #define __INT_LEAST16_FMTd__ "hd"
-// AARCH64-NEXT: #define __INT_LEAST16_FMTi__ "hi"
-// AARCH64-NEXT: #define __INT_LEAST16_MAX__ 32767
-// AARCH64-NEXT: #define __INT_LEAST16_TYPE__ short
-// AARCH64-NEXT: #define __INT_LEAST16_WIDTH__ 16
-// AARCH64-NEXT: #define __INT_LEAST32_FMTd__ "d"
-// AARCH64-NEXT: #define __INT_LEAST32_FMTi__ "i"
-// AARCH64-NEXT: #define __INT_LEAST32_MAX__ 2147483647
-// AARCH64-NEXT: #define __INT_LEAST32_TYPE__ int
-// AARCH64-NEXT: #define __INT_LEAST32_WIDTH__ 32
-// AARCH64-NEXT: #define __INT_LEAST64_FMTd__ "ld"
-// AARCH64-NEXT: #define __INT_LEAST64_FMTi__ "li"
-// AARCH64-NEXT: #define __INT_LEAST64_MAX__ 9223372036854775807L
-// AARCH64-NEXT: #define __INT_LEAST64_TYPE__ long int
-// AARCH64-NEXT: #define __INT_LEAST64_WIDTH__ 64
-// AARCH64-NEXT: #define __INT_LEAST8_FMTd__ "hhd"
-// AARCH64-NEXT: #define __INT_LEAST8_FMTi__ "hhi"
-// AARCH64-NEXT: #define __INT_LEAST8_MAX__ 127
-// AARCH64-NEXT: #define __INT_LEAST8_TYPE__ signed char
-// AARCH64-NEXT: #define __INT_LEAST8_WIDTH__ 8
-// AARCH64-NEXT: #define __INT_MAX__ 2147483647
-// AARCH64-NEXT: #define __INT_WIDTH__ 32
-// AARCH64-NEXT: #define __LDBL_DECIMAL_DIG__ 36
-// AARCH64-NEXT: #define __LDBL_DENORM_MIN__ 6.47517511943802511092443895822764655e-4966L
-// AARCH64-NEXT: #define __LDBL_DIG__ 33
-// AARCH64-NEXT: #define __LDBL_EPSILON__ 1.92592994438723585305597794258492732e-34L
-// AARCH64-NEXT: #define __LDBL_HAS_DENORM__ 1
-// AARCH64-NEXT: #define __LDBL_HAS_INFINITY__ 1
-// AARCH64-NEXT: #define __LDBL_HAS_QUIET_NAN__ 1
-// AARCH64-NEXT: #define __LDBL_MANT_DIG__ 113
-// AARCH64-NEXT: #define __LDBL_MAX_10_EXP__ 4932
-// AARCH64-NEXT: #define __LDBL_MAX_EXP__ 16384
-// AARCH64-NEXT: #define __LDBL_MAX__ 1.18973149535723176508575932662800702e+4932L
-// AARCH64-NEXT: #define __LDBL_MIN_10_EXP__ (-4931)
-// AARCH64-NEXT: #define __LDBL_MIN_EXP__ (-16381)
-// AARCH64-NEXT: #define __LDBL_MIN__ 3.36210314311209350626267781732175260e-4932L
-// AARCH64-NEXT: #define __LDBL_NORM_MAX__ 1.18973149535723176508575932662800702e+4932L
-// AARCH64_LE-NEXT: #define __LITTLE_ENDIAN__ 1
-// AARCH64-NEXT: #define __LLONG_WIDTH__ 64
-// AARCH64-NEXT: #define __LONG_LONG_MAX__ 9223372036854775807LL
-// AARCH64-NEXT: #define __LONG_MAX__ 9223372036854775807L
-// AARCH64-NEXT: #define __LONG_WIDTH__ 64
-// AARCH64-NEXT: #define __LP64__ 1
-// AARCH64-NEXT: #define __MEMORY_SCOPE_DEVICE 1
-// AARCH64-NEXT: #define __MEMORY_SCOPE_SINGLE 4
-// AARCH64-NEXT: #define __MEMORY_SCOPE_SYSTEM 0
-// AARCH64-NEXT: #define __MEMORY_SCOPE_WRKGRP 2
-// AARCH64-NEXT: #define __MEMORY_SCOPE_WVFRNT 3
-// AARCH64-NEXT: #define __NO_INLINE__ 1
-// AARCH64-NEXT: #define __NO_MATH_ERRNO__ 1
-// AARCH64-NEXT: #define __OBJC_BOOL_IS_BOOL 0
-// AARCH64-NEXT: #define __OPENCL_MEMORY_SCOPE_ALL_SVM_DEVICES 3
-// AARCH64-NEXT: #define __OPENCL_MEMORY_SCOPE_DEVICE 2
-// AARCH64-NEXT: #define __OPENCL_MEMORY_SCOPE_SUB_GROUP 4
-// AARCH64-NEXT: #define __OPENCL_MEMORY_SCOPE_WORK_GROUP 1
-// AARCH64-NEXT: #define __OPENCL_MEMORY_SCOPE_WORK_ITEM 0
-// AARCH64-NEXT: #define __ORDER_BIG_ENDIAN__ 4321
-// AARCH64-NEXT: #define __ORDER_LITTLE_ENDIAN__ 1234
-// AARCH64-NEXT: #define __ORDER_PDP_ENDIAN__ 3412
-// AARCH64-NEXT: #define __POINTER_WIDTH__ 64
-// AARCH64-NEXT: #define __PRAGMA_REDEFINE_EXTNAME 1
-// AARCH64-NEXT: #define __PTRDIFF_FMTd__ "ld"
-// AARCH64-NEXT: #define __PTRDIFF_FMTi__ "li"
-// AARCH64-NEXT: #define __PTRDIFF_MAX__ 9223372036854775807L
-// AARCH64-NEXT: #define __PTRDIFF_TYPE__ long int
-// AARCH64-NEXT: #define __PTRDIFF_WIDTH__ 64
-// AARCH64-NEXT: #define __SCHAR_MAX__ 127
-// AARCH64-NEXT: #define __SHRT_MAX__ 32767
-// AARCH64-NEXT: #define __SHRT_WIDTH__ 16
-// AARCH64-NEXT: #define __SIG_ATOMIC_MAX__ 2147483647
-// AARCH64-NEXT: #define __SIG_ATOMIC_WIDTH__ 32
-// AARCH64-NEXT: #define __SIZEOF_DOUBLE__ 8
-// AARCH64-NEXT: #define __SIZEOF_FLOAT__ 4
-// AARCH64-NEXT: #define __SIZEOF_INT128__ 16
-// AARCH64-NEXT: #define __SIZEOF_INT__ 4
-// AARCH64-NEXT: #define __SIZEOF_LONG_DOUBLE__ 16
-// AARCH64-NEXT: #define __SIZEOF_LONG_LONG__ 8
-// AARCH64-NEXT: #define __SIZEOF_LONG__ 8
-// AARCH64-NEXT: #define __SIZEOF_POINTER__ 8
-// AARCH64-NEXT: #define __SIZEOF_PTRDIFF_T__ 8
-// AARCH64-NEXT: #define __SIZEOF_SHORT__ 2
-// AARCH64-NEXT: #define __SIZEOF_SIZE_T__ 8
-// AARCH64-NEXT: #define __SIZEOF_WCHAR_T__ 4
-// AARCH64-NEXT: #define __SIZEOF_WINT_T__ 4
-// AARCH64-NEXT: #define __SIZE_FMTX__ "lX"
-// AARCH64-NEXT: #define __SIZE_FMTo__ "lo"
-// AARCH64-NEXT: #define __SIZE_FMTu__ "lu"
-// AARCH64-NEXT: #define __SIZE_FMTx__ "lx"
-// AARCH64-NEXT: #define __SIZE_MAX__ 18446744073709551615UL
-// AARCH64-NEXT: #define __SIZE_TYPE__ long unsigned int
-// AARCH64-NEXT: #define __SIZE_WIDTH__ 64
+// AARCH64_BE: #define __BIG_ENDIAN__ 1
+// AARCH64: #define __BITINT_MAXWIDTH__ 128
+// AARCH64: #define __BOOL_WIDTH__ 1
+// AARCH64_BE: #define __BYTE_ORDER__ __ORDER_BIG_ENDIAN__
+// AARCH64_LE: #define __BYTE_ORDER__ __ORDER_LITTLE_ENDIAN__
+// AARCH64: #define __CHAR16_TYPE__ unsigned short
+// AARCH64: #define __CHAR32_TYPE__ unsigned int
+// AARCH64: #define __CHAR_BIT__ 8
+// AARCH64: #define __CLANG_ATOMIC_BOOL_LOCK_FREE 2
+// AARCH64: #define __CLANG_ATOMIC_CHAR16_T_LOCK_FREE 2
+// AARCH64: #define __CLANG_ATOMIC_CHAR32_T_LOCK_FREE 2
+// AARCH64: #define __CLANG_ATOMIC_CHAR_LOCK_FREE 2
+// AARCH64: #define __CLANG_ATOMIC_INT_LOCK_FREE 2
+// AARCH64: #define __CLANG_ATOMIC_LLONG_LOCK_FREE 2
+// AARCH64: #define __CLANG_ATOMIC_LONG_LOCK_FREE 2
+// AARCH64: #define __CLANG_ATOMIC_POINTER_LOCK_FREE 2
+// AARCH64: #define __CLANG_ATOMIC_SHORT_LOCK_FREE 2
+// AARCH64: #define __CLANG_ATOMIC_WCHAR_T_LOCK_FREE 2
+// AARCH64: #define __CONSTANT_CFSTRINGS__ 1
+// AARCH64: #define __DBL_DECIMAL_DIG__ 17
+// AARCH64: #define __DBL_DENORM_MIN__ 4.9406564584124654e-324
+// AARCH64: #define __DBL_DIG__ 15
+// AARCH64: #define __DBL_EPSILON__ 2.2204460492503131e-16
+// AARCH64: #define __DBL_HAS_DENORM__ 1
+// AARCH64: #define __DBL_HAS_INFINITY__ 1
+// AARCH64: #define __DBL_HAS_QUIET_NAN__ 1
+// AARCH64: #define __DBL_MANT_DIG__ 53
+// AARCH64: #define __DBL_MAX_10_EXP__ 308
+// AARCH64: #define __DBL_MAX_EXP__ 1024
+// AARCH64: #define __DBL_MAX__ 1.7976931348623157e+308
+// AARCH64: #define __DBL_MIN_10_EXP__ (-307)
+// AARCH64: #define __DBL_MIN_EXP__ (-1021)
+// AARCH64: #define __DBL_MIN__ 2.2250738585072014e-308
+// AARCH64: #define __DBL_NORM_MAX__ 1.7976931348623157e+308
+// AARCH64: #define __DECIMAL_DIG__ __LDBL_DECIMAL_DIG__
+// AARCH64: #define __ELF__ 1
+// AARCH64: #define __FINITE_MATH_ONLY__ 0
+// AARCH64: #define __FLT16_DECIMAL_DIG__ 5
+// AARCH64: #define __FLT16_DENORM_MIN__ 5.9604644775390625e-8F16
+// AARCH64: #define __FLT16_DIG__ 3
+// AARCH64: #define __FLT16_EPSILON__ 9.765625e-4F16
+// AARCH64: #define __FLT16_HAS_DENORM__ 1
+// AARCH64: #define __FLT16_HAS_INFINITY__ 1
+// AARCH64: #define __FLT16_HAS_QUIET_NAN__ 1
+// AARCH64: #define __FLT16_MANT_DIG__ 11
+// AARCH64: #define __FLT16_MAX_10_EXP__ 4
+// AARCH64: #define __FLT16_MAX_EXP__ 16
+// AARCH64: #define __FLT16_MAX__ 6.5504e+4F16
+// AARCH64: #define __FLT16_MIN_10_EXP__ (-4)
+// AARCH64: #define __FLT16_MIN_EXP__ (-13)
+// AARCH64: #define __FLT16_MIN__ 6.103515625e-5F16
+// AARCH64: #define __FLT16_NORM_MAX__ 6.5504e+4F16
+// AARCH64: #define __FLT_DECIMAL_DIG__ 9
+// AARCH64: #define __FLT_DENORM_MIN__ 1.40129846e-45F
+// AARCH64: #define __FLT_DIG__ 6
+// AARCH64: #define __FLT_EPSILON__ 1.19209290e-7F
+// AARCH64: #define __FLT_HAS_DENORM__ 1
+// AARCH64: #define __FLT_HAS_INFINITY__ 1
+// AARCH64: #define __FLT_HAS_QUIET_NAN__ 1
+// AARCH64: #define __FLT_MANT_DIG__ 24
+// AARCH64: #define __FLT_MAX_10_EXP__ 38
+// AARCH64: #define __FLT_MAX_EXP__ 128
+// AARCH64: #define __FLT_MAX__ 3.40282347e+38F
+// AARCH64: #define __FLT_MIN_10_EXP__ (-37)
+// AARCH64: #define __FLT_MIN_EXP__ (-125)
+// AARCH64: #define __FLT_MIN__ 1.17549435e-38F
+// AARCH64: #define __FLT_NORM_MAX__ 3.40282347e+38F
+// AARCH64: #define __FLT_RADIX__ 2
+// AARCH64: #define __FPCLASS_NEGINF 0x0004
+// AARCH64: #define __FPCLASS_NEGNORMAL 0x0008
+// AARCH64: #define __FPCLASS_NEGSUBNORMAL 0x0010
+// AARCH64: #define __FPCLASS_NEGZERO 0x0020
+// AARCH64: #define __FPCLASS_POSINF 0x0200
+// AARCH64: #define __FPCLASS_POSNORMAL 0x0100
+// AARCH64: #define __FPCLASS_POSSUBNORMAL 0x0080
+// AARCH64: #define __FPCLASS_POSZERO 0x0040
+// AARCH64: #define __FPCLASS_QNAN 0x0002
+// AARCH64: #define __FPCLASS_SNAN 0x0001
+// AARCH64: #define __FP_FAST_FMA 1
+// AARCH64: #define __FP_FAST_FMAF 1
+// AARCH64: #define __FUNCTION_MULTI_VERSIONING_SUPPORT_LEVEL 202430
+// AARCH64: #define __GCC_ASM_FLAG_OUTPUTS__ 1
+// AARCH64: #define __GCC_CONSTRUCTIVE_SIZE 64
+// AARCH64: #define __GCC_DESTRUCTIVE_SIZE 256
+// AARCH64: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1
+// AARCH64: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_16 1
+// AARCH64: #...
[truncated]

Copy link
Contributor

@arsenm arsenm left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The other tests should be strengthened to always use -NEXT. The exact set of macros should be tested, don't want others hiding in the gaps

@madhur13490
Copy link
Contributor Author

The other tests should be strengthened to always use -NEXT. The exact set of macros should be tested; don't want others hiding in the gaps

Thanks, @arsenm. However, the strict checks are creating problems in our downstream compiler and rebasing. Our downstream compiler emits some macro(s) to identify itself. Thus, we are also required to change init-arrch64.c test to check our downstream macro and keep CI happy. As we do rebases daily, these changes cause merge conflicts frequently.
If I segregate our downstream checks to a new file, init-aarch64.c will fail because checks require all macros to be back-to-back.

(Unfortunately, we cannot upstream the changes because they are very downstream-specific and inappropriate for the upstream. I am proposing this change to make our life easy.)

The checks in init-aarch64.c expect macros to be back-to-back, which seems very strict. This change aims to relax this and use just AARCH64 instead of AARCH64-NEXT. This way, we maintain the order of the macros but also don't require them to be back-to-back.

Once this change is committed, I will separate out the downstream check to a new file.
Thus, we will not have merge conflicts, and init-aarch64.c will continue to pass.

Does this make sense?

@madhur13490 madhur13490 requested a review from SpencerAbson April 4, 2025 03:35
@SpencerAbson
Copy link
Contributor

Agree with @arsenm.

If you'd rather not XFAIL (or equivalent) this file in your downstream CI, perhaps you could have it autogenerated. A colleague of mine once wrote a script to do something similar #97829 (comment), maybe you could repeat this for -E -dM.

@MaskRay
Copy link
Member

MaskRay commented Apr 4, 2025

The -NEXT unexpected macros. Please address this by modifying your downstream target. This is a downstream maintenance task, and it's important to avoid reducing the quality of upstream testing.

Copy link
Member

@MaskRay MaskRay left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

.

@madhur13490
Copy link
Contributor Author

Thanks all. Abandoning this change, will find an appropriate solution for downstream.

@madhur13490 madhur13490 closed this Apr 4, 2025
@davemgreen
Copy link
Collaborator

The way we tried to mitigate this in the past was to use -target=aarch64-arm-none-eabi for our downstream compiler, and have downstream differences gated on the arm vendor. It can help keep the upstream tests the same if they use -target=aarch64-unknown-linux-gnu, and have downstream tests checking only the differences.

That was an embedded compiler, so the triples might have been easier to change.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
clang Clang issues not falling into any other category
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants