Re: [PATCH] D15920: [CMake] Add option to switch default C++ stdlib
Hahnfeld added a comment. In http://reviews.llvm.org/D15920#350401, @beanz wrote: > Can you commit the test changes in a separate commit before committing the > other changes? That way if something goes wrong the diff for the meat of the > patch is a small diff. Committed seperately in http://reviews.llvm.org/rL260661, thanks. Repository: rL LLVM http://reviews.llvm.org/D15920 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
Re: [PATCH] D15920: [CMake] Add option to switch default C++ stdlib
This revision was automatically updated to reflect the committed changes. Closed by commit rL260662: [CMake] Add option to switch default C++ stdlib (authored by Hahnfeld). Changed prior to commit: http://reviews.llvm.org/D15920?vs=47441&id=47770#toc Repository: rL LLVM http://reviews.llvm.org/D15920 Files: cfe/trunk/CMakeLists.txt cfe/trunk/include/clang/Config/config.h.cmake cfe/trunk/include/clang/Config/config.h.in cfe/trunk/include/clang/Driver/ToolChain.h cfe/trunk/lib/Driver/ToolChain.cpp cfe/trunk/lib/Driver/ToolChains.cpp cfe/trunk/lib/Driver/ToolChains.h Index: cfe/trunk/include/clang/Config/config.h.in === --- cfe/trunk/include/clang/Config/config.h.in +++ cfe/trunk/include/clang/Config/config.h.in @@ -8,6 +8,9 @@ /* Bug report URL. */ #undef BUG_REPORT_URL +/* Default C++ stdlib to use. */ +#undef CLANG_DEFAULT_CXX_STDLIB + /* Default OpenMP runtime used by -fopenmp. */ #undef CLANG_DEFAULT_OPENMP_RUNTIME Index: cfe/trunk/include/clang/Config/config.h.cmake === --- cfe/trunk/include/clang/Config/config.h.cmake +++ cfe/trunk/include/clang/Config/config.h.cmake @@ -8,6 +8,9 @@ /* Bug report URL. */ #define BUG_REPORT_URL "${BUG_REPORT_URL}" +/* Default C++ stdlib to use. */ +#define CLANG_DEFAULT_CXX_STDLIB "${CLANG_DEFAULT_CXX_STDLIB}" + /* Default OpenMP runtime used by -fopenmp. */ #define CLANG_DEFAULT_OPENMP_RUNTIME "${CLANG_DEFAULT_OPENMP_RUNTIME}" Index: cfe/trunk/include/clang/Driver/ToolChain.h === --- cfe/trunk/include/clang/Driver/ToolChain.h +++ cfe/trunk/include/clang/Driver/ToolChain.h @@ -256,6 +256,10 @@ return ToolChain::RLT_Libgcc; } + virtual CXXStdlibType GetDefaultCXXStdlibType() const { +return ToolChain::CST_Libstdcxx; + } + virtual std::string getCompilerRT(const llvm::opt::ArgList &Args, StringRef Component, bool Shared = false) const; Index: cfe/trunk/CMakeLists.txt === --- cfe/trunk/CMakeLists.txt +++ cfe/trunk/CMakeLists.txt @@ -197,6 +197,15 @@ set(DEFAULT_SYSROOT "" CACHE PATH "Default to all compiler invocations for --sysroot=." ) +set(CLANG_DEFAULT_CXX_STDLIB "" CACHE STRING + "Default C++ stdlib to use (empty for architecture default, \"libstdc++\" or \"libc++\"") +if (NOT(CLANG_DEFAULT_CXX_STDLIB STREQUAL "" OR +CLANG_DEFAULT_CXX_STDLIB STREQUAL "libstdc++" OR +CLANG_DEFAULT_CXX_STDLIB STREQUAL "libc++")) + message(WARNING "Resetting default C++ stdlib to use architecture default") + set(CLANG_DEFAULT_CXX_STDLIB "") +endif() + set(CLANG_DEFAULT_OPENMP_RUNTIME "libomp" CACHE STRING "Default OpenMP runtime used by -fopenmp.") Index: cfe/trunk/lib/Driver/ToolChains.cpp === --- cfe/trunk/lib/Driver/ToolChains.cpp +++ cfe/trunk/lib/Driver/ToolChains.cpp @@ -65,6 +65,16 @@ bool MachO::HasNativeLLVMSupport() const { return true; } +ToolChain::CXXStdlibType Darwin::GetDefaultCXXStdlibType() const { + // Default to use libc++ on OS X 10.9+ and iOS 7+. + if ((isTargetMacOS() && !isMacosxVersionLT(10, 9)) || + (isTargetIOSBased() && !isIPhoneOSVersionLT(7, 0)) || + isTargetWatchOSBased()) +return ToolChain::CST_Libcxx; + + return ToolChain::CST_Libstdcxx; +} + /// Darwin provides an ARC runtime starting in MacOS X 10.7 and iOS 5.0. ObjCRuntime Darwin::getDefaultObjCRuntime(bool isNonFragile) const { if (isTargetWatchOSBased()) @@ -1020,7 +1030,6 @@ const char *BoundArch) const { // First get the generic Apple args, before moving onto Darwin-specific ones. DerivedArgList *DAL = MachO::TranslateArgs(Args, BoundArch); - const OptTable &Opts = getDriver().getOpts(); // If no architecture is bound, none of the translations here are relevant. if (!BoundArch) @@ -1051,14 +1060,6 @@ } } - // Default to use libc++ on OS X 10.9+ and iOS 7+. - if (((isTargetMacOS() && !isMacosxVersionLT(10, 9)) || - (isTargetIOSBased() && !isIPhoneOSVersionLT(7, 0)) || - isTargetWatchOSBased()) && - !Args.getLastArg(options::OPT_stdlib_EQ)) -DAL->AddJoinedArg(nullptr, Opts.getOption(options::OPT_stdlib_EQ), - "libc++"); - // Validate the C++ standard library choice. CXXStdlibType Type = GetCXXStdlibType(*DAL); if (Type == ToolChain::CST_Libcxx) { @@ -3027,16 +3028,7 @@ Tool *Bitrig::buildLinker() const { return new tools::bitrig::Linker(*this); } -ToolChain::CXXStdlibType Bitrig::GetCXXStdlibType(const ArgList &Args) const { - if (Arg *A = Args.getLastArg(options::OPT_stdlib_EQ)) { -StringRef Value = A->getValue(); -if (Value == "libstdc++") - return ToolChain::CS
Re: [PATCH] D15920: [CMake] Add option to switch default C++ stdlib
beanz added a comment. Everything about this looks reasonable to me. Can you commit the test changes in a separate commit before committing the other changes? That way if something goes wrong the diff for the meat of the patch is a small diff. http://reviews.llvm.org/D15920 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
Re: [PATCH] D15920: [CMake] Add option to switch default C++ stdlib
Hahnfeld marked an inline comment as done. Hahnfeld added a comment. In http://reviews.llvm.org/D15920#347352, @beanz wrote: > Is it correct to assume that all the test case changes are needed just to > make the tests pass if you set CLANG_DEFAULT_CXX_STDLIB=libc++? > > [...] Yes, most of the tests check for the correct `libstdc++` include paths which are not met with `libc++`. Comment at: lib/Driver/ToolChain.cpp:549-550 @@ -536,9 +548,4 @@ + ToolChain::CXXStdlibType ToolChain::GetCXXStdlibType(const ArgList &Args) const{ - if (Arg *A = Args.getLastArg(options::OPT_stdlib_EQ)) { -StringRef Value = A->getValue(); -if (Value == "libc++") - return ToolChain::CST_Libcxx; -if (Value == "libstdc++") - return ToolChain::CST_Libstdcxx; -getDriver().Diag(diag::err_drv_invalid_stdlib_name) - << A->getAsString(Args); + ToolChain::CXXStdlibType Type; + bool HasValidType = false; I have moved the behaviour from `Darwin::TranslateArgs` to `Darwin::GetDefaultCXXStdlibType` and added this method for `Bitrig` as well (which was straightforward). `MIPS` only allows `libc++` so there is nothing the user can choose from... I would have also liked to implement this for `FreeBSD` and `NetBSD` but their default library is dependent on the system version. While this wouldn't be a problem and could be implemented in `GetDefaultCXXStdlibType`, this would still be overriden by `CLANG_DEFAULT_CXX_STDLIB` which unfortunately fails the tests in `test/Driver/{freebsd.c,netbsd.c}`. Is it ok to leave this for now? http://reviews.llvm.org/D15920 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
Re: [PATCH] D15920: [CMake] Add option to switch default C++ stdlib
Hahnfeld updated this revision to Diff 47441. Hahnfeld added a comment. Address reviewers' comments: - check for valid `CLANG_DEFAULT_CXX_STDLIB` - generalize for `Darwin` and `Bitrig` by introducing `GetDefaultCXXStdlibType` - fallback to `CLANG_DEFAULT_CXX_STDLIB` if user choice is incorrect http://reviews.llvm.org/D15920 Files: CMakeLists.txt include/clang/Config/config.h.cmake include/clang/Config/config.h.in include/clang/Driver/ToolChain.h lib/Driver/ToolChain.cpp lib/Driver/ToolChains.cpp lib/Driver/ToolChains.h test/Driver/android-standalone.cpp test/Driver/darwin-iphone-defaults.m test/Driver/darwin-objc-gc.m test/Driver/darwin-sanitizer-ld.c test/Driver/gcc-toolchain.cpp test/Driver/linux-header-search.cpp test/Driver/mips-cs.cpp test/Driver/mips-fsf.cpp test/Driver/mips-img.cpp test/Driver/sanitizer-ld.c test/Driver/windows-cross.c unittests/libclang/LibclangTest.cpp Index: unittests/libclang/LibclangTest.cpp === --- unittests/libclang/LibclangTest.cpp +++ unittests/libclang/LibclangTest.cpp @@ -485,7 +485,7 @@ WriteFile(Clang, ""); const char *Argv[] = {Clang.c_str(), "-target", "arm-linux-gnueabi", -"--gcc-toolchain="}; +"-stdlib=libstdc++", "--gcc-toolchain="}; EXPECT_EQ(CXError_Success, clang_parseTranslationUnit2FullArgv(Index, Filename.c_str(), Argv, Index: test/Driver/windows-cross.c === --- test/Driver/windows-cross.c +++ test/Driver/windows-cross.c @@ -1,9 +1,9 @@ -// RUN: %clang -### -target armv7-windows-itanium --sysroot %S/Inputs/Windows/ARM/8.1 -B %S/Inputs/Windows/ARM/8.1/usr/bin -o /dev/null %s 2>&1 \ +// RUN: %clang -### -target armv7-windows-itanium --sysroot %S/Inputs/Windows/ARM/8.1 -B %S/Inputs/Windows/ARM/8.1/usr/bin -stdlib=libstdc++ -o /dev/null %s 2>&1 \ // RUN: | FileCheck %s --check-prefix CHECK-BASIC // CHECK-BASIC: armv7-windows-itanium-ld" "--sysroot={{.*}}/Inputs/Windows/ARM/8.1" "-m" "thumb2pe" "-Bdynamic" "--entry" "mainCRTStartup" "--allow-multiple-definition" "-o" "{{[^"]*}}" "{{.*}}/Inputs/Windows/ARM/8.1/usr/lib/crtbegin.obj" "-L{{.*}}/Inputs/Windows/ARM/8.1/usr/lib" "-L{{.*}}/Inputs/Windows/ARM/8.1/usr/lib/gcc" "{{.*}}.o" "-lmsvcrt" "-lgcc" "--as-needed" "-lgcc_s" "--no-as-needed" -// RUN: %clang -### -target armv7-windows-itanium --sysroot %s/Inputs/Windows/ARM/8.1 -B %S/Inputs/Windows/ARM/8.1/usr/bin -rtlib=compiler-rt -o /dev/null %s 2>&1 \ +// RUN: %clang -### -target armv7-windows-itanium --sysroot %s/Inputs/Windows/ARM/8.1 -B %S/Inputs/Windows/ARM/8.1/usr/bin -rtlib=compiler-rt -stdlib=libstdc++ -o /dev/null %s 2>&1 \ // RUN: | FileCheck %s --check-prefix CHECK-RTLIB // CHECK-RTLIB: armv7-windows-itanium-ld" "--sysroot={{.*}}/Inputs/Windows/ARM/8.1" "-m" "thumb2pe" "-Bdynamic" "--entry" "mainCRTStartup" "--allow-multiple-definition" "-o" "{{[^"]*}}" "{{.*}}/Inputs/Windows/ARM/8.1/usr/lib/crtbegin.obj" "-L{{.*}}/Inputs/Windows/ARM/8.1/usr/lib" "-L{{.*}}/Inputs/Windows/ARM/8.1/usr/lib/gcc" "{{.*}}.o" "-lmsvcrt" "{{.*[\\/]}}clang_rt.builtins-arm.lib" @@ -33,7 +33,7 @@ // CHECK-STANDALONE: armv7-windows-itanium-ld" "--sysroot={{.*}}/Inputs/Windows/ARM/8.1" "-m" "thumb2pe" "-shared" "-Bdynamic" "--enable-auto-image-base" "--entry" "_DllMainCRTStartup" "--allow-multiple-definition" "-o" "shared.dll" "--out-implib" "shared.lib" "{{.*}}.o" -// RUN: %clang -### -target armv7-windows-itanium --sysroot %S/Inputs/Windows/ARM/8.1 -B %/Inputs/Windows/ARM/8.1/usr/bin -shared -o shared.dll -x c++ %s 2>&1 \ +// RUN: %clang -### -target armv7-windows-itanium --sysroot %S/Inputs/Windows/ARM/8.1 -B %/Inputs/Windows/ARM/8.1/usr/bin -stdlib=libstdc++ -shared -o shared.dll -x c++ %s 2>&1 \ // RUN:| FileCheck %s --check-prefix CHECK-LIBSTDCXX // CHECK-LIBSTDCXX: "-internal-isystem" "{{.*}}/usr/include/c++" "-internal-isystem" "{{.*}}/usr/include/c++/armv7--windows-itanium" "-internal-isystem" "{{.*}}/usr/include/c++/backwards" Index: test/Driver/sanitizer-ld.c === --- test/Driver/sanitizer-ld.c +++ test/Driver/sanitizer-ld.c @@ -76,7 +76,7 @@ // CHECK-ASAN-FREEBSD-LDL-NOT: "-ldl" // RUN: %clangxx -no-canonical-prefixes %s -### -o %t.o 2>&1 \ -// RUN: -target i386-unknown-linux -fsanitize=address \ +// RUN: -target i386-unknown-linux -stdlib=libstdc++ -fsanitize=address \ // RUN: -resource-dir=%S/Inputs/empty_resource_dir \ // RUN: --sysroot=%S/Inputs/basic_linux_tree \ // RUN: | FileCheck --check-prefix=CHECK-ASAN-LINUX-CXX %s @@ -93,8 +93,8 @@ // CHECK-ASAN-LINUX-CXX: "-ldl" // RUN: %clang -no-canonical-prefixes %s -### -o /dev/null -fsanitize=address \ -// RUN: -target i386-unknown-linux --sysroot=%S/Inputs/basic_linux_tree \ -// RUN: -lstdc++ -static 2>&1 \ +// RUN: -target i386-unknown-linux -stdlib=
Re: [PATCH] D15920: [CMake] Add option to switch default C++ stdlib
rsmith added a subscriber: rsmith. rsmith added a comment. The direction here generally seems fine to me. Comment at: lib/Driver/ToolChain.cpp:538 @@ -536,7 +537,3 @@ ToolChain::CXXStdlibType ToolChain::GetCXXStdlibType(const ArgList &Args) const{ - if (Arg *A = Args.getLastArg(options::OPT_stdlib_EQ)) { -StringRef Value = A->getValue(); -if (Value == "libc++") - return ToolChain::CST_Libcxx; -if (Value == "libstdc++") - return ToolChain::CST_Libstdcxx; + StringRef CXXStdlibName(CLANG_DEFAULT_CXX_STDLIB); + On Darwin, this default will be clobbered by the code in `Darwin::TranslateArgs` in ToolChains.cpp. On MIPS, this override will take no effect because `GetCXXStdlibType` is overridden. Perhaps we could instead default `CLANG_DEFAULT_CXX_STDLIB` to `""`, and let the tool chain pick the default if it's neither specified at configure time nor on the command line. http://reviews.llvm.org/D15920 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
Re: [PATCH] D15920: [CMake] Add option to switch default C++ stdlib
beanz added a comment. Is it correct to assume that all the test case changes are needed just to make the tests pass if you set CLANG_DEFAULT_CXX_STDLIB=libc++? I'm not really comfortable approving this patch because I've made all of one or two changes ever to the driver, but I can try to pester someone else to take a gander. It doesn't look particularly invasive to me. One comment inline. Comment at: lib/Driver/ToolChain.cpp:552 @@ -546,3 +551,3 @@ return ToolChain::CST_Libstdcxx; } There are two cases where this line would get hit: (1) If the stdlib arg is an invalid library, it falls through here after printing the diagnostic (2) if CLANG_DEFAULT_CXX_STDLIB is itself an invalid library value Can you add a configure-time or compile time check to catch case 2? http://reviews.llvm.org/D15920 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
Re: [PATCH] D15920: [CMake] Add option to switch default C++ stdlib
Hahnfeld added a comment. ping http://reviews.llvm.org/D15920 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
Re: [PATCH] D15920: [CMake] Add option to switch default C++ stdlib
Hahnfeld added a reviewer: mcrosier. Hahnfeld added a comment. Any comments on this change? http://reviews.llvm.org/D15920 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D15920: [CMake] Add option to switch default C++ stdlib
Hahnfeld created this revision. Hahnfeld added reviewers: chandlerc, mclow.lists, beanz. Hahnfeld added a subscriber: cfe-commits. Herald added subscribers: srhines, danalbert, tberghammer. With this option one can set the default library to use if no `-stdlib=` is provided on compiler invocation (currently hard coded `libstdc++` which remains default) Also add explicit option `-stdlib=libstdc++` to tests that require it and would fail when you choose `libc++`. I haven't touched autotools which should be removed soon anyway. I'm fine if either someone else looks into it or if the patch only gets accepted afterwards. http://reviews.llvm.org/D15920 Files: CMakeLists.txt include/clang/Config/config.h.cmake include/clang/Config/config.h.in lib/Driver/ToolChain.cpp test/Driver/android-standalone.cpp test/Driver/darwin-iphone-defaults.m test/Driver/darwin-objc-gc.m test/Driver/darwin-sanitizer-ld.c test/Driver/gcc-toolchain.cpp test/Driver/linux-header-search.cpp test/Driver/mips-cs.cpp test/Driver/mips-fsf.cpp test/Driver/mips-img.cpp test/Driver/sanitizer-ld.c test/Driver/windows-cross.c unittests/libclang/LibclangTest.cpp Index: unittests/libclang/LibclangTest.cpp === --- unittests/libclang/LibclangTest.cpp +++ unittests/libclang/LibclangTest.cpp @@ -485,7 +485,7 @@ WriteFile(Clang, ""); const char *Argv[] = {Clang.c_str(), "-target", "arm-linux-gnueabi", -"--gcc-toolchain="}; +"-stdlib=libstdc++", "--gcc-toolchain="}; EXPECT_EQ(CXError_Success, clang_parseTranslationUnit2FullArgv(Index, Filename.c_str(), Argv, Index: test/Driver/windows-cross.c === --- test/Driver/windows-cross.c +++ test/Driver/windows-cross.c @@ -1,9 +1,9 @@ -// RUN: %clang -### -target armv7-windows-itanium --sysroot %S/Inputs/Windows/ARM/8.1 -B %S/Inputs/Windows/ARM/8.1/usr/bin -o /dev/null %s 2>&1 \ +// RUN: %clang -### -target armv7-windows-itanium --sysroot %S/Inputs/Windows/ARM/8.1 -B %S/Inputs/Windows/ARM/8.1/usr/bin -stdlib=libstdc++ -o /dev/null %s 2>&1 \ // RUN: | FileCheck %s --check-prefix CHECK-BASIC // CHECK-BASIC: armv7-windows-itanium-ld" "--sysroot={{.*}}/Inputs/Windows/ARM/8.1" "-m" "thumb2pe" "-Bdynamic" "--entry" "mainCRTStartup" "--allow-multiple-definition" "-o" "{{[^"]*}}" "{{.*}}/Inputs/Windows/ARM/8.1/usr/lib/crtbegin.obj" "-L{{.*}}/Inputs/Windows/ARM/8.1/usr/lib" "-L{{.*}}/Inputs/Windows/ARM/8.1/usr/lib/gcc" "{{.*}}.o" "-lmsvcrt" "-lgcc" "--as-needed" "-lgcc_s" "--no-as-needed" -// RUN: %clang -### -target armv7-windows-itanium --sysroot %s/Inputs/Windows/ARM/8.1 -B %S/Inputs/Windows/ARM/8.1/usr/bin -rtlib=compiler-rt -o /dev/null %s 2>&1 \ +// RUN: %clang -### -target armv7-windows-itanium --sysroot %s/Inputs/Windows/ARM/8.1 -B %S/Inputs/Windows/ARM/8.1/usr/bin -rtlib=compiler-rt -stdlib=libstdc++ -o /dev/null %s 2>&1 \ // RUN: | FileCheck %s --check-prefix CHECK-RTLIB // CHECK-RTLIB: armv7-windows-itanium-ld" "--sysroot={{.*}}/Inputs/Windows/ARM/8.1" "-m" "thumb2pe" "-Bdynamic" "--entry" "mainCRTStartup" "--allow-multiple-definition" "-o" "{{[^"]*}}" "{{.*}}/Inputs/Windows/ARM/8.1/usr/lib/crtbegin.obj" "-L{{.*}}/Inputs/Windows/ARM/8.1/usr/lib" "-L{{.*}}/Inputs/Windows/ARM/8.1/usr/lib/gcc" "{{.*}}.o" "-lmsvcrt" "{{.*[\\/]}}clang_rt.builtins-arm.lib" @@ -33,7 +33,7 @@ // CHECK-STANDALONE: armv7-windows-itanium-ld" "--sysroot={{.*}}/Inputs/Windows/ARM/8.1" "-m" "thumb2pe" "-shared" "-Bdynamic" "--enable-auto-image-base" "--entry" "_DllMainCRTStartup" "--allow-multiple-definition" "-o" "shared.dll" "--out-implib" "shared.lib" "{{.*}}.o" -// RUN: %clang -### -target armv7-windows-itanium --sysroot %S/Inputs/Windows/ARM/8.1 -B %/Inputs/Windows/ARM/8.1/usr/bin -shared -o shared.dll -x c++ %s 2>&1 \ +// RUN: %clang -### -target armv7-windows-itanium --sysroot %S/Inputs/Windows/ARM/8.1 -B %/Inputs/Windows/ARM/8.1/usr/bin -stdlib=libstdc++ -shared -o shared.dll -x c++ %s 2>&1 \ // RUN:| FileCheck %s --check-prefix CHECK-LIBSTDCXX // CHECK-LIBSTDCXX: "-internal-isystem" "{{.*}}/usr/include/c++" "-internal-isystem" "{{.*}}/usr/include/c++/armv7--windows-itanium" "-internal-isystem" "{{.*}}/usr/include/c++/backwards" Index: test/Driver/sanitizer-ld.c === --- test/Driver/sanitizer-ld.c +++ test/Driver/sanitizer-ld.c @@ -76,7 +76,7 @@ // CHECK-ASAN-FREEBSD-LDL-NOT: "-ldl" // RUN: %clangxx -no-canonical-prefixes %s -### -o %t.o 2>&1 \ -// RUN: -target i386-unknown-linux -fsanitize=address \ +// RUN: -target i386-unknown-linux -stdlib=libstdc++ -fsanitize=address \ // RUN: -resource-dir=%S/Inputs/empty_resource_dir \ // RUN: --sysroot=%S/Inputs/basic_linux_tree \ // RUN: | FileCheck --check-prefix=CHECK-ASAN-LINUX-CXX %s @@ -93,8 +93,8 @@ // CHECK-ASAN-LINUX-CXX: "-ldl" /