[clang] 0eac975 - Reland "[AArch64] handle -Wa,-march="

2021-06-23 Thread Jian Cai via cfe-commits

Author: Jian Cai
Date: 2021-06-23T12:01:57-07:00
New Revision: 0eac975b51cca5b54a1f516d05a233c215375eda

URL: 
https://github.com/llvm/llvm-project/commit/0eac975b51cca5b54a1f516d05a233c215375eda
DIFF: 
https://github.com/llvm/llvm-project/commit/0eac975b51cca5b54a1f516d05a233c215375eda.diff

LOG: Reland "[AArch64] handle -Wa,-march="

This reverts commit fd11a26d368c5a909fb88548fef2cee7a6c2c931, which was
reverted by 9145a3d4ab7eb05d9fb113b5392e8961df629b88 due to a test
failure on aarch64 backend, e.g.
https://lab.llvm.org/buildbot/#/builders/43/builds/7031. This patch
fixed the test failure.

Reviewed By: DavidSpickett, nickdesaulniers

Differential Revision: https://reviews.llvm.org/D103184

Added: 
clang/test/Driver/aarch64-target-as-march.s

Modified: 
clang/lib/Driver/ToolChains/Arch/AArch64.cpp
clang/lib/Driver/ToolChains/Arch/AArch64.h
clang/lib/Driver/ToolChains/Clang.cpp

Removed: 




diff  --git a/clang/lib/Driver/ToolChains/Arch/AArch64.cpp 
b/clang/lib/Driver/ToolChains/Arch/AArch64.cpp
index 503685ab533a0..ed8c7e94b0134 100644
--- a/clang/lib/Driver/ToolChains/Arch/AArch64.cpp
+++ b/clang/lib/Driver/ToolChains/Arch/AArch64.cpp
@@ -185,12 +185,25 @@ getAArch64MicroArchFeaturesFromMcpu(const Driver , 
StringRef Mcpu,
 void aarch64::getAArch64TargetFeatures(const Driver ,
const llvm::Triple ,
const ArgList ,
-   std::vector ) {
+   std::vector ,
+   bool ForAS) {
   Arg *A;
   bool success = true;
   // Enable NEON by default.
   Features.push_back("+neon");
-  if ((A = Args.getLastArg(options::OPT_march_EQ)))
+  llvm::StringRef WaMArch = "";
+  if (ForAS)
+for (const auto *A :
+ Args.filtered(options::OPT_Wa_COMMA, options::OPT_Xassembler))
+  for (StringRef Value : A->getValues())
+if (Value.startswith("-march="))
+  WaMArch = Value.substr(7);
+  // Call getAArch64ArchFeaturesFromMarch only if "-Wa,-march=" or
+  // "-Xassembler -march" is detected. Otherwise it may return false
+  // and causes Clang to error out.
+  if (WaMArch.size())
+success = getAArch64ArchFeaturesFromMarch(D, WaMArch, Args, Features);
+  else if ((A = Args.getLastArg(options::OPT_march_EQ)))
 success = getAArch64ArchFeaturesFromMarch(D, A->getValue(), Args, 
Features);
   else if ((A = Args.getLastArg(options::OPT_mcpu_EQ)))
 success = getAArch64ArchFeaturesFromMcpu(D, A->getValue(), Args, Features);

diff  --git a/clang/lib/Driver/ToolChains/Arch/AArch64.h 
b/clang/lib/Driver/ToolChains/Arch/AArch64.h
index 713af870d69fb..d47c402d4a42d 100644
--- a/clang/lib/Driver/ToolChains/Arch/AArch64.h
+++ b/clang/lib/Driver/ToolChains/Arch/AArch64.h
@@ -22,7 +22,8 @@ namespace aarch64 {
 
 void getAArch64TargetFeatures(const Driver , const llvm::Triple ,
   const llvm::opt::ArgList ,
-  std::vector );
+  std::vector ,
+  bool ForAS);
 
 std::string getAArch64TargetCPU(const llvm::opt::ArgList ,
 const llvm::Triple , llvm::opt::Arg 
*);

diff  --git a/clang/lib/Driver/ToolChains/Clang.cpp 
b/clang/lib/Driver/ToolChains/Clang.cpp
index b358813a1a017..0d1fce3c06aea 100644
--- a/clang/lib/Driver/ToolChains/Clang.cpp
+++ b/clang/lib/Driver/ToolChains/Clang.cpp
@@ -344,7 +344,7 @@ static void getTargetFeatures(const Driver , const 
llvm::Triple ,
   case llvm::Triple::aarch64:
   case llvm::Triple::aarch64_32:
   case llvm::Triple::aarch64_be:
-aarch64::getAArch64TargetFeatures(D, Triple, Args, Features);
+aarch64::getAArch64TargetFeatures(D, Triple, Args, Features, ForAS);
 break;
   case llvm::Triple::x86:
   case llvm::Triple::x86_64:

diff  --git a/clang/test/Driver/aarch64-target-as-march.s 
b/clang/test/Driver/aarch64-target-as-march.s
new file mode 100644
index 0..a9301ade43351
--- /dev/null
+++ b/clang/test/Driver/aarch64-target-as-march.s
@@ -0,0 +1,46 @@
+/// These tests make sure that options passed to the assembler
+/// via -Wa or -Xassembler are applied correctly to assembler inputs.
+
+/// Does not apply to non assembly files
+// RUN: %clang --target=aarch64-linux-gnueabi -### -c -Wa,-march=armv8.1-a \
+// RUN: %S/Inputs/wildcard1.c 2>&1 | FileCheck --check-prefix=TARGET-FEATURE-1 
%s
+// RUN: %clang --target=aarch64-linux-gnueabi -### -c -Xassembler 
-march=armv8.1-a \
+// RUN: %S/Inputs/wildcard1.c 2>&1 | FileCheck --check-prefix=TARGET-FEATURE-1 
%s
+
+// TARGET-FEATURE-1-NOT: "-target-feature" "+v8.1a"
+
+/// Does apply to assembler input
+// RUN: %clang --target=aarch64-linux-gnueabi -### -c -Wa,-march=armv8.2-a %s 
2>&1 | \
+// RUN: FileCheck --check-prefix=TARGET-FEATURE-2 %s
+// RUN: %clang 

[clang] 9145a3d - Revert "[AArch64] handle -Wa,-march="

2021-06-07 Thread Jian Cai via cfe-commits

Author: Jian Cai
Date: 2021-06-07T14:31:07-07:00
New Revision: 9145a3d4ab7eb05d9fb113b5392e8961df629b88

URL: 
https://github.com/llvm/llvm-project/commit/9145a3d4ab7eb05d9fb113b5392e8961df629b88
DIFF: 
https://github.com/llvm/llvm-project/commit/9145a3d4ab7eb05d9fb113b5392e8961df629b88.diff

LOG: Revert "[AArch64] handle -Wa,-march="

This reverts commit fd11a26d368c5a909fb88548fef2cee7a6c2c931.

Added: 


Modified: 
clang/lib/Driver/ToolChains/Arch/AArch64.cpp
clang/lib/Driver/ToolChains/Arch/AArch64.h
clang/lib/Driver/ToolChains/Clang.cpp

Removed: 
clang/test/Driver/aarch64-target-as-march.s



diff  --git a/clang/lib/Driver/ToolChains/Arch/AArch64.cpp 
b/clang/lib/Driver/ToolChains/Arch/AArch64.cpp
index cb98d423ed2b0..503685ab533a0 100644
--- a/clang/lib/Driver/ToolChains/Arch/AArch64.cpp
+++ b/clang/lib/Driver/ToolChains/Arch/AArch64.cpp
@@ -185,20 +185,12 @@ getAArch64MicroArchFeaturesFromMcpu(const Driver , 
StringRef Mcpu,
 void aarch64::getAArch64TargetFeatures(const Driver ,
const llvm::Triple ,
const ArgList ,
-   std::vector ,
-   bool ForAS) {
+   std::vector ) {
   Arg *A;
   bool success = true;
   // Enable NEON by default.
   Features.push_back("+neon");
-  if (ForAS &&
-  (A = Args.getLastArg(options::OPT_Wa_COMMA, options::OPT_Xassembler))) {
-llvm::StringRef WaMArch;
-for (StringRef Value : A->getValues())
-  if (Value.startswith("-march="))
-WaMArch = Value.substr(7);
-success = getAArch64ArchFeaturesFromMarch(D, WaMArch, Args, Features);
-  } else if ((A = Args.getLastArg(options::OPT_march_EQ)))
+  if ((A = Args.getLastArg(options::OPT_march_EQ)))
 success = getAArch64ArchFeaturesFromMarch(D, A->getValue(), Args, 
Features);
   else if ((A = Args.getLastArg(options::OPT_mcpu_EQ)))
 success = getAArch64ArchFeaturesFromMcpu(D, A->getValue(), Args, Features);

diff  --git a/clang/lib/Driver/ToolChains/Arch/AArch64.h 
b/clang/lib/Driver/ToolChains/Arch/AArch64.h
index d47c402d4a42d..713af870d69fb 100644
--- a/clang/lib/Driver/ToolChains/Arch/AArch64.h
+++ b/clang/lib/Driver/ToolChains/Arch/AArch64.h
@@ -22,8 +22,7 @@ namespace aarch64 {
 
 void getAArch64TargetFeatures(const Driver , const llvm::Triple ,
   const llvm::opt::ArgList ,
-  std::vector ,
-  bool ForAS);
+  std::vector );
 
 std::string getAArch64TargetCPU(const llvm::opt::ArgList ,
 const llvm::Triple , llvm::opt::Arg 
*);

diff  --git a/clang/lib/Driver/ToolChains/Clang.cpp 
b/clang/lib/Driver/ToolChains/Clang.cpp
index 6fdd7e2dd21e7..a0e1208fd709c 100644
--- a/clang/lib/Driver/ToolChains/Clang.cpp
+++ b/clang/lib/Driver/ToolChains/Clang.cpp
@@ -344,7 +344,7 @@ static void getTargetFeatures(const Driver , const 
llvm::Triple ,
   case llvm::Triple::aarch64:
   case llvm::Triple::aarch64_32:
   case llvm::Triple::aarch64_be:
-aarch64::getAArch64TargetFeatures(D, Triple, Args, Features, ForAS);
+aarch64::getAArch64TargetFeatures(D, Triple, Args, Features);
 break;
   case llvm::Triple::x86:
   case llvm::Triple::x86_64:

diff  --git a/clang/test/Driver/aarch64-target-as-march.s 
b/clang/test/Driver/aarch64-target-as-march.s
deleted file mode 100644
index a9301ade43351..0
--- a/clang/test/Driver/aarch64-target-as-march.s
+++ /dev/null
@@ -1,46 +0,0 @@
-/// These tests make sure that options passed to the assembler
-/// via -Wa or -Xassembler are applied correctly to assembler inputs.
-
-/// Does not apply to non assembly files
-// RUN: %clang --target=aarch64-linux-gnueabi -### -c -Wa,-march=armv8.1-a \
-// RUN: %S/Inputs/wildcard1.c 2>&1 | FileCheck --check-prefix=TARGET-FEATURE-1 
%s
-// RUN: %clang --target=aarch64-linux-gnueabi -### -c -Xassembler 
-march=armv8.1-a \
-// RUN: %S/Inputs/wildcard1.c 2>&1 | FileCheck --check-prefix=TARGET-FEATURE-1 
%s
-
-// TARGET-FEATURE-1-NOT: "-target-feature" "+v8.1a"
-
-/// Does apply to assembler input
-// RUN: %clang --target=aarch64-linux-gnueabi -### -c -Wa,-march=armv8.2-a %s 
2>&1 | \
-// RUN: FileCheck --check-prefix=TARGET-FEATURE-2 %s
-// RUN: %clang --target=aarch64-linux-gnueabi -### -c -Xassembler 
-march=armv8.2-a %s 2>&1 | \
-// RUN: FileCheck --check-prefix=TARGET-FEATURE-2 %s
-
-// TARGET-FEATURE-2: "-target-feature" "+v8.2a"
-
-/// No unused argument warnings when there are multiple values
-// RUN: %clang --target=aarch64-linux-gnueabi -### -c -Wa,-march=armv8.1-a 
-Wa,-march=armv8.2-a %s 2>&1 | \
-// RUN: FileCheck --check-prefix=UNUSED-WARNING %s
-
-// UNUSED-WARNING-NOT: warning: argument unused during compilation
-
-/// Last march to assembler wins
-// RUN: %clang 

[clang] fd11a26 - [AArch64] handle -Wa,-march=

2021-06-07 Thread Jian Cai via cfe-commits

Author: Jian Cai
Date: 2021-06-07T10:15:53-07:00
New Revision: fd11a26d368c5a909fb88548fef2cee7a6c2c931

URL: 
https://github.com/llvm/llvm-project/commit/fd11a26d368c5a909fb88548fef2cee7a6c2c931
DIFF: 
https://github.com/llvm/llvm-project/commit/fd11a26d368c5a909fb88548fef2cee7a6c2c931.diff

LOG: [AArch64] handle -Wa,-march=

This fixed PR#48894 for AArch64. The issue has been fixed for Arm in
https://reviews.llvm.org/D95872

The following rules apply to -Wa,-march with this change:
  - Only compiler options apply to non assembly files
  - Compiler and assembler options apply to assembly files
  - For assembly files, we prefer the assembler option(s) if we have both kinds 
of option
  - Of the options that apply (or are preferred), the last value wins (it's not 
additive)

Reviewed By: DavidSpickett, nickdesaulniers

Differential Revision: https://reviews.llvm.org/D103184

Added: 
clang/test/Driver/aarch64-target-as-march.s

Modified: 
clang/lib/Driver/ToolChains/Arch/AArch64.cpp
clang/lib/Driver/ToolChains/Arch/AArch64.h
clang/lib/Driver/ToolChains/Clang.cpp

Removed: 




diff  --git a/clang/lib/Driver/ToolChains/Arch/AArch64.cpp 
b/clang/lib/Driver/ToolChains/Arch/AArch64.cpp
index 503685ab533a0..cb98d423ed2b0 100644
--- a/clang/lib/Driver/ToolChains/Arch/AArch64.cpp
+++ b/clang/lib/Driver/ToolChains/Arch/AArch64.cpp
@@ -185,12 +185,20 @@ getAArch64MicroArchFeaturesFromMcpu(const Driver , 
StringRef Mcpu,
 void aarch64::getAArch64TargetFeatures(const Driver ,
const llvm::Triple ,
const ArgList ,
-   std::vector ) {
+   std::vector ,
+   bool ForAS) {
   Arg *A;
   bool success = true;
   // Enable NEON by default.
   Features.push_back("+neon");
-  if ((A = Args.getLastArg(options::OPT_march_EQ)))
+  if (ForAS &&
+  (A = Args.getLastArg(options::OPT_Wa_COMMA, options::OPT_Xassembler))) {
+llvm::StringRef WaMArch;
+for (StringRef Value : A->getValues())
+  if (Value.startswith("-march="))
+WaMArch = Value.substr(7);
+success = getAArch64ArchFeaturesFromMarch(D, WaMArch, Args, Features);
+  } else if ((A = Args.getLastArg(options::OPT_march_EQ)))
 success = getAArch64ArchFeaturesFromMarch(D, A->getValue(), Args, 
Features);
   else if ((A = Args.getLastArg(options::OPT_mcpu_EQ)))
 success = getAArch64ArchFeaturesFromMcpu(D, A->getValue(), Args, Features);

diff  --git a/clang/lib/Driver/ToolChains/Arch/AArch64.h 
b/clang/lib/Driver/ToolChains/Arch/AArch64.h
index 713af870d69fb..d47c402d4a42d 100644
--- a/clang/lib/Driver/ToolChains/Arch/AArch64.h
+++ b/clang/lib/Driver/ToolChains/Arch/AArch64.h
@@ -22,7 +22,8 @@ namespace aarch64 {
 
 void getAArch64TargetFeatures(const Driver , const llvm::Triple ,
   const llvm::opt::ArgList ,
-  std::vector );
+  std::vector ,
+  bool ForAS);
 
 std::string getAArch64TargetCPU(const llvm::opt::ArgList ,
 const llvm::Triple , llvm::opt::Arg 
*);

diff  --git a/clang/lib/Driver/ToolChains/Clang.cpp 
b/clang/lib/Driver/ToolChains/Clang.cpp
index a0e1208fd709c..6fdd7e2dd21e7 100644
--- a/clang/lib/Driver/ToolChains/Clang.cpp
+++ b/clang/lib/Driver/ToolChains/Clang.cpp
@@ -344,7 +344,7 @@ static void getTargetFeatures(const Driver , const 
llvm::Triple ,
   case llvm::Triple::aarch64:
   case llvm::Triple::aarch64_32:
   case llvm::Triple::aarch64_be:
-aarch64::getAArch64TargetFeatures(D, Triple, Args, Features);
+aarch64::getAArch64TargetFeatures(D, Triple, Args, Features, ForAS);
 break;
   case llvm::Triple::x86:
   case llvm::Triple::x86_64:

diff  --git a/clang/test/Driver/aarch64-target-as-march.s 
b/clang/test/Driver/aarch64-target-as-march.s
new file mode 100644
index 0..a9301ade43351
--- /dev/null
+++ b/clang/test/Driver/aarch64-target-as-march.s
@@ -0,0 +1,46 @@
+/// These tests make sure that options passed to the assembler
+/// via -Wa or -Xassembler are applied correctly to assembler inputs.
+
+/// Does not apply to non assembly files
+// RUN: %clang --target=aarch64-linux-gnueabi -### -c -Wa,-march=armv8.1-a \
+// RUN: %S/Inputs/wildcard1.c 2>&1 | FileCheck --check-prefix=TARGET-FEATURE-1 
%s
+// RUN: %clang --target=aarch64-linux-gnueabi -### -c -Xassembler 
-march=armv8.1-a \
+// RUN: %S/Inputs/wildcard1.c 2>&1 | FileCheck --check-prefix=TARGET-FEATURE-1 
%s
+
+// TARGET-FEATURE-1-NOT: "-target-feature" "+v8.1a"
+
+/// Does apply to assembler input
+// RUN: %clang --target=aarch64-linux-gnueabi -### -c -Wa,-march=armv8.2-a %s 
2>&1 | \
+// RUN: FileCheck --check-prefix=TARGET-FEATURE-2 %s
+// RUN: %clang --target=aarch64-linux-gnueabi -### -c -Xassembler 
-march=armv8.2-a 

[clang] 76d9bc7 - Reland "Add support to -Wa,--version in clang""

2021-04-01 Thread Jian Cai via cfe-commits

Author: Jian Cai
Date: 2021-04-01T13:47:56-07:00
New Revision: 76d9bc72784d88f4dd57b9939e52c73739438af5

URL: 
https://github.com/llvm/llvm-project/commit/76d9bc72784d88f4dd57b9939e52c73739438af5
DIFF: 
https://github.com/llvm/llvm-project/commit/76d9bc72784d88f4dd57b9939e52c73739438af5.diff

LOG: Reland "Add support to -Wa,--version in clang""

This relands commit 3cc3c0f8352ec33ca2f2636f94cb1d85fc57ac16 with fixed
test cases, which was reverted by commit
bf2479c347c8ca88fefdb144d8bae0a7a4231e2a.

Added: 
clang/test/Driver/as-version.s

Modified: 
clang/lib/Driver/ToolChains/Clang.cpp

Removed: 




diff  --git a/clang/lib/Driver/ToolChains/Clang.cpp 
b/clang/lib/Driver/ToolChains/Clang.cpp
index c9b44aa76b6b..ad5dca30e0f6 100644
--- a/clang/lib/Driver/ToolChains/Clang.cpp
+++ b/clang/lib/Driver/ToolChains/Clang.cpp
@@ -2552,6 +2552,8 @@ static void CollectArgsForIntegratedAssembler(Compilation 
,
 // -fdebug-compilation-dir (without '=') here.
 CmdArgs.push_back("-fdebug-compilation-dir");
 CmdArgs.push_back(Value.data());
+  } else if (Value == "--version") {
+D.PrintVersion(C, llvm::outs());
   } else {
 D.Diag(diag::err_drv_unsupported_option_argument)
 << A->getOption().getName() << Value;

diff  --git a/clang/test/Driver/as-version.s b/clang/test/Driver/as-version.s
new file mode 100644
index ..e9e66563942f
--- /dev/null
+++ b/clang/test/Driver/as-version.s
@@ -0,0 +1,5 @@
+// Test version information.
+
+// RUN: %clang -Wa,--version -c -fintegrated-as %s -o /dev/null \
+// RUN:   | FileCheck --check-prefix=IAS %s
+// IAS: clang version



___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang] 3cc3c0f - Add support to -Wa,--version in clang

2021-03-31 Thread Jian Cai via cfe-commits

Author: Jian Cai
Date: 2021-03-31T16:29:02-07:00
New Revision: 3cc3c0f8352ec33ca2f2636f94cb1d85fc57ac16

URL: 
https://github.com/llvm/llvm-project/commit/3cc3c0f8352ec33ca2f2636f94cb1d85fc57ac16
DIFF: 
https://github.com/llvm/llvm-project/commit/3cc3c0f8352ec33ca2f2636f94cb1d85fc57ac16.diff

LOG: Add support to -Wa,--version in clang

Clang currently only supports -Wa,--version when -no-integrated-as is
used. This adds support to -Wa,--version with -integrated-as.

Link:
https://github.com/ClangBuiltLinux/linux/issues/1320

Reviewed By: nickdesaulniers, MaskRay

Differential Revision: https://reviews.llvm.org/D99556

Added: 
clang/test/Driver/as-version.s

Modified: 
clang/lib/Driver/ToolChains/Clang.cpp

Removed: 




diff  --git a/clang/lib/Driver/ToolChains/Clang.cpp 
b/clang/lib/Driver/ToolChains/Clang.cpp
index 804f528838c58..9d3c725198f4d 100644
--- a/clang/lib/Driver/ToolChains/Clang.cpp
+++ b/clang/lib/Driver/ToolChains/Clang.cpp
@@ -2549,6 +2549,8 @@ static void CollectArgsForIntegratedAssembler(Compilation 
,
 // -fdebug-compilation-dir (without '=') here.
 CmdArgs.push_back("-fdebug-compilation-dir");
 CmdArgs.push_back(Value.data());
+  } else if (Value == "--version") {
+D.PrintVersion(C, llvm::outs());
   } else {
 D.Diag(diag::err_drv_unsupported_option_argument)
 << A->getOption().getName() << Value;

diff  --git a/clang/test/Driver/as-version.s b/clang/test/Driver/as-version.s
new file mode 100644
index 0..9d2801e4ee379
--- /dev/null
+++ b/clang/test/Driver/as-version.s
@@ -0,0 +1,9 @@
+// Test version information.
+
+// RUN: %clang -Wa,--version -c -fintegrated-as %s -o /dev/null \
+// RUN:   | FileCheck --check-prefix=IAS %s
+// IAS: clang version
+
+// RUN: %clang -Wa,--version -c -fno-integrated-as %s -o /dev/null \
+// RUN:   | FileCheck --check-prefix=GAS %s
+// GAS-NOT: clang



___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang] 4db2b70 - Add a flag to debug automatic variable initialization

2020-06-08 Thread Jian Cai via cfe-commits

Author: Jian Cai
Date: 2020-06-08T12:30:56-07:00
New Revision: 4db2b70248686b8ac0667237768008762a66bb06

URL: 
https://github.com/llvm/llvm-project/commit/4db2b70248686b8ac0667237768008762a66bb06
DIFF: 
https://github.com/llvm/llvm-project/commit/4db2b70248686b8ac0667237768008762a66bb06.diff

LOG: Add a flag to debug automatic variable initialization

Summary:
Add -ftrivial-auto-var-init-stop-after= to limit the number of times
stack variables are initialized when -ftrivial-auto-var-init= is used to
initialize stack variables to zero or a pattern. This flag can be used
to bisect uninitialized uses of a stack variable exposed by automatic
variable initialization, such as http://crrev.com/c/2020401.

Reviewers: jfb, vitalybuka, kcc, glider, rsmith, rjmccall, pcc, eugenis, 
vlad.tsyrklevich

Reviewed By: jfb

Subscribers: phosek, hubert.reinterpretcast, srhines, MaskRay, 
george.burgess.iv, dexonsmith, inglorion, gbiv, llozano, manojgupta, cfe-commits

Tags: #clang

Differential Revision: https://reviews.llvm.org/D77168

Added: 
clang/test/CodeGenCXX/auto-var-init-stop-after.cpp

Modified: 
clang/include/clang/Basic/DiagnosticDriverKinds.td
clang/include/clang/Basic/LangOptions.def
clang/include/clang/Driver/Options.td
clang/lib/CodeGen/CGBuiltin.cpp
clang/lib/CodeGen/CGDecl.cpp
clang/lib/CodeGen/CodeGenModule.cpp
clang/lib/CodeGen/CodeGenModule.h
clang/lib/Driver/ToolChains/Clang.cpp
clang/lib/Frontend/CompilerInvocation.cpp
clang/test/Driver/clang_f_opts.c

Removed: 




diff  --git a/clang/include/clang/Basic/DiagnosticDriverKinds.td 
b/clang/include/clang/Basic/DiagnosticDriverKinds.td
index 80242e53a1ae..28747e89378b 100644
--- a/clang/include/clang/Basic/DiagnosticDriverKinds.td
+++ b/clang/include/clang/Basic/DiagnosticDriverKinds.td
@@ -484,6 +484,12 @@ def err_drv_trivial_auto_var_init_zero_disabled : Error<
   "-ftrivial-auto-var-init=zero hasn't been enabled. Enable it at your own 
peril for benchmarking purpose only with "
   "-enable-trivial-auto-var-init-zero-knowing-it-will-be-removed-from-clang">;
 
+def err_drv_trivial_auto_var_init_stop_after_missing_dependency : Error<
+  "-ftrivial-auto-var-init-stop-after=* is used without 
-ftrivial-auto-var-init=zero or -ftrivial-auto-var-init=pattern.">;
+
+def err_drv_trivial_auto_var_init_stop_after_invalid_value : Error<
+  "-ftrivial-auto-var-init-stop-after=* only accepts positive integers.">;
+
 def warn_drv_msp430_hwmult_unsupported : Warning<"the given MCU does not "
   "support hardware multiply, but -mhwmult is set to %0.">,
InGroup;

diff  --git a/clang/include/clang/Basic/LangOptions.def 
b/clang/include/clang/Basic/LangOptions.def
index 5758ce39f032..caddae213a26 100644
--- a/clang/include/clang/Basic/LangOptions.def
+++ b/clang/include/clang/Basic/LangOptions.def
@@ -306,6 +306,8 @@ ENUM_LANGOPT(StackProtector, StackProtectorMode, 2, SSPOff,
  "stack protector mode")
 ENUM_LANGOPT(TrivialAutoVarInit, TrivialAutoVarInitKind, 2, 
TrivialAutoVarInitKind::Uninitialized,
  "trivial automatic variable initialization")
+VALUE_LANGOPT(TrivialAutoVarInitStopAfter, 32, 0,
+ "stop trivial automatic variable initialization after the 
specified number of instances. Must be greater than 0.")
 ENUM_LANGOPT(SignedOverflowBehavior, SignedOverflowBehaviorTy, 2, 
SOB_Undefined,
  "signed integer overflow handling")
 

diff  --git a/clang/include/clang/Driver/Options.td 
b/clang/include/clang/Driver/Options.td
index c7cae452215a..b84b9293779f 100644
--- a/clang/include/clang/Driver/Options.td
+++ b/clang/include/clang/Driver/Options.td
@@ -1755,6 +1755,8 @@ def ftrivial_auto_var_init : Joined<["-"], 
"ftrivial-auto-var-init=">, Group,
   Flags<[CC1Option, CoreOption]>,
   HelpText<"Trivial automatic variable initialization to zero is only here for 
benchmarks, it'll eventually be removed, and I'm OK with that because I'm only 
using it to benchmark">;
+def ftrivial_auto_var_init_stop_after : Joined<["-"], 
"ftrivial-auto-var-init-stop-after=">, Group,
+  Flags<[CC1Option, CoreOption]>, HelpText<"Stop initializing trivial 
automatic stack variables after the specified number of instances">;
 def fstandalone_debug : Flag<["-"], "fstandalone-debug">, Group, 
Flags<[CoreOption]>,
   HelpText<"Emit full debug info for all types used by the program">;
 def fno_standalone_debug : Flag<["-"], "fno-standalone-debug">, 
Group, Flags<[CoreOption]>,

diff  --git a/clang/lib/CodeGen/CGBuiltin.cpp b/clang/lib/CodeGen/CGBuiltin.cpp
index 2acb5a3d8422..c580720379b5 100644
--- a/clang/lib/CodeGen/CGBuiltin.cpp
+++ b/clang/lib/CodeGen/CGBuiltin.cpp
@@ -75,6 +75,8 @@ static void initializeAlloca(CodeGenFunction , AllocaInst 
*AI, Value *Size,
 break;
   }
   }
+  if (CGF.CGM.stopAutoInit())
+return;
   CGF.Builder.CreateMemSet(AI, Byte, Size, AlignmentInBytes);
 }
 

diff  --git 

[clang] fcbc613 - Make "#pragma clang attribute" support uninitialized attribute.

2020-04-23 Thread Jian Cai via cfe-commits

Author: Jian Cai
Date: 2020-04-23T14:25:13-07:00
New Revision: fcbc613ad8b7785f710996f58726f26ad4ace50b

URL: 
https://github.com/llvm/llvm-project/commit/fcbc613ad8b7785f710996f58726f26ad4ace50b
DIFF: 
https://github.com/llvm/llvm-project/commit/fcbc613ad8b7785f710996f58726f26ad4ace50b.diff

LOG: Make "#pragma clang attribute" support uninitialized attribute.

Summary:
When using -ftrivial-auto-var-init=* options to initiate automatic
variables in a file, to disable initialization on some variables,
currently we have to manually annotate the variables with uninitialized
attribute, such as

int dont_initialize_me __attribute((uninitialized));

Making pragma clang attribute to support this attribute would make
annotating variables much easier, and could be particular useful for
bisection efforts, e.g.

void use(void*);

void buggy() {
int arr[256];
int boom;
float bam;
struct { int oops; } oops;
union { int oof; float a; } oof;

use();
use();
use();
use();
use();
}

Reviewers: jfb, rjmccall, aaron.ballman

Reviewed By: jfb, aaron.ballman

Subscribers: aaron.ballman, george.burgess.iv, dexonsmith, MaskRay, phosek, 
hubert.reinterpretcast, gbiv, manojgupta, llozano, srhines, cfe-commits

Tags: #clang

Differential Revision: https://reviews.llvm.org/D78693

Added: 


Modified: 
clang/docs/LanguageExtensions.rst
clang/include/clang/Basic/Attr.td
clang/test/CodeGenCXX/trivial-auto-var-init-attribute.cpp
clang/test/Misc/pragma-attribute-supported-attributes-list.test
clang/test/Parser/pragma-attribute.cpp

Removed: 




diff  --git a/clang/docs/LanguageExtensions.rst 
b/clang/docs/LanguageExtensions.rst
index 07062a191ce8..f1b7c79db6d6 100644
--- a/clang/docs/LanguageExtensions.rst
+++ b/clang/docs/LanguageExtensions.rst
@@ -3336,6 +3336,9 @@ Clang supports the following match rules:
 - ``variable(is_global)``: Can be used to apply attributes to global variables
   only.
 
+- ``variable(is_local)``: Can be used to apply attributes to local variables
+  only.
+
 - ``variable(is_parameter)``: Can be used to apply attributes to parameters
   only.
 

diff  --git a/clang/include/clang/Basic/Attr.td 
b/clang/include/clang/Basic/Attr.td
index f9f14bfcc424..1f5ea4d83a4d 100644
--- a/clang/include/clang/Basic/Attr.td
+++ b/clang/include/clang/Basic/Attr.td
@@ -441,6 +441,7 @@ def SubjectMatcherForEnumConstant : 
AttrSubjectMatcherRule<"enum_constant",
 def SubjectMatcherForVar : AttrSubjectMatcherRule<"variable", [Var], [
   AttrSubjectMatcherSubRule<"is_thread_local", [TLSVar]>,
   AttrSubjectMatcherSubRule<"is_global", [GlobalVar]>,
+  AttrSubjectMatcherSubRule<"is_local", [LocalVar]>,
   AttrSubjectMatcherSubRule<"is_parameter", [ParmVar]>,
   // unless(is_parameter)
   AttrSubjectMatcherSubRule<"is_parameter", [NonParmVar], 1>
@@ -3381,6 +3382,7 @@ def NoSpeculativeLoadHardening : InheritableAttr {
 def Uninitialized : InheritableAttr {
   let Spellings = [Clang<"uninitialized", 0>];
   let Subjects = SubjectList<[LocalVar]>;
+  let PragmaAttributeSupport = 1;
   let Documentation = [UninitializedDocs];
 }
 

diff  --git a/clang/test/CodeGenCXX/trivial-auto-var-init-attribute.cpp 
b/clang/test/CodeGenCXX/trivial-auto-var-init-attribute.cpp
index e7c9e9ac2a5a..8b1bf2e57b21 100644
--- a/clang/test/CodeGenCXX/trivial-auto-var-init-attribute.cpp
+++ b/clang/test/CodeGenCXX/trivial-auto-var-init-attribute.cpp
@@ -20,4 +20,20 @@ void test_attribute_uninitialized() {
   used(i);
 }
 
+#pragma clang attribute push([[clang::uninitialized]], apply_to = 
variable(is_local))
+// UNINIT-LABEL:  test_pragma_attribute_uninitialized(
+// UNINIT:  alloca
+// UNINIT-NEXT: call void
+// ZERO-LABEL:test_pragma_attribute_uninitialized(
+// ZERO:  alloca
+// ZERO-NEXT: call void
+// PATTERN-LABEL: test_pragma_attribute_uninitialized(
+// PATTERN:  alloca
+// PATTERN-NEXT: call void
+void test_pragma_attribute_uninitialized() {
+  int i;
+  used(i);
+}
+#pragma clang attribute pop
+
 } // extern "C"

diff  --git a/clang/test/Misc/pragma-attribute-supported-attributes-list.test 
b/clang/test/Misc/pragma-attribute-supported-attributes-list.test
index e4750705a249..c23a93218802 100644
--- a/clang/test/Misc/pragma-attribute-supported-attributes-list.test
+++ b/clang/test/Misc/pragma-attribute-supported-attributes-list.test
@@ -41,6 +41,7 @@
 // CHECK-NEXT: Callback (SubjectMatchRule_function)
 // CHECK-NEXT: Capability (SubjectMatchRule_record, 
SubjectMatchRule_type_alias)
 // CHECK-NEXT: CarriesDependency (SubjectMatchRule_variable_is_parameter, 
SubjectMatchRule_objc_method, SubjectMatchRule_function)
+// CHECK-NEXT: Cleanup (SubjectMatchRule_variable_is_local)
 // CHECK-NEXT: CmseNSEntry (SubjectMatchRule_function)
 // CHECK-NEXT: Cold (SubjectMatchRule_function)
 // CHECK-NEXT: Common (SubjectMatchRule_variable)
@@ -151,6 +152,7 @@
 // CHECK-NEXT: Target 

Re: r374837 - [clang] add requirements to -Wa,-W test cases.

2019-10-28 Thread Jian Cai via cfe-commits
Sounds good! Will start doing it.

On Mon, Oct 28, 2019 at 4:29 PM David Blaikie  wrote:

> Thanks for the details! Generally it's fine to have these discussions
> on-list, or at least to include a summary reply so it's clear loose ends
> were tied up.
>
> On Mon, Oct 28, 2019 at 4:26 PM Jian Cai  wrote:
>
>> Hi David,
>>
>> Thanks for the follow up. I already discussed it with Nico over email and
>> addressed his concerns on llvm-svn: 374932. I did not want to spam everyone
>> with all our email exchanges so I did not include the list :).
>>
>> Thanks,
>> Jian
>>
>> On Mon, Oct 28, 2019 at 3:37 PM David Blaikie  wrote:
>>
>>> +1 to what Nico said/ping on this.
>>>
>>> Jian - could you see if these tests could be made portable as Nico's
>>> suggested?
>>>
>>> On Mon, Oct 14, 2019 at 3:54 PM Nico Weber via cfe-commits <
>>> cfe-commits@lists.llvm.org> wrote:
>>>
>>>> Hm, this means the test can't run on non-linux, so if someone breaks it
>>>> on e.g. win they won't see the failure. Maybe add a
>>>> --target=i386-unknown-linux instead? Then it might pass on all platforms.
>>>>
>>>> On Mon, Oct 14, 2019 at 6:48 PM Jian Cai via cfe-commits <
>>>> cfe-commits@lists.llvm.org> wrote:
>>>>
>>>>> Author: jcai19
>>>>> Date: Mon Oct 14 15:51:12 2019
>>>>> New Revision: 374837
>>>>>
>>>>> URL: http://llvm.org/viewvc/llvm-project?rev=374837=rev
>>>>> Log:
>>>>> [clang] add requirements to -Wa,-W test cases.
>>>>>
>>>>> Include linux as a test requirement.
>>>>>
>>>>> Modified:
>>>>> cfe/trunk/test/Driver/as-w-option.c
>>>>>
>>>>> Modified: cfe/trunk/test/Driver/as-w-option.c
>>>>> URL:
>>>>> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/as-w-option.c?rev=374837=374836=374837=diff
>>>>>
>>>>> ==
>>>>> --- cfe/trunk/test/Driver/as-w-option.c (original)
>>>>> +++ cfe/trunk/test/Driver/as-w-option.c Mon Oct 14 15:51:12 2019
>>>>> @@ -5,6 +5,9 @@
>>>>>  // RUN: not %clang %s -c -o %t.o -integrated-as -Wa,--fatal-warnings
>>>>> 2>&1 | FileCheck --check-prefix=CHECK-AS-FATAL %s
>>>>>  // RUN: not %clang %s -c -o %t.o -fno-integrated-as
>>>>> -Wa,--fatal-warnings 2>&1 | FileCheck --check-prefix=CHECK-AS-FATAL %s
>>>>>
>>>>> +// REQUIRES: clang-driver
>>>>> +// REQUIRES: linux
>>>>> +
>>>>>  // CHECK-IAS: "-cc1" {{.*}} "-massembler-no-warn"
>>>>>  // CHECK-NOIAS: "-W"
>>>>>  // CHECK-AS-NOWARN-NOT: warning:
>>>>>
>>>>>
>>>>> ___
>>>>> cfe-commits mailing list
>>>>> cfe-commits@lists.llvm.org
>>>>> https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
>>>>>
>>>> ___
>>>> cfe-commits mailing list
>>>> cfe-commits@lists.llvm.org
>>>> https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
>>>>
>>>
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


Re: r374837 - [clang] add requirements to -Wa,-W test cases.

2019-10-28 Thread Jian Cai via cfe-commits
Hi David,

Thanks for the follow up. I already discussed it with Nico over email and
addressed his concerns on llvm-svn: 374932. I did not want to spam everyone
with all our email exchanges so I did not include the list :).

Thanks,
Jian

On Mon, Oct 28, 2019 at 3:37 PM David Blaikie  wrote:

> +1 to what Nico said/ping on this.
>
> Jian - could you see if these tests could be made portable as Nico's
> suggested?
>
> On Mon, Oct 14, 2019 at 3:54 PM Nico Weber via cfe-commits <
> cfe-commits@lists.llvm.org> wrote:
>
>> Hm, this means the test can't run on non-linux, so if someone breaks it
>> on e.g. win they won't see the failure. Maybe add a
>> --target=i386-unknown-linux instead? Then it might pass on all platforms.
>>
>> On Mon, Oct 14, 2019 at 6:48 PM Jian Cai via cfe-commits <
>> cfe-commits@lists.llvm.org> wrote:
>>
>>> Author: jcai19
>>> Date: Mon Oct 14 15:51:12 2019
>>> New Revision: 374837
>>>
>>> URL: http://llvm.org/viewvc/llvm-project?rev=374837=rev
>>> Log:
>>> [clang] add requirements to -Wa,-W test cases.
>>>
>>> Include linux as a test requirement.
>>>
>>> Modified:
>>> cfe/trunk/test/Driver/as-w-option.c
>>>
>>> Modified: cfe/trunk/test/Driver/as-w-option.c
>>> URL:
>>> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/as-w-option.c?rev=374837=374836=374837=diff
>>>
>>> ==
>>> --- cfe/trunk/test/Driver/as-w-option.c (original)
>>> +++ cfe/trunk/test/Driver/as-w-option.c Mon Oct 14 15:51:12 2019
>>> @@ -5,6 +5,9 @@
>>>  // RUN: not %clang %s -c -o %t.o -integrated-as -Wa,--fatal-warnings
>>> 2>&1 | FileCheck --check-prefix=CHECK-AS-FATAL %s
>>>  // RUN: not %clang %s -c -o %t.o -fno-integrated-as
>>> -Wa,--fatal-warnings 2>&1 | FileCheck --check-prefix=CHECK-AS-FATAL %s
>>>
>>> +// REQUIRES: clang-driver
>>> +// REQUIRES: linux
>>> +
>>>  // CHECK-IAS: "-cc1" {{.*}} "-massembler-no-warn"
>>>  // CHECK-NOIAS: "-W"
>>>  // CHECK-AS-NOWARN-NOT: warning:
>>>
>>>
>>> ___
>>> cfe-commits mailing list
>>> cfe-commits@lists.llvm.org
>>> https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
>>>
>> ___
>> cfe-commits mailing list
>> cfe-commits@lists.llvm.org
>> https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
>>
>
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


r374932 - [clang] refactor -Wa,-W test cases.

2019-10-15 Thread Jian Cai via cfe-commits
Author: jcai19
Date: Tue Oct 15 11:17:08 2019
New Revision: 374932

URL: http://llvm.org/viewvc/llvm-project?rev=374932=rev
Log:
[clang] refactor -Wa,-W test cases.

Remove REQUIRES and only keep the clang driver tests, since the
assembler are already tested with -Wa,--no-warn. This way we could run
the test on non-linux platforms and catch breaks on them.

Modified:
cfe/trunk/test/Driver/as-w-option.c

Modified: cfe/trunk/test/Driver/as-w-option.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/as-w-option.c?rev=374932=374931=374932=diff
==
--- cfe/trunk/test/Driver/as-w-option.c (original)
+++ cfe/trunk/test/Driver/as-w-option.c Tue Oct 15 11:17:08 2019
@@ -1,17 +1,7 @@
 // RUN: %clang -### %s -c -o tmp.o -fno-integrated-as -Wa,-W 2>&1 | FileCheck 
-check-prefix=CHECK-NOIAS %s
 // RUN: %clang -### %s -c -o tmp.o -integrated-as -Wa,-W 2>&1 | FileCheck 
-check-prefix=CHECK-IAS %s
-// RUN: %clang %s -c -o %t.o -integrated-as -Wa,-W 2>&1 | FileCheck 
-allow-empty --check-prefix=CHECK-AS-NOWARN %s
-// RUN: %clang %s -c -o %t.o -fno-integrated-as -Wa,-W 2>&1 | FileCheck 
-allow-empty --check-prefix=CHECK-AS-NOWARN %s
-// RUN: not %clang %s -c -o %t.o -integrated-as -Wa,--fatal-warnings 2>&1 | 
FileCheck --check-prefix=CHECK-AS-FATAL %s
-// RUN: not %clang %s -c -o %t.o -fno-integrated-as -Wa,--fatal-warnings 2>&1 
| FileCheck --check-prefix=CHECK-AS-FATAL %s
-
-// REQUIRES: clang-driver
-// REQUIRES: linux
 
 // CHECK-IAS: "-cc1" {{.*}} "-massembler-no-warn"
 // CHECK-NOIAS: "-W"
-// CHECK-AS-NOWARN-NOT: warning:
-// CHECK-AS-FATAL-NOT: warning:
-// CHECK-AS-FATAL: error
 
 __asm(".warning");


___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


r374837 - [clang] add requirements to -Wa,-W test cases.

2019-10-14 Thread Jian Cai via cfe-commits
Author: jcai19
Date: Mon Oct 14 15:51:12 2019
New Revision: 374837

URL: http://llvm.org/viewvc/llvm-project?rev=374837=rev
Log:
[clang] add requirements to -Wa,-W test cases.

Include linux as a test requirement.

Modified:
cfe/trunk/test/Driver/as-w-option.c

Modified: cfe/trunk/test/Driver/as-w-option.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/as-w-option.c?rev=374837=374836=374837=diff
==
--- cfe/trunk/test/Driver/as-w-option.c (original)
+++ cfe/trunk/test/Driver/as-w-option.c Mon Oct 14 15:51:12 2019
@@ -5,6 +5,9 @@
 // RUN: not %clang %s -c -o %t.o -integrated-as -Wa,--fatal-warnings 2>&1 | 
FileCheck --check-prefix=CHECK-AS-FATAL %s
 // RUN: not %clang %s -c -o %t.o -fno-integrated-as -Wa,--fatal-warnings 2>&1 
| FileCheck --check-prefix=CHECK-AS-FATAL %s
 
+// REQUIRES: clang-driver
+// REQUIRES: linux
+
 // CHECK-IAS: "-cc1" {{.*}} "-massembler-no-warn"
 // CHECK-NOIAS: "-W"
 // CHECK-AS-NOWARN-NOT: warning:


___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


r374834 - Add support to -Wa,-W in clang

2019-10-14 Thread Jian Cai via cfe-commits
Author: jcai19
Date: Mon Oct 14 15:28:03 2019
New Revision: 374834

URL: http://llvm.org/viewvc/llvm-project?rev=374834=rev
Log:
Add support to -Wa,-W in clang

Summary:
Currently clang does not support -Wa,-W, which suppresses warning
messages in GNU assembler. Add this option for gcc compatibility.
https://bugs.llvm.org/show_bug.cgi?id=43651. Reland with differential
information.

Reviewers: bcain

Reviewed By: bcain

Subscribers: george.burgess.iv, gbiv, llozano, manojgupta, nickdesaulniers, 
cfe-commits

Tags: #clang

Differential Revision: https://reviews.llvm.org/D68884

Added:
cfe/trunk/test/Driver/as-w-option.c
Modified:
cfe/trunk/lib/Driver/ToolChains/Clang.cpp

Modified: cfe/trunk/lib/Driver/ToolChains/Clang.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChains/Clang.cpp?rev=374834=374833=374834=diff
==
--- cfe/trunk/lib/Driver/ToolChains/Clang.cpp (original)
+++ cfe/trunk/lib/Driver/ToolChains/Clang.cpp Mon Oct 14 15:28:03 2019
@@ -2140,7 +2140,7 @@ static void CollectArgsForIntegratedAsse
 CmdArgs.push_back("-msave-temp-labels");
   } else if (Value == "--fatal-warnings") {
 CmdArgs.push_back("-massembler-fatal-warnings");
-  } else if (Value == "--no-warn") {
+  } else if (Value == "--no-warn" || Value == "-W") {
 CmdArgs.push_back("-massembler-no-warn");
   } else if (Value == "--noexecstack") {
 UseNoExecStack = true;

Added: cfe/trunk/test/Driver/as-w-option.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/as-w-option.c?rev=374834=auto
==
--- cfe/trunk/test/Driver/as-w-option.c (added)
+++ cfe/trunk/test/Driver/as-w-option.c Mon Oct 14 15:28:03 2019
@@ -0,0 +1,14 @@
+// RUN: %clang -### %s -c -o tmp.o -fno-integrated-as -Wa,-W 2>&1 | FileCheck 
-check-prefix=CHECK-NOIAS %s
+// RUN: %clang -### %s -c -o tmp.o -integrated-as -Wa,-W 2>&1 | FileCheck 
-check-prefix=CHECK-IAS %s
+// RUN: %clang %s -c -o %t.o -integrated-as -Wa,-W 2>&1 | FileCheck 
-allow-empty --check-prefix=CHECK-AS-NOWARN %s
+// RUN: %clang %s -c -o %t.o -fno-integrated-as -Wa,-W 2>&1 | FileCheck 
-allow-empty --check-prefix=CHECK-AS-NOWARN %s
+// RUN: not %clang %s -c -o %t.o -integrated-as -Wa,--fatal-warnings 2>&1 | 
FileCheck --check-prefix=CHECK-AS-FATAL %s
+// RUN: not %clang %s -c -o %t.o -fno-integrated-as -Wa,--fatal-warnings 2>&1 
| FileCheck --check-prefix=CHECK-AS-FATAL %s
+
+// CHECK-IAS: "-cc1" {{.*}} "-massembler-no-warn"
+// CHECK-NOIAS: "-W"
+// CHECK-AS-NOWARN-NOT: warning:
+// CHECK-AS-FATAL-NOT: warning:
+// CHECK-AS-FATAL: error
+
+__asm(".warning");


___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


r374833 - Revert "Add support to -Wa,-W in clang"

2019-10-14 Thread Jian Cai via cfe-commits
Author: jcai19
Date: Mon Oct 14 15:28:01 2019
New Revision: 374833

URL: http://llvm.org/viewvc/llvm-project?rev=374833=rev
Log:
Revert "Add support to -Wa,-W in clang"

This reverts commit e72eeca43b9577be2aae55f7603febbf223a6ab3.

Removed:
cfe/trunk/test/Driver/as-w-option.c
Modified:
cfe/trunk/lib/Driver/ToolChains/Clang.cpp

Modified: cfe/trunk/lib/Driver/ToolChains/Clang.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChains/Clang.cpp?rev=374833=374832=374833=diff
==
--- cfe/trunk/lib/Driver/ToolChains/Clang.cpp (original)
+++ cfe/trunk/lib/Driver/ToolChains/Clang.cpp Mon Oct 14 15:28:01 2019
@@ -2140,7 +2140,7 @@ static void CollectArgsForIntegratedAsse
 CmdArgs.push_back("-msave-temp-labels");
   } else if (Value == "--fatal-warnings") {
 CmdArgs.push_back("-massembler-fatal-warnings");
-  } else if (Value == "--no-warn" || Value == "-W") {
+  } else if (Value == "--no-warn") {
 CmdArgs.push_back("-massembler-no-warn");
   } else if (Value == "--noexecstack") {
 UseNoExecStack = true;

Removed: cfe/trunk/test/Driver/as-w-option.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/as-w-option.c?rev=374832=auto
==
--- cfe/trunk/test/Driver/as-w-option.c (original)
+++ cfe/trunk/test/Driver/as-w-option.c (removed)
@@ -1,14 +0,0 @@
-// RUN: %clang -### %s -c -o tmp.o -fno-integrated-as -Wa,-W 2>&1 | FileCheck 
-check-prefix=CHECK-NOIAS %s
-// RUN: %clang -### %s -c -o tmp.o -integrated-as -Wa,-W 2>&1 | FileCheck 
-check-prefix=CHECK-IAS %s
-// RUN: %clang %s -c -o %t.o -integrated-as -Wa,-W 2>&1 | FileCheck 
-allow-empty --check-prefix=CHECK-AS-NOWARN %s
-// RUN: %clang %s -c -o %t.o -fno-integrated-as -Wa,-W 2>&1 | FileCheck 
-allow-empty --check-prefix=CHECK-AS-NOWARN %s
-// RUN: not %clang %s -c -o %t.o -integrated-as -Wa,--fatal-warnings 2>&1 | 
FileCheck --check-prefix=CHECK-AS-FATAL %s
-// RUN: not %clang %s -c -o %t.o -fno-integrated-as -Wa,--fatal-warnings 2>&1 
| FileCheck --check-prefix=CHECK-AS-FATAL %s
-
-// CHECK-IAS: "-cc1" {{.*}} "-massembler-no-warn"
-// CHECK-NOIAS: "-W"
-// CHECK-AS-NOWARN-NOT: warning:
-// CHECK-AS-FATAL-NOT: warning:
-// CHECK-AS-FATAL: error
-
-__asm(".warning");


___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


r374822 - Add support to -Wa,-W in clang

2019-10-14 Thread Jian Cai via cfe-commits
Author: jcai19
Date: Mon Oct 14 14:21:39 2019
New Revision: 374822

URL: http://llvm.org/viewvc/llvm-project?rev=374822=rev
Log:
Add support to -Wa,-W in clang

Currently clang does not support -Wa,-W, which suppresses warning
messages in GNU assembler. Add this option for gcc compatibility.
https://bugs.llvm.org/show_bug.cgi?id=43651

Added:
cfe/trunk/test/Driver/as-w-option.c
Modified:
cfe/trunk/lib/Driver/ToolChains/Clang.cpp

Modified: cfe/trunk/lib/Driver/ToolChains/Clang.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChains/Clang.cpp?rev=374822=374821=374822=diff
==
--- cfe/trunk/lib/Driver/ToolChains/Clang.cpp (original)
+++ cfe/trunk/lib/Driver/ToolChains/Clang.cpp Mon Oct 14 14:21:39 2019
@@ -2140,7 +2140,7 @@ static void CollectArgsForIntegratedAsse
 CmdArgs.push_back("-msave-temp-labels");
   } else if (Value == "--fatal-warnings") {
 CmdArgs.push_back("-massembler-fatal-warnings");
-  } else if (Value == "--no-warn") {
+  } else if (Value == "--no-warn" || Value == "-W") {
 CmdArgs.push_back("-massembler-no-warn");
   } else if (Value == "--noexecstack") {
 UseNoExecStack = true;

Added: cfe/trunk/test/Driver/as-w-option.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/as-w-option.c?rev=374822=auto
==
--- cfe/trunk/test/Driver/as-w-option.c (added)
+++ cfe/trunk/test/Driver/as-w-option.c Mon Oct 14 14:21:39 2019
@@ -0,0 +1,14 @@
+// RUN: %clang -### %s -c -o tmp.o -fno-integrated-as -Wa,-W 2>&1 | FileCheck 
-check-prefix=CHECK-NOIAS %s
+// RUN: %clang -### %s -c -o tmp.o -integrated-as -Wa,-W 2>&1 | FileCheck 
-check-prefix=CHECK-IAS %s
+// RUN: %clang %s -c -o %t.o -integrated-as -Wa,-W 2>&1 | FileCheck 
-allow-empty --check-prefix=CHECK-AS-NOWARN %s
+// RUN: %clang %s -c -o %t.o -fno-integrated-as -Wa,-W 2>&1 | FileCheck 
-allow-empty --check-prefix=CHECK-AS-NOWARN %s
+// RUN: not %clang %s -c -o %t.o -integrated-as -Wa,--fatal-warnings 2>&1 | 
FileCheck --check-prefix=CHECK-AS-FATAL %s
+// RUN: not %clang %s -c -o %t.o -fno-integrated-as -Wa,--fatal-warnings 2>&1 
| FileCheck --check-prefix=CHECK-AS-FATAL %s
+
+// CHECK-IAS: "-cc1" {{.*}} "-massembler-no-warn"
+// CHECK-NOIAS: "-W"
+// CHECK-AS-NOWARN-NOT: warning:
+// CHECK-AS-FATAL-NOT: warning:
+// CHECK-AS-FATAL: error
+
+__asm(".warning");


___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang-tools-extra] r372037 - [clang-tidy] add checks to bugprone-posix-return

2019-09-16 Thread Jian Cai via cfe-commits
Author: jcai19
Date: Mon Sep 16 14:43:56 2019
New Revision: 372037

URL: http://llvm.org/viewvc/llvm-project?rev=372037=rev
Log:
[clang-tidy] add checks to bugprone-posix-return

This check now also checks if any calls to pthread_* functions expect negative 
return values. These functions return either 0 on success or an errno on 
failure, which is positive only.

Modified:
clang-tools-extra/trunk/clang-tidy/bugprone/PosixReturnCheck.cpp
clang-tools-extra/trunk/clang-tidy/bugprone/PosixReturnCheck.h
clang-tools-extra/trunk/docs/ReleaseNotes.rst
clang-tools-extra/trunk/docs/clang-tidy/checks/bugprone-posix-return.rst
clang-tools-extra/trunk/test/clang-tidy/bugprone-posix-return.cpp

Modified: clang-tools-extra/trunk/clang-tidy/bugprone/PosixReturnCheck.cpp
URL: 
http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/bugprone/PosixReturnCheck.cpp?rev=372037=372036=372037=diff
==
--- clang-tools-extra/trunk/clang-tidy/bugprone/PosixReturnCheck.cpp (original)
+++ clang-tools-extra/trunk/clang-tidy/bugprone/PosixReturnCheck.cpp Mon Sep 16 
14:43:56 2019
@@ -28,26 +28,31 @@ static StringRef getFunctionSpelling(con
 }
 
 void PosixReturnCheck::registerMatchers(MatchFinder *Finder) {
-  Finder->addMatcher(binaryOperator(hasOperatorName("<"),
-hasLHS(callExpr(callee(functionDecl(
-matchesName("^::posix_"),
-unless(hasName("::posix_openpt")),
-hasRHS(integerLiteral(equals(0
- .bind("ltzop"),
- this);
-  Finder->addMatcher(binaryOperator(hasOperatorName(">="),
-hasLHS(callExpr(callee(functionDecl(
-matchesName("^::posix_"),
-unless(hasName("::posix_openpt")),
-hasRHS(integerLiteral(equals(0
- .bind("atop"),
- this);
+  Finder->addMatcher(
+  binaryOperator(
+  hasOperatorName("<"),
+  hasLHS(callExpr(callee(functionDecl(
+  anyOf(matchesName("^::posix_"), matchesName("^::pthread_")),
+  unless(hasName("::posix_openpt")),
+  hasRHS(integerLiteral(equals(0
+  .bind("ltzop"),
+  this);
+  Finder->addMatcher(
+  binaryOperator(
+  hasOperatorName(">="),
+  hasLHS(callExpr(callee(functionDecl(
+  anyOf(matchesName("^::posix_"), matchesName("^::pthread_")),
+  unless(hasName("::posix_openpt")),
+  hasRHS(integerLiteral(equals(0
+  .bind("atop"),
+  this);
   Finder->addMatcher(
   binaryOperator(
   anyOf(hasOperatorName("=="), hasOperatorName("!="),
 hasOperatorName("<="), hasOperatorName("<")),
   hasLHS(callExpr(callee(functionDecl(
-  matchesName("^::posix_"), unless(hasName("::posix_openpt")),
+  anyOf(matchesName("^::posix_"), matchesName("^::pthread_")),
+  unless(hasName("::posix_openpt")),
   hasRHS(unaryOperator(hasOperatorName("-"),
hasUnaryOperand(integerLiteral()
   .bind("binop"),

Modified: clang-tools-extra/trunk/clang-tidy/bugprone/PosixReturnCheck.h
URL: 
http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/bugprone/PosixReturnCheck.h?rev=372037=372036=372037=diff
==
--- clang-tools-extra/trunk/clang-tidy/bugprone/PosixReturnCheck.h (original)
+++ clang-tools-extra/trunk/clang-tidy/bugprone/PosixReturnCheck.h Mon Sep 16 
14:43:56 2019
@@ -1,4 +1,4 @@
-//===--- PosixReturnCheck.h - clang-tidy-*- C++ 
-*-===//
+//===--- PosixReturnCheck.h - clang-tidy *- C++ 
-*-===//
 //
 // Part of the LLVM Project, under the Apache License v2.0 with LLVM 
Exceptions.
 // See https://llvm.org/LICENSE.txt for license information.

Modified: clang-tools-extra/trunk/docs/ReleaseNotes.rst
URL: 
http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/docs/ReleaseNotes.rst?rev=372037=372036=372037=diff
==
--- clang-tools-extra/trunk/docs/ReleaseNotes.rst (original)
+++ clang-tools-extra/trunk/docs/ReleaseNotes.rst Mon Sep 16 14:43:56 2019
@@ -91,6 +91,11 @@ Improvements to clang-tidy
   Finds historical use of ``unsigned`` to hold vregs and physregs and rewrites
   them to use ``Register``
 
+- Improved :doc:`bugprone-posix-return
+  ` check.
+
+  Now also checks if any calls to ``pthread_*`` functions expect negative 
return
+  values.
 
 Improvements to include-fixer
 -

Modified: 

r369173 - Reland "[ARM] push LR before __gnu_mcount_nc"

2019-08-16 Thread Jian Cai via cfe-commits
Author: jcai19
Date: Fri Aug 16 16:30:16 2019
New Revision: 369173

URL: http://llvm.org/viewvc/llvm-project?rev=369173=rev
Log:
Reland "[ARM] push LR before __gnu_mcount_nc"

This relands r369147 with fixes to unit tests.

https://reviews.llvm.org/D65019

Modified:
cfe/trunk/lib/Basic/Targets/ARM.cpp
cfe/trunk/test/Frontend/gnu-mcount.c

Modified: cfe/trunk/lib/Basic/Targets/ARM.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Basic/Targets/ARM.cpp?rev=369173=369172=369173=diff
==
--- cfe/trunk/lib/Basic/Targets/ARM.cpp (original)
+++ cfe/trunk/lib/Basic/Targets/ARM.cpp Fri Aug 16 16:30:16 2019
@@ -322,7 +322,7 @@ ARMTargetInfo::ARMTargetInfo(const llvm:
   if (Triple.getOS() == llvm::Triple::Linux ||
   Triple.getOS() == llvm::Triple::UnknownOS)
 this->MCountName = Opts.EABIVersion == llvm::EABI::GNU
-   ? "\01__gnu_mcount_nc"
+   ? "llvm.arm.gnu.eabi.mcount"
: "\01mcount";
 
   SoftFloatABI = llvm::is_contained(Opts.FeaturesAsWritten, "+soft-float-abi");

Modified: cfe/trunk/test/Frontend/gnu-mcount.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Frontend/gnu-mcount.c?rev=369173=369172=369173=diff
==
--- cfe/trunk/test/Frontend/gnu-mcount.c (original)
+++ cfe/trunk/test/Frontend/gnu-mcount.c Fri Aug 16 16:30:16 2019
@@ -66,7 +66,7 @@ int f() {
 // CHECK-ARM64-EABI-OPENBSD: attributes #{{[0-9]+}} = { 
{{.*}}"instrument-function-entry-inlined"="__mcount"{{.*}} }
 // CHECK-ARM64-EABI-OPENBSD-NOT: attributes #{{[0-9]+}} = { 
{{.*}}"instrument-function-entry-inlined"="\01__gnu_mcount_nc"{{.*}} }
 // CHECK-ARM-EABI-MEABI-GNU-NOT: attributes #{{[0-9]+}} = { 
{{.*}}"instrument-function-entry-inlined"="mcount"{{.*}} }
-// CHECK-ARM-EABI-MEABI-GNU: attributes #{{[0-9]+}} = { 
{{.*}}"instrument-function-entry-inlined"="\01__gnu_mcount_nc"{{.*}} }
+// CHECK-ARM-EABI-MEABI-GNU: attributes #{{[0-9]+}} = { 
{{.*}}"instrument-function-entry-inlined"="llvm.arm.gnu.eabi.mcount"{{.*}} }
 // CHECK-ARM-EABI-RTEMS: attributes #{{[0-9]+}} = { 
{{.*}}"instrument-function-entry-inlined"="mcount"{{.*}} }
 // CHECK-ARM-EABI-RTEMS-NOT: attributes #{{[0-9]+}} = { 
{{.*}}"instrument-function-entry-inlined"="\01__gnu_mcount_nc"{{.*}} }
 // CHECK-ARM64-EABI-RTEMS: attributes #{{[0-9]+}} = { 
{{.*}}"instrument-function-entry-inlined"="mcount"{{.*}} }


___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


r369149 - Revert "[ARM] push LR before __gnu_mcount_nc"

2019-08-16 Thread Jian Cai via cfe-commits
Author: jcai19
Date: Fri Aug 16 13:40:21 2019
New Revision: 369149

URL: http://llvm.org/viewvc/llvm-project?rev=369149=rev
Log:
Revert "[ARM] push LR before __gnu_mcount_nc"

This reverts commit f4cf3b959333f62b7a7b2d7771f7010c9d8da388.

Modified:
cfe/trunk/lib/Basic/Targets/ARM.cpp

Modified: cfe/trunk/lib/Basic/Targets/ARM.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Basic/Targets/ARM.cpp?rev=369149=369148=369149=diff
==
--- cfe/trunk/lib/Basic/Targets/ARM.cpp (original)
+++ cfe/trunk/lib/Basic/Targets/ARM.cpp Fri Aug 16 13:40:21 2019
@@ -322,7 +322,7 @@ ARMTargetInfo::ARMTargetInfo(const llvm:
   if (Triple.getOS() == llvm::Triple::Linux ||
   Triple.getOS() == llvm::Triple::UnknownOS)
 this->MCountName = Opts.EABIVersion == llvm::EABI::GNU
-   ? "llvm.arm.gnu.eabi.mcount"
+   ? "\01__gnu_mcount_nc"
: "\01mcount";
 
   SoftFloatABI = llvm::is_contained(Opts.FeaturesAsWritten, "+soft-float-abi");


___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


r369147 - [ARM] push LR before __gnu_mcount_nc

2019-08-16 Thread Jian Cai via cfe-commits
Author: jcai19
Date: Fri Aug 16 13:21:08 2019
New Revision: 369147

URL: http://llvm.org/viewvc/llvm-project?rev=369147=rev
Log:
[ARM] push LR before __gnu_mcount_nc

Push LR register before calling __gnu_mcount_nc as it expects the value of LR 
register to be the top value of
the stack on ARM32.

Differential Revision: https://reviews.llvm.org/D65019

Modified:
cfe/trunk/lib/Basic/Targets/ARM.cpp

Modified: cfe/trunk/lib/Basic/Targets/ARM.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Basic/Targets/ARM.cpp?rev=369147=369146=369147=diff
==
--- cfe/trunk/lib/Basic/Targets/ARM.cpp (original)
+++ cfe/trunk/lib/Basic/Targets/ARM.cpp Fri Aug 16 13:21:08 2019
@@ -322,7 +322,7 @@ ARMTargetInfo::ARMTargetInfo(const llvm:
   if (Triple.getOS() == llvm::Triple::Linux ||
   Triple.getOS() == llvm::Triple::UnknownOS)
 this->MCountName = Opts.EABIVersion == llvm::EABI::GNU
-   ? "\01__gnu_mcount_nc"
+   ? "llvm.arm.gnu.eabi.mcount"
: "\01mcount";
 
   SoftFloatABI = llvm::is_contained(Opts.FeaturesAsWritten, "+soft-float-abi");


___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang-tools-extra] r365380 - A test commit following 'Obtaining Commit Access' (https://llvm.org/docs/DeveloperPolicy.html#obtaining-commit-access)

2019-07-08 Thread Jian Cai via cfe-commits
Author: jcai19
Date: Mon Jul  8 12:53:22 2019
New Revision: 365380

URL: http://llvm.org/viewvc/llvm-project?rev=365380=rev
Log:
A test commit following 'Obtaining Commit Access' 
(https://llvm.org/docs/DeveloperPolicy.html#obtaining-commit-access)

Modified:
clang-tools-extra/trunk/test/clang-tidy/bugprone-posix-return.cpp

Modified: clang-tools-extra/trunk/test/clang-tidy/bugprone-posix-return.cpp
URL: 
http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/clang-tidy/bugprone-posix-return.cpp?rev=365380=365379=365380=diff
==
--- clang-tools-extra/trunk/test/clang-tidy/bugprone-posix-return.cpp (original)
+++ clang-tools-extra/trunk/test/clang-tidy/bugprone-posix-return.cpp Mon Jul  
8 12:53:22 2019
@@ -4,9 +4,9 @@
 #define ZERO 0
 #define NEGATIVE_ONE -1
 
+typedef int pid_t;
 typedef long off_t;
 typedef decltype(sizeof(int)) size_t;
-typedef int pid_t;
 typedef struct __posix_spawn_file_actions* posix_spawn_file_actions_t;
 typedef struct __posix_spawnattr* posix_spawnattr_t;
 


___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits