mcgrathr created this revision. Herald added subscribers: cfe-commits, kristof.beyls. Herald added a project: clang. mcgrathr updated this revision to Diff 246043. mcgrathr added a comment. mcgrathr edited the summary of this revision.
update log Make Clang on aarch64 targets predefine `__AARCH64_CMODEL_SMALL__` or `__AARCH64_CMODEL_TINY__`, etc. These are the names that GCC uses for its predefines. Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D75002 Files: clang/lib/Basic/Targets/AArch64.cpp clang/test/Preprocessor/init.c Index: clang/test/Preprocessor/init.c =================================================================== --- clang/test/Preprocessor/init.c +++ clang/test/Preprocessor/init.c @@ -285,6 +285,7 @@ // AARCH64-NOT:#define __AARCH64EB__ 1 // AARCH64:#define __AARCH64EL__ 1 // AARCH64-NOT:#define __AARCH_BIG_ENDIAN 1 +// AARCH64:#define __AARCH64_CMODEL_SMALL__ 1 // AARCH64:#define __ARM_64BIT_STATE 1 // AARCH64:#define __ARM_ARCH 8 // AARCH64:#define __ARM_ARCH_ISA_A64 1 Index: clang/lib/Basic/Targets/AArch64.cpp =================================================================== --- clang/lib/Basic/Targets/AArch64.cpp +++ clang/lib/Basic/Targets/AArch64.cpp @@ -194,6 +194,14 @@ Builder.defineMacro("__LP64__"); } + std::string CodeModel = getTargetOpts().CodeModel; + if (CodeModel == "default") + CodeModel = "small"; + for (auto& c : CodeModel) { + c = toupper(c); + } + Builder.defineMacro("__AARCH64_CMODEL_" + CodeModel + "__"); + // ACLE predefines. Many can only have one possible value on v8 AArch64. Builder.defineMacro("__ARM_ACLE", "200"); Builder.defineMacro("__ARM_ARCH", "8");
Index: clang/test/Preprocessor/init.c =================================================================== --- clang/test/Preprocessor/init.c +++ clang/test/Preprocessor/init.c @@ -285,6 +285,7 @@ // AARCH64-NOT:#define __AARCH64EB__ 1 // AARCH64:#define __AARCH64EL__ 1 // AARCH64-NOT:#define __AARCH_BIG_ENDIAN 1 +// AARCH64:#define __AARCH64_CMODEL_SMALL__ 1 // AARCH64:#define __ARM_64BIT_STATE 1 // AARCH64:#define __ARM_ARCH 8 // AARCH64:#define __ARM_ARCH_ISA_A64 1 Index: clang/lib/Basic/Targets/AArch64.cpp =================================================================== --- clang/lib/Basic/Targets/AArch64.cpp +++ clang/lib/Basic/Targets/AArch64.cpp @@ -194,6 +194,14 @@ Builder.defineMacro("__LP64__"); } + std::string CodeModel = getTargetOpts().CodeModel; + if (CodeModel == "default") + CodeModel = "small"; + for (auto& c : CodeModel) { + c = toupper(c); + } + Builder.defineMacro("__AARCH64_CMODEL_" + CodeModel + "__"); + // ACLE predefines. Many can only have one possible value on v8 AArch64. Builder.defineMacro("__ARM_ACLE", "200"); Builder.defineMacro("__ARM_ARCH", "8");
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits