[PATCH] D138234: [clang-format] Support new file formatting with vim

2022-11-21 Thread Jinsong Ji 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 rG86278114085b: [clang-format] Support new file formatting 
with vim (authored by jsji).

Changed prior to commit:
  https://reviews.llvm.org/D138234?vs=476905=476984#toc

Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D138234

Files:
  clang/tools/clang-format/clang-format.py


Index: clang/tools/clang-format/clang-format.py
===
--- clang/tools/clang-format/clang-format.py
+++ clang/tools/clang-format/clang-format.py
@@ -41,6 +41,7 @@
 
 import difflib
 import json
+import os.path
 import platform
 import subprocess
 import sys
@@ -76,7 +77,8 @@
   # Determine range to format.
   if vim.eval('exists("l:lines")') == '1':
 lines = ['-lines', vim.eval('l:lines')]
-  elif vim.eval('exists("l:formatdiff")') == '1':
+  elif vim.eval('exists("l:formatdiff")') == '1' and \
+   os.path.exists(vim.current.buffer.name):
 with open(vim.current.buffer.name, 'r') as f:
   ondisk = f.read().splitlines();
 sequence = difflib.SequenceMatcher(None, ondisk, vim.current.buffer)


Index: clang/tools/clang-format/clang-format.py
===
--- clang/tools/clang-format/clang-format.py
+++ clang/tools/clang-format/clang-format.py
@@ -41,6 +41,7 @@
 
 import difflib
 import json
+import os.path
 import platform
 import subprocess
 import sys
@@ -76,7 +77,8 @@
   # Determine range to format.
   if vim.eval('exists("l:lines")') == '1':
 lines = ['-lines', vim.eval('l:lines')]
-  elif vim.eval('exists("l:formatdiff")') == '1':
+  elif vim.eval('exists("l:formatdiff")') == '1' and \
+   os.path.exists(vim.current.buffer.name):
 with open(vim.current.buffer.name, 'r') as f:
   ondisk = f.read().splitlines();
 sequence = difflib.SequenceMatcher(None, ondisk, vim.current.buffer)
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D138234: [clang-format] Support new file formatting with vim

2022-11-21 Thread Jinsong Ji via Phabricator via cfe-commits
jsji updated this revision to Diff 476905.
jsji added a comment.

Address comments.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D138234

Files:
  clang/tools/clang-format/clang-format.py


Index: clang/tools/clang-format/clang-format.py
===
--- clang/tools/clang-format/clang-format.py
+++ clang/tools/clang-format/clang-format.py
@@ -41,11 +41,11 @@
 
 import difflib
 import json
+import os.path
 import platform
 import subprocess
 import sys
 import vim
-import os.path
 
 # set g:clang_format_path to the path to clang-format if it is not on the path
 # Change this to the full path if clang-format is not on the path.
@@ -77,7 +77,8 @@
   # Determine range to format.
   if vim.eval('exists("l:lines")') == '1':
 lines = ['-lines', vim.eval('l:lines')]
-  elif vim.eval('exists("l:formatdiff")') == '1' and 
os.path.exists(vim.current.buffer.name):
+  elif vim.eval('exists("l:formatdiff")') == '1' and \
+   os.path.exists(vim.current.buffer.name):
 with open(vim.current.buffer.name, 'r') as f:
   ondisk = f.read().splitlines();
 sequence = difflib.SequenceMatcher(None, ondisk, vim.current.buffer)


Index: clang/tools/clang-format/clang-format.py
===
--- clang/tools/clang-format/clang-format.py
+++ clang/tools/clang-format/clang-format.py
@@ -41,11 +41,11 @@
 
 import difflib
 import json
+import os.path
 import platform
 import subprocess
 import sys
 import vim
-import os.path
 
 # set g:clang_format_path to the path to clang-format if it is not on the path
 # Change this to the full path if clang-format is not on the path.
@@ -77,7 +77,8 @@
   # Determine range to format.
   if vim.eval('exists("l:lines")') == '1':
 lines = ['-lines', vim.eval('l:lines')]
-  elif vim.eval('exists("l:formatdiff")') == '1' and os.path.exists(vim.current.buffer.name):
+  elif vim.eval('exists("l:formatdiff")') == '1' and \
+   os.path.exists(vim.current.buffer.name):
 with open(vim.current.buffer.name, 'r') as f:
   ondisk = f.read().splitlines();
 sequence = difflib.SequenceMatcher(None, ondisk, vim.current.buffer)
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D138234: [clang-format] Support new file formatting with vim

2022-11-17 Thread Jinsong Ji via Phabricator via cfe-commits
jsji created this revision.
jsji added reviewers: djasper, klimek.
Herald added a project: All.
jsji requested review of this revision.
Herald added a project: clang.
Herald added a subscriber: cfe-commits.

The vim Formatonsave integration is not working if we create a new file 
directly using vim.
eg: vi -V9t.log t.cpp

It will not able to format the buffer.

Traceback (most recent call last):

  File "", line 1, in 
  File "...clang/tools/clang-format/clang-format.py", line 156, in 
main()
  File "...clang/tools/clang-format/clang-format.py", line 80, in main
with open(vim.current.buffer.name, 'r') as f:

FileNotFoundError: [Errno 2] No such file or directory: '...t.cpp'

This patch check the file before we try to open it.


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D138234

Files:
  clang/tools/clang-format/clang-format.py


Index: clang/tools/clang-format/clang-format.py
===
--- clang/tools/clang-format/clang-format.py
+++ clang/tools/clang-format/clang-format.py
@@ -45,6 +45,7 @@
 import subprocess
 import sys
 import vim
+import os.path
 
 # set g:clang_format_path to the path to clang-format if it is not on the path
 # Change this to the full path if clang-format is not on the path.
@@ -76,7 +77,7 @@
   # Determine range to format.
   if vim.eval('exists("l:lines")') == '1':
 lines = ['-lines', vim.eval('l:lines')]
-  elif vim.eval('exists("l:formatdiff")') == '1':
+  elif vim.eval('exists("l:formatdiff")') == '1' and 
os.path.exists(vim.current.buffer.name):
 with open(vim.current.buffer.name, 'r') as f:
   ondisk = f.read().splitlines();
 sequence = difflib.SequenceMatcher(None, ondisk, vim.current.buffer)


Index: clang/tools/clang-format/clang-format.py
===
--- clang/tools/clang-format/clang-format.py
+++ clang/tools/clang-format/clang-format.py
@@ -45,6 +45,7 @@
 import subprocess
 import sys
 import vim
+import os.path
 
 # set g:clang_format_path to the path to clang-format if it is not on the path
 # Change this to the full path if clang-format is not on the path.
@@ -76,7 +77,7 @@
   # Determine range to format.
   if vim.eval('exists("l:lines")') == '1':
 lines = ['-lines', vim.eval('l:lines')]
-  elif vim.eval('exists("l:formatdiff")') == '1':
+  elif vim.eval('exists("l:formatdiff")') == '1' and os.path.exists(vim.current.buffer.name):
 with open(vim.current.buffer.name, 'r') as f:
   ondisk = f.read().splitlines();
 sequence = difflib.SequenceMatcher(None, ondisk, vim.current.buffer)
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D125386: [clang][ppc] Creating Seperate Install Target for PPC htm Headers

2022-05-11 Thread Jinsong Ji via Phabricator via cfe-commits
jsji accepted this revision.
jsji 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/D125386/new/

https://reviews.llvm.org/D125386

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


[PATCH] D123372: [PowerPC] add XLC compat builtin __abs

2022-04-19 Thread Jinsong Ji via Phabricator via cfe-commits
jsji accepted this revision as: jsji.
jsji added a comment.
This revision is now accepted and ready to land.

LGTM. Thanks.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D123372

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


[PATCH] D123498: [clang] Adding Platform/Architecture Specific Resource Header Installation Targets

2022-04-11 Thread Jinsong Ji via Phabricator via cfe-commits
jsji added a comment.

@qiongsiwu1 Please also add reviewers from other targets. Thanks.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D123498

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


[PATCH] D122377: [PowerPC][Linux] Support 16-byte lock free atomics on pwr8 and up

2022-03-24 Thread Jinsong Ji via Phabricator via cfe-commits
jsji added inline comments.



Comment at: clang/test/CodeGen/PowerPC/atomic-alignment.c:7
+// RUN:   -emit-llvm -o - %s | FileCheck %s --check-prefixes=PPC,PPC64-PWR8
 // RUN: %clang_cc1 -verify -triple powerpc64-unknown-aix -emit-llvm -o - %s | \
 // RUN:   FileCheck %s --check-prefixes=PPC,PPC64

How about AIX pwr8?



Comment at: llvm/lib/Target/PowerPC/PPCISelLowering.cpp:126
 "ppc-quadword-atomics",
-cl::desc("enable quadword lock-free atomic operations"), cl::init(false),
+cl::desc("enable quadword lock-free atomic operations"), cl::init(true),
 cl::Hidden);

So we enable it by default , *EVEN* on AIX?


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

https://reviews.llvm.org/D122377

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


[PATCH] D121441: [PowerPC][NFC] Add atomic alignments and ops tests for powerpc

2022-03-15 Thread Jinsong Ji via Phabricator via cfe-commits
jsji accepted this revision as: jsji.
jsji added a comment.
This revision is now accepted and ready to land.

LGTM. Thanks.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D121441

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


[PATCH] D119407: [PowerPC] [Clang] Add SSE4 and BMI compatible intrinsics implementation for PowerPC

2022-03-07 Thread Jinsong Ji via Phabricator via cfe-commits
jsji accepted this revision as: jsji.
jsji added a comment.
This revision is now accepted and ready to land.

LGTM. Thanks!


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D119407

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


[PATCH] D120907: [docs] Add PowerPC release notes for LLVM 14

2022-03-03 Thread Jinsong Ji via Phabricator via cfe-commits
jsji accepted this revision.
jsji added a comment.

LGTM.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D120907

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


[PATCH] D119407: [PowerPC] [Clang] Add SSE4 and BMI compatible intrinsics implementation for PowerPC

2022-02-28 Thread Jinsong Ji via Phabricator via cfe-commits
jsji added inline comments.



Comment at: clang/lib/Headers/ppc_wrappers/xmmintrin.h:1332
+#ifdef _ARCH_PWR10
+  return vec_extractm ((__vector unsigned int) __A);
+#else

Can we have some pwr10 tests to test all these P10 specific codegen?


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D119407

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


[PATCH] D119309: [Driver][test] Clean up some AIX tests

2022-02-25 Thread Jinsong Ji via Phabricator via cfe-commits
jsji added subscribers: Xiangling_L, jasonliu, jsji.
jsji accepted this revision as: jsji.
jsji added a comment.
This revision is now accepted and ready to land.

LGTM.  Thanks for cleaning up. 
BTW: @jasonliu and  @Xiangling_L are no longer working on AIX. #powerpc 
  might get attention from wider group.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D119309

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


[PATCH] D118110: [CMake] [Clang] Add CMake build option to specify long double format on PowerPC

2022-01-26 Thread Jinsong Ji via Phabricator via cfe-commits
jsji accepted this revision as: jsji.
jsji 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/D118110/new/

https://reviews.llvm.org/D118110

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


[PATCH] D118110: [CMake] [Clang] Add CMake build option to specify long double format on PowerPC

2022-01-25 Thread Jinsong Ji via Phabricator via cfe-commits
jsji added a comment.

In D118110#3269450 , @nemanjai wrote:

> It is probably not worth the effort since there won't be that many test cases 
> that test the front end's IR generation for `long double`, but there should 
> be a way to set up lit to know the default through its configuration files.

Yes, that is not a must for now, but we should try to do it .

> There's one thing uncertain: whether this config only applies to ppc64le?

Let us apply it to ppc64le only for now.




Comment at: clang/CMakeLists.txt:240
 
+set(ENABLE_PPC_IEEELONGDOUBLE OFF CACHE BOOL
+"Enable IEEE binary128 as default long double format on PowerPC.")

nemanjai wrote:
> Do we need any error checking here? What happens if someone erroneously sets 
> this on an AIX build (or big endian Linux, FreeBSD, etc.)?
How about `CLANG_DEFAULT_IEEELONGDOUBLE_ON_PPC_LINUX` similar to 
`CLANG_DEFAULT_PIE_ON_LINUX`?



Comment at: clang/include/clang/Driver/ToolChain.h:413
+  /// Check whether use IEEE binary128 as long double format by default.
+  bool useIEEELongDouble() const;
+

defaultToIEEELongDouble?



Comment at: clang/lib/Driver/ToolChain.cpp:113
+bool ToolChain::useIEEELongDouble() const {
+  return ENABLE_PPC_IEEELONGDOUBLE;
+}

Check OS here ?

eg: CLANG_DEFAULT_IEEELONGDOUBLE_ON_PPC_LINUX && OS.Linux() 


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D118110

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


[PATCH] D117181: [PowerPC] Use IEEE long double in proper toolchain

2022-01-24 Thread Jinsong Ji via Phabricator via cfe-commits
jsji added a comment.

> Besides, would it be acceptable that we add a variable to cmake to determine 
> default long double semantics (like current GCC)?

Yes, we can. But I think that can be in another patch, and we shouldn't rely on 
it -- as we shouldn't assume user will config/build clang/llvm on the target 
machine.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D117181

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


[PATCH] D117181: [PowerPC] Use IEEE long double in proper toolchain

2022-01-21 Thread Jinsong Ji via Phabricator via cfe-commits
jsji added a comment.

> Won't that end up producing a warning on ALL code built on any Linux distro 
> with a GCC toolchain older than 12.1? That would be terrible.

Good point. Yes, so should be something like:

  IsDistroWithNewToolchain = ( Distro.IsRedhat() && Distro >= Distro::RHEL9  || 
 (Distro.IsUbuntu() && Distro >= Distro::xxx)
  bool IEEELongDouble = T.isOSLinux() && IsDistroWithNewToolchain;


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D117181

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


[PATCH] D117181: [PowerPC] Use IEEE long double in proper toolchain

2022-01-21 Thread Jinsong Ji via Phabricator via cfe-commits
jsji added a comment.



> Would there be a way to query the GCC toolchain for what the default is for 
> `long double`?

There would certainly be ways to  query. But I don't think we should change the 
default *BASED* on the gcc toolchain installed.

As you mentioned, `I would find it surprising if simply having GCC 12.1 on the 
system changes my long double default. Imagine if I simply install and use such 
a toolchain on a machine for whatever reason`

So, the proposal is we change the default on Linux,  so we will not change the 
default based on the gcc version, 
but will emit warning if we detect that the GCC toolchain is too old.

  Can we just update bool IEEELongDouble = false;  to bool IEEELongDouble = 
T.isOSLinux(); in clang/lib/Driver/ToolChains/Clang.cpp?




Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D117181

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


[PATCH] D117181: [PowerPC] Use IEEE long double in proper toolchain

2022-01-20 Thread Jinsong Ji via Phabricator via cfe-commits
jsji added a comment.

Can we just update `bool IEEELongDouble = false; ` to `bool IEEELongDouble = 
true;` in `clang/lib/Driver/ToolChains/Clang.cpp`?


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D117181

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


[PATCH] D117181: [PowerPC] Use IEEE long double in proper toolchain

2022-01-20 Thread Jinsong Ji via Phabricator via cfe-commits
jsji added inline comments.



Comment at: clang/lib/Driver/ToolChains/PPCLinux.cpp:76
+  if (SupportIEEEFloat128(getDriver(), getTriple(), DriverArgs) &&
+  !DriverArgs.hasArg(options::OPT_mabi_EQ))
+CC1Args.push_back("-mabi=ieeelongdouble");

What if we have `-mabi=elfv2` in command line?


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D117181

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


[PATCH] D117181: [PowerPC] Use IEEE long double in proper toolchain

2022-01-20 Thread Jinsong Ji via Phabricator via cfe-commits
jsji accepted this revision as: jsji.
jsji added a comment.
This revision is now accepted and ready to land.

LGTM. Thanks for working on this!


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D117181

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


[PATCH] D112906: [PowerPC] Emit warning for ieeelongdouble on older GNU toolchain

2022-01-20 Thread Jinsong Ji via Phabricator via cfe-commits
jsji accepted this revision as: jsji.
jsji 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/D112906/new/

https://reviews.llvm.org/D112906

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


[PATCH] D114569: [PowerPC] Require htm feature for HTM builtins

2021-12-09 Thread Jinsong Ji via Phabricator via cfe-commits
jsji accepted this revision as: jsji.
jsji added a comment.
This revision is now accepted and ready to land.

LGTM. Thanks for fixing.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D114569

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


[PATCH] D113049: [AIX] Disable tests that fail because of no 64-bit XCOFF object file support

2021-11-23 Thread Jinsong Ji via Phabricator via cfe-commits
jsji added a comment.

Thanks, looks much better now.




Comment at: clang/test/ClangScanDeps/modules-full-by-mod-name.cpp:1
+// UNSUPPORTED: powerpc64-ibm-aix
 // RUN: rm -rf %t.dir

there is no `fmodule-format=obj` here, why are we failing here?




Comment at: clang/test/lit.cfg.py:259
+if 'aix' in config.target_triple:
+for directory in ('/CodeGenCXX', '/Misc', '/Modules', '/PCH'):
+exclude_unsupported_files_for_aix(config.test_source_root + directory)

Why not adding `ASTMerge` and its subfolders?


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D113049

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


[PATCH] D113451: [PowerPC] [Clang] Enable Intel intrinsics support on FreeBSD

2021-11-23 Thread Jinsong Ji via Phabricator via cfe-commits
jsji added a comment.

In D113451#3148815 , @kamaub wrote:

> Test case `clang/test/CodeGen/ppc-mm-malloc.c` fails on powerpc BE buildbots 
> with this changeset
> https://lab.llvm.org/buildbot/#/builders/93/builds/6031
> https://lab.llvm.org/buildbot/#/builders/100/builds/10836
> https://lab.llvm.org/buildbot/#/builders/52/builds/12719
>
>   *** TEST 'Clang :: CodeGen/ppc-mm-malloc.c' FAILED 
> 
>   Script:
>   --
>   : 'RUN: at line 9';   
> /home/buildbots/ppc64be-clang-multistage-test/clang-ppc64be-multistage/stage1/bin/clang
>  -target powerpc64-unknown-linux-gnu -S -emit-llvm 
> /home/buildbots/ppc64be-clang-multistage-test/clang-ppc64be-multistage/llvm/clang/test/CodeGen/ppc-mm-malloc.c
>  -fno-discard-value-names -mllvm -disable-llvm-optzns -o - | llvm-cxxfilt | 
> /home/buildbots/ppc64be-clang-multistage-test/clang-ppc64be-multistage/stage1/bin/FileCheck
>  
> /home/buildbots/ppc64be-clang-multistage-test/clang-ppc64be-multistage/llvm/clang/test/CodeGen/ppc-mm-malloc.c
>   : 'RUN: at line 10';   
> /home/buildbots/ppc64be-clang-multistage-test/clang-ppc64be-multistage/stage1/bin/clang
>  -target powerpc64-unknown-freebsd13.0 -S -emit-llvm 
> /home/buildbots/ppc64be-clang-multistage-test/clang-ppc64be-multistage/llvm/clang/test/CodeGen/ppc-mm-malloc.c
>  -fno-discard-value-names -mllvm -disable-llvm-optzns -o - | llvm-cxxfilt | 
> /home/buildbots/ppc64be-clang-multistage-test/clang-ppc64be-multistage/stage1/bin/FileCheck
>  
> /home/buildbots/ppc64be-clang-multistage-test/clang-ppc64be-multistage/llvm/clang/test/CodeGen/ppc-mm-malloc.c
>   --
>   Exit Code: 2
>   Command Output (stderr):
>   --
>   In file included from 
> /home/buildbots/ppc64be-clang-multistage-test/clang-ppc64be-multistage/llvm/clang/test/CodeGen/ppc-mm-malloc.c:12:
>   In file included from 
> /home/buildbots/ppc64be-clang-multistage-test/clang-ppc64be-multistage/stage1/lib/clang/14.0.0/include/ppc_wrappers/mm_malloc.h:15:
>   In file included from /usr/include/stdlib.h:25:
>   In file included from /usr/include/bits/libc-header-start.h:33:
>   In file included from /usr/include/features.h:434:
>   /usr/include/gnu/stubs.h:14:11: fatal error: 'gnu/stubs-64-v2.h' file not 
> found
>   # include 
> ^~~
>   1 error generated.
>   FileCheck error: '' is empty.
>   FileCheck command line:  
> /home/buildbots/ppc64be-clang-multistage-test/clang-ppc64be-multistage/stage1/bin/FileCheck
>  
> /home/buildbots/ppc64be-clang-multistage-test/clang-ppc64be-multistage/llvm/clang/test/CodeGen/ppc-mm-malloc.c
>   --
>   

Thanks @kamaub ! Removed the offending line in 
b0784d1d14246e5d662172e9af6e85776b81fdf0 
.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D113451

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


[PATCH] D113451: [PowerPC] [Clang] Enable Intel intrinsics support on FreeBSD

2021-11-22 Thread Jinsong Ji via Phabricator via cfe-commits
This revision was automatically updated to reflect the committed changes.
Closed by commit rG8e2fd879e6f9: [PowerPC] [Clang] Enable Intel intrinsics 
support on FreeBSD (authored by adalava, committed by jsji).

Changed prior to commit:
  https://reviews.llvm.org/D113451?vs=385985=389001#toc

Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D113451

Files:
  clang/lib/Driver/CMakeLists.txt
  clang/lib/Driver/Driver.cpp
  clang/lib/Driver/ToolChains/PPCFreeBSD.cpp
  clang/lib/Driver/ToolChains/PPCFreeBSD.h
  clang/lib/Headers/ppc_wrappers/emmintrin.h
  clang/lib/Headers/ppc_wrappers/mm_malloc.h
  clang/lib/Headers/ppc_wrappers/mmintrin.h
  clang/lib/Headers/ppc_wrappers/pmmintrin.h
  clang/lib/Headers/ppc_wrappers/smmintrin.h
  clang/lib/Headers/ppc_wrappers/tmmintrin.h
  clang/lib/Headers/ppc_wrappers/xmmintrin.h
  clang/test/CodeGen/ppc-mm-malloc.c
  clang/test/CodeGen/ppc-mmintrin.c
  clang/test/CodeGen/ppc-pmmintrin.c
  clang/test/CodeGen/ppc-smmintrin.c
  clang/test/CodeGen/ppc-tmmintrin.c
  clang/test/CodeGen/ppc-xmmintrin.c

Index: clang/test/CodeGen/ppc-xmmintrin.c
===
--- clang/test/CodeGen/ppc-xmmintrin.c
+++ clang/test/CodeGen/ppc-xmmintrin.c
@@ -10,6 +10,15 @@
 // RUN: %clang -x c++ -fsyntax-only -target powerpc64le-unknown-linux-gnu -mcpu=pwr8 -ffreestanding -DNO_WARN_X86_INTRINSICS %s \
 // RUN:   -fno-discard-value-names -mllvm -disable-llvm-optzns
 
+// RUN: %clang -S -emit-llvm -target powerpc64-unknown-freebsd13.0 -mcpu=pwr8 -ffreestanding -DNO_WARN_X86_INTRINSICS %s \
+// RUN:   -fno-discard-value-names -mllvm -disable-llvm-optzns -o - | llvm-cxxfilt -n | FileCheck %s --check-prefixes=CHECK,CHECK-BE
+// RUN: %clang -x c++ -fsyntax-only -target powerpc64-unknown-freebsd13.0 -mcpu=pwr8 -ffreestanding -DNO_WARN_X86_INTRINSICS %s \
+// RUN:   -fno-discard-value-names -mllvm -disable-llvm-optzns
+// RUN: %clang -S -emit-llvm -target powerpc64le-unknown-freebsd13.0 -mcpu=pwr8 -ffreestanding -DNO_WARN_X86_INTRINSICS %s \
+// RUN:   -fno-discard-value-names -mllvm -disable-llvm-optzns -o - | llvm-cxxfilt -n | FileCheck %s --check-prefixes=CHECK,CHECK-LE
+// RUN: %clang -x c++ -fsyntax-only -target powerpc64le-unknown-freebsd13.0 -mcpu=pwr8 -ffreestanding -DNO_WARN_X86_INTRINSICS %s \
+// RUN:   -fno-discard-value-names -mllvm -disable-llvm-optzns
+
 #include 
 
 __m128 res, m1, m2;
Index: clang/test/CodeGen/ppc-tmmintrin.c
===
--- clang/test/CodeGen/ppc-tmmintrin.c
+++ clang/test/CodeGen/ppc-tmmintrin.c
@@ -6,6 +6,11 @@
 // RUN: %clang -S -emit-llvm -target powerpc64le-gnu-linux -mcpu=pwr8 -ffreestanding -DNO_WARN_X86_INTRINSICS %s \
 // RUN:   -fno-discard-value-names -mllvm -disable-llvm-optzns -o - | llvm-cxxfilt -n | FileCheck %s --check-prefixes=CHECK,CHECK-LE
 
+// RUN: %clang -S -emit-llvm -target powerpc64-unknown-freebsd13.0 -mcpu=pwr8 -ffreestanding -DNO_WARN_X86_INTRINSICS %s \
+// RUN:   -fno-discard-value-names -mllvm -disable-llvm-optzns -o - | llvm-cxxfilt -n | FileCheck %s --check-prefixes=CHECK,CHECK-BE
+// RUN: %clang -S -emit-llvm -target powerpc64le-unknown-freebsd13.0 -mcpu=pwr8 -ffreestanding -DNO_WARN_X86_INTRINSICS %s \
+// RUN:   -fno-discard-value-names -mllvm -disable-llvm-optzns -o - | llvm-cxxfilt -n | FileCheck %s --check-prefixes=CHECK,CHECK-LE
+
 #include 
 
 __m64 res, m1, m2;
Index: clang/test/CodeGen/ppc-smmintrin.c
===
--- clang/test/CodeGen/ppc-smmintrin.c
+++ clang/test/CodeGen/ppc-smmintrin.c
@@ -6,6 +6,11 @@
 // RUN: %clang -S -emit-llvm -target powerpc64-unknown-linux-gnu -mcpu=pwr8 -ffreestanding -DNO_WARN_X86_INTRINSICS %s \
 // RUN:   -fno-discard-value-names -mllvm -disable-llvm-optzns -o - | llvm-cxxfilt -n | FileCheck %s
 
+// RUN: %clang -S -emit-llvm -target powerpc64le-unknown-freebsd13.0 -mcpu=pwr8 -ffreestanding -DNO_WARN_X86_INTRINSICS %s \
+// RUN:   -fno-discard-value-names -mllvm -disable-llvm-optzns -o - | llvm-cxxfilt -n | FileCheck %s
+// RUN: %clang -S -emit-llvm -target powerpc64-unknown-freebsd13.0 -mcpu=pwr8 -ffreestanding -DNO_WARN_X86_INTRINSICS %s \
+// RUN:   -fno-discard-value-names -mllvm -disable-llvm-optzns -o - | llvm-cxxfilt -n | FileCheck %s
+
 #include 
 
 __m128i mi, m1, m2;
Index: clang/test/CodeGen/ppc-pmmintrin.c
===
--- clang/test/CodeGen/ppc-pmmintrin.c
+++ clang/test/CodeGen/ppc-pmmintrin.c
@@ -6,6 +6,11 @@
 // RUN: %clang -S -emit-llvm -target powerpc64le-gnu-linux -mcpu=pwr8 -DNO_MM_MALLOC -ffreestanding -DNO_WARN_X86_INTRINSICS %s \
 // RUN:   -fno-discard-value-names -mllvm -disable-llvm-optzns -o - | llvm-cxxfilt -n | FileCheck %s
 
+// RUN: %clang -S -emit-llvm -target powerpc64-unknown-freebsd13.0 -mcpu=pwr8 -DNO_MM_MALLOC -ffreestanding -DNO_WARN_X86_INTRINSICS %s \
+// RUN:  

[PATCH] D113451: [PowerPC] [Clang] Enable Intel intrinsics support on FreeBSD

2021-11-22 Thread Jinsong Ji via Phabricator via cfe-commits
jsji added inline comments.



Comment at: clang/test/CodeGen/ppc-mm-malloc-le.c:10
 // RUN: %clang -target powerpc64le-unknown-linux-gnu -S -emit-llvm %s 
-fno-discard-value-names -mllvm -disable-llvm-optzns -o - | llvm-cxxfilt | 
FileCheck %s
+// RUN: %clang -target powerpc64le-unknown-freebsd13.0 -S -emit-llvm %s 
-fno-discard-value-names -mllvm -disable-llvm-optzns -o - | llvm-cxxfilt | 
FileCheck %s
 

This will cause problem when building on Linux.

```
In file included from 
/home/jji/llvm-git/llvm-project/clang/test/CodeGen/ppc-mm-malloc-le.c:12:
In file included from 
/home/jji/llvm-git/build/lib/clang/14.0.0/include/ppc_wrappers/mm_malloc.h:15:
/usr/include/stdlib.h:25:10: fatal error: 'bits/libc-header-start.h' file not 
found
#include 
 ^~
1 error generated.
FileCheck error: '' is empty.
FileCheck command line:  /home/jji/llvm-git/build/bin/FileCheck 
/home/jji/llvm-git/llvm-project/clang/test/CodeGen/ppc-mm-malloc-le.c

```


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D113451

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


[PATCH] D113049: [AIX] Disable tests that fail because of no 64-bit XCOFF object file support

2021-11-18 Thread Jinsong Ji via Phabricator via cfe-commits
jsji added a comment.

In D113049#3140174 , @lkail wrote:

> Is there any way to filter these tests out on AIX in `lit.local.cfg`?

Agree, I would prefer we do something similar to 
https://reviews.llvm.org/rG666accf283311c5110ae4e2e5e4c4b99078eed15#change-NFfZJdfkKBjR
 to exclude the unsupported files for now.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D113049

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


[PATCH] D113049: [AIX] Disable tests that fail because of no 64-bit XCOFF object file support

2021-11-18 Thread Jinsong Ji via Phabricator via cfe-commits
jsji added a comment.

In D113049#3140165 , @Jake-Egan wrote:

> In D113049#3140160 , @jsji wrote:
>
>> Can we use `UNSUPPORTED` instead of `XFAIL` since it is unsupported?
>
> If 64-bit XCOFF object files will be supported in the future, I think it 
> makes more sense to use `XFAIL` because these tests will still be run and 
> pass after implementation.

We should remove the `UNSUPPORTED` when we enable the 64-bit XCOFF object file 
support . It is a waste of machine time to run them *NOW*, especially 
considering the number of these failing tests.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D113049

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


[PATCH] D113049: [AIX] Disable tests that fail because of no 64-bit XCOFF object file support

2021-11-18 Thread Jinsong Ji via Phabricator via cfe-commits
jsji added a comment.

Can we use `UNSUPPORTED` instead of `XFAIL` since it is unsupported?


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D113049

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


[PATCH] D113451: [PowerPC] [Clang] Enable Intel intrinsics support on FreeBSD

2021-11-11 Thread Jinsong Ji via Phabricator via cfe-commits
jsji accepted this revision as: jsji.
jsji added a comment.
This revision is now accepted and ready to land.

LGTM. Thanks for enabling this for FreeBSD.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D113451

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


[PATCH] D112401: [Clang] Mutate printf bulitin names under IEEE128 on PPC64

2021-11-01 Thread Jinsong Ji via Phabricator via cfe-commits
jsji accepted this revision as: jsji.
jsji added a comment.
This revision is now accepted and ready to land.

LGTM. Please hold a few days to see whether there are inputs from other 
reviewers. Thanks.




Comment at: clang/lib/CodeGen/CGBuiltin.cpp:100
+  static SmallDenseMap F128Builtins{
+  {Builtin::BI__builtin_printf, "__printfieee128"},
+  {Builtin::BI__builtin_vsnprintf, "__vsnprintfieee128"},

qiucf wrote:
> jsji wrote:
> > Why only these printf builtins? I think there are full list of similar 
> > libcalls in `GLIBC_2.32` and later?
> Yes, Glibc redirects all these functions depending on long double semantics, 
> and GCC has corresponding builtins for almost all library functions 
> (https://gcc.gnu.org/onlinedocs/gcc/Other-Builtins.html).
> 
> But currently clang doesn't have all of these builtins (for example, 
> `__builtin_scanf`). It seems beyond this patch's scope to make the list 
> complete.
OK. Thanks. Can we add a TODO note.


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

https://reviews.llvm.org/D112401

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


[PATCH] D112906: [PowerPC] Emit warning for ieeelongdouble on older GNU toolchain

2021-11-01 Thread Jinsong Ji via Phabricator via cfe-commits
jsji added inline comments.



Comment at: clang/test/Driver/ppc-float-abi-warning.cpp:2
+// REQUIRES: powerpc-registered-target
+// RUN: %clang -### -x c++ -target powerpc64le-unknown-linux-gnu %s 
-mabi=ieeelongdouble
+

Can we add RUN line to test when we are using libc++?



Comment at: clang/test/Driver/ppc-float-abi-warning.cpp:4
+
+// expected-warning{{float ABI 'ieeelongdouble' is not supported by current 
C++ stdlib}}
+

So this assume that all our buildbots are using old glibc? What if we have 
mixed envs, eg: some with newer glibc?


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D112906

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


[PATCH] D112401: [Clang] Mutate printf bulitin names under IEEE128 on PPC64

2021-10-26 Thread Jinsong Ji via Phabricator via cfe-commits
jsji added inline comments.



Comment at: clang/lib/CodeGen/CGBuiltin.cpp:100
+  static SmallDenseMap F128Builtins{
+  {Builtin::BI__builtin_printf, "__printfieee128"},
+  {Builtin::BI__builtin_vsnprintf, "__vsnprintfieee128"},

Why only these printf builtins? I think there are full list of similar libcalls 
in `GLIBC_2.32` and later?



Comment at: clang/lib/CodeGen/CGBuiltin.cpp:117
+if (getTriple().isPPC64() &&
+().getLongDoubleFormat() == ::APFloat::IEEEquad() &&
+F128Builtins.find(BuiltinID) != F128Builtins.end())

How do we deal with the glibc version? Do we assume that user has glibc newer 
than GLIBC_2.32?



Comment at: clang/lib/CodeGen/CGBuiltin.cpp:119
+F128Builtins.find(BuiltinID) != F128Builtins.end())
+  Name = F128Builtins[BuiltinID];
+else

Do we have to do it here? Can we just update the libcall names in 
`RuntimeLibcalls.def` or `setLibcallName` similar to others?


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D112401

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


[PATCH] D112055: [PowerPC] Implement longdouble pack/unpack builtins

2021-10-26 Thread Jinsong Ji via Phabricator via cfe-commits
jsji accepted this revision as: jsji.
jsji added a comment.
This revision is now accepted and ready to land.

LGTM with some nits.




Comment at: clang/lib/Sema/SemaChecking.cpp:3382
+if (() != ::APFloat::PPCDoubleDouble())
+  return Diag(TheCall->getBeginLoc(), diag::err_ppc_builtin_requires_abi)
+ << "ibmlongdouble";

Can you please add reference to documents that define these builtins in 
descriptions?



Comment at: llvm/test/CodeGen/PowerPC/longdouble-pack.ll:2
+; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
+; RUN: llc -mtriple=powerpc64le-unknown-linux < %s | FileCheck %s
+

Can we also include AIX/big endian run lines?



Comment at: llvm/utils/TableGen/IntrinsicEmitter.cpp:253
+  IIT_AMX  = 51,
+  IIT_PPCF128 = 52,
 };

Additional `,`?


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D112055

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


[PATCH] D111078: [AIX] Enable int128 in 64 bit mode

2021-10-15 Thread Jinsong Ji 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 rG42eea2b69bb9: [AIX] Enable int128 in 64 bit mode (authored 
by jsji).

Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D111078

Files:
  clang/lib/Basic/Targets/OSTargets.h
  clang/test/AST/ast-print-int128.cpp
  clang/test/Analysis/sval-dump-int128.c
  clang/test/CodeGen/dbg-const-int128.c
  clang/test/CodeGen/debug-info.c
  clang/test/CodeGen/extend-arg-64.c
  clang/test/CodeGen/ppc-varargs-struct.c
  clang/test/CodeGen/uint128_t.c
  clang/test/CodeGenCXX/debug-info-enum-i128.cpp
  clang/test/Driver/types.c
  clang/test/Preprocessor/init-ppc64.c
  clang/test/Sema/128bitint.c
  clang/test/Sema/const-eval.c
  clang/test/Sema/redefine_extname.c
  clang/test/Sema/types.c
  llvm/test/CodeGen/PowerPC/ctrloop-i128.ll
  llvm/test/CodeGen/PowerPC/int128_ldst.ll
  llvm/test/CodeGen/PowerPC/ppc64-i128-abi.ll

Index: llvm/test/CodeGen/PowerPC/ppc64-i128-abi.ll
===
--- llvm/test/CodeGen/PowerPC/ppc64-i128-abi.ll
+++ llvm/test/CodeGen/PowerPC/ppc64-i128-abi.ll
@@ -5,9 +5,15 @@
 ; RUN: llc -relocation-model=pic -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu \
 ; RUN:   -mcpu=pwr8 < %s | FileCheck %s -check-prefix=CHECK-BE
 
+; RUN: llc -verify-machineinstrs -mtriple=powerpc64-ibm-aix-xcoff \
+; RUN:   -mcpu=pwr8 < %s | FileCheck %s -check-prefix=CHECK-BE
+
 ; RUN: llc -relocation-model=pic -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu \
 ; RUN:   -mcpu=pwr8 -mattr=-vsx < %s | FileCheck %s -check-prefix=CHECK-NOVSX
 
+; RUN: llc -verify-machineinstrs -mtriple=powerpc64-ibm-aix-xcoff \
+; RUN:   -mcpu=pwr8 -mattr=-vsx < %s | FileCheck %s -check-prefix=CHECK-NOVSX
+
 ; RUN: llc -relocation-model=pic -verify-machineinstrs -mtriple=powerpc64le-unknown-linux-gnu \
 ; RUN:   -mcpu=pwr8 -mattr=-vsx < %s | FileCheck %s -check-prefix=CHECK-NOVSX \
 ; RUN:   --implicit-check-not xxswapd
@@ -15,6 +21,9 @@
 ; RUN: llc -relocation-model=pic -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu \
 ; RUN:   -mcpu=pwr8 -mattr=-vsx < %s | FileCheck %s -check-prefix=CHECK-BE-NOVSX
 
+; RUN: llc -verify-machineinstrs -mtriple=powerpc64-ibm-aix-xcoff \
+; RUN:   -mcpu=pwr8 -mattr=-vsx < %s | FileCheck %s -check-prefix=CHECK-BE-NOVSX
+
 ; RUN: llc -relocation-model=pic -verify-machineinstrs -mtriple=powerpc64le-unknown-linux-gnu \
 ; RUN:   -mcpu=pwr8 -mattr=-vsx < %s | \
 ; RUN:   FileCheck %s -check-prefix=CHECK-LE-NOVSX --implicit-check-not xxswapd
@@ -23,10 +32,16 @@
 ; RUN:   -mcpu=pwr9 -ppc-asm-full-reg-names -ppc-vsr-nums-as-vr < %s | \
 ; RUN:   FileCheck %s -check-prefix=CHECK-P9 --implicit-check-not xxswapd
 
+; RUN: llc -verify-machineinstrs -mtriple=powerpc64-ibm-aix-xcoff \
+; RUN:   -mcpu=pwr9 -ppc-asm-full-reg-names -ppc-vsr-nums-as-vr < %s | FileCheck %s -check-prefix=CHECK-P9
+
 ; RUN: llc -relocation-model=pic -verify-machineinstrs -mtriple=powerpc64le-unknown-linux-gnu \
 ; RUN:   -mcpu=pwr9 -mattr=-vsx < %s | FileCheck %s -check-prefix=CHECK-NOVSX \
 ; RUN:   --implicit-check-not xxswapd
 
+; RUN: llc -verify-machineinstrs -mtriple=powerpc64-ibm-aix-xcoff \
+; RUN:   -mcpu=pwr9 -mattr=-vsx < %s | FileCheck %s -check-prefix=CHECK-NOVSX
+
 ; RUN: llc -relocation-model=pic -verify-machineinstrs -mtriple=powerpc64le-unknown-linux-gnu \
 ; RUN:   -mcpu=pwr9 -mattr=-power9-vector -mattr=-direct-move < %s | \
 ; RUN:   FileCheck %s -check-prefix=CHECK-LE --implicit-check-not xxswapd
@@ -208,19 +223,19 @@
 
 ; CHECK-P9-LABEL: @call_v1i128_increment_by_one
 ; CHECK-P9: lxv
-; CHECK-P9: bl v1i128_increment_by_one
+; CHECK-P9: bl {{.?}}v1i128_increment_by_one
 ; CHECK-P9: blr
 
 ; CHECK-BE-LABEL: @call_v1i128_increment_by_one
 ; CHECK-BE: lxvw4x 34, {{[0-9]+}}, {{[0-9]+}}
 ; CHECK-BE-NOT: xxswapd 34, {{[0-9]+}}
-; CHECK-BE: bl v1i128_increment_by_one
+; CHECK-BE: bl {{.?}}v1i128_increment_by_one
 ; CHECK-BE: blr
 
 ; CHECK-NOVSX-LABEL: @call_v1i128_increment_by_one
 ; CHECK-NOVSX: lvx 2, {{[0-9]+}}, {{[0-9]+}}
 ; CHECK-NOVSX-NOT: xxswapd {{[0-9]+}}, {{[0-9]+}}
-; CHECK-NOVSX: bl v1i128_increment_by_one
+; CHECK-NOVSX: bl {{.?}}v1i128_increment_by_one
 ; CHECK-NOVSX: blr
 }
 
@@ -239,7 +254,7 @@
 ; CHECK-P9-LABEL: @call_v1i128_increment_by_val
 ; CHECK-P9-DAG: lxv v2
 ; CHECK-P9-DAG: lxv v3
-; CHECK-P9: bl v1i128_increment_by_val
+; CHECK-P9: bl {{.?}}v1i128_increment_by_val
 ; CHECK-P9: blr
 
 ; CHECK-BE-LABEL: @call_v1i128_increment_by_val
@@ -248,7 +263,7 @@
 ; CHECK-BE-DAG: lxvw4x 35, {{[0-9]+}}, {{[0-9]+}}
 ; CHECK-BE-NOT: xxswapd 34, {{[0-9]+}}
 ; CHECK-BE-NOT: xxswapd 35, {{[0-9]+}}
-; CHECK-BE: bl v1i128_increment_by_val
+; CHECK-BE: bl {{.?}}v1i128_increment_by_val
 ; CHECK-BE: blr
 
 ; CHECK-NOVSX-LABEL: @call_v1i128_increment_by_val
@@ -256,7 +271,7 @@
 ; CHECK-NOVSX-DAG: lvx 3, {{[0-9]+}}, {{[0-9]+}}

[PATCH] D111078: [AIX] Enable int128 in 64 bit mode

2021-10-15 Thread Jinsong Ji via Phabricator via cfe-commits
jsji added a comment.

In D111078#3065552 , 
@hubert.reinterpretcast wrote:

> In D111078#3063245 , @lkail wrote:
>
>> This LGTM as the start point to support int128 on AIX. We might need more 
>> patches involving libraries in the LLVM monorepo, we can do that 
>> progressively.
>
> Agreed (although I find it slightly odd that the testing doesn't check the 
> edge case where the argument value is split between r10 and the stack).

I can add more test in a follow up patch.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D111078

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


[PATCH] D111078: [AIX] Enable int128 in 64 bit mode

2021-10-13 Thread Jinsong Ji via Phabricator via cfe-commits
jsji added a comment.

ppc64-i128-abi.ll CHECK-P9 part depends on D94282 
: [PowerPC] Support ppc-asm-full-reg-names for 
AIX.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D111078

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


[PATCH] D111078: [AIX] Enable int128 in 64 bit mode

2021-10-13 Thread Jinsong Ji via Phabricator via cfe-commits
jsji updated this revision to Diff 379485.
jsji added a comment.

Add AIX XCOFF triples to i128 tests, especially ppc64-i128-abi.ll.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D111078

Files:
  clang/lib/Basic/Targets/OSTargets.h
  clang/test/AST/ast-print-int128.cpp
  clang/test/Analysis/sval-dump-int128.c
  clang/test/CodeGen/dbg-const-int128.c
  clang/test/CodeGen/debug-info.c
  clang/test/CodeGen/extend-arg-64.c
  clang/test/CodeGen/ppc-varargs-struct.c
  clang/test/CodeGen/uint128_t.c
  clang/test/CodeGenCXX/debug-info-enum-i128.cpp
  clang/test/Driver/types.c
  clang/test/Preprocessor/init-ppc64.c
  clang/test/Sema/128bitint.c
  clang/test/Sema/const-eval.c
  clang/test/Sema/redefine_extname.c
  clang/test/Sema/types.c
  llvm/test/CodeGen/PowerPC/ctrloop-i128.ll
  llvm/test/CodeGen/PowerPC/int128_ldst.ll
  llvm/test/CodeGen/PowerPC/ppc64-i128-abi.ll

Index: llvm/test/CodeGen/PowerPC/ppc64-i128-abi.ll
===
--- llvm/test/CodeGen/PowerPC/ppc64-i128-abi.ll
+++ llvm/test/CodeGen/PowerPC/ppc64-i128-abi.ll
@@ -5,9 +5,15 @@
 ; RUN: llc -relocation-model=pic -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu \
 ; RUN:   -mcpu=pwr8 < %s | FileCheck %s -check-prefix=CHECK-BE
 
+; RUN: llc -verify-machineinstrs -mtriple=powerpc64-ibm-aix-xcoff \
+; RUN:   -mcpu=pwr8 < %s | FileCheck %s -check-prefix=CHECK-BE
+
 ; RUN: llc -relocation-model=pic -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu \
 ; RUN:   -mcpu=pwr8 -mattr=-vsx < %s | FileCheck %s -check-prefix=CHECK-NOVSX
 
+; RUN: llc -verify-machineinstrs -mtriple=powerpc64-ibm-aix-xcoff \
+; RUN:   -mcpu=pwr8 -mattr=-vsx < %s | FileCheck %s -check-prefix=CHECK-NOVSX
+
 ; RUN: llc -relocation-model=pic -verify-machineinstrs -mtriple=powerpc64le-unknown-linux-gnu \
 ; RUN:   -mcpu=pwr8 -mattr=-vsx < %s | FileCheck %s -check-prefix=CHECK-NOVSX \
 ; RUN:   --implicit-check-not xxswapd
@@ -15,6 +21,9 @@
 ; RUN: llc -relocation-model=pic -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu \
 ; RUN:   -mcpu=pwr8 -mattr=-vsx < %s | FileCheck %s -check-prefix=CHECK-BE-NOVSX
 
+; RUN: llc -verify-machineinstrs -mtriple=powerpc64-ibm-aix-xcoff \
+; RUN:   -mcpu=pwr8 -mattr=-vsx < %s | FileCheck %s -check-prefix=CHECK-BE-NOVSX
+
 ; RUN: llc -relocation-model=pic -verify-machineinstrs -mtriple=powerpc64le-unknown-linux-gnu \
 ; RUN:   -mcpu=pwr8 -mattr=-vsx < %s | \
 ; RUN:   FileCheck %s -check-prefix=CHECK-LE-NOVSX --implicit-check-not xxswapd
@@ -23,10 +32,16 @@
 ; RUN:   -mcpu=pwr9 -ppc-asm-full-reg-names -ppc-vsr-nums-as-vr < %s | \
 ; RUN:   FileCheck %s -check-prefix=CHECK-P9 --implicit-check-not xxswapd
 
+; RUN: llc -verify-machineinstrs -mtriple=powerpc64-ibm-aix-xcoff \
+; RUN:   -mcpu=pwr9 -ppc-asm-full-reg-names -ppc-vsr-nums-as-vr < %s | FileCheck %s -check-prefix=CHECK-P9
+
 ; RUN: llc -relocation-model=pic -verify-machineinstrs -mtriple=powerpc64le-unknown-linux-gnu \
 ; RUN:   -mcpu=pwr9 -mattr=-vsx < %s | FileCheck %s -check-prefix=CHECK-NOVSX \
 ; RUN:   --implicit-check-not xxswapd
 
+; RUN: llc -verify-machineinstrs -mtriple=powerpc64-ibm-aix-xcoff \
+; RUN:   -mcpu=pwr9 -mattr=-vsx < %s | FileCheck %s -check-prefix=CHECK-NOVSX
+
 ; RUN: llc -relocation-model=pic -verify-machineinstrs -mtriple=powerpc64le-unknown-linux-gnu \
 ; RUN:   -mcpu=pwr9 -mattr=-power9-vector -mattr=-direct-move < %s | \
 ; RUN:   FileCheck %s -check-prefix=CHECK-LE --implicit-check-not xxswapd
@@ -208,19 +223,19 @@
 
 ; CHECK-P9-LABEL: @call_v1i128_increment_by_one
 ; CHECK-P9: lxv
-; CHECK-P9: bl v1i128_increment_by_one
+; CHECK-P9: bl {{.?}}v1i128_increment_by_one
 ; CHECK-P9: blr
 
 ; CHECK-BE-LABEL: @call_v1i128_increment_by_one
 ; CHECK-BE: lxvw4x 34, {{[0-9]+}}, {{[0-9]+}}
 ; CHECK-BE-NOT: xxswapd 34, {{[0-9]+}}
-; CHECK-BE: bl v1i128_increment_by_one
+; CHECK-BE: bl {{.?}}v1i128_increment_by_one
 ; CHECK-BE: blr
 
 ; CHECK-NOVSX-LABEL: @call_v1i128_increment_by_one
 ; CHECK-NOVSX: lvx 2, {{[0-9]+}}, {{[0-9]+}}
 ; CHECK-NOVSX-NOT: xxswapd {{[0-9]+}}, {{[0-9]+}}
-; CHECK-NOVSX: bl v1i128_increment_by_one
+; CHECK-NOVSX: bl {{.?}}v1i128_increment_by_one
 ; CHECK-NOVSX: blr
 }
 
@@ -239,7 +254,7 @@
 ; CHECK-P9-LABEL: @call_v1i128_increment_by_val
 ; CHECK-P9-DAG: lxv v2
 ; CHECK-P9-DAG: lxv v3
-; CHECK-P9: bl v1i128_increment_by_val
+; CHECK-P9: bl {{.?}}v1i128_increment_by_val
 ; CHECK-P9: blr
 
 ; CHECK-BE-LABEL: @call_v1i128_increment_by_val
@@ -248,7 +263,7 @@
 ; CHECK-BE-DAG: lxvw4x 35, {{[0-9]+}}, {{[0-9]+}}
 ; CHECK-BE-NOT: xxswapd 34, {{[0-9]+}}
 ; CHECK-BE-NOT: xxswapd 35, {{[0-9]+}}
-; CHECK-BE: bl v1i128_increment_by_val
+; CHECK-BE: bl {{.?}}v1i128_increment_by_val
 ; CHECK-BE: blr
 
 ; CHECK-NOVSX-LABEL: @call_v1i128_increment_by_val
@@ -256,7 +271,7 @@
 ; CHECK-NOVSX-DAG: lvx 3, {{[0-9]+}}, {{[0-9]+}}
 ; CHECK-NOVSX-NOT: xxswapd 34, {{[0-9]+}}
 ; CHECK-NOVSX-NOT: xxswapd 35, 

[PATCH] D111078: [AIX] Enable int128 in 64 bit mode

2021-10-12 Thread Jinsong Ji via Phabricator via cfe-commits
jsji added a comment.

Ping @hubert.reinterpretcast Any further comments?


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D111078

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


[PATCH] D111482: [Clang] [PowerPC] Fix header include typo in smmintrin.h

2021-10-09 Thread Jinsong Ji via Phabricator via cfe-commits
jsji accepted this revision as: jsji.
jsji added a comment.
This revision is now accepted and ready to land.

Can you please add a testcase that include `smmintrin.h` but use SSSE3? Thanks.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D111482

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


[PATCH] D111406: [AIX][ZOS] Excluding merge-objc-interface.m from Tests

2021-10-08 Thread Jinsong Ji 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 rG75127bce6de7: [AIX][ZOS] Excluding merge-objc-interface.m 
from Tests (authored by qiongsiwu1, committed by jsji).

Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D111406

Files:
  clang/test/Modules/merge-objc-interface.m


Index: clang/test/Modules/merge-objc-interface.m
===
--- clang/test/Modules/merge-objc-interface.m
+++ clang/test/Modules/merge-objc-interface.m
@@ -1,3 +1,4 @@
+// UNSUPPORTED: -zos, -aix
 // RUN: rm -rf %t
 // RUN: split-file %s %t
 // RUN: %clang_cc1 -emit-llvm -o %t/test.bc -F%t/Frameworks %t/test.m \


Index: clang/test/Modules/merge-objc-interface.m
===
--- clang/test/Modules/merge-objc-interface.m
+++ clang/test/Modules/merge-objc-interface.m
@@ -1,3 +1,4 @@
+// UNSUPPORTED: -zos, -aix
 // RUN: rm -rf %t
 // RUN: split-file %s %t
 // RUN: %clang_cc1 -emit-llvm -o %t/test.bc -F%t/Frameworks %t/test.m \
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D111258: [PowerPC] Emit dcbt and dcbtst in place of their extended mnemonics on AIX

2021-10-06 Thread Jinsong Ji via Phabricator via cfe-commits
jsji accepted this revision as: jsji.
jsji added a comment.
This revision is now accepted and ready to land.

Thanks for working on this.




Comment at: llvm/lib/Target/PowerPC/MCTargetDesc/PPCInstPrinter.cpp:161
   //  where th can be omitted when it is 0. dcbtst is the same.
-  if (MI->getOpcode() == PPC::DCBT || MI->getOpcode() == PPC::DCBTST) {
+  // TODO: AIX still requires dcbtt and dcbtstt implementation,
+  // remove AIX OS check when dcbtt and dcbtstt become available.

What do you mean by `still requires dcbtt and dcbtstt implementation`?



Comment at: llvm/lib/Target/PowerPC/MCTargetDesc/PPCInstPrinter.cpp:164
+  if ((MI->getOpcode() == PPC::DCBT || MI->getOpcode() == PPC::DCBTST) &&
+  !TT.isOSAIX()) {
 unsigned char TH = MI->getOperand(0).getImm();

I think it is better to use the same condition as `ModernAs` Predicate , so 
that we may be able to enable it with feature bit if needed.
```
(!TT.isOSAIX() || STI.getFeatureBits()[PPC::HasModernAIXAs])
```


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D111258

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


[PATCH] D111078: [AIX] Enable int128 in 64 bit mode

2021-10-05 Thread Jinsong Ji via Phabricator via cfe-commits
jsji updated this revision to Diff 377283.
jsji added a comment.
Herald added a subscriber: kbarton.

Address comments -- adding AIX triples to more existing tests.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D111078

Files:
  clang/lib/Basic/Targets/OSTargets.h
  clang/test/AST/ast-print-int128.cpp
  clang/test/Analysis/sval-dump-int128.c
  clang/test/CodeGen/dbg-const-int128.c
  clang/test/CodeGen/debug-info.c
  clang/test/CodeGen/extend-arg-64.c
  clang/test/CodeGen/ppc-varargs-struct.c
  clang/test/CodeGen/uint128_t.c
  clang/test/CodeGenCXX/debug-info-enum-i128.cpp
  clang/test/Driver/types.c
  clang/test/Preprocessor/init-ppc64.c
  clang/test/Sema/128bitint.c
  clang/test/Sema/const-eval.c
  clang/test/Sema/redefine_extname.c
  clang/test/Sema/types.c
  llvm/test/CodeGen/PowerPC/int128_ldst.ll

Index: llvm/test/CodeGen/PowerPC/int128_ldst.ll
===
--- llvm/test/CodeGen/PowerPC/int128_ldst.ll
+++ llvm/test/CodeGen/PowerPC/int128_ldst.ll
@@ -17,6 +17,9 @@
 ; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu \
 ; RUN:   -mcpu=pwr8  \
 ; RUN:   < %s | FileCheck %s --check-prefixes=CHECK,CHECK-PREP10,CHECK-P8
+; RUN: llc -verify-machineinstrs -mtriple=powerpc64-ibm-aix-xcoff \
+; RUN:   -mcpu=pwr8  \
+; RUN:   < %s | FileCheck %s --check-prefixes=CHECK,CHECK-PREP10,CHECK-P8
 
 ; Function Attrs: norecurse nounwind readonly uwtable willreturn
 define dso_local i128 @ld_0___int128___int128(i64 %ptr) {
Index: clang/test/Sema/types.c
===
--- clang/test/Sema/types.c
+++ clang/test/Sema/types.c
@@ -3,6 +3,7 @@
 // RUN: %clang_cc1 %s -fblocks -pedantic -verify -triple=x86_64-unknown-linux
 // RUN: %clang_cc1 %s -fblocks -pedantic -verify -triple=x86_64-unknown-linux-gnux32
 // RUN: %clang_cc1 %s -fblocks -pedantic -pedantic -verify -triple=arm64_32-apple-ios7.0
+// RUN: %clang_cc1 %s -fblocks -pedantic -verify -triple=powerpc64-ibm-aix-xcoff
 
 // rdar://6097662
 typedef int (*T)[2];
Index: clang/test/Sema/redefine_extname.c
===
--- clang/test/Sema/redefine_extname.c
+++ clang/test/Sema/redefine_extname.c
@@ -1,4 +1,5 @@
 // RUN: %clang_cc1 -triple=x86_64-unknown-linux -Wpragmas -verify %s
+// RUN: %clang_cc1 -triple=powerpc64-ibm-aix-xcoff -Wpragmas -verify %s
 
 // Check that pragma redefine_extname applies to external declarations only.
 #pragma redefine_extname foo_static bar_static
Index: clang/test/Sema/const-eval.c
===
--- clang/test/Sema/const-eval.c
+++ clang/test/Sema/const-eval.c
@@ -1,4 +1,5 @@
 // RUN: %clang_cc1 -fsyntax-only -verify -triple x86_64-linux %s -Wno-tautological-pointer-compare -Wno-pointer-to-int-cast
+// RUN: %clang_cc1 -fsyntax-only -verify -triple powerpc64-ibm-aix-xcoff %s -Wno-tautological-pointer-compare -Wno-pointer-to-int-cast
 
 #define EVAL_EXPR(testno, expr) enum { test##testno = (expr) }; struct check_positive##testno { int a[test##testno]; };
 int x;
Index: clang/test/Sema/128bitint.c
===
--- clang/test/Sema/128bitint.c
+++ clang/test/Sema/128bitint.c
@@ -1,5 +1,7 @@
 // RUN: %clang_cc1 -fsyntax-only -verify -triple x86_64-apple-darwin9 %s -DHAVE
 // RUN: %clang_cc1 -fsyntax-only -verify -triple i686-linux-gnu %s -DHAVE_NOT
+// RUN: %clang_cc1 -fsyntax-only -verify -triple powerpc64-ibm-aix-xcoff %s -DHAVE
+// RUN: %clang_cc1 -fsyntax-only -verify -triple powerpc-ibm-aix-xcoff %s -DHAVE_NOT
 
 #ifdef HAVE
 typedef int i128 __attribute__((__mode__(TI)));
Index: clang/test/Preprocessor/init-ppc64.c
===
--- clang/test/Preprocessor/init-ppc64.c
+++ clang/test/Preprocessor/init-ppc64.c
@@ -811,6 +811,7 @@
 // PPC64-AIX:#define __SIG_ATOMIC_WIDTH__ 32
 // PPC64-AIX:#define __SIZEOF_DOUBLE__ 8
 // PPC64-AIX:#define __SIZEOF_FLOAT__ 4
+// PPC64-AIX:#define __SIZEOF_INT128__ 16
 // PPC64-AIX:#define __SIZEOF_INT__ 4
 // PPC64-AIX:#define __SIZEOF_LONG_DOUBLE__ 8
 // PPC64-AIX:#define __SIZEOF_LONG_LONG__ 8
Index: clang/test/Driver/types.c
===
--- clang/test/Driver/types.c
+++ clang/test/Driver/types.c
@@ -12,8 +12,8 @@
 // RUN: not %clang -c --target=powerpc-ibm-aix -fsyntax-only %s \
 // RUN: 2>&1 | FileCheck %s
 
-// RUN: not %clang -c --target=powerpc64-ibm-aix -fsyntax-only %s \
-// RUN: 2>&1 | FileCheck %s
+// RUN: %clang -c --target=powerpc64-ibm-aix -fsyntax-only %s \
+// RUN: 2>&1
 
 void a() {
   __int128_t s;
Index: clang/test/CodeGenCXX/debug-info-enum-i128.cpp
===
--- clang/test/CodeGenCXX/debug-info-enum-i128.cpp
+++ clang/test/CodeGenCXX/debug-info-enum-i128.cpp

[PATCH] D111078: [AIX] Enable int128 in 64 bit mode

2021-10-05 Thread Jinsong Ji via Phabricator via cfe-commits
jsji added inline comments.



Comment at: llvm/test/CodeGen/PowerPC/int128_ldst.ll:31
 ; CHECK-NEXT:mr 3, 5
 ; CHECK-NEXT:blr
 entry:

hubert.reinterpretcast wrote:
> Confirming that this case matches GCC on AIX:
> ```
> ld 4,8(3)
> ld 3,0(3)
> blr
> ```
$ gcc -maix64 -S -O p128.c -o t.s; grep blr -B3 t.s
.check1:
ld 4,8(3)
ld 3,0(3)
blr



Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D111078

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


[PATCH] D111078: [AIX] Enable int128 in 64 bit mode

2021-10-04 Thread Jinsong Ji via Phabricator via cfe-commits
jsji created this revision.
jsji added reviewers: PowerPC, hubert.reinterpretcast, nemanjai.
jsji requested review of this revision.
Herald added projects: clang, LLVM.
Herald added subscribers: llvm-commits, cfe-commits.

This patch remove the override in AIX target,
so the int128 is enabled in 64 bit mode or with ForceEnableInt128.


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D111078

Files:
  clang/lib/Basic/Targets/OSTargets.h
  clang/test/Driver/types.c
  llvm/test/CodeGen/PowerPC/int128_ldst.ll


Index: llvm/test/CodeGen/PowerPC/int128_ldst.ll
===
--- llvm/test/CodeGen/PowerPC/int128_ldst.ll
+++ llvm/test/CodeGen/PowerPC/int128_ldst.ll
@@ -17,6 +17,9 @@
 ; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu \
 ; RUN:   -mcpu=pwr8  \
 ; RUN:   < %s | FileCheck %s --check-prefixes=CHECK,CHECK-PREP10,CHECK-P8
+; RUN: llc -verify-machineinstrs -mtriple=powerpc64-ibm-aix-xcoff \
+; RUN:   -mcpu=pwr8  \
+; RUN:   < %s | FileCheck %s --check-prefixes=CHECK,CHECK-PREP10,CHECK-P8
 
 ; Function Attrs: norecurse nounwind readonly uwtable willreturn
 define dso_local i128 @ld_0___int128___int128(i64 %ptr) {
Index: clang/test/Driver/types.c
===
--- clang/test/Driver/types.c
+++ clang/test/Driver/types.c
@@ -12,8 +12,8 @@
 // RUN: not %clang -c --target=powerpc-ibm-aix -fsyntax-only %s \
 // RUN: 2>&1 | FileCheck %s
 
-// RUN: not %clang -c --target=powerpc64-ibm-aix -fsyntax-only %s \
-// RUN: 2>&1 | FileCheck %s
+// RUN: %clang -c --target=powerpc64-ibm-aix -fsyntax-only %s \
+// RUN: 2>&1
 
 void a() {
   __int128_t s;
Index: clang/lib/Basic/Targets/OSTargets.h
===
--- clang/lib/Basic/Targets/OSTargets.h
+++ clang/lib/Basic/Targets/OSTargets.h
@@ -743,7 +743,6 @@
 
   // AIX sets FLT_EVAL_METHOD to be 1.
   unsigned getFloatEvalMethod() const override { return 1; }
-  bool hasInt128Type() const override { return false; }
 
   bool defaultsToAIXPowerAlignment() const override { return true; }
 };


Index: llvm/test/CodeGen/PowerPC/int128_ldst.ll
===
--- llvm/test/CodeGen/PowerPC/int128_ldst.ll
+++ llvm/test/CodeGen/PowerPC/int128_ldst.ll
@@ -17,6 +17,9 @@
 ; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu \
 ; RUN:   -mcpu=pwr8  \
 ; RUN:   < %s | FileCheck %s --check-prefixes=CHECK,CHECK-PREP10,CHECK-P8
+; RUN: llc -verify-machineinstrs -mtriple=powerpc64-ibm-aix-xcoff \
+; RUN:   -mcpu=pwr8  \
+; RUN:   < %s | FileCheck %s --check-prefixes=CHECK,CHECK-PREP10,CHECK-P8
 
 ; Function Attrs: norecurse nounwind readonly uwtable willreturn
 define dso_local i128 @ld_0___int128___int128(i64 %ptr) {
Index: clang/test/Driver/types.c
===
--- clang/test/Driver/types.c
+++ clang/test/Driver/types.c
@@ -12,8 +12,8 @@
 // RUN: not %clang -c --target=powerpc-ibm-aix -fsyntax-only %s \
 // RUN: 2>&1 | FileCheck %s
 
-// RUN: not %clang -c --target=powerpc64-ibm-aix -fsyntax-only %s \
-// RUN: 2>&1 | FileCheck %s
+// RUN: %clang -c --target=powerpc64-ibm-aix -fsyntax-only %s \
+// RUN: 2>&1
 
 void a() {
   __int128_t s;
Index: clang/lib/Basic/Targets/OSTargets.h
===
--- clang/lib/Basic/Targets/OSTargets.h
+++ clang/lib/Basic/Targets/OSTargets.h
@@ -743,7 +743,6 @@
 
   // AIX sets FLT_EVAL_METHOD to be 1.
   unsigned getFloatEvalMethod() const override { return 1; }
-  bool hasInt128Type() const override { return false; }
 
   bool defaultsToAIXPowerAlignment() const override { return true; }
 };
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D110955: [AIX] Don't pass namedsects in LTO mode

2021-10-01 Thread Jinsong Ji via Phabricator via cfe-commits
This revision was automatically updated to reflect the committed changes.
Closed by commit rG9c31969e8df2: [AIX] Dont pass namedsects in LTO mode 
(authored by jsji).

Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D110955

Files:
  clang/lib/Driver/ToolChains/AIX.cpp
  clang/test/Driver/aix-ld.c


Index: clang/test/Driver/aix-ld.c
===
--- clang/test/Driver/aix-ld.c
+++ clang/test/Driver/aix-ld.c
@@ -649,3 +649,58 @@
 // CHECK-LD64-SHARED-NOT: "--no-as-needed"
 // CHECK-LD64-SHARED: "-lm"
 // CHECK-LD64-SHARED: "-lc"
+
+// Check powerpc-ibm-aix7.3.0.0, -fprofile-generate
+// RUN: %clang -no-canonical-prefixes %s -### 2>&1 \
+// RUN:-resource-dir=%S/Inputs/resource_dir \
+// RUN:-static \
+// RUN:-fprofile-generate\
+// RUN:-target powerpc-ibm-aix7.3.0.0 \
+// RUN:--sysroot %S/Inputs/aix_ppc_tree \
+// RUN:-unwindlib=libunwind \
+// RUN:   | FileCheck --check-prefix=CHECK-PGO-NON-LTO %s
+// CHECK-PGO-NON-LTO-NOT: warning:
+// CHECK-PGO-NON-LTO: {{.*}}clang{{(.exe)?}}" "-cc1" "-triple" 
"powerpc-ibm-aix7.3.0.0"
+// CHECK-PGO-NON-LTO: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]"
+// CHECK-PGO-NON-LTO: "-isysroot" "[[SYSROOT:[^"]+]]"
+// CHECK-PGO-NON-LTO: "{{.*}}ld{{(.exe)?}}"
+// CHECK-PGO-NON-LTO: "-bdbg:namedsects"
+// CHECK-PGO-NON-LTO: "-b32"
+// CHECK-PGO-NON-LTO: "-bpT:0x1000" "-bpD:0x2000"
+// CHECK-PGO-NON-LTO: "[[SYSROOT]]/usr/lib{{/|}}crt0.o"
+// CHECK-PGO-NON-LTO-NOT: "-lc++"
+// CHECK-PGO-NON-LTO-NOT: "-lc++abi"
+// CHECK-PGO-NON-LTO: 
"[[RESOURCE_DIR]]{{/|}}lib{{/|}}aix{{/|}}libclang_rt.builtins-powerpc.a"
+// CHECK-PGO-NON-LTO-NOT: "--as-needed"
+// CHECK-PGO-NON-LTO-NOT: "-lunwind"
+// CHECK-PGO-NON-LTO-NOT: "--no-as-needed"
+// CHECK-PGO-NON-LTO-NOT: "-lm"
+// CHECK-PGO-NON-LTO: "-lc"
+
+// Check powerpc-ibm-aix7.2.5.3, -fprofile-generate, -flto
+// RUN: %clang -no-canonical-prefixes %s -### 2>&1 \
+// RUN:-resource-dir=%S/Inputs/resource_dir \
+// RUN:-static \
+// RUN:-fprofile-generate\
+// RUN:-flto\
+// RUN:-target powerpc-ibm-aix7.2.5.3 \
+// RUN:--sysroot %S/Inputs/aix_ppc_tree \
+// RUN:-unwindlib=libunwind \
+// RUN:   | FileCheck --check-prefix=CHECK-PGO-LTO %s
+// CHECK-PGO-LTO-NOT: warning:
+// CHECK-PGO-LTO: {{.*}}clang{{(.exe)?}}" "-cc1" "-triple" 
"powerpc-ibm-aix7.2.5.3"
+// CHECK-PGO-LTO: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]"
+// CHECK-PGO-LTO: "-isysroot" "[[SYSROOT:[^"]+]]"
+// CHECK-PGO-LTO: "{{.*}}ld{{(.exe)?}}"
+// CHECK-PGO-LTO-NOT: "-bdbg:namedsects"
+// CHECK-PGO-LTO: "-b32"
+// CHECK-PGO-LTO: "-bpT:0x1000" "-bpD:0x2000"
+// CHECK-PGO-LTO: "[[SYSROOT]]/usr/lib{{/|}}crt0.o"
+// CHECK-PGO-LTO-NOT: "-lc++"
+// CHECK-PGO-LTO-NOT: "-lc++abi"
+// CHECK-PGO-LTO: 
"[[RESOURCE_DIR]]{{/|}}lib{{/|}}aix{{/|}}libclang_rt.builtins-powerpc.a"
+// CHECK-PGO-LTO-NOT: "--as-needed"
+// CHECK-PGO-LTO-NOT: "-lunwind"
+// CHECK-PGO-LTO-NOT: "--no-as-needed"
+// CHECK-PGO-LTO-NOT: "-lm"
+// CHECK-PGO-LTO: "-lc"
Index: clang/lib/Driver/ToolChains/AIX.cpp
===
--- clang/lib/Driver/ToolChains/AIX.cpp
+++ clang/lib/Driver/ToolChains/AIX.cpp
@@ -98,8 +98,9 @@
 CmdArgs.push_back("-bnoentry");
   }
 
-  // Specify PGO linker option
-  if ((Args.hasFlag(options::OPT_fprofile_arcs, options::OPT_fno_profile_arcs,
+  // Specify PGO linker option without LTO
+  if (!D.isUsingLTO() &&
+  (Args.hasFlag(options::OPT_fprofile_arcs, options::OPT_fno_profile_arcs,
 false) ||
Args.hasFlag(options::OPT_fprofile_generate,
 options::OPT_fno_profile_generate, false) ||


Index: clang/test/Driver/aix-ld.c
===
--- clang/test/Driver/aix-ld.c
+++ clang/test/Driver/aix-ld.c
@@ -649,3 +649,58 @@
 // CHECK-LD64-SHARED-NOT: "--no-as-needed"
 // CHECK-LD64-SHARED: "-lm"
 // CHECK-LD64-SHARED: "-lc"
+
+// Check powerpc-ibm-aix7.3.0.0, -fprofile-generate
+// RUN: %clang -no-canonical-prefixes %s -### 2>&1 \
+// RUN:-resource-dir=%S/Inputs/resource_dir \
+// RUN:-static \
+// RUN:-fprofile-generate\
+// RUN:-target powerpc-ibm-aix7.3.0.0 \
+// RUN:--sysroot %S/Inputs/aix_ppc_tree \
+// RUN:-unwindlib=libunwind \
+// RUN:   | FileCheck --check-prefix=CHECK-PGO-NON-LTO %s
+// CHECK-PGO-NON-LTO-NOT: warning:
+// CHECK-PGO-NON-LTO: {{.*}}clang{{(.exe)?}}" "-cc1" "-triple" "powerpc-ibm-aix7.3.0.0"
+// CHECK-PGO-NON-LTO: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]"
+// CHECK-PGO-NON-LTO: "-isysroot" "[[SYSROOT:[^"]+]]"
+// CHECK-PGO-NON-LTO: "{{.*}}ld{{(.exe)?}}"
+// CHECK-PGO-NON-LTO: 

[PATCH] D110955: [AIX] Don't pass namedsects in LTO mode

2021-10-01 Thread Jinsong Ji via Phabricator via cfe-commits
jsji updated this revision to Diff 376595.
jsji added a comment.

Update.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D110955

Files:
  clang/lib/Driver/ToolChains/AIX.cpp
  clang/test/Driver/aix-ld.c


Index: clang/test/Driver/aix-ld.c
===
--- clang/test/Driver/aix-ld.c
+++ clang/test/Driver/aix-ld.c
@@ -649,3 +649,58 @@
 // CHECK-LD64-SHARED-NOT: "--no-as-needed"
 // CHECK-LD64-SHARED: "-lm"
 // CHECK-LD64-SHARED: "-lc"
+
+// Check powerpc-ibm-aix7.3.0.0, -fprofile-generate
+// RUN: %clang -no-canonical-prefixes %s -### 2>&1 \
+// RUN:-resource-dir=%S/Inputs/resource_dir \
+// RUN:-static \
+// RUN:-fprofile-generate\
+// RUN:-target powerpc-ibm-aix7.3.0.0 \
+// RUN:--sysroot %S/Inputs/aix_ppc_tree \
+// RUN:-unwindlib=libunwind \
+// RUN:   | FileCheck --check-prefix=CHECK-PGO-NON-LTO %s
+// CHECK-PGO-NON-LTO-NOT: warning:
+// CHECK-PGO-NON-LTO: {{.*}}clang{{(.exe)?}}" "-cc1" "-triple" 
"powerpc-ibm-aix7.3.0.0"
+// CHECK-PGO-NON-LTO: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]"
+// CHECK-PGO-NON-LTO: "-isysroot" "[[SYSROOT:[^"]+]]"
+// CHECK-PGO-NON-LTO: "{{.*}}ld{{(.exe)?}}"
+// CHECK-PGO-NON-LTO: "-bdbg:namedsects"
+// CHECK-PGO-NON-LTO: "-b32"
+// CHECK-PGO-NON-LTO: "-bpT:0x1000" "-bpD:0x2000"
+// CHECK-PGO-NON-LTO: "[[SYSROOT]]/usr/lib{{/|}}crt0.o"
+// CHECK-PGO-NON-LTO-NOT: "-lc++"
+// CHECK-PGO-NON-LTO-NOT: "-lc++abi"
+// CHECK-PGO-NON-LTO: 
"[[RESOURCE_DIR]]{{/|}}lib{{/|}}aix{{/|}}libclang_rt.builtins-powerpc.a"
+// CHECK-PGO-NON-LTO-NOT: "--as-needed"
+// CHECK-PGO-NON-LTO-NOT: "-lunwind"
+// CHECK-PGO-NON-LTO-NOT: "--no-as-needed"
+// CHECK-PGO-NON-LTO-NOT: "-lm"
+// CHECK-PGO-NON-LTO: "-lc"
+
+// Check powerpc-ibm-aix7.2.5.3, -fprofile-generate, -flto
+// RUN: %clang -no-canonical-prefixes %s -### 2>&1 \
+// RUN:-resource-dir=%S/Inputs/resource_dir \
+// RUN:-static \
+// RUN:-fprofile-generate\
+// RUN:-flto\
+// RUN:-target powerpc-ibm-aix7.2.5.3 \
+// RUN:--sysroot %S/Inputs/aix_ppc_tree \
+// RUN:-unwindlib=libunwind \
+// RUN:   | FileCheck --check-prefix=CHECK-PGO-LTO %s
+// CHECK-PGO-LTO-NOT: warning:
+// CHECK-PGO-LTO: {{.*}}clang{{(.exe)?}}" "-cc1" "-triple" 
"powerpc-ibm-aix7.2.5.3"
+// CHECK-PGO-LTO: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]"
+// CHECK-PGO-LTO: "-isysroot" "[[SYSROOT:[^"]+]]"
+// CHECK-PGO-LTO: "{{.*}}ld{{(.exe)?}}"
+// CHECK-PGO-LTO-NOT: "-bdbg:namedsects"
+// CHECK-PGO-LTO: "-b32"
+// CHECK-PGO-LTO: "-bpT:0x1000" "-bpD:0x2000"
+// CHECK-PGO-LTO: "[[SYSROOT]]/usr/lib{{/|}}crt0.o"
+// CHECK-PGO-LTO-NOT: "-lc++"
+// CHECK-PGO-LTO-NOT: "-lc++abi"
+// CHECK-PGO-LTO: 
"[[RESOURCE_DIR]]{{/|}}lib{{/|}}aix{{/|}}libclang_rt.builtins-powerpc.a"
+// CHECK-PGO-LTO-NOT: "--as-needed"
+// CHECK-PGO-LTO-NOT: "-lunwind"
+// CHECK-PGO-LTO-NOT: "--no-as-needed"
+// CHECK-PGO-LTO-NOT: "-lm"
+// CHECK-PGO-LTO: "-lc"
Index: clang/lib/Driver/ToolChains/AIX.cpp
===
--- clang/lib/Driver/ToolChains/AIX.cpp
+++ clang/lib/Driver/ToolChains/AIX.cpp
@@ -98,8 +98,9 @@
 CmdArgs.push_back("-bnoentry");
   }
 
-  // Specify PGO linker option
-  if ((Args.hasFlag(options::OPT_fprofile_arcs, options::OPT_fno_profile_arcs,
+  // Specify PGO linker option without LTO
+  if (!D.isUsingLTO() &&
+  (Args.hasFlag(options::OPT_fprofile_arcs, options::OPT_fno_profile_arcs,
 false) ||
Args.hasFlag(options::OPT_fprofile_generate,
 options::OPT_fno_profile_generate, false) ||


Index: clang/test/Driver/aix-ld.c
===
--- clang/test/Driver/aix-ld.c
+++ clang/test/Driver/aix-ld.c
@@ -649,3 +649,58 @@
 // CHECK-LD64-SHARED-NOT: "--no-as-needed"
 // CHECK-LD64-SHARED: "-lm"
 // CHECK-LD64-SHARED: "-lc"
+
+// Check powerpc-ibm-aix7.3.0.0, -fprofile-generate
+// RUN: %clang -no-canonical-prefixes %s -### 2>&1 \
+// RUN:-resource-dir=%S/Inputs/resource_dir \
+// RUN:-static \
+// RUN:-fprofile-generate\
+// RUN:-target powerpc-ibm-aix7.3.0.0 \
+// RUN:--sysroot %S/Inputs/aix_ppc_tree \
+// RUN:-unwindlib=libunwind \
+// RUN:   | FileCheck --check-prefix=CHECK-PGO-NON-LTO %s
+// CHECK-PGO-NON-LTO-NOT: warning:
+// CHECK-PGO-NON-LTO: {{.*}}clang{{(.exe)?}}" "-cc1" "-triple" "powerpc-ibm-aix7.3.0.0"
+// CHECK-PGO-NON-LTO: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]"
+// CHECK-PGO-NON-LTO: "-isysroot" "[[SYSROOT:[^"]+]]"
+// CHECK-PGO-NON-LTO: "{{.*}}ld{{(.exe)?}}"
+// CHECK-PGO-NON-LTO: "-bdbg:namedsects"
+// CHECK-PGO-NON-LTO: "-b32"
+// CHECK-PGO-NON-LTO: "-bpT:0x1000" 

[PATCH] D110955: [AIX] Don't pass namedsects in LTO mode

2021-10-01 Thread Jinsong Ji via Phabricator via cfe-commits
jsji created this revision.
jsji added reviewers: PowerPC, Whitney.
Herald added a subscriber: inglorion.
jsji requested review of this revision.
Herald added a project: clang.
Herald added a subscriber: cfe-commits.

LTO don't need binder option , don't pass it in LTO mode.


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D110955

Files:
  clang/lib/Driver/ToolChains/AIX.cpp
  clang/test/Driver/aix-ld.c


Index: clang/test/Driver/aix-ld.c
===
--- clang/test/Driver/aix-ld.c
+++ clang/test/Driver/aix-ld.c
@@ -649,3 +649,60 @@
 // CHECK-LD64-SHARED-NOT: "--no-as-needed"
 // CHECK-LD64-SHARED: "-lm"
 // CHECK-LD64-SHARED: "-lc"
+
+// Check powerpc-ibm-aix7.3.0.0, -fprofile-generate
+// RUN: %clang -no-canonical-prefixes %s -### 2>&1 \
+// RUN:-resource-dir=%S/Inputs/resource_dir \
+// RUN:-static \
+// RUN:-fprofile-generate\
+// RUN:-target powerpc-ibm-aix7.3.0.0 \
+// RUN:--sysroot %S/Inputs/aix_ppc_tree \
+// RUN:-unwindlib=libunwind \
+// RUN:   | FileCheck --check-prefix=CHECK-PGO-NON-LTO %s
+// CHECK-PGO-NON-LTO-NOT: warning:
+// CHECK-PGO-NON-LTO: {{.*}}clang{{(.exe)?}}" "-cc1" "-triple" 
"powerpc-ibm-aix7.3.0.0"
+// CHECK-PGO-NON-LTO: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]"
+// CHECK-PGO-NON-LTO: "-isysroot" "[[SYSROOT:[^"]+]]"
+// CHECK-PGO-NON-LTO: "{{.*}}ld{{(.exe)?}}"
+// CHECK-PGO-NON-LTO: "-bdbg:namedsects"
+// CHECK-PGO-NON-LTO: "-b32"
+// CHECK-PGO-NON-LTO: "-bpT:0x1000" "-bpD:0x2000"
+// CHECK-PGO-NON-LTO: "[[SYSROOT]]/usr/lib{{/|}}crt0.o"
+// CHECK-PGO-NON-LTO: "[[SYSROOT]]/usr/lib{{/|}}crti.o"
+// CHECK-PGO-NON-LTO-NOT: "-lc++"
+// CHECK-PGO-NON-LTO-NOT: "-lc++abi"
+// CHECK-PGO-NON-LTO: 
"[[RESOURCE_DIR]]{{/|}}lib{{/|}}aix{{/|}}libclang_rt.builtins-powerpc.a"
+// CHECK-PGO-NON-LTO-NOT: "--as-needed"
+// CHECK-PGO-NON-LTO-NOT: "-lunwind"
+// CHECK-PGO-NON-LTO-NOT: "--no-as-needed"
+// CHECK-PGO-NON-LTO-NOT: "-lm"
+// CHECK-PGO-NON-LTO: "-lc"
+
+// Check powerpc-ibm-aix7.2.5.3, -fprofile-generate, -flto
+// RUN: %clang -no-canonical-prefixes %s -### 2>&1 \
+// RUN:-resource-dir=%S/Inputs/resource_dir \
+// RUN:-static \
+// RUN:-fprofile-generate\
+// RUN:-flto\
+// RUN:-target powerpc-ibm-aix7.2.5.3 \
+// RUN:--sysroot %S/Inputs/aix_ppc_tree \
+// RUN:-unwindlib=libunwind \
+// RUN:   | FileCheck --check-prefix=CHECK-PGO-LTO %s
+// CHECK-PGO-LTO-NOT: warning:
+// CHECK-PGO-LTO: {{.*}}clang{{(.exe)?}}" "-cc1" "-triple" 
"powerpc-ibm-aix7.2.5.3"
+// CHECK-PGO-LTO: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]"
+// CHECK-PGO-LTO: "-isysroot" "[[SYSROOT:[^"]+]]"
+// CHECK-PGO-LTO: "{{.*}}ld{{(.exe)?}}"
+// CHECK-PGO-LTO-NOT: "-bdbg:namedsects"
+// CHECK-PGO-LTO: "-b32"
+// CHECK-PGO-LTO: "-bpT:0x1000" "-bpD:0x2000"
+// CHECK-PGO-LTO: "[[SYSROOT]]/usr/lib{{/|}}crt0.o"
+// CHECK-PGO-LTO: "[[SYSROOT]]/usr/lib{{/|}}crti.o"
+// CHECK-PGO-LTO-NOT: "-lc++"
+// CHECK-PGO-LTO-NOT: "-lc++abi"
+// CHECK-PGO-LTO: 
"[[RESOURCE_DIR]]{{/|}}lib{{/|}}aix{{/|}}libclang_rt.builtins-powerpc.a"
+// CHECK-PGO-LTO-NOT: "--as-needed"
+// CHECK-PGO-LTO-NOT: "-lunwind"
+// CHECK-PGO-LTO-NOT: "--no-as-needed"
+// CHECK-PGO-LTO-NOT: "-lm"
+// CHECK-PGO-LTO: "-lc"
Index: clang/lib/Driver/ToolChains/AIX.cpp
===
--- clang/lib/Driver/ToolChains/AIX.cpp
+++ clang/lib/Driver/ToolChains/AIX.cpp
@@ -98,8 +98,9 @@
 CmdArgs.push_back("-bnoentry");
   }
 
-  // Specify PGO linker option
-  if ((Args.hasFlag(options::OPT_fprofile_arcs, options::OPT_fno_profile_arcs,
+  // Specify PGO linker option without LTO
+  if (!D.isUsingLTO() &&
+  (Args.hasFlag(options::OPT_fprofile_arcs, options::OPT_fno_profile_arcs,
 false) ||
Args.hasFlag(options::OPT_fprofile_generate,
 options::OPT_fno_profile_generate, false) ||


Index: clang/test/Driver/aix-ld.c
===
--- clang/test/Driver/aix-ld.c
+++ clang/test/Driver/aix-ld.c
@@ -649,3 +649,60 @@
 // CHECK-LD64-SHARED-NOT: "--no-as-needed"
 // CHECK-LD64-SHARED: "-lm"
 // CHECK-LD64-SHARED: "-lc"
+
+// Check powerpc-ibm-aix7.3.0.0, -fprofile-generate
+// RUN: %clang -no-canonical-prefixes %s -### 2>&1 \
+// RUN:-resource-dir=%S/Inputs/resource_dir \
+// RUN:-static \
+// RUN:-fprofile-generate\
+// RUN:-target powerpc-ibm-aix7.3.0.0 \
+// RUN:--sysroot %S/Inputs/aix_ppc_tree \
+// RUN:-unwindlib=libunwind \
+// RUN:   | FileCheck --check-prefix=CHECK-PGO-NON-LTO %s
+// CHECK-PGO-NON-LTO-NOT: warning:
+// CHECK-PGO-NON-LTO: {{.*}}clang{{(.exe)?}}" "-cc1" "-triple" "powerpc-ibm-aix7.3.0.0"
+// CHECK-PGO-NON-LTO: "-resource-dir" 

[PATCH] D110671: [AIX] Enable PGO without LTO

2021-09-28 Thread Jinsong Ji 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 rG1e48951c736c: [AIX] Enable PGO without LTO (authored by 
jsji).

Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D110671

Files:
  clang/lib/Driver/ToolChains/AIX.cpp
  clang/lib/Driver/ToolChains/Clang.cpp
  clang/test/Driver/unsupported-option.c


Index: clang/test/Driver/unsupported-option.c
===
--- clang/test/Driver/unsupported-option.c
+++ clang/test/Driver/unsupported-option.c
@@ -14,14 +14,6 @@
 // RUN: FileCheck %s --check-prefix=AIX-PROFILE-SAMPLE
 // AIX-PROFILE-SAMPLE: error: unsupported option '-fprofile-sample-use=' for 
target
 
-// RUN: not %clang -fprofile-generate --target=powerpc-ibm-aix %s 2>&1 | \
-// RUN: FileCheck %s --check-prefix=AIX-PROFILE-LTO
-// AIX-PROFILE-LTO: error: invalid argument '-fprofile-generate' only allowed 
with '-flto'
-
-// RUN: not %clang -fprofile-generate -flto=thin --target=powerpc64-ibm-aix %s 
2>&1 | \
-// RUN: FileCheck %s --check-prefix=AIX-PROFILE-THINLTO
-// AIX-PROFILE-THINLTO: error: invalid argument '-fprofile-generate' only 
allowed with '-flto'
-
 // RUN: not %clang --target=powerpc-ibm-aix %s -mlong-double-128 2>&1 | \
 // RUN: FileCheck %s --check-prefix=AIX-LONGDOUBLE128-ERR
 // AIX-LONGDOUBLE128-ERR: error: unsupported option '-mlong-double-128' for 
target 'powerpc-ibm-aix'
Index: clang/lib/Driver/ToolChains/Clang.cpp
===
--- clang/lib/Driver/ToolChains/Clang.cpp
+++ clang/lib/Driver/ToolChains/Clang.cpp
@@ -795,11 +795,6 @@
   }
 
   if (TC.getTriple().isOSAIX()) {
-if (PGOGenerateArg)
-  if (!D.isUsingLTO(false /*IsDeviceOffloadAction */) ||
-  D.getLTOMode() != LTOK_Full)
-D.Diag(clang::diag::err_drv_argument_only_allowed_with)
-<< PGOGenerateArg->getSpelling() << "-flto";
 if (ProfileGenerateArg)
   D.Diag(diag::err_drv_unsupported_opt_for_target)
   << ProfileGenerateArg->getSpelling() << TC.getTriple().str();
Index: clang/lib/Driver/ToolChains/AIX.cpp
===
--- clang/lib/Driver/ToolChains/AIX.cpp
+++ clang/lib/Driver/ToolChains/AIX.cpp
@@ -98,6 +98,25 @@
 CmdArgs.push_back("-bnoentry");
   }
 
+  // Specify PGO linker option
+  if ((Args.hasFlag(options::OPT_fprofile_arcs, options::OPT_fno_profile_arcs,
+false) ||
+   Args.hasFlag(options::OPT_fprofile_generate,
+options::OPT_fno_profile_generate, false) ||
+   Args.hasFlag(options::OPT_fprofile_generate_EQ,
+options::OPT_fno_profile_generate, false) ||
+   Args.hasFlag(options::OPT_fprofile_instr_generate,
+options::OPT_fno_profile_instr_generate, false) ||
+   Args.hasFlag(options::OPT_fprofile_instr_generate_EQ,
+options::OPT_fno_profile_instr_generate, false) ||
+   Args.hasFlag(options::OPT_fcs_profile_generate,
+options::OPT_fno_profile_generate, false) ||
+   Args.hasFlag(options::OPT_fcs_profile_generate_EQ,
+options::OPT_fno_profile_generate, false) ||
+   Args.hasArg(options::OPT_fcreate_profile) ||
+   Args.hasArg(options::OPT_coverage)))
+CmdArgs.push_back("-bdbg:namedcsects");
+
   // Specify linker output file.
   assert((Output.isFilename() || Output.isNothing()) && "Invalid output.");
   if (Output.isFilename()) {


Index: clang/test/Driver/unsupported-option.c
===
--- clang/test/Driver/unsupported-option.c
+++ clang/test/Driver/unsupported-option.c
@@ -14,14 +14,6 @@
 // RUN: FileCheck %s --check-prefix=AIX-PROFILE-SAMPLE
 // AIX-PROFILE-SAMPLE: error: unsupported option '-fprofile-sample-use=' for target
 
-// RUN: not %clang -fprofile-generate --target=powerpc-ibm-aix %s 2>&1 | \
-// RUN: FileCheck %s --check-prefix=AIX-PROFILE-LTO
-// AIX-PROFILE-LTO: error: invalid argument '-fprofile-generate' only allowed with '-flto'
-
-// RUN: not %clang -fprofile-generate -flto=thin --target=powerpc64-ibm-aix %s 2>&1 | \
-// RUN: FileCheck %s --check-prefix=AIX-PROFILE-THINLTO
-// AIX-PROFILE-THINLTO: error: invalid argument '-fprofile-generate' only allowed with '-flto'
-
 // RUN: not %clang --target=powerpc-ibm-aix %s -mlong-double-128 2>&1 | \
 // RUN: FileCheck %s --check-prefix=AIX-LONGDOUBLE128-ERR
 // AIX-LONGDOUBLE128-ERR: error: unsupported option '-mlong-double-128' for target 'powerpc-ibm-aix'
Index: clang/lib/Driver/ToolChains/Clang.cpp
===
--- clang/lib/Driver/ToolChains/Clang.cpp
+++ clang/lib/Driver/ToolChains/Clang.cpp
@@ -795,11 +795,6 @@
   }
 
   if (TC.getTriple().isOSAIX()) {
-if 

[PATCH] D110671: [AIX] Enable PGO without LTO

2021-09-28 Thread Jinsong Ji via Phabricator via cfe-commits
jsji created this revision.
jsji added reviewers: PowerPC, Whitney.
Herald added subscribers: wenlei, inglorion.
jsji requested review of this revision.
Herald added a project: clang.
Herald added a subscriber: cfe-commits.

On AIX, we relied on LTO to merge the csects for profiling data/counter
sections.

AIX binder now get the namedcsect support to support the merging,
so now we can enable PGO without LTO with the new binder.


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D110671

Files:
  clang/lib/Driver/ToolChains/AIX.cpp
  clang/lib/Driver/ToolChains/Clang.cpp
  clang/test/Driver/unsupported-option.c


Index: clang/test/Driver/unsupported-option.c
===
--- clang/test/Driver/unsupported-option.c
+++ clang/test/Driver/unsupported-option.c
@@ -14,14 +14,6 @@
 // RUN: FileCheck %s --check-prefix=AIX-PROFILE-SAMPLE
 // AIX-PROFILE-SAMPLE: error: unsupported option '-fprofile-sample-use=' for 
target
 
-// RUN: not %clang -fprofile-generate --target=powerpc-ibm-aix %s 2>&1 | \
-// RUN: FileCheck %s --check-prefix=AIX-PROFILE-LTO
-// AIX-PROFILE-LTO: error: invalid argument '-fprofile-generate' only allowed 
with '-flto'
-
-// RUN: not %clang -fprofile-generate -flto=thin --target=powerpc64-ibm-aix %s 
2>&1 | \
-// RUN: FileCheck %s --check-prefix=AIX-PROFILE-THINLTO
-// AIX-PROFILE-THINLTO: error: invalid argument '-fprofile-generate' only 
allowed with '-flto'
-
 // RUN: not %clang --target=powerpc-ibm-aix %s -mlong-double-128 2>&1 | \
 // RUN: FileCheck %s --check-prefix=AIX-LONGDOUBLE128-ERR
 // AIX-LONGDOUBLE128-ERR: error: unsupported option '-mlong-double-128' for 
target 'powerpc-ibm-aix'
Index: clang/lib/Driver/ToolChains/Clang.cpp
===
--- clang/lib/Driver/ToolChains/Clang.cpp
+++ clang/lib/Driver/ToolChains/Clang.cpp
@@ -795,11 +795,6 @@
   }
 
   if (TC.getTriple().isOSAIX()) {
-if (PGOGenerateArg)
-  if (!D.isUsingLTO(false /*IsDeviceOffloadAction */) ||
-  D.getLTOMode() != LTOK_Full)
-D.Diag(clang::diag::err_drv_argument_only_allowed_with)
-<< PGOGenerateArg->getSpelling() << "-flto";
 if (ProfileGenerateArg)
   D.Diag(diag::err_drv_unsupported_opt_for_target)
   << ProfileGenerateArg->getSpelling() << TC.getTriple().str();
Index: clang/lib/Driver/ToolChains/AIX.cpp
===
--- clang/lib/Driver/ToolChains/AIX.cpp
+++ clang/lib/Driver/ToolChains/AIX.cpp
@@ -98,6 +98,25 @@
 CmdArgs.push_back("-bnoentry");
   }
 
+  // Specify PGO linker option
+  if ((Args.hasFlag(options::OPT_fprofile_arcs, options::OPT_fno_profile_arcs,
+false) ||
+   Args.hasFlag(options::OPT_fprofile_generate,
+options::OPT_fno_profile_generate, false) ||
+   Args.hasFlag(options::OPT_fprofile_generate_EQ,
+options::OPT_fno_profile_generate, false) ||
+   Args.hasFlag(options::OPT_fprofile_instr_generate,
+options::OPT_fno_profile_instr_generate, false) ||
+   Args.hasFlag(options::OPT_fprofile_instr_generate_EQ,
+options::OPT_fno_profile_instr_generate, false) ||
+   Args.hasFlag(options::OPT_fcs_profile_generate,
+options::OPT_fno_profile_generate, false) ||
+   Args.hasFlag(options::OPT_fcs_profile_generate_EQ,
+options::OPT_fno_profile_generate, false) ||
+   Args.hasArg(options::OPT_fcreate_profile) ||
+   Args.hasArg(options::OPT_coverage)))
+CmdArgs.push_back("-bdbg:namedcsects");
+
   // Specify linker output file.
   assert((Output.isFilename() || Output.isNothing()) && "Invalid output.");
   if (Output.isFilename()) {


Index: clang/test/Driver/unsupported-option.c
===
--- clang/test/Driver/unsupported-option.c
+++ clang/test/Driver/unsupported-option.c
@@ -14,14 +14,6 @@
 // RUN: FileCheck %s --check-prefix=AIX-PROFILE-SAMPLE
 // AIX-PROFILE-SAMPLE: error: unsupported option '-fprofile-sample-use=' for target
 
-// RUN: not %clang -fprofile-generate --target=powerpc-ibm-aix %s 2>&1 | \
-// RUN: FileCheck %s --check-prefix=AIX-PROFILE-LTO
-// AIX-PROFILE-LTO: error: invalid argument '-fprofile-generate' only allowed with '-flto'
-
-// RUN: not %clang -fprofile-generate -flto=thin --target=powerpc64-ibm-aix %s 2>&1 | \
-// RUN: FileCheck %s --check-prefix=AIX-PROFILE-THINLTO
-// AIX-PROFILE-THINLTO: error: invalid argument '-fprofile-generate' only allowed with '-flto'
-
 // RUN: not %clang --target=powerpc-ibm-aix %s -mlong-double-128 2>&1 | \
 // RUN: FileCheck %s --check-prefix=AIX-LONGDOUBLE128-ERR
 // AIX-LONGDOUBLE128-ERR: error: unsupported option '-mlong-double-128' for target 'powerpc-ibm-aix'
Index: clang/lib/Driver/ToolChains/Clang.cpp
===
--- 

[PATCH] D110422: [AIX] Change the linkage of profiling counter/data to be private

2021-09-28 Thread Jinsong Ji 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 rG25c30324e953: [AIX] Change the linkage of profiling 
counter/data to be private (authored by jsji).

Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D110422

Files:
  clang/test/Profile/cxx-templates.cpp
  llvm/lib/Transforms/Instrumentation/InstrProfiling.cpp
  llvm/test/Instrumentation/InstrProfiling/profiling.ll


Index: llvm/test/Instrumentation/InstrProfiling/profiling.ll
===
--- llvm/test/Instrumentation/InstrProfiling/profiling.ll
+++ llvm/test/Instrumentation/InstrProfiling/profiling.ll
@@ -45,8 +45,8 @@
 ; MACHO: @__profd_foo_weak = weak hidden global
 ; COFF: @__profc_foo_weak = weak hidden global
 ; COFF: @__profd_foo_weak = private global
-; XCOFF: @__profc_foo_weak = weak hidden global
-; XCOFF: @__profd_foo_weak = weak hidden global
+; XCOFF: @__profc_foo_weak = private global
+; XCOFF: @__profd_foo_weak = private global
 define weak void @foo_weak() {
   call void @llvm.instrprof.increment(i8* getelementptr inbounds ([8 x i8], [8 
x i8]* @__profn_foo_weak, i32 0, i32 0), i64 0, i32 1, i32 0)
   ret void
@@ -71,8 +71,8 @@
 ; MACHO: @__profd_foo_inline = linkonce_odr hidden global
 ; COFF: @__profc_foo_inline = linkonce_odr hidden global{{.*}} section 
".lprfc$M", align 8
 ; COFF: @__profd_foo_inline = private global{{.*}} section ".lprfd$M", align 8
-; XCOFF: @__profc_foo_inline = linkonce_odr hidden global
-; XCOFF: @__profd_foo_inline = linkonce_odr hidden global
+; XCOFF: @__profc_foo_inline = private global
+; XCOFF: @__profd_foo_inline = private global
 define linkonce_odr void @foo_inline() {
   call void @llvm.instrprof.increment(i8* getelementptr inbounds ([10 x i8], 
[10 x i8]* @__profn_foo_inline, i32 0, i32 0), i64 0, i32 1, i32 0)
   ret void
@@ -84,8 +84,8 @@
 ; MACHO: @__profd_foo_extern = linkonce_odr hidden global
 ; COFF: @__profc_foo_extern = linkonce_odr hidden global {{.*}}section 
".lprfc$M", comdat, align 8
 ; COFF: @__profd_foo_extern = private global {{.*}}section ".lprfd$M", 
comdat($__profc_foo_extern), align 8
-; XCOFF: @__profc_foo_extern = linkonce_odr hidden global
-; XCOFF: @__profd_foo_extern = linkonce_odr hidden global
+; XCOFF: @__profc_foo_extern = private global
+; XCOFF: @__profd_foo_extern = private global
 define available_externally void @foo_extern() {
   call void @llvm.instrprof.increment(i8* getelementptr inbounds ([10 x i8], 
[10 x i8]* @__profn_foo_extern, i32 0, i32 0), i64 0, i32 1, i32 0)
   ret void
Index: llvm/lib/Transforms/Instrumentation/InstrProfiling.cpp
===
--- llvm/lib/Transforms/Instrumentation/InstrProfiling.cpp
+++ llvm/lib/Transforms/Instrumentation/InstrProfiling.cpp
@@ -862,6 +862,15 @@
   GlobalValue::LinkageTypes Linkage = NamePtr->getLinkage();
   GlobalValue::VisibilityTypes Visibility = NamePtr->getVisibility();
 
+  // Due to the limitation of binder as of 2021/09/28, the duplicate weak
+  // symbols in the same csect won't be discarded. When there are duplicate 
weak
+  // symbols, we can NOT guarantee that the relocations get resolved to the
+  // intended weak symbol, so we can not ensure the correctness of the relative
+  // CounterPtr, so we have to use private linkage for counter and data 
symbols.
+  if (TT.isOSBinFormatXCOFF()) {
+Linkage = GlobalValue::PrivateLinkage;
+Visibility = GlobalValue::DefaultVisibility;
+  }
   // Move the name variable to the right section. Place them in a COMDAT group
   // if the associated function is a COMDAT. This will make sure that only one
   // copy of counters of the COMDAT function will be emitted after linking. 
Keep
Index: clang/test/Profile/cxx-templates.cpp
===
--- clang/test/Profile/cxx-templates.cpp
+++ clang/test/Profile/cxx-templates.cpp
@@ -10,8 +10,10 @@
 // RUN: FileCheck --input-file=%tuse -check-prefix=T0USE -check-prefix=ALL %s
 // RUN: FileCheck --input-file=%tuse -check-prefix=T100USE -check-prefix=ALL %s
 
-// T0GEN: @[[T0C:__profc__Z4loopILj0EEvv]] = linkonce_odr 
{{(hidden|dso_local)}} global [2 x i64] zeroinitializer
-// T100GEN: @[[T100C:__profc__Z4loopILj100EEvv]] = linkonce_odr 
{{(hidden|dso_local)}} global [2 x i64] zeroinitializer
+// The linkage can be target dependent, so accept all linkage here,
+// the linkage tests for different target are in 
llvm/test/Instrumentation/InstrProfiling/profiling.ll
+// T0GEN: @[[T0C:__profc__Z4loopILj0EEvv]] = {{.*}} global [2 x i64] 
zeroinitializer
+// T100GEN: @[[T100C:__profc__Z4loopILj100EEvv]] = {{.*}} global [2 x i64] 
zeroinitializer
 
 // T0GEN-LABEL: define linkonce_odr {{.*}}void @_Z4loopILj0EEvv()
 // T0USE-LABEL: define linkonce_odr {{.*}}void @_Z4loopILj0EEvv()


Index: 

[PATCH] D110422: [AIX] Change the linkage of profiling counter/data to be private

2021-09-28 Thread Jinsong Ji via Phabricator via cfe-commits
jsji added a comment.

@MaskRay Thank you so much for your review and discussion!


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D110422

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


[PATCH] D110422: [AIX] Change the linkage of profiling counter/data to be private

2021-09-28 Thread Jinsong Ji via Phabricator via cfe-commits
jsji updated this revision to Diff 375716.
jsji added a comment.

Remove empty line.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D110422

Files:
  clang/test/Profile/cxx-templates.cpp
  llvm/lib/Transforms/Instrumentation/InstrProfiling.cpp
  llvm/test/Instrumentation/InstrProfiling/profiling.ll


Index: llvm/test/Instrumentation/InstrProfiling/profiling.ll
===
--- llvm/test/Instrumentation/InstrProfiling/profiling.ll
+++ llvm/test/Instrumentation/InstrProfiling/profiling.ll
@@ -45,8 +45,8 @@
 ; MACHO: @__profd_foo_weak = weak hidden global
 ; COFF: @__profc_foo_weak = weak hidden global
 ; COFF: @__profd_foo_weak = private global
-; XCOFF: @__profc_foo_weak = weak hidden global
-; XCOFF: @__profd_foo_weak = weak hidden global
+; XCOFF: @__profc_foo_weak = private global
+; XCOFF: @__profd_foo_weak = private global
 define weak void @foo_weak() {
   call void @llvm.instrprof.increment(i8* getelementptr inbounds ([8 x i8], [8 
x i8]* @__profn_foo_weak, i32 0, i32 0), i64 0, i32 1, i32 0)
   ret void
@@ -71,8 +71,8 @@
 ; MACHO: @__profd_foo_inline = linkonce_odr hidden global
 ; COFF: @__profc_foo_inline = linkonce_odr hidden global{{.*}} section 
".lprfc$M", align 8
 ; COFF: @__profd_foo_inline = private global{{.*}} section ".lprfd$M", align 8
-; XCOFF: @__profc_foo_inline = linkonce_odr hidden global
-; XCOFF: @__profd_foo_inline = linkonce_odr hidden global
+; XCOFF: @__profc_foo_inline = private global
+; XCOFF: @__profd_foo_inline = private global
 define linkonce_odr void @foo_inline() {
   call void @llvm.instrprof.increment(i8* getelementptr inbounds ([10 x i8], 
[10 x i8]* @__profn_foo_inline, i32 0, i32 0), i64 0, i32 1, i32 0)
   ret void
@@ -84,8 +84,8 @@
 ; MACHO: @__profd_foo_extern = linkonce_odr hidden global
 ; COFF: @__profc_foo_extern = linkonce_odr hidden global {{.*}}section 
".lprfc$M", comdat, align 8
 ; COFF: @__profd_foo_extern = private global {{.*}}section ".lprfd$M", 
comdat($__profc_foo_extern), align 8
-; XCOFF: @__profc_foo_extern = linkonce_odr hidden global
-; XCOFF: @__profd_foo_extern = linkonce_odr hidden global
+; XCOFF: @__profc_foo_extern = private global
+; XCOFF: @__profd_foo_extern = private global
 define available_externally void @foo_extern() {
   call void @llvm.instrprof.increment(i8* getelementptr inbounds ([10 x i8], 
[10 x i8]* @__profn_foo_extern, i32 0, i32 0), i64 0, i32 1, i32 0)
   ret void
Index: llvm/lib/Transforms/Instrumentation/InstrProfiling.cpp
===
--- llvm/lib/Transforms/Instrumentation/InstrProfiling.cpp
+++ llvm/lib/Transforms/Instrumentation/InstrProfiling.cpp
@@ -862,6 +862,15 @@
   GlobalValue::LinkageTypes Linkage = NamePtr->getLinkage();
   GlobalValue::VisibilityTypes Visibility = NamePtr->getVisibility();
 
+  // Due to the limitation of binder as of 2021/09/28, the duplicate weak
+  // symbols in the same csect won't be discarded. When there are duplicate 
weak
+  // symbols, we can NOT guarantee that the relocations get resolved to the
+  // intended weak symbol, so we can not ensure the correctness of the relative
+  // CounterPtr, so we have to use private linkage for counter and data 
symbols.
+  if (TT.isOSBinFormatXCOFF()) {
+Linkage = GlobalValue::PrivateLinkage;
+Visibility = GlobalValue::DefaultVisibility;
+  }
   // Move the name variable to the right section. Place them in a COMDAT group
   // if the associated function is a COMDAT. This will make sure that only one
   // copy of counters of the COMDAT function will be emitted after linking. 
Keep
Index: clang/test/Profile/cxx-templates.cpp
===
--- clang/test/Profile/cxx-templates.cpp
+++ clang/test/Profile/cxx-templates.cpp
@@ -10,8 +10,10 @@
 // RUN: FileCheck --input-file=%tuse -check-prefix=T0USE -check-prefix=ALL %s
 // RUN: FileCheck --input-file=%tuse -check-prefix=T100USE -check-prefix=ALL %s
 
-// T0GEN: @[[T0C:__profc__Z4loopILj0EEvv]] = linkonce_odr 
{{(hidden|dso_local)}} global [2 x i64] zeroinitializer
-// T100GEN: @[[T100C:__profc__Z4loopILj100EEvv]] = linkonce_odr 
{{(hidden|dso_local)}} global [2 x i64] zeroinitializer
+// The linkage can be target dependent, so accept all linkage here,
+// the linkage tests for different target are in 
llvm/test/Instrumentation/InstrProfiling/profiling.ll
+// T0GEN: @[[T0C:__profc__Z4loopILj0EEvv]] = {{.*}} global [2 x i64] 
zeroinitializer
+// T100GEN: @[[T100C:__profc__Z4loopILj100EEvv]] = {{.*}} global [2 x i64] 
zeroinitializer
 
 // T0GEN-LABEL: define linkonce_odr {{.*}}void @_Z4loopILj0EEvv()
 // T0USE-LABEL: define linkonce_odr {{.*}}void @_Z4loopILj0EEvv()


Index: llvm/test/Instrumentation/InstrProfiling/profiling.ll
===
--- 

[PATCH] D110422: [AIX] Change the linkage of profiling counter/data to be private

2021-09-28 Thread Jinsong Ji via Phabricator via cfe-commits
jsji updated this revision to Diff 375709.
jsji added a comment.

Split the Driver changes to another patch, also fixed the duplicate code.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D110422

Files:
  clang/test/Profile/cxx-templates.cpp
  llvm/lib/Transforms/Instrumentation/InstrProfiling.cpp
  llvm/test/Instrumentation/InstrProfiling/profiling.ll


Index: llvm/test/Instrumentation/InstrProfiling/profiling.ll
===
--- llvm/test/Instrumentation/InstrProfiling/profiling.ll
+++ llvm/test/Instrumentation/InstrProfiling/profiling.ll
@@ -45,8 +45,8 @@
 ; MACHO: @__profd_foo_weak = weak hidden global
 ; COFF: @__profc_foo_weak = weak hidden global
 ; COFF: @__profd_foo_weak = private global
-; XCOFF: @__profc_foo_weak = weak hidden global
-; XCOFF: @__profd_foo_weak = weak hidden global
+; XCOFF: @__profc_foo_weak = private global
+; XCOFF: @__profd_foo_weak = private global
 define weak void @foo_weak() {
   call void @llvm.instrprof.increment(i8* getelementptr inbounds ([8 x i8], [8 
x i8]* @__profn_foo_weak, i32 0, i32 0), i64 0, i32 1, i32 0)
   ret void
@@ -71,8 +71,8 @@
 ; MACHO: @__profd_foo_inline = linkonce_odr hidden global
 ; COFF: @__profc_foo_inline = linkonce_odr hidden global{{.*}} section 
".lprfc$M", align 8
 ; COFF: @__profd_foo_inline = private global{{.*}} section ".lprfd$M", align 8
-; XCOFF: @__profc_foo_inline = linkonce_odr hidden global
-; XCOFF: @__profd_foo_inline = linkonce_odr hidden global
+; XCOFF: @__profc_foo_inline = private global
+; XCOFF: @__profd_foo_inline = private global
 define linkonce_odr void @foo_inline() {
   call void @llvm.instrprof.increment(i8* getelementptr inbounds ([10 x i8], 
[10 x i8]* @__profn_foo_inline, i32 0, i32 0), i64 0, i32 1, i32 0)
   ret void
@@ -84,8 +84,8 @@
 ; MACHO: @__profd_foo_extern = linkonce_odr hidden global
 ; COFF: @__profc_foo_extern = linkonce_odr hidden global {{.*}}section 
".lprfc$M", comdat, align 8
 ; COFF: @__profd_foo_extern = private global {{.*}}section ".lprfd$M", 
comdat($__profc_foo_extern), align 8
-; XCOFF: @__profc_foo_extern = linkonce_odr hidden global
-; XCOFF: @__profd_foo_extern = linkonce_odr hidden global
+; XCOFF: @__profc_foo_extern = private global
+; XCOFF: @__profd_foo_extern = private global
 define available_externally void @foo_extern() {
   call void @llvm.instrprof.increment(i8* getelementptr inbounds ([10 x i8], 
[10 x i8]* @__profn_foo_extern, i32 0, i32 0), i64 0, i32 1, i32 0)
   ret void
Index: llvm/lib/Transforms/Instrumentation/InstrProfiling.cpp
===
--- llvm/lib/Transforms/Instrumentation/InstrProfiling.cpp
+++ llvm/lib/Transforms/Instrumentation/InstrProfiling.cpp
@@ -862,6 +862,15 @@
   GlobalValue::LinkageTypes Linkage = NamePtr->getLinkage();
   GlobalValue::VisibilityTypes Visibility = NamePtr->getVisibility();
 
+  // Due to the limitation of binder as of 2021/09/28, the duplicate weak
+  // symbols in the same csect won't be discarded. When there are duplicate 
weak
+  // symbols, we can NOT guarantee that the relocations get resolved to the
+  // intended weak symbol, so we can not ensure the correctness of the relative
+  // CounterPtr, so we have to use private linkage for counter and data 
symbols.
+  if (TT.isOSBinFormatXCOFF()) {
+Linkage = GlobalValue::PrivateLinkage;
+Visibility = GlobalValue::DefaultVisibility;
+  }
   // Move the name variable to the right section. Place them in a COMDAT group
   // if the associated function is a COMDAT. This will make sure that only one
   // copy of counters of the COMDAT function will be emitted after linking. 
Keep
@@ -971,6 +980,7 @@
 Linkage = GlobalValue::PrivateLinkage;
 Visibility = GlobalValue::DefaultVisibility;
   }
+
   auto *Data =
   new GlobalVariable(*M, DataTy, false, Linkage, nullptr, DataVarName);
   // Reference the counter variable with a label difference (link-time
Index: clang/test/Profile/cxx-templates.cpp
===
--- clang/test/Profile/cxx-templates.cpp
+++ clang/test/Profile/cxx-templates.cpp
@@ -10,8 +10,10 @@
 // RUN: FileCheck --input-file=%tuse -check-prefix=T0USE -check-prefix=ALL %s
 // RUN: FileCheck --input-file=%tuse -check-prefix=T100USE -check-prefix=ALL %s
 
-// T0GEN: @[[T0C:__profc__Z4loopILj0EEvv]] = linkonce_odr 
{{(hidden|dso_local)}} global [2 x i64] zeroinitializer
-// T100GEN: @[[T100C:__profc__Z4loopILj100EEvv]] = linkonce_odr 
{{(hidden|dso_local)}} global [2 x i64] zeroinitializer
+// The linkage can be target dependent, so accept all linkage here,
+// the linkage tests for different target are in 
llvm/test/Instrumentation/InstrProfiling/profiling.ll
+// T0GEN: @[[T0C:__profc__Z4loopILj0EEvv]] = {{.*}} global [2 x i64] 
zeroinitializer
+// T100GEN: @[[T100C:__profc__Z4loopILj100EEvv]] = {{.*}} global 

[PATCH] D110422: [AIX] Enable PGO without LTO

2021-09-28 Thread Jinsong Ji via Phabricator via cfe-commits
jsji updated this revision to Diff 375688.
jsji marked an inline comment as done.
jsji added a comment.

Address comments.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D110422

Files:
  clang/lib/Driver/ToolChains/AIX.cpp
  clang/lib/Driver/ToolChains/Clang.cpp
  clang/test/Driver/unsupported-option.c
  clang/test/Profile/cxx-templates.cpp
  llvm/lib/Transforms/Instrumentation/InstrProfiling.cpp
  llvm/test/Instrumentation/InstrProfiling/profiling.ll

Index: llvm/test/Instrumentation/InstrProfiling/profiling.ll
===
--- llvm/test/Instrumentation/InstrProfiling/profiling.ll
+++ llvm/test/Instrumentation/InstrProfiling/profiling.ll
@@ -45,8 +45,8 @@
 ; MACHO: @__profd_foo_weak = weak hidden global
 ; COFF: @__profc_foo_weak = weak hidden global
 ; COFF: @__profd_foo_weak = private global
-; XCOFF: @__profc_foo_weak = weak hidden global
-; XCOFF: @__profd_foo_weak = weak hidden global
+; XCOFF: @__profc_foo_weak = private global
+; XCOFF: @__profd_foo_weak = private global
 define weak void @foo_weak() {
   call void @llvm.instrprof.increment(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @__profn_foo_weak, i32 0, i32 0), i64 0, i32 1, i32 0)
   ret void
@@ -71,8 +71,8 @@
 ; MACHO: @__profd_foo_inline = linkonce_odr hidden global
 ; COFF: @__profc_foo_inline = linkonce_odr hidden global{{.*}} section ".lprfc$M", align 8
 ; COFF: @__profd_foo_inline = private global{{.*}} section ".lprfd$M", align 8
-; XCOFF: @__profc_foo_inline = linkonce_odr hidden global
-; XCOFF: @__profd_foo_inline = linkonce_odr hidden global
+; XCOFF: @__profc_foo_inline = private global
+; XCOFF: @__profd_foo_inline = private global
 define linkonce_odr void @foo_inline() {
   call void @llvm.instrprof.increment(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @__profn_foo_inline, i32 0, i32 0), i64 0, i32 1, i32 0)
   ret void
@@ -84,8 +84,8 @@
 ; MACHO: @__profd_foo_extern = linkonce_odr hidden global
 ; COFF: @__profc_foo_extern = linkonce_odr hidden global {{.*}}section ".lprfc$M", comdat, align 8
 ; COFF: @__profd_foo_extern = private global {{.*}}section ".lprfd$M", comdat($__profc_foo_extern), align 8
-; XCOFF: @__profc_foo_extern = linkonce_odr hidden global
-; XCOFF: @__profd_foo_extern = linkonce_odr hidden global
+; XCOFF: @__profc_foo_extern = private global
+; XCOFF: @__profd_foo_extern = private global
 define available_externally void @foo_extern() {
   call void @llvm.instrprof.increment(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @__profn_foo_extern, i32 0, i32 0), i64 0, i32 1, i32 0)
   ret void
Index: llvm/lib/Transforms/Instrumentation/InstrProfiling.cpp
===
--- llvm/lib/Transforms/Instrumentation/InstrProfiling.cpp
+++ llvm/lib/Transforms/Instrumentation/InstrProfiling.cpp
@@ -862,6 +862,15 @@
   GlobalValue::LinkageTypes Linkage = NamePtr->getLinkage();
   GlobalValue::VisibilityTypes Visibility = NamePtr->getVisibility();
 
+  // Due to the limitation of binder as of 2021/09/28, the duplicate weak
+  // symbols in the same csect won't be discarded. When there are duplicate weak
+  // symbols, we can NOT guarantee that the relocations get resolved to the
+  // intended weak symbol, so we can not ensure the correctness of the relative
+  // CounterPtr, so we have to use private linkage for counter and data symbols.
+  if (TT.isOSBinFormatXCOFF()) {
+Linkage = GlobalValue::PrivateLinkage;
+Visibility = GlobalValue::DefaultVisibility;
+  }
   // Move the name variable to the right section. Place them in a COMDAT group
   // if the associated function is a COMDAT. This will make sure that only one
   // copy of counters of the COMDAT function will be emitted after linking. Keep
@@ -971,6 +980,17 @@
 Linkage = GlobalValue::PrivateLinkage;
 Visibility = GlobalValue::DefaultVisibility;
   }
+
+  // Due to the limitation of binder as of 2021/09/28, the duplicate weak
+  // symbols in the same csect won't be discarded. When there are duplicate weak
+  // symbols, we can NOT guarantee that the relocations get resolved to the
+  // intended weak symbol, so we can not ensure the correctness of the relative
+  // CounterPtr, so we have to use private linkage for counter and data symbols.
+  if (TT.isOSBinFormatXCOFF()) {
+Linkage = GlobalValue::PrivateLinkage;
+Visibility = GlobalValue::DefaultVisibility;
+  }
+
   auto *Data =
   new GlobalVariable(*M, DataTy, false, Linkage, nullptr, DataVarName);
   // Reference the counter variable with a label difference (link-time
Index: clang/test/Profile/cxx-templates.cpp
===
--- clang/test/Profile/cxx-templates.cpp
+++ clang/test/Profile/cxx-templates.cpp
@@ -10,8 +10,10 @@
 // RUN: FileCheck --input-file=%tuse -check-prefix=T0USE -check-prefix=ALL %s
 // RUN: FileCheck 

[PATCH] D110422: [AIX] Enable PGO without LTO

2021-09-27 Thread Jinsong Ji via Phabricator via cfe-commits
jsji added a comment.

> "as binder can NOT discard a subset of a csect."?

Thanks, this does looks better!

> The linker (binder) doesn't have to discard a subset of csect, but it should 
> ensure there are not two non-local symbols with the same name.
> The latter is what I request.



> Without section deduplication we just end up with PDP-11 a.out extended with 
> .weak directive, it isn't too bad. Mach-O uses this model as well.
> (PE-COFF/ELF properly deduplicates in the absence of section based GC.)
> Having two non-local symbols could cause serious symbol resolution problems.

That I can definitely forward to AIX binder team, but we can't expect they 
implement it right away for us.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D110422

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


[PATCH] D110422: [AIX] Enable PGO without LTO

2021-09-27 Thread Jinsong Ji via Phabricator via cfe-commits
jsji added a comment.

> "as binder can NOT discard only part of a csect." this part caused confusion 
> to me...

OK, yeah, csect is special to XCOFF, so this is not the same concept of 
sections in ELF.

> I haven't verified but it is possible that PGO picks the first pair (zero 
> value) and have an incorrect counter for `foo`.

As I mentioned before, we verified (with `llvm-profdata show --all-functions 
--counts`) that all the counters are good.

> ---
>
> Does your example imply that the weak symbol `__profc_foo` has 2 definitions 
> with conflicting values?

No, they are identical weak functions.  Those offsets are actually from real 
example using `std::stringbuf`, 
the foo is actually 
`_ZNSt3__115basic_stringbufIcNS_11char_traitsIcEENS_9allocatorIcEEEC2Ej`.

> Any idea whether the linker bug will be fixed?

Unfortunately, I just double confirmed with AIX linker (binder) owner, 
there is NO plan of lifting the limitation that binder can NOT discard only 
part of a csect.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D110422

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


[PATCH] D110422: [AIX] Enable PGO without LTO

2021-09-27 Thread Jinsong Ji via Phabricator via cfe-commits
jsji added a comment.

OK, I may not describe the example clearly.

Let me use example code with offsets and llvm internal calculations as the 
example, so that you might be clearer.

Let us say we have 2 objects , which both have weak function foo (and some 
non-weak functions).

  [2054]  m   0x11ec0 .data 1  unamex
__llvm_prf_cnts
  [2056]  m   0x11ef8 .data 1weak
__profc__foo
  [1389]  m   0x110001540 .data 1  unamex
__llvm_prf_cnts
  [1391]  m   0x1100015a8 .data 1weak
__profc__foo<== chosen by binder
  
  [2290]  m   0x110001ca8 .data 1  unamex
__llvm_prf_data
  [2292]  m   0x110001ce0 .data 1weak
__profd__foo
  [1633]  m   0x110003678 .data 1  unamex
__llvm_prf_data
  [1635]  m   0x1100036b0 .data 1weak
__profd__foo<===  chosen by binder

In binding, binder chose 0x1100015a8 for `__profc__foo`, and 0x1100036b0 for 
`__profd__foo`. 
(Not the 1st in the csect, but 1st seen by binder)

At the beginning `CountersDelta` is 0xf218. ( 0x11ec0 [2054]  - 
0x110001ca8 [2290] ) .

The first record is for non-weak function, so we are OK.

Then we move forward to read foo counters, 
`CountersDelta` is then updated to 0xf1e0 ( 0xf218 - 
sizeof(Data))
`CounterPtr` is now 0x1100015a8 - 0x1100036b0 = 0xdef8

CountersOffset is now 0x1da3  ( CounterPtr - CountersDelta / 
sizeof(unit64_6))

CountersOffset > MaxNumCounters !

If we have more weak symbols, the symbols chosen by binder may be  interleaving 
in the csects,
we won't be able to calculate the CountersOffset correctly for all of them.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D110422

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


[PATCH] D110422: [AIX] Enable PGO without LTO

2021-09-27 Thread Jinsong Ji via Phabricator via cfe-commits
jsji added a comment.

In D110422#3025133 , @MaskRay wrote:

> The description isn't clear why the previous `weak` symbol usage does not 
> work. Have you verified that it does not work?

Yes, we started with the `weak` symbols for `profc`/`profd` first, and tested 
it. We met problems, and we spent time investigate why they are not working.

I have update the description to include most of the details. Let me know if it 
is still unclear.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D110422

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


[PATCH] D110422: [AIX] Enable PGO without LTO

2021-09-27 Thread Jinsong Ji via Phabricator via cfe-commits
jsji added a comment.

@MaskRay Do you have further comments or alternative solutions? Thanks.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D110422

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


[PATCH] D110422: [AIX] Enable PGO without LTO

2021-09-24 Thread Jinsong Ji via Phabricator via cfe-commits
jsji added a comment.

Using to `PrivateLinkage`, all the profc/profd for each weak symbol will be 
*local* to objects, and all kept in the csect,
so we won't have problem.

The downside is that we won't be able to discard the duplicated counters and 
profile data,
but those can not be discarded even if we keep the weak linkage,
due to the binder limitation of not discarding only part of the csect either .


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D110422

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


[PATCH] D110422: [AIX] Enable PGO without LTO

2021-09-24 Thread Jinsong Ji via Phabricator via cfe-commits
jsji added a comment.

We have verified all the profile counters in SPEC , all are OK.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D110422

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


[PATCH] D110422: [AIX] Enable PGO without LTO

2021-09-24 Thread Jinsong Ji via Phabricator via cfe-commits
jsji added a comment.

In D110422#3021535 , @MaskRay wrote:

> The description is still unclear.
>
> Say a.o has a weak `foo, __profc_foo, __profd_foo`, b.o has a weak `foo, 
> __profc_foo, __profd_foo`.
> The linker picks the definitions from `a.o`. In the PGO implementation, it 
> doesn't whether the non-discarded b.o `__profd_foo` has garbage value.

We have 3 sets weak symbols here: weak_func, profc_weak_foo, profd_weak_func. 
We can't ensure that binder always choose 3 of them from same object.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D110422

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


[PATCH] D110422: [AIX] Enable PGO without LTO

2021-09-24 Thread Jinsong Ji via Phabricator via cfe-commits
jsji added a comment.

Pos_Rel __profc_weak_func notation is just the normal relocation to symbol 
__profc_weak_func.

The relocation here is to calculate the relative pointer (offset) to 
__profc__weak_func from __profd__weak__func.

In example above, the offsets value after binding will be the same for both 
instances, as the symbol __profc__weak__func will be the one that is chosen by 
binder. Let us say it is the value of first instances.

Then when we calculate the profc_weak_func pointer for 2nd instances, we get 
garbage value.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D110422

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


[PATCH] D110422: [AIX] Enable PGO without LTO

2021-09-24 Thread Jinsong Ji via Phabricator via cfe-commits
jsji added a comment.

> In other binary formats the first weak definition is selected and other weak 
> definitions are discarded.
> Do you mean that AIX ld doesn't pick the first weak definition?

No. I think this is exactly what is causing problem here.

eg: if we have two weak symbols (weak_func), and we generate the weak 
counter/data as usual:

  __llvm_prf_cnts:
  
  __profc_weak_func(1):
  
  __profc_weak_func(2):
  
  __llvm_prf_data:
  
  __profd_weak func(1):
  
  Pos_Rel __profc_weak_func  <=== Relocation to calculate the relative pointer
  
  __profd_weak_func(2):
  
  Pos_Rel __profc_weak_func  <=== Relocation to calculate the relative pointer

The relative pointer calculation in __profd_weak_fun will be wrong after 
linking.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D110422

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


[PATCH] D110422: [AIX] Enable PGO without LTO

2021-09-24 Thread Jinsong Ji via Phabricator via cfe-commits
jsji added inline comments.



Comment at: llvm/lib/Transforms/Instrumentation/InstrProfiling.cpp:869
+  // symbol, so we can not ensure the correctness of the relative CounterPtr, 
so
+  // we have to use private linkage for counter and data symbols.
+  if (TT.isOSBinFormatXCOFF()) {

jsji wrote:
> MaskRay wrote:
> > Then you can just keep the existing weak symbols.
> > 
> > The weak symbols will not be selected due to linker semantics.
> Not sure what you meant? 
To be clear, keeping the weak linkage is causing issues in our test, and we 
investigate the problem , together with AIX binder owner, and it is the 
limitation in binder support that we can't ensure the relocation getting 
resolved to the intended weak symbol. So this is what we can do right now for 
enabling PGO.

We may be able to lift it this limitation later if binder get updated and do 
what we want, but this is limitation for now.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D110422

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


[PATCH] D110422: [AIX] Enable PGO without LTO

2021-09-24 Thread Jinsong Ji via Phabricator via cfe-commits
jsji added inline comments.



Comment at: llvm/lib/Transforms/Instrumentation/InstrProfiling.cpp:869
+  // symbol, so we can not ensure the correctness of the relative CounterPtr, 
so
+  // we have to use private linkage for counter and data symbols.
+  if (TT.isOSBinFormatXCOFF()) {

MaskRay wrote:
> Then you can just keep the existing weak symbols.
> 
> The weak symbols will not be selected due to linker semantics.
Not sure what you meant? 


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D110422

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


[PATCH] D110422: [AIX] Enable PGO without LTO

2021-09-24 Thread Jinsong Ji via Phabricator via cfe-commits
jsji updated this revision to Diff 374879.
jsji added a comment.

Address comments.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D110422

Files:
  clang/lib/Driver/ToolChains/AIX.cpp
  clang/lib/Driver/ToolChains/Clang.cpp
  clang/test/Driver/unsupported-option.c
  clang/test/Profile/cxx-templates.cpp
  llvm/lib/Transforms/Instrumentation/InstrProfiling.cpp
  llvm/test/Instrumentation/InstrProfiling/profiling.ll

Index: llvm/test/Instrumentation/InstrProfiling/profiling.ll
===
--- llvm/test/Instrumentation/InstrProfiling/profiling.ll
+++ llvm/test/Instrumentation/InstrProfiling/profiling.ll
@@ -45,8 +45,8 @@
 ; MACHO: @__profd_foo_weak = weak hidden global
 ; COFF: @__profc_foo_weak = weak hidden global
 ; COFF: @__profd_foo_weak = private global
-; XCOFF: @__profc_foo_weak = weak hidden global
-; XCOFF: @__profd_foo_weak = weak hidden global
+; XCOFF: @__profc_foo_weak = private global
+; XCOFF: @__profd_foo_weak = private global
 define weak void @foo_weak() {
   call void @llvm.instrprof.increment(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @__profn_foo_weak, i32 0, i32 0), i64 0, i32 1, i32 0)
   ret void
@@ -71,8 +71,8 @@
 ; MACHO: @__profd_foo_inline = linkonce_odr hidden global
 ; COFF: @__profc_foo_inline = linkonce_odr hidden global{{.*}} section ".lprfc$M", align 8
 ; COFF: @__profd_foo_inline = private global{{.*}} section ".lprfd$M", align 8
-; XCOFF: @__profc_foo_inline = linkonce_odr hidden global
-; XCOFF: @__profd_foo_inline = linkonce_odr hidden global
+; XCOFF: @__profc_foo_inline = private global
+; XCOFF: @__profd_foo_inline = private global
 define linkonce_odr void @foo_inline() {
   call void @llvm.instrprof.increment(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @__profn_foo_inline, i32 0, i32 0), i64 0, i32 1, i32 0)
   ret void
@@ -84,8 +84,8 @@
 ; MACHO: @__profd_foo_extern = linkonce_odr hidden global
 ; COFF: @__profc_foo_extern = linkonce_odr hidden global {{.*}}section ".lprfc$M", comdat, align 8
 ; COFF: @__profd_foo_extern = private global {{.*}}section ".lprfd$M", comdat($__profc_foo_extern), align 8
-; XCOFF: @__profc_foo_extern = linkonce_odr hidden global
-; XCOFF: @__profd_foo_extern = linkonce_odr hidden global
+; XCOFF: @__profc_foo_extern = private global
+; XCOFF: @__profd_foo_extern = private global
 define available_externally void @foo_extern() {
   call void @llvm.instrprof.increment(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @__profn_foo_extern, i32 0, i32 0), i64 0, i32 1, i32 0)
   ret void
Index: llvm/lib/Transforms/Instrumentation/InstrProfiling.cpp
===
--- llvm/lib/Transforms/Instrumentation/InstrProfiling.cpp
+++ llvm/lib/Transforms/Instrumentation/InstrProfiling.cpp
@@ -862,6 +862,15 @@
   GlobalValue::LinkageTypes Linkage = NamePtr->getLinkage();
   GlobalValue::VisibilityTypes Visibility = NamePtr->getVisibility();
 
+  // Due to the current limitation of binder, the duplicate weak symbols in the
+  // same csect won't be discarded. When there are duplicate weak symbols,
+  // we can NOT guarantee that the relocations get resolved to the intended weak
+  // symbol, so we can not ensure the correctness of the relative CounterPtr, so
+  // we have to use private linkage for counter and data symbols.
+  if (TT.isOSBinFormatXCOFF()) {
+Linkage = GlobalValue::PrivateLinkage;
+Visibility = GlobalValue::DefaultVisibility;
+  }
   // Move the name variable to the right section. Place them in a COMDAT group
   // if the associated function is a COMDAT. This will make sure that only one
   // copy of counters of the COMDAT function will be emitted after linking. Keep
@@ -971,6 +980,17 @@
 Linkage = GlobalValue::PrivateLinkage;
 Visibility = GlobalValue::DefaultVisibility;
   }
+
+  // Due to the current limitation of binder, the duplicate weak symbols in the
+  // same csect won't be discarded. When there are duplicate weak symbols,
+  // we can NOT guarantee that the relocations get resolved to the intended weak
+  // symbol, so we can not ensure the correctness of the relative CounterPtr, so
+  // we have to use private linkage for counter and data symbols.
+  if (TT.isOSBinFormatXCOFF()) {
+Linkage = GlobalValue::PrivateLinkage;
+Visibility = GlobalValue::DefaultVisibility;
+  }
+
   auto *Data =
   new GlobalVariable(*M, DataTy, false, Linkage, nullptr, DataVarName);
   // Reference the counter variable with a label difference (link-time
Index: clang/test/Profile/cxx-templates.cpp
===
--- clang/test/Profile/cxx-templates.cpp
+++ clang/test/Profile/cxx-templates.cpp
@@ -10,8 +10,10 @@
 // RUN: FileCheck --input-file=%tuse -check-prefix=T0USE -check-prefix=ALL %s
 // RUN: FileCheck --input-file=%tuse -check-prefix=T100USE -check-prefix=ALL 

[PATCH] D110422: [AIX] Enable PGO without LTO

2021-09-24 Thread Jinsong Ji via Phabricator via cfe-commits
jsji updated this revision to Diff 374867.
jsji added a comment.

Restore the limitation of sample profiling.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D110422

Files:
  clang/lib/Driver/ToolChains/AIX.cpp
  clang/lib/Driver/ToolChains/Clang.cpp
  clang/test/Driver/unsupported-option.c
  clang/test/Profile/cxx-templates.cpp
  llvm/lib/Transforms/Instrumentation/InstrProfiling.cpp
  llvm/test/Instrumentation/InstrProfiling/profiling.ll

Index: llvm/test/Instrumentation/InstrProfiling/profiling.ll
===
--- llvm/test/Instrumentation/InstrProfiling/profiling.ll
+++ llvm/test/Instrumentation/InstrProfiling/profiling.ll
@@ -45,8 +45,8 @@
 ; MACHO: @__profd_foo_weak = weak hidden global
 ; COFF: @__profc_foo_weak = weak hidden global
 ; COFF: @__profd_foo_weak = private global
-; XCOFF: @__profc_foo_weak = weak hidden global
-; XCOFF: @__profd_foo_weak = weak hidden global
+; XCOFF: @__profc_foo_weak = private global
+; XCOFF: @__profd_foo_weak = private global
 define weak void @foo_weak() {
   call void @llvm.instrprof.increment(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @__profn_foo_weak, i32 0, i32 0), i64 0, i32 1, i32 0)
   ret void
@@ -71,8 +71,8 @@
 ; MACHO: @__profd_foo_inline = linkonce_odr hidden global
 ; COFF: @__profc_foo_inline = linkonce_odr hidden global{{.*}} section ".lprfc$M", align 8
 ; COFF: @__profd_foo_inline = private global{{.*}} section ".lprfd$M", align 8
-; XCOFF: @__profc_foo_inline = linkonce_odr hidden global
-; XCOFF: @__profd_foo_inline = linkonce_odr hidden global
+; XCOFF: @__profc_foo_inline = private global
+; XCOFF: @__profd_foo_inline = private global
 define linkonce_odr void @foo_inline() {
   call void @llvm.instrprof.increment(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @__profn_foo_inline, i32 0, i32 0), i64 0, i32 1, i32 0)
   ret void
@@ -84,8 +84,8 @@
 ; MACHO: @__profd_foo_extern = linkonce_odr hidden global
 ; COFF: @__profc_foo_extern = linkonce_odr hidden global {{.*}}section ".lprfc$M", comdat, align 8
 ; COFF: @__profd_foo_extern = private global {{.*}}section ".lprfd$M", comdat($__profc_foo_extern), align 8
-; XCOFF: @__profc_foo_extern = linkonce_odr hidden global
-; XCOFF: @__profd_foo_extern = linkonce_odr hidden global
+; XCOFF: @__profc_foo_extern = private global
+; XCOFF: @__profd_foo_extern = private global
 define available_externally void @foo_extern() {
   call void @llvm.instrprof.increment(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @__profn_foo_extern, i32 0, i32 0), i64 0, i32 1, i32 0)
   ret void
Index: llvm/lib/Transforms/Instrumentation/InstrProfiling.cpp
===
--- llvm/lib/Transforms/Instrumentation/InstrProfiling.cpp
+++ llvm/lib/Transforms/Instrumentation/InstrProfiling.cpp
@@ -862,6 +862,15 @@
   GlobalValue::LinkageTypes Linkage = NamePtr->getLinkage();
   GlobalValue::VisibilityTypes Visibility = NamePtr->getVisibility();
 
+  // Due to the current limitation of binder, the duplicate weak symbols in the
+  // same csect won't be discarded. When there are duplicate weak symbols,
+  // we can NOT guarantee that the relocations get resolved to the intended weak
+  // symbol, so we can not ensure the correctness of the relative CounterPtr, so
+  // we have to use private linkage for counter and data symbols.
+  if (TT.isOSBinFormatXCOFF()) {
+Linkage = GlobalValue::PrivateLinkage;
+Visibility = GlobalValue::DefaultVisibility;
+  }
   // Move the name variable to the right section. Place them in a COMDAT group
   // if the associated function is a COMDAT. This will make sure that only one
   // copy of counters of the COMDAT function will be emitted after linking. Keep
@@ -966,7 +975,7 @@
   // that other copies must have the same CFG and cannot have value profiling.
   // If no hash suffix, other profd copies may be referenced by code.
   if (NS == 0 && !(DataReferencedByCode && NeedComdat && !Renamed) &&
-  (TT.isOSBinFormatELF() ||
+  (TT.isOSBinFormatELF() || TT.isOSBinFormatXCOFF() ||
(!DataReferencedByCode && TT.isOSBinFormatCOFF( {
 Linkage = GlobalValue::PrivateLinkage;
 Visibility = GlobalValue::DefaultVisibility;
Index: clang/test/Profile/cxx-templates.cpp
===
--- clang/test/Profile/cxx-templates.cpp
+++ clang/test/Profile/cxx-templates.cpp
@@ -10,8 +10,10 @@
 // RUN: FileCheck --input-file=%tuse -check-prefix=T0USE -check-prefix=ALL %s
 // RUN: FileCheck --input-file=%tuse -check-prefix=T100USE -check-prefix=ALL %s
 
-// T0GEN: @[[T0C:__profc__Z4loopILj0EEvv]] = linkonce_odr {{(hidden|dso_local)}} global [2 x i64] zeroinitializer
-// T100GEN: @[[T100C:__profc__Z4loopILj100EEvv]] = linkonce_odr {{(hidden|dso_local)}} global [2 x i64] zeroinitializer
+// The linkage can be target dependent, so accept 

[PATCH] D110422: [AIX] Enable PGO without LTO

2021-09-24 Thread Jinsong Ji via Phabricator via cfe-commits
jsji created this revision.
jsji added reviewers: PowerPC, Whitney, w2yehia, MaskRay.
Herald added subscribers: wenlei, hiraditya, inglorion.
jsji requested review of this revision.
Herald added projects: clang, LLVM.
Herald added subscribers: llvm-commits, cfe-commits.

On AIX, we relied on LTO to merge the csects for profiling data/counter
sections.

AIX binder now get the namedcsect support to support the merging,
so now we can enable PGO without LTO with the new binder.


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D110422

Files:
  clang/lib/Driver/ToolChains/AIX.cpp
  clang/lib/Driver/ToolChains/Clang.cpp
  clang/test/Driver/unsupported-option.c
  clang/test/Profile/cxx-templates.cpp
  llvm/lib/Transforms/Instrumentation/InstrProfiling.cpp
  llvm/test/Instrumentation/InstrProfiling/profiling.ll

Index: llvm/test/Instrumentation/InstrProfiling/profiling.ll
===
--- llvm/test/Instrumentation/InstrProfiling/profiling.ll
+++ llvm/test/Instrumentation/InstrProfiling/profiling.ll
@@ -45,8 +45,8 @@
 ; MACHO: @__profd_foo_weak = weak hidden global
 ; COFF: @__profc_foo_weak = weak hidden global
 ; COFF: @__profd_foo_weak = private global
-; XCOFF: @__profc_foo_weak = weak hidden global
-; XCOFF: @__profd_foo_weak = weak hidden global
+; XCOFF: @__profc_foo_weak = private global
+; XCOFF: @__profd_foo_weak = private global
 define weak void @foo_weak() {
   call void @llvm.instrprof.increment(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @__profn_foo_weak, i32 0, i32 0), i64 0, i32 1, i32 0)
   ret void
@@ -71,8 +71,8 @@
 ; MACHO: @__profd_foo_inline = linkonce_odr hidden global
 ; COFF: @__profc_foo_inline = linkonce_odr hidden global{{.*}} section ".lprfc$M", align 8
 ; COFF: @__profd_foo_inline = private global{{.*}} section ".lprfd$M", align 8
-; XCOFF: @__profc_foo_inline = linkonce_odr hidden global
-; XCOFF: @__profd_foo_inline = linkonce_odr hidden global
+; XCOFF: @__profc_foo_inline = private global
+; XCOFF: @__profd_foo_inline = private global
 define linkonce_odr void @foo_inline() {
   call void @llvm.instrprof.increment(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @__profn_foo_inline, i32 0, i32 0), i64 0, i32 1, i32 0)
   ret void
@@ -84,8 +84,8 @@
 ; MACHO: @__profd_foo_extern = linkonce_odr hidden global
 ; COFF: @__profc_foo_extern = linkonce_odr hidden global {{.*}}section ".lprfc$M", comdat, align 8
 ; COFF: @__profd_foo_extern = private global {{.*}}section ".lprfd$M", comdat($__profc_foo_extern), align 8
-; XCOFF: @__profc_foo_extern = linkonce_odr hidden global
-; XCOFF: @__profd_foo_extern = linkonce_odr hidden global
+; XCOFF: @__profc_foo_extern = private global
+; XCOFF: @__profd_foo_extern = private global
 define available_externally void @foo_extern() {
   call void @llvm.instrprof.increment(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @__profn_foo_extern, i32 0, i32 0), i64 0, i32 1, i32 0)
   ret void
Index: llvm/lib/Transforms/Instrumentation/InstrProfiling.cpp
===
--- llvm/lib/Transforms/Instrumentation/InstrProfiling.cpp
+++ llvm/lib/Transforms/Instrumentation/InstrProfiling.cpp
@@ -862,6 +862,15 @@
   GlobalValue::LinkageTypes Linkage = NamePtr->getLinkage();
   GlobalValue::VisibilityTypes Visibility = NamePtr->getVisibility();
 
+  // Due to the current limitation of binder, the duplicate weak symbols in the
+  // same csect won't be discarded. When there are duplicate weak symbols,
+  // we can NOT guarantee that the relocations get resolved to the intended weak
+  // symbol, so we can not ensure the correctness of the relative CounterPtr, so
+  // we have to use private linkage for counter and data symbols.
+  if (TT.isOSBinFormatXCOFF()) {
+Linkage = GlobalValue::PrivateLinkage;
+Visibility = GlobalValue::DefaultVisibility;
+  }
   // Move the name variable to the right section. Place them in a COMDAT group
   // if the associated function is a COMDAT. This will make sure that only one
   // copy of counters of the COMDAT function will be emitted after linking. Keep
@@ -966,7 +975,7 @@
   // that other copies must have the same CFG and cannot have value profiling.
   // If no hash suffix, other profd copies may be referenced by code.
   if (NS == 0 && !(DataReferencedByCode && NeedComdat && !Renamed) &&
-  (TT.isOSBinFormatELF() ||
+  (TT.isOSBinFormatELF() || TT.isOSBinFormatXCOFF() ||
(!DataReferencedByCode && TT.isOSBinFormatCOFF( {
 Linkage = GlobalValue::PrivateLinkage;
 Visibility = GlobalValue::DefaultVisibility;
Index: clang/test/Profile/cxx-templates.cpp
===
--- clang/test/Profile/cxx-templates.cpp
+++ clang/test/Profile/cxx-templates.cpp
@@ -10,8 +10,10 @@
 // RUN: FileCheck --input-file=%tuse -check-prefix=T0USE -check-prefix=ALL %s
 // RUN: FileCheck --input-file=%tuse -check-prefix=T100USE 

[PATCH] D109541: Increase expected line number for ExtDebugInfo.cpp

2021-09-09 Thread Jinsong Ji via Phabricator via cfe-commits
jsji accepted this revision.
jsji added a comment.
This revision is now accepted and ready to land.

LGTM. But please wait to see whether @aprantl has any comments. Thanks.




Comment at: clang/test/Modules/ExtDebugInfo.cpp:27
 
+#line 50
 using DebugCXX::Struct;

Add comment about why we want to add this directive here.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D109541

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


[PATCH] D109060: [AIX][ZOS] Disable LIT tests on AIX and z/OS due to lack of Objective-C support

2021-09-08 Thread Jinsong Ji via Phabricator via cfe-commits
jsji added inline comments.



Comment at: clang/test/Modules/ExtDebugInfo.cpp:208
 
-
-// CHECK: !DIImportedEntity(tag: DW_TAG_imported_declaration, scope: 
!{{[0-9]+}}, entity: ![[STRUCT]], file: ![[CPP]], line: 27)
+// CHECK: !DIImportedEntity(tag: DW_TAG_imported_declaration, scope: 
!{{[0-9]+}}, entity: ![[STRUCT]], file: ![[CPP]], line: 28)
 

Jake-Egan wrote:
> jsji wrote:
> > Why this change? If this is needed, this should be in another patch. Thanks.
> The test failed in Debian and Windows because the unsupported line I added 
> changed the expected line number: 27->28. 
> https://reviews.llvm.org/D109060?id=371137
> 
> Without this change, this patch would cause a regression. But, I can put it 
> in another patch if that's preferred.
In that case, I would recommend we update it to regex match instead of 
hardcoding line no, and yes, in another patch before this.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D109060

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


[PATCH] D109060: [AIX][ZOS] Disable LIT tests on AIX and z/OS due to lack of Objective-C support

2021-09-07 Thread Jinsong Ji via Phabricator via cfe-commits
jsji added inline comments.



Comment at: clang/test/Modules/ExtDebugInfo.cpp:208
 
-
-// CHECK: !DIImportedEntity(tag: DW_TAG_imported_declaration, scope: 
!{{[0-9]+}}, entity: ![[STRUCT]], file: ![[CPP]], line: 27)
+// CHECK: !DIImportedEntity(tag: DW_TAG_imported_declaration, scope: 
!{{[0-9]+}}, entity: ![[STRUCT]], file: ![[CPP]], line: 28)
 

Why this change? If this is needed, this should be in another patch. Thanks.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D109060

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


[PATCH] D109060: [AIX][ZOS] Disable LIT tests on AIX and z/OS due to lack of Objective-C support

2021-09-07 Thread Jinsong Ji via Phabricator via cfe-commits
jsji accepted this revision as: jsji.
jsji added a comment.
This revision is now accepted and ready to land.

LGTM. Thanks!


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D109060

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


[PATCH] D109255: [NFC][OpenMP] Use clang_cc1 to driver tests

2021-09-03 Thread Jinsong Ji 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 rGd364eccdd5a9: [NFC][OpenMP] Use clang_cc1 to driver tests 
(authored by jsji).

Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D109255

Files:
  clang/test/OpenMP/driver-fopenmp-extensions.c
  clang/test/OpenMP/fopenmp-extensions.c


Index: clang/test/OpenMP/fopenmp-extensions.c
===
--- /dev/null
+++ clang/test/OpenMP/fopenmp-extensions.c
@@ -0,0 +1,26 @@
+// RUN: %clang_cc1 -verify=ompx -fopenmp %s
+// RUN: %clang_cc1 -verify=ompx -fopenmp-simd %s
+
+// RUN: %clang_cc1 -verify=ompx -fopenmp -fopenmp-extensions %s
+// RUN: %clang_cc1 -verify=ompx -fopenmp-simd -fopenmp-extensions %s
+
+// RUN: %clang_cc1 -verify=omp -fopenmp -fno-openmp-extensions %s
+// RUN: %clang_cc1 -verify=omp -fopenmp-simd -fno-openmp-extensions %s
+
+// RUN: %clang_cc1 -verify=omp -fopenmp \
+// RUN: -fopenmp-extensions -fno-openmp-extensions %s
+// RUN: %clang_cc1 -verify=omp -fopenmp-simd \
+// RUN: -fopenmp-extensions -fno-openmp-extensions %s
+
+// RUN: %clang_cc1 -verify=ompx -fopenmp \
+// RUN: -fno-openmp-extensions -fopenmp-extensions %s
+// RUN: %clang_cc1 -verify=ompx -fopenmp-simd \
+// RUN: -fno-openmp-extensions -fopenmp-extensions %s
+
+void foo() {
+  int x;
+  // ompx-no-diagnostics
+  // omp-error@+1 {{incorrect map type modifier}}
+  #pragma omp target map(ompx_hold, alloc: x)
+  ;
+}
Index: clang/test/OpenMP/driver-fopenmp-extensions.c
===
--- clang/test/OpenMP/driver-fopenmp-extensions.c
+++ /dev/null
@@ -1,26 +0,0 @@
-// RUN: %clang -c -Xclang -verify=ompx -fopenmp %s
-// RUN: %clang -c -Xclang -verify=ompx -fopenmp-simd %s
-
-// RUN: %clang -c -Xclang -verify=ompx -fopenmp -fopenmp-extensions %s
-// RUN: %clang -c -Xclang -verify=ompx -fopenmp-simd -fopenmp-extensions %s
-
-// RUN: %clang -c -Xclang -verify=omp -fopenmp -fno-openmp-extensions %s
-// RUN: %clang -c -Xclang -verify=omp -fopenmp-simd -fno-openmp-extensions %s
-
-// RUN: %clang -c -Xclang -verify=omp -fopenmp \
-// RUN: -fopenmp-extensions -fno-openmp-extensions %s
-// RUN: %clang -c -Xclang -verify=omp -fopenmp-simd \
-// RUN: -fopenmp-extensions -fno-openmp-extensions %s
-
-// RUN: %clang -c -Xclang -verify=ompx -fopenmp \
-// RUN: -fno-openmp-extensions -fopenmp-extensions %s
-// RUN: %clang -c -Xclang -verify=ompx -fopenmp-simd \
-// RUN: -fno-openmp-extensions -fopenmp-extensions %s
-
-void foo() {
-  int x;
-  // ompx-no-diagnostics
-  // omp-error@+1 {{incorrect map type modifier}}
-  #pragma omp target map(ompx_hold, alloc: x)
-  ;
-}


Index: clang/test/OpenMP/fopenmp-extensions.c
===
--- /dev/null
+++ clang/test/OpenMP/fopenmp-extensions.c
@@ -0,0 +1,26 @@
+// RUN: %clang_cc1 -verify=ompx -fopenmp %s
+// RUN: %clang_cc1 -verify=ompx -fopenmp-simd %s
+
+// RUN: %clang_cc1 -verify=ompx -fopenmp -fopenmp-extensions %s
+// RUN: %clang_cc1 -verify=ompx -fopenmp-simd -fopenmp-extensions %s
+
+// RUN: %clang_cc1 -verify=omp -fopenmp -fno-openmp-extensions %s
+// RUN: %clang_cc1 -verify=omp -fopenmp-simd -fno-openmp-extensions %s
+
+// RUN: %clang_cc1 -verify=omp -fopenmp \
+// RUN: -fopenmp-extensions -fno-openmp-extensions %s
+// RUN: %clang_cc1 -verify=omp -fopenmp-simd \
+// RUN: -fopenmp-extensions -fno-openmp-extensions %s
+
+// RUN: %clang_cc1 -verify=ompx -fopenmp \
+// RUN: -fno-openmp-extensions -fopenmp-extensions %s
+// RUN: %clang_cc1 -verify=ompx -fopenmp-simd \
+// RUN: -fno-openmp-extensions -fopenmp-extensions %s
+
+void foo() {
+  int x;
+  // ompx-no-diagnostics
+  // omp-error@+1 {{incorrect map type modifier}}
+  #pragma omp target map(ompx_hold, alloc: x)
+  ;
+}
Index: clang/test/OpenMP/driver-fopenmp-extensions.c
===
--- clang/test/OpenMP/driver-fopenmp-extensions.c
+++ /dev/null
@@ -1,26 +0,0 @@
-// RUN: %clang -c -Xclang -verify=ompx -fopenmp %s
-// RUN: %clang -c -Xclang -verify=ompx -fopenmp-simd %s
-
-// RUN: %clang -c -Xclang -verify=ompx -fopenmp -fopenmp-extensions %s
-// RUN: %clang -c -Xclang -verify=ompx -fopenmp-simd -fopenmp-extensions %s
-
-// RUN: %clang -c -Xclang -verify=omp -fopenmp -fno-openmp-extensions %s
-// RUN: %clang -c -Xclang -verify=omp -fopenmp-simd -fno-openmp-extensions %s
-
-// RUN: %clang -c -Xclang -verify=omp -fopenmp \
-// RUN: -fopenmp-extensions -fno-openmp-extensions %s
-// RUN: %clang -c -Xclang -verify=omp -fopenmp-simd \
-// RUN: -fopenmp-extensions -fno-openmp-extensions %s
-
-// RUN: %clang -c -Xclang -verify=ompx -fopenmp \
-// RUN: -fno-openmp-extensions -fopenmp-extensions %s
-// RUN: %clang -c -Xclang -verify=ompx -fopenmp-simd \
-// 

[PATCH] D109255: [NFC][OpenMP] Add fsyntax-only to driver tests

2021-09-03 Thread Jinsong Ji via Phabricator via cfe-commits
jsji added a comment.

> I probably won't get to it today, but I can work on it later.

Sure, take your time. Thank you!


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D109255

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


[PATCH] D109255: [NFC][OpenMP] Add fsyntax-only to driver tests

2021-09-03 Thread Jinsong Ji via Phabricator via cfe-commits
jsji updated this revision to Diff 370663.
jsji added a comment.

use `_cc1` for now.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D109255

Files:
  clang/test/OpenMP/driver-fopenmp-extensions.c
  clang/test/OpenMP/fopenmp-extensions.c


Index: clang/test/OpenMP/fopenmp-extensions.c
===
--- /dev/null
+++ clang/test/OpenMP/fopenmp-extensions.c
@@ -0,0 +1,26 @@
+// RUN: %clang_cc1 -verify=ompx -fopenmp %s
+// RUN: %clang_cc1 -verify=ompx -fopenmp-simd %s
+
+// RUN: %clang_cc1 -verify=ompx -fopenmp -fopenmp-extensions %s
+// RUN: %clang_cc1 -verify=ompx -fopenmp-simd -fopenmp-extensions %s
+
+// RUN: %clang_cc1 -verify=omp -fopenmp -fno-openmp-extensions %s
+// RUN: %clang_cc1 -verify=omp -fopenmp-simd -fno-openmp-extensions %s
+
+// RUN: %clang_cc1 -verify=omp -fopenmp \
+// RUN: -fopenmp-extensions -fno-openmp-extensions %s
+// RUN: %clang_cc1 -verify=omp -fopenmp-simd \
+// RUN: -fopenmp-extensions -fno-openmp-extensions %s
+
+// RUN: %clang_cc1 -verify=ompx -fopenmp \
+// RUN: -fno-openmp-extensions -fopenmp-extensions %s
+// RUN: %clang_cc1 -verify=ompx -fopenmp-simd \
+// RUN: -fno-openmp-extensions -fopenmp-extensions %s
+
+void foo() {
+  int x;
+  // ompx-no-diagnostics
+  // omp-error@+1 {{incorrect map type modifier}}
+  #pragma omp target map(ompx_hold, alloc: x)
+  ;
+}
Index: clang/test/OpenMP/driver-fopenmp-extensions.c
===
--- clang/test/OpenMP/driver-fopenmp-extensions.c
+++ /dev/null
@@ -1,26 +0,0 @@
-// RUN: %clang -c -Xclang -verify=ompx -fopenmp %s
-// RUN: %clang -c -Xclang -verify=ompx -fopenmp-simd %s
-
-// RUN: %clang -c -Xclang -verify=ompx -fopenmp -fopenmp-extensions %s
-// RUN: %clang -c -Xclang -verify=ompx -fopenmp-simd -fopenmp-extensions %s
-
-// RUN: %clang -c -Xclang -verify=omp -fopenmp -fno-openmp-extensions %s
-// RUN: %clang -c -Xclang -verify=omp -fopenmp-simd -fno-openmp-extensions %s
-
-// RUN: %clang -c -Xclang -verify=omp -fopenmp \
-// RUN: -fopenmp-extensions -fno-openmp-extensions %s
-// RUN: %clang -c -Xclang -verify=omp -fopenmp-simd \
-// RUN: -fopenmp-extensions -fno-openmp-extensions %s
-
-// RUN: %clang -c -Xclang -verify=ompx -fopenmp \
-// RUN: -fno-openmp-extensions -fopenmp-extensions %s
-// RUN: %clang -c -Xclang -verify=ompx -fopenmp-simd \
-// RUN: -fno-openmp-extensions -fopenmp-extensions %s
-
-void foo() {
-  int x;
-  // ompx-no-diagnostics
-  // omp-error@+1 {{incorrect map type modifier}}
-  #pragma omp target map(ompx_hold, alloc: x)
-  ;
-}


Index: clang/test/OpenMP/fopenmp-extensions.c
===
--- /dev/null
+++ clang/test/OpenMP/fopenmp-extensions.c
@@ -0,0 +1,26 @@
+// RUN: %clang_cc1 -verify=ompx -fopenmp %s
+// RUN: %clang_cc1 -verify=ompx -fopenmp-simd %s
+
+// RUN: %clang_cc1 -verify=ompx -fopenmp -fopenmp-extensions %s
+// RUN: %clang_cc1 -verify=ompx -fopenmp-simd -fopenmp-extensions %s
+
+// RUN: %clang_cc1 -verify=omp -fopenmp -fno-openmp-extensions %s
+// RUN: %clang_cc1 -verify=omp -fopenmp-simd -fno-openmp-extensions %s
+
+// RUN: %clang_cc1 -verify=omp -fopenmp \
+// RUN: -fopenmp-extensions -fno-openmp-extensions %s
+// RUN: %clang_cc1 -verify=omp -fopenmp-simd \
+// RUN: -fopenmp-extensions -fno-openmp-extensions %s
+
+// RUN: %clang_cc1 -verify=ompx -fopenmp \
+// RUN: -fno-openmp-extensions -fopenmp-extensions %s
+// RUN: %clang_cc1 -verify=ompx -fopenmp-simd \
+// RUN: -fno-openmp-extensions -fopenmp-extensions %s
+
+void foo() {
+  int x;
+  // ompx-no-diagnostics
+  // omp-error@+1 {{incorrect map type modifier}}
+  #pragma omp target map(ompx_hold, alloc: x)
+  ;
+}
Index: clang/test/OpenMP/driver-fopenmp-extensions.c
===
--- clang/test/OpenMP/driver-fopenmp-extensions.c
+++ /dev/null
@@ -1,26 +0,0 @@
-// RUN: %clang -c -Xclang -verify=ompx -fopenmp %s
-// RUN: %clang -c -Xclang -verify=ompx -fopenmp-simd %s
-
-// RUN: %clang -c -Xclang -verify=ompx -fopenmp -fopenmp-extensions %s
-// RUN: %clang -c -Xclang -verify=ompx -fopenmp-simd -fopenmp-extensions %s
-
-// RUN: %clang -c -Xclang -verify=omp -fopenmp -fno-openmp-extensions %s
-// RUN: %clang -c -Xclang -verify=omp -fopenmp-simd -fno-openmp-extensions %s
-
-// RUN: %clang -c -Xclang -verify=omp -fopenmp \
-// RUN: -fopenmp-extensions -fno-openmp-extensions %s
-// RUN: %clang -c -Xclang -verify=omp -fopenmp-simd \
-// RUN: -fopenmp-extensions -fno-openmp-extensions %s
-
-// RUN: %clang -c -Xclang -verify=ompx -fopenmp \
-// RUN: -fno-openmp-extensions -fopenmp-extensions %s
-// RUN: %clang -c -Xclang -verify=ompx -fopenmp-simd \
-// RUN: -fno-openmp-extensions -fopenmp-extensions %s
-
-void foo() {
-  int x;
-  // ompx-no-diagnostics
-  // omp-error@+1 {{incorrect map 

[PATCH] D109255: [NFC][OpenMP] Add fsyntax-only to driver tests

2021-09-03 Thread Jinsong Ji via Phabricator via cfe-commits
jsji added a comment.

In D109255#2983052 , @ABataev wrote:

> In D109255#2983017 , @jdenny wrote:
>
>> This test is meant to check that the driver processes these options 
>> correctly.  -cc1 isn't the driver and often ignores either the positive or 
>> negative version of an option.
>
> Better not to do such checks, just need to check that driver correctly 
> translates driver options to the frontend options (using `-###`), better to 
> use `-verify` only with the frontend tests. Suggest to rework this test.

Make sense to me. How about we use `_cc1` as Alexey suggested here. Maybe Joel 
can add another test to test the driver correctly translates driver options to 
the frontend options (using `-###`) in `test/Driver` dir?


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D109255

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


[PATCH] D109255: [NFC][OpenMP] Add fsyntax-only to driver tests

2021-09-03 Thread Jinsong Ji via Phabricator via cfe-commits
jsji added a comment.

@ABataev Is this still OK for you?


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D109255

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


[PATCH] D109255: [NFC][OpenMP] Add fsyntax-only to driver tests

2021-09-03 Thread Jinsong Ji via Phabricator via cfe-commits
jsji updated this revision to Diff 370658.
jsji added a comment.

Use driver + -fsyntax-only.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D109255

Files:
  clang/test/OpenMP/driver-fopenmp-extensions.c


Index: clang/test/OpenMP/driver-fopenmp-extensions.c
===
--- clang/test/OpenMP/driver-fopenmp-extensions.c
+++ clang/test/OpenMP/driver-fopenmp-extensions.c
@@ -1,20 +1,20 @@
-// RUN: %clang -c -Xclang -verify=ompx -fopenmp %s
-// RUN: %clang -c -Xclang -verify=ompx -fopenmp-simd %s
+// RUN: %clang -c -fsyntax-only -Xclang  -verify=ompx -fopenmp %s
+// RUN: %clang -c -fsyntax-only -Xclang  -verify=ompx -fopenmp-simd %s
 
-// RUN: %clang -c -Xclang -verify=ompx -fopenmp -fopenmp-extensions %s
-// RUN: %clang -c -Xclang -verify=ompx -fopenmp-simd -fopenmp-extensions %s
+// RUN: %clang -c -fsyntax-only -Xclang  -verify=ompx -fopenmp 
-fopenmp-extensions %s
+// RUN: %clang -c -fsyntax-only -Xclang  -verify=ompx -fopenmp-simd 
-fopenmp-extensions %s
 
-// RUN: %clang -c -Xclang -verify=omp -fopenmp -fno-openmp-extensions %s
-// RUN: %clang -c -Xclang -verify=omp -fopenmp-simd -fno-openmp-extensions %s
+// RUN: %clang -c -fsyntax-only -Xclang  -verify=omp -fopenmp 
-fno-openmp-extensions %s
+// RUN: %clang -c -fsyntax-only -Xclang  -verify=omp -fopenmp-simd 
-fno-openmp-extensions %s
 
-// RUN: %clang -c -Xclang -verify=omp -fopenmp \
+// RUN: %clang -c -fsyntax-only -Xclang  -verify=omp -fopenmp \
 // RUN: -fopenmp-extensions -fno-openmp-extensions %s
-// RUN: %clang -c -Xclang -verify=omp -fopenmp-simd \
+// RUN: %clang -c -fsyntax-only -Xclang  -verify=omp -fopenmp-simd \
 // RUN: -fopenmp-extensions -fno-openmp-extensions %s
 
-// RUN: %clang -c -Xclang -verify=ompx -fopenmp \
+// RUN: %clang -c -fsyntax-only -Xclang  -verify=ompx -fopenmp \
 // RUN: -fno-openmp-extensions -fopenmp-extensions %s
-// RUN: %clang -c -Xclang -verify=ompx -fopenmp-simd \
+// RUN: %clang -c -fsyntax-only -Xclang  -verify=ompx -fopenmp-simd \
 // RUN: -fno-openmp-extensions -fopenmp-extensions %s
 
 void foo() {


Index: clang/test/OpenMP/driver-fopenmp-extensions.c
===
--- clang/test/OpenMP/driver-fopenmp-extensions.c
+++ clang/test/OpenMP/driver-fopenmp-extensions.c
@@ -1,20 +1,20 @@
-// RUN: %clang -c -Xclang -verify=ompx -fopenmp %s
-// RUN: %clang -c -Xclang -verify=ompx -fopenmp-simd %s
+// RUN: %clang -c -fsyntax-only -Xclang  -verify=ompx -fopenmp %s
+// RUN: %clang -c -fsyntax-only -Xclang  -verify=ompx -fopenmp-simd %s
 
-// RUN: %clang -c -Xclang -verify=ompx -fopenmp -fopenmp-extensions %s
-// RUN: %clang -c -Xclang -verify=ompx -fopenmp-simd -fopenmp-extensions %s
+// RUN: %clang -c -fsyntax-only -Xclang  -verify=ompx -fopenmp -fopenmp-extensions %s
+// RUN: %clang -c -fsyntax-only -Xclang  -verify=ompx -fopenmp-simd -fopenmp-extensions %s
 
-// RUN: %clang -c -Xclang -verify=omp -fopenmp -fno-openmp-extensions %s
-// RUN: %clang -c -Xclang -verify=omp -fopenmp-simd -fno-openmp-extensions %s
+// RUN: %clang -c -fsyntax-only -Xclang  -verify=omp -fopenmp -fno-openmp-extensions %s
+// RUN: %clang -c -fsyntax-only -Xclang  -verify=omp -fopenmp-simd -fno-openmp-extensions %s
 
-// RUN: %clang -c -Xclang -verify=omp -fopenmp \
+// RUN: %clang -c -fsyntax-only -Xclang  -verify=omp -fopenmp \
 // RUN: -fopenmp-extensions -fno-openmp-extensions %s
-// RUN: %clang -c -Xclang -verify=omp -fopenmp-simd \
+// RUN: %clang -c -fsyntax-only -Xclang  -verify=omp -fopenmp-simd \
 // RUN: -fopenmp-extensions -fno-openmp-extensions %s
 
-// RUN: %clang -c -Xclang -verify=ompx -fopenmp \
+// RUN: %clang -c -fsyntax-only -Xclang  -verify=ompx -fopenmp \
 // RUN: -fno-openmp-extensions -fopenmp-extensions %s
-// RUN: %clang -c -Xclang -verify=ompx -fopenmp-simd \
+// RUN: %clang -c -fsyntax-only -Xclang  -verify=ompx -fopenmp-simd \
 // RUN: -fno-openmp-extensions -fopenmp-extensions %s
 
 void foo() {
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D109255: [NFC][OpenMP] Add fsyntax-only to driver tests

2021-09-03 Thread Jinsong Ji via Phabricator via cfe-commits
jsji added a comment.

In D109255#2983017 , @jdenny wrote:

> This test is meant to check that the driver processes these options 
> correctly.  -cc1 isn't the driver and often ignores either the positive or 
> negative version of an option.

OK, I can revert to driver + fsyntax-only if that is preferred?


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D109255

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


[PATCH] D109255: [NFC][OpenMP] Add fsyntax-only to driver tests

2021-09-03 Thread Jinsong Ji via Phabricator via cfe-commits
jsji added a comment.

In D109255#2983002 , @ABataev wrote:

> I think we can use just `clang_cc1` here instead of `%clang -c`

Good idea.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D109255

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


[PATCH] D109255: [NFC][OpenMP] Add fsyntax-only to driver tests

2021-09-03 Thread Jinsong Ji via Phabricator via cfe-commits
jsji updated this revision to Diff 370653.
jsji added a comment.

Use clang_cc1 instead.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D109255

Files:
  clang/test/OpenMP/driver-fopenmp-extensions.c


Index: clang/test/OpenMP/driver-fopenmp-extensions.c
===
--- clang/test/OpenMP/driver-fopenmp-extensions.c
+++ clang/test/OpenMP/driver-fopenmp-extensions.c
@@ -1,20 +1,20 @@
-// RUN: %clang -c -Xclang -verify=ompx -fopenmp %s
-// RUN: %clang -c -Xclang -verify=ompx -fopenmp-simd %s
+// RUN: %clang_cc1  -verify=ompx -fopenmp %s
+// RUN: %clang_cc1  -verify=ompx -fopenmp-simd %s
 
-// RUN: %clang -c -Xclang -verify=ompx -fopenmp -fopenmp-extensions %s
-// RUN: %clang -c -Xclang -verify=ompx -fopenmp-simd -fopenmp-extensions %s
+// RUN: %clang_cc1  -verify=ompx -fopenmp -fopenmp-extensions %s
+// RUN: %clang_cc1  -verify=ompx -fopenmp-simd -fopenmp-extensions %s
 
-// RUN: %clang -c -Xclang -verify=omp -fopenmp -fno-openmp-extensions %s
-// RUN: %clang -c -Xclang -verify=omp -fopenmp-simd -fno-openmp-extensions %s
+// RUN: %clang_cc1  -verify=omp -fopenmp -fno-openmp-extensions %s
+// RUN: %clang_cc1  -verify=omp -fopenmp-simd -fno-openmp-extensions %s
 
-// RUN: %clang -c -Xclang -verify=omp -fopenmp \
+// RUN: %clang_cc1  -verify=omp -fopenmp \
 // RUN: -fopenmp-extensions -fno-openmp-extensions %s
-// RUN: %clang -c -Xclang -verify=omp -fopenmp-simd \
+// RUN: %clang_cc1  -verify=omp -fopenmp-simd \
 // RUN: -fopenmp-extensions -fno-openmp-extensions %s
 
-// RUN: %clang -c -Xclang -verify=ompx -fopenmp \
+// RUN: %clang_cc1  -verify=ompx -fopenmp \
 // RUN: -fno-openmp-extensions -fopenmp-extensions %s
-// RUN: %clang -c -Xclang -verify=ompx -fopenmp-simd \
+// RUN: %clang_cc1  -verify=ompx -fopenmp-simd \
 // RUN: -fno-openmp-extensions -fopenmp-extensions %s
 
 void foo() {


Index: clang/test/OpenMP/driver-fopenmp-extensions.c
===
--- clang/test/OpenMP/driver-fopenmp-extensions.c
+++ clang/test/OpenMP/driver-fopenmp-extensions.c
@@ -1,20 +1,20 @@
-// RUN: %clang -c -Xclang -verify=ompx -fopenmp %s
-// RUN: %clang -c -Xclang -verify=ompx -fopenmp-simd %s
+// RUN: %clang_cc1  -verify=ompx -fopenmp %s
+// RUN: %clang_cc1  -verify=ompx -fopenmp-simd %s
 
-// RUN: %clang -c -Xclang -verify=ompx -fopenmp -fopenmp-extensions %s
-// RUN: %clang -c -Xclang -verify=ompx -fopenmp-simd -fopenmp-extensions %s
+// RUN: %clang_cc1  -verify=ompx -fopenmp -fopenmp-extensions %s
+// RUN: %clang_cc1  -verify=ompx -fopenmp-simd -fopenmp-extensions %s
 
-// RUN: %clang -c -Xclang -verify=omp -fopenmp -fno-openmp-extensions %s
-// RUN: %clang -c -Xclang -verify=omp -fopenmp-simd -fno-openmp-extensions %s
+// RUN: %clang_cc1  -verify=omp -fopenmp -fno-openmp-extensions %s
+// RUN: %clang_cc1  -verify=omp -fopenmp-simd -fno-openmp-extensions %s
 
-// RUN: %clang -c -Xclang -verify=omp -fopenmp \
+// RUN: %clang_cc1  -verify=omp -fopenmp \
 // RUN: -fopenmp-extensions -fno-openmp-extensions %s
-// RUN: %clang -c -Xclang -verify=omp -fopenmp-simd \
+// RUN: %clang_cc1  -verify=omp -fopenmp-simd \
 // RUN: -fopenmp-extensions -fno-openmp-extensions %s
 
-// RUN: %clang -c -Xclang -verify=ompx -fopenmp \
+// RUN: %clang_cc1  -verify=ompx -fopenmp \
 // RUN: -fno-openmp-extensions -fopenmp-extensions %s
-// RUN: %clang -c -Xclang -verify=ompx -fopenmp-simd \
+// RUN: %clang_cc1  -verify=ompx -fopenmp-simd \
 // RUN: -fno-openmp-extensions -fopenmp-extensions %s
 
 void foo() {
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D109255: [NFC][OpenMP] Add fsyntax-only to driver tests

2021-09-03 Thread Jinsong Ji via Phabricator via cfe-commits
jsji created this revision.
jsji added reviewers: jdenny, ABataev, jdoerfert.
Herald added subscribers: guansong, yaxunl.
jsji requested review of this revision.
Herald added subscribers: cfe-commits, sstefan1.
Herald added a project: clang.

The test driver-fopenmp-extensions.c is failing on platforms that does
not use integrated-as. It can be reproduced using -fno-integrated-as on
Linux too.

bin/clang -c -Xclang -verify=omp -fopenmp  -fopenmp-extensions
-fno-openmp-extensions
../llvm-project/clang/test/OpenMP/driver-fopenmp-extensions.c
-fno-integrated-as
Assembler messages:
Error: can't open /tmp/driver-fopenmp-extensions-8fafe8.s for reading:
No such file or directory
clang-14: error: assembler command failed with exit code 1 (use -v to
see invocation)

The goal of this test is to verify syntax diags only,
so I think we should add -fsyntax-only to the test similar to other diag
tests.


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D109255

Files:
  clang/test/OpenMP/driver-fopenmp-extensions.c


Index: clang/test/OpenMP/driver-fopenmp-extensions.c
===
--- clang/test/OpenMP/driver-fopenmp-extensions.c
+++ clang/test/OpenMP/driver-fopenmp-extensions.c
@@ -1,20 +1,20 @@
-// RUN: %clang -c -Xclang -verify=ompx -fopenmp %s
-// RUN: %clang -c -Xclang -verify=ompx -fopenmp-simd %s
+// RUN: %clang -c -fsyntax-only -Xclang -verify=ompx -fopenmp %s
+// RUN: %clang -c -fsyntax-only -Xclang -verify=ompx -fopenmp-simd %s
 
-// RUN: %clang -c -Xclang -verify=ompx -fopenmp -fopenmp-extensions %s
-// RUN: %clang -c -Xclang -verify=ompx -fopenmp-simd -fopenmp-extensions %s
+// RUN: %clang -c -fsyntax-only -Xclang -verify=ompx -fopenmp 
-fopenmp-extensions %s
+// RUN: %clang -c -fsyntax-only -Xclang -verify=ompx -fopenmp-simd 
-fopenmp-extensions %s
 
-// RUN: %clang -c -Xclang -verify=omp -fopenmp -fno-openmp-extensions %s
-// RUN: %clang -c -Xclang -verify=omp -fopenmp-simd -fno-openmp-extensions %s
+// RUN: %clang -c -fsyntax-only -Xclang -verify=omp -fopenmp 
-fno-openmp-extensions %s
+// RUN: %clang -c -fsyntax-only -Xclang -verify=omp -fopenmp-simd 
-fno-openmp-extensions %s
 
-// RUN: %clang -c -Xclang -verify=omp -fopenmp \
+// RUN: %clang -c -fsyntax-only -Xclang -verify=omp -fopenmp \
 // RUN: -fopenmp-extensions -fno-openmp-extensions %s
-// RUN: %clang -c -Xclang -verify=omp -fopenmp-simd \
+// RUN: %clang -c -fsyntax-only -Xclang -verify=omp -fopenmp-simd \
 // RUN: -fopenmp-extensions -fno-openmp-extensions %s
 
-// RUN: %clang -c -Xclang -verify=ompx -fopenmp \
+// RUN: %clang -c -fsyntax-only -Xclang -verify=ompx -fopenmp \
 // RUN: -fno-openmp-extensions -fopenmp-extensions %s
-// RUN: %clang -c -Xclang -verify=ompx -fopenmp-simd \
+// RUN: %clang -c -fsyntax-only -Xclang -verify=ompx -fopenmp-simd \
 // RUN: -fno-openmp-extensions -fopenmp-extensions %s
 
 void foo() {


Index: clang/test/OpenMP/driver-fopenmp-extensions.c
===
--- clang/test/OpenMP/driver-fopenmp-extensions.c
+++ clang/test/OpenMP/driver-fopenmp-extensions.c
@@ -1,20 +1,20 @@
-// RUN: %clang -c -Xclang -verify=ompx -fopenmp %s
-// RUN: %clang -c -Xclang -verify=ompx -fopenmp-simd %s
+// RUN: %clang -c -fsyntax-only -Xclang -verify=ompx -fopenmp %s
+// RUN: %clang -c -fsyntax-only -Xclang -verify=ompx -fopenmp-simd %s
 
-// RUN: %clang -c -Xclang -verify=ompx -fopenmp -fopenmp-extensions %s
-// RUN: %clang -c -Xclang -verify=ompx -fopenmp-simd -fopenmp-extensions %s
+// RUN: %clang -c -fsyntax-only -Xclang -verify=ompx -fopenmp -fopenmp-extensions %s
+// RUN: %clang -c -fsyntax-only -Xclang -verify=ompx -fopenmp-simd -fopenmp-extensions %s
 
-// RUN: %clang -c -Xclang -verify=omp -fopenmp -fno-openmp-extensions %s
-// RUN: %clang -c -Xclang -verify=omp -fopenmp-simd -fno-openmp-extensions %s
+// RUN: %clang -c -fsyntax-only -Xclang -verify=omp -fopenmp -fno-openmp-extensions %s
+// RUN: %clang -c -fsyntax-only -Xclang -verify=omp -fopenmp-simd -fno-openmp-extensions %s
 
-// RUN: %clang -c -Xclang -verify=omp -fopenmp \
+// RUN: %clang -c -fsyntax-only -Xclang -verify=omp -fopenmp \
 // RUN: -fopenmp-extensions -fno-openmp-extensions %s
-// RUN: %clang -c -Xclang -verify=omp -fopenmp-simd \
+// RUN: %clang -c -fsyntax-only -Xclang -verify=omp -fopenmp-simd \
 // RUN: -fopenmp-extensions -fno-openmp-extensions %s
 
-// RUN: %clang -c -Xclang -verify=ompx -fopenmp \
+// RUN: %clang -c -fsyntax-only -Xclang -verify=ompx -fopenmp \
 // RUN: -fno-openmp-extensions -fopenmp-extensions %s
-// RUN: %clang -c -Xclang -verify=ompx -fopenmp-simd \
+// RUN: %clang -c -fsyntax-only -Xclang -verify=ompx -fopenmp-simd \
 // RUN: -fno-openmp-extensions -fopenmp-extensions %s
 
 void foo() {
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D109060: [AIX] Disable LIT tests on AIX due to lack of Objective-C support

2021-09-01 Thread Jinsong Ji via Phabricator via cfe-commits
jsji added a comment.

In D109060#2976752 , @Jake-Egan wrote:

> In D109060#2976745 , @jsji wrote:
>
>> For `clang/test/CodeGenObjCXX` and `clang/test/CodeGenObjC`, can we add 
>> lit.local.cfg and add the unsupport there, no adding to every files in the 
>> folder?
>
> These tests are a subset of `clang/test/CodeGenObjCXX` and 
> `clang/test/CodeGenObjC`. The rest of the tests in those folders are 
> supported (cross-compiling).

We don't have `Objective-C ` support, so any passing tests are just somehow a 
luck, and I don't think it is meaningful to even run those tests.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D109060

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


[PATCH] D109060: Disable LIT tests on AIX due to lack of Objective-C support

2021-09-01 Thread Jinsong Ji via Phabricator via cfe-commits
jsji added a comment.

For `clang/test/CodeGenObjCXX` and `clang/test/CodeGenObjC`, can we add 
lit.local.cfg and add the unsupport there, no adding to every files in the 
folder?


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D109060

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


[PATCH] D107786: [AIX]: Fix option processing for -b

2021-08-09 Thread Jinsong Ji via Phabricator via cfe-commits
jsji added inline comments.



Comment at: clang/test/Driver/Xlinker-args.c:26
 // LINUX: "--no-demangle" "-e" "_start" "one" "two" "three" "four" "-z" "five" 
"-r" {{.*}} "-T" "a.lds"
-// AIX: "-b" "one" 
+// AIX: "-b" "one" "-b" "two"
 // NOT-AIX: error: unsupported option '-b' for target 'powerpc-unknown-linux'

etiotto wrote:
> jsji wrote:
> > It would be better if we can tested mixing other options like `-z` .
> I think the test is adequate as it guarantees options passed via "-b" are not 
> going to be duplicated (which is the problem this PR addresses). 
Yes, it is testing what it tries to fix. However, it does NOT test what it 
*might* break. This is somehow similar to last patch, it does test what it 
wants -- passing down the option, but it did not test whether it pass more than 
needed.

The fix changes code related to handling of `-z`, so there is some risk of 
breaking `-z`, adding tests will ensure that the fix is good enough, and also 
prevent future regressions.

But yeah, as I said it is *better* to do that, not a must, depending on the 
quality level.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D107786

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


[PATCH] D107786: [AIX]: Fix option processing for -b

2021-08-09 Thread Jinsong Ji via Phabricator via cfe-commits
jsji accepted this revision as: jsji.
jsji added a comment.

LGTM, Thanks.




Comment at: clang/test/Driver/Xlinker-args.c:26
 // LINUX: "--no-demangle" "-e" "_start" "one" "two" "three" "four" "-z" "five" 
"-r" {{.*}} "-T" "a.lds"
-// AIX: "-b" "one" 
+// AIX: "-b" "one" "-b" "two"
 // NOT-AIX: error: unsupported option '-b' for target 'powerpc-unknown-linux'

It would be better if we can tested mixing other options like `-z` .


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D107786

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


[PATCH] D107786: [AIX]: Fix option processing for -b

2021-08-09 Thread Jinsong Ji via Phabricator via cfe-commits
jsji added a comment.

Tests please?


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D107786

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


[PATCH] D107461: [PowerPC] Do not define __PRIVILEGED__

2021-08-05 Thread Jinsong Ji via Phabricator via cfe-commits
jsji added a comment.

> x64 debian > Clang.Driver::ppc-mprivileged-support-check.c

The changed test is failing ?


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D107461

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


[PATCH] D107077: [PowerPC] Fix return type of XL compat CAS

2021-07-29 Thread Jinsong Ji via Phabricator via cfe-commits
jsji accepted this revision as: jsji.
jsji added a comment.
This revision is now accepted and ready to land.

LGTM. Thanks!


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D107077

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


[PATCH] D106920: [AIX] Update fetch_and_add type

2021-07-27 Thread Jinsong Ji 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 rGedbdf8e5b5aa: [AIX] Update fetch_and_add type (authored by 
jsji).

Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D106920

Files:
  clang/include/clang/Basic/BuiltinsPPC.def
  clang/test/CodeGen/builtins-ppc-xlcompat-fetch-error.c
  clang/test/CodeGen/builtins-ppc-xlcompat-fetch.c


Index: clang/test/CodeGen/builtins-ppc-xlcompat-fetch.c
===
--- clang/test/CodeGen/builtins-ppc-xlcompat-fetch.c
+++ clang/test/CodeGen/builtins-ppc-xlcompat-fetch.c
@@ -16,7 +16,7 @@
 // CHECK-NEXT:[[TMP2:%.*]] = atomicrmw add i32* [[A_ADDR]], i32 [[TMP1]] 
monotonic, align 4
 // CHECK-NEXT:ret void
 //
-void test_builtin_ppc_fetch_and_add(unsigned int a, unsigned int b) {
+void test_builtin_ppc_fetch_and_add(int a, int b) {
   __fetch_and_add(, b);
 }
 
@@ -31,7 +31,7 @@
 // CHECK-NEXT:[[TMP2:%.*]] = atomicrmw add i64* [[A_ADDR]], i64 [[TMP1]] 
monotonic, align 8
 // CHECK-NEXT:ret void
 //
-void test_builtin_ppc_fetch_and_addlp(unsigned long a, unsigned long b) {
+void test_builtin_ppc_fetch_and_addlp(long a, long b) {
   __fetch_and_addlp(, b);
 }
 // CHECK-LABEL: @test_builtin_ppc_fetch_and_and(
Index: clang/test/CodeGen/builtins-ppc-xlcompat-fetch-error.c
===
--- clang/test/CodeGen/builtins-ppc-xlcompat-fetch-error.c
+++ clang/test/CodeGen/builtins-ppc-xlcompat-fetch-error.c
@@ -1,17 +1,18 @@
+// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py
 // REQUIRES: powerpc-registered-target
 // RUN: %clang_cc1 -triple powerpc64-unknown-aix -target-cpu pwr8 \
 // RUN:  -verify %s
 
 void test_builtin_ppc_fetch_and_add2() {
-  volatile int a = 0;
+  volatile unsigned int a = 0;
   unsigned int b = 0;
 
-  __fetch_and_add(, b); // expected-warning {{passing 'volatile int *' to 
parameter of type 'volatile unsigned int *' converts between pointers to 
integer types with different sign}}
+  __fetch_and_add(, b); // expected-warning {{passing 'volatile unsigned int 
*' to parameter of type 'volatile int *' converts between pointers to integer 
types with different sign}}
 }
 
 void test_builtin_ppc_fetch_and_addlp() {
-  volatile long a = 0;
+  volatile unsigned long a = 0;
   unsigned long b = 0;
 
-  __fetch_and_addlp(, b); // expected-warning {{passing 'volatile long *' to 
parameter of type 'volatile unsigned long *' converts between pointers to 
integer types with different sign}}
+  __fetch_and_addlp(, b); // expected-warning {{passing 'volatile unsigned 
long *' to parameter of type 'volatile long *' converts between pointers to 
integer types with different sign}}
 }
Index: clang/include/clang/Basic/BuiltinsPPC.def
===
--- clang/include/clang/Basic/BuiltinsPPC.def
+++ clang/include/clang/Basic/BuiltinsPPC.def
@@ -64,8 +64,8 @@
 BUILTIN(__builtin_ppc_fsqrts, "ff", "")
 BUILTIN(__builtin_ppc_compare_and_swap, "iiD*i*i", "")
 BUILTIN(__builtin_ppc_compare_and_swaplp, "iLiD*Li*Li", "")
-BUILTIN(__builtin_ppc_fetch_and_add, "UiUiD*Ui", "")
-BUILTIN(__builtin_ppc_fetch_and_addlp, "ULiULiD*ULi", "")
+BUILTIN(__builtin_ppc_fetch_and_add, "iiD*i", "")
+BUILTIN(__builtin_ppc_fetch_and_addlp, "LiLiD*Li", "")
 BUILTIN(__builtin_ppc_fetch_and_and, "UiUiD*Ui", "")
 BUILTIN(__builtin_ppc_fetch_and_andlp, "ULiULiD*ULi", "")
 BUILTIN(__builtin_ppc_fetch_and_or, "UiUiD*Ui", "")


Index: clang/test/CodeGen/builtins-ppc-xlcompat-fetch.c
===
--- clang/test/CodeGen/builtins-ppc-xlcompat-fetch.c
+++ clang/test/CodeGen/builtins-ppc-xlcompat-fetch.c
@@ -16,7 +16,7 @@
 // CHECK-NEXT:[[TMP2:%.*]] = atomicrmw add i32* [[A_ADDR]], i32 [[TMP1]] monotonic, align 4
 // CHECK-NEXT:ret void
 //
-void test_builtin_ppc_fetch_and_add(unsigned int a, unsigned int b) {
+void test_builtin_ppc_fetch_and_add(int a, int b) {
   __fetch_and_add(, b);
 }
 
@@ -31,7 +31,7 @@
 // CHECK-NEXT:[[TMP2:%.*]] = atomicrmw add i64* [[A_ADDR]], i64 [[TMP1]] monotonic, align 8
 // CHECK-NEXT:ret void
 //
-void test_builtin_ppc_fetch_and_addlp(unsigned long a, unsigned long b) {
+void test_builtin_ppc_fetch_and_addlp(long a, long b) {
   __fetch_and_addlp(, b);
 }
 // CHECK-LABEL: @test_builtin_ppc_fetch_and_and(
Index: clang/test/CodeGen/builtins-ppc-xlcompat-fetch-error.c
===
--- clang/test/CodeGen/builtins-ppc-xlcompat-fetch-error.c
+++ clang/test/CodeGen/builtins-ppc-xlcompat-fetch-error.c
@@ -1,17 +1,18 @@
+// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py
 // REQUIRES: powerpc-registered-target
 // RUN: %clang_cc1 -triple powerpc64-unknown-aix 

[PATCH] D106920: [AIX] Update fetch_and_add type

2021-07-27 Thread Jinsong Ji via Phabricator via cfe-commits
jsji updated this revision to Diff 362197.
jsji edited the summary of this revision.
jsji added a comment.

Update tests.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D106920

Files:
  clang/include/clang/Basic/BuiltinsPPC.def
  clang/test/CodeGen/builtins-ppc-xlcompat-fetch-error.c
  clang/test/CodeGen/builtins-ppc-xlcompat-fetch.c


Index: clang/test/CodeGen/builtins-ppc-xlcompat-fetch.c
===
--- clang/test/CodeGen/builtins-ppc-xlcompat-fetch.c
+++ clang/test/CodeGen/builtins-ppc-xlcompat-fetch.c
@@ -16,7 +16,7 @@
 // CHECK-NEXT:[[TMP2:%.*]] = atomicrmw add i32* [[A_ADDR]], i32 [[TMP1]] 
monotonic, align 4
 // CHECK-NEXT:ret void
 //
-void test_builtin_ppc_fetch_and_add(unsigned int a, unsigned int b) {
+void test_builtin_ppc_fetch_and_add(int a, int b) {
   __fetch_and_add(, b);
 }
 
@@ -31,7 +31,7 @@
 // CHECK-NEXT:[[TMP2:%.*]] = atomicrmw add i64* [[A_ADDR]], i64 [[TMP1]] 
monotonic, align 8
 // CHECK-NEXT:ret void
 //
-void test_builtin_ppc_fetch_and_addlp(unsigned long a, unsigned long b) {
+void test_builtin_ppc_fetch_and_addlp(long a, long b) {
   __fetch_and_addlp(, b);
 }
 // CHECK-LABEL: @test_builtin_ppc_fetch_and_and(
Index: clang/test/CodeGen/builtins-ppc-xlcompat-fetch-error.c
===
--- clang/test/CodeGen/builtins-ppc-xlcompat-fetch-error.c
+++ clang/test/CodeGen/builtins-ppc-xlcompat-fetch-error.c
@@ -1,17 +1,18 @@
+// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py
 // REQUIRES: powerpc-registered-target
 // RUN: %clang_cc1 -triple powerpc64-unknown-aix -target-cpu pwr8 \
 // RUN:  -verify %s
 
 void test_builtin_ppc_fetch_and_add2() {
-  volatile int a = 0;
+  volatile unsigned int a = 0;
   unsigned int b = 0;
 
-  __fetch_and_add(, b); // expected-warning {{passing 'volatile int *' to 
parameter of type 'volatile unsigned int *' converts between pointers to 
integer types with different sign}}
+  __fetch_and_add(, b); // expected-warning {{passing 'volatile unsigned int 
*' to parameter of type 'volatile int *' converts between pointers to integer 
types with different sign}}
 }
 
 void test_builtin_ppc_fetch_and_addlp() {
-  volatile long a = 0;
+  volatile unsigned long a = 0;
   unsigned long b = 0;
 
-  __fetch_and_addlp(, b); // expected-warning {{passing 'volatile long *' to 
parameter of type 'volatile unsigned long *' converts between pointers to 
integer types with different sign}}
+  __fetch_and_addlp(, b); // expected-warning {{passing 'volatile unsigned 
long *' to parameter of type 'volatile long *' converts between pointers to 
integer types with different sign}}
 }
Index: clang/include/clang/Basic/BuiltinsPPC.def
===
--- clang/include/clang/Basic/BuiltinsPPC.def
+++ clang/include/clang/Basic/BuiltinsPPC.def
@@ -64,8 +64,8 @@
 BUILTIN(__builtin_ppc_fsqrts, "ff", "")
 BUILTIN(__builtin_ppc_compare_and_swap, "iiD*i*i", "")
 BUILTIN(__builtin_ppc_compare_and_swaplp, "iLiD*Li*Li", "")
-BUILTIN(__builtin_ppc_fetch_and_add, "UiUiD*Ui", "")
-BUILTIN(__builtin_ppc_fetch_and_addlp, "ULiULiD*ULi", "")
+BUILTIN(__builtin_ppc_fetch_and_add, "iiD*i", "")
+BUILTIN(__builtin_ppc_fetch_and_addlp, "LiLiD*Li", "")
 BUILTIN(__builtin_ppc_fetch_and_and, "UiUiD*Ui", "")
 BUILTIN(__builtin_ppc_fetch_and_andlp, "ULiULiD*ULi", "")
 BUILTIN(__builtin_ppc_fetch_and_or, "UiUiD*Ui", "")


Index: clang/test/CodeGen/builtins-ppc-xlcompat-fetch.c
===
--- clang/test/CodeGen/builtins-ppc-xlcompat-fetch.c
+++ clang/test/CodeGen/builtins-ppc-xlcompat-fetch.c
@@ -16,7 +16,7 @@
 // CHECK-NEXT:[[TMP2:%.*]] = atomicrmw add i32* [[A_ADDR]], i32 [[TMP1]] monotonic, align 4
 // CHECK-NEXT:ret void
 //
-void test_builtin_ppc_fetch_and_add(unsigned int a, unsigned int b) {
+void test_builtin_ppc_fetch_and_add(int a, int b) {
   __fetch_and_add(, b);
 }
 
@@ -31,7 +31,7 @@
 // CHECK-NEXT:[[TMP2:%.*]] = atomicrmw add i64* [[A_ADDR]], i64 [[TMP1]] monotonic, align 8
 // CHECK-NEXT:ret void
 //
-void test_builtin_ppc_fetch_and_addlp(unsigned long a, unsigned long b) {
+void test_builtin_ppc_fetch_and_addlp(long a, long b) {
   __fetch_and_addlp(, b);
 }
 // CHECK-LABEL: @test_builtin_ppc_fetch_and_and(
Index: clang/test/CodeGen/builtins-ppc-xlcompat-fetch-error.c
===
--- clang/test/CodeGen/builtins-ppc-xlcompat-fetch-error.c
+++ clang/test/CodeGen/builtins-ppc-xlcompat-fetch-error.c
@@ -1,17 +1,18 @@
+// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py
 // REQUIRES: powerpc-registered-target
 // RUN: %clang_cc1 -triple powerpc64-unknown-aix -target-cpu pwr8 \
 // RUN:  -verify %s
 
 void test_builtin_ppc_fetch_and_add2() {
-  volatile 

[PATCH] D106920: [AIX] Update fetch_and_add type

2021-07-27 Thread Jinsong Ji via Phabricator via cfe-commits
jsji created this revision.
Herald added subscribers: steven.zhang, kbarton, nemanjai.
jsji requested review of this revision.
Herald added a project: clang.
Herald added a subscriber: cfe-commits.

It turns out that AIX kernerl are definiing int instead of unsing int
for fectch_and_add.

Legacy XL also define this to be signed.

https://www.ibm.com/docs/en/aix/7.2?topic=f-fetch-add-kernel-services

So update the type for compat.

Reviewere: hubert.reinterpretcast, Whitney, #PowerPC 



Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D106920

Files:
  clang/include/clang/Basic/BuiltinsPPC.def
  clang/test/CodeGen/builtins-ppc-xlcompat-fetch-error.c
  clang/test/CodeGen/builtins-ppc-xlcompat-fetch.c


Index: clang/test/CodeGen/builtins-ppc-xlcompat-fetch.c
===
--- clang/test/CodeGen/builtins-ppc-xlcompat-fetch.c
+++ clang/test/CodeGen/builtins-ppc-xlcompat-fetch.c
@@ -16,7 +16,7 @@
 // CHECK-NEXT:[[TMP2:%.*]] = atomicrmw add i32* [[A_ADDR]], i32 [[TMP1]] 
monotonic, align 4
 // CHECK-NEXT:ret void
 //
-void test_builtin_ppc_fetch_and_add(unsigned int a, unsigned int b) {
+void test_builtin_ppc_fetch_and_add(int a, unsigned int b) {
   __fetch_and_add(, b);
 }
 
@@ -31,7 +31,7 @@
 // CHECK-NEXT:[[TMP2:%.*]] = atomicrmw add i64* [[A_ADDR]], i64 [[TMP1]] 
monotonic, align 8
 // CHECK-NEXT:ret void
 //
-void test_builtin_ppc_fetch_and_addlp(unsigned long a, unsigned long b) {
+void test_builtin_ppc_fetch_and_addlp(long a, unsigned long b) {
   __fetch_and_addlp(, b);
 }
 // CHECK-LABEL: @test_builtin_ppc_fetch_and_and(
Index: clang/test/CodeGen/builtins-ppc-xlcompat-fetch-error.c
===
--- clang/test/CodeGen/builtins-ppc-xlcompat-fetch-error.c
+++ clang/test/CodeGen/builtins-ppc-xlcompat-fetch-error.c
@@ -1,17 +1,18 @@
+// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py
 // REQUIRES: powerpc-registered-target
 // RUN: %clang_cc1 -triple powerpc64-unknown-aix -target-cpu pwr8 \
 // RUN:  -verify %s
 
 void test_builtin_ppc_fetch_and_add2() {
-  volatile int a = 0;
+  volatile unsigned int a = 0;
   unsigned int b = 0;
 
-  __fetch_and_add(, b); // expected-warning {{passing 'volatile int *' to 
parameter of type 'volatile unsigned int *' converts between pointers to 
integer types with different sign}}
+  __fetch_and_add(, b); // expected-warning {{passing 'volatile unsigned int 
*' to parameter of type 'volatile int *' converts between pointers to integer 
types with different sign}}
 }
 
 void test_builtin_ppc_fetch_and_addlp() {
-  volatile long a = 0;
+  volatile unsigned long a = 0;
   unsigned long b = 0;
 
-  __fetch_and_addlp(, b); // expected-warning {{passing 'volatile long *' to 
parameter of type 'volatile unsigned long *' converts between pointers to 
integer types with different sign}}
+  __fetch_and_addlp(, b); // expected-warning {{passing 'volatile unsigned 
long *' to parameter of type 'volatile long *' converts between pointers to 
integer types with different sign}}
 }
Index: clang/include/clang/Basic/BuiltinsPPC.def
===
--- clang/include/clang/Basic/BuiltinsPPC.def
+++ clang/include/clang/Basic/BuiltinsPPC.def
@@ -64,8 +64,8 @@
 BUILTIN(__builtin_ppc_fsqrts, "ff", "")
 BUILTIN(__builtin_ppc_compare_and_swap, "iiD*i*i", "")
 BUILTIN(__builtin_ppc_compare_and_swaplp, "iLiD*Li*Li", "")
-BUILTIN(__builtin_ppc_fetch_and_add, "UiUiD*Ui", "")
-BUILTIN(__builtin_ppc_fetch_and_addlp, "ULiULiD*ULi", "")
+BUILTIN(__builtin_ppc_fetch_and_add, "iiD*i", "")
+BUILTIN(__builtin_ppc_fetch_and_addlp, "LiLiD*Li", "")
 BUILTIN(__builtin_ppc_fetch_and_and, "UiUiD*Ui", "")
 BUILTIN(__builtin_ppc_fetch_and_andlp, "ULiULiD*ULi", "")
 BUILTIN(__builtin_ppc_fetch_and_or, "UiUiD*Ui", "")


Index: clang/test/CodeGen/builtins-ppc-xlcompat-fetch.c
===
--- clang/test/CodeGen/builtins-ppc-xlcompat-fetch.c
+++ clang/test/CodeGen/builtins-ppc-xlcompat-fetch.c
@@ -16,7 +16,7 @@
 // CHECK-NEXT:[[TMP2:%.*]] = atomicrmw add i32* [[A_ADDR]], i32 [[TMP1]] monotonic, align 4
 // CHECK-NEXT:ret void
 //
-void test_builtin_ppc_fetch_and_add(unsigned int a, unsigned int b) {
+void test_builtin_ppc_fetch_and_add(int a, unsigned int b) {
   __fetch_and_add(, b);
 }
 
@@ -31,7 +31,7 @@
 // CHECK-NEXT:[[TMP2:%.*]] = atomicrmw add i64* [[A_ADDR]], i64 [[TMP1]] monotonic, align 8
 // CHECK-NEXT:ret void
 //
-void test_builtin_ppc_fetch_and_addlp(unsigned long a, unsigned long b) {
+void test_builtin_ppc_fetch_and_addlp(long a, unsigned long b) {
   __fetch_and_addlp(, b);
 }
 // CHECK-LABEL: @test_builtin_ppc_fetch_and_and(
Index: clang/test/CodeGen/builtins-ppc-xlcompat-fetch-error.c
===
--- 

[PATCH] D106914: [libclang] Check LLVM_HAVE_LINK_VERSION_SCRIPT

2021-07-27 Thread Jinsong Ji 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 rGe07f9342be71: [libclang] Check LLVM_HAVE_LINK_VERSION_SCRIPT 
(authored by jsji).

Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D106914

Files:
  clang/tools/libclang/CMakeLists.txt


Index: clang/tools/libclang/CMakeLists.txt
===
--- clang/tools/libclang/CMakeLists.txt
+++ clang/tools/libclang/CMakeLists.txt
@@ -76,7 +76,7 @@
 
 if (UNIX AND NOT APPLE)
   set(LLVM_EXPORTED_SYMBOL_FILE)
-  set(USE_VERSION_SCRIPT TRUE)
+  set(USE_VERSION_SCRIPT ${LLVM_HAVE_LINK_VERSION_SCRIPT})
 endif()
 
 if (LLVM_EXPORTED_SYMBOL_FILE)


Index: clang/tools/libclang/CMakeLists.txt
===
--- clang/tools/libclang/CMakeLists.txt
+++ clang/tools/libclang/CMakeLists.txt
@@ -76,7 +76,7 @@
 
 if (UNIX AND NOT APPLE)
   set(LLVM_EXPORTED_SYMBOL_FILE)
-  set(USE_VERSION_SCRIPT TRUE)
+  set(USE_VERSION_SCRIPT ${LLVM_HAVE_LINK_VERSION_SCRIPT})
 endif()
 
 if (LLVM_EXPORTED_SYMBOL_FILE)
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D105527: libclang.so: Make SONAME independent from LLVM version

2021-07-27 Thread Jinsong Ji via Phabricator via cfe-commits
jsji added inline comments.



Comment at: clang/tools/libclang/CMakeLists.txt:79
+  set(LLVM_EXPORTED_SYMBOL_FILE)
+  set(USE_VERSION_SCRIPT TRUE)
+endif()

jsji wrote:
> I think we should check LLVM_HAVE_LINK_VERSION_SCRIPT here, there are 
> platforms that does NOT support VERSION_SCRIPT.
https://reviews.llvm.org/D106914 posted to fix it.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D105527

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


[PATCH] D106914: [libclang] Check LLVM_HAVE_LINK_VERSION_SCRIPT

2021-07-27 Thread Jinsong Ji via Phabricator via cfe-commits
jsji created this revision.
jsji added reviewers: PowerPC, tstellar, MaskRay, hubert.reinterpretcast.
Herald added a subscriber: mgorny.
jsji requested review of this revision.
Herald added a project: clang.
Herald added a subscriber: cfe-commits.

There are some platform that might not have version script support,
don't try to use version script on those.


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D106914

Files:
  clang/tools/libclang/CMakeLists.txt


Index: clang/tools/libclang/CMakeLists.txt
===
--- clang/tools/libclang/CMakeLists.txt
+++ clang/tools/libclang/CMakeLists.txt
@@ -76,7 +76,7 @@
 
 if (UNIX AND NOT APPLE)
   set(LLVM_EXPORTED_SYMBOL_FILE)
-  set(USE_VERSION_SCRIPT TRUE)
+  set(USE_VERSION_SCRIPT ${LLVM_HAVE_LINK_VERSION_SCRIPT})
 endif()
 
 if (LLVM_EXPORTED_SYMBOL_FILE)


Index: clang/tools/libclang/CMakeLists.txt
===
--- clang/tools/libclang/CMakeLists.txt
+++ clang/tools/libclang/CMakeLists.txt
@@ -76,7 +76,7 @@
 
 if (UNIX AND NOT APPLE)
   set(LLVM_EXPORTED_SYMBOL_FILE)
-  set(USE_VERSION_SCRIPT TRUE)
+  set(USE_VERSION_SCRIPT ${LLVM_HAVE_LINK_VERSION_SCRIPT})
 endif()
 
 if (LLVM_EXPORTED_SYMBOL_FILE)
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D105527: libclang.so: Make SONAME independent from LLVM version

2021-07-27 Thread Jinsong Ji via Phabricator via cfe-commits
jsji added inline comments.



Comment at: clang/tools/libclang/CMakeLists.txt:79
+  set(LLVM_EXPORTED_SYMBOL_FILE)
+  set(USE_VERSION_SCRIPT TRUE)
+endif()

I think we should check LLVM_HAVE_LINK_VERSION_SCRIPT here, there are platforms 
that does NOT support VERSION_SCRIPT.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D105527

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


[PATCH] D106344: [PowerPC] Implement XL compatible behavior of __compare_and_swap

2021-07-22 Thread Jinsong Ji via Phabricator via cfe-commits
jsji accepted this revision as: jsji.
jsji added a comment.
This revision is now accepted and ready to land.

> that looks like a historical issue which exists for 13yrs

Hmm... OK.. Let us leave it as it is for now.

Thanks for the new tests.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D106344

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


[PATCH] D106344: [PowerPC] Implement XL compatible behavior of __compare_and_swap

2021-07-21 Thread Jinsong Ji via Phabricator via cfe-commits
jsji added a comment.

Doesn't look like good enough to me,  the code sequence generated is not clean 
enough.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D106344

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


  1   2   3   >