[PATCH] D158218: [CMake] Deprecate DEFAULT_SYSROOT and GCC_INSTALL_PREFIX

2023-08-20 Thread Brian Cain via Phabricator via cfe-commits
bcain added inline comments.



Comment at: clang/CMakeLists.txt:179-183
+if(DEFAULT_SYSROOT)
+  message(WARNING "DEFAULT_SYSROOT is deprecated and will be removed. Use "
+"configuration files 
(https://clang.llvm.org/docs/UsersManual.html#configuration-files)"
+"to specify the default --sysroot=")
+endif()

MaskRay wrote:
> MaskRay wrote:
> > bcain wrote:
> > > MaskRay wrote:
> > > > bcain wrote:
> > > > > At one time I believe that the clang configuration files could not 
> > > > > specify paths relative to the clang executable.  AFAICT 
> > > > > `DEFAULT_SYSROOT` does support this.
> > > > > 
> > > > > But if I'm mistaken about that can we add an example to the docs at 
> > > > > https://clang.llvm.org/docs/UsersManual.html#configuration-files 
> > > > > illustrating how to use a relative sysroot?
> > > > Clang configuration files just complement user-specified command line 
> > > > options. As one can do `--sysroot=./sysroot`, one can add 
> > > > `--sysroot=./sysroot` to a configuration file, too.
> > > > 
> > > > If you think having a sysroot example is useful, I can add
> > > > 
> > > > ```
> > > > # Relative --sysroot
> > > > --sysroot=./sysroot
> > > > ```
> > > > before
> > > > clang/docs/UsersManual.rst:1018 `-c --target=x86_64-unknown-linux-gnu`
> > > IIUC: when clang takes a `--sysroot=./sysroot` argument, it will 
> > > interpret that path as a prefix to the files it wants to access.  So the 
> > > system will treat it as relative to the environment's `cwd`, correct?
> > > 
> > > But when `DEFAULT_SYSROOT` is set to a relative path, that relative path 
> > > is considered to be relative to `clang`.  Therefore a convenient feature 
> > > that we take advantage of is setting it to something like 
> > > `../target/hexagon-unknown-linux-musl` in order to have anyone who 
> > > invokes `hexagon-unknown-linux-clang` from any path be able to find the 
> > > includes and libraries distributed with the toolchain without having to 
> > > specify the sysroot.
> > > 
> > > Maybe there's a better way to achieve this without the need for a 
> > > relative `DEFAULT_SYSROOT` but it's been very useful and the config files 
> > > do not seem suited to replace it.
> > `--sysroot=` is used as a prefix to certain files, primarily libc and GCC 
> > installations.
> > 
> > `-DDEFAULT_SYSROOT=...` just changes `clang/lib/Driver/Driver.cpp:203` 
> > `SysRoot(DEFAULT_SYSROOT)`.
> > There is no magic related to the `clang` executable path. CMake doesn't do 
> > any magic, either.
> Ah, sorry. There is magic: D76653 (@sbc100).
> Ah, sorry. There is magic: D76653 (@sbc100).

Okay, so should we abandon the plan to deprecate `DEFAULT_SYSROOT`?  Or could 
we add a corresponding feature to config files if we want to get rid of it?


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D158218/new/

https://reviews.llvm.org/D158218

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


[PATCH] D158218: [CMake] Deprecate DEFAULT_SYSROOT and GCC_INSTALL_PREFIX

2023-08-18 Thread Brian Cain via Phabricator via cfe-commits
bcain added inline comments.



Comment at: clang/CMakeLists.txt:179-183
+if(DEFAULT_SYSROOT)
+  message(WARNING "DEFAULT_SYSROOT is deprecated and will be removed. Use "
+"configuration files 
(https://clang.llvm.org/docs/UsersManual.html#configuration-files)"
+"to specify the default --sysroot=")
+endif()

MaskRay wrote:
> bcain wrote:
> > At one time I believe that the clang configuration files could not specify 
> > paths relative to the clang executable.  AFAICT `DEFAULT_SYSROOT` does 
> > support this.
> > 
> > But if I'm mistaken about that can we add an example to the docs at 
> > https://clang.llvm.org/docs/UsersManual.html#configuration-files 
> > illustrating how to use a relative sysroot?
> Clang configuration files just complement user-specified command line 
> options. As one can do `--sysroot=./sysroot`, one can add 
> `--sysroot=./sysroot` to a configuration file, too.
> 
> If you think having a sysroot example is useful, I can add
> 
> ```
> # Relative --sysroot
> --sysroot=./sysroot
> ```
> before
> clang/docs/UsersManual.rst:1018 `-c --target=x86_64-unknown-linux-gnu`
IIUC: when clang takes a `--sysroot=./sysroot` argument, it will interpret that 
path as a prefix to the files it wants to access.  So the system will treat it 
as relative to the environment's `cwd`, correct?

But when `DEFAULT_SYSROOT` is set to a relative path, that relative path is 
considered to be relative to `clang`.  Therefore a convenient feature that we 
take advantage of is setting it to something like 
`../target/hexagon-unknown-linux-musl` in order to have anyone who invokes 
`hexagon-unknown-linux-clang` from any path be able to find the includes and 
libraries distributed with the toolchain without having to specify the sysroot.

Maybe there's a better way to achieve this without the need for a relative 
`DEFAULT_SYSROOT` but it's been very useful and the config files do not seem 
suited to replace it.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D158218/new/

https://reviews.llvm.org/D158218

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


[PATCH] D158218: [CMake] Deprecate DEFAULT_SYSROOT and GCC_INSTALL_PREFIX

2023-08-18 Thread Brian Cain via Phabricator via cfe-commits
bcain added inline comments.



Comment at: clang/CMakeLists.txt:179-183
+if(DEFAULT_SYSROOT)
+  message(WARNING "DEFAULT_SYSROOT is deprecated and will be removed. Use "
+"configuration files 
(https://clang.llvm.org/docs/UsersManual.html#configuration-files)"
+"to specify the default --sysroot=")
+endif()

At one time I believe that the clang configuration files could not specify 
paths relative to the clang executable.  AFAICT `DEFAULT_SYSROOT` does support 
this.

But if I'm mistaken about that can we add an example to the docs at 
https://clang.llvm.org/docs/UsersManual.html#configuration-files illustrating 
how to use a relative sysroot?


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D158218/new/

https://reviews.llvm.org/D158218

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


[PATCH] D156771: [clang][hexagon] Handle library path arguments earlier

2023-08-07 Thread Brian Cain 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 rG5bc4b34a3aa9: [clang][hexagon] Handle library path arguments 
earlier (authored by androm3da).

Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D156771/new/

https://reviews.llvm.org/D156771

Files:
  clang/lib/Driver/ToolChains/Hexagon.cpp
  clang/test/Driver/hexagon-toolchain-linux.c


Index: clang/test/Driver/hexagon-toolchain-linux.c
===
--- clang/test/Driver/hexagon-toolchain-linux.c
+++ clang/test/Driver/hexagon-toolchain-linux.c
@@ -120,8 +120,12 @@
 // CHECK009-SAME: {{^}} "-internal-isystem" "[[RESOURCE]]/include"
 // CHECK009-SAME: {{^}} "-internal-externc-isystem" 
"[[INSTALLED_DIR]]/../target/hexagon/include"
 
-// RUN: %clang -fdriver-only -Werror -v -L/tmp \
-// RUN:--target=hexagon-unknown-linux-musl %s 2>&1 \
+// RUN: %clang -Werror -L/tmp \
+// RUN:--target=hexagon-unknown-linux-musl %s -### 2>&1 \
 // RUN:| FileCheck -check-prefix=CHECK010 %s
 // CHECK010:   InstalledDir: [[INSTALLED_DIR:.+]]
+// CHECK010-NOT:  "-lstandalone"
+// CHECK010-NOT:  crt0_standalone.o
+// CHECK010:   crt1.o
 // CHECK010:   "-L/tmp"
+// CHECK010-NOT:  "-lstandalone"
Index: clang/lib/Driver/ToolChains/Hexagon.cpp
===
--- clang/lib/Driver/ToolChains/Hexagon.cpp
+++ clang/lib/Driver/ToolChains/Hexagon.cpp
@@ -383,6 +383,11 @@
   if (HTC.ShouldLinkCXXStdlib(Args))
 HTC.AddCXXStdlibLibArgs(Args, CmdArgs);
 }
+const ToolChain::path_list  = HTC.getFilePaths();
+for (const auto  : LibPaths)
+  CmdArgs.push_back(Args.MakeArgString(StringRef("-L") + LibPath));
+Args.ClaimAllArgs(options::OPT_L);
+return;
   }
 
   
//


Index: clang/test/Driver/hexagon-toolchain-linux.c
===
--- clang/test/Driver/hexagon-toolchain-linux.c
+++ clang/test/Driver/hexagon-toolchain-linux.c
@@ -120,8 +120,12 @@
 // CHECK009-SAME: {{^}} "-internal-isystem" "[[RESOURCE]]/include"
 // CHECK009-SAME: {{^}} "-internal-externc-isystem" "[[INSTALLED_DIR]]/../target/hexagon/include"
 
-// RUN: %clang -fdriver-only -Werror -v -L/tmp \
-// RUN:--target=hexagon-unknown-linux-musl %s 2>&1 \
+// RUN: %clang -Werror -L/tmp \
+// RUN:--target=hexagon-unknown-linux-musl %s -### 2>&1 \
 // RUN:| FileCheck -check-prefix=CHECK010 %s
 // CHECK010:   InstalledDir: [[INSTALLED_DIR:.+]]
+// CHECK010-NOT:  "-lstandalone"
+// CHECK010-NOT:  crt0_standalone.o
+// CHECK010:   crt1.o
 // CHECK010:   "-L/tmp"
+// CHECK010-NOT:  "-lstandalone"
Index: clang/lib/Driver/ToolChains/Hexagon.cpp
===
--- clang/lib/Driver/ToolChains/Hexagon.cpp
+++ clang/lib/Driver/ToolChains/Hexagon.cpp
@@ -383,6 +383,11 @@
   if (HTC.ShouldLinkCXXStdlib(Args))
 HTC.AddCXXStdlibLibArgs(Args, CmdArgs);
 }
+const ToolChain::path_list  = HTC.getFilePaths();
+for (const auto  : LibPaths)
+  CmdArgs.push_back(Args.MakeArgString(StringRef("-L") + LibPath));
+Args.ClaimAllArgs(options::OPT_L);
+return;
   }
 
   //
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D156771: [clang][hexagon] Handle library path arguments earlier

2023-08-03 Thread Brian Cain via Phabricator via cfe-commits
bcain added a comment.

ping?  any concerns about this change?


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D156771/new/

https://reviews.llvm.org/D156771

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


[PATCH] D156771: [clang][hexagon] Handle library path arguments earlier

2023-08-01 Thread Brian Cain via Phabricator via cfe-commits
bcain updated this revision to Diff 546314.
bcain added a comment.

Changed test to use `-Werror -###` instead of `-fdriver-only -v -Werror`.

Fixed indentation / `clang-format`.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D156771/new/

https://reviews.llvm.org/D156771

Files:
  clang/lib/Driver/ToolChains/Hexagon.cpp
  clang/test/Driver/hexagon-toolchain-linux.c


Index: clang/test/Driver/hexagon-toolchain-linux.c
===
--- clang/test/Driver/hexagon-toolchain-linux.c
+++ clang/test/Driver/hexagon-toolchain-linux.c
@@ -120,8 +120,12 @@
 // CHECK009-SAME: {{^}} "-internal-isystem" "[[RESOURCE]]/include"
 // CHECK009-SAME: {{^}} "-internal-externc-isystem" 
"[[INSTALLED_DIR]]/../target/hexagon/include"
 
-// RUN: %clang -fdriver-only -Werror -v -L/tmp \
-// RUN:--target=hexagon-unknown-linux-musl %s 2>&1 \
+// RUN: %clang -Werror -L/tmp \
+// RUN:--target=hexagon-unknown-linux-musl %s -### 2>&1 \
 // RUN:| FileCheck -check-prefix=CHECK010 %s
 // CHECK010:   InstalledDir: [[INSTALLED_DIR:.+]]
+// CHECK010-NOT:  "-lstandalone"
+// CHECK010-NOT:  crt0_standalone.o
+// CHECK010:   crt1.o
 // CHECK010:   "-L/tmp"
+// CHECK010-NOT:  "-lstandalone"
Index: clang/lib/Driver/ToolChains/Hexagon.cpp
===
--- clang/lib/Driver/ToolChains/Hexagon.cpp
+++ clang/lib/Driver/ToolChains/Hexagon.cpp
@@ -383,6 +383,11 @@
   if (HTC.ShouldLinkCXXStdlib(Args))
 HTC.AddCXXStdlibLibArgs(Args, CmdArgs);
 }
+const ToolChain::path_list  = HTC.getFilePaths();
+for (const auto  : LibPaths)
+  CmdArgs.push_back(Args.MakeArgString(StringRef("-L") + LibPath));
+Args.ClaimAllArgs(options::OPT_L);
+return;
   }
 
   
//


Index: clang/test/Driver/hexagon-toolchain-linux.c
===
--- clang/test/Driver/hexagon-toolchain-linux.c
+++ clang/test/Driver/hexagon-toolchain-linux.c
@@ -120,8 +120,12 @@
 // CHECK009-SAME: {{^}} "-internal-isystem" "[[RESOURCE]]/include"
 // CHECK009-SAME: {{^}} "-internal-externc-isystem" "[[INSTALLED_DIR]]/../target/hexagon/include"
 
-// RUN: %clang -fdriver-only -Werror -v -L/tmp \
-// RUN:--target=hexagon-unknown-linux-musl %s 2>&1 \
+// RUN: %clang -Werror -L/tmp \
+// RUN:--target=hexagon-unknown-linux-musl %s -### 2>&1 \
 // RUN:| FileCheck -check-prefix=CHECK010 %s
 // CHECK010:   InstalledDir: [[INSTALLED_DIR:.+]]
+// CHECK010-NOT:  "-lstandalone"
+// CHECK010-NOT:  crt0_standalone.o
+// CHECK010:   crt1.o
 // CHECK010:   "-L/tmp"
+// CHECK010-NOT:  "-lstandalone"
Index: clang/lib/Driver/ToolChains/Hexagon.cpp
===
--- clang/lib/Driver/ToolChains/Hexagon.cpp
+++ clang/lib/Driver/ToolChains/Hexagon.cpp
@@ -383,6 +383,11 @@
   if (HTC.ShouldLinkCXXStdlib(Args))
 HTC.AddCXXStdlibLibArgs(Args, CmdArgs);
 }
+const ToolChain::path_list  = HTC.getFilePaths();
+for (const auto  : LibPaths)
+  CmdArgs.push_back(Args.MakeArgString(StringRef("-L") + LibPath));
+Args.ClaimAllArgs(options::OPT_L);
+return;
   }
 
   //
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D156771: [clang][hexagon] Handle library path arguments earlier

2023-07-31 Thread Brian Cain via Phabricator via cfe-commits
bcain created this revision.
bcain added reviewers: kparzysz, sidneym, MaskRay.
Herald added a project: All.
bcain requested review of this revision.
Herald added a project: clang.
Herald added a subscriber: cfe-commits.

The removal of the early return in 96832a6bf7e0e7f1e8d634d38c44a1b32d512923 

was an error: it would include the 'standalone' library that's not used
by linux.

Instead we reproduce the library path handling in the linux/musl block.


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D156771

Files:
  clang/lib/Driver/ToolChains/Hexagon.cpp
  clang/test/Driver/hexagon-toolchain-linux.c


Index: clang/test/Driver/hexagon-toolchain-linux.c
===
--- clang/test/Driver/hexagon-toolchain-linux.c
+++ clang/test/Driver/hexagon-toolchain-linux.c
@@ -124,4 +124,8 @@
 // RUN:--target=hexagon-unknown-linux-musl %s 2>&1 \
 // RUN:| FileCheck -check-prefix=CHECK010 %s
 // CHECK010:   InstalledDir: [[INSTALLED_DIR:.+]]
+// CHECK010-NOT:  "-lstandalone"
+// CHECK010-NOT:  crt0_standalone.o
+// CHECK010:   crt1.o
 // CHECK010:   "-L/tmp"
+// CHECK010-NOT:  "-lstandalone"
Index: clang/lib/Driver/ToolChains/Hexagon.cpp
===
--- clang/lib/Driver/ToolChains/Hexagon.cpp
+++ clang/lib/Driver/ToolChains/Hexagon.cpp
@@ -383,6 +383,11 @@
   if (HTC.ShouldLinkCXXStdlib(Args))
 HTC.AddCXXStdlibLibArgs(Args, CmdArgs);
 }
+const ToolChain::path_list  = HTC.getFilePaths();
+for (const auto  : LibPaths)
+CmdArgs.push_back(Args.MakeArgString(StringRef("-L") + LibPath));
+Args.ClaimAllArgs(options::OPT_L);
+return;
   }
 
   
//


Index: clang/test/Driver/hexagon-toolchain-linux.c
===
--- clang/test/Driver/hexagon-toolchain-linux.c
+++ clang/test/Driver/hexagon-toolchain-linux.c
@@ -124,4 +124,8 @@
 // RUN:--target=hexagon-unknown-linux-musl %s 2>&1 \
 // RUN:| FileCheck -check-prefix=CHECK010 %s
 // CHECK010:   InstalledDir: [[INSTALLED_DIR:.+]]
+// CHECK010-NOT:  "-lstandalone"
+// CHECK010-NOT:  crt0_standalone.o
+// CHECK010:   crt1.o
 // CHECK010:   "-L/tmp"
+// CHECK010-NOT:  "-lstandalone"
Index: clang/lib/Driver/ToolChains/Hexagon.cpp
===
--- clang/lib/Driver/ToolChains/Hexagon.cpp
+++ clang/lib/Driver/ToolChains/Hexagon.cpp
@@ -383,6 +383,11 @@
   if (HTC.ShouldLinkCXXStdlib(Args))
 HTC.AddCXXStdlibLibArgs(Args, CmdArgs);
 }
+const ToolChain::path_list  = HTC.getFilePaths();
+for (const auto  : LibPaths)
+CmdArgs.push_back(Args.MakeArgString(StringRef("-L") + LibPath));
+Args.ClaimAllArgs(options::OPT_L);
+return;
   }
 
   //
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D156330: [hexagon] restore library path arguments

2023-07-27 Thread Brian Cain via Phabricator via cfe-commits
This revision was landed with ongoing or failed builds.
This revision was automatically updated to reflect the committed changes.
Closed by commit rG96832a6bf7e0: [hexagon] restore library path arguments 
(authored by androm3da).

Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D156330/new/

https://reviews.llvm.org/D156330

Files:
  clang/lib/Driver/ToolChains/Hexagon.cpp
  clang/test/Driver/hexagon-toolchain-linux.c


Index: clang/test/Driver/hexagon-toolchain-linux.c
===
--- clang/test/Driver/hexagon-toolchain-linux.c
+++ clang/test/Driver/hexagon-toolchain-linux.c
@@ -119,3 +119,9 @@
 // CHECK009:   "-resource-dir" "[[RESOURCE:[^"]+]]"
 // CHECK009-SAME: {{^}} "-internal-isystem" "[[RESOURCE]]/include"
 // CHECK009-SAME: {{^}} "-internal-externc-isystem" 
"[[INSTALLED_DIR]]/../target/hexagon/include"
+
+// RUN: %clang -fdriver-only -Werror -v -L/tmp \
+// RUN:--target=hexagon-unknown-linux-musl %s 2>&1 \
+// RUN:| FileCheck -check-prefix=CHECK010 %s
+// CHECK010:   InstalledDir: [[INSTALLED_DIR:.+]]
+// CHECK010:   "-L/tmp"
Index: clang/lib/Driver/ToolChains/Hexagon.cpp
===
--- clang/lib/Driver/ToolChains/Hexagon.cpp
+++ clang/lib/Driver/ToolChains/Hexagon.cpp
@@ -383,7 +383,6 @@
   if (HTC.ShouldLinkCXXStdlib(Args))
 HTC.AddCXXStdlibLibArgs(Args, CmdArgs);
 }
-return;
   }
 
   
//
@@ -441,6 +440,7 @@
   const ToolChain::path_list  = HTC.getFilePaths();
   for (const auto  : LibPaths)
 CmdArgs.push_back(Args.MakeArgString(StringRef("-L") + LibPath));
+  Args.ClaimAllArgs(options::OPT_L);
 
   
//
   //


Index: clang/test/Driver/hexagon-toolchain-linux.c
===
--- clang/test/Driver/hexagon-toolchain-linux.c
+++ clang/test/Driver/hexagon-toolchain-linux.c
@@ -119,3 +119,9 @@
 // CHECK009:   "-resource-dir" "[[RESOURCE:[^"]+]]"
 // CHECK009-SAME: {{^}} "-internal-isystem" "[[RESOURCE]]/include"
 // CHECK009-SAME: {{^}} "-internal-externc-isystem" "[[INSTALLED_DIR]]/../target/hexagon/include"
+
+// RUN: %clang -fdriver-only -Werror -v -L/tmp \
+// RUN:--target=hexagon-unknown-linux-musl %s 2>&1 \
+// RUN:| FileCheck -check-prefix=CHECK010 %s
+// CHECK010:   InstalledDir: [[INSTALLED_DIR:.+]]
+// CHECK010:   "-L/tmp"
Index: clang/lib/Driver/ToolChains/Hexagon.cpp
===
--- clang/lib/Driver/ToolChains/Hexagon.cpp
+++ clang/lib/Driver/ToolChains/Hexagon.cpp
@@ -383,7 +383,6 @@
   if (HTC.ShouldLinkCXXStdlib(Args))
 HTC.AddCXXStdlibLibArgs(Args, CmdArgs);
 }
-return;
   }
 
   //
@@ -441,6 +440,7 @@
   const ToolChain::path_list  = HTC.getFilePaths();
   for (const auto  : LibPaths)
 CmdArgs.push_back(Args.MakeArgString(StringRef("-L") + LibPath));
+  Args.ClaimAllArgs(options::OPT_L);
 
   //
   //
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D156330: [hexagon] restore library path arguments

2023-07-26 Thread Brian Cain via Phabricator via cfe-commits
bcain updated this revision to Diff 544533.
bcain added a comment.

Too hasty w/the last update - forgot to remove the `-###`.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D156330/new/

https://reviews.llvm.org/D156330

Files:
  clang/lib/Driver/ToolChains/Hexagon.cpp
  clang/test/Driver/hexagon-toolchain-linux.c


Index: clang/test/Driver/hexagon-toolchain-linux.c
===
--- clang/test/Driver/hexagon-toolchain-linux.c
+++ clang/test/Driver/hexagon-toolchain-linux.c
@@ -119,3 +119,9 @@
 // CHECK009:   "-resource-dir" "[[RESOURCE:[^"]+]]"
 // CHECK009-SAME: {{^}} "-internal-isystem" "[[RESOURCE]]/include"
 // CHECK009-SAME: {{^}} "-internal-externc-isystem" 
"[[INSTALLED_DIR]]/../target/hexagon/include"
+
+// RUN: %clang -fdriver-only -Werror -v -L/tmp \
+// RUN:--target=hexagon-unknown-linux-musl %s 2>&1 \
+// RUN:| FileCheck -check-prefix=CHECK010 %s
+// CHECK010:   InstalledDir: [[INSTALLED_DIR:.+]]
+// CHECK010:   "-L/tmp"
Index: clang/lib/Driver/ToolChains/Hexagon.cpp
===
--- clang/lib/Driver/ToolChains/Hexagon.cpp
+++ clang/lib/Driver/ToolChains/Hexagon.cpp
@@ -383,7 +383,6 @@
   if (HTC.ShouldLinkCXXStdlib(Args))
 HTC.AddCXXStdlibLibArgs(Args, CmdArgs);
 }
-return;
   }
 
   
//
@@ -441,6 +440,7 @@
   const ToolChain::path_list  = HTC.getFilePaths();
   for (const auto  : LibPaths)
 CmdArgs.push_back(Args.MakeArgString(StringRef("-L") + LibPath));
+  Args.ClaimAllArgs(options::OPT_L);
 
   
//
   //


Index: clang/test/Driver/hexagon-toolchain-linux.c
===
--- clang/test/Driver/hexagon-toolchain-linux.c
+++ clang/test/Driver/hexagon-toolchain-linux.c
@@ -119,3 +119,9 @@
 // CHECK009:   "-resource-dir" "[[RESOURCE:[^"]+]]"
 // CHECK009-SAME: {{^}} "-internal-isystem" "[[RESOURCE]]/include"
 // CHECK009-SAME: {{^}} "-internal-externc-isystem" "[[INSTALLED_DIR]]/../target/hexagon/include"
+
+// RUN: %clang -fdriver-only -Werror -v -L/tmp \
+// RUN:--target=hexagon-unknown-linux-musl %s 2>&1 \
+// RUN:| FileCheck -check-prefix=CHECK010 %s
+// CHECK010:   InstalledDir: [[INSTALLED_DIR:.+]]
+// CHECK010:   "-L/tmp"
Index: clang/lib/Driver/ToolChains/Hexagon.cpp
===
--- clang/lib/Driver/ToolChains/Hexagon.cpp
+++ clang/lib/Driver/ToolChains/Hexagon.cpp
@@ -383,7 +383,6 @@
   if (HTC.ShouldLinkCXXStdlib(Args))
 HTC.AddCXXStdlibLibArgs(Args, CmdArgs);
 }
-return;
   }
 
   //
@@ -441,6 +440,7 @@
   const ToolChain::path_list  = HTC.getFilePaths();
   for (const auto  : LibPaths)
 CmdArgs.push_back(Args.MakeArgString(StringRef("-L") + LibPath));
+  Args.ClaimAllArgs(options::OPT_L);
 
   //
   //
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D156330: [hexagon] restore library path arguments

2023-07-26 Thread Brian Cain via Phabricator via cfe-commits
bcain updated this revision to Diff 544532.
bcain added a comment.

I misunderstood the previous suggestion about `-fdriver-only -Werror -v` and 
thought I needed to separate the test into two invocations.  Combined these 
back into a single RUN now.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D156330/new/

https://reviews.llvm.org/D156330

Files:
  clang/lib/Driver/ToolChains/Hexagon.cpp
  clang/test/Driver/hexagon-toolchain-linux.c


Index: clang/test/Driver/hexagon-toolchain-linux.c
===
--- clang/test/Driver/hexagon-toolchain-linux.c
+++ clang/test/Driver/hexagon-toolchain-linux.c
@@ -119,3 +119,9 @@
 // CHECK009:   "-resource-dir" "[[RESOURCE:[^"]+]]"
 // CHECK009-SAME: {{^}} "-internal-isystem" "[[RESOURCE]]/include"
 // CHECK009-SAME: {{^}} "-internal-externc-isystem" 
"[[INSTALLED_DIR]]/../target/hexagon/include"
+
+// RUN: %clang -fdriver-only -Werror -v -L/tmp \
+// RUN:--target=hexagon-unknown-linux-musl %s -### 2>&1 \
+// RUN:| FileCheck -check-prefix=CHECK010 %s
+// CHECK010:   InstalledDir: [[INSTALLED_DIR:.+]]
+// CHECK010:   "-L/tmp"
Index: clang/lib/Driver/ToolChains/Hexagon.cpp
===
--- clang/lib/Driver/ToolChains/Hexagon.cpp
+++ clang/lib/Driver/ToolChains/Hexagon.cpp
@@ -383,7 +383,6 @@
   if (HTC.ShouldLinkCXXStdlib(Args))
 HTC.AddCXXStdlibLibArgs(Args, CmdArgs);
 }
-return;
   }
 
   
//
@@ -441,6 +440,7 @@
   const ToolChain::path_list  = HTC.getFilePaths();
   for (const auto  : LibPaths)
 CmdArgs.push_back(Args.MakeArgString(StringRef("-L") + LibPath));
+  Args.ClaimAllArgs(options::OPT_L);
 
   
//
   //


Index: clang/test/Driver/hexagon-toolchain-linux.c
===
--- clang/test/Driver/hexagon-toolchain-linux.c
+++ clang/test/Driver/hexagon-toolchain-linux.c
@@ -119,3 +119,9 @@
 // CHECK009:   "-resource-dir" "[[RESOURCE:[^"]+]]"
 // CHECK009-SAME: {{^}} "-internal-isystem" "[[RESOURCE]]/include"
 // CHECK009-SAME: {{^}} "-internal-externc-isystem" "[[INSTALLED_DIR]]/../target/hexagon/include"
+
+// RUN: %clang -fdriver-only -Werror -v -L/tmp \
+// RUN:--target=hexagon-unknown-linux-musl %s -### 2>&1 \
+// RUN:| FileCheck -check-prefix=CHECK010 %s
+// CHECK010:   InstalledDir: [[INSTALLED_DIR:.+]]
+// CHECK010:   "-L/tmp"
Index: clang/lib/Driver/ToolChains/Hexagon.cpp
===
--- clang/lib/Driver/ToolChains/Hexagon.cpp
+++ clang/lib/Driver/ToolChains/Hexagon.cpp
@@ -383,7 +383,6 @@
   if (HTC.ShouldLinkCXXStdlib(Args))
 HTC.AddCXXStdlibLibArgs(Args, CmdArgs);
 }
-return;
   }
 
   //
@@ -441,6 +440,7 @@
   const ToolChain::path_list  = HTC.getFilePaths();
   for (const auto  : LibPaths)
 CmdArgs.push_back(Args.MakeArgString(StringRef("-L") + LibPath));
+  Args.ClaimAllArgs(options::OPT_L);
 
   //
   //
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D156330: [hexagon] restore library path arguments

2023-07-26 Thread Brian Cain via Phabricator via cfe-commits
bcain updated this revision to Diff 544527.
bcain added a comment.

Fixed target: `--target=hexagon-unknown-linux` was not correct for testing this 
bug, it should have been `--target=hexagon-unknown-linux-musl`.

Used `-fdriver-only -Werror` as suggested but it did require separating the 
tests.

Quoted the library path arg, to make match from `-cc1` command stricter, from 
review suggestion.

Fixed wrapping.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D156330/new/

https://reviews.llvm.org/D156330

Files:
  clang/lib/Driver/ToolChains/Hexagon.cpp
  clang/test/Driver/hexagon-toolchain-linux.c


Index: clang/test/Driver/hexagon-toolchain-linux.c
===
--- clang/test/Driver/hexagon-toolchain-linux.c
+++ clang/test/Driver/hexagon-toolchain-linux.c
@@ -119,3 +119,11 @@
 // CHECK009:   "-resource-dir" "[[RESOURCE:[^"]+]]"
 // CHECK009-SAME: {{^}} "-internal-isystem" "[[RESOURCE]]/include"
 // CHECK009-SAME: {{^}} "-internal-externc-isystem" 
"[[INSTALLED_DIR]]/../target/hexagon/include"
+
+// RUN: %clang -fdriver-only -Werror -L/tmp \
+// RUN: --target=hexagon-unknown-linux-musl %s
+
+// RUN: %clang -Werror -L/tmp --target=hexagon-unknown-linux-musl %s -### 2>&1 
\
+// RUN:| FileCheck -check-prefix=CHECK010 %s
+// CHECK010:   InstalledDir: [[INSTALLED_DIR:.+]]
+// CHECK010:   "-L/tmp"
Index: clang/lib/Driver/ToolChains/Hexagon.cpp
===
--- clang/lib/Driver/ToolChains/Hexagon.cpp
+++ clang/lib/Driver/ToolChains/Hexagon.cpp
@@ -383,7 +383,6 @@
   if (HTC.ShouldLinkCXXStdlib(Args))
 HTC.AddCXXStdlibLibArgs(Args, CmdArgs);
 }
-return;
   }
 
   
//
@@ -441,6 +440,7 @@
   const ToolChain::path_list  = HTC.getFilePaths();
   for (const auto  : LibPaths)
 CmdArgs.push_back(Args.MakeArgString(StringRef("-L") + LibPath));
+  Args.ClaimAllArgs(options::OPT_L);
 
   
//
   //


Index: clang/test/Driver/hexagon-toolchain-linux.c
===
--- clang/test/Driver/hexagon-toolchain-linux.c
+++ clang/test/Driver/hexagon-toolchain-linux.c
@@ -119,3 +119,11 @@
 // CHECK009:   "-resource-dir" "[[RESOURCE:[^"]+]]"
 // CHECK009-SAME: {{^}} "-internal-isystem" "[[RESOURCE]]/include"
 // CHECK009-SAME: {{^}} "-internal-externc-isystem" "[[INSTALLED_DIR]]/../target/hexagon/include"
+
+// RUN: %clang -fdriver-only -Werror -L/tmp \
+// RUN: --target=hexagon-unknown-linux-musl %s
+
+// RUN: %clang -Werror -L/tmp --target=hexagon-unknown-linux-musl %s -### 2>&1 \
+// RUN:| FileCheck -check-prefix=CHECK010 %s
+// CHECK010:   InstalledDir: [[INSTALLED_DIR:.+]]
+// CHECK010:   "-L/tmp"
Index: clang/lib/Driver/ToolChains/Hexagon.cpp
===
--- clang/lib/Driver/ToolChains/Hexagon.cpp
+++ clang/lib/Driver/ToolChains/Hexagon.cpp
@@ -383,7 +383,6 @@
   if (HTC.ShouldLinkCXXStdlib(Args))
 HTC.AddCXXStdlibLibArgs(Args, CmdArgs);
 }
-return;
   }
 
   //
@@ -441,6 +440,7 @@
   const ToolChain::path_list  = HTC.getFilePaths();
   for (const auto  : LibPaths)
 CmdArgs.push_back(Args.MakeArgString(StringRef("-L") + LibPath));
+  Args.ClaimAllArgs(options::OPT_L);
 
   //
   //
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D156330: [hexagon] restore library path arguments

2023-07-26 Thread Brian Cain via Phabricator via cfe-commits
bcain added a comment.

In D156330#4535974 , @MaskRay wrote:

> Tip: use `%clang -fdriver-only -Werror -v` to test that a command produces no 
> warning or error and has an exit code of 0. Without it your 
> `Args.ClaimAllArgs(options::OPT_L);` change is untested.

This test fails on the baseline because of the `CHECK-NOT: warning:` IIRC.  But 
your suggestion sounds like a good one anyways, will do!


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D156330/new/

https://reviews.llvm.org/D156330

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


[PATCH] D156330: [hexagon] restore library path arguments

2023-07-26 Thread Brian Cain via Phabricator via cfe-commits
bcain created this revision.
bcain added reviewers: sidneym, kparzysz, MaskRay.
Herald added a project: All.
bcain requested review of this revision.
Herald added a project: clang.
Herald added a subscriber: cfe-commits.

Before applying this fix, clang would not include the specified library
path arguments:

  $ ./bin/clang --target=hexagon-unknown-linux-musl  -o tprog tprog.o -L/tmp 
-###
  ...
  clang: warning: argument unused during compilation: '-L/tmp' 
[-Wunused-command-line-argument]
   "/local/mnt/workspace/install/clang-latest/bin/ld.lld" "-z" "relro" "-o" 
"tprog" "-dynamic-linker=/lib/ld-musl-hexagon.so.1" "/usr/lib/crt1.o" 
"-L/usr/lib" "tprog.o" "-lclang_rt.builtins-hexagon" "-lc"


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D156330

Files:
  clang/lib/Driver/ToolChains/Hexagon.cpp
  clang/test/Driver/hexagon-toolchain-linux.c


Index: clang/test/Driver/hexagon-toolchain-linux.c
===
--- clang/test/Driver/hexagon-toolchain-linux.c
+++ clang/test/Driver/hexagon-toolchain-linux.c
@@ -119,3 +119,11 @@
 // CHECK009:   "-resource-dir" "[[RESOURCE:[^"]+]]"
 // CHECK009-SAME: {{^}} "-internal-isystem" "[[RESOURCE]]/include"
 // CHECK009-SAME: {{^}} "-internal-externc-isystem" 
"[[INSTALLED_DIR]]/../target/hexagon/include"
+
+// RUN: %clang -### -target hexagon-unknown-linux \
+// RUN:   -L /tmp \
+// RUN:   %s 2>&1 \
+// RUN:   | FileCheck -check-prefix=CHECK010 %s
+// CHECK010:   InstalledDir: [[INSTALLED_DIR:.+]]
+// CHECK010-NOT: warning:
+// CHECK010:   -L/tmp
Index: clang/lib/Driver/ToolChains/Hexagon.cpp
===
--- clang/lib/Driver/ToolChains/Hexagon.cpp
+++ clang/lib/Driver/ToolChains/Hexagon.cpp
@@ -383,7 +383,6 @@
   if (HTC.ShouldLinkCXXStdlib(Args))
 HTC.AddCXXStdlibLibArgs(Args, CmdArgs);
 }
-return;
   }
 
   
//
@@ -441,6 +440,7 @@
   const ToolChain::path_list  = HTC.getFilePaths();
   for (const auto  : LibPaths)
 CmdArgs.push_back(Args.MakeArgString(StringRef("-L") + LibPath));
+  Args.ClaimAllArgs(options::OPT_L);
 
   
//
   //


Index: clang/test/Driver/hexagon-toolchain-linux.c
===
--- clang/test/Driver/hexagon-toolchain-linux.c
+++ clang/test/Driver/hexagon-toolchain-linux.c
@@ -119,3 +119,11 @@
 // CHECK009:   "-resource-dir" "[[RESOURCE:[^"]+]]"
 // CHECK009-SAME: {{^}} "-internal-isystem" "[[RESOURCE]]/include"
 // CHECK009-SAME: {{^}} "-internal-externc-isystem" "[[INSTALLED_DIR]]/../target/hexagon/include"
+
+// RUN: %clang -### -target hexagon-unknown-linux \
+// RUN:   -L /tmp \
+// RUN:   %s 2>&1 \
+// RUN:   | FileCheck -check-prefix=CHECK010 %s
+// CHECK010:   InstalledDir: [[INSTALLED_DIR:.+]]
+// CHECK010-NOT: warning:
+// CHECK010:   -L/tmp
Index: clang/lib/Driver/ToolChains/Hexagon.cpp
===
--- clang/lib/Driver/ToolChains/Hexagon.cpp
+++ clang/lib/Driver/ToolChains/Hexagon.cpp
@@ -383,7 +383,6 @@
   if (HTC.ShouldLinkCXXStdlib(Args))
 HTC.AddCXXStdlibLibArgs(Args, CmdArgs);
 }
-return;
   }
 
   //
@@ -441,6 +440,7 @@
   const ToolChain::path_list  = HTC.getFilePaths();
   for (const auto  : LibPaths)
 CmdArgs.push_back(Args.MakeArgString(StringRef("-L") + LibPath));
+  Args.ClaimAllArgs(options::OPT_L);
 
   //
   //
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D141824: [clang-repl] Add a command to load dynamic libraries

2023-04-17 Thread Brian Cain via Phabricator via cfe-commits
bcain added a comment.

Can you depend on `cstdio` in an LLVM toolchain test case like this?  `clang` 
doesn't install `cstdio` -- does it?  This is a c or c++ library file, so I 
think it should be out of scope for a clang test, right?  AFAICT no other clang 
test uses this header file.




Comment at: clang/test/Interpreter/dynamic-library.cpp:6
+
+#include 
+

This test fails for me like below.  


```
FAIL: Clang :: Interpreter/dynamic-library.cpp (1 of 17751)
 TEST 'Clang :: Interpreter/dynamic-library.cpp' FAILED 

Script:
--
: 'RUN: at line 4';   /local/mnt/workspace/upstream/obj_ubuntu/bin/clang -xc++ 
-o 
/local/mnt/workspace/upstream/obj_ubuntu/tools/clang/test/Interpreter/Output/libdynamic-library-test.so
 -fPIC -shared -DLIBRARY 
/local/mnt/workspace/upstream/llvm-project/clang/test/Interpreter/Inputs/dynamic-library-test.cpp
: 'RUN: at line 5';   cat 
/local/mnt/workspace/upstream/llvm-project/clang/test/Interpreter/dynamic-library.cpp
 | env 
LD_LIBRARY_PATH=/local/mnt/workspace/upstream/obj_ubuntu/tools/clang/test/Interpreter/Output:$LD_LIBRARY_PATH
 /local/mnt/workspace/upstream/obj_ubuntu/bin/clang-repl | 
/local/mnt/workspace/upstream/obj_ubuntu/bin/FileCheck 
/local/mnt/workspace/upstream/llvm-project/clang/test/Interpreter/dynamic-library.cpp
--
Exit Code: 1

Command Output (stderr):
--
In file included from <<< inputs >>>:1:
input_line_6:1:10: fatal error: 'cstdio' file not found
#include 
 ^~~~
error: Parsing failed.
input_line_12:1:1: error: use of undeclared identifier 'printf'
printf("Return value: %d\n", calculate_answer());
^
error: Parsing failed.
input_line_15:1:1: error: use of undeclared identifier 'printf'
printf("Variable: %d\n", ultimate_answer);
^
error: Parsing failed.
/local/mnt/workspace/upstream/llvm-project/clang/test/Interpreter/dynamic-library.cpp:15:11:
 error: CHECK: expected string not found in input
// CHECK: Return value: 5
  ^
:1:1: note: scanning from here
clang-repl> clang-repl> clang-repl> clang-repl> clang-repl> clang-repl> 
clang-repl> clang-repl> clang-repl> clang-repl> clang-repl> clang-repl> 
clang-repl> clang-repl> clang-repl> clang-repl> clang-repl> clang-repl> 
clang-repl> clang-repl> 
^
:1:231: note: possible intended match here
clang-repl> clang-repl> clang-repl> clang-repl> clang-repl> clang-repl> 
clang-repl> clang-repl> clang-repl> clang-repl> clang-repl> clang-repl> 
clang-repl> clang-repl> clang-repl> clang-repl> clang-repl> clang-repl> 
clang-repl> clang-repl> 


  ^

Input file: 
Check file: 
/local/mnt/workspace/upstream/llvm-project/clang/test/Interpreter/dynamic-library.cpp

-dump-input=help explains the following input dump.

Input was:
<<
1: clang-repl> clang-repl> clang-repl> clang-repl> clang-repl> 
clang-repl> clang-repl> clang-repl> clang-repl> clang-repl> clang-repl> 
clang-repl> clang-repl> clang-repl> clang-repl> clang-repl> clang-repl> 
clang-repl> clang-repl> clang-repl>  
check:15'0 
X
 error: no match found
check:15'1  


 ?   possible intended match
>>

--



Failed Tests (1):
  Clang :: Interpreter/dynamic-library.cpp

```


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D141824/new/

https://reviews.llvm.org/D141824

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


[PATCH] D142947: [hexagon] add a -mcabac flag

2023-01-31 Thread Brian Cain via Phabricator via cfe-commits
This revision was landed with ongoing or failed builds.
This revision was automatically updated to reflect the committed changes.
Closed by commit rGcd97675e0236: [hexagon] add a -mcabac flag (authored by 
androm3da).

Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D142947/new/

https://reviews.llvm.org/D142947

Files:
  clang/include/clang/Driver/Options.td
  clang/test/Driver/hexagon-toolchain-elf.c


Index: clang/test/Driver/hexagon-toolchain-elf.c
===
--- clang/test/Driver/hexagon-toolchain-elf.c
+++ clang/test/Driver/hexagon-toolchain-elf.c
@@ -581,6 +581,16 @@
 // RUN:| FileCheck --check-prefix=CHECK371 %s
 // CHECK371-NOT: "+reserved-r19"
 
+// 
-
+// mcabac
+// 
-
+// RUN: %clang -### -target hexagon-unknown-elf -mcabac %s 2>&1 \
+// RUN:| FileCheck --check-prefix=CHECK372 %s
+// CHECK372: "-target-feature" "+cabac"
+// RUN: %clang -### -target hexagon-unknown-elf %s 2>&1 \
+// RUN:| FileCheck --check-prefix=CHECK373 %s
+// CHECK373-NOT: "+cabac"
+
 // 
-
 // Misc Defaults
 // 
-
Index: clang/include/clang/Driver/Options.td
===
--- clang/include/clang/Driver/Options.td
+++ clang/include/clang/Driver/Options.td
@@ -4559,6 +4559,8 @@
   Flags<[CC1Option]>, HelpText<"Enable generation of new-value stores">;
 def mno_nvs : Flag<["-"], "mno-nvs">, Group,
   Flags<[CC1Option]>, HelpText<"Disable generation of new-value stores">;
+def mcabac: Flag<["-"], "mcabac">, Group,
+  HelpText<"Enable CABAC instructions">;
 
 // SPARC feature flags
 def mfpu : Flag<["-"], "mfpu">, Group;


Index: clang/test/Driver/hexagon-toolchain-elf.c
===
--- clang/test/Driver/hexagon-toolchain-elf.c
+++ clang/test/Driver/hexagon-toolchain-elf.c
@@ -581,6 +581,16 @@
 // RUN:| FileCheck --check-prefix=CHECK371 %s
 // CHECK371-NOT: "+reserved-r19"
 
+// -
+// mcabac
+// -
+// RUN: %clang -### -target hexagon-unknown-elf -mcabac %s 2>&1 \
+// RUN:| FileCheck --check-prefix=CHECK372 %s
+// CHECK372: "-target-feature" "+cabac"
+// RUN: %clang -### -target hexagon-unknown-elf %s 2>&1 \
+// RUN:| FileCheck --check-prefix=CHECK373 %s
+// CHECK373-NOT: "+cabac"
+
 // -
 // Misc Defaults
 // -
Index: clang/include/clang/Driver/Options.td
===
--- clang/include/clang/Driver/Options.td
+++ clang/include/clang/Driver/Options.td
@@ -4559,6 +4559,8 @@
   Flags<[CC1Option]>, HelpText<"Enable generation of new-value stores">;
 def mno_nvs : Flag<["-"], "mno-nvs">, Group,
   Flags<[CC1Option]>, HelpText<"Disable generation of new-value stores">;
+def mcabac: Flag<["-"], "mcabac">, Group,
+  HelpText<"Enable CABAC instructions">;
 
 // SPARC feature flags
 def mfpu : Flag<["-"], "mfpu">, Group;
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D142947: [hexagon] add a -mcabac flag

2023-01-31 Thread Brian Cain via Phabricator via cfe-commits
bcain added a subscriber: ldionne.
bcain added a comment.

It seems extremely unlikely that this change to target-dependent flags caused 
this libc++ test failure w/an error referring to partial specialization.

@ldionne is it possible that 
`special_mem_concepts::nothrow_sentinel_for.compile.pass.cpp` is failing on the 
baseline?

  In module 'std' imported from 
/home/libcxx-builder/.buildkite-agent/builds/7288bc8bb028-1/llvm-project/libcxx-ci/libcxx/test/libcxx/algorithms/specialized.algorithms/special.mem.concepts/nothrow_sentinel_for.compile.pass.cpp:14:
  
/home/libcxx-builder/.buildkite-agent/builds/7288bc8bb028-1/llvm-project/libcxx-ci/build/generic-modules/include/c++/v1/__concepts/same_as.h:29:34:
 error: partial specialization of 'common_reference<_Tp, _Up>' must be imported 
from module 'std.type_traits.common_reference' before it is required
  concept same_as = __same_as_impl<_Tp, _Up> && __same_as_impl<_Up, _Tp>;
   ^
  
/home/libcxx-builder/.buildkite-agent/builds/7288bc8bb028-1/llvm-project/libcxx-ci/libcxx/test/libcxx/algorithms/specialized.algorithms/special.mem.concepts/nothrow_sentinel_for.compile.pass.cpp:23:80:
 note: while substituting into concept arguments here; substitution failures 
not allowed in concept arguments
  constexpr bool ntsf_subsumes_sf(std::ranges::__nothrow_sentinel_for 
auto) requires true {

 ^
  
/home/libcxx-builder/.buildkite-agent/builds/7288bc8bb028-1/llvm-project/libcxx-ci/build/generic-modules/include/c++/v1/__type_traits/common_reference.h:133:40:
 note: partial specialization declared here is not reachable
  template  struct common_reference<_Tp, _Up> : 
__common_reference_sub_bullet1<_Tp, _Up> {};
 ^
  1 error generated.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D142947/new/

https://reviews.llvm.org/D142947

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


[PATCH] D142947: [hexagon] add a -mcabac flag

2023-01-30 Thread Brian Cain via Phabricator via cfe-commits
bcain created this revision.
bcain added a reviewer: kparzysz.
bcain added a project: clang.
Herald added a project: All.
bcain requested review of this revision.
Herald added a subscriber: cfe-commits.

For v73 and later, clang users who wish to use the cabac instructions need
a way to add the 'cabac' target feature.


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D142947

Files:
  clang/include/clang/Driver/Options.td
  clang/test/Driver/hexagon-toolchain-elf.c


Index: clang/test/Driver/hexagon-toolchain-elf.c
===
--- clang/test/Driver/hexagon-toolchain-elf.c
+++ clang/test/Driver/hexagon-toolchain-elf.c
@@ -581,6 +581,16 @@
 // RUN:| FileCheck --check-prefix=CHECK371 %s
 // CHECK371-NOT: "+reserved-r19"
 
+// 
-
+// mcabac
+// 
-
+// RUN: %clang -### -target hexagon-unknown-elf -mcabac %s 2>&1 \
+// RUN:| FileCheck --check-prefix=CHECK372 %s
+// CHECK372: "-target-feature" "+cabac"
+// RUN: %clang -### -target hexagon-unknown-elf %s 2>&1 \
+// RUN:| FileCheck --check-prefix=CHECK373 %s
+// CHECK373-NOT: "+cabac"
+
 // 
-
 // Misc Defaults
 // 
-
Index: clang/include/clang/Driver/Options.td
===
--- clang/include/clang/Driver/Options.td
+++ clang/include/clang/Driver/Options.td
@@ -4559,6 +4559,8 @@
   Flags<[CC1Option]>, HelpText<"Enable generation of new-value stores">;
 def mno_nvs : Flag<["-"], "mno-nvs">, Group,
   Flags<[CC1Option]>, HelpText<"Disable generation of new-value stores">;
+def mcabac: Flag<["-"], "mcabac">, Group,
+  HelpText<"Enable CABAC instructions">;
 
 // SPARC feature flags
 def mfpu : Flag<["-"], "mfpu">, Group;


Index: clang/test/Driver/hexagon-toolchain-elf.c
===
--- clang/test/Driver/hexagon-toolchain-elf.c
+++ clang/test/Driver/hexagon-toolchain-elf.c
@@ -581,6 +581,16 @@
 // RUN:| FileCheck --check-prefix=CHECK371 %s
 // CHECK371-NOT: "+reserved-r19"
 
+// -
+// mcabac
+// -
+// RUN: %clang -### -target hexagon-unknown-elf -mcabac %s 2>&1 \
+// RUN:| FileCheck --check-prefix=CHECK372 %s
+// CHECK372: "-target-feature" "+cabac"
+// RUN: %clang -### -target hexagon-unknown-elf %s 2>&1 \
+// RUN:| FileCheck --check-prefix=CHECK373 %s
+// CHECK373-NOT: "+cabac"
+
 // -
 // Misc Defaults
 // -
Index: clang/include/clang/Driver/Options.td
===
--- clang/include/clang/Driver/Options.td
+++ clang/include/clang/Driver/Options.td
@@ -4559,6 +4559,8 @@
   Flags<[CC1Option]>, HelpText<"Enable generation of new-value stores">;
 def mno_nvs : Flag<["-"], "mno-nvs">, Group,
   Flags<[CC1Option]>, HelpText<"Disable generation of new-value stores">;
+def mcabac: Flag<["-"], "mcabac">, Group,
+  HelpText<"Enable CABAC instructions">;
 
 // SPARC feature flags
 def mfpu : Flag<["-"], "mfpu">, Group;
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D97625: fix check-clang-tools tests that fail due to Windows CRLF line endings

2022-03-19 Thread Brian Cain via Phabricator via cfe-commits
bcain added a comment.
Herald added a project: All.

In D97625#3337018 , @dmgreen wrote:

> Hello. I noticed this was applied to the base /test directory in the llvm 
> repo: https://github.com/llvm/llvm-project/tree/main/test
> Was it intended be in clang-tools-extra: 
> https://github.com/llvm/llvm-project/tree/main/clang-tools-extra/test? I'm 
> not sure it will do much where it is.

It's almost certainly the case.

@LegalizeAdulthood this commit should be reverted.  If it makes sense, it could 
be re-applied to `clang-tools-extra/test/`.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D97625/new/

https://reviews.llvm.org/D97625

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


[PATCH] D113638: [xray] Add support for hexagon architecture

2021-12-09 Thread Brian Cain via Phabricator via cfe-commits
This revision was landed with ongoing or failed builds.
This revision was automatically updated to reflect the committed changes.
Closed by commit rG543a9ad7c460: [xray] add support for hexagon (authored by 
androm3da).

Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D113638/new/

https://reviews.llvm.org/D113638

Files:
  clang/lib/Driver/ToolChains/Hexagon.cpp
  clang/lib/Driver/XRayArgs.cpp
  compiler-rt/cmake/Modules/AllSupportedArchDefs.cmake
  compiler-rt/lib/xray/CMakeLists.txt
  compiler-rt/lib/xray/xray_hexagon.cpp
  compiler-rt/lib/xray/xray_interface.cpp
  compiler-rt/lib/xray/xray_trampoline_hexagon.S
  compiler-rt/lib/xray/xray_tsc.h
  llvm/lib/CodeGen/XRayInstrumentation.cpp
  llvm/lib/Target/Hexagon/HexagonAsmPrinter.cpp
  llvm/lib/Target/Hexagon/HexagonAsmPrinter.h
  llvm/lib/Target/Hexagon/HexagonInstrInfo.cpp
  llvm/lib/Target/Hexagon/HexagonInstrInfo.h
  llvm/lib/Target/Hexagon/HexagonMCInstLower.cpp
  llvm/lib/Target/Hexagon/HexagonSubtarget.h
  llvm/lib/Target/Hexagon/HexagonVLIWPacketizer.cpp
  llvm/test/CodeGen/Hexagon/xray-pred-ret.ll
  llvm/test/CodeGen/Hexagon/xray.ll

Index: llvm/test/CodeGen/Hexagon/xray.ll
===
--- /dev/null
+++ llvm/test/CodeGen/Hexagon/xray.ll
@@ -0,0 +1,29 @@
+; RUN: llc -filetype=asm -o - -mtriple=hexagon-unknown-elf < %s | FileCheck %s
+; RUN: llc -filetype=asm -o - -mtriple=hexagon-unknown-linux-musl  < %s | FileCheck %s
+
+define i32 @foo() nounwind noinline uwtable "function-instrument"="xray-always" {
+; CHECK-LABEL: .Lxray_sled_0:
+; CHECK:   jump .Ltmp0
+; CHECK: nop
+; CHECK: nop
+; CHECK: nop
+; CHECK: nop
+; CHECK-LABEL: .Ltmp0:
+  ret i32 0
+; CHECK-LABEL: .Lxray_sled_1:
+; CHECK:   jump .Ltmp1
+; CHECK: nop
+; CHECK: nop
+; CHECK: nop
+; CHECK: nop
+; CHECK-LABEL: .Ltmp1:
+; CHECK:   jumpr r31
+}
+; CHECK-LABEL: xray_instr_map
+; CHECK-LABEL: .Lxray_sleds_start0:
+; CHECK:   .word {{.*}}Lxray_sled_0
+; CHECK:   .word {{.*}}Lxray_sled_1
+; CHECK-LABEL: .Lxray_sleds_end0:
+; CHECK-LABEL: xray_fn_idx
+; CHECK:   .word {{.*}}Lxray_sleds_start0
+; CHECK-NEXT:  .word {{.*}}Lxray_sleds_end0
Index: llvm/test/CodeGen/Hexagon/xray-pred-ret.ll
===
--- /dev/null
+++ llvm/test/CodeGen/Hexagon/xray-pred-ret.ll
@@ -0,0 +1,27 @@
+; RUN: llc -filetype=asm -o - -mtriple=hexagon-unknown-linux-musl < %s | FileCheck %s
+
+define void @Foo(i32 signext %a, i32 signext %b) #0 {
+; CHECK-LABEL: @Foo
+; CHECK-LABEL: .Lxray_sled_0:
+; CHECK:jump .Ltmp0
+; CHECK-COUNT-4: nop
+entry:
+  %cmp = icmp sgt i32 %a, %b
+  br i1 %cmp, label %return, label %if.end
+
+; CHECK-LABEL: .Lxray_sled_1:
+; CHECK:jump .Ltmp1
+; CHECK-COUNT-4: nop
+; CHECK-LABEL: .Ltmp1:
+; CHECK:   if (p0) jumpr:nt r31
+if.end:
+  tail call void @Bar()
+  br label %return
+
+return:
+  ret void
+}
+
+declare void @Bar()
+
+attributes #0 = { "function-instrument"="xray-always" }
Index: llvm/lib/Target/Hexagon/HexagonVLIWPacketizer.cpp
===
--- llvm/lib/Target/Hexagon/HexagonVLIWPacketizer.cpp
+++ llvm/lib/Target/Hexagon/HexagonVLIWPacketizer.cpp
@@ -1082,6 +1082,11 @@
   if (HII->isSolo(MI))
 return true;
 
+  if (MI.getOpcode() == Hexagon::PATCHABLE_FUNCTION_ENTER ||
+  MI.getOpcode() == Hexagon::PATCHABLE_FUNCTION_EXIT ||
+  MI.getOpcode() == Hexagon::PATCHABLE_TAIL_CALL)
+return true;
+
   if (MI.getOpcode() == Hexagon::A2_nop)
 return true;
 
Index: llvm/lib/Target/Hexagon/HexagonSubtarget.h
===
--- llvm/lib/Target/Hexagon/HexagonSubtarget.h
+++ llvm/lib/Target/Hexagon/HexagonSubtarget.h
@@ -138,6 +138,8 @@
   /// subtarget options.  Definition of function is auto generated by tblgen.
   void ParseSubtargetFeatures(StringRef CPU, StringRef TuneCPU, StringRef FS);
 
+  bool isXRaySupported() const override { return true; }
+
   bool hasV5Ops() const {
 return getHexagonArchVersion() >= Hexagon::ArchEnum::V5;
   }
Index: llvm/lib/Target/Hexagon/HexagonMCInstLower.cpp
===
--- llvm/lib/Target/Hexagon/HexagonMCInstLower.cpp
+++ llvm/lib/Target/Hexagon/HexagonMCInstLower.cpp
@@ -104,6 +104,19 @@
 HexagonMCInstrInfo::setOuterLoop(MCB);
 return;
   }
+  if (MI->getOpcode() == Hexagon::PATCHABLE_FUNCTION_ENTER) {
+AP.EmitSled(*MI, HexagonAsmPrinter::SledKind::FUNCTION_ENTER);
+return;
+  }
+  if (MI->getOpcode() == Hexagon::PATCHABLE_FUNCTION_EXIT) {
+AP.EmitSled(*MI, HexagonAsmPrinter::SledKind::FUNCTION_EXIT);
+return;
+  }
+  if (MI->getOpcode() == Hexagon::PATCHABLE_TAIL_CALL) {
+AP.EmitSled(*MI, HexagonAsmPrinter::SledKind::TAIL_CALL);
+return;
+  }
+
   MCInst *MCI = 

[PATCH] D113638: [xray] Add support for hexagon architecture

2021-11-17 Thread Brian Cain via Phabricator via cfe-commits
androm3da added a comment.

Ping - any thoughts/concerns?


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D113638/new/

https://reviews.llvm.org/D113638

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


[PATCH] D113638: [xray] Add support for hexagon architecture

2021-11-10 Thread Brian Cain via Phabricator via cfe-commits
androm3da added a comment.

This patch spans several areas, so I would be happy to decompose it into 
smaller parts if it made it easier for reviewers.




Comment at: compiler-rt/lib/xray/xray_hexagon.cpp:76-84
+static void WriteInstFlushCache(void *Addr, uint32_t NewInstruction) {
+  asm volatile("icinva(%[inst_addr])\n\t"
+   "isync\n\t"
+   "memw(%[inst_addr]) = %[new_inst]\n\t"
+   "dccleaninva(%[inst_addr])\n\t"
+   "syncht\n\t"
+   :

If we need to support cases where the entire sled spans cache lines, then we 
must iterate over the icinva() instead.




Comment at: compiler-rt/lib/xray/xray_hexagon.cpp:76-84
+static void WriteInstFlushCache(void *Addr, uint32_t NewInstruction) {
+  asm volatile("icinva(%[inst_addr])\n\t"
+   "isync\n\t"
+   "memw(%[inst_addr]) = %[new_inst]\n\t"
+   "dccleaninva(%[inst_addr])\n\t"
+   "syncht\n\t"
+   :

androm3da wrote:
> If we need to support cases where the entire sled spans cache lines, then we 
> must iterate over the icinva() instead.
> 
Other arches do atomic stores.  I think we will need to change this to: LL 
first, then icinva/isync, then SC.  

If the SC fails then either we re-run all those steps because we want to 
clobber it or we do nothing because we assume some other thread applied the 
same patch first?


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D113638/new/

https://reviews.llvm.org/D113638

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


[PATCH] D113638: [xray] Add support for hexagon architecture

2021-11-10 Thread Brian Cain via Phabricator via cfe-commits
androm3da created this revision.
androm3da added reviewers: dberris, kparzysz.
Herald added subscribers: hiraditya, mgorny.
androm3da requested review of this revision.
Herald added projects: clang, Sanitizers, LLVM.
Herald added subscribers: llvm-commits, Sanitizers, cfe-commits.

Adds x-ray support for hexagon to llvm codegen, clang driver, compiler-rt libs.


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D113638

Files:
  clang/lib/Driver/ToolChains/Hexagon.cpp
  clang/lib/Driver/XRayArgs.cpp
  compiler-rt/cmake/Modules/AllSupportedArchDefs.cmake
  compiler-rt/lib/xray/CMakeLists.txt
  compiler-rt/lib/xray/xray_hexagon.cpp
  compiler-rt/lib/xray/xray_interface.cpp
  compiler-rt/lib/xray/xray_trampoline_hexagon.S
  compiler-rt/lib/xray/xray_tsc.h
  llvm/lib/CodeGen/XRayInstrumentation.cpp
  llvm/lib/Target/Hexagon/HexagonAsmPrinter.cpp
  llvm/lib/Target/Hexagon/HexagonAsmPrinter.h
  llvm/lib/Target/Hexagon/HexagonInstrInfo.cpp
  llvm/lib/Target/Hexagon/HexagonInstrInfo.h
  llvm/lib/Target/Hexagon/HexagonMCInstLower.cpp
  llvm/lib/Target/Hexagon/HexagonSubtarget.h
  llvm/lib/Target/Hexagon/HexagonVLIWPacketizer.cpp
  llvm/test/CodeGen/Hexagon/xray-pred-ret.ll
  llvm/test/CodeGen/Hexagon/xray.ll

Index: llvm/test/CodeGen/Hexagon/xray.ll
===
--- /dev/null
+++ llvm/test/CodeGen/Hexagon/xray.ll
@@ -0,0 +1,29 @@
+; RUN: llc -filetype=asm -o - -mtriple=hexagon-unknown-elf < %s | FileCheck %s
+; RUN: llc -filetype=asm -o - -mtriple=hexagon-unknown-linux-musl  < %s | FileCheck %s
+
+define i32 @foo() nounwind noinline uwtable "function-instrument"="xray-always" {
+; CHECK-LABEL: .Lxray_sled_0:
+; CHECK:   jump .Ltmp0
+; CHECK: nop
+; CHECK: nop
+; CHECK: nop
+; CHECK: nop
+; CHECK-LABEL: .Ltmp0:
+  ret i32 0
+; CHECK-LABEL: .Lxray_sled_1:
+; CHECK:   jump .Ltmp1
+; CHECK: nop
+; CHECK: nop
+; CHECK: nop
+; CHECK: nop
+; CHECK-LABEL: .Ltmp1:
+; CHECK:   jumpr r31
+}
+; CHECK-LABEL: xray_instr_map
+; CHECK-LABEL: .Lxray_sleds_start0:
+; CHECK:   .word {{.*}}Lxray_sled_0
+; CHECK:   .word {{.*}}Lxray_sled_1
+; CHECK-LABEL: .Lxray_sleds_end0:
+; CHECK-LABEL: xray_fn_idx
+; CHECK:   .word {{.*}}Lxray_sleds_start0
+; CHECK-NEXT:  .word {{.*}}Lxray_sleds_end0
Index: llvm/test/CodeGen/Hexagon/xray-pred-ret.ll
===
--- /dev/null
+++ llvm/test/CodeGen/Hexagon/xray-pred-ret.ll
@@ -0,0 +1,27 @@
+; RUN: llc -filetype=asm -o - -mtriple=hexagon-unknown-linux-musl < %s | FileCheck %s
+
+define void @Foo(i32 signext %a, i32 signext %b) #0 {
+; CHECK-LABEL: @Foo
+; CHECK-LABEL: .Lxray_sled_0:
+; CHECK:jump .Ltmp0
+; CHECK-COUNT-4: nop
+entry:
+  %cmp = icmp sgt i32 %a, %b
+  br i1 %cmp, label %return, label %if.end
+
+; CHECK-LABEL: .Lxray_sled_1:
+; CHECK:jump .Ltmp1
+; CHECK-COUNT-4: nop
+; CHECK-LABEL: .Ltmp1:
+; CHECK:   if (p0) jumpr:nt r31
+if.end:
+  tail call void @Bar()
+  br label %return
+
+return:
+  ret void
+}
+
+declare void @Bar()
+
+attributes #0 = { "function-instrument"="xray-always" }
Index: llvm/lib/Target/Hexagon/HexagonVLIWPacketizer.cpp
===
--- llvm/lib/Target/Hexagon/HexagonVLIWPacketizer.cpp
+++ llvm/lib/Target/Hexagon/HexagonVLIWPacketizer.cpp
@@ -1082,6 +1082,11 @@
   if (HII->isSolo(MI))
 return true;
 
+  if (MI.getOpcode() == Hexagon::PATCHABLE_FUNCTION_ENTER ||
+  MI.getOpcode() == Hexagon::PATCHABLE_FUNCTION_EXIT ||
+  MI.getOpcode() == Hexagon::PATCHABLE_TAIL_CALL)
+return true;
+
   if (MI.getOpcode() == Hexagon::A2_nop)
 return true;
 
Index: llvm/lib/Target/Hexagon/HexagonSubtarget.h
===
--- llvm/lib/Target/Hexagon/HexagonSubtarget.h
+++ llvm/lib/Target/Hexagon/HexagonSubtarget.h
@@ -138,6 +138,8 @@
   /// subtarget options.  Definition of function is auto generated by tblgen.
   void ParseSubtargetFeatures(StringRef CPU, StringRef TuneCPU, StringRef FS);
 
+  bool isXRaySupported() const override { return true; }
+
   bool hasV5Ops() const {
 return getHexagonArchVersion() >= Hexagon::ArchEnum::V5;
   }
Index: llvm/lib/Target/Hexagon/HexagonMCInstLower.cpp
===
--- llvm/lib/Target/Hexagon/HexagonMCInstLower.cpp
+++ llvm/lib/Target/Hexagon/HexagonMCInstLower.cpp
@@ -104,6 +104,19 @@
 HexagonMCInstrInfo::setOuterLoop(MCB);
 return;
   }
+  if (MI->getOpcode() == Hexagon::PATCHABLE_FUNCTION_ENTER) {
+AP.EmitSled(*MI, HexagonAsmPrinter::SledKind::FUNCTION_ENTER);
+return;
+  }
+  if (MI->getOpcode() == Hexagon::PATCHABLE_FUNCTION_EXIT) {
+AP.EmitSled(*MI, HexagonAsmPrinter::SledKind::FUNCTION_EXIT);
+return;
+  }
+  if (MI->getOpcode() == Hexagon::PATCHABLE_TAIL_CALL) {
+AP.EmitSled(*MI, 

[PATCH] D108083: [sanitizer] Add hexagon support to sanitizer-common

2021-08-17 Thread Brian Cain via Phabricator via cfe-commits
bcain added inline comments.



Comment at: 
compiler-rt/lib/sanitizer_common/sanitizer_syscall_linux_hexagon.inc:124
+
+bool internal_iserror(uptr retval, int *rverrno) {
+  if (retval == (uptr)-1) {

vitalybuka wrote:
> sidneym wrote:
> > bcain wrote:
> > > @sidneym Can you confirm that this implementation looks correct?  I 
> > > thought the convention was -1 for failed syscalls.
> > Maybe it should be <0 instead.
> Why it's not -4095 like in other versions?
> Why it's not -4095 like in other versions?

It should be, I misunderstood the intent.  


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D108083/new/

https://reviews.llvm.org/D108083

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


[PATCH] D108083: [sanitizer] Add hexagon support to sanitizer-common

2021-08-17 Thread Brian Cain via Phabricator via cfe-commits
bcain updated this revision to Diff 367027.
bcain added a comment.

fixed iserror()


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D108083/new/

https://reviews.llvm.org/D108083

Files:
  compiler-rt/cmake/Modules/AllSupportedArchDefs.cmake
  compiler-rt/lib/sanitizer_common/sanitizer_common.h
  compiler-rt/lib/sanitizer_common/sanitizer_internal_defs.h
  compiler-rt/lib/sanitizer_common/sanitizer_linux.cpp
  compiler-rt/lib/sanitizer_common/sanitizer_platform.h
  compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_linux.cpp
  compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.cpp
  compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.h
  compiler-rt/lib/sanitizer_common/sanitizer_stacktrace.cpp
  compiler-rt/lib/sanitizer_common/sanitizer_syscall_linux_hexagon.inc

Index: compiler-rt/lib/sanitizer_common/sanitizer_syscall_linux_hexagon.inc
===
--- /dev/null
+++ compiler-rt/lib/sanitizer_common/sanitizer_syscall_linux_hexagon.inc
@@ -0,0 +1,131 @@
+//===-- sanitizer_syscall_linux_hexagon.inc -*- C++ -*-===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===--===//
+//
+// Implementations of internal_syscall and internal_iserror for Linux/hexagon.
+//
+//===--===//
+
+#define SYSCALL(name) __NR_##name
+
+#define __internal_syscall_LL_E(x) \
+  ((union {\
+long long ll;  \
+long l[2]; \
+  }){.ll = x}) \
+  .l[0],   \
+  ((union {\
+long long ll;  \
+long l[2]; \
+  }){.ll = x}) \
+  .l[1]
+#define __internal_syscall_LL_O(x) 0, __SYSCALL_LL_E((x))
+
+#define __asm_syscall(...) \
+  do { \
+__asm__ __volatile__("trap0(#1)" : "=r"(r0) : __VA_ARGS__ : "memory"); \
+return r0; \
+  } while (0)
+
+#define __internal_syscall0(n) (__internal_syscall)(n)
+
+static uptr __internal_syscall(long n) {
+  register u32 r6 __asm__("r6") = n;
+  register u32 r0 __asm__("r0");
+  __asm_syscall("r"(r6));
+}
+
+#define __internal_syscall1(n, a1) (__internal_syscall)(n, (long)(a1))
+
+static uptr __internal_syscall(long n, long a) {
+  register u32 r6 __asm__("r6") = n;
+  register u32 r0 __asm__("r0") = a;
+  __asm_syscall("r"(r6), "0"(r0));
+}
+
+#define __internal_syscall2(n, a1, a2) \
+  (__internal_syscall)(n, (long)(a1), (long)(a2))
+
+static uptr __internal_syscall(long n, long a, long b) {
+  register u32 r6 __asm__("r6") = n;
+  register u32 r0 __asm__("r0") = a;
+  register u32 r1 __asm__("r1") = b;
+  __asm_syscall("r"(r6), "0"(r0), "r"(r1));
+}
+
+#define __internal_syscall3(n, a1, a2, a3) \
+  (__internal_syscall)(n, (long)(a1), (long)(a2), (long)(a3))
+
+static uptr __internal_syscall(long n, long a, long b, long c) {
+  register u32 r6 __asm__("r6") = n;
+  register u32 r0 __asm__("r0") = a;
+  register u32 r1 __asm__("r1") = b;
+  register u32 r2 __asm__("r2") = c;
+  __asm_syscall("r"(r6), "0"(r0), "r"(r1), "r"(r2));
+}
+
+#define __internal_syscall4(n, a1, a2, a3, a4) \
+  (__internal_syscall)(n, (long)(a1), (long)(a2), (long)(a3), (long)(a4))
+
+static uptr __internal_syscall(long n, long a, long b, long c, long d) {
+  register u32 r6 __asm__("r6") = n;
+  register u32 r0 __asm__("r0") = a;
+  register u32 r1 __asm__("r1") = b;
+  register u32 r2 __asm__("r2") = c;
+  register u32 r3 __asm__("r3") = d;
+  __asm_syscall("r"(r6), "0"(r0), "r"(r1), "r"(r2), "r"(r3));
+}
+
+#define __internal_syscall5(n, a1, a2, a3, a4, a5)\
+  (__internal_syscall)(n, (long)(a1), (long)(a2), (long)(a3), (long)(a4), \
+   (long)(a5))
+
+static uptr __internal_syscall(long n, long a, long b, long c, long d, long e) {
+  register u32 r6 __asm__("r6") = n;
+  register u32 r0 __asm__("r0") = a;
+  register u32 r1 __asm__("r1") = b;
+  register u32 r2 __asm__("r2") = c;
+  register u32 r3 __asm__("r3") = d;
+  register u32 r4 __asm__("r4") = e;
+  __asm_syscall("r"(r6), "0"(r0), "r"(r1), "r"(r2), "r"(r3), "r"(r4));
+}
+
+#define __internal_syscall6(n, a1, a2, a3, a4, a5, a6)\
+  (__internal_syscall)(n, (long)(a1), (long)(a2), (long)(a3), (long)(a4), \
+   (long)(a5), (long)(a6))
+
+static uptr __internal_syscall(long n, long a, long b, long c, long d, long e,
+   long f) {
+  

[PATCH] D108083: [sanitizer] Add hexagon support to sanitizer-common

2021-08-17 Thread Brian Cain via Phabricator via cfe-commits
bcain updated this revision to Diff 367020.
bcain added a comment.
Herald added a subscriber: krytarowski.

applied `clang-format-diff`, s/long/u32/ for syscall funcs.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D108083/new/

https://reviews.llvm.org/D108083

Files:
  compiler-rt/cmake/Modules/AllSupportedArchDefs.cmake
  compiler-rt/lib/sanitizer_common/sanitizer_common.h
  compiler-rt/lib/sanitizer_common/sanitizer_internal_defs.h
  compiler-rt/lib/sanitizer_common/sanitizer_linux.cpp
  compiler-rt/lib/sanitizer_common/sanitizer_platform.h
  compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_linux.cpp
  compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.cpp
  compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.h
  compiler-rt/lib/sanitizer_common/sanitizer_stacktrace.cpp
  compiler-rt/lib/sanitizer_common/sanitizer_syscall_linux_hexagon.inc

Index: compiler-rt/lib/sanitizer_common/sanitizer_syscall_linux_hexagon.inc
===
--- /dev/null
+++ compiler-rt/lib/sanitizer_common/sanitizer_syscall_linux_hexagon.inc
@@ -0,0 +1,130 @@
+//===-- sanitizer_syscall_linux_hexagon.inc -*- C++ -*-===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===--===//
+//
+// Implementations of internal_syscall and internal_iserror for Linux/hexagon.
+//
+//===--===//
+
+#define SYSCALL(name) __NR_##name
+
+#define __internal_syscall_LL_E(x) \
+  ((union {\
+long long ll;  \
+long l[2]; \
+  }){.ll = x}) \
+  .l[0],   \
+  ((union {\
+long long ll;  \
+long l[2]; \
+  }){.ll = x}) \
+  .l[1]
+#define __internal_syscall_LL_O(x) 0, __SYSCALL_LL_E((x))
+
+#define __asm_syscall(...) \
+  do { \
+__asm__ __volatile__("trap0(#1)" : "=r"(r0) : __VA_ARGS__ : "memory"); \
+return r0; \
+  } while (0)
+
+#define __internal_syscall0(n) (__internal_syscall)(n)
+
+static uptr __internal_syscall(long n) {
+  register u32 r6 __asm__("r6") = n;
+  register u32 r0 __asm__("r0");
+  __asm_syscall("r"(r6));
+}
+
+#define __internal_syscall1(n, a1) (__internal_syscall)(n, (long)(a1))
+
+static uptr __internal_syscall(long n, long a) {
+  register u32 r6 __asm__("r6") = n;
+  register u32 r0 __asm__("r0") = a;
+  __asm_syscall("r"(r6), "0"(r0));
+}
+
+#define __internal_syscall2(n, a1, a2) \
+  (__internal_syscall)(n, (long)(a1), (long)(a2))
+
+static uptr __internal_syscall(long n, long a, long b) {
+  register u32 r6 __asm__("r6") = n;
+  register u32 r0 __asm__("r0") = a;
+  register u32 r1 __asm__("r1") = b;
+  __asm_syscall("r"(r6), "0"(r0), "r"(r1));
+}
+
+#define __internal_syscall3(n, a1, a2, a3) \
+  (__internal_syscall)(n, (long)(a1), (long)(a2), (long)(a3))
+
+static uptr __internal_syscall(long n, long a, long b, long c) {
+  register u32 r6 __asm__("r6") = n;
+  register u32 r0 __asm__("r0") = a;
+  register u32 r1 __asm__("r1") = b;
+  register u32 r2 __asm__("r2") = c;
+  __asm_syscall("r"(r6), "0"(r0), "r"(r1), "r"(r2));
+}
+
+#define __internal_syscall4(n, a1, a2, a3, a4) \
+  (__internal_syscall)(n, (long)(a1), (long)(a2), (long)(a3), (long)(a4))
+
+static uptr __internal_syscall(long n, long a, long b, long c, long d) {
+  register u32 r6 __asm__("r6") = n;
+  register u32 r0 __asm__("r0") = a;
+  register u32 r1 __asm__("r1") = b;
+  register u32 r2 __asm__("r2") = c;
+  register u32 r3 __asm__("r3") = d;
+  __asm_syscall("r"(r6), "0"(r0), "r"(r1), "r"(r2), "r"(r3));
+}
+
+#define __internal_syscall5(n, a1, a2, a3, a4, a5)\
+  (__internal_syscall)(n, (long)(a1), (long)(a2), (long)(a3), (long)(a4), \
+   (long)(a5))
+
+static uptr __internal_syscall(long n, long a, long b, long c, long d, long e) {
+  register u32 r6 __asm__("r6") = n;
+  register u32 r0 __asm__("r0") = a;
+  register u32 r1 __asm__("r1") = b;
+  register u32 r2 __asm__("r2") = c;
+  register u32 r3 __asm__("r3") = d;
+  register u32 r4 __asm__("r4") = e;
+  __asm_syscall("r"(r6), "0"(r0), "r"(r1), "r"(r2), "r"(r3), "r"(r4));
+}
+
+#define __internal_syscall6(n, a1, a2, a3, a4, a5, a6)\
+  (__internal_syscall)(n, (long)(a1), (long)(a2), (long)(a3), (long)(a4), \
+   (long)(a5), (long)(a6))
+
+static uptr __internal_syscall(long n, long 

[PATCH] D108083: [sanitizer] Add hexagon support to sanitizer-common

2021-08-17 Thread Brian Cain via Phabricator via cfe-commits
bcain added inline comments.



Comment at: 
compiler-rt/lib/sanitizer_common/sanitizer_syscall_linux_hexagon.inc:88
+{
+  register long r6 __asm__("r6") = n;
+  register long r0 __asm__("r0") = a;

vitalybuka wrote:
> should this use u64 like other __internal_syscall files?
Sorry I didn't notice this review comment before.

No, `u64` doesn't seem appropriate - they're 32-bit registers.  I can change it 
to `u32` if that makes more sense.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D108083/new/

https://reviews.llvm.org/D108083

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


[PATCH] D108083: [sanitizer] Add hexagon support to sanitizer-common

2021-08-17 Thread Brian Cain via Phabricator via cfe-commits
bcain updated this revision to Diff 367008.
bcain added a comment.

added context


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D108083/new/

https://reviews.llvm.org/D108083

Files:
  compiler-rt/cmake/Modules/AllSupportedArchDefs.cmake
  compiler-rt/lib/sanitizer_common/sanitizer_common.h
  compiler-rt/lib/sanitizer_common/sanitizer_internal_defs.h
  compiler-rt/lib/sanitizer_common/sanitizer_linux.cpp
  compiler-rt/lib/sanitizer_common/sanitizer_platform.h
  compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_linux.cpp
  compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.cpp
  compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.h
  compiler-rt/lib/sanitizer_common/sanitizer_stacktrace.cpp
  compiler-rt/lib/sanitizer_common/sanitizer_syscall_linux_hexagon.inc

Index: compiler-rt/lib/sanitizer_common/sanitizer_syscall_linux_hexagon.inc
===
--- /dev/null
+++ compiler-rt/lib/sanitizer_common/sanitizer_syscall_linux_hexagon.inc
@@ -0,0 +1,131 @@
+//===-- sanitizer_syscall_linux_hexagon.inc -*- C++ -*-===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===--===//
+//
+// Implementations of internal_syscall and internal_iserror for Linux/hexagon.
+//
+//===--===//
+
+#define SYSCALL(name) __NR_ ## name
+
+#define __internal_syscall_LL_E(x) \
+((union { long long ll; long l[2]; }){ .ll = x }).l[0], \
+((union { long long ll; long l[2]; }){ .ll = x }).l[1]
+#define __internal_syscall_LL_O(x) 0, __SYSCALL_LL_E((x))
+
+#define __asm_syscall(...) do { \
+__asm__ __volatile__ ( "trap0(#1)" \
+: "=r"(r0) : __VA_ARGS__ : "memory"); \
+return r0; \
+} while (0)
+
+#define __internal_syscall0(n) \
+  (__internal_syscall)(n)
+
+static uptr __internal_syscall(long n)
+{
+  register long r6 __asm__("r6") = n;
+  register long r0 __asm__("r0");
+  __asm_syscall("r"(r6));
+}
+
+#define __internal_syscall1(n, a1) \
+  (__internal_syscall)(n, (long)(a1))
+
+static uptr __internal_syscall(long n, long a)
+{
+  register long r6 __asm__("r6") = n;
+  register long r0 __asm__("r0") = a;
+  __asm_syscall("r"(r6), "0"(r0));
+}
+
+#define __internal_syscall2(n, a1, a2) \
+  (__internal_syscall)(n, (long)(a1), (long)(a2))
+
+static uptr __internal_syscall(long n, long a, long b)
+{
+  register long r6 __asm__("r6") = n;
+  register long r0 __asm__("r0") = a;
+  register long r1 __asm__("r1") = b;
+  __asm_syscall("r"(r6), "0"(r0), "r"(r1));
+}
+
+#define __internal_syscall3(n, a1, a2, a3) \
+  (__internal_syscall)(n, (long)(a1), (long)(a2), (long)(a3))
+
+static uptr __internal_syscall(long n, long a, long b, long c)
+{
+  register long r6 __asm__("r6") = n;
+  register long r0 __asm__("r0") = a;
+  register long r1 __asm__("r1") = b;
+  register long r2 __asm__("r2") = c;
+  __asm_syscall("r"(r6), "0"(r0), "r"(r1), "r"(r2));
+}
+
+#define __internal_syscall4(n, a1, a2, a3, a4) \
+  (__internal_syscall)(n, (long)(a1), (long)(a2), (long)(a3), (long)(a4))
+
+static uptr __internal_syscall(long n, long a, long b, long c, long d)
+{
+  register long r6 __asm__("r6") = n;
+  register long r0 __asm__("r0") = a;
+  register long r1 __asm__("r1") = b;
+  register long r2 __asm__("r2") = c;
+  register long r3 __asm__("r3") = d;
+  __asm_syscall("r"(r6), "0"(r0), "r"(r1), "r"(r2), "r"(r3));
+}
+
+#define __internal_syscall5(n, a1, a2, a3, a4, a5) \
+  (__internal_syscall)(n, (long)(a1), (long)(a2), (long)(a3), (long)(a4), \
+   (long)(a5))
+
+static uptr __internal_syscall(long n, long a, long b, long c, long d, long e)
+{
+  register long r6 __asm__("r6") = n;
+  register long r0 __asm__("r0") = a;
+  register long r1 __asm__("r1") = b;
+  register long r2 __asm__("r2") = c;
+  register long r3 __asm__("r3") = d;
+  register long r4 __asm__("r4") = e;
+  __asm_syscall("r"(r6), "0"(r0), "r"(r1), "r"(r2), "r"(r3), "r"(r4));
+}
+
+#define __internal_syscall6(n, a1, a2, a3, a4, a5, a6) \
+  (__internal_syscall)(n, (long)(a1), (long)(a2), (long)(a3), (long)(a4), \
+   (long)(a5), (long)(a6))
+
+static uptr __internal_syscall(long n, long a, long b, long c, long d, long e,
+  long f)
+{
+  register long r6 __asm__("r6") = n;
+  register long r0 __asm__("r0") = a;
+  register long r1 __asm__("r1") = b;
+  register long r2 __asm__("r2") = c;
+  register long r3 __asm__("r3") = d;
+  register long r4 __asm__("r4") = e;
+  register long r5 __asm__("r5") = f;
+  __asm_syscall("r"(r6), "0"(r0), "r"(r1), "r"(r2), "r"(r3), "r"(r4), "r"(r5));
+}
+
+#define __SYSCALL_NARGS_X(a1, a2, a3, a4, a5, a6, a7, a8, n, 

[PATCH] D108083: [sanitizer] Add hexagon support to sanitizer-common

2021-08-17 Thread Brian Cain via Phabricator via cfe-commits
bcain updated this revision to Diff 366995.

Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D108083/new/

https://reviews.llvm.org/D108083

Files:
  compiler-rt/cmake/Modules/AllSupportedArchDefs.cmake
  compiler-rt/lib/sanitizer_common/sanitizer_common.h
  compiler-rt/lib/sanitizer_common/sanitizer_internal_defs.h
  compiler-rt/lib/sanitizer_common/sanitizer_linux.cpp
  compiler-rt/lib/sanitizer_common/sanitizer_platform.h
  compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_linux.cpp
  compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.cpp
  compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.h
  compiler-rt/lib/sanitizer_common/sanitizer_stacktrace.cpp
  compiler-rt/lib/sanitizer_common/sanitizer_syscall_linux_hexagon.inc

Index: compiler-rt/lib/sanitizer_common/sanitizer_syscall_linux_hexagon.inc
===
--- /dev/null
+++ compiler-rt/lib/sanitizer_common/sanitizer_syscall_linux_hexagon.inc
@@ -0,0 +1,131 @@
+//===-- sanitizer_syscall_linux_hexagon.inc -*- C++ -*-===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===--===//
+//
+// Implementations of internal_syscall and internal_iserror for Linux/hexagon.
+//
+//===--===//
+
+#define SYSCALL(name) __NR_ ## name
+
+#define __internal_syscall_LL_E(x) \
+((union { long long ll; long l[2]; }){ .ll = x }).l[0], \
+((union { long long ll; long l[2]; }){ .ll = x }).l[1]
+#define __internal_syscall_LL_O(x) 0, __SYSCALL_LL_E((x))
+
+#define __asm_syscall(...) do { \
+__asm__ __volatile__ ( "trap0(#1)" \
+: "=r"(r0) : __VA_ARGS__ : "memory"); \
+return r0; \
+} while (0)
+
+#define __internal_syscall0(n) \
+  (__internal_syscall)(n)
+
+static uptr __internal_syscall(long n)
+{
+  register long r6 __asm__("r6") = n;
+  register long r0 __asm__("r0");
+  __asm_syscall("r"(r6));
+}
+
+#define __internal_syscall1(n, a1) \
+  (__internal_syscall)(n, (long)(a1))
+
+static uptr __internal_syscall(long n, long a)
+{
+  register long r6 __asm__("r6") = n;
+  register long r0 __asm__("r0") = a;
+  __asm_syscall("r"(r6), "0"(r0));
+}
+
+#define __internal_syscall2(n, a1, a2) \
+  (__internal_syscall)(n, (long)(a1), (long)(a2))
+
+static uptr __internal_syscall(long n, long a, long b)
+{
+  register long r6 __asm__("r6") = n;
+  register long r0 __asm__("r0") = a;
+  register long r1 __asm__("r1") = b;
+  __asm_syscall("r"(r6), "0"(r0), "r"(r1));
+}
+
+#define __internal_syscall3(n, a1, a2, a3) \
+  (__internal_syscall)(n, (long)(a1), (long)(a2), (long)(a3))
+
+static uptr __internal_syscall(long n, long a, long b, long c)
+{
+  register long r6 __asm__("r6") = n;
+  register long r0 __asm__("r0") = a;
+  register long r1 __asm__("r1") = b;
+  register long r2 __asm__("r2") = c;
+  __asm_syscall("r"(r6), "0"(r0), "r"(r1), "r"(r2));
+}
+
+#define __internal_syscall4(n, a1, a2, a3, a4) \
+  (__internal_syscall)(n, (long)(a1), (long)(a2), (long)(a3), (long)(a4))
+
+static uptr __internal_syscall(long n, long a, long b, long c, long d)
+{
+  register long r6 __asm__("r6") = n;
+  register long r0 __asm__("r0") = a;
+  register long r1 __asm__("r1") = b;
+  register long r2 __asm__("r2") = c;
+  register long r3 __asm__("r3") = d;
+  __asm_syscall("r"(r6), "0"(r0), "r"(r1), "r"(r2), "r"(r3));
+}
+
+#define __internal_syscall5(n, a1, a2, a3, a4, a5) \
+  (__internal_syscall)(n, (long)(a1), (long)(a2), (long)(a3), (long)(a4), \
+   (long)(a5))
+
+static uptr __internal_syscall(long n, long a, long b, long c, long d, long e)
+{
+  register long r6 __asm__("r6") = n;
+  register long r0 __asm__("r0") = a;
+  register long r1 __asm__("r1") = b;
+  register long r2 __asm__("r2") = c;
+  register long r3 __asm__("r3") = d;
+  register long r4 __asm__("r4") = e;
+  __asm_syscall("r"(r6), "0"(r0), "r"(r1), "r"(r2), "r"(r3), "r"(r4));
+}
+
+#define __internal_syscall6(n, a1, a2, a3, a4, a5, a6) \
+  (__internal_syscall)(n, (long)(a1), (long)(a2), (long)(a3), (long)(a4), \
+   (long)(a5), (long)(a6))
+
+static uptr __internal_syscall(long n, long a, long b, long c, long d, long e,
+  long f)
+{
+  register long r6 __asm__("r6") = n;
+  register long r0 __asm__("r0") = a;
+  register long r1 __asm__("r1") = b;
+  register long r2 __asm__("r2") = c;
+  register long r3 __asm__("r3") = d;
+  register long r4 __asm__("r4") = e;
+  register long r5 __asm__("r5") = f;
+  __asm_syscall("r"(r6), "0"(r0), "r"(r1), "r"(r2), "r"(r3), "r"(r4), "r"(r5));
+}
+
+#define __SYSCALL_NARGS_X(a1, a2, a3, a4, a5, a6, a7, a8, n, ...) n
+#define __SYSCALL_NARGS(...) \
+  

[PATCH] D108083: [PATCH 1/8] [sanitizer] Add hexagon support to sanitizer-common

2021-08-17 Thread Brian Cain via Phabricator via cfe-commits
bcain added inline comments.



Comment at: compiler-rt/lib/sanitizer_common/sanitizer_stacktrace.cpp:25
   return pc + 8;
-#elif defined(__powerpc__) || defined(__arm__) || defined(__aarch64__)
+#elif defined(__powerpc__) || defined(__arm__) || defined(__aarch64__) \
+  || defined(__hexagon__)

bcain wrote:
> vitalybuka wrote:
> > but please fix ones like this which do not require significant reformatting 
> > of unchanged code.
> Ok that's no problem.
>> but please fix ones like this which do not require significant reformatting 
>> of unchanged code.
> Ok that's no problem.

But it's a little odd -- following the format would pull the `or` operator onto 
the previous line, which would deviate from the style used in the rest of the 
file.

Still happy to make the change, it just doesn't seem like it fits.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D108083/new/

https://reviews.llvm.org/D108083

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


[PATCH] D108083: [PATCH 1/8] [sanitizer] Add hexagon support to sanitizer-common

2021-08-17 Thread Brian Cain via Phabricator via cfe-commits
bcain added a comment.

In D108083#2949815 , @vitalybuka 
wrote:

>> We can help create a bot for hexagon-unknown-linux-musl. What's the process?
>
> Thank you. https://llvm.org/docs/HowToAddABuilder.html

Oh I think I misunderstood:

> Volunteers can provide their build machines to work as build workers to 
> public LLVM Buildbot.

I was prepared to write / test / enable a build recipe but I don't have access 
to a public system that can be added as a worker.  But I can work with our team 
to get the ball rolling, it just doesn't seem like it would be a quick process.




Comment at: compiler-rt/lib/sanitizer_common/sanitizer_linux.cpp:162
+#elif SANITIZER_LINUX && defined(__hexagon__)
+#include "sanitizer_syscall_linux_hexagon.inc"
 #else

vitalybuka wrote:
> bcain wrote:
> > Most of the feedback from `clang-format` checks don't seem to really be the 
> > format we use here.  We should probably apply a more specific 
> > `.clang-format` file if these aren't useful.
> clang-format pre-merge check uses .clang-format files.
> If you apply it it locally make sure to use -style=file.
> 
> Actually this place is ugly. Current .clang-format will indent when the rest 
> of the block is not.
> So up to you, keep it as-is, or clang-format entire block 152-165 (ideally in 
> a separate patch)
I did apply clang-format-diff via pre-commit hook and I don't believe it made 
significant changes, but this is after that formatting.  I prefer to keep it 
as-is because the style near here seems to match.



Comment at: compiler-rt/lib/sanitizer_common/sanitizer_stacktrace.cpp:25
   return pc + 8;
-#elif defined(__powerpc__) || defined(__arm__) || defined(__aarch64__)
+#elif defined(__powerpc__) || defined(__arm__) || defined(__aarch64__) \
+  || defined(__hexagon__)

vitalybuka wrote:
> but please fix ones like this which do not require significant reformatting 
> of unchanged code.
Ok that's no problem.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D108083/new/

https://reviews.llvm.org/D108083

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


[PATCH] D108178: [PATCH 8/8] [clang] enable sanitizers for hexagon

2021-08-16 Thread Brian Cain via Phabricator via cfe-commits
bcain created this revision.
bcain added reviewers: sidneym, kparzysz.
bcain added a project: clang.
Herald added subscribers: s.egerton, simoncook.
bcain requested review of this revision.

Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D108178

Files:
  clang/lib/Driver/ToolChains/Hexagon.cpp
  clang/lib/Driver/ToolChains/Hexagon.h
  clang/lib/Driver/ToolChains/Linux.cpp


Index: clang/lib/Driver/ToolChains/Linux.cpp
===
--- clang/lib/Driver/ToolChains/Linux.cpp
+++ clang/lib/Driver/ToolChains/Linux.cpp
@@ -694,6 +694,7 @@
  getTriple().getArch() == llvm::Triple::thumbeb;
   const bool IsRISCV64 = getTriple().getArch() == llvm::Triple::riscv64;
   const bool IsSystemZ = getTriple().getArch() == llvm::Triple::systemz;
+  const bool IsHexagon = getTriple().getArch() == llvm::Triple::hexagon;
   SanitizerMask Res = ToolChain::getSupportedSanitizers();
   Res |= SanitizerKind::Address;
   Res |= SanitizerKind::PointerCompare;
@@ -707,7 +708,7 @@
   if (IsX86_64 || IsMIPS64 || IsAArch64)
 Res |= SanitizerKind::DataFlow;
   if (IsX86_64 || IsMIPS64 || IsAArch64 || IsX86 || IsArmArch || IsPowerPC64 ||
-  IsRISCV64 || IsSystemZ)
+  IsRISCV64 || IsSystemZ || IsHexagon)
 Res |= SanitizerKind::Leak;
   if (IsX86_64 || IsMIPS64 || IsAArch64 || IsPowerPC64 || IsSystemZ)
 Res |= SanitizerKind::Thread;
@@ -716,7 +717,7 @@
   if (IsX86 || IsX86_64)
 Res |= SanitizerKind::Function;
   if (IsX86_64 || IsMIPS64 || IsAArch64 || IsX86 || IsMIPS || IsArmArch ||
-  IsPowerPC64)
+  IsPowerPC64 || IsHexagon)
 Res |= SanitizerKind::Scudo;
   if (IsX86_64 || IsAArch64) {
 Res |= SanitizerKind::HWAddress;
Index: clang/lib/Driver/ToolChains/Hexagon.h
===
--- clang/lib/Driver/ToolChains/Hexagon.h
+++ clang/lib/Driver/ToolChains/Hexagon.h
@@ -104,6 +104,8 @@
   void getHexagonLibraryPaths(const llvm::opt::ArgList ,
   ToolChain::path_list ) const;
 
+  std::string getCompilerRTPath() const override;
+
   static bool isAutoHVXEnabled(const llvm::opt::ArgList );
   static const StringRef GetDefaultCPU();
   static const StringRef GetTargetCPUVersion(const llvm::opt::ArgList );
Index: clang/lib/Driver/ToolChains/Hexagon.cpp
===
--- clang/lib/Driver/ToolChains/Hexagon.cpp
+++ clang/lib/Driver/ToolChains/Hexagon.cpp
@@ -146,6 +146,8 @@
   "-mcpu=hexagon" +
   toolchains::HexagonToolChain::GetTargetCPUVersion(Args)));
 
+  addSanitizerRuntimes(HTC, Args, CmdArgs);
+
   if (Output.isFilename()) {
 CmdArgs.push_back("-o");
 CmdArgs.push_back(Output.getFilename());
@@ -223,6 +225,8 @@
   bool UseShared = IsShared && !IsStatic;
   StringRef CpuVer = toolchains::HexagonToolChain::GetTargetCPUVersion(Args);
 
+  bool NeedsSanitizerDeps = addSanitizerRuntimes(HTC, Args, CmdArgs);
+
   
//
   // Silence warnings for various options
   
//
@@ -288,6 +292,12 @@
 AddLinkerInputs(HTC, Inputs, Args, CmdArgs, JA);
 
 if (!Args.hasArg(options::OPT_nostdlib, options::OPT_nodefaultlibs)) {
+  if (NeedsSanitizerDeps) {
+linkSanitizerRuntimeDeps(HTC, CmdArgs);
+// FIXME: sanitizer_common or only some require unwind?
+CmdArgs.push_back("-lunwind");
+  }
+
   CmdArgs.push_back("-lclang_rt.builtins-hexagon");
   CmdArgs.push_back("-lc");
 }
@@ -450,6 +460,13 @@
   return None;
 }
 
+std::string HexagonToolChain::getCompilerRTPath() const {
+  SmallString<128> Dir(getDriver().SysRoot);
+  llvm::sys::path::append(Dir, "usr", "lib");
+  Dir += SelectedMultilib.gccSuffix();
+  return std::string(Dir.str());
+}
+
 void HexagonToolChain::getHexagonLibraryPaths(const ArgList ,
   ToolChain::path_list ) const {
   const Driver  = getDriver();


Index: clang/lib/Driver/ToolChains/Linux.cpp
===
--- clang/lib/Driver/ToolChains/Linux.cpp
+++ clang/lib/Driver/ToolChains/Linux.cpp
@@ -694,6 +694,7 @@
  getTriple().getArch() == llvm::Triple::thumbeb;
   const bool IsRISCV64 = getTriple().getArch() == llvm::Triple::riscv64;
   const bool IsSystemZ = getTriple().getArch() == llvm::Triple::systemz;
+  const bool IsHexagon = getTriple().getArch() == llvm::Triple::hexagon;
   SanitizerMask Res = ToolChain::getSupportedSanitizers();
   Res |= SanitizerKind::Address;
   Res |= SanitizerKind::PointerCompare;
@@ -707,7 +708,7 @@
   if (IsX86_64 || IsMIPS64 || IsAArch64)
 Res |= SanitizerKind::DataFlow;
   if (IsX86_64 || IsMIPS64 || IsAArch64 || IsX86 || IsArmArch || IsPowerPC64 ||
-  IsRISCV64 || IsSystemZ)
+  IsRISCV64 || IsSystemZ || IsHexagon)
 Res |= SanitizerKind::Leak;
   if (IsX86_64 

[PATCH] D108083: [sanitizer] Add hexagon support to sanitizer-common (1/8)

2021-08-16 Thread Brian Cain via Phabricator via cfe-commits
bcain updated this revision to Diff 366766.
bcain retitled this revision from "add sanitizer support to hexagon" to 
"[sanitizer] Add hexagon support to sanitizer-common (1/8)".
bcain edited the summary of this revision.
bcain added a comment.

Decomposed to just the sanitizer-common portion.  Now it's an 8 patch series, 
this is number 1.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D108083/new/

https://reviews.llvm.org/D108083

Files:
  compiler-rt/cmake/Modules/AllSupportedArchDefs.cmake
  compiler-rt/lib/sanitizer_common/sanitizer_common.h
  compiler-rt/lib/sanitizer_common/sanitizer_internal_defs.h
  compiler-rt/lib/sanitizer_common/sanitizer_linux.cpp
  compiler-rt/lib/sanitizer_common/sanitizer_platform.h
  compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_linux.cpp
  compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.cpp
  compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.h
  compiler-rt/lib/sanitizer_common/sanitizer_stacktrace.cpp
  compiler-rt/lib/sanitizer_common/sanitizer_syscall_linux_hexagon.inc

Index: compiler-rt/lib/sanitizer_common/sanitizer_syscall_linux_hexagon.inc
===
--- /dev/null
+++ compiler-rt/lib/sanitizer_common/sanitizer_syscall_linux_hexagon.inc
@@ -0,0 +1,131 @@
+//===-- sanitizer_syscall_linux_hexagon.inc -*- C++ -*-===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===--===//
+//
+// Implementations of internal_syscall and internal_iserror for Linux/hexagon.
+//
+//===--===//
+
+#define SYSCALL(name) __NR_ ## name
+
+#define __internal_syscall_LL_E(x) \
+((union { long long ll; long l[2]; }){ .ll = x }).l[0], \
+((union { long long ll; long l[2]; }){ .ll = x }).l[1]
+#define __internal_syscall_LL_O(x) 0, __SYSCALL_LL_E((x))
+
+#define __asm_syscall(...) do { \
+__asm__ __volatile__ ( "trap0(#1)" \
+: "=r"(r0) : __VA_ARGS__ : "memory"); \
+return r0; \
+} while (0)
+
+#define __internal_syscall0(n) \
+  (__internal_syscall)(n)
+
+static uptr __internal_syscall(long n)
+{
+  register long r6 __asm__("r6") = n;
+  register long r0 __asm__("r0");
+  __asm_syscall("r"(r6));
+}
+
+#define __internal_syscall1(n, a1) \
+  (__internal_syscall)(n, (long)(a1))
+
+static uptr __internal_syscall(long n, long a)
+{
+  register long r6 __asm__("r6") = n;
+  register long r0 __asm__("r0") = a;
+  __asm_syscall("r"(r6), "0"(r0));
+}
+
+#define __internal_syscall2(n, a1, a2) \
+  (__internal_syscall)(n, (long)(a1), (long)(a2))
+
+static uptr __internal_syscall(long n, long a, long b)
+{
+  register long r6 __asm__("r6") = n;
+  register long r0 __asm__("r0") = a;
+  register long r1 __asm__("r1") = b;
+  __asm_syscall("r"(r6), "0"(r0), "r"(r1));
+}
+
+#define __internal_syscall3(n, a1, a2, a3) \
+  (__internal_syscall)(n, (long)(a1), (long)(a2), (long)(a3))
+
+static uptr __internal_syscall(long n, long a, long b, long c)
+{
+  register long r6 __asm__("r6") = n;
+  register long r0 __asm__("r0") = a;
+  register long r1 __asm__("r1") = b;
+  register long r2 __asm__("r2") = c;
+  __asm_syscall("r"(r6), "0"(r0), "r"(r1), "r"(r2));
+}
+
+#define __internal_syscall4(n, a1, a2, a3, a4) \
+  (__internal_syscall)(n, (long)(a1), (long)(a2), (long)(a3), (long)(a4))
+
+static uptr __internal_syscall(long n, long a, long b, long c, long d)
+{
+  register long r6 __asm__("r6") = n;
+  register long r0 __asm__("r0") = a;
+  register long r1 __asm__("r1") = b;
+  register long r2 __asm__("r2") = c;
+  register long r3 __asm__("r3") = d;
+  __asm_syscall("r"(r6), "0"(r0), "r"(r1), "r"(r2), "r"(r3));
+}
+
+#define __internal_syscall5(n, a1, a2, a3, a4, a5) \
+  (__internal_syscall)(n, (long)(a1), (long)(a2), (long)(a3), (long)(a4), \
+   (long)(a5))
+
+static uptr __internal_syscall(long n, long a, long b, long c, long d, long e)
+{
+  register long r6 __asm__("r6") = n;
+  register long r0 __asm__("r0") = a;
+  register long r1 __asm__("r1") = b;
+  register long r2 __asm__("r2") = c;
+  register long r3 __asm__("r3") = d;
+  register long r4 __asm__("r4") = e;
+  __asm_syscall("r"(r6), "0"(r0), "r"(r1), "r"(r2), "r"(r3), "r"(r4));
+}
+
+#define __internal_syscall6(n, a1, a2, a3, a4, a5, a6) \
+  (__internal_syscall)(n, (long)(a1), (long)(a2), (long)(a3), (long)(a4), \
+   (long)(a5), (long)(a6))
+
+static uptr __internal_syscall(long n, long a, long b, long c, long d, long e,
+  long f)
+{
+  register long r6 __asm__("r6") = n;
+  register long r0 __asm__("r0") = a;
+  register long r1 __asm__("r1") = b;
+  register long r2 __asm__("r2") = c;
+  

[PATCH] D108083: add sanitizer support to hexagon

2021-08-16 Thread Brian Cain via Phabricator via cfe-commits
bcain added a comment.

In D108083#2947914 , @vitalybuka 
wrote:

> Do we have public bot for hexagon?

I think we have one intended to for checking hexagon-unknown-elf and perhaps 
not one for hexagon-unknown-linux-musl. I believe that only the Linux target 
uses the compiler-rt libraries, though.

We can help create a bot for hexagon-unknown-linux-musl. What's the process?


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D108083/new/

https://reviews.llvm.org/D108083

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


[PATCH] D108083: add sanitizer support to hexagon

2021-08-16 Thread Brian Cain via Phabricator via cfe-commits
bcain added a comment.

In D108083#2947907 , @vitalybuka 
wrote:

> Can you cut this into separate peaces, at least patch per sanitizer for "asan 
> lsan ubsan scudo scudo_standalone cfi safestack"?

Sure, that's no problem. While I'm breaking it up, us there a 
guideline/preference to whether the clang changes can be combined in one of 
these patches, or should those be on their own as well?

> Some common peaces could be probably extracted as well.






Comment at: compiler-rt/test/asan/CMakeLists.txt:19
 set(${bits} 64)
-  elseif (${arch} MATCHES "i386|arm|mips|mipsel|sparc")
+  elseif (${arch} MATCHES "i386|arm|mips|mipsel|sparc|hexagon")
 set(${bits} 32)

vitalybuka wrote:
> why only this test changes?
> 
Sorry, I shouldnt have included this, I'll omit it. I'd like to land the build 
changes before test ones. 


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D108083/new/

https://reviews.llvm.org/D108083

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


[PATCH] D108083: add sanitizer support to hexagon

2021-08-15 Thread Brian Cain via Phabricator via cfe-commits
bcain added inline comments.



Comment at: clang/lib/Driver/ToolChains/Hexagon.cpp:297-298
+linkSanitizerRuntimeDeps(HTC, CmdArgs);
+// FIXME: sanitizer_common or only some require unwind?
+CmdArgs.push_back("-lunwind");
+  }

I will try to determine which sanitizers require libunwind so that it's only 
added when appropriate.



Comment at: compiler-rt/lib/sanitizer_common/sanitizer_linux.cpp:162
+#elif SANITIZER_LINUX && defined(__hexagon__)
+#include "sanitizer_syscall_linux_hexagon.inc"
 #else

Most of the feedback from `clang-format` checks don't seem to really be the 
format we use here.  We should probably apply a more specific `.clang-format` 
file if these aren't useful.



Comment at: 
compiler-rt/lib/sanitizer_common/sanitizer_syscall_linux_hexagon.inc:124
+
+bool internal_iserror(uptr retval, int *rverrno) {
+  if (retval == (uptr)-1) {

@sidneym Can you confirm that this implementation looks correct?  I thought the 
convention was -1 for failed syscalls.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D108083/new/

https://reviews.llvm.org/D108083

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


[PATCH] D108083: [DRAFT] add sanitizer support to hexagon

2021-08-15 Thread Brian Cain via Phabricator via cfe-commits
bcain created this revision.
bcain added a reviewer: sidneym.
Herald added subscribers: s.egerton, cryptoad, simoncook, fedor.sergeev, mgorny.
bcain requested review of this revision.
Herald added projects: clang, Sanitizers.
Herald added subscribers: Sanitizers, cfe-commits.

This patch will need some iteration and decomposition, just putting some 
initial content out there as a basis for discussion before serious review.


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D108083

Files:
  clang/lib/Driver/ToolChains/Hexagon.cpp
  clang/lib/Driver/ToolChains/Hexagon.h
  clang/lib/Driver/ToolChains/Linux.cpp
  compiler-rt/cmake/Modules/AllSupportedArchDefs.cmake
  compiler-rt/lib/gwp_asan/CMakeLists.txt
  compiler-rt/lib/lsan/lsan_allocator.h
  compiler-rt/lib/profile/CMakeLists.txt
  compiler-rt/lib/sanitizer_common/sanitizer_common.h
  compiler-rt/lib/sanitizer_common/sanitizer_internal_defs.h
  compiler-rt/lib/sanitizer_common/sanitizer_linux.cpp
  compiler-rt/lib/sanitizer_common/sanitizer_platform.h
  compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_linux.cpp
  compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.cpp
  compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.h
  compiler-rt/lib/sanitizer_common/sanitizer_stacktrace.cpp
  compiler-rt/lib/sanitizer_common/sanitizer_syscall_linux_hexagon.inc
  compiler-rt/lib/scudo/standalone/CMakeLists.txt
  compiler-rt/test/asan/CMakeLists.txt

Index: compiler-rt/test/asan/CMakeLists.txt
===
--- compiler-rt/test/asan/CMakeLists.txt
+++ compiler-rt/test/asan/CMakeLists.txt
@@ -16,7 +16,7 @@
 macro(get_bits_for_arch arch bits)
   if (${arch} MATCHES "x86_64|powerpc64|powerpc64le|aarch64|arm64|mips64|mips64el|s390x|sparcv9|riscv64")
 set(${bits} 64)
-  elseif (${arch} MATCHES "i386|arm|mips|mipsel|sparc")
+  elseif (${arch} MATCHES "i386|arm|mips|mipsel|sparc|hexagon")
 set(${bits} 32)
   else()
 message(FATAL_ERROR "Unknown target architecture: ${arch}")
Index: compiler-rt/lib/scudo/standalone/CMakeLists.txt
===
--- compiler-rt/lib/scudo/standalone/CMakeLists.txt
+++ compiler-rt/lib/scudo/standalone/CMakeLists.txt
@@ -14,7 +14,9 @@
 append_list_if(COMPILER_RT_HAS_WNO_FORMAT -Wno-format SCUDO_CFLAGS)
 
 # Remove -stdlib= which is unused when passing -nostdinc++.
+if (NOT "${CMAKE_CXX_FLAGS}" STREQUAL "")
 string(REGEX REPLACE "-stdlib=[a-zA-Z+]*" "" CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS})
+endif()
 
 append_list_if(COMPILER_RT_HAS_FVISIBILITY_HIDDEN_FLAG -fvisibility=hidden SCUDO_CFLAGS)
 
Index: compiler-rt/lib/sanitizer_common/sanitizer_syscall_linux_hexagon.inc
===
--- /dev/null
+++ compiler-rt/lib/sanitizer_common/sanitizer_syscall_linux_hexagon.inc
@@ -0,0 +1,132 @@
+//===-- sanitizer_syscall_linux_hexagon.inc -*- C++ -*-===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===--===//
+//
+// Implementations of internal_syscall and internal_iserror for Linux/hexagon.
+//
+//===--===//
+
+#define SYSCALL(name) __NR_ ## name
+
+#define __internal_syscall_LL_E(x) \
+((union { long long ll; long l[2]; }){ .ll = x }).l[0], \
+((union { long long ll; long l[2]; }){ .ll = x }).l[1]
+#define __internal_syscall_LL_O(x) 0, __SYSCALL_LL_E((x))
+
+#define __asm_syscall(...) do { \
+__asm__ __volatile__ ( "trap0(#1)" \
+: "=r"(r0) : __VA_ARGS__ : "memory"); \
+return r0; \
+} while (0)
+
+#define __internal_syscall0(n) \
+  (__internal_syscall)(n)
+
+static uptr __internal_syscall(long n)
+{
+  register long r6 __asm__("r6") = n;
+  register long r0 __asm__("r0");
+  __asm_syscall("r"(r6));
+}
+
+#define __internal_syscall1(n, a1) \
+  (__internal_syscall)(n, (long)(a1))
+
+static uptr __internal_syscall(long n, long a)
+{
+  register long r6 __asm__("r6") = n;
+  register long r0 __asm__("r0") = a;
+  __asm_syscall("r"(r6), "0"(r0));
+}
+
+#define __internal_syscall2(n, a1, a2) \
+  (__internal_syscall)(n, (long)(a1), (long)(a2))
+
+static uptr __internal_syscall(long n, long a, long b)
+{
+  register long r6 __asm__("r6") = n;
+  register long r0 __asm__("r0") = a;
+  register long r1 __asm__("r1") = b;
+  __asm_syscall("r"(r6), "0"(r0), "r"(r1));
+}
+
+#define __internal_syscall3(n, a1, a2, a3) \
+  (__internal_syscall)(n, (long)(a1), (long)(a2), (long)(a3))
+
+static uptr __internal_syscall(long n, long a, long b, long c)
+{
+  register long r6 __asm__("r6") = n;
+  register long r0 __asm__("r0") = a;
+  register long r1 __asm__("r1") = b;
+  register long r2 __asm__("r2") = c;
+  

[PATCH] D106737: [clang] [hexagon] Add resource include dir

2021-08-10 Thread Brian Cain via Phabricator via cfe-commits
bcain updated this revision to Diff 365459.
bcain added a comment.

Suggestions from Fangrui: override the resource-dir with an explicit arg, 
disable for windows.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D106737/new/

https://reviews.llvm.org/D106737

Files:
  clang/lib/Driver/ToolChains/Hexagon.cpp
  clang/test/Driver/hexagon-toolchain-linux.c


Index: clang/test/Driver/hexagon-toolchain-linux.c
===
--- clang/test/Driver/hexagon-toolchain-linux.c
+++ clang/test/Driver/hexagon-toolchain-linux.c
@@ -1,3 +1,5 @@
+// UNSUPPORTED: system-windows
+
 // 
-
 // Passing --musl
 // 
-
@@ -94,4 +96,26 @@
 // RUN:   -mcpu=hexagonv60 \
 // RUN:   %s 2>&1 \
 // RUN:   | FileCheck -check-prefix=CHECK007 %s
-// CHECK007:  "-internal-isystem" 
"{{.*}}hexagon{{/|}}include{{/|}}c++{{/|}}v1"
+// CHECK007:   "-internal-isystem" 
"{{.*}}hexagon{{/|}}include{{/|}}c++{{/|}}v1"
+// 
-
+// internal-isystem for linux with and without musl
+// 
-
+// RUN: %clang -### -target hexagon-unknown-linux-musl \
+// RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \
+// RUN:   -resource-dir=%S/Inputs/resource_dir \
+// RUN:   %s 2>&1 \
+// RUN:   | FileCheck -check-prefix=CHECK008 %s
+// CHECK008:   InstalledDir: [[INSTALLED_DIR:.+]]
+// CHECK008:   "-resource-dir" "[[RESOURCE:[^"]+]]"
+// CHECK008-SAME: {{^}} "-internal-isystem" "[[RESOURCE]]/include"
+// CHECK008-SAME: {{^}} "-internal-externc-isystem" 
"[[INSTALLED_DIR]]/../target/hexagon/include"
+
+// RUN: %clang -### -target hexagon-unknown-linux \
+// RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \
+// RUN:   -resource-dir=%S/Inputs/resource_dir \
+// RUN:   %s 2>&1 \
+// RUN:   | FileCheck -check-prefix=CHECK009 %s
+// CHECK009:   InstalledDir: [[INSTALLED_DIR:.+]]
+// CHECK009:   "-resource-dir" "[[RESOURCE:[^"]+]]"
+// CHECK009-SAME: {{^}} "-internal-isystem" "[[RESOURCE]]/include"
+// CHECK009-SAME: {{^}} "-internal-externc-isystem" 
"[[INSTALLED_DIR]]/../target/hexagon/include"
Index: clang/lib/Driver/ToolChains/Hexagon.cpp
===
--- clang/lib/Driver/ToolChains/Hexagon.cpp
+++ clang/lib/Driver/ToolChains/Hexagon.cpp
@@ -588,21 +588,43 @@
 
 void HexagonToolChain::AddClangSystemIncludeArgs(const ArgList ,
  ArgStringList ) const 
{
-  if (DriverArgs.hasArg(options::OPT_nostdinc) ||
-  DriverArgs.hasArg(options::OPT_nostdlibinc))
+  if (DriverArgs.hasArg(options::OPT_nostdinc))
 return;
 
+  const bool IsELF = !getTriple().isMusl() && !getTriple().isOSLinux();
+  const bool IsLinuxMusl = getTriple().isMusl() && getTriple().isOSLinux();
+
   const Driver  = getDriver();
-  if (!D.SysRoot.empty()) {
+  SmallString<128> ResourceDirInclude(D.ResourceDir);
+  if (!IsELF) {
+llvm::sys::path::append(ResourceDirInclude, "include");
+if (!DriverArgs.hasArg(options::OPT_nobuiltininc) &&
+(!IsLinuxMusl || DriverArgs.hasArg(options::OPT_nostdlibinc)))
+  addSystemInclude(DriverArgs, CC1Args, ResourceDirInclude);
+  }
+  if (DriverArgs.hasArg(options::OPT_nostdlibinc))
+return;
+
+  const bool HasSysRoot = !D.SysRoot.empty();
+  if (HasSysRoot) {
 SmallString<128> P(D.SysRoot);
-if (getTriple().isMusl())
+if (IsLinuxMusl)
   llvm::sys::path::append(P, "usr/include");
 else
   llvm::sys::path::append(P, "include");
+
 addExternCSystemInclude(DriverArgs, CC1Args, P.str());
-return;
+// LOCAL_INCLUDE_DIR
+addSystemInclude(DriverArgs, CC1Args, P + "/usr/local/include");
+// TOOL_INCLUDE_DIR
+AddMultilibIncludeArgs(DriverArgs, CC1Args);
   }
 
+  if (!DriverArgs.hasArg(options::OPT_nobuiltininc) && IsLinuxMusl)
+addSystemInclude(DriverArgs, CC1Args, ResourceDirInclude);
+
+  if (HasSysRoot)
+return;
   std::string TargetDir = getHexagonTargetDir(D.getInstalledDir(),
   D.PrefixDirs);
   addExternCSystemInclude(DriverArgs, CC1Args, TargetDir + "/hexagon/include");


Index: clang/test/Driver/hexagon-toolchain-linux.c
===
--- clang/test/Driver/hexagon-toolchain-linux.c
+++ clang/test/Driver/hexagon-toolchain-linux.c
@@ -1,3 +1,5 @@
+// UNSUPPORTED: system-windows
+
 // -
 // Passing --musl
 // -
@@ -94,4 +96,26 @@
 // RUN:   -mcpu=hexagonv60 \
 // RUN:   %s 2>&1 \
 // RUN:   | FileCheck 

[PATCH] D106737: [clang] [hexagon] Add resource include dir

2021-08-09 Thread Brian Cain via Phabricator via cfe-commits
bcain updated this revision to Diff 365352.
bcain added a comment.

Test case updates per suggestion.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D106737/new/

https://reviews.llvm.org/D106737

Files:
  clang/lib/Driver/ToolChains/Hexagon.cpp
  clang/test/Driver/hexagon-toolchain-linux.c


Index: clang/test/Driver/hexagon-toolchain-linux.c
===
--- clang/test/Driver/hexagon-toolchain-linux.c
+++ clang/test/Driver/hexagon-toolchain-linux.c
@@ -94,4 +94,24 @@
 // RUN:   -mcpu=hexagonv60 \
 // RUN:   %s 2>&1 \
 // RUN:   | FileCheck -check-prefix=CHECK007 %s
-// CHECK007:  "-internal-isystem" 
"{{.*}}hexagon{{/|}}include{{/|}}c++{{/|}}v1"
+// CHECK007:   "-internal-isystem" 
"{{.*}}hexagon{{/|}}include{{/|}}c++{{/|}}v1"
+// 
-
+// internal-isystem for linux with and without musl
+// 
-
+// RUN: %clang -### -target hexagon-unknown-linux-musl \
+// RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \
+// RUN:   %s 2>&1 \
+// RUN:   | FileCheck -check-prefix=CHECK008 %s
+// CHECK008:   InstalledDir: [[INSTALLED_DIR:.+]]
+// CHECK008:   "-resource-dir" "[[RESOURCE:[^"]+]]"
+// CHECK008-SAME: {{^}} "-internal-isystem" "[[RESOURCE]]/include"
+// CHECK008-SAME: {{^}} "-internal-externc-isystem" 
"[[INSTALLED_DIR]]/../target/hexagon/include"
+
+// RUN: %clang -### -target hexagon-unknown-linux \
+// RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \
+// RUN:   %s 2>&1 \
+// RUN:   | FileCheck -check-prefix=CHECK009 %s
+// CHECK009:   InstalledDir: [[INSTALLED_DIR:.+]]
+// CHECK009:   "-resource-dir" "[[RESOURCE:[^"]+]]"
+// CHECK009-SAME: {{^}} "-internal-isystem" "[[RESOURCE]]/include"
+// CHECK009-SAME: {{^}} "-internal-externc-isystem" 
"[[INSTALLED_DIR]]/../target/hexagon/include"
Index: clang/lib/Driver/ToolChains/Hexagon.cpp
===
--- clang/lib/Driver/ToolChains/Hexagon.cpp
+++ clang/lib/Driver/ToolChains/Hexagon.cpp
@@ -588,21 +588,43 @@
 
 void HexagonToolChain::AddClangSystemIncludeArgs(const ArgList ,
  ArgStringList ) const 
{
-  if (DriverArgs.hasArg(options::OPT_nostdinc) ||
-  DriverArgs.hasArg(options::OPT_nostdlibinc))
+  if (DriverArgs.hasArg(options::OPT_nostdinc))
 return;
 
+  const bool IsELF = !getTriple().isMusl() && !getTriple().isOSLinux();
+  const bool IsLinuxMusl = getTriple().isMusl() && getTriple().isOSLinux();
+
   const Driver  = getDriver();
-  if (!D.SysRoot.empty()) {
+  SmallString<128> ResourceDirInclude(D.ResourceDir);
+  if (!IsELF) {
+llvm::sys::path::append(ResourceDirInclude, "include");
+if (!DriverArgs.hasArg(options::OPT_nobuiltininc) &&
+(!IsLinuxMusl || DriverArgs.hasArg(options::OPT_nostdlibinc)))
+  addSystemInclude(DriverArgs, CC1Args, ResourceDirInclude);
+  }
+  if (DriverArgs.hasArg(options::OPT_nostdlibinc))
+return;
+
+  const bool HasSysRoot = !D.SysRoot.empty();
+  if (HasSysRoot) {
 SmallString<128> P(D.SysRoot);
-if (getTriple().isMusl())
+if (IsLinuxMusl)
   llvm::sys::path::append(P, "usr/include");
 else
   llvm::sys::path::append(P, "include");
+
 addExternCSystemInclude(DriverArgs, CC1Args, P.str());
-return;
+// LOCAL_INCLUDE_DIR
+addSystemInclude(DriverArgs, CC1Args, P + "/usr/local/include");
+// TOOL_INCLUDE_DIR
+AddMultilibIncludeArgs(DriverArgs, CC1Args);
   }
 
+  if (!DriverArgs.hasArg(options::OPT_nobuiltininc) && IsLinuxMusl)
+addSystemInclude(DriverArgs, CC1Args, ResourceDirInclude);
+
+  if (HasSysRoot)
+return;
   std::string TargetDir = getHexagonTargetDir(D.getInstalledDir(),
   D.PrefixDirs);
   addExternCSystemInclude(DriverArgs, CC1Args, TargetDir + "/hexagon/include");


Index: clang/test/Driver/hexagon-toolchain-linux.c
===
--- clang/test/Driver/hexagon-toolchain-linux.c
+++ clang/test/Driver/hexagon-toolchain-linux.c
@@ -94,4 +94,24 @@
 // RUN:   -mcpu=hexagonv60 \
 // RUN:   %s 2>&1 \
 // RUN:   | FileCheck -check-prefix=CHECK007 %s
-// CHECK007:  "-internal-isystem" "{{.*}}hexagon{{/|}}include{{/|}}c++{{/|}}v1"
+// CHECK007:   "-internal-isystem" "{{.*}}hexagon{{/|}}include{{/|}}c++{{/|}}v1"
+// -
+// internal-isystem for linux with and without musl
+// -
+// RUN: %clang -### -target hexagon-unknown-linux-musl \
+// RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \
+// RUN:   %s 2>&1 \
+// RUN:   | FileCheck -check-prefix=CHECK008 %s

[PATCH] D106737: [clang] [hexagon] Add resource include dir

2021-08-05 Thread Brian Cain via Phabricator via cfe-commits
bcain updated this revision to Diff 364665.
bcain retitled this revision from "DRAFT - [clang] [hexagon] Add resource 
include dir" to "[clang] [hexagon] Add resource include dir".
bcain added a comment.
Herald added a subscriber: ormris.

Add a test case, address failing test.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D106737/new/

https://reviews.llvm.org/D106737

Files:
  clang/lib/Driver/ToolChains/Hexagon.cpp
  clang/test/Driver/hexagon-toolchain-linux.c


Index: clang/test/Driver/hexagon-toolchain-linux.c
===
--- clang/test/Driver/hexagon-toolchain-linux.c
+++ clang/test/Driver/hexagon-toolchain-linux.c
@@ -95,3 +95,15 @@
 // RUN:   %s 2>&1 \
 // RUN:   | FileCheck -check-prefix=CHECK007 %s
 // CHECK007:  "-internal-isystem" 
"{{.*}}hexagon{{/|}}include{{/|}}c++{{/|}}v1"
+// 
-
+// internal-isystem for linux with and without musl
+// 
-
+// RUN: %clangxx -### -target hexagon-unknown-linux-musl \
+// RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \
+// RUN:   %s 2>&1 \
+// RUN:   | FileCheck -check-prefix=CHECK008 %s
+// RUN: %clangxx -### -target hexagon-unknown-linux \
+// RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \
+// RUN:   %s 2>&1 \
+// RUN:   | FileCheck -check-prefix=CHECK008 %s
+// CHECK008:  "-internal-isystem" 
"{{.*}}clang{{/|}}{{.*}}{{/|}}include"
Index: clang/lib/Driver/ToolChains/Hexagon.cpp
===
--- clang/lib/Driver/ToolChains/Hexagon.cpp
+++ clang/lib/Driver/ToolChains/Hexagon.cpp
@@ -588,21 +588,43 @@
 
 void HexagonToolChain::AddClangSystemIncludeArgs(const ArgList ,
  ArgStringList ) const 
{
-  if (DriverArgs.hasArg(options::OPT_nostdinc) ||
-  DriverArgs.hasArg(options::OPT_nostdlibinc))
+  if (DriverArgs.hasArg(options::OPT_nostdinc))
 return;
 
+  const bool IsELF = !getTriple().isMusl() && !getTriple().isOSLinux();
+  const bool IsLinuxMusl = getTriple().isMusl() && getTriple().isOSLinux();
+
   const Driver  = getDriver();
-  if (!D.SysRoot.empty()) {
+  SmallString<128> ResourceDirInclude(D.ResourceDir);
+  if (!IsELF) {
+llvm::sys::path::append(ResourceDirInclude, "include");
+if (!DriverArgs.hasArg(options::OPT_nobuiltininc) &&
+(!IsLinuxMusl || DriverArgs.hasArg(options::OPT_nostdlibinc)))
+  addSystemInclude(DriverArgs, CC1Args, ResourceDirInclude);
+  }
+  if (DriverArgs.hasArg(options::OPT_nostdlibinc))
+return;
+
+  const bool HasSysRoot = !D.SysRoot.empty();
+  if (HasSysRoot) {
 SmallString<128> P(D.SysRoot);
-if (getTriple().isMusl())
+if (IsLinuxMusl)
   llvm::sys::path::append(P, "usr/include");
 else
   llvm::sys::path::append(P, "include");
+
 addExternCSystemInclude(DriverArgs, CC1Args, P.str());
-return;
+// LOCAL_INCLUDE_DIR
+addSystemInclude(DriverArgs, CC1Args, P + "/usr/local/include");
+// TOOL_INCLUDE_DIR
+AddMultilibIncludeArgs(DriverArgs, CC1Args);
   }
 
+  if (!DriverArgs.hasArg(options::OPT_nobuiltininc) && IsLinuxMusl)
+addSystemInclude(DriverArgs, CC1Args, ResourceDirInclude);
+
+  if (HasSysRoot)
+return;
   std::string TargetDir = getHexagonTargetDir(D.getInstalledDir(),
   D.PrefixDirs);
   addExternCSystemInclude(DriverArgs, CC1Args, TargetDir + "/hexagon/include");


Index: clang/test/Driver/hexagon-toolchain-linux.c
===
--- clang/test/Driver/hexagon-toolchain-linux.c
+++ clang/test/Driver/hexagon-toolchain-linux.c
@@ -95,3 +95,15 @@
 // RUN:   %s 2>&1 \
 // RUN:   | FileCheck -check-prefix=CHECK007 %s
 // CHECK007:  "-internal-isystem" "{{.*}}hexagon{{/|}}include{{/|}}c++{{/|}}v1"
+// -
+// internal-isystem for linux with and without musl
+// -
+// RUN: %clangxx -### -target hexagon-unknown-linux-musl \
+// RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \
+// RUN:   %s 2>&1 \
+// RUN:   | FileCheck -check-prefix=CHECK008 %s
+// RUN: %clangxx -### -target hexagon-unknown-linux \
+// RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \
+// RUN:   %s 2>&1 \
+// RUN:   | FileCheck -check-prefix=CHECK008 %s
+// CHECK008:  "-internal-isystem" "{{.*}}clang{{/|}}{{.*}}{{/|}}include"
Index: clang/lib/Driver/ToolChains/Hexagon.cpp
===
--- clang/lib/Driver/ToolChains/Hexagon.cpp
+++ clang/lib/Driver/ToolChains/Hexagon.cpp
@@ -588,21 +588,43 @@
 
 void 

[PATCH] D106737: DRAFT - [clang] [hexagon] Add resource include dir

2021-07-26 Thread Brian Cain via Phabricator via cfe-commits
bcain added inline comments.



Comment at: clang/lib/Driver/ToolChains/Hexagon.cpp:604
+  const bool HasSysRoot = !D.SysRoot.empty();
+  if (HasSysRoot) {
 SmallString<128> P(D.SysRoot);

MaskRay wrote:
> To match Linux.cpp, this code block should be unconditional.
I *think* this is an intentional difference from `Linux.cpp` in order to suit 
`hexagon-unknown-elf`. @sidneym do you think we need this conditional behavior?


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D106737/new/

https://reviews.llvm.org/D106737

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


[PATCH] D106737: DRAFT - [clang] [hexagon] Add resource include dir

2021-07-23 Thread Brian Cain via Phabricator via cfe-commits
bcain added a comment.

This patch is so far just for discussion, still needs tests, etc.  The 
motivation for this patch is to be able to include the intrinsic header files 
installed in the resource dir.

I've taken inspiration from `ToolChains/Linux.cpp` here.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D106737/new/

https://reviews.llvm.org/D106737

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


[PATCH] D106737: DRAFT - [clang] [hexagon] Add resource include dir

2021-07-23 Thread Brian Cain via Phabricator via cfe-commits
bcain created this revision.
bcain added reviewers: sidneym, MaskRay.
bcain requested review of this revision.
Herald added a project: clang.

Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D106737

Files:
  clang/lib/Driver/ToolChains/Hexagon.cpp


Index: clang/lib/Driver/ToolChains/Hexagon.cpp
===
--- clang/lib/Driver/ToolChains/Hexagon.cpp
+++ clang/lib/Driver/ToolChains/Hexagon.cpp
@@ -588,21 +588,38 @@
 
 void HexagonToolChain::AddClangSystemIncludeArgs(const ArgList ,
  ArgStringList ) const 
{
-  if (DriverArgs.hasArg(options::OPT_nostdinc) ||
-  DriverArgs.hasArg(options::OPT_nostdlibinc))
+  if (DriverArgs.hasArg(options::OPT_nostdinc))
 return;
 
   const Driver  = getDriver();
-  if (!D.SysRoot.empty()) {
+  SmallString<128> ResourceDirInclude(D.ResourceDir);
+  llvm::sys::path::append(ResourceDirInclude, "include");
+  if (!DriverArgs.hasArg(options::OPT_nobuiltininc) &&
+  (!getTriple().isMusl() || DriverArgs.hasArg(options::OPT_nostdlibinc)))
+addSystemInclude(DriverArgs, CC1Args, ResourceDirInclude);
+  if (DriverArgs.hasArg(options::OPT_nostdlibinc))
+return;
+
+  const bool HasSysRoot = !D.SysRoot.empty();
+  if (HasSysRoot) {
 SmallString<128> P(D.SysRoot);
 if (getTriple().isMusl())
   llvm::sys::path::append(P, "usr/include");
 else
   llvm::sys::path::append(P, "include");
+
 addExternCSystemInclude(DriverArgs, CC1Args, P.str());
-return;
+// LOCAL_INCLUDE_DIR
+addSystemInclude(DriverArgs, CC1Args, P + "/usr/local/include");
+// TOOL_INCLUDE_DIR
+AddMultilibIncludeArgs(DriverArgs, CC1Args);
   }
 
+  if (!DriverArgs.hasArg(options::OPT_nobuiltininc) && getTriple().isMusl())
+addSystemInclude(DriverArgs, CC1Args, ResourceDirInclude);
+
+  if (HasSysRoot)
+return;
   std::string TargetDir = getHexagonTargetDir(D.getInstalledDir(),
   D.PrefixDirs);
   addExternCSystemInclude(DriverArgs, CC1Args, TargetDir + "/hexagon/include");


Index: clang/lib/Driver/ToolChains/Hexagon.cpp
===
--- clang/lib/Driver/ToolChains/Hexagon.cpp
+++ clang/lib/Driver/ToolChains/Hexagon.cpp
@@ -588,21 +588,38 @@
 
 void HexagonToolChain::AddClangSystemIncludeArgs(const ArgList ,
  ArgStringList ) const {
-  if (DriverArgs.hasArg(options::OPT_nostdinc) ||
-  DriverArgs.hasArg(options::OPT_nostdlibinc))
+  if (DriverArgs.hasArg(options::OPT_nostdinc))
 return;
 
   const Driver  = getDriver();
-  if (!D.SysRoot.empty()) {
+  SmallString<128> ResourceDirInclude(D.ResourceDir);
+  llvm::sys::path::append(ResourceDirInclude, "include");
+  if (!DriverArgs.hasArg(options::OPT_nobuiltininc) &&
+  (!getTriple().isMusl() || DriverArgs.hasArg(options::OPT_nostdlibinc)))
+addSystemInclude(DriverArgs, CC1Args, ResourceDirInclude);
+  if (DriverArgs.hasArg(options::OPT_nostdlibinc))
+return;
+
+  const bool HasSysRoot = !D.SysRoot.empty();
+  if (HasSysRoot) {
 SmallString<128> P(D.SysRoot);
 if (getTriple().isMusl())
   llvm::sys::path::append(P, "usr/include");
 else
   llvm::sys::path::append(P, "include");
+
 addExternCSystemInclude(DriverArgs, CC1Args, P.str());
-return;
+// LOCAL_INCLUDE_DIR
+addSystemInclude(DriverArgs, CC1Args, P + "/usr/local/include");
+// TOOL_INCLUDE_DIR
+AddMultilibIncludeArgs(DriverArgs, CC1Args);
   }
 
+  if (!DriverArgs.hasArg(options::OPT_nobuiltininc) && getTriple().isMusl())
+addSystemInclude(DriverArgs, CC1Args, ResourceDirInclude);
+
+  if (HasSysRoot)
+return;
   std::string TargetDir = getHexagonTargetDir(D.getInstalledDir(),
   D.PrefixDirs);
   addExternCSystemInclude(DriverArgs, CC1Args, TargetDir + "/hexagon/include");
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D104952: [hexagon] Add {hvx,}hexagon_{protos,circ_brev...}

2021-06-29 Thread Brian Cain via Phabricator via cfe-commits
bcain updated this revision to Diff 355234.
bcain added a comment.

Removed some unavailable instructions.

Added include order fix in hexagon_circ_brev


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D104952/new/

https://reviews.llvm.org/D104952

Files:
  clang/lib/Headers/CMakeLists.txt
  clang/lib/Headers/hexagon_circ_brev_intrinsics.h
  clang/lib/Headers/hexagon_protos.h
  clang/lib/Headers/hexagon_types.h
  clang/lib/Headers/hvx_hexagon_protos.h
  clang/test/Headers/hexagon-audio-headers.c
  clang/test/Headers/hexagon-headers.c
  clang/test/Headers/hexagon-hvx-headers.c

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


[PATCH] D104952: [hexagon] Add {hvx,}hexagon_{protos,circ_brev...}

2021-06-27 Thread Brian Cain via Phabricator via cfe-commits
bcain added a comment.

Should I clang format the headers?  I prefer keeping the historical formatting 
intact. But if the submission should conform then I suppose I'll just accept 
the wrapped text suggested by clang-format.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D104952/new/

https://reviews.llvm.org/D104952

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


[PATCH] D104952: [hexagon] Add {hvx,}hexagon_{protos,circ_brev...}

2021-06-27 Thread Brian Cain via Phabricator via cfe-commits
bcain updated this revision to Diff 354758.
bcain added a comment.

Add hexagon_types.h and additional test cases.  Updated existing test case to 
use types defined in hexagon_types.h.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D104952/new/

https://reviews.llvm.org/D104952

Files:
  clang/lib/Headers/CMakeLists.txt
  clang/lib/Headers/hexagon_circ_brev_intrinsics.h
  clang/lib/Headers/hexagon_protos.h
  clang/lib/Headers/hexagon_types.h
  clang/lib/Headers/hvx_hexagon_protos.h
  clang/test/Headers/hexagon-audio-headers.c
  clang/test/Headers/hexagon-headers.c
  clang/test/Headers/hexagon-hvx-headers.c

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


[PATCH] D104952: [hexagon] Add {hvx,}hexagon_{protos,circ_brev...}

2021-06-25 Thread Brian Cain via Phabricator via cfe-commits
bcain added a comment.

It occurs to me now that some of these are not very useful in the absence of 
`hexagon_types.h`.  So I will add that one too and change the tests to use 
those definitions instead.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D104952/new/

https://reviews.llvm.org/D104952

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


[PATCH] D104952: [hexagon] Add {hvx,}hexagon_{protos,circ_brev...}

2021-06-25 Thread Brian Cain via Phabricator via cfe-commits
bcain created this revision.
bcain added a reviewer: kparzysz.
Herald added a subscriber: mgorny.
bcain requested review of this revision.
Herald added a project: clang.
Herald added a subscriber: cfe-commits.

Add definitions for Hexagon, Hexagon circular/bit-reverse and HVX
intrinsics.


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D104952

Files:
  clang/lib/Headers/CMakeLists.txt
  clang/lib/Headers/hexagon_circ_brev_intrinsics.h
  clang/lib/Headers/hexagon_protos.h
  clang/lib/Headers/hvx_hexagon_protos.h
  clang/test/Headers/hexagon-headers.c
  clang/test/Headers/hexagon-hvx-headers.c

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


[PATCH] D98436: [Hexagon] Support inlined use of cs0 and cs1

2021-03-11 Thread Brian Cain via Phabricator via cfe-commits
bcain accepted this revision.
bcain added a comment.
This revision is now accepted and ready to land.

LGTM.  @kparzysz ?


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D98436/new/

https://reviews.llvm.org/D98436

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


[PATCH] D77684: [Hexagon] Remove testcases that check for default linker.

2020-04-08 Thread Brian Cain via Phabricator via cfe-commits
bcain accepted this revision.
bcain added a comment.
This revision is now accepted and ready to land.

LGTM


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D77684/new/

https://reviews.llvm.org/D77684



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


[PATCH] D77498: [Hexagon] Select lld as the default linker for linux-musl target

2020-04-07 Thread Brian Cain via Phabricator via cfe-commits
bcain added a comment.

In D77498#1968123 , @sidneym wrote:

> Since this isn't something that can be always known in advance I think the 
> testcase should just be removed.


Why not just check if `CLANG_DEFAULT_LINKER` is empty?

  const char *getDefaultLinker() const override {
  StringRef ClangDefault = CLANG_DEFAULT_LINKER;
  return ClangDefault.isEmpty() ? (getTriple().isMusl() ? "ld.lld" : 
"hexagon-link") : ClangDefault.str();
}


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D77498/new/

https://reviews.llvm.org/D77498



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


[PATCH] D77498: [Hexagon] Select lld as the default linker for linux-musl target

2020-04-07 Thread Brian Cain via Phabricator via cfe-commits
bcain added a comment.

In D77498#1967870 , @nathanchance 
wrote:

> This does not take into account `CLANG_DEFAULT_LINKER`, resulting in a 
> `check-clang` failure:


Weird -- the baseline didn't take CLANG_DEFAULT_LINKER into account either, 
though, right?  Is it a regression?


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D77498/new/

https://reviews.llvm.org/D77498



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


[PATCH] D77440: [Hexagon] Update include paths for linux/musl

2020-04-07 Thread Brian Cain via Phabricator via cfe-commits
bcain added a comment.

LGTM


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D77440/new/

https://reviews.llvm.org/D77440



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


[PATCH] D76546: [Hexagon] MaxAtomicPromoteWidth, MaxAtomicInlineWidth are not getting set.

2020-03-26 Thread Brian Cain via Phabricator via cfe-commits
bcain accepted this revision.
bcain added a comment.
This revision is now accepted and ready to land.

LGTM


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D76546/new/

https://reviews.llvm.org/D76546



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


[PATCH] D75638: [Hexagon] Support for Linux/Musl ABI.

2020-03-25 Thread Brian Cain via Phabricator via cfe-commits
bcain added a comment.

In D75638#1917565 , @bcain wrote:

> @kparzysz do you have any thoughts about those review comments?


@sidneym is this just pulling existing contents downstream to go upstream?  If 
so let's expedite this please


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D75638/new/

https://reviews.llvm.org/D75638



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


[PATCH] D76582: [Hexagon] Don't clear libpath when target is linux-musl

2020-03-24 Thread Brian Cain via Phabricator via cfe-commits
bcain added a comment.

Seems like we might want a new test case for this?


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D76582/new/

https://reviews.llvm.org/D76582



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


[PATCH] D76310: [Hexagon] Add linux #defines when linux triple is selected

2020-03-18 Thread Brian Cain via Phabricator via cfe-commits
bcain added a comment.

LGTM


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D76310/new/

https://reviews.llvm.org/D76310



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


[PATCH] D76079: [Hexagon] Enable init_arrays when target is linux-musl

2020-03-12 Thread Brian Cain via Phabricator via cfe-commits
bcain added inline comments.



Comment at: clang/lib/Driver/ToolChains/Hexagon.cpp:548
+
+  bool UseInitArrayDefault = (getTriple().isMusl()) ? true : false;
 

The ternary is unnecessary.

```
   bool UseInitArrayDefault = getTriple().isMusl();
```




Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D76079/new/

https://reviews.llvm.org/D76079



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


[PATCH] D75638: [Hexagon] Support for Linux/Musl ABI.

2020-03-11 Thread Brian Cain via Phabricator via cfe-commits
bcain added a comment.

@kparzysz do you have any thoughts about those review comments?


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D75638/new/

https://reviews.llvm.org/D75638



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


[PATCH] D75638: [Hexagon] Support for Linux/Musl ABI.

2020-03-09 Thread Brian Cain via Phabricator via cfe-commits
bcain added a comment.

In general, I recommend qualifying metric and threshold values with their 
associated units: bits, bytes, pages, etc.  That way it's easy to see where the 
unit conversions are happening and easy to see whether the logic is correct 
without reasoning about how the value changes among lines.

Constants specified by the ABI should be designated with names and units 
[unless maybe this conflicts w/llvm project naming conventions?]




Comment at: clang/lib/CodeGen/TargetInfo.cpp:7592
+uint64_t Size = getContext().getTypeSize(Ty);
+if (Size <= 64)
+  HexagonAdjustRegsLeft(Size, RegsLeft);

This `64` should probably be named something like 
`HEXAGON_REGISTER_SIZE_BITS_MAX`?



Comment at: clang/lib/CodeGen/TargetInfo.cpp:7613
+  if (HexagonAdjustRegsLeft(Size, RegsLeft))
+Align = Size <= 32 ? 32 : 64;
+  if (Size <= Align) {

`32` here should be `HEXAGON_REGISTER_SIZE_BITS_MIN` maybe?



Comment at: clang/lib/CodeGen/TargetInfo.cpp:7705
+  // Round up to the minimum stack alignment for varargs which is 4 bytes.
+  uint64_t Offset = llvm::alignTo(CGF.getContext().getTypeSize(Ty) / 8, 4);
+

I suggest:


```
uint64_t Offset = llvm::alignTo(CGF.getContext().getTypeSize(Ty) / CHAR_BIT, 
HEXAGON_MIN_STACK_ALIGN_BYTES);
```



Comment at: clang/lib/CodeGen/TargetInfo.cpp:7748
+ QualType Ty) const {
+  int ArgSize = CGF.getContext().getTypeSize(Ty) / 8;
+



```
int ArgSizeBytes = CGF.getContext().getTypeSize(Ty) / CHAR_BIT;
if (ArgSizeBytes > HEXAGON_VA_REGISTER_LIMIT_BYTES)
return EmitVAArgFromMemory(CGF, VAListAddr, Ty);
```



Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D75638/new/

https://reviews.llvm.org/D75638



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


[PATCH] D75139: [hexagon] Pickup the default crt and libs when the musl target is selected

2020-02-27 Thread Brian Cain via Phabricator via cfe-commits
bcain accepted this revision.
bcain added a comment.
This revision is now accepted and ready to land.
Herald added a subscriber: ormris.

LGTM


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D75139/new/

https://reviews.llvm.org/D75139



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


[PATCH] D74776: [Hexagon] clang driver should consider --sysroot option when looking for includes

2020-02-18 Thread Brian Cain via Phabricator via cfe-commits
bcain accepted this revision.
bcain added a comment.
This revision is now accepted and ready to land.
Herald added a subscriber: ormris.

LGTM


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D74776/new/

https://reviews.llvm.org/D74776



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


[PATCH] D74260: Change default relocation model for hexagon when triple includes musl

2020-02-11 Thread Brian Cain via Phabricator via cfe-commits
bcain added inline comments.



Comment at: clang/lib/Driver/ToolChains/Linux.cpp:923
+  return ((getTriple().isAndroid() && !getTriple().isAndroidVersionLT(16)) ||
+  getTriple().isMusl() || getSanitizerArgs().requiresPIE()) &&
+  getTriple().getArch() != llvm::Triple::hexagon;

But if 
```
getSanitizerArgs().requiresPIE() && getTriple().getArch() == 
llvm::Triple::hexagon
```

 then the `!= hexagon` takes precedence?  Seems like "sanitizer requires 
PIE" should, right?


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D74260/new/

https://reviews.llvm.org/D74260



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


[PATCH] D70919: [Hexagon] Avoid passing unsupported options to lld when -fuse-ld=lld is used

2019-12-13 Thread Brian Cain via Phabricator via cfe-commits
bcain added a comment.

LGTM


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D70919/new/

https://reviews.llvm.org/D70919



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


[PATCH] D70919: [Hexagon] Avoid passing unsupported options to lld when -fuse-ld=lld is used

2019-12-05 Thread Brian Cain via Phabricator via cfe-commits
bcain added inline comments.



Comment at: clang/lib/Driver/ToolChains/Hexagon.cpp:212
   bool UseG0 = false;
+  bool UseLLD = 
Args.getLastArgValue(options::OPT_fuse_ld_EQ).startswith("lld");
   bool UseShared = IsShared && !IsStatic;

Does this still work when `-fuse-ld=ld.lld` ?  How about absolute paths 
`-fuse-ld=/path/to/lld`?


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D70919/new/

https://reviews.llvm.org/D70919



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


[PATCH] D68884: Add support to -Wa,-W in clang

2019-10-14 Thread Brian Cain via Phabricator via cfe-commits
bcain accepted this revision.
bcain added a comment.
This revision is now accepted and ready to land.

LGTM


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D68884/new/

https://reviews.llvm.org/D68884



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


[PATCH] D68401: [Hexagon] Fix clang driver to parse -mcpu/-mvXX and -march properly.

2019-10-10 Thread Brian Cain via Phabricator via cfe-commits
bcain accepted this revision.
bcain added a comment.
This revision is now accepted and ready to land.

LGTM


Repository:
  rC Clang

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D68401/new/

https://reviews.llvm.org/D68401



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


[PATCH] D58091: Customize warnings for missing built-in type

2019-07-19 Thread Brian Cain via Phabricator via cfe-commits
bcain accepted this revision.
bcain added a comment.
Herald added a subscriber: dmgreen.

@jdoerfert @jyknight @lebedev.ri@rsmith @aaron.ballman

This will appear as a 9.0 regression, right?  Let's please consider a way to 
address it for 9.0 before it's released.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D58091/new/

https://reviews.llvm.org/D58091



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


[PATCH] D61130: [llvm-mc] Add reportWarning() to MCContext

2019-05-07 Thread Brian Cain via Phabricator via cfe-commits
bcain added a comment.

More context for this change:

- "`--no-warn`" is present already, target-independent, and it's supported by 
llvm-mc (and other MC tools) because it's already present in 
`include/llvm/MC/MCTargetOptionsCommandFlags.inc`.
- Only the AsmParser has access to the `MCTargetOptions` that contains `NoWarn`.
- This change adds a `MCTargetOptions *` to the `MCContext` so that assemblers 
can emit warnings outside of their `AsmParser` and still conform to 
`--no-warn`/`--fatal-warnings`.
- Hexagon has a check performed in its AsmBackend that can emit warnings, those 
warnings were not silenced by `--no-warn`.
- The `.warning` directive is already correctly silenced by `llvm-mc --no-warn` 
(but not `clang -Wa,--no-warn`).
- A corresponding change to `clang` has been added to support `-Wa,--no-warn` 
-- https://reviews.llvm.org/D61309


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D61130/new/

https://reviews.llvm.org/D61130



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


[PATCH] D61130: [llvm-mc] Add reportWarning() to MCContext

2019-05-03 Thread Brian Cain via Phabricator via cfe-commits
bcain added a comment.

ping!  any comments or concerns about this change?


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D61130/new/

https://reviews.llvm.org/D61130



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


[PATCH] D61130: [llvm-mc] Add reportWarning() to MCContext

2019-04-30 Thread Brian Cain via Phabricator via cfe-commits
bcain updated this revision to Diff 197317.
bcain changed the repository for this revision from rL LLVM to rG LLVM Github 
Monorepo.
bcain added a comment.
Herald added a project: clang.
Herald added a subscriber: cfe-commits.

Add context, add clang update.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D61130/new/

https://reviews.llvm.org/D61130

Files:
  clang/tools/driver/cc1as_main.cpp
  llvm/include/llvm/MC/MCContext.h
  llvm/lib/CodeGen/MachineModuleInfo.cpp
  llvm/lib/MC/MCContext.cpp
  llvm/lib/Target/Hexagon/MCTargetDesc/HexagonMCChecker.cpp
  llvm/test/MC/Hexagon/nowarn.s
  llvm/tools/llvm-mc/llvm-mc.cpp

Index: llvm/tools/llvm-mc/llvm-mc.cpp
===
--- llvm/tools/llvm-mc/llvm-mc.cpp
+++ llvm/tools/llvm-mc/llvm-mc.cpp
@@ -279,7 +279,7 @@
 static int AssembleInput(const char *ProgName, const Target *TheTarget,
  SourceMgr , MCContext , MCStreamer ,
  MCAsmInfo , MCSubtargetInfo ,
- MCInstrInfo , MCTargetOptions ) {
+ MCInstrInfo , MCTargetOptions const ) {
   std::unique_ptr Parser(
   createMCAsmParser(SrcMgr, Ctx, Str, MAI));
   std::unique_ptr TAP(
@@ -316,7 +316,7 @@
   cl::AddExtraVersionPrinter(TargetRegistry::printRegisteredTargetsForVersion);
 
   cl::ParseCommandLineOptions(argc, argv, "llvm machine code playground\n");
-  MCTargetOptions MCOptions = InitMCTargetOptionsFromFlags();
+  const MCTargetOptions MCOptions = InitMCTargetOptionsFromFlags();
   setDwarfDebugFlags(argc, argv);
 
   setDwarfDebugProducer();
@@ -368,7 +368,7 @@
   // FIXME: This is not pretty. MCContext has a ptr to MCObjectFileInfo and
   // MCObjectFileInfo needs a MCContext reference in order to initialize itself.
   MCObjectFileInfo MOFI;
-  MCContext Ctx(MAI.get(), MRI.get(), , );
+  MCContext Ctx(MAI.get(), MRI.get(), , , );
   MOFI.InitMCObjectFileInfo(TheTriple, PIC, Ctx, LargeCodeModel);
 
   if (SaveTempLabels)
Index: llvm/test/MC/Hexagon/nowarn.s
===
--- /dev/null
+++ llvm/test/MC/Hexagon/nowarn.s
@@ -0,0 +1,19 @@
+# RUN: llvm-mc -arch=hexagon -mhvx --filetype=asm %s -o - 2>&1 | FileCheck %s
+# RUN: llvm-mc --no-warn -arch=hexagon -mhvx --filetype=obj %s -o - | llvm-objdump -d - | FileCheck --check-prefix=CHECK-NOWARN %s
+# RUN: not llvm-mc --fatal-warnings -arch=hexagon -mhvx --filetype=asm %s 2>&1 | FileCheck --check-prefix=CHECK-FATAL-WARN %s
+
+	.text
+.warning
+
+{
+  v7.tmp = vmem(r28 + #3)
+  v7:6.w = vadd(v17:16.w, v17:16.w)
+  v17:16.uw = vunpack(v8.uh)
+}
+
+# CHECK-NOWARN-NOT: warning
+# CHECK-FATAL-WARN-NOT: warning
+# CHECK-FATAL-WARN: error
+# CHECK-FATAL-WARN: error
+# CHECK: warning:
+# CHECK: warning:
Index: llvm/lib/Target/Hexagon/MCTargetDesc/HexagonMCChecker.cpp
===
--- llvm/lib/Target/Hexagon/MCTargetDesc/HexagonMCChecker.cpp
+++ llvm/lib/Target/Hexagon/MCTargetDesc/HexagonMCChecker.cpp
@@ -727,9 +727,6 @@
 }
 
 void HexagonMCChecker::reportWarning(Twine const ) {
-  if (ReportErrors) {
-auto SM = Context.getSourceManager();
-if (SM)
-  SM->PrintMessage(MCB.getLoc(), SourceMgr::DK_Warning, Msg);
-  }
+  if (ReportErrors)
+Context.reportWarning(MCB.getLoc(), Msg);
 }
Index: llvm/lib/MC/MCContext.cpp
===
--- llvm/lib/MC/MCContext.cpp
+++ llvm/lib/MC/MCContext.cpp
@@ -56,11 +56,11 @@
 
 MCContext::MCContext(const MCAsmInfo *mai, const MCRegisterInfo *mri,
  const MCObjectFileInfo *mofi, const SourceMgr *mgr,
- bool DoAutoReset)
+ MCTargetOptions const *TargetOpts, bool DoAutoReset)
 : SrcMgr(mgr), InlineSrcMgr(nullptr), MAI(mai), MRI(mri), MOFI(mofi),
   Symbols(Allocator), UsedNames(Allocator),
   CurrentDwarfLoc(0, 0, 0, DWARF2_FLAG_IS_STMT, 0, 0),
-  AutoReset(DoAutoReset) {
+  AutoReset(DoAutoReset), TargetOptions(TargetOpts) {
   SecureLogFile = AsSecureLogFileName;
 
   if (SrcMgr && SrcMgr->getNumBuffers())
@@ -652,6 +652,21 @@
 report_fatal_error(Msg, false);
 }
 
+void MCContext::reportWarning(SMLoc Loc, const Twine ) {
+  if (TargetOptions && TargetOptions->MCNoWarn)
+return;
+  if (TargetOptions && TargetOptions->MCFatalWarnings)
+reportError(Loc, Msg);
+  else {
+// If we have a source manager use it. Otherwise, try using the inline
+// source manager.
+if (SrcMgr)
+  SrcMgr->PrintMessage(Loc, SourceMgr::DK_Warning, Msg);
+else if (InlineSrcMgr)
+  InlineSrcMgr->PrintMessage(Loc, SourceMgr::DK_Warning, Msg);
+  }
+}
+
 void MCContext::reportFatalError(SMLoc Loc, const Twine ) {
   reportError(Loc, Msg);
 
Index: llvm/lib/CodeGen/MachineModuleInfo.cpp
===
--- 

[PATCH] D61309: [clang] Add no-warn support for Wa

2019-04-30 Thread Brian Cain via Phabricator via cfe-commits
bcain created this revision.
bcain added reviewers: pcc, kparzysz, sidneym.
bcain added a project: clang.

Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D61309

Files:
  clang/include/clang/Basic/CodeGenOptions.def
  clang/include/clang/Driver/CC1Options.td
  clang/lib/CodeGen/BackendUtil.cpp
  clang/lib/Driver/ToolChains/Clang.cpp
  clang/lib/Driver/ToolChains/Hexagon.cpp
  clang/lib/Frontend/CompilerInvocation.cpp
  clang/test/Driver/as-no-warnings.c
  clang/tools/driver/cc1as_main.cpp

Index: clang/tools/driver/cc1as_main.cpp
===
--- clang/tools/driver/cc1as_main.cpp
+++ clang/tools/driver/cc1as_main.cpp
@@ -131,6 +131,7 @@
   unsigned RelaxAll : 1;
   unsigned NoExecStack : 1;
   unsigned FatalWarnings : 1;
+  unsigned NoWarn : 1;
   unsigned IncrementalLinkerCompatible : 1;
   unsigned EmbedBitcode : 1;
 
@@ -156,6 +157,7 @@
 RelaxAll = 0;
 NoExecStack = 0;
 FatalWarnings = 0;
+NoWarn = 0;
 IncrementalLinkerCompatible = 0;
 DwarfVersion = 0;
 EmbedBitcode = 0;
@@ -285,6 +287,7 @@
   Opts.RelaxAll = Args.hasArg(OPT_mrelax_all);
   Opts.NoExecStack = Args.hasArg(OPT_mno_exec_stack);
   Opts.FatalWarnings = Args.hasArg(OPT_massembler_fatal_warnings);
+  Opts.NoWarn = Args.hasArg(OPT_massembler_no_warn);
   Opts.RelocationModel = Args.getLastArgValue(OPT_mrelocation_model, "pic");
   Opts.TargetABI = Args.getLastArgValue(OPT_target_abi);
   Opts.IncrementalLinkerCompatible =
@@ -375,6 +378,8 @@
   std::unique_ptr MOFI(new MCObjectFileInfo());
 
   MCTargetOptions MCOptions;
+  MCOptions.MCNoWarn = Opts.NoWarn;
+  MCOptions.MCFatalWarnings = Opts.FatalWarnings;
   MCContext Ctx(MAI.get(), MRI.get(), MOFI.get(), , );
 
   bool PIC = false;
Index: clang/test/Driver/as-no-warnings.c
===
--- /dev/null
+++ clang/test/Driver/as-no-warnings.c
@@ -0,0 +1,14 @@
+// RUN: %clang -### %s -c -o tmp.o -target i686-pc-linux-gnu -fno-integrated-as -Wa,--no-warn 2>&1 | FileCheck -check-prefix=CHECK-NOIAS %s
+// RUN: %clang -### %s -c -o tmp.o -target i686-pc-linux-gnu -integrated-as -Wa,--no-warn 2>&1 | FileCheck %s
+// RUN: %clang %s -c -o %t.o -target i686-pc-linux-gnu -integrated-as -Wa,--no-warn 2>&1 | FileCheck -allow-empty --check-prefix=CHECK-AS-NOWARN %s
+// RUN: %clang %s -c -o %t.o -target i686-pc-linux-gnu -fno-integrated-as -Wa,--no-warn 2>&1 | FileCheck -allow-empty --check-prefix=CHECK-AS-NOWARN %s
+// RUN: not %clang %s -c -o %t.o -target i686-pc-linux-gnu -integrated-as -Wa,--fatal-warnings 2>&1 | FileCheck --check-prefix=CHECK-AS-FATAL %s
+// RUN: not %clang %s -c -o %t.o -target i686-pc-linux-gnu -fno-integrated-as -Wa,--fatal-warnings 2>&1 | FileCheck --check-prefix=CHECK-AS-FATAL %s
+
+// CHECK: "-cc1" {{.*}} "-massembler-no-warn"
+// CHECK-NOIAS: "--no-warn"
+// CHECK-AS-NOWARN-NOT: warning:
+// CHECK-AS-FATAL-NOT: warning:
+// CHECK-AS-FATAL: error
+
+__asm(".warning");
Index: clang/lib/Frontend/CompilerInvocation.cpp
===
--- clang/lib/Frontend/CompilerInvocation.cpp
+++ clang/lib/Frontend/CompilerInvocation.cpp
@@ -856,6 +856,7 @@
   Opts.NumRegisterParameters = getLastArgIntValue(Args, OPT_mregparm, 0, Diags);
   Opts.NoExecStack = Args.hasArg(OPT_mno_exec_stack);
   Opts.FatalWarnings = Args.hasArg(OPT_massembler_fatal_warnings);
+  Opts.NoWarn = Args.hasArg(OPT_massembler_no_warn);
   Opts.EnableSegmentedStacks = Args.hasArg(OPT_split_stacks);
   Opts.RelaxAll = Args.hasArg(OPT_mrelax_all);
   Opts.IncrementalLinkerCompatible =
Index: clang/lib/Driver/ToolChains/Hexagon.cpp
===
--- clang/lib/Driver/ToolChains/Hexagon.cpp
+++ clang/lib/Driver/ToolChains/Hexagon.cpp
@@ -130,7 +130,7 @@
   const Driver  = HTC.getDriver();
   ArgStringList CmdArgs;
 
-  CmdArgs.push_back("-march=hexagon");
+  CmdArgs.push_back("-arch=hexagon");
 
   RenderExtraToolArgs(JA, CmdArgs);
 
@@ -148,6 +148,12 @@
 CmdArgs.push_back("-fsyntax-only");
   }
 
+  if (Arg *A = Args.getLastArg(options::OPT_mhexagon_hvx,
+   options::OPT_mno_hexagon_hvx)) {
+if (A->getOption().matches(options::OPT_mhexagon_hvx))
+  CmdArgs.push_back("-mhvx");
+  }
+
   if (auto G = toolchains::HexagonToolChain::getSmallDataThreshold(Args)) {
 CmdArgs.push_back(Args.MakeArgString("-gpsize=" + Twine(G.getValue(;
   }
Index: clang/lib/Driver/ToolChains/Clang.cpp
===
--- clang/lib/Driver/ToolChains/Clang.cpp
+++ clang/lib/Driver/ToolChains/Clang.cpp
@@ -2145,6 +2145,8 @@
 // Do nothing, this is the default and we don't support anything else.
   } else if (Value == "-L") {
 CmdArgs.push_back("-msave-temp-labels");
+  } else if (Value == "--no-warn") {
+CmdArgs.push_back("-massembler-no-warn");
   } else if 

[PATCH] D58091: Customize warnings for missing built-in type

2019-03-26 Thread Brian Cain via Phabricator via cfe-commits
bcain added a comment.

In D58091#1397586 , @jyknight wrote:

> I think this warning (-Wbuiltin-requires-header) doesn't really make sense as 
> its own warning.
>
> We already have two related (on-by-default) warnings.


...

In D58091#1414250 , @bcain wrote:

>


...

> FWIW, I'm satisfied with the fix as proposed here for now and I wouldn't be 
> opposed to following up with an improvement over other warnings in lieu of 
> this warning.
> 
> @jyknight -- James, (or others) care to weigh in on this proposal?

@jdoerfert and @jyknight -- let's please un-stall this review.

James: is this change acceptable or unacceptable as-is?  Could we follow up 
with a change that removed this warning?

Johannes: if it's acceptable to James, let's please submit this change.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D58091/new/

https://reviews.llvm.org/D58091



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


[PATCH] D58091: Customize warnings for missing built-in type

2019-02-28 Thread Brian Cain via Phabricator via cfe-commits
bcain added a comment.

In D58091#1409584 , @jdoerfert wrote:

> I did address the comments but I will wait until I hear back on the "warning 
> vs warning + note question".


...

> I do not have strong feelings about this, either way is fine with me. 
> However, I lack the 
>  clang expertise to make such a change happen anytime soon which makes this 
> patch
>  (with actual fix for the warning on pthread_create) my prefered first step.

FWIW, I'm satisfied with the fix as proposed here for now and I wouldn't be 
opposed to following up with an improvement over other warnings in lieu of this 
warning.

@jyknight -- James, (or others) care to weigh in on this proposal?


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D58091/new/

https://reviews.llvm.org/D58091



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


[PATCH] D58091: Customize warnings for missing built-in type

2019-02-25 Thread Brian Cain via Phabricator via cfe-commits
bcain added inline comments.



Comment at: clang/include/clang/Basic/DiagnosticSemaKinds.td:592
+: Warning<"declaration of built-in function '%0' requires the declaration"
+" of the 'jmp_buf' type, commonly proived in the header .">,
+  InGroup>;

"proived" should be "provided", I think?


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D58091/new/

https://reviews.llvm.org/D58091



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


[PATCH] D58091: Customize warnings for missing built-in type

2019-02-20 Thread Brian Cain via Phabricator via cfe-commits
bcain accepted this revision.
bcain added a comment.
This revision is now accepted and ready to land.

I can confirm that this fix is effective at addressing the problem we 
experienced.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D58091/new/

https://reviews.llvm.org/D58091



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


[PATCH] D58091: Customize warnings for missing built-in type

2019-02-13 Thread Brian Cain via Phabricator via cfe-commits
bcain added a comment.

> Are you sure it is unrelated?

Very nearly positive, I applied the patch to our downstream trunk and the 
assertion is encountered in a target-specific pass.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D58091/new/

https://reviews.llvm.org/D58091



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


[PATCH] D58091: Customize warnings for missing built-in type

2019-02-13 Thread Brian Cain via Phabricator via cfe-commits
bcain added a comment.

I reported PR40692.  I just tried this patch on our local build where we saw 
the failure on an RTOS implementing pthreads.  Unfortunately with this patch I 
encountered an (unrelated) assertion.  So this fix was inconclusive for me (for 
now).  I will follow up but if this fix makes sense then you don't need to wait 
for my test results.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D58091/new/

https://reviews.llvm.org/D58091



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


[PATCH] D41727: [libcxx] Disable tautological-type-limit-compare warning

2018-08-17 Thread Brian Cain via Phabricator via cfe-commits
bcain abandoned this revision.
bcain added a comment.
Herald added subscribers: ldionne, christof.

I think this is now obsolete due to clang changing the warning.


Repository:
  rCXX libc++

https://reviews.llvm.org/D41727



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


[PATCH] D50816: [hexagon] restore -fuse-cxa-atexit by default

2018-08-16 Thread Brian Cain via Phabricator via cfe-commits
This revision was automatically updated to reflect the committed changes.
Closed by commit rC339979: [hexagon] restore -fuse-cxa-atexit by default 
(authored by bcain, committed by ).
Herald added a subscriber: cfe-commits.

Changed prior to commit:
  https://reviews.llvm.org/D50816?vs=160928=161160#toc

Repository:
  rC Clang

https://reviews.llvm.org/D50816

Files:
  lib/Driver/ToolChains/Clang.cpp
  test/Driver/cxa-atexit.cpp


Index: test/Driver/cxa-atexit.cpp
===
--- test/Driver/cxa-atexit.cpp
+++ test/Driver/cxa-atexit.cpp
@@ -20,7 +20,7 @@
 
 // CHECK-WINDOWS: "-fno-use-cxa-atexit"
 // CHECK-SOLARIS: "-fno-use-cxa-atexit"
-// CHECK-HEXAGON: "-fno-use-cxa-atexit"
+// CHECK-HEXAGON-NOT: "-fno-use-cxa-atexit"
 // CHECK-XCORE: "-fno-use-cxa-atexit"
 // CHECK-MTI: "-fno-use-cxa-atexit"
 // CHECK-MIPS-NOT: "-fno-use-cxa-atexit"
Index: lib/Driver/ToolChains/Clang.cpp
===
--- lib/Driver/ToolChains/Clang.cpp
+++ lib/Driver/ToolChains/Clang.cpp
@@ -4225,7 +4225,6 @@
   options::OPT_fuse_cxa_atexit, options::OPT_fno_use_cxa_atexit,
   !RawTriple.isOSWindows() &&
   RawTriple.getOS() != llvm::Triple::Solaris &&
-  getToolChain().getArch() != llvm::Triple::hexagon &&
   getToolChain().getArch() != llvm::Triple::xcore &&
   ((RawTriple.getVendor() != llvm::Triple::MipsTechnologies) ||
RawTriple.hasEnvironment())) ||


Index: test/Driver/cxa-atexit.cpp
===
--- test/Driver/cxa-atexit.cpp
+++ test/Driver/cxa-atexit.cpp
@@ -20,7 +20,7 @@
 
 // CHECK-WINDOWS: "-fno-use-cxa-atexit"
 // CHECK-SOLARIS: "-fno-use-cxa-atexit"
-// CHECK-HEXAGON: "-fno-use-cxa-atexit"
+// CHECK-HEXAGON-NOT: "-fno-use-cxa-atexit"
 // CHECK-XCORE: "-fno-use-cxa-atexit"
 // CHECK-MTI: "-fno-use-cxa-atexit"
 // CHECK-MIPS-NOT: "-fno-use-cxa-atexit"
Index: lib/Driver/ToolChains/Clang.cpp
===
--- lib/Driver/ToolChains/Clang.cpp
+++ lib/Driver/ToolChains/Clang.cpp
@@ -4225,7 +4225,6 @@
   options::OPT_fuse_cxa_atexit, options::OPT_fno_use_cxa_atexit,
   !RawTriple.isOSWindows() &&
   RawTriple.getOS() != llvm::Triple::Solaris &&
-  getToolChain().getArch() != llvm::Triple::hexagon &&
   getToolChain().getArch() != llvm::Triple::xcore &&
   ((RawTriple.getVendor() != llvm::Triple::MipsTechnologies) ||
RawTriple.hasEnvironment())) ||
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D41727: [libcxx] Disable tautological-type-limit-compare warning

2018-01-18 Thread Brian Cain via Phabricator via cfe-commits
bcain updated this revision to Diff 130431.
bcain added a comment.
Herald added a subscriber: cfe-commits.

Changed per review


Repository:
  rCXX libc++

https://reviews.llvm.org/D41727

Files:
  libcxx/utils/libcxx/test/config.py


Index: libcxx/utils/libcxx/test/config.py
===
--- libcxx/utils/libcxx/test/config.py
+++ libcxx/utils/libcxx/test/config.py
@@ -903,6 +903,7 @@
 if self.cxx.hasWarningFlag('-Wuser-defined-warnings'):
 self.cxx.warning_flags += ['-Wuser-defined-warnings']
 self.config.available_features.add('diagnose-if-support')
+
self.cxx.addWarningFlagIfSupported('-Wno-tautological-type-limit-compare')
 self.cxx.addWarningFlagIfSupported('-Wshadow')
 self.cxx.addWarningFlagIfSupported('-Wno-unused-command-line-argument')
 self.cxx.addWarningFlagIfSupported('-Wno-attributes')


Index: libcxx/utils/libcxx/test/config.py
===
--- libcxx/utils/libcxx/test/config.py
+++ libcxx/utils/libcxx/test/config.py
@@ -903,6 +903,7 @@
 if self.cxx.hasWarningFlag('-Wuser-defined-warnings'):
 self.cxx.warning_flags += ['-Wuser-defined-warnings']
 self.config.available_features.add('diagnose-if-support')
+self.cxx.addWarningFlagIfSupported('-Wno-tautological-type-limit-compare')
 self.cxx.addWarningFlagIfSupported('-Wshadow')
 self.cxx.addWarningFlagIfSupported('-Wno-unused-command-line-argument')
 self.cxx.addWarningFlagIfSupported('-Wno-attributes')
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D39462: [Sema] Implement -Wmaybe-tautological-constant-compare for when the tautologicalness is data model dependent

2017-12-19 Thread Brian Cain via Phabricator via cfe-commits
bcain added a comment.

In https://reviews.llvm.org/D39462#959822, @phosek wrote:

> FWIW we've already rolled Clang that contains 
> `-Wtautological-constant-compare` to our codebase and we had to set 
> `-Wno-tautological-constant-compare` globally because we were getting bogus 
> warnings in many places, similarly to https://reviews.llvm.org/D41368. If 
> that warning ships as part of Clang 6, it's going to be be a major pain for 
> many users so we really need some solution.


Let's escalate this discussion to llvm-dev, then?  If we don't do anything 
soon, it will ship w/clang 6.


Repository:
  rL LLVM

https://reviews.llvm.org/D39462



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


[PATCH] D41368: [libc++] Ignore bogus tautologic comparison warnings

2017-12-19 Thread Brian Cain via Phabricator via cfe-commits
bcain added a comment.

In https://reviews.llvm.org/D41368#959579, @smeenai wrote:

> @mclow.lists are you okay with this approach? I'm also fine using a cast to 
> silence the warning, as @zturner suggested, but we should suppress the 
> warning in some way, otherwise libc++ 6 is gonna have compile warnings with 
> clang 6 out of the box, which isn't great.
>
> A third alternative, which is the least invasive, though not complete in some 
> sense: we just add `-Wno-tautological-constant-compare` to the compile flags 
> for libc++ (in CMake), to suppress the warning during libc++'s compilation. 
> There's still an instance of the warning in a header, but all other clients 
> of the header should treat it as a system header (in which case warnings will 
> be suppressed anyway). It's not targeted at all and could suppress legitimate 
> instances of the warning though.


I agree, if we're willing to disable the warning in libc++ builds we should be 
willing to disable it via pragma.


Repository:
  rCXX libc++

https://reviews.llvm.org/D41368



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


[PATCH] D39149: [libc++] Prevent tautological comparisons

2017-12-18 Thread Brian Cain via Phabricator via cfe-commits
bcain added a comment.

In https://reviews.llvm.org/D39149#912260, @smeenai wrote:

> I confirmed that these warnings go away with https://reviews.llvm.org/D39462 
> applied, and they reappear if I manually specify 
> `-Wmaybe-tautological-constant-compare`. Thank you!


Let's resurrect these changes since https://reviews.llvm.org/D39462 was not the 
right short-term approach.


https://reviews.llvm.org/D39149



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


[PATCH] D41316: [libcxx] Allow random_device to be built optionally

2017-12-16 Thread Brian Cain via Phabricator via cfe-commits
bcain added a comment.

In https://reviews.llvm.org/D41316#957598, @jroelofs wrote:

> I'd much rather provide no implementation than one that lies. Broken builds 
> are much safer than problems at runtime.


Agreed!  Especially the problems caused by a predictable random seed.


Repository:
  rCXX libc++

https://reviews.llvm.org/D41316



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


[PATCH] D31739: Add markup for libc++ dylib availability

2017-11-27 Thread Brian Cain via Phabricator via cfe-commits
bcain added a comment.

I think some of the `XFAIL: availability` may be wrong here.  I'd submit a 
patch, but it's not clear to me what the appropriate fix is.




Comment at: libcxx/trunk/utils/libcxx/test/config.py:400
+if self.use_system_cxx_lib or self.with_availability:
+self.config.available_features.add('availability')
+self.add_deployment_feature('availability')

This means that 'availability' is present if `use_system_cxx_lib` even on 
platforms other than OSX.  It's not clear to me whether or not this was 
intended.

If this was intended then it's probably wrong to "XFAIL: availability" in some 
of these tests.  This means that these tests went from PASS to XFAIL when 
"use_system_cxx_lib".  If perhaps these tests cannot be used without just-built 
libcxx, then maybe it makes more sense to mark them "UNSUPPORTED: availability"?


Repository:
  rL LLVM

https://reviews.llvm.org/D31739



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


[PATCH] D39462: [Sema] Implement -Wmaybe-tautological-constant-compare for when the tautologicalness is data model dependent

2017-11-27 Thread Brian Cain via Phabricator via cfe-commits
bcain added a comment.

I'd like to understand/resurrect this change, so I'll try to summarize.  Please 
correct this as appropriate:

1. We got here because libc++ has code that triggers a warning for some targets 
(those whose `int` and `long` have the same size).
2. This change would "move" the existing logic for 
`-Wtautological-constant-compare` to `-Wmaybe-tautological-constant-compare` 
and replace `-Wtautological-constant-compare` logic with one less likely to 
report that the code in libc++ is wrong.
3. A superior checker could be defined that would thread the needle between 
these cases: warning only when it should and not when it shouldn't.  This would 
be preferred because it avoids the creation of similar but slightly distinct 
warnings.

If this summary is really the case, what's the best way to break this 
stalemate?  Could we implement this change for now and improve the warnings 
later?  If the answer is 'no', then let's please restore 
https://reviews.llvm.org/D39149.

AFAICT Marshall and John have strong feelings on each of these proposed libc++ 
and clang changes -- it would be valuable if each of you could weigh in.


Repository:
  rL LLVM

https://reviews.llvm.org/D39462



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


[PATCH] D39149: [libc++] Prevent tautological comparisons

2017-10-30 Thread Brian Cain via Phabricator via cfe-commits
bcain added a comment.

In https://reviews.llvm.org/D39149#910931, @lebedev.ri wrote:

> In https://reviews.llvm.org/D39149#910891, @bcain wrote:
>
> > In https://reviews.llvm.org/D39149#910845, @lebedev.ri wrote:
> >
> > > That is my diagnostic, so i guess this is the time to reply :)
> >
> >
> > ...
> >
> > > 3. In `-Wtautological-constant-compare`, ignore any comparisons that 
> > > compare with `std::numeric_limits`. Not a fan of this solution. <- Worst?
> >
> > ...
> >
> > Gee, #3 is the worst?  That one seems the most appealing to me.  I think I 
> > could understand it if you had reservations about ignoring comparisons 
> > against {CHAR,SHRT,INT,LONG}_{MIN,MAX} but std::numeric_limits is 
> > well-qualified and everything.
> >
> > Can you help me understand why you don't prefer it?
>
>
> That my initial bug was not caught by gcc either, even though `-Wtype-limits` 
> was enabled.


...

Ok, yes, that makes sense.

>> Also, is there any way that the warning could somehow be smart enough to 
>> know what sizeof(int) and sizeof(long) are?
> 
> I'm not sure i follow. It sure does know that, else it would not possible to 
> diagnose anything.

Yes, sorry, I had the logic reversed in my head.

...

>> As an aside, how widely has this new clang behavior been tested?  Is it 
>> possible that this new warning behavior might get rolled back if a 
>> big/important enough codebase triggers it?
> 
> Are you talking about false-positives* or about real true-positive warnings?
>  So far, to the best of my knowledge, there were no reports of 
> false-positives*.
>  If a false-positive is reported, and it is not obvious how to fix it, i 
> suppose it might be reverted.
>  True-positives are obviously not the justification for the revert, but a 
> validation of the validity of the diagnostic.
>  The cases like this one are troublesome. **If** it is possible to reduce a 
> case that obviously should not warn, **then** the diagnostic should be 
> adjusted not to warn.
> 
> - The fact that under *different* circumstances the comparison is not 
> tautological is not a false-positive.

Isn't this a case that it obviously should not warn?

What about another approach: (1) could we consider Shoaib's suggestion to keep 
the exhaustive check with this name and create a new one that's limited (and 
can take the current one's place in the enabled-by-Wall) or (2) could we create 
range check functions that have the warning disabled?

Option #2 is limited to benefiting only llvm or libcxx code.  But if we narrow 
our focus to just the llvm/libcxx code for the time being, we should have a 
common idiom for resolving this problem.  It's likely to show up elsewhere too. 
 The fact that we were considering ifdefs here versus the pragmas in the 
earlier commit is concerning.


https://reviews.llvm.org/D39149



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


[PATCH] D39149: [libc++] Prevent tautological comparisons

2017-10-30 Thread Brian Cain via Phabricator via cfe-commits
bcain added a comment.

In https://reviews.llvm.org/D39149#910845, @lebedev.ri wrote:

> That is my diagnostic, so i guess this is the time to reply :)


...

> 3. In `-Wtautological-constant-compare`, ignore any comparisons that compare 
> with `std::numeric_limits`. Not a fan of this solution. <- Worst?

...

Gee, #3 is the worst?  That one seems the most appealing to me.  I think I 
could understand it if you had reservations about ignoring comparisons against 
{CHAR,SHRT,INT,LONG}_{MIN,MAX} but std::numeric_limits is well-qualified and 
everything.

Can you help me understand why you don't prefer it?

Also, is there any way that the warning could somehow be smart enough to know 
what sizeof(int) and sizeof(long) are?

As an aside, how widely has this new clang behavior been tested?  Is it 
possible that this new warning behavior might get rolled back if a 
big/important enough codebase triggers it?


https://reviews.llvm.org/D39149



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