manojgupta created this revision. manojgupta added reviewers: abidh, tomhughes. Herald added subscribers: kristof.beyls, ki.stfu, dschuff. Herald added a project: All. manojgupta requested review of this revision. Herald added a project: clang. Herald added a subscriber: cfe-commits.
This matches other C++ drivers e.g. Linux that define _GNU_SOURCE. This lets clang compiler more code by default without explicitly passing _GNU_SOURCE on command line. Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D136712 Files: clang/lib/Basic/Targets/ARM.cpp clang/test/Driver/arm-baremetal-defines.cpp Index: clang/test/Driver/arm-baremetal-defines.cpp =================================================================== --- /dev/null +++ clang/test/Driver/arm-baremetal-defines.cpp @@ -0,0 +1,13 @@ +// RUN: %clangxx --target=arm-none-eabi -march=armv7-m %s -emit-llvm -S -c -o - 2>&1 | FileCheck %s + +// ECHO: {{.*}} "-cc1" {{.*}}mipsel-nacl-defines.c + +// CHECK: __ELF__defined +#ifdef __ELF__ +void __ELF__defined() {} +#endif + +// CHECK: _GNU_SOURCEdefined +#ifdef _GNU_SOURCE +void _GNU_SOURCEdefined() {} +#endif Index: clang/lib/Basic/Targets/ARM.cpp =================================================================== --- clang/lib/Basic/Targets/ARM.cpp +++ clang/lib/Basic/Targets/ARM.cpp @@ -692,8 +692,11 @@ // For bare-metal none-eabi. if (getTriple().getOS() == llvm::Triple::UnknownOS && (getTriple().getEnvironment() == llvm::Triple::EABI || - getTriple().getEnvironment() == llvm::Triple::EABIHF)) + getTriple().getEnvironment() == llvm::Triple::EABIHF)) { Builder.defineMacro("__ELF__"); + if (Opts.CPlusPlus) + Builder.defineMacro("_GNU_SOURCE"); + } // Target properties. Builder.defineMacro("__REGISTER_PREFIX__", "");
Index: clang/test/Driver/arm-baremetal-defines.cpp =================================================================== --- /dev/null +++ clang/test/Driver/arm-baremetal-defines.cpp @@ -0,0 +1,13 @@ +// RUN: %clangxx --target=arm-none-eabi -march=armv7-m %s -emit-llvm -S -c -o - 2>&1 | FileCheck %s + +// ECHO: {{.*}} "-cc1" {{.*}}mipsel-nacl-defines.c + +// CHECK: __ELF__defined +#ifdef __ELF__ +void __ELF__defined() {} +#endif + +// CHECK: _GNU_SOURCEdefined +#ifdef _GNU_SOURCE +void _GNU_SOURCEdefined() {} +#endif Index: clang/lib/Basic/Targets/ARM.cpp =================================================================== --- clang/lib/Basic/Targets/ARM.cpp +++ clang/lib/Basic/Targets/ARM.cpp @@ -692,8 +692,11 @@ // For bare-metal none-eabi. if (getTriple().getOS() == llvm::Triple::UnknownOS && (getTriple().getEnvironment() == llvm::Triple::EABI || - getTriple().getEnvironment() == llvm::Triple::EABIHF)) + getTriple().getEnvironment() == llvm::Triple::EABIHF)) { Builder.defineMacro("__ELF__"); + if (Opts.CPlusPlus) + Builder.defineMacro("_GNU_SOURCE"); + } // Target properties. Builder.defineMacro("__REGISTER_PREFIX__", "");
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits