r332635 - [sanitizer] Don't add --export-dynamic for Myriad
Author: waltl Date: Thu May 17 11:04:39 2018 New Revision: 332635 URL: http://llvm.org/viewvc/llvm-project?rev=332635&view=rev Log: [sanitizer] Don't add --export-dynamic for Myriad This is to work around a bug in some versions of gnu ld, where --export-dynamic implies -shared even if -static is explicitly given. Myriad supports static linking only, so --export-dynamic is never needed. Differential Revision: https://reviews.llvm.org/D46452 Modified: cfe/trunk/lib/Driver/ToolChains/CommonArgs.cpp Modified: cfe/trunk/lib/Driver/ToolChains/CommonArgs.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChains/CommonArgs.cpp?rev=332635&r1=332634&r2=332635&view=diff == --- cfe/trunk/lib/Driver/ToolChains/CommonArgs.cpp (original) +++ cfe/trunk/lib/Driver/ToolChains/CommonArgs.cpp Thu May 17 11:04:39 2018 @@ -538,6 +538,11 @@ static bool addSanitizerDynamicList(cons // the option, so don't try to pass it. if (TC.getTriple().getOS() == llvm::Triple::Solaris) return true; + // Myriad is static linking only. Furthermore, some versions of its + // linker have the bug where --export-dynamic overrides -static, so + // don't use --export-dynamic on that platform. + if (TC.getTriple().getVendor() == llvm::Triple::Myriad) +return true; SmallString<128> SanRT(TC.getCompilerRT(Args, Sanitizer)); if (llvm::sys::fs::exists(SanRT + ".syms")) { CmdArgs.push_back(Args.MakeArgString("--dynamic-list=" + SanRT + ".syms")); ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
r314706 - Add support for Myriad ma2x8x series of CPUs
Author: waltl Date: Mon Oct 2 11:50:57 2017 New Revision: 314706 URL: http://llvm.org/viewvc/llvm-project?rev=314706&view=rev Log: Add support for Myriad ma2x8x series of CPUs Summary: Also: - Add support for some older Myriad CPUs that were missing. - Fix some incorrect compiler defines for exisitng CPUs. Reviewers: jyknight Subscribers: fedor.sergeev Differential Revision: https://reviews.llvm.org/D37551 Modified: cfe/trunk/lib/Basic/Targets/Sparc.cpp cfe/trunk/lib/Basic/Targets/Sparc.h cfe/trunk/test/Preprocessor/predefined-arch-macros.c Modified: cfe/trunk/lib/Basic/Targets/Sparc.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Basic/Targets/Sparc.cpp?rev=314706&r1=314705&r2=314706&view=diff == --- cfe/trunk/lib/Basic/Targets/Sparc.cpp (original) +++ cfe/trunk/lib/Basic/Targets/Sparc.cpp Mon Oct 2 11:50:57 2017 @@ -70,12 +70,21 @@ SparcTargetInfo::CPUKind SparcTargetInfo .Case("niagara4", CK_NIAGARA4) .Case("ma2100", CK_MYRIAD2100) .Case("ma2150", CK_MYRIAD2150) + .Case("ma2155", CK_MYRIAD2155) .Case("ma2450", CK_MYRIAD2450) + .Case("ma2455", CK_MYRIAD2455) + .Case("ma2x5x", CK_MYRIAD2x5x) + .Case("ma2080", CK_MYRIAD2080) + .Case("ma2085", CK_MYRIAD2085) + .Case("ma2480", CK_MYRIAD2480) + .Case("ma2485", CK_MYRIAD2485) + .Case("ma2x8x", CK_MYRIAD2x8x) // FIXME: the myriad2[.n] spellings are obsolete, // but a grace period is needed to allow updating dependent builds. - .Case("myriad2", CK_MYRIAD2100) + .Case("myriad2", CK_MYRIAD2x5x) .Case("myriad2.1", CK_MYRIAD2100) - .Case("myriad2.2", CK_MYRIAD2150) + .Case("myriad2.2", CK_MYRIAD2x5x) + .Case("myriad2.3", CK_MYRIAD2x8x) .Case("leon2", CK_LEON2) .Case("at697e", CK_LEON2_AT697E) .Case("at697f", CK_LEON2_AT697F) @@ -118,21 +127,57 @@ void SparcV8TargetInfo::getTargetDefines Builder.defineMacro("__sparc_v8__"); Builder.defineMacro("__leon__"); switch (CPU) { +case CK_MYRIAD2100: + MyriadArchValue = "__ma2100"; + Myriad2Value = "1"; + break; case CK_MYRIAD2150: MyriadArchValue = "__ma2150"; Myriad2Value = "2"; break; +case CK_MYRIAD2155: + MyriadArchValue = "__ma2155"; + Myriad2Value = "2"; + break; case CK_MYRIAD2450: MyriadArchValue = "__ma2450"; Myriad2Value = "2"; break; +case CK_MYRIAD2455: + MyriadArchValue = "__ma2455"; + Myriad2Value = "2"; + break; +case CK_MYRIAD2x5x: + Myriad2Value = "2"; + break; +case CK_MYRIAD2080: + MyriadArchValue = "__ma2080"; + Myriad2Value = "3"; + break; +case CK_MYRIAD2085: + MyriadArchValue = "__ma2085"; + Myriad2Value = "3"; + break; +case CK_MYRIAD2480: + MyriadArchValue = "__ma2480"; + Myriad2Value = "3"; + break; +case CK_MYRIAD2485: + MyriadArchValue = "__ma2485"; + Myriad2Value = "3"; + break; +case CK_MYRIAD2x8x: + Myriad2Value = "3"; + break; default: MyriadArchValue = "__ma2100"; Myriad2Value = "1"; break; } -Builder.defineMacro(MyriadArchValue, "1"); -Builder.defineMacro(MyriadArchValue + "__", "1"); +if (!MyriadArchValue.empty()) { + Builder.defineMacro(MyriadArchValue, "1"); + Builder.defineMacro(MyriadArchValue + "__", "1"); +} Builder.defineMacro("__myriad2__", Myriad2Value); Builder.defineMacro("__myriad2", Myriad2Value); } Modified: cfe/trunk/lib/Basic/Targets/Sparc.h URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Basic/Targets/Sparc.h?rev=314706&r1=314705&r2=314706&view=diff == --- cfe/trunk/lib/Basic/Targets/Sparc.h (original) +++ cfe/trunk/lib/Basic/Targets/Sparc.h Mon Oct 2 11:50:57 2017 @@ -107,7 +107,15 @@ public: CK_NIAGARA4, CK_MYRIAD2100, CK_MYRIAD2150, +CK_MYRIAD2155, CK_MYRIAD2450, +CK_MYRIAD2455, +CK_MYRIAD2x5x, +CK_MYRIAD2080, +CK_MYRIAD2085, +CK_MYRIAD2480, +CK_MYRIAD2485, +CK_MYRIAD2x8x, CK_LEON2, CK_LEON2_AT697E, CK_LEON2_AT697F, @@ -136,7 +144,15 @@ public: case CK_TSC701: case CK_MYRIAD2100: case CK_MYRIAD2150: +case CK_MYRIAD2155: case CK_MYRIAD2450: +case CK_MYRIAD2455: +case CK_MYRIAD2x5x: +case CK_MYRIAD2080: +case CK_MYRIAD2085: +case CK_MYRIAD2480: +case CK_MYRIAD2485: +case CK_MYRIAD2x8x: case CK_LEON2: case CK_LEON2_AT697E: case CK_LEON2_AT697F: Modified: cfe/trunk/test/Preprocessor/predefined-arch-macros.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Preprocessor/predefined-arch-macros.c?rev=314706&r1=314705&r2=314706&view=diff == --- cfe/
r324420 - [Myriad] Define __ma2x5x and __ma2x8x
Author: waltl Date: Tue Feb 6 14:39:47 2018 New Revision: 324420 URL: http://llvm.org/viewvc/llvm-project?rev=324420&view=rev Log: [Myriad] Define __ma2x5x and __ma2x8x Summary: Add architecture defines for ma2x5x and ma2x8x. Reviewers: jyknight Subscribers: fedor.sergeev, MartinO Differential Revision: https://reviews.llvm.org/D42882 Modified: cfe/trunk/lib/Basic/Targets/Sparc.cpp cfe/trunk/test/Preprocessor/predefined-arch-macros.c Modified: cfe/trunk/lib/Basic/Targets/Sparc.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Basic/Targets/Sparc.cpp?rev=324420&r1=324419&r2=324420&view=diff == --- cfe/trunk/lib/Basic/Targets/Sparc.cpp (original) +++ cfe/trunk/lib/Basic/Targets/Sparc.cpp Tue Feb 6 14:39:47 2018 @@ -178,6 +178,13 @@ void SparcV8TargetInfo::getTargetDefines Builder.defineMacro(MyriadArchValue, "1"); Builder.defineMacro(MyriadArchValue + "__", "1"); } +if (Myriad2Value == "2") { + Builder.defineMacro("__ma2x5x", "1"); + Builder.defineMacro("__ma2x5x__", "1"); +} else if (Myriad2Value == "3") { + Builder.defineMacro("__ma2x8x", "1"); + Builder.defineMacro("__ma2x8x__", "1"); +} Builder.defineMacro("__myriad2__", Myriad2Value); Builder.defineMacro("__myriad2", Myriad2Value); } Modified: cfe/trunk/test/Preprocessor/predefined-arch-macros.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Preprocessor/predefined-arch-macros.c?rev=324420&r1=324419&r2=324420&view=diff == --- cfe/trunk/test/Preprocessor/predefined-arch-macros.c (original) +++ cfe/trunk/test/Preprocessor/predefined-arch-macros.c Tue Feb 6 14:39:47 2018 @@ -2401,8 +2401,12 @@ // CHECK_MYRIAD2: #define __leon__ 1 // CHECK_MYRIAD2-1: #define __myriad2 1 // CHECK_MYRIAD2-1: #define __myriad2__ 1 +// CHECK_MYRIAD2-2: #define __ma2x5x 1 +// CHECK_MYRIAD2-2: #define __ma2x5x__ 1 // CHECK_MYRIAD2-2: #define __myriad2 2 // CHECK_MYRIAD2-2: #define __myriad2__ 2 +// CHECK_MYRIAD2-3: #define __ma2x8x 1 +// CHECK_MYRIAD2-3: #define __ma2x8x__ 1 // CHECK_MYRIAD2-3: #define __myriad2 3 // CHECK_MYRIAD2-3: #define __myriad2__ 3 // CHECK_SPARCEL: #define __sparc 1 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
r321080 - Rename sparc-myriad-elf triplet to sparc-myriad-rtems
Author: waltl Date: Tue Dec 19 08:19:11 2017 New Revision: 321080 URL: http://llvm.org/viewvc/llvm-project?rev=321080&view=rev Log: Rename sparc-myriad-elf triplet to sparc-myriad-rtems Summary: This is to be consistent with latest Movidius MDK releases. Also, don't inherit any gcc paths for shave triple. Reviewers: jyknight Subscribers: emaste, fedor.sergeev Differential Revision: https://reviews.llvm.org/D41295 Added: cfe/trunk/test/Driver/Inputs/basic_myriad_tree/lib/gcc/sparc-myriad-rtems/ cfe/trunk/test/Driver/Inputs/basic_myriad_tree/lib/gcc/sparc-myriad-rtems/6.3.0/ cfe/trunk/test/Driver/Inputs/basic_myriad_tree/sparc-myriad-rtems/ cfe/trunk/test/Driver/Inputs/basic_myriad_tree/sparc-myriad-rtems/include/ cfe/trunk/test/Driver/Inputs/basic_myriad_tree/sparc-myriad-rtems/include/c++/ cfe/trunk/test/Driver/Inputs/basic_myriad_tree/sparc-myriad-rtems/include/c++/6.3.0/ cfe/trunk/test/Driver/Inputs/basic_myriad_tree/sparc-myriad-rtems/include/c++/6.3.0/.keep cfe/trunk/test/Driver/Inputs/basic_myriad_tree/sparc-myriad-rtems/lib/ Removed: cfe/trunk/test/Driver/Inputs/basic_myriad_tree/lib/gcc/sparc-myriad-elf/ cfe/trunk/test/Driver/Inputs/basic_myriad_tree/sparc-myriad-elf/ Modified: cfe/trunk/lib/Driver/ToolChains/Myriad.cpp cfe/trunk/test/Driver/myriad-toolchain.c Modified: cfe/trunk/lib/Driver/ToolChains/Myriad.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChains/Myriad.cpp?rev=321080&r1=321079&r2=321080&view=diff == --- cfe/trunk/lib/Driver/ToolChains/Myriad.cpp (original) +++ cfe/trunk/lib/Driver/ToolChains/Myriad.cpp Tue Dec 19 08:19:11 2017 @@ -199,7 +199,7 @@ void tools::Myriad::Linker::ConstructJob } std::string Exec = - Args.MakeArgString(TC.GetProgramPath("sparc-myriad-elf-ld")); + Args.MakeArgString(TC.GetProgramPath("sparc-myriad-rtems-ld")); C.addCommand(llvm::make_unique(JA, *this, Args.MakeArgString(Exec), CmdArgs, Inputs)); } @@ -218,10 +218,11 @@ MyriadToolChain::MyriadToolChain(const D D.Diag(clang::diag::err_target_unsupported_arch) << Triple.getArchName() << "myriad"; LLVM_FALLTHROUGH; + case llvm::Triple::shave: +return; case llvm::Triple::sparc: case llvm::Triple::sparcel: - case llvm::Triple::shave: -GCCInstallation.init(Triple, Args, {"sparc-myriad-elf"}); +GCCInstallation.init(Triple, Args, {"sparc-myriad-rtems"}); } if (GCCInstallation.isValid()) { @@ -231,7 +232,7 @@ MyriadToolChain::MyriadToolChain(const D addPathIfExists(D, CompilerSupportDir, getFilePaths()); } // libstd++ and libc++ must both be found in this one place. - addPathIfExists(D, D.Dir + "/../sparc-myriad-elf/lib", getFilePaths()); + addPathIfExists(D, D.Dir + "/../sparc-myriad-rtems/lib", getFilePaths()); } MyriadToolChain::~MyriadToolChain() {} Added: cfe/trunk/test/Driver/Inputs/basic_myriad_tree/sparc-myriad-rtems/include/c++/6.3.0/.keep URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/Inputs/basic_myriad_tree/sparc-myriad-rtems/include/c%2B%2B/6.3.0/.keep?rev=321080&view=auto == (empty) Modified: cfe/trunk/test/Driver/myriad-toolchain.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/myriad-toolchain.c?rev=321080&r1=321079&r2=321080&view=diff == --- cfe/trunk/test/Driver/myriad-toolchain.c (original) +++ cfe/trunk/test/Driver/myriad-toolchain.c Tue Dec 19 08:19:11 2017 @@ -1,19 +1,19 @@ -// RUN: %clang -no-canonical-prefixes -### -target sparc-myriad-rtems-elf %s \ +// RUN: %clang -no-canonical-prefixes -### -target sparc-myriad-rtems %s \ // RUN: -ccc-install-dir %S/Inputs/basic_myriad_tree/bin \ // RUN: --gcc-toolchain=%S/Inputs/basic_myriad_tree 2>&1 | FileCheck %s -check-prefix=LINK_WITH_RTEMS // LINK_WITH_RTEMS: Inputs{{.*}}crti.o // LINK_WITH_RTEMS: Inputs{{.*}}crtbegin.o -// LINK_WITH_RTEMS: "-L{{.*}}Inputs/basic_myriad_tree/lib/gcc/sparc-myriad-elf/4.8.2" -// LINK_WITH_RTEMS: "-L{{.*}}Inputs/basic_myriad_tree/bin/../sparc-myriad-elf/lib" +// LINK_WITH_RTEMS: "-L{{.*}}Inputs/basic_myriad_tree/lib/gcc/sparc-myriad-rtems/6.3.0" +// LINK_WITH_RTEMS: "-L{{.*}}Inputs/basic_myriad_tree/bin/../sparc-myriad-rtems/lib" // LINK_WITH_RTEMS: "--start-group" "-lc" "-lgcc" "-lrtemscpu" "-lrtemsbsp" "--end-group" // LINK_WITH_RTEMS: Inputs{{.*}}crtend.o // LINK_WITH_RTEMS: Inputs{{.*}}crtn.o -// RUN: %clang -c -no-canonical-prefixes -### -target sparc-myriad-rtems-elf -x c++ %s \ +// RUN: %clang -c -no-canonical-prefixes -### -target sparc-myriad-rtems -x c++ %s \ // RUN: -stdlib=libstdc++ --gcc-toolchain=%S/Inputs/basic_myriad_tree 2>&1 | FileCheck %s -check-prefix=COMPILE_CXX -// COMPILE_CXX: "-internal-isystem" "{{.*}}/Inpu
r321082 - Add renamed .o files that were omitted by "git llvm push" command
Author: waltl Date: Tue Dec 19 08:34:13 2017 New Revision: 321082 URL: http://llvm.org/viewvc/llvm-project?rev=321082&view=rev Log: Add renamed .o files that were omitted by "git llvm push" command Original commit is at: https://reviews.llvm.org/D41295. Added: cfe/trunk/test/Driver/Inputs/basic_myriad_tree/lib/gcc/sparc-myriad-rtems/6.3.0/crtbegin.o cfe/trunk/test/Driver/Inputs/basic_myriad_tree/lib/gcc/sparc-myriad-rtems/6.3.0/crtend.o cfe/trunk/test/Driver/Inputs/basic_myriad_tree/lib/gcc/sparc-myriad-rtems/6.3.0/crti.o cfe/trunk/test/Driver/Inputs/basic_myriad_tree/lib/gcc/sparc-myriad-rtems/6.3.0/crtn.o cfe/trunk/test/Driver/Inputs/basic_myriad_tree/sparc-myriad-rtems/lib/crt0.o Added: cfe/trunk/test/Driver/Inputs/basic_myriad_tree/lib/gcc/sparc-myriad-rtems/6.3.0/crtbegin.o URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/Inputs/basic_myriad_tree/lib/gcc/sparc-myriad-rtems/6.3.0/crtbegin.o?rev=321082&view=auto == (empty) Added: cfe/trunk/test/Driver/Inputs/basic_myriad_tree/lib/gcc/sparc-myriad-rtems/6.3.0/crtend.o URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/Inputs/basic_myriad_tree/lib/gcc/sparc-myriad-rtems/6.3.0/crtend.o?rev=321082&view=auto == (empty) Added: cfe/trunk/test/Driver/Inputs/basic_myriad_tree/lib/gcc/sparc-myriad-rtems/6.3.0/crti.o URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/Inputs/basic_myriad_tree/lib/gcc/sparc-myriad-rtems/6.3.0/crti.o?rev=321082&view=auto == (empty) Added: cfe/trunk/test/Driver/Inputs/basic_myriad_tree/lib/gcc/sparc-myriad-rtems/6.3.0/crtn.o URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/Inputs/basic_myriad_tree/lib/gcc/sparc-myriad-rtems/6.3.0/crtn.o?rev=321082&view=auto == (empty) Added: cfe/trunk/test/Driver/Inputs/basic_myriad_tree/sparc-myriad-rtems/lib/crt0.o URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/Inputs/basic_myriad_tree/sparc-myriad-rtems/lib/crt0.o?rev=321082&view=auto == (empty) ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
r322023 - [Myriad] Remove invalidated -elf flag for MoviAsm
Author: waltl Date: Mon Jan 8 12:36:08 2018 New Revision: 322023 URL: http://llvm.org/viewvc/llvm-project?rev=322023&view=rev Log: [Myriad] Remove invalidated -elf flag for MoviAsm Summary: The flag has been deprecated, and is becoming invalid in the latest MDK. Reviewers: jyknight Subscribers: cfe-commits Differential Revision: https://reviews.llvm.org/D41713 Modified: cfe/trunk/lib/Driver/ToolChains/Myriad.cpp cfe/trunk/test/Driver/myriad-toolchain.c Modified: cfe/trunk/lib/Driver/ToolChains/Myriad.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChains/Myriad.cpp?rev=322023&r1=322022&r2=322023&view=diff == --- cfe/trunk/lib/Driver/ToolChains/Myriad.cpp (original) +++ cfe/trunk/lib/Driver/ToolChains/Myriad.cpp Mon Jan 8 12:36:08 2018 @@ -107,7 +107,6 @@ void tools::SHAVE::Assembler::ConstructJ CmdArgs.push_back( Args.MakeArgString(std::string("-i:") + A->getValue(0))); } - CmdArgs.push_back("-elf"); // Output format. CmdArgs.push_back(II.getFilename()); CmdArgs.push_back( Args.MakeArgString(std::string("-o:") + Output.getFilename())); Modified: cfe/trunk/test/Driver/myriad-toolchain.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/myriad-toolchain.c?rev=322023&r1=322022&r2=322023&view=diff == --- cfe/trunk/test/Driver/myriad-toolchain.c (original) +++ cfe/trunk/test/Driver/myriad-toolchain.c Mon Jan 8 12:36:08 2018 @@ -41,7 +41,7 @@ // RUN: | FileCheck %s -check-prefix=MOVICOMPILE // MOVICOMPILE: moviCompile{{(.exe)?}}" "-S" "-fno-exceptions" "-DMYRIAD2" "-mcpu=myriad2.2" "-isystem" "somewhere" "-I" "common" // MOVICOMPILE: moviAsm{{(.exe)?}}" "-no6thSlotCompression" "-cv:myriad2.2" "-noSPrefixing" "-a" -// MOVICOMPILE: "-yippee" "-i:somewhere" "-i:common" "-elf" +// MOVICOMPILE: "-yippee" "-i:somewhere" "-i:common" // RUN: %clang -target shave-myriad -c -### %s -DEFINE_ME -UNDEFINE_ME 2>&1 \ // RUN: | FileCheck %s -check-prefix=DEFINES ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] Add tests for driver to propagate module map flags even without -fmod… (PR #75827)
https://github.com/googlewalt created https://github.com/llvm/llvm-project/pull/75827 …ules We use this to verify properties of our build graph, even when modules are off. Xcode 14.3.1 seems to have dropped these flags so we are creating a unit test to reproduce the issue. >From 0e83c457b51aff2f691da15850e8ee82f971a7f4 Mon Sep 17 00:00:00 2001 From: Walter Lee Date: Mon, 18 Dec 2023 11:41:43 -0500 Subject: [PATCH] Add tests for driver to propagate module map flags even without -fmodules We use this to verify properties of our build graph, even when modules are off. Xcode 14.3.1 seems to have dropped these flags so we are creating a unit test to reproduce the issue. --- clang/test/Driver/modules.m | 8 1 file changed, 8 insertions(+) diff --git a/clang/test/Driver/modules.m b/clang/test/Driver/modules.m index 9eb3569805569a..20bbcf40512300 100644 --- a/clang/test/Driver/modules.m +++ b/clang/test/Driver/modules.m @@ -57,6 +57,14 @@ // CHECK-MODULE-MAP-FILES: "-fmodule-map-file=foo.map" // CHECK-MODULE-MAP-FILES: "-fmodule-map-file=bar.map" +// RUN: %clang -fno-modules -fmodule-name=foo -c -### %s 2>&1 | FileCheck -check-prefix=CHECK-PROPAGATE-MODULE-NAME %s +// +// CHECK-PROPAGATE-MODULE-NAME: -fmodule-name=foo + +// RUN: %clang -fno-modules -fmodule-map-file=foo.map -c -### %s 2>&1 | FileCheck -check-prefix=CHECK-PROPAGATE-MODULE-MAPS %s +// +// CHECK-PROPAGATE-MODULE-MAPS: -fmodule-map-file=foo.map + // RUN: %clang -fmodules -fbuiltin-module-map -### %s 2>&1 | FileCheck -check-prefix=CHECK-BUILTIN-MODULE-MAP %s // CHECK-BUILTIN-MODULE-MAP: "-fmodules" // CHECK-BUILTIN-MODULE-MAP: "-fmodule-map-file={{.*}}include{{/|}}module.modulemap" ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] Add tests for driver to propagate module map flags even without -fmod… (PR #75827)
https://github.com/googlewalt updated https://github.com/llvm/llvm-project/pull/75827 >From 303bcd180e438abd570bd9abd55582959d313ae3 Mon Sep 17 00:00:00 2001 From: Walter Lee Date: Mon, 18 Dec 2023 11:41:43 -0500 Subject: [PATCH] Add tests for driver to propagate module map flags when -fno-modules We rely on this behavior for layering check. Xcode 14.3.1 seems to have dropped these flags so we are creating a unit test to reproduce the issue. --- clang/test/Driver/modules.m | 10 ++ 1 file changed, 10 insertions(+) diff --git a/clang/test/Driver/modules.m b/clang/test/Driver/modules.m index 9eb3569805569a..d88cac2e27c539 100644 --- a/clang/test/Driver/modules.m +++ b/clang/test/Driver/modules.m @@ -57,6 +57,16 @@ // CHECK-MODULE-MAP-FILES: "-fmodule-map-file=foo.map" // CHECK-MODULE-MAP-FILES: "-fmodule-map-file=bar.map" +// Verify that the driver propagates -fmodule-name and -fmodule-map-file flags even with +// -fno-modules. We rely on this behavior for layering check. +// RUN: %clang -fno-modules -fmodule-name=foo -c -### %s 2>&1 | FileCheck -check-prefix=CHECK-PROPAGATE-MODULE-NAME %s +// +// CHECK-PROPAGATE-MODULE-NAME: -fmodule-name=foo + +// RUN: %clang -fno-modules -fmodule-map-file=foo.map -c -### %s 2>&1 | FileCheck -check-prefix=CHECK-PROPAGATE-MODULE-MAPS %s +// +// CHECK-PROPAGATE-MODULE-MAPS: -fmodule-map-file=foo.map + // RUN: %clang -fmodules -fbuiltin-module-map -### %s 2>&1 | FileCheck -check-prefix=CHECK-BUILTIN-MODULE-MAP %s // CHECK-BUILTIN-MODULE-MAP: "-fmodules" // CHECK-BUILTIN-MODULE-MAP: "-fmodule-map-file={{.*}}include{{/|}}module.modulemap" ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] Add tests for driver to propagate module map flags even without -fmod… (PR #75827)
https://github.com/googlewalt updated https://github.com/llvm/llvm-project/pull/75827 >From 308e72ed9735f739a0993062415301fea0f47b77 Mon Sep 17 00:00:00 2001 From: Walter Lee Date: Mon, 18 Dec 2023 11:41:43 -0500 Subject: [PATCH] Add tests for driver to propagate module map flags when -fno-modules We rely on this behavior for layering check. Xcode 14.3.1 seems to have dropped these flags so we are creating a unit test to reproduce the issue. --- clang/test/Driver/modules.m | 8 1 file changed, 8 insertions(+) diff --git a/clang/test/Driver/modules.m b/clang/test/Driver/modules.m index 9eb3569805569a..7b215bb6d870d6 100644 --- a/clang/test/Driver/modules.m +++ b/clang/test/Driver/modules.m @@ -57,6 +57,14 @@ // CHECK-MODULE-MAP-FILES: "-fmodule-map-file=foo.map" // CHECK-MODULE-MAP-FILES: "-fmodule-map-file=bar.map" +// Verify that the driver propagates -fmodule-name and -fmodule-map-file flags even with +// -fno-modules. We rely on this behavior for layering check. +// RUN: %clang -fno-modules -fmodule-name=foo -c -### %s 2>&1 | FileCheck -check-prefix=CHECK-PROPAGATE-MODULE-NAME %s +// CHECK-PROPAGATE-MODULE-NAME: -fmodule-name=foo + +// RUN: %clang -fno-modules -fmodule-map-file=foo.map -c -### %s 2>&1 | FileCheck -check-prefix=CHECK-PROPAGATE-MODULE-MAPS %s +// CHECK-PROPAGATE-MODULE-MAPS: -fmodule-map-file=foo.map + // RUN: %clang -fmodules -fbuiltin-module-map -### %s 2>&1 | FileCheck -check-prefix=CHECK-BUILTIN-MODULE-MAP %s // CHECK-BUILTIN-MODULE-MAP: "-fmodules" // CHECK-BUILTIN-MODULE-MAP: "-fmodule-map-file={{.*}}include{{/|}}module.modulemap" ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] Add tests for driver to propagate module map flags even without -fmod… (PR #75827)
@@ -57,6 +57,14 @@ // CHECK-MODULE-MAP-FILES: "-fmodule-map-file=foo.map" // CHECK-MODULE-MAP-FILES: "-fmodule-map-file=bar.map" +// RUN: %clang -fno-modules -fmodule-name=foo -c -### %s 2>&1 | FileCheck -check-prefix=CHECK-PROPAGATE-MODULE-NAME %s googlewalt wrote: Done. https://github.com/llvm/llvm-project/pull/75827 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[llvm] [clang] [clang-tools-extra] [compiler-rt] [libc] [flang] [libcxx] Add tests for driver to propagate module map flags even without -fmod… (PR #75827)
https://github.com/googlewalt updated https://github.com/llvm/llvm-project/pull/75827 >From 308e72ed9735f739a0993062415301fea0f47b77 Mon Sep 17 00:00:00 2001 From: Walter Lee Date: Mon, 18 Dec 2023 11:41:43 -0500 Subject: [PATCH] Add tests for driver to propagate module map flags when -fno-modules We rely on this behavior for layering check. Xcode 14.3.1 seems to have dropped these flags so we are creating a unit test to reproduce the issue. --- clang/test/Driver/modules.m | 8 1 file changed, 8 insertions(+) diff --git a/clang/test/Driver/modules.m b/clang/test/Driver/modules.m index 9eb3569805569a..7b215bb6d870d6 100644 --- a/clang/test/Driver/modules.m +++ b/clang/test/Driver/modules.m @@ -57,6 +57,14 @@ // CHECK-MODULE-MAP-FILES: "-fmodule-map-file=foo.map" // CHECK-MODULE-MAP-FILES: "-fmodule-map-file=bar.map" +// Verify that the driver propagates -fmodule-name and -fmodule-map-file flags even with +// -fno-modules. We rely on this behavior for layering check. +// RUN: %clang -fno-modules -fmodule-name=foo -c -### %s 2>&1 | FileCheck -check-prefix=CHECK-PROPAGATE-MODULE-NAME %s +// CHECK-PROPAGATE-MODULE-NAME: -fmodule-name=foo + +// RUN: %clang -fno-modules -fmodule-map-file=foo.map -c -### %s 2>&1 | FileCheck -check-prefix=CHECK-PROPAGATE-MODULE-MAPS %s +// CHECK-PROPAGATE-MODULE-MAPS: -fmodule-map-file=foo.map + // RUN: %clang -fmodules -fbuiltin-module-map -### %s 2>&1 | FileCheck -check-prefix=CHECK-BUILTIN-MODULE-MAP %s // CHECK-BUILTIN-MODULE-MAP: "-fmodules" // CHECK-BUILTIN-MODULE-MAP: "-fmodule-map-file={{.*}}include{{/|}}module.modulemap" ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] Add tests for driver to propagate module map flags even without -fmod… (PR #75827)
https://github.com/googlewalt updated https://github.com/llvm/llvm-project/pull/75827 >From 308e72ed9735f739a0993062415301fea0f47b77 Mon Sep 17 00:00:00 2001 From: Walter Lee Date: Mon, 18 Dec 2023 11:41:43 -0500 Subject: [PATCH] Add tests for driver to propagate module map flags when -fno-modules We rely on this behavior for layering check. Xcode 14.3.1 seems to have dropped these flags so we are creating a unit test to reproduce the issue. --- clang/test/Driver/modules.m | 8 1 file changed, 8 insertions(+) diff --git a/clang/test/Driver/modules.m b/clang/test/Driver/modules.m index 9eb3569805569a..7b215bb6d870d6 100644 --- a/clang/test/Driver/modules.m +++ b/clang/test/Driver/modules.m @@ -57,6 +57,14 @@ // CHECK-MODULE-MAP-FILES: "-fmodule-map-file=foo.map" // CHECK-MODULE-MAP-FILES: "-fmodule-map-file=bar.map" +// Verify that the driver propagates -fmodule-name and -fmodule-map-file flags even with +// -fno-modules. We rely on this behavior for layering check. +// RUN: %clang -fno-modules -fmodule-name=foo -c -### %s 2>&1 | FileCheck -check-prefix=CHECK-PROPAGATE-MODULE-NAME %s +// CHECK-PROPAGATE-MODULE-NAME: -fmodule-name=foo + +// RUN: %clang -fno-modules -fmodule-map-file=foo.map -c -### %s 2>&1 | FileCheck -check-prefix=CHECK-PROPAGATE-MODULE-MAPS %s +// CHECK-PROPAGATE-MODULE-MAPS: -fmodule-map-file=foo.map + // RUN: %clang -fmodules -fbuiltin-module-map -### %s 2>&1 | FileCheck -check-prefix=CHECK-BUILTIN-MODULE-MAP %s // CHECK-BUILTIN-MODULE-MAP: "-fmodules" // CHECK-BUILTIN-MODULE-MAP: "-fmodule-map-file={{.*}}include{{/|}}module.modulemap" ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] Add tests for driver to propagate module map flags even without -fmod… (PR #75827)
https://github.com/googlewalt updated https://github.com/llvm/llvm-project/pull/75827 >From eefa77a7cc7c671ef1551239e473f0267527dfa3 Mon Sep 17 00:00:00 2001 From: Walter Lee Date: Mon, 18 Dec 2023 11:41:43 -0500 Subject: [PATCH] Add tests for driver to propagate module map flags when -fno-modules We rely on this behavior for layering check. Xcode 14.3.1 seems to have dropped these flags so we are creating a unit test to reproduce the issue. --- clang/test/Driver/modules.m | 8 1 file changed, 8 insertions(+) diff --git a/clang/test/Driver/modules.m b/clang/test/Driver/modules.m index 9eb3569805569a..7b215bb6d870d6 100644 --- a/clang/test/Driver/modules.m +++ b/clang/test/Driver/modules.m @@ -57,6 +57,14 @@ // CHECK-MODULE-MAP-FILES: "-fmodule-map-file=foo.map" // CHECK-MODULE-MAP-FILES: "-fmodule-map-file=bar.map" +// Verify that the driver propagates -fmodule-name and -fmodule-map-file flags even with +// -fno-modules. We rely on this behavior for layering check. +// RUN: %clang -fno-modules -fmodule-name=foo -c -### %s 2>&1 | FileCheck -check-prefix=CHECK-PROPAGATE-MODULE-NAME %s +// CHECK-PROPAGATE-MODULE-NAME: -fmodule-name=foo + +// RUN: %clang -fno-modules -fmodule-map-file=foo.map -c -### %s 2>&1 | FileCheck -check-prefix=CHECK-PROPAGATE-MODULE-MAPS %s +// CHECK-PROPAGATE-MODULE-MAPS: -fmodule-map-file=foo.map + // RUN: %clang -fmodules -fbuiltin-module-map -### %s 2>&1 | FileCheck -check-prefix=CHECK-BUILTIN-MODULE-MAP %s // CHECK-BUILTIN-MODULE-MAP: "-fmodules" // CHECK-BUILTIN-MODULE-MAP: "-fmodule-map-file={{.*}}include{{/|}}module.modulemap" ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] Add tests for driver to propagate module map flags even without -fmod… (PR #75827)
https://github.com/googlewalt updated https://github.com/llvm/llvm-project/pull/75827 >From eefa77a7cc7c671ef1551239e473f0267527dfa3 Mon Sep 17 00:00:00 2001 From: Walter Lee Date: Mon, 18 Dec 2023 11:41:43 -0500 Subject: [PATCH 1/2] Add tests for driver to propagate module map flags when -fno-modules We rely on this behavior for layering check. Xcode 14.3.1 seems to have dropped these flags so we are creating a unit test to reproduce the issue. --- clang/test/Driver/modules.m | 8 1 file changed, 8 insertions(+) diff --git a/clang/test/Driver/modules.m b/clang/test/Driver/modules.m index 9eb3569805569a..7b215bb6d870d6 100644 --- a/clang/test/Driver/modules.m +++ b/clang/test/Driver/modules.m @@ -57,6 +57,14 @@ // CHECK-MODULE-MAP-FILES: "-fmodule-map-file=foo.map" // CHECK-MODULE-MAP-FILES: "-fmodule-map-file=bar.map" +// Verify that the driver propagates -fmodule-name and -fmodule-map-file flags even with +// -fno-modules. We rely on this behavior for layering check. +// RUN: %clang -fno-modules -fmodule-name=foo -c -### %s 2>&1 | FileCheck -check-prefix=CHECK-PROPAGATE-MODULE-NAME %s +// CHECK-PROPAGATE-MODULE-NAME: -fmodule-name=foo + +// RUN: %clang -fno-modules -fmodule-map-file=foo.map -c -### %s 2>&1 | FileCheck -check-prefix=CHECK-PROPAGATE-MODULE-MAPS %s +// CHECK-PROPAGATE-MODULE-MAPS: -fmodule-map-file=foo.map + // RUN: %clang -fmodules -fbuiltin-module-map -### %s 2>&1 | FileCheck -check-prefix=CHECK-BUILTIN-MODULE-MAP %s // CHECK-BUILTIN-MODULE-MAP: "-fmodules" // CHECK-BUILTIN-MODULE-MAP: "-fmodule-map-file={{.*}}include{{/|}}module.modulemap" >From 782b6224d6660a243c19a8c9bb58510d6578a64d Mon Sep 17 00:00:00 2001 From: Walter Lee Date: Wed, 20 Dec 2023 08:42:49 -0500 Subject: [PATCH 2/2] Change tests to directly test for layering check --- clang/test/Driver/modules.m | 20 +--- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/clang/test/Driver/modules.m b/clang/test/Driver/modules.m index 7b215bb6d870d6..d1a65f5cb07133 100644 --- a/clang/test/Driver/modules.m +++ b/clang/test/Driver/modules.m @@ -57,15 +57,21 @@ // CHECK-MODULE-MAP-FILES: "-fmodule-map-file=foo.map" // CHECK-MODULE-MAP-FILES: "-fmodule-map-file=bar.map" -// Verify that the driver propagates -fmodule-name and -fmodule-map-file flags even with -// -fno-modules. We rely on this behavior for layering check. -// RUN: %clang -fno-modules -fmodule-name=foo -c -### %s 2>&1 | FileCheck -check-prefix=CHECK-PROPAGATE-MODULE-NAME %s -// CHECK-PROPAGATE-MODULE-NAME: -fmodule-name=foo +// Verify that the driver propagates -fmodule-name and -fmodule-map-file flags when +// -fmodules-decluse or -fmodules-strict-decluse, as used for layering check. +// RUN: %clang -fmodules-decluse -fmodule-name=foo -c -### %s 2>&1 | FileCheck -check-prefix=CHECK-DECLUSE-PROPAGATE-MODULE-NAME %s +// CHECK-DECLUSE-PROPAGATE-MODULE-NAME: -fmodule-name=foo -// RUN: %clang -fno-modules -fmodule-map-file=foo.map -c -### %s 2>&1 | FileCheck -check-prefix=CHECK-PROPAGATE-MODULE-MAPS %s -// CHECK-PROPAGATE-MODULE-MAPS: -fmodule-map-file=foo.map +// RUN: %clang -fmodules-decluse -fmodule-map-file=foo.map -c -### %s 2>&1 | FileCheck -check-prefix=CHECK-DECLUSE-PROPAGATE-MODULE-MAPS %s +// CHECK-DECLUSE-PROPAGATE-MODULE-MAPS: -fmodule-map-file=foo.map -// RUN: %clang -fmodules -fbuiltin-module-map -### %s 2>&1 | FileCheck -check-prefix=CHECK-BUILTIN-MODULE-MAP %s +// RUN: %clang -fmodules-strict-decluse -fmodule-name=foo -c -### %s 2>&1 | FileCheck -check-prefix=CHECK-STRICT-DECLUSE-PROPAGATE-MODULE-NAME %s +// CHECK-STRICT-DECLUSE-PROPAGATE-MODULE-NAME: -fmodule-name=foo + +// RUN: %clang -fmodules-strict-decluse -fmodule-map-file=foo.map -c -### %s 2>&1 | FileCheck -check-prefix=CHECK-STRICT-DECLUSE-PROPAGATE-MODULE-MAPS %s +// CHECK-STRICT-DECLUSE-PROPAGATE-MODULE-MAPS: -fmodule-map-file=foo.map + +// RUN: %clang -fmodules -fbuiltin-module-map -### %s 2>&1 | FileCheck -check-prefix=CHECK-BUILTIN-MODULE-MAP %s // CHECK-BUILTIN-MODULE-MAP: "-fmodules" // CHECK-BUILTIN-MODULE-MAP: "-fmodule-map-file={{.*}}include{{/|}}module.modulemap" ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] Add tests for driver to propagate module map flags even without -fmod… (PR #75827)
@@ -57,6 +57,14 @@ // CHECK-MODULE-MAP-FILES: "-fmodule-map-file=foo.map" // CHECK-MODULE-MAP-FILES: "-fmodule-map-file=bar.map" +// RUN: %clang -fno-modules -fmodule-name=foo -c -### %s 2>&1 | FileCheck -check-prefix=CHECK-PROPAGATE-MODULE-NAME %s googlewalt wrote: I changed the tests to directly test for layering check, since that's what I care about. I don't see analogous tests for c/c++. Should I add them? https://github.com/llvm/llvm-project/pull/75827 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] Add tests for driver to propagate module map flags for layering check (PR #75827)
https://github.com/googlewalt edited https://github.com/llvm/llvm-project/pull/75827 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] Add tests for driver to propagate module map flags for layering check (PR #75827)
https://github.com/googlewalt closed https://github.com/llvm/llvm-project/pull/75827 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
r309626 - Move RTEMS to OSTargets.h
Author: waltl Date: Mon Jul 31 14:00:16 2017 New Revision: 309626 URL: http://llvm.org/viewvc/llvm-project?rev=309626&view=rev Log: Move RTEMS to OSTargets.h Differential Revision: https://reviews.llvm.org/D36106 Modified: cfe/trunk/lib/Basic/Targets/OSTargets.h cfe/trunk/lib/Basic/Targets/X86.h Modified: cfe/trunk/lib/Basic/Targets/OSTargets.h URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Basic/Targets/OSTargets.h?rev=309626&r1=309625&r2=309626&view=diff == --- cfe/trunk/lib/Basic/Targets/OSTargets.h (original) +++ cfe/trunk/lib/Basic/Targets/OSTargets.h Mon Jul 31 14:00:16 2017 @@ -495,6 +495,40 @@ public: } }; +// RTEMS Target +template +class LLVM_LIBRARY_VISIBILITY RTEMSTargetInfo : public OSTargetInfo { +protected: + void getOSDefines(const LangOptions &Opts, const llvm::Triple &Triple, +MacroBuilder &Builder) const override { +// RTEMS defines; list based off of gcc output + +Builder.defineMacro("__rtems__"); +Builder.defineMacro("__ELF__"); + } + +public: + RTEMSTargetInfo(const llvm::Triple &Triple, const TargetOptions &Opts) + : OSTargetInfo(Triple, Opts) { +switch (Triple.getArch()) { +default: +case llvm::Triple::x86: + // this->MCountName = ".mcount"; + break; +case llvm::Triple::mips: +case llvm::Triple::mipsel: +case llvm::Triple::ppc: +case llvm::Triple::ppc64: +case llvm::Triple::ppc64le: + // this->MCountName = "_mcount"; + break; +case llvm::Triple::arm: + // this->MCountName = "__mcount"; + break; +} + } +}; + // Solaris target template class LLVM_LIBRARY_VISIBILITY SolarisTargetInfo : public OSTargetInfo { Modified: cfe/trunk/lib/Basic/Targets/X86.h URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Basic/Targets/X86.h?rev=309626&r1=309625&r2=309626&view=diff == --- cfe/trunk/lib/Basic/Targets/X86.h (original) +++ cfe/trunk/lib/Basic/Targets/X86.h Mon Jul 31 14:00:16 2017 @@ -773,40 +773,6 @@ public: bool allowsLargerPreferedTypeAlignment() const override { return false; } }; -// RTEMS Target -template -class LLVM_LIBRARY_VISIBILITY RTEMSTargetInfo : public OSTargetInfo { -protected: - void getOSDefines(const LangOptions &Opts, const llvm::Triple &Triple, -MacroBuilder &Builder) const override { -// RTEMS defines; list based off of gcc output - -Builder.defineMacro("__rtems__"); -Builder.defineMacro("__ELF__"); - } - -public: - RTEMSTargetInfo(const llvm::Triple &Triple, const TargetOptions &Opts) - : OSTargetInfo(Triple, Opts) { -switch (Triple.getArch()) { -default: -case llvm::Triple::x86: - // this->MCountName = ".mcount"; - break; -case llvm::Triple::mips: -case llvm::Triple::mipsel: -case llvm::Triple::ppc: -case llvm::Triple::ppc64: -case llvm::Triple::ppc64le: - // this->MCountName = "_mcount"; - break; -case llvm::Triple::arm: - // this->MCountName = "__mcount"; - break; -} - } -}; - // x86-32 RTEMS target class LLVM_LIBRARY_VISIBILITY RTEMSX86_32TargetInfo : public X86_32TargetInfo { public: ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
r309815 - Define _GNU_SOURCE for RTEMS c++
Author: waltl Date: Wed Aug 2 07:36:52 2017 New Revision: 309815 URL: http://llvm.org/viewvc/llvm-project?rev=309815&view=rev Log: Define _GNU_SOURCE for RTEMS c++ Summary: This is required by the libc++ locale support. Reviewers: jyknight Subscribers: fedor.sergeev Differential Revision: https://reviews.llvm.org/D36121 Modified: cfe/trunk/lib/Basic/Targets/OSTargets.h cfe/trunk/test/Preprocessor/init.c Modified: cfe/trunk/lib/Basic/Targets/OSTargets.h URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Basic/Targets/OSTargets.h?rev=309815&r1=309814&r2=309815&view=diff == --- cfe/trunk/lib/Basic/Targets/OSTargets.h (original) +++ cfe/trunk/lib/Basic/Targets/OSTargets.h Wed Aug 2 07:36:52 2017 @@ -505,6 +505,8 @@ protected: Builder.defineMacro("__rtems__"); Builder.defineMacro("__ELF__"); +if (Opts.CPlusPlus) + Builder.defineMacro("_GNU_SOURCE"); } public: Modified: cfe/trunk/test/Preprocessor/init.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Preprocessor/init.c?rev=309815&r1=309814&r2=309815&view=diff == --- cfe/trunk/test/Preprocessor/init.c (original) +++ cfe/trunk/test/Preprocessor/init.c Wed Aug 2 07:36:52 2017 @@ -8955,6 +8955,7 @@ // KFREEBSDI686-DEFINE:#define __GLIBC__ 1 // // RUN: %clang_cc1 -x c++ -triple i686-pc-linux-gnu -fobjc-runtime=gcc -E -dM < /dev/null | FileCheck -match-full-lines -check-prefix GNUSOURCE %s +// RUN: %clang_cc1 -x c++ -triple sparc-rtems-elf -E -dM < /dev/null | FileCheck -match-full-lines -check-prefix GNUSOURCE %s // GNUSOURCE:#define _GNU_SOURCE 1 // // RUN: %clang_cc1 -x c++ -std=c++98 -fno-rtti -E -dM < /dev/null | FileCheck -match-full-lines -check-prefix NORTTI %s ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] 66c6bbe - Put code that avoids heapifying local blocks behind a flag
Author: Walter Lee Date: 2021-09-14T14:06:05-04:00 New Revision: 66c6bbe7ff56441706d6cbb349fde9a02e248c9a URL: https://github.com/llvm/llvm-project/commit/66c6bbe7ff56441706d6cbb349fde9a02e248c9a DIFF: https://github.com/llvm/llvm-project/commit/66c6bbe7ff56441706d6cbb349fde9a02e248c9a.diff LOG: Put code that avoids heapifying local blocks behind a flag This change puts the functionality in commit c5792aa90fa45a1842f190c146f19e2c71ea6fbd behind a flag that is off by default. The original commit is not in Apple's Clang fork (and blocks are an Apple extension in the first place), and there is one known issue that needs to be addressed before it can be enabled safely. Differential Revision: https://reviews.llvm.org/D108243 Added: Modified: clang/include/clang/Basic/CodeGenOptions.def clang/include/clang/Driver/Options.td clang/lib/CodeGen/CGObjC.cpp clang/test/CodeGenObjC/arc-block-copy-escape.m clang/test/CodeGenObjC/arc-blocks.m clang/test/CodeGenObjCXX/arc-blocks.mm clang/test/PCH/arc-blocks.mm Removed: diff --git a/clang/include/clang/Basic/CodeGenOptions.def b/clang/include/clang/Basic/CodeGenOptions.def index 73edae63bfc91..737d2d70bf466 100644 --- a/clang/include/clang/Basic/CodeGenOptions.def +++ b/clang/include/clang/Basic/CodeGenOptions.def @@ -188,6 +188,7 @@ CODEGENOPT(NoZeroInitializedInBSS , 1, 0) ///< -fno-zero-initialized-in-bss. ENUM_CODEGENOPT(ObjCDispatchMethod, ObjCDispatchMethodKind, 2, Legacy) /// Replace certain message sends with calls to ObjC runtime entrypoints CODEGENOPT(ObjCConvertMessagesToRuntimeCalls , 1, 1) +CODEGENOPT(ObjCAvoidHeapifyLocalBlocks, 1, 0) VALUE_CODEGENOPT(OptimizationLevel, 2, 0) ///< The -O[0-3] option specified. VALUE_CODEGENOPT(OptimizeSize, 2, 0) ///< If -Os (==1) or -Oz (==2) is specified. diff --git a/clang/include/clang/Driver/Options.td b/clang/include/clang/Driver/Options.td index 6d0dba2bc5adc..6e8fe785ae04c 100644 --- a/clang/include/clang/Driver/Options.td +++ b/clang/include/clang/Driver/Options.td @@ -2369,6 +2369,11 @@ def fobjc_disable_direct_methods_for_testing : Group, Flags<[CC1Option]>, HelpText<"Ignore attribute objc_direct so that direct methods can be tested">, MarshallingInfoFlag>; +defm objc_avoid_heapify_local_blocks : BoolFOption<"objc-avoid-heapify-local-blocks", + CodeGenOpts<"ObjCAvoidHeapifyLocalBlocks">, DefaultFalse, + PosFlag, + NegFlag, + BothFlags<[CC1Option, NoDriverOption], " to avoid heapifying local blocks">>; def fomit_frame_pointer : Flag<["-"], "fomit-frame-pointer">, Group; def fopenmp : Flag<["-"], "fopenmp">, Group, Flags<[CC1Option, NoArgumentUnused, FlangOption, FC1Option]>, diff --git a/clang/lib/CodeGen/CGObjC.cpp b/clang/lib/CodeGen/CGObjC.cpp index 0aaec9af2f41e..4eced4ec046fb 100644 --- a/clang/lib/CodeGen/CGObjC.cpp +++ b/clang/lib/CodeGen/CGObjC.cpp @@ -3332,7 +3332,8 @@ struct ARCRetainExprEmitter : TryEmitResult result = visitExpr(e); // Avoid the block-retain if this is a block literal that doesn't need to be // copied to the heap. -if (e->getBlockDecl()->canAvoidCopyToHeap()) +if (CGF.CGM.getCodeGenOpts().ObjCAvoidHeapifyLocalBlocks && +e->getBlockDecl()->canAvoidCopyToHeap()) result.setInt(true); return result; } diff --git a/clang/test/CodeGenObjC/arc-block-copy-escape.m b/clang/test/CodeGenObjC/arc-block-copy-escape.m index 9e409ce72e247..300405f852987 100644 --- a/clang/test/CodeGenObjC/arc-block-copy-escape.m +++ b/clang/test/CodeGenObjC/arc-block-copy-escape.m @@ -1,4 +1,6 @@ -// RUN: %clang_cc1 -fobjc-arc -fblocks -emit-llvm %s -o - | FileCheck %s +// RUN: %clang_cc1 -fobjc-arc -fblocks -emit-llvm %s -o - | FileCheck -check-prefix=CHECK -check-prefix=CHECK-HEAP %s +// RUN: %clang_cc1 -fobjc-arc -fblocks -fobjc-avoid-heapify-local-blocks -emit-llvm %s -o - | FileCheck -check-prefix=CHECK -check-prefix=CHECK-NOHEAP %s + typedef void (^block_t)(void); void use_block(block_t); @@ -8,17 +10,19 @@ void test0(int i) { block_t block = ^{ use_int(i); }; - // CHECK-LABEL: define {{.*}}void @test0( - // CHECK-NOT: @llvm.objc.retainBlock( - // CHECK: ret void + // CHECK-LABEL: define {{.*}}void @test0( + // CHECK-HEAP: call {{.*}}i8* @llvm.objc.retainBlock(i8* {{%.*}}) [[NUW:#[0-9]+]], !clang.arc.copy_on_escape + // CHECK-NOHEAP-NOT: @llvm.objc.retainBlock( + // CHECK:ret void } void test1(int i) { id block = ^{ use_int(i); }; // CHECK-LABEL: define {{.*}}void @test1( - // CHECK: call {{.*}}i8* @llvm.objc.retainBlock(i8* {{%.*}}) [[NUW:#[0-9]+]] - // CHECK-NOT: !clang.arc.copy_on_escape - // CHECK: ret void + // CHECK-HEAP:call {{.*}}i8* @llvm.objc.retainBlock(i8* {{%.*}}) [[NUW]] + // CHECK-NOHEAP: call {{.*}}i8* @llvm.objc.retainBlock(i8* {{%.*}}) [[NUW:#[0-9]+]] + // CHECK-NOT: !clang.arc.copy_on_escape +