[PATCH] D57910: [ASTImporter] Find previous friend function template

2019-02-16 Thread Aleksei Sidorin via Phabricator via cfe-commits
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

2019-02-16 Thread Aleksei Sidorin via Phabricator via cfe-commits
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.

2019-02-16 Thread Aleksei Sidorin via Phabricator via cfe-commits
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

2019-02-16 Thread David Green via cfe-commits
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

2019-02-16 Thread Dave Bozier via Phabricator via cfe-commits
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.

2019-02-16 Thread Martin Storsjö via cfe-commits

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

2019-02-16 Thread Jonas Toth via Phabricator via cfe-commits
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

2019-02-16 Thread Eugene Zelenko via Phabricator via cfe-commits
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

2019-02-16 Thread Jacob Keller via Phabricator via cfe-commits
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

2019-02-16 Thread David CARLIER via Phabricator via cfe-commits
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

2019-02-16 Thread Jonas Toth via Phabricator via cfe-commits
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.

2019-02-16 Thread Teresa Johnson via Phabricator via cfe-commits
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

2019-02-16 Thread Petr Hosek via Phabricator via cfe-commits
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

2019-02-16 Thread Roland McGrath via Phabricator via cfe-commits
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

2019-02-16 Thread Petr Hosek via Phabricator via cfe-commits
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

2019-02-16 Thread Petr Hosek via cfe-commits
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

2019-02-16 Thread Petr Hosek via Phabricator via cfe-commits
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

2019-02-16 Thread Petr Hosek via Phabricator via cfe-commits
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

2019-02-16 Thread Eric Christopher via cfe-commits
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

2019-02-16 Thread Petr Hosek via cfe-commits
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

2019-02-16 Thread Petr Hosek via Phabricator via cfe-commits
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.

2019-02-16 Thread Nirav Dave via cfe-commits
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