[PATCH] D57910: [ASTImporter] Find previous friend function template
a_sidorin accepted this revision. a_sidorin added a comment. Hi Gabor, This patch LGTM with a minor nit. Comment at: unittests/AST/ASTImporterTest.cpp:5109 + // Currently chains of FunctionTemplateDecls are not implemented + //EXPECT_EQ(Imported->getPreviousDecl(), Friend); + EXPECT_EQ(Imported, Friend); This deserves a FIXME, I think. Repository: rC Clang CHANGES SINCE LAST ACTION https://reviews.llvm.org/D57910/new/ https://reviews.llvm.org/D57910 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D57236: [ASTImporter] Unify redecl chain tests as type parameterized tests
a_sidorin accepted this revision. a_sidorin added a comment. This revision is now accepted and ready to land. Thanks for the changes! The patch looks completely fine to me now. Repository: rC Clang CHANGES SINCE LAST ACTION https://reviews.llvm.org/D57236/new/ https://reviews.llvm.org/D57236 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D58292: Add support for importing ChooseExpr AST nodes.
a_sidorin requested changes to this revision. a_sidorin added a comment. This revision now requires changes to proceed. Hi Tom, The change looks reasonable but the tests need some improvements. Comment at: test/ASTMerge/choose-expr/Inputs/choose1.c:1 +#define abs_int(x) __builtin_choose_expr( \ +__builtin_types_compatible_p(__typeof(x), unsigned int), \ This test duplicates unit test. I think we can keep unit test only and remove this one. The other option (I like it even more) is to turn this test into constexpr check and verify that this code _behaves_ as expected, not only that its AST structure is fine. You can find some examples in ASTMerge tests - for expr import, for example. Comment at: unittests/AST/ASTImporterTest.cpp:1101 + Decl *FromTU = getTuDecl( + R"( + #define abs_int(x) __builtin_choose_expr(\ I don't think we really need such macros in unit test just to check that the expr is imported correctly - a single valid __builtin_choose_expr is enough. It can even be checked with a simple `testImport()` call. Comment at: unittests/ASTMatchers/ASTMatchersNodeTest.cpp:765 + EXPECT_TRUE(matchesC(R"( + void f() { +int x = -10; Same here - I think the tests should be concise if it is possible. Repository: rC Clang CHANGES SINCE LAST ACTION https://reviews.llvm.org/D58292/new/ https://reviews.llvm.org/D58292 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
r354201 - Move multiline raw string literal out of macro. NFC
Author: dmgreen Date: Sat Feb 16 03:19:04 2019 New Revision: 354201 URL: http://llvm.org/viewvc/llvm-project?rev=354201&view=rev Log: Move multiline raw string literal out of macro. NFC Certain combinations of gcc and ccache fail when the raw string literal is preprocessed. This just moves the string out as is done elsewhere in the same file. Modified: cfe/trunk/unittests/ASTMatchers/ASTMatchersTraversalTest.cpp Modified: cfe/trunk/unittests/ASTMatchers/ASTMatchersTraversalTest.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/unittests/ASTMatchers/ASTMatchersTraversalTest.cpp?rev=354201&r1=354200&r2=354201&view=diff == --- cfe/trunk/unittests/ASTMatchers/ASTMatchersTraversalTest.cpp (original) +++ cfe/trunk/unittests/ASTMatchers/ASTMatchersTraversalTest.cpp Sat Feb 16 03:19:04 2019 @@ -491,16 +491,15 @@ TEST(MatcherCXXMemberCallExpr, On) { EXPECT_TRUE(matches(Snippet2, MatchesX)); // Parens are ignored. + auto Snippet3 = R"cc( +struct Y { + void m(); +}; +Y g(); +void z(Y y) { (g()).m(); } + )cc"; auto MatchesCall = cxxMemberCallExpr(on(callExpr())); - EXPECT_TRUE(matches( - R"cc( -struct Y { - void m(); -}; -Y g(); -void z(Y y) { (g()).m(); } - )cc", - MatchesCall)); + EXPECT_TRUE(matches(Snippet3, MatchesCall)); } TEST(MatcherCXXMemberCallExpr, OnImplicitObjectArgument) { @@ -527,16 +526,15 @@ TEST(MatcherCXXMemberCallExpr, OnImplici EXPECT_TRUE(notMatches(Snippet2, MatchesX)); // Parens are not ignored. + auto Snippet3 = R"cc( +struct Y { + void m(); +}; +Y g(); +void z(Y y) { (g()).m(); } + )cc"; auto MatchesCall = cxxMemberCallExpr(onImplicitObjectArgument(callExpr())); - EXPECT_TRUE(notMatches( - R"cc( -struct Y { - void m(); -}; -Y g(); -void z(Y y) { (g()).m(); } - )cc", - MatchesCall)); + EXPECT_TRUE(notMatches(Snippet3, MatchesCall)); } TEST(Matcher, HasObjectExpr) { ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D58322: remove microsoft intrinsics test that passes on osx but fails on linux
davidb created this revision. Herald added subscribers: cfe-commits, jdoerfert. Herald added a project: clang. davidb abandoned this revision. Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D58322 Files: clang/test/CodeGen/ms-x86-intrinsics.c Index: clang/test/CodeGen/ms-x86-intrinsics.c === --- clang/test/CodeGen/ms-x86-intrinsics.c +++ /dev/null @@ -1,172 +0,0 @@ -// XFAIL: colossus -// RUN: %clang_cc1 -ffreestanding -fms-extensions -fms-compatibility -fms-compatibility-version=17.00 \ -// RUN: -triple i686--windows -Oz -emit-llvm %s -o - \ -// RUN: | FileCheck %s -check-prefix=CHECK -check-prefix=CHECK-I386 -// RUN: %clang_cc1 -ffreestanding -fms-extensions -fms-compatibility -fms-compatibility-version=17.00 \ -// RUN: -triple x86_64--windows -Oz -emit-llvm %s -o - \ -// RUN: | FileCheck %s --check-prefix=CHECK --check-prefix=CHECK-X64 - -#if defined(__i386__) -char test__readfsbyte(unsigned long Offset) { - return __readfsbyte(++Offset); -} -// CHECK-I386-LABEL: define dso_local signext i8 @test__readfsbyte(i32 %Offset) -// CHECK-I386: %inc = add i32 %Offset, 1 -// CHECK-I386: [[PTR:%[0-9]+]] = inttoptr i32 %inc to i8 addrspace(257)* -// CHECK-I386: [[VALUE:%[0-9]+]] = load volatile i8, i8 addrspace(257)* [[PTR]], align 1 -// CHECK-I386: ret i8 [[VALUE:%[0-9]+]] - -short test__readfsword(unsigned long Offset) { - return __readfsword(++Offset); -} -// CHECK-I386-LABEL: define dso_local signext i16 @test__readfsword(i32 %Offset) -// CHECK-I386: %inc = add i32 %Offset, 1 -// CHECK-I386: [[PTR:%[0-9]+]] = inttoptr i32 %inc to i16 addrspace(257)* -// CHECK-I386: [[VALUE:%[0-9]+]] = load volatile i16, i16 addrspace(257)* [[PTR]], align 2 -// CHECK-I386: ret i16 [[VALUE:%[0-9]+]] - -long test__readfsdword(unsigned long Offset) { - return __readfsdword(++Offset); -} -// CHECK-I386-LABEL: define dso_local i32 @test__readfsdword(i32 %Offset) -// CHECK-I386: %inc = add i32 %Offset, 1 -// CHECK-I386: [[PTR:%[0-9]+]] = inttoptr i32 %inc to i32 addrspace(257)* -// CHECK-I386: [[VALUE:%[0-9]+]] = load volatile i32, i32 addrspace(257)* [[PTR]], align 4 -// CHECK-I386: ret i32 [[VALUE:%[0-9]+]] - -long long test__readfsqword(unsigned long Offset) { - return __readfsqword(++Offset); -} -// CHECK-I386-LABEL: define dso_local i64 @test__readfsqword(i32 %Offset) -// CHECK-I386: %inc = add i32 %Offset, 1 -// CHECK-I386: [[PTR:%[0-9]+]] = inttoptr i32 %inc to i64 addrspace(257)* -// CHECK-I386: [[VALUE:%[0-9]+]] = load volatile i64, i64 addrspace(257)* [[PTR]], align 8 -// CHECK-I386: ret i64 [[VALUE:%[0-9]+]] -#endif - -__int64 test__emul(int a, int b) { - return __emul(a, b); -} -// CHECK-LABEL: define dso_local i64 @test__emul(i32 %a, i32 %b) -// CHECK: [[X:%[0-9]+]] = sext i32 %a to i64 -// CHECK: [[Y:%[0-9]+]] = sext i32 %b to i64 -// CHECK: [[RES:%[0-9]+]] = mul nsw i64 [[Y]], [[X]] -// CHECK: ret i64 [[RES]] - -unsigned __int64 test__emulu(unsigned int a, unsigned int b) { - return __emulu(a, b); -} -// CHECK-LABEL: define dso_local i64 @test__emulu(i32 %a, i32 %b) -// CHECK: [[X:%[0-9]+]] = zext i32 %a to i64 -// CHECK: [[Y:%[0-9]+]] = zext i32 %b to i64 -// CHECK: [[RES:%[0-9]+]] = mul nuw i64 [[Y]], [[X]] -// CHECK: ret i64 [[RES]] - -#if defined(__x86_64__) - -char test__readgsbyte(unsigned long Offset) { - return __readgsbyte(++Offset); -} -// CHECK-X64-LABEL: define dso_local i8 @test__readgsbyte(i32 %Offset) -// CHECK-X64: %inc = add i32 %Offset, 1 -// CHECK-X64: [[ZEXT:%[0-9]+]] = zext i32 %inc to i64 -// CHECK-X64: [[PTR:%[0-9]+]] = inttoptr i64 [[ZEXT]] to i8 addrspace(256)* -// CHECK-X64: [[VALUE:%[0-9]+]] = load volatile i8, i8 addrspace(256)* [[PTR]], align 1 -// CHECK-X64: ret i8 [[VALUE:%[0-9]+]] - -short test__readgsword(unsigned long Offset) { - return __readgsword(++Offset); -} -// CHECK-X64-LABEL: define dso_local i16 @test__readgsword(i32 %Offset) -// CHECK-X64: %inc = add i32 %Offset, 1 -// CHECK-X64: [[ZEXT:%[0-9]+]] = zext i32 %inc to i64 -// CHECK-X64: [[PTR:%[0-9]+]] = inttoptr i64 [[ZEXT]] to i16 addrspace(256)* -// CHECK-X64: [[VALUE:%[0-9]+]] = load volatile i16, i16 addrspace(256)* [[PTR]], align 2 -// CHECK-X64: ret i16 [[VALUE:%[0-9]+]] - -long test__readgsdword(unsigned long Offset) { - return __readgsdword(++Offset); -} -// CHECK-X64-LABEL: define dso_local i32 @test__readgsdword(i32 %Offset) -// CHECK-X64: %inc = add i32 %Offset, 1 -// CHECK-X64: [[ZEXT:%[0-9]+]] = zext i32 %inc to i64 -// CHECK-X64: [[PTR:%[0-9]+]] = inttoptr i64 [[ZEXT]] to i32 addrspace(256)* -// CHECK-X64: [[VALUE:%[0-9]+]] = load volatile i32, i32 addrspace(256)* [[PTR]], align 4 -// CHECK-X64: ret i32 [[VALUE:%[0-9]+]] - -long long test__readgsqword(unsigned long Offset) { - return __readgsqword(++Offset); -} -// CHECK-X64-LABEL: define dso_local i64 @test__readgsqword(i32 %Offset) -// CHECK-X64: %inc = add i32 %Offset, 1 -
Re: [PATCH] D56850: [ASTMatchers][NFC] Add tests for assorted `CXXMemberCallExpr` matchers.
FWIW, this was fixed by SVN r354201. Thanks David! // Martin On Sat, 16 Feb 2019, Martin Storsjö via cfe-commits wrote: It broke on the first commit and is broken even after all of them. // Martin On Fri, 15 Feb 2019, Yitzhak Mandelbaum wrote: Was it the complete diff or one of the intermediate commits? I accidentally committed the diff as a series of commits rather than one (squashed) commit. On Fri, Feb 15, 2019 at 4:51 PM Martin Storsjö via Phabricator wrote: mstorsjo added a comment. This broke compilation with GCC 5.4 on Ubuntu 16.04: ../tools/clang/unittests/ASTMatchers/ASTMatchersTraversalTest.cpp:474:243: warning: missing terminating " character ../tools/clang/unittests/ASTMatchers/ASTMatchersTraversalTest.cpp:474:3: error: missing terminating " character EXPECT_TRUE(matches( ^ ../tools/clang/unittests/ASTMatchers/ASTMatchersTraversalTest.cpp:480:7: error: stray ‘\’ in program void z(X x) { x.m(); } ^ Repository: rL LLVM CHANGES SINCE LAST ACTION https://reviews.llvm.org/D56850/new/ https://reviews.llvm.org/D56850 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D58137: [clang-tidy] Add the abseil-time-subtraction check
JonasToth added inline comments. Comment at: clang-tidy/abseil/DurationRewriter.cpp:92 + DurationScale Scale, const Expr &Node) { + const llvm::StringRef &InverseFunction = getTimeInverseForScale(Scale); + if (const auto *MaybeCallArg = selectFirst( nit: stringref should be used as value all the time (as its a pointer itself). Comment at: clang-tidy/abseil/TimeSubtractionCheck.cpp:65 +llvm::Optional Scale = getScaleForTimeInverse(TimeInverse); +if (!Scale) + continue; wouldn't that be rather a bug condition? I think `assert` is better in that case Comment at: clang-tidy/abseil/TimeSubtractionCheck.cpp:72 + +// Match the cases where we know that the result is a Duration and the first +// argument is a Time. Just knowing the type of the first operand is not please highlight the types with '' Comment at: clang-tidy/abseil/TimeSubtractionCheck.cpp:97 +void TimeSubtractionCheck::check(const MatchFinder::MatchResult &Result) { + const auto *BinOp = Result.Nodes.getNodeAs("binop"); + std::string inverse_name = Could you please split this function up into smaller ones. There are three or four distinct cases that are easier to comprehend in isolation. Comment at: clang-tidy/abseil/TimeSubtractionCheck.cpp:98 + const auto *BinOp = Result.Nodes.getNodeAs("binop"); + std::string inverse_name = + Result.Nodes.getNodeAs("func_decl")->getNameAsString(); nit: `InverseName` Comment at: clang-tidy/abseil/TimeSubtractionCheck.cpp:108 +// We're working with the first case of matcher, and need to replace the +// entire Duration factory call. (Which also means being careful about +// our order-of-operations and optionally putting in some parenthesis. please elimate the multiple blanks Comment at: clang-tidy/abseil/TimeSubtractionCheck.h:19 +/// Finds and fixes `absl::Time` subtraction expressions to do subtraction +/// in the Time domain instead of the numeric domain. +/// nit: 'Time' domain Comment at: test/clang-tidy/abseil-time-subtraction.cpp:12 + + d = absl::Hours(absl::ToUnixHours(t) - x); + // CHECK-MESSAGES: [[@LINE-1]]:7: warning: perform subtraction in the time domain [abseil-time-subtraction] please add tests where `x` itself is a calculation with different precedence of its operators (multiplication, addition) to ensure these cases are transformed properly as well. Comment at: test/clang-tidy/abseil-time-subtraction.cpp:78 + // CHECK-FIXES: return absl::FromUnixSeconds(x) - t; +} please add tests for templates and macros. CHANGES SINCE LAST ACTION https://reviews.llvm.org/D58137/new/ https://reviews.llvm.org/D58137 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D58137: [clang-tidy] Add the abseil-time-subtraction check
Eugene.Zelenko added inline comments. Comment at: clang-tidy/abseil/TimeSubtractionCheck.cpp:72 + +// Match the cases where we know that the result is a Duration and the first +// argument is a Time. Just knowing the type of the first operand is not JonasToth wrote: > please highlight the types with '' But do we do this in comments? Isn't it's Sphinx syntax? CHANGES SINCE LAST ACTION https://reviews.llvm.org/D58137/new/ https://reviews.llvm.org/D58137 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D28462: clang-format: Add new style option AlignConsecutiveMacros
jacob-keller added a comment. Is there anything holding this up that could use help? CHANGES SINCE LAST ACTION https://reviews.llvm.org/D28462/new/ https://reviews.llvm.org/D28462 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D58324: Enable esan for the cache frag support
devnexen created this revision. devnexen added a reviewer: bsdjhb. devnexen created this object with visibility "All Users". Herald added subscribers: cfe-commits, emaste. Herald added a project: clang. Repository: rC Clang https://reviews.llvm.org/D58324 Files: lib/Driver/ToolChains/FreeBSD.cpp Index: lib/Driver/ToolChains/FreeBSD.cpp === --- lib/Driver/ToolChains/FreeBSD.cpp +++ lib/Driver/ToolChains/FreeBSD.cpp @@ -421,7 +421,9 @@ Res |= SanitizerKind::Fuzzer; Res |= SanitizerKind::FuzzerNoLink; } - if (IsX86_64) + if (IsX86_64) { Res |= SanitizerKind::Memory; +Res |= SanitizerKind::Efficiency; + } return Res; } Index: lib/Driver/ToolChains/FreeBSD.cpp === --- lib/Driver/ToolChains/FreeBSD.cpp +++ lib/Driver/ToolChains/FreeBSD.cpp @@ -421,7 +421,9 @@ Res |= SanitizerKind::Fuzzer; Res |= SanitizerKind::FuzzerNoLink; } - if (IsX86_64) + if (IsX86_64) { Res |= SanitizerKind::Memory; +Res |= SanitizerKind::Efficiency; + } return Res; } ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D58137: [clang-tidy] Add the abseil-time-subtraction check
JonasToth added inline comments. Comment at: clang-tidy/abseil/TimeSubtractionCheck.cpp:72 + +// Match the cases where we know that the result is a Duration and the first +// argument is a Time. Just knowing the type of the first operand is not Eugene.Zelenko wrote: > JonasToth wrote: > > please highlight the types with '' > But do we do this in comments? Isn't it's Sphinx syntax? We don't do it consistently, but its common to highlight direct usage of types in comments as well. Sphinx uses backticks, but in comments any form of ticks are ok. CHANGES SINCE LAST ACTION https://reviews.llvm.org/D58137/new/ https://reviews.llvm.org/D58137 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D54176: [PGO] clang part of change for context-sensitive PGO.
tejohnson added a comment. Herald added a subscriber: jdoerfert. LGTM except for place noted below where I disagree with a change made earlier. Will let @davidxl chime in if he disagrees with me or has any other comments. Comment at: lib/CodeGen/BackendUtil.cpp:967 + if (CodeGenOpts.hasProfileCSIRInstr()) { +assert(!CodeGenOpts.hasProfileCSIRUse() && + "Cannot have both CSProfileUse and CSProfileGen at the same time"); davidxl wrote: > should emit error message instead. I disagree with David's comment here. All the error checking should (and is) being done in Clang.cpp where the options are being processed. These and the places above for the old PM should just be asserts. CHANGES SINCE LAST ACTION https://reviews.llvm.org/D54176/new/ https://reviews.llvm.org/D54176 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D58325: [Driver][Fuchsia] Support -nolibc flag
phosek created this revision. phosek added reviewers: jakehehrlich, juliehockett, mcgrathr. Herald added a project: clang. Herald added a subscriber: cfe-commits. This can be used to disable libc linking. This flag is supported by GCC since version 8.x as well as some Clang target toolchains. Repository: rC Clang https://reviews.llvm.org/D58325 Files: clang/lib/Driver/ToolChains/Fuchsia.cpp Index: clang/lib/Driver/ToolChains/Fuchsia.cpp === --- clang/lib/Driver/ToolChains/Fuchsia.cpp +++ clang/lib/Driver/ToolChains/Fuchsia.cpp @@ -148,7 +148,8 @@ if (Args.hasArg(options::OPT_fsplit_stack)) CmdArgs.push_back("--wrap=pthread_create"); -CmdArgs.push_back("-lc"); +if (!Args.hasArg(options::OPT_nolibc)) + CmdArgs.push_back("-lc"); } C.addCommand(llvm::make_unique(JA, *this, Exec, CmdArgs, Inputs)); Index: clang/lib/Driver/ToolChains/Fuchsia.cpp === --- clang/lib/Driver/ToolChains/Fuchsia.cpp +++ clang/lib/Driver/ToolChains/Fuchsia.cpp @@ -148,7 +148,8 @@ if (Args.hasArg(options::OPT_fsplit_stack)) CmdArgs.push_back("--wrap=pthread_create"); -CmdArgs.push_back("-lc"); +if (!Args.hasArg(options::OPT_nolibc)) + CmdArgs.push_back("-lc"); } C.addCommand(llvm::make_unique(JA, *this, Exec, CmdArgs, Inputs)); ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D58325: [Driver][Fuchsia] Support -nolibc flag
mcgrathr accepted this revision. mcgrathr added a comment. This revision is now accepted and ready to land. This is only on GCC trunk (i.e. 9), not in 8.2 or even the current gcc-8 branch. So clarify the log entry. We don't know if 8.x,x>2 will add it or only gcc 9. Repository: rC Clang CHANGES SINCE LAST ACTION https://reviews.llvm.org/D58325/new/ https://reviews.llvm.org/D58325 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D58325: [Driver][Fuchsia] Support -nolibc flag
phosek updated this revision to Diff 187149. phosek edited the summary of this revision. Repository: rC Clang CHANGES SINCE LAST ACTION https://reviews.llvm.org/D58325/new/ https://reviews.llvm.org/D58325 Files: clang/lib/Driver/ToolChains/Fuchsia.cpp clang/test/Driver/fuchsia.c clang/test/Driver/fuchsia.cpp Index: clang/test/Driver/fuchsia.cpp === --- clang/test/Driver/fuchsia.cpp +++ clang/test/Driver/fuchsia.cpp @@ -43,3 +43,8 @@ // CHECK-STATIC: "-lm" // CHECK-STATIC: "--pop-state" // CHECK-STATIC: "-lc" + +// RUN: %clang %s -### --target=x86_64-fuchsia -nostdlib++ -fuse-ld=lld 2>&1 \ +// RUN: | FileCheck %s -check-prefix=CHECK-NOSTDLIBXX +// CHECK-NOSTDLIBXX-NOT: "-lc++" +// CHECK-NOSTDLIBXX: "-lc" Index: clang/test/Driver/fuchsia.c === --- clang/test/Driver/fuchsia.c +++ clang/test/Driver/fuchsia.c @@ -53,6 +53,27 @@ // CHECK-RELOCATABLE-NOT: "--build-id" // CHECK-RELOCATABLE: "-r" +// RUN: %clang %s -### --target=x86_64-fuchsia -nodefaultlibs -fuse-ld=lld 2>&1 \ +// RUN: -resource-dir=%S/Inputs/resource_dir_with_per_target_subdir \ +// RUN: | FileCheck %s -check-prefix=CHECK-NODEFAULTLIBS +// CHECK-NODEFAULTLIBS: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]" +// CHECK-NODEFAULTLIBS-NOT: "[[RESOURCE_DIR]]{{/|}}x86_64-fuchsia{{/|}}lib{{/|}}libclang_rt.builtins.a" +// CHECK-NODEFAULTLIBS-NOT: "-lc" + +// RUN: %clang %s -### --target=x86_64-fuchsia -nostdlib -fuse-ld=lld 2>&1 \ +// RUN: -resource-dir=%S/Inputs/resource_dir_with_per_target_subdir \ +// RUN: | FileCheck %s -check-prefix=CHECK-NOSTDLIB +// CHECK-NOSTDLIB: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]" +// CHECK-NOSTDLIB-NOT: "[[RESOURCE_DIR]]{{/|}}x86_64-fuchsia{{/|}}lib{{/|}}libclang_rt.builtins.a" +// CHECK-NOSTDLIB-NOT: "-lc" + +// RUN: %clang %s -### --target=x86_64-fuchsia -nolibc -fuse-ld=lld 2>&1 \ +// RUN: -resource-dir=%S/Inputs/resource_dir_with_per_target_subdir \ +// RUN: | FileCheck %s -check-prefix=CHECK-NOLIBC +// CHECK-NOLIBC: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]" +// CHECK-NOLIBC: "[[RESOURCE_DIR]]{{/|}}x86_64-fuchsia{{/|}}lib{{/|}}libclang_rt.builtins.a" +// CHECK-NOLIBC-NOT: "-lc" + // RUN: %clang %s -### --target=x86_64-fuchsia \ // RUN: -fsanitize=safe-stack 2>&1 \ // RUN: -resource-dir=%S/Inputs/resource_dir_with_per_target_subdir \ Index: clang/lib/Driver/ToolChains/Fuchsia.cpp === --- clang/lib/Driver/ToolChains/Fuchsia.cpp +++ clang/lib/Driver/ToolChains/Fuchsia.cpp @@ -148,7 +148,8 @@ if (Args.hasArg(options::OPT_fsplit_stack)) CmdArgs.push_back("--wrap=pthread_create"); -CmdArgs.push_back("-lc"); +if (!Args.hasArg(options::OPT_nolibc)) + CmdArgs.push_back("-lc"); } C.addCommand(llvm::make_unique(JA, *this, Exec, CmdArgs, Inputs)); Index: clang/test/Driver/fuchsia.cpp === --- clang/test/Driver/fuchsia.cpp +++ clang/test/Driver/fuchsia.cpp @@ -43,3 +43,8 @@ // CHECK-STATIC: "-lm" // CHECK-STATIC: "--pop-state" // CHECK-STATIC: "-lc" + +// RUN: %clang %s -### --target=x86_64-fuchsia -nostdlib++ -fuse-ld=lld 2>&1 \ +// RUN: | FileCheck %s -check-prefix=CHECK-NOSTDLIBXX +// CHECK-NOSTDLIBXX-NOT: "-lc++" +// CHECK-NOSTDLIBXX: "-lc" Index: clang/test/Driver/fuchsia.c === --- clang/test/Driver/fuchsia.c +++ clang/test/Driver/fuchsia.c @@ -53,6 +53,27 @@ // CHECK-RELOCATABLE-NOT: "--build-id" // CHECK-RELOCATABLE: "-r" +// RUN: %clang %s -### --target=x86_64-fuchsia -nodefaultlibs -fuse-ld=lld 2>&1 \ +// RUN: -resource-dir=%S/Inputs/resource_dir_with_per_target_subdir \ +// RUN: | FileCheck %s -check-prefix=CHECK-NODEFAULTLIBS +// CHECK-NODEFAULTLIBS: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]" +// CHECK-NODEFAULTLIBS-NOT: "[[RESOURCE_DIR]]{{/|}}x86_64-fuchsia{{/|}}lib{{/|}}libclang_rt.builtins.a" +// CHECK-NODEFAULTLIBS-NOT: "-lc" + +// RUN: %clang %s -### --target=x86_64-fuchsia -nostdlib -fuse-ld=lld 2>&1 \ +// RUN: -resource-dir=%S/Inputs/resource_dir_with_per_target_subdir \ +// RUN: | FileCheck %s -check-prefix=CHECK-NOSTDLIB +// CHECK-NOSTDLIB: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]" +// CHECK-NOSTDLIB-NOT: "[[RESOURCE_DIR]]{{/|}}x86_64-fuchsia{{/|}}lib{{/|}}libclang_rt.builtins.a" +// CHECK-NOSTDLIB-NOT: "-lc" + +// RUN: %clang %s -### --target=x86_64-fuchsia -nolibc -fuse-ld=lld 2>&1 \ +// RUN: -resource-dir=%S/Inputs/resource_dir_with_per_target_subdir \ +// RUN: | FileCheck %s -check-prefix=CHECK-NOLIBC +// CHECK-NOLIBC: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]" +// CHECK-NOLIBC: "[[RESOURCE_DIR]]{{/|}}x86_64-fuchsia{{/|}}lib{{/|}}libclang_rt.builtins.a" +// CHECK-NOLIBC-NOT: "-lc" + // RUN: %clang %s
r354208 - [Driver][Fuchsia] Support -nolibc flag
Author: phosek Date: Sat Feb 16 17:02:40 2019 New Revision: 354208 URL: http://llvm.org/viewvc/llvm-project?rev=354208&view=rev Log: [Driver][Fuchsia] Support -nolibc flag This can be used to disable libc linking. This flag is supported by GCC since version 9 as well as some Clang target toolchains. This change also includes tests for all -no* flags which previously weren't covered. Differential Revision: https://reviews.llvm.org/D58325 Modified: cfe/trunk/lib/Driver/ToolChains/Fuchsia.cpp cfe/trunk/test/Driver/fuchsia.c cfe/trunk/test/Driver/fuchsia.cpp Modified: cfe/trunk/lib/Driver/ToolChains/Fuchsia.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChains/Fuchsia.cpp?rev=354208&r1=354207&r2=354208&view=diff == --- cfe/trunk/lib/Driver/ToolChains/Fuchsia.cpp (original) +++ cfe/trunk/lib/Driver/ToolChains/Fuchsia.cpp Sat Feb 16 17:02:40 2019 @@ -148,7 +148,8 @@ void fuchsia::Linker::ConstructJob(Compi if (Args.hasArg(options::OPT_fsplit_stack)) CmdArgs.push_back("--wrap=pthread_create"); -CmdArgs.push_back("-lc"); +if (!Args.hasArg(options::OPT_nolibc)) + CmdArgs.push_back("-lc"); } C.addCommand(llvm::make_unique(JA, *this, Exec, CmdArgs, Inputs)); Modified: cfe/trunk/test/Driver/fuchsia.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/fuchsia.c?rev=354208&r1=354207&r2=354208&view=diff == --- cfe/trunk/test/Driver/fuchsia.c (original) +++ cfe/trunk/test/Driver/fuchsia.c Sat Feb 16 17:02:40 2019 @@ -53,6 +53,27 @@ // CHECK-RELOCATABLE-NOT: "--build-id" // CHECK-RELOCATABLE: "-r" +// RUN: %clang %s -### --target=x86_64-fuchsia -nodefaultlibs -fuse-ld=lld 2>&1 \ +// RUN: -resource-dir=%S/Inputs/resource_dir_with_per_target_subdir \ +// RUN: | FileCheck %s -check-prefix=CHECK-NODEFAULTLIBS +// CHECK-NODEFAULTLIBS: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]" +// CHECK-NODEFAULTLIBS-NOT: "[[RESOURCE_DIR]]{{/|}}x86_64-fuchsia{{/|}}lib{{/|}}libclang_rt.builtins.a" +// CHECK-NODEFAULTLIBS-NOT: "-lc" + +// RUN: %clang %s -### --target=x86_64-fuchsia -nostdlib -fuse-ld=lld 2>&1 \ +// RUN: -resource-dir=%S/Inputs/resource_dir_with_per_target_subdir \ +// RUN: | FileCheck %s -check-prefix=CHECK-NOSTDLIB +// CHECK-NOSTDLIB: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]" +// CHECK-NOSTDLIB-NOT: "[[RESOURCE_DIR]]{{/|}}x86_64-fuchsia{{/|}}lib{{/|}}libclang_rt.builtins.a" +// CHECK-NOSTDLIB-NOT: "-lc" + +// RUN: %clang %s -### --target=x86_64-fuchsia -nolibc -fuse-ld=lld 2>&1 \ +// RUN: -resource-dir=%S/Inputs/resource_dir_with_per_target_subdir \ +// RUN: | FileCheck %s -check-prefix=CHECK-NOLIBC +// CHECK-NOLIBC: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]" +// CHECK-NOLIBC: "[[RESOURCE_DIR]]{{/|}}x86_64-fuchsia{{/|}}lib{{/|}}libclang_rt.builtins.a" +// CHECK-NOLIBC-NOT: "-lc" + // RUN: %clang %s -### --target=x86_64-fuchsia \ // RUN: -fsanitize=safe-stack 2>&1 \ // RUN: -resource-dir=%S/Inputs/resource_dir_with_per_target_subdir \ Modified: cfe/trunk/test/Driver/fuchsia.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/fuchsia.cpp?rev=354208&r1=354207&r2=354208&view=diff == --- cfe/trunk/test/Driver/fuchsia.cpp (original) +++ cfe/trunk/test/Driver/fuchsia.cpp Sat Feb 16 17:02:40 2019 @@ -43,3 +43,9 @@ // CHECK-STATIC: "-lm" // CHECK-STATIC: "--pop-state" // CHECK-STATIC: "-lc" + +// RUN: %clang %s -### --target=x86_64-fuchsia -nostdlib++ -fuse-ld=lld 2>&1 \ +// RUN: | FileCheck %s -check-prefix=CHECK-NOSTDLIBXX +// CHECK-NOSTDLIBXX-NOT: "-lc++" +// CHECK-NOSTDLIBXX-NOT: "-lm" +// CHECK-NOSTDLIBXX: "-lc" ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D58325: [Driver][Fuchsia] Support -nolibc flag
This revision was automatically updated to reflect the committed changes. Closed by commit rL354208: [Driver][Fuchsia] Support -nolibc flag (authored by phosek, committed by ). Herald added a project: LLVM. Herald added a subscriber: llvm-commits. Changed prior to commit: https://reviews.llvm.org/D58325?vs=187149&id=187150#toc Repository: rL LLVM CHANGES SINCE LAST ACTION https://reviews.llvm.org/D58325/new/ https://reviews.llvm.org/D58325 Files: cfe/trunk/lib/Driver/ToolChains/Fuchsia.cpp cfe/trunk/test/Driver/fuchsia.c cfe/trunk/test/Driver/fuchsia.cpp Index: cfe/trunk/lib/Driver/ToolChains/Fuchsia.cpp === --- cfe/trunk/lib/Driver/ToolChains/Fuchsia.cpp +++ cfe/trunk/lib/Driver/ToolChains/Fuchsia.cpp @@ -148,7 +148,8 @@ if (Args.hasArg(options::OPT_fsplit_stack)) CmdArgs.push_back("--wrap=pthread_create"); -CmdArgs.push_back("-lc"); +if (!Args.hasArg(options::OPT_nolibc)) + CmdArgs.push_back("-lc"); } C.addCommand(llvm::make_unique(JA, *this, Exec, CmdArgs, Inputs)); Index: cfe/trunk/test/Driver/fuchsia.cpp === --- cfe/trunk/test/Driver/fuchsia.cpp +++ cfe/trunk/test/Driver/fuchsia.cpp @@ -43,3 +43,9 @@ // CHECK-STATIC: "-lm" // CHECK-STATIC: "--pop-state" // CHECK-STATIC: "-lc" + +// RUN: %clang %s -### --target=x86_64-fuchsia -nostdlib++ -fuse-ld=lld 2>&1 \ +// RUN: | FileCheck %s -check-prefix=CHECK-NOSTDLIBXX +// CHECK-NOSTDLIBXX-NOT: "-lc++" +// CHECK-NOSTDLIBXX-NOT: "-lm" +// CHECK-NOSTDLIBXX: "-lc" Index: cfe/trunk/test/Driver/fuchsia.c === --- cfe/trunk/test/Driver/fuchsia.c +++ cfe/trunk/test/Driver/fuchsia.c @@ -53,6 +53,27 @@ // CHECK-RELOCATABLE-NOT: "--build-id" // CHECK-RELOCATABLE: "-r" +// RUN: %clang %s -### --target=x86_64-fuchsia -nodefaultlibs -fuse-ld=lld 2>&1 \ +// RUN: -resource-dir=%S/Inputs/resource_dir_with_per_target_subdir \ +// RUN: | FileCheck %s -check-prefix=CHECK-NODEFAULTLIBS +// CHECK-NODEFAULTLIBS: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]" +// CHECK-NODEFAULTLIBS-NOT: "[[RESOURCE_DIR]]{{/|}}x86_64-fuchsia{{/|}}lib{{/|}}libclang_rt.builtins.a" +// CHECK-NODEFAULTLIBS-NOT: "-lc" + +// RUN: %clang %s -### --target=x86_64-fuchsia -nostdlib -fuse-ld=lld 2>&1 \ +// RUN: -resource-dir=%S/Inputs/resource_dir_with_per_target_subdir \ +// RUN: | FileCheck %s -check-prefix=CHECK-NOSTDLIB +// CHECK-NOSTDLIB: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]" +// CHECK-NOSTDLIB-NOT: "[[RESOURCE_DIR]]{{/|}}x86_64-fuchsia{{/|}}lib{{/|}}libclang_rt.builtins.a" +// CHECK-NOSTDLIB-NOT: "-lc" + +// RUN: %clang %s -### --target=x86_64-fuchsia -nolibc -fuse-ld=lld 2>&1 \ +// RUN: -resource-dir=%S/Inputs/resource_dir_with_per_target_subdir \ +// RUN: | FileCheck %s -check-prefix=CHECK-NOLIBC +// CHECK-NOLIBC: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]" +// CHECK-NOLIBC: "[[RESOURCE_DIR]]{{/|}}x86_64-fuchsia{{/|}}lib{{/|}}libclang_rt.builtins.a" +// CHECK-NOLIBC-NOT: "-lc" + // RUN: %clang %s -### --target=x86_64-fuchsia \ // RUN: -fsanitize=safe-stack 2>&1 \ // RUN: -resource-dir=%S/Inputs/resource_dir_with_per_target_subdir \ Index: cfe/trunk/lib/Driver/ToolChains/Fuchsia.cpp === --- cfe/trunk/lib/Driver/ToolChains/Fuchsia.cpp +++ cfe/trunk/lib/Driver/ToolChains/Fuchsia.cpp @@ -148,7 +148,8 @@ if (Args.hasArg(options::OPT_fsplit_stack)) CmdArgs.push_back("--wrap=pthread_create"); -CmdArgs.push_back("-lc"); +if (!Args.hasArg(options::OPT_nolibc)) + CmdArgs.push_back("-lc"); } C.addCommand(llvm::make_unique(JA, *this, Exec, CmdArgs, Inputs)); Index: cfe/trunk/test/Driver/fuchsia.cpp === --- cfe/trunk/test/Driver/fuchsia.cpp +++ cfe/trunk/test/Driver/fuchsia.cpp @@ -43,3 +43,9 @@ // CHECK-STATIC: "-lm" // CHECK-STATIC: "--pop-state" // CHECK-STATIC: "-lc" + +// RUN: %clang %s -### --target=x86_64-fuchsia -nostdlib++ -fuse-ld=lld 2>&1 \ +// RUN: | FileCheck %s -check-prefix=CHECK-NOSTDLIBXX +// CHECK-NOSTDLIBXX-NOT: "-lc++" +// CHECK-NOSTDLIBXX-NOT: "-lm" +// CHECK-NOSTDLIBXX: "-lc" Index: cfe/trunk/test/Driver/fuchsia.c === --- cfe/trunk/test/Driver/fuchsia.c +++ cfe/trunk/test/Driver/fuchsia.c @@ -53,6 +53,27 @@ // CHECK-RELOCATABLE-NOT: "--build-id" // CHECK-RELOCATABLE: "-r" +// RUN: %clang %s -### --target=x86_64-fuchsia -nodefaultlibs -fuse-ld=lld 2>&1 \ +// RUN: -resource-dir=%S/Inputs/resource_dir_with_per_target_subdir \ +// RUN: | FileCheck %s -check-prefix=CHECK-NODEFAULTLIBS +// CHECK-NODEFAULTLIBS: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]" +// CHECK-NODEFAULTLIBS-NOT: "[[RESOURCE_DIR]]{{/|}}x86_64-fuchsia{{/|}}lib{{/|
[PATCH] D58326: [Driver][Gnu] Support -nolibc flag
phosek created this revision. phosek added reviewers: echristo, mcgrathr. Herald added a project: clang. Herald added a subscriber: cfe-commits. This can be used to disable libc linking. This flag is supported by GCC since version 9 as well as some Clang target toolchains. Repository: rC Clang https://reviews.llvm.org/D58326 Files: clang/lib/Driver/ToolChains/Gnu.cpp clang/test/Driver/nodefaultlib.c clang/test/Driver/nolibc.c Index: clang/test/Driver/nolibc.c === --- /dev/null +++ clang/test/Driver/nolibc.c @@ -0,0 +1,5 @@ +// RUN: %clang -target i686-pc-linux-gnu -### -rtlib=libgcc -nolibc %s 2>&1 | FileCheck %s +// CHECK: crtbegin +// CHECK: "-lgcc" +// CHECK-NOT: "-lc" +// CHECK: crtend Index: clang/test/Driver/nodefaultlib.c === --- clang/test/Driver/nodefaultlib.c +++ clang/test/Driver/nodefaultlib.c @@ -1,4 +1,4 @@ -// RUN: %clang -target i686-pc-linux-gnu -### -nodefaultlibs %s 2>&1 | FileCheck -check-prefix=TEST1 %s +// RUN: %clang -target i686-pc-linux-gnu -### -rtlib=libgcc -nodefaultlibs %s 2>&1 | FileCheck -check-prefix=TEST1 %s // TEST1-NOT: start-group // TEST1-NOT: "-lgcc" // TEST1-NOT: "-lc" Index: clang/lib/Driver/ToolChains/Gnu.cpp === --- clang/lib/Driver/ToolChains/Gnu.cpp +++ clang/lib/Driver/ToolChains/Gnu.cpp @@ -518,7 +518,8 @@ if (Args.hasArg(options::OPT_fsplit_stack)) CmdArgs.push_back("--wrap=pthread_create"); - CmdArgs.push_back("-lc"); + if (!Args.hasArg(options::OPT_nolibc)) +CmdArgs.push_back("-lc"); // Add IAMCU specific libs, if needed. if (IsIAMCU) Index: clang/test/Driver/nolibc.c === --- /dev/null +++ clang/test/Driver/nolibc.c @@ -0,0 +1,5 @@ +// RUN: %clang -target i686-pc-linux-gnu -### -rtlib=libgcc -nolibc %s 2>&1 | FileCheck %s +// CHECK: crtbegin +// CHECK: "-lgcc" +// CHECK-NOT: "-lc" +// CHECK: crtend Index: clang/test/Driver/nodefaultlib.c === --- clang/test/Driver/nodefaultlib.c +++ clang/test/Driver/nodefaultlib.c @@ -1,4 +1,4 @@ -// RUN: %clang -target i686-pc-linux-gnu -### -nodefaultlibs %s 2>&1 | FileCheck -check-prefix=TEST1 %s +// RUN: %clang -target i686-pc-linux-gnu -### -rtlib=libgcc -nodefaultlibs %s 2>&1 | FileCheck -check-prefix=TEST1 %s // TEST1-NOT: start-group // TEST1-NOT: "-lgcc" // TEST1-NOT: "-lc" Index: clang/lib/Driver/ToolChains/Gnu.cpp === --- clang/lib/Driver/ToolChains/Gnu.cpp +++ clang/lib/Driver/ToolChains/Gnu.cpp @@ -518,7 +518,8 @@ if (Args.hasArg(options::OPT_fsplit_stack)) CmdArgs.push_back("--wrap=pthread_create"); - CmdArgs.push_back("-lc"); + if (!Args.hasArg(options::OPT_nolibc)) +CmdArgs.push_back("-lc"); // Add IAMCU specific libs, if needed. if (IsIAMCU) ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
Re: [PATCH] D58326: [Driver][Gnu] Support -nolibc flag
Weird. Ok. On Sat, Feb 16, 2019, 5:20 PM Petr Hosek via Phabricator < revi...@reviews.llvm.org> wrote: > phosek created this revision. > phosek added reviewers: echristo, mcgrathr. > Herald added a project: clang. > Herald added a subscriber: cfe-commits. > > This can be used to disable libc linking. This flag is supported by > GCC since version 9 as well as some Clang target toolchains. > > > Repository: > rC Clang > > https://reviews.llvm.org/D58326 > > Files: > clang/lib/Driver/ToolChains/Gnu.cpp > clang/test/Driver/nodefaultlib.c > clang/test/Driver/nolibc.c > > > Index: clang/test/Driver/nolibc.c > === > --- /dev/null > +++ clang/test/Driver/nolibc.c > @@ -0,0 +1,5 @@ > +// RUN: %clang -target i686-pc-linux-gnu -### -rtlib=libgcc -nolibc %s > 2>&1 | FileCheck %s > +// CHECK: crtbegin > +// CHECK: "-lgcc" > +// CHECK-NOT: "-lc" > +// CHECK: crtend > Index: clang/test/Driver/nodefaultlib.c > === > --- clang/test/Driver/nodefaultlib.c > +++ clang/test/Driver/nodefaultlib.c > @@ -1,4 +1,4 @@ > -// RUN: %clang -target i686-pc-linux-gnu -### -nodefaultlibs %s 2>&1 | > FileCheck -check-prefix=TEST1 %s > +// RUN: %clang -target i686-pc-linux-gnu -### -rtlib=libgcc > -nodefaultlibs %s 2>&1 | FileCheck -check-prefix=TEST1 %s > // TEST1-NOT: start-group > // TEST1-NOT: "-lgcc" > // TEST1-NOT: "-lc" > Index: clang/lib/Driver/ToolChains/Gnu.cpp > === > --- clang/lib/Driver/ToolChains/Gnu.cpp > +++ clang/lib/Driver/ToolChains/Gnu.cpp > @@ -518,7 +518,8 @@ >if (Args.hasArg(options::OPT_fsplit_stack)) > CmdArgs.push_back("--wrap=pthread_create"); > > - CmdArgs.push_back("-lc"); > + if (!Args.hasArg(options::OPT_nolibc)) > +CmdArgs.push_back("-lc"); > >// Add IAMCU specific libs, if needed. >if (IsIAMCU) > > > ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
r354210 - [Driver][Gnu] Support -nolibc flag
Author: phosek Date: Sat Feb 16 18:42:48 2019 New Revision: 354210 URL: http://llvm.org/viewvc/llvm-project?rev=354210&view=rev Log: [Driver][Gnu] Support -nolibc flag This can be used to disable libc linking. This flag is supported by GCC since version 9 as well as some Clang target toolchains. Differential Revision: https://reviews.llvm.org/D58326 Added: cfe/trunk/test/Driver/nolibc.c Modified: cfe/trunk/lib/Driver/ToolChains/Gnu.cpp cfe/trunk/test/Driver/nodefaultlib.c Modified: cfe/trunk/lib/Driver/ToolChains/Gnu.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChains/Gnu.cpp?rev=354210&r1=354209&r2=354210&view=diff == --- cfe/trunk/lib/Driver/ToolChains/Gnu.cpp (original) +++ cfe/trunk/lib/Driver/ToolChains/Gnu.cpp Sat Feb 16 18:42:48 2019 @@ -518,7 +518,8 @@ void tools::gnutools::Linker::ConstructJ if (Args.hasArg(options::OPT_fsplit_stack)) CmdArgs.push_back("--wrap=pthread_create"); - CmdArgs.push_back("-lc"); + if (!Args.hasArg(options::OPT_nolibc)) +CmdArgs.push_back("-lc"); // Add IAMCU specific libs, if needed. if (IsIAMCU) Modified: cfe/trunk/test/Driver/nodefaultlib.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/nodefaultlib.c?rev=354210&r1=354209&r2=354210&view=diff == --- cfe/trunk/test/Driver/nodefaultlib.c (original) +++ cfe/trunk/test/Driver/nodefaultlib.c Sat Feb 16 18:42:48 2019 @@ -1,4 +1,4 @@ -// RUN: %clang -target i686-pc-linux-gnu -### -nodefaultlibs %s 2>&1 | FileCheck -check-prefix=TEST1 %s +// RUN: %clang -target i686-pc-linux-gnu -### -rtlib=libgcc -nodefaultlibs %s 2>&1 | FileCheck -check-prefix=TEST1 %s // TEST1-NOT: start-group // TEST1-NOT: "-lgcc" // TEST1-NOT: "-lc" Added: cfe/trunk/test/Driver/nolibc.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/nolibc.c?rev=354210&view=auto == --- cfe/trunk/test/Driver/nolibc.c (added) +++ cfe/trunk/test/Driver/nolibc.c Sat Feb 16 18:42:48 2019 @@ -0,0 +1,5 @@ +// RUN: %clang -target i686-pc-linux-gnu -### -rtlib=libgcc -nolibc %s 2>&1 | FileCheck %s +// CHECK: crtbegin +// CHECK: "-lgcc" +// CHECK-NOT: "-lc" +// CHECK: crtend ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D58326: [Driver][Gnu] Support -nolibc flag
This revision was not accepted when it landed; it landed in state "Needs Review". This revision was automatically updated to reflect the committed changes. Closed by commit rL354210: [Driver][Gnu] Support -nolibc flag (authored by phosek, committed by ). Herald added a project: LLVM. Herald added a subscriber: llvm-commits. Changed prior to commit: https://reviews.llvm.org/D58326?vs=187151&id=187152#toc Repository: rL LLVM CHANGES SINCE LAST ACTION https://reviews.llvm.org/D58326/new/ https://reviews.llvm.org/D58326 Files: cfe/trunk/lib/Driver/ToolChains/Gnu.cpp cfe/trunk/test/Driver/nodefaultlib.c cfe/trunk/test/Driver/nolibc.c Index: cfe/trunk/test/Driver/nodefaultlib.c === --- cfe/trunk/test/Driver/nodefaultlib.c +++ cfe/trunk/test/Driver/nodefaultlib.c @@ -1,4 +1,4 @@ -// RUN: %clang -target i686-pc-linux-gnu -### -nodefaultlibs %s 2>&1 | FileCheck -check-prefix=TEST1 %s +// RUN: %clang -target i686-pc-linux-gnu -### -rtlib=libgcc -nodefaultlibs %s 2>&1 | FileCheck -check-prefix=TEST1 %s // TEST1-NOT: start-group // TEST1-NOT: "-lgcc" // TEST1-NOT: "-lc" Index: cfe/trunk/test/Driver/nolibc.c === --- cfe/trunk/test/Driver/nolibc.c +++ cfe/trunk/test/Driver/nolibc.c @@ -0,0 +1,5 @@ +// RUN: %clang -target i686-pc-linux-gnu -### -rtlib=libgcc -nolibc %s 2>&1 | FileCheck %s +// CHECK: crtbegin +// CHECK: "-lgcc" +// CHECK-NOT: "-lc" +// CHECK: crtend Index: cfe/trunk/lib/Driver/ToolChains/Gnu.cpp === --- cfe/trunk/lib/Driver/ToolChains/Gnu.cpp +++ cfe/trunk/lib/Driver/ToolChains/Gnu.cpp @@ -518,7 +518,8 @@ if (Args.hasArg(options::OPT_fsplit_stack)) CmdArgs.push_back("--wrap=pthread_create"); - CmdArgs.push_back("-lc"); + if (!Args.hasArg(options::OPT_nolibc)) +CmdArgs.push_back("-lc"); // Add IAMCU specific libs, if needed. if (IsIAMCU) Index: cfe/trunk/test/Driver/nodefaultlib.c === --- cfe/trunk/test/Driver/nodefaultlib.c +++ cfe/trunk/test/Driver/nodefaultlib.c @@ -1,4 +1,4 @@ -// RUN: %clang -target i686-pc-linux-gnu -### -nodefaultlibs %s 2>&1 | FileCheck -check-prefix=TEST1 %s +// RUN: %clang -target i686-pc-linux-gnu -### -rtlib=libgcc -nodefaultlibs %s 2>&1 | FileCheck -check-prefix=TEST1 %s // TEST1-NOT: start-group // TEST1-NOT: "-lgcc" // TEST1-NOT: "-lc" Index: cfe/trunk/test/Driver/nolibc.c === --- cfe/trunk/test/Driver/nolibc.c +++ cfe/trunk/test/Driver/nolibc.c @@ -0,0 +1,5 @@ +// RUN: %clang -target i686-pc-linux-gnu -### -rtlib=libgcc -nolibc %s 2>&1 | FileCheck %s +// CHECK: crtbegin +// CHECK: "-lgcc" +// CHECK-NOT: "-lc" +// CHECK: crtend Index: cfe/trunk/lib/Driver/ToolChains/Gnu.cpp === --- cfe/trunk/lib/Driver/ToolChains/Gnu.cpp +++ cfe/trunk/lib/Driver/ToolChains/Gnu.cpp @@ -518,7 +518,8 @@ if (Args.hasArg(options::OPT_fsplit_stack)) CmdArgs.push_back("--wrap=pthread_create"); - CmdArgs.push_back("-lc"); + if (!Args.hasArg(options::OPT_nolibc)) +CmdArgs.push_back("-lc"); // Add IAMCU specific libs, if needed. if (IsIAMCU) ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
r354211 - [X86] Prevent clang clobber checking for asm flag constraints.
Author: niravd Date: Sat Feb 16 19:53:23 2019 New Revision: 354211 URL: http://llvm.org/viewvc/llvm-project?rev=354211&view=rev Log: [X86] Prevent clang clobber checking for asm flag constraints. Update getConstraintRegister as X86 Asm flag output constraints are no longer fully alphanumeric, Modified: cfe/trunk/lib/Basic/Targets/X86.h cfe/trunk/test/CodeGen/inline-asm-x86-flag-output.c Modified: cfe/trunk/lib/Basic/Targets/X86.h URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Basic/Targets/X86.h?rev=354211&r1=354210&r2=354211&view=diff == --- cfe/trunk/lib/Basic/Targets/X86.h (original) +++ cfe/trunk/lib/Basic/Targets/X86.h Sat Feb 16 19:53:23 2019 @@ -198,7 +198,7 @@ public: StringRef Expression) const override { StringRef::iterator I, E; for (I = Constraint.begin(), E = Constraint.end(); I != E; ++I) { - if (isalpha(*I)) + if (isalpha(*I) || *I == '@') break; } if (I == E) Modified: cfe/trunk/test/CodeGen/inline-asm-x86-flag-output.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/inline-asm-x86-flag-output.c?rev=354211&r1=354210&r2=354211&view=diff == --- cfe/trunk/test/CodeGen/inline-asm-x86-flag-output.c (original) +++ cfe/trunk/test/CodeGen/inline-asm-x86-flag-output.c Sat Feb 16 19:53:23 2019 @@ -363,3 +363,14 @@ int test_ccs(long nr, volatile long *add return 0; return 1; } + +_Bool check_no_clobber_conflicts() { + //CHECK-LABEL: @check_no_clobber_conflicts + //CHECK: = tail call i8 asm "", "={@cce},~{cx},~{dirflag},~{fpsr},~{flags}"() + _Bool b; + asm("" + : "=@cce"(b) + : + : "cx"); + return b; +} ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits