[PATCH] D150758: [AIX] make integrated-as as default on AIX.

2023-07-06 Thread Esme Yi 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 rG533af6e5c4b3: [AIX] make integrated-as as default on AIX. 
(authored by Esme).

Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D150758

Files:
  clang/lib/Driver/ToolChains/AIX.h
  clang/test/Driver/aix-as.c
  clang/test/Driver/aix-integrated-as.c


Index: clang/test/Driver/aix-integrated-as.c
===
--- /dev/null
+++ clang/test/Driver/aix-integrated-as.c
@@ -0,0 +1,15 @@
+// Test integrated-as is called by default on AIX.
+
+// Check powerpc-ibm-aix7.1.0.0, 32-bit.
+// RUN: %clang %s -### -c 2>&1 \
+// RUN: --target=powerpc-ibm-aix7.1.0.0 \
+// RUN:   | FileCheck --check-prefix=CHECK-IAS32 %s
+// CHECK-IAS32-NOT: "-a32"
+// CHECK-IAS32: "-cc1" "-triple" "powerpc-ibm-aix7.1.0.0" "-emit-obj"
+
+// Check powerpc64-ibm-aix7.1.0.0, 64-bit.
+// RUN: %clang %s -### -c 2>&1 \
+// RUN: --target=powerpc64-ibm-aix7.1.0.0 \
+// RUN:   | FileCheck --check-prefix=CHECK-IAS64 %s
+// CHECK-IAS64-NOT: "-a64"
+// CHECK-IAS64: "-cc1" "-triple" "powerpc64-ibm-aix7.1.0.0" "-emit-obj"
Index: clang/test/Driver/aix-as.c
===
--- clang/test/Driver/aix-as.c
+++ clang/test/Driver/aix-as.c
@@ -11,7 +11,7 @@
 // RUN:   | FileCheck --check-prefix=CHECK-AS32 %s
 
 // Check powerpc-ibm-aix7.1.0.0, 32-bit.
-// RUN: %clang %s -### -c 2>&1 \
+// RUN: %clang %s -### -c -fno-integrated-as 2>&1 \
 // RUN: --target=powerpc-ibm-aix7.1.0.0 \
 // RUN:   | FileCheck --check-prefixes=CHECK-AS32,CHECK-AS32-CC1 %s
 // CHECK-AS32-NOT: warning:
@@ -30,7 +30,7 @@
 // RUN:   | FileCheck --check-prefix=CHECK-AS64 %s
 
 // Check powerpc64-ibm-aix7.1.0.0, 64-bit.
-// RUN: %clang %s -### -c 2>&1 \
+// RUN: %clang %s -### -c -fno-integrated-as 2>&1 \
 // RUN: --target=powerpc64-ibm-aix7.1.0.0 \
 // RUN:   | FileCheck --check-prefixes=CHECK-AS64,CHECK-AS64-CC1 %s
 // CHECK-AS64-NOT: warning:
@@ -40,7 +40,7 @@
 // CHECK-AS64: "-many"
 
 // Check powerpc-ibm-aix7.1.0.0, 32-bit. -Xassembler  option. 
-// RUN: %clang %s -### -c 2>&1 \
+// RUN: %clang %s -### -c -fno-integrated-as 2>&1 \
 // RUN: -Xassembler -w \
 // RUN: --target=powerpc-ibm-aix7.1.0.0 \
 // RUN:   | FileCheck --check-prefix=CHECK-AS32-Xassembler %s
@@ -52,7 +52,7 @@
 // CHECK-AS32-Xassembler: "-w"
 
 // Check powerpc64-ibm-aix7.1.0.0, 64-bit. -Wa,, option.
-// RUN: %clang %s -### -c 2>&1 \
+// RUN: %clang %s -### -c -fno-integrated-as 2>&1 \
 // RUN: -Wa,-v,-w \
 // RUN: --target=powerpc64-ibm-aix7.1.0.0 \
 // RUN:   | FileCheck --check-prefix=CHECK-AS64-Wa %s
@@ -65,7 +65,7 @@
 // CHECK-AS64-Wa: "-w"
 
 // Check powerpc-ibm-aix7.1.0.0, 32-bit. Multiple input files.
-// RUN: %clang -### -c \
+// RUN: %clang -### -fno-integrated-as -c \
 // RUN: %S/Inputs/aix_ppc_tree/dummy0.s \
 // RUN: %S/Inputs/aix_ppc_tree/dummy1.s \
 // RUN: %S/Inputs/aix_ppc_tree/dummy2.s 2>&1 \
@@ -85,8 +85,8 @@
 // Check not passing no-integrated-as flag by default.
 // RUN: %clang %s -### -c 2>&1 --target=powerpc64-ibm-aix7.1.0.0 \
 // RUN:   | FileCheck --check-prefix=CHECK-IAS 
--implicit-check-not=-no-integrated-as %s
+// CHECK-IAS-NOT: "-a64"
 // CHECK-IAS: InstalledDir
-// CHECK-IAS: "-a64"
 
 // Check passing no-integrated-as flag if specified by user.
 // RUN: %clang %s -### -c 2>&1 --target=powerpc64-ibm-aix7.1.0.0 
-fno-integrated-as \
Index: clang/lib/Driver/ToolChains/AIX.h
===
--- clang/lib/Driver/ToolChains/AIX.h
+++ clang/lib/Driver/ToolChains/AIX.h
@@ -68,6 +68,7 @@
   }
   bool isPICDefaultForced() const override { return true; }
   bool HasNativeLLVMSupport() const override { return true; }
+  bool IsIntegratedAssemblerDefault() const override { return true; }
 
   void
   AddClangSystemIncludeArgs(const llvm::opt::ArgList &DriverArgs,


Index: clang/test/Driver/aix-integrated-as.c
===
--- /dev/null
+++ clang/test/Driver/aix-integrated-as.c
@@ -0,0 +1,15 @@
+// Test integrated-as is called by default on AIX.
+
+// Check powerpc-ibm-aix7.1.0.0, 32-bit.
+// RUN: %clang %s -### -c 2>&1 \
+// RUN: --target=powerpc-ibm-aix7.1.0.0 \
+// RUN:   | FileCheck --check-prefix=CHECK-IAS32 %s
+// CHECK-IAS32-NOT: "-a32"
+// CHECK-IAS32: "-cc1" "-triple" "powerpc-ibm-aix7.1.0.0" "-emit-obj"
+
+// Check powerpc64-ibm-aix7.1.0.0, 64-bit.
+// RUN: %clang %s -### -c 2>&1 \
+// RUN: --target=powerpc64-ibm-aix7.1.0.0 \
+// RUN:   | FileCheck --check-prefix=CHECK-IAS64 %s
+// CHECK-IAS64-NOT: "-a64"
+// CHECK-IAS64: "-cc1" "-triple" "powerpc64-ibm-aix7.1.0.0" "-emit-obj"
Index: clang/test/Driver/aix-as.c
=

[PATCH] D150758: [AIX] make integrated-as as default on AIX.

2023-06-27 Thread Esme Yi via Phabricator via cfe-commits
Esme updated this revision to Diff 534884.
Esme added a comment.

Rebase.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D150758

Files:
  clang/lib/Driver/ToolChains/AIX.h
  clang/test/Driver/aix-as.c
  clang/test/Driver/aix-integrated-as.c


Index: clang/test/Driver/aix-integrated-as.c
===
--- /dev/null
+++ clang/test/Driver/aix-integrated-as.c
@@ -0,0 +1,15 @@
+// Test integrated-as is called by default on AIX.
+
+// Check powerpc-ibm-aix7.1.0.0, 32-bit.
+// RUN: %clang %s -### -c 2>&1 \
+// RUN: --target=powerpc-ibm-aix7.1.0.0 \
+// RUN:   | FileCheck --check-prefix=CHECK-IAS32 %s
+// CHECK-IAS32-NOT: "-a32"
+// CHECK-IAS32: "-cc1" "-triple" "powerpc-ibm-aix7.1.0.0" "-emit-obj"
+
+// Check powerpc64-ibm-aix7.1.0.0, 64-bit.
+// RUN: %clang %s -### -c 2>&1 \
+// RUN: --target=powerpc64-ibm-aix7.1.0.0 \
+// RUN:   | FileCheck --check-prefix=CHECK-IAS64 %s
+// CHECK-IAS64-NOT: "-a64"
+// CHECK-IAS64: "-cc1" "-triple" "powerpc64-ibm-aix7.1.0.0" "-emit-obj"
Index: clang/test/Driver/aix-as.c
===
--- clang/test/Driver/aix-as.c
+++ clang/test/Driver/aix-as.c
@@ -11,7 +11,7 @@
 // RUN:   | FileCheck --check-prefix=CHECK-AS32 %s
 
 // Check powerpc-ibm-aix7.1.0.0, 32-bit.
-// RUN: %clang %s -### -c 2>&1 \
+// RUN: %clang %s -### -c -fno-integrated-as 2>&1 \
 // RUN: --target=powerpc-ibm-aix7.1.0.0 \
 // RUN:   | FileCheck --check-prefixes=CHECK-AS32,CHECK-AS32-CC1 %s
 // CHECK-AS32-NOT: warning:
@@ -30,7 +30,7 @@
 // RUN:   | FileCheck --check-prefix=CHECK-AS64 %s
 
 // Check powerpc64-ibm-aix7.1.0.0, 64-bit.
-// RUN: %clang %s -### -c 2>&1 \
+// RUN: %clang %s -### -c -fno-integrated-as 2>&1 \
 // RUN: --target=powerpc64-ibm-aix7.1.0.0 \
 // RUN:   | FileCheck --check-prefixes=CHECK-AS64,CHECK-AS64-CC1 %s
 // CHECK-AS64-NOT: warning:
@@ -40,7 +40,7 @@
 // CHECK-AS64: "-many"
 
 // Check powerpc-ibm-aix7.1.0.0, 32-bit. -Xassembler  option. 
-// RUN: %clang %s -### -c 2>&1 \
+// RUN: %clang %s -### -c -fno-integrated-as 2>&1 \
 // RUN: -Xassembler -w \
 // RUN: --target=powerpc-ibm-aix7.1.0.0 \
 // RUN:   | FileCheck --check-prefix=CHECK-AS32-Xassembler %s
@@ -52,7 +52,7 @@
 // CHECK-AS32-Xassembler: "-w"
 
 // Check powerpc64-ibm-aix7.1.0.0, 64-bit. -Wa,, option.
-// RUN: %clang %s -### -c 2>&1 \
+// RUN: %clang %s -### -c -fno-integrated-as 2>&1 \
 // RUN: -Wa,-v,-w \
 // RUN: --target=powerpc64-ibm-aix7.1.0.0 \
 // RUN:   | FileCheck --check-prefix=CHECK-AS64-Wa %s
@@ -65,7 +65,7 @@
 // CHECK-AS64-Wa: "-w"
 
 // Check powerpc-ibm-aix7.1.0.0, 32-bit. Multiple input files.
-// RUN: %clang -### -c \
+// RUN: %clang -### -fno-integrated-as -c \
 // RUN: %S/Inputs/aix_ppc_tree/dummy0.s \
 // RUN: %S/Inputs/aix_ppc_tree/dummy1.s \
 // RUN: %S/Inputs/aix_ppc_tree/dummy2.s 2>&1 \
@@ -85,8 +85,8 @@
 // Check not passing no-integrated-as flag by default.
 // RUN: %clang %s -### -c 2>&1 --target=powerpc64-ibm-aix7.1.0.0 \
 // RUN:   | FileCheck --check-prefix=CHECK-IAS 
--implicit-check-not=-no-integrated-as %s
+// CHECK-IAS-NOT: "-a64"
 // CHECK-IAS: InstalledDir
-// CHECK-IAS: "-a64"
 
 // Check passing no-integrated-as flag if specified by user.
 // RUN: %clang %s -### -c 2>&1 --target=powerpc64-ibm-aix7.1.0.0 
-fno-integrated-as \
Index: clang/lib/Driver/ToolChains/AIX.h
===
--- clang/lib/Driver/ToolChains/AIX.h
+++ clang/lib/Driver/ToolChains/AIX.h
@@ -68,6 +68,7 @@
   }
   bool isPICDefaultForced() const override { return true; }
   bool HasNativeLLVMSupport() const override { return true; }
+  bool IsIntegratedAssemblerDefault() const override { return true; }
 
   void
   AddClangSystemIncludeArgs(const llvm::opt::ArgList &DriverArgs,


Index: clang/test/Driver/aix-integrated-as.c
===
--- /dev/null
+++ clang/test/Driver/aix-integrated-as.c
@@ -0,0 +1,15 @@
+// Test integrated-as is called by default on AIX.
+
+// Check powerpc-ibm-aix7.1.0.0, 32-bit.
+// RUN: %clang %s -### -c 2>&1 \
+// RUN: --target=powerpc-ibm-aix7.1.0.0 \
+// RUN:   | FileCheck --check-prefix=CHECK-IAS32 %s
+// CHECK-IAS32-NOT: "-a32"
+// CHECK-IAS32: "-cc1" "-triple" "powerpc-ibm-aix7.1.0.0" "-emit-obj"
+
+// Check powerpc64-ibm-aix7.1.0.0, 64-bit.
+// RUN: %clang %s -### -c 2>&1 \
+// RUN: --target=powerpc64-ibm-aix7.1.0.0 \
+// RUN:   | FileCheck --check-prefix=CHECK-IAS64 %s
+// CHECK-IAS64-NOT: "-a64"
+// CHECK-IAS64: "-cc1" "-triple" "powerpc64-ibm-aix7.1.0.0" "-emit-obj"
Index: clang/test/Driver/aix-as.c
===
--- clang/test/Driver/aix-as.c
+++ clang/test/Driver/aix-as.c
@@ -11,7 +11,7 @@
 // RUN:   | FileCheck --check-prefix=CHECK-AS32 %

[PATCH] D150758: [AIX] make integrated-as as default on AIX.

2023-05-23 Thread Esme Yi via Phabricator via cfe-commits
Esme updated this revision to Diff 524641.
Esme added a comment.

Separate the backend changes from this patch.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D150758

Files:
  clang/lib/Driver/ToolChains/AIX.h
  clang/test/Driver/aix-as.c
  clang/test/Driver/aix-integrated-as.c


Index: clang/test/Driver/aix-integrated-as.c
===
--- /dev/null
+++ clang/test/Driver/aix-integrated-as.c
@@ -0,0 +1,17 @@
+// Test integrated-as is called by default on AIX.
+
+// Check powerpc-ibm-aix7.1.0.0, 32-bit.
+// RUN: %clang %s -### -c 2>&1 \
+// RUN: --target=powerpc-ibm-aix7.1.0.0 \
+// RUN:   | FileCheck --check-prefix=CHECK-IAS32 %s
+// CHECK-IAS32-NOT: "-a32"
+// CHECK-IAS32: "-cc1" "-triple" "powerpc-ibm-aix7.1.0.0" "-emit-obj"
+// CHECK-IAS32: "aix-integrated-as.o"
+
+// Check powerpc64-ibm-aix7.1.0.0, 64-bit.
+// RUN: %clang %s -### -c 2>&1 \
+// RUN: --target=powerpc64-ibm-aix7.1.0.0 \
+// RUN:   | FileCheck --check-prefix=CHECK-IAS64 %s
+// CHECK-IAS64-NOT: "-a64"
+// CHECK-IAS64: "-cc1" "-triple" "powerpc64-ibm-aix7.1.0.0" "-emit-obj"
+// CHECK-IAS64: "aix-integrated-as.o"
Index: clang/test/Driver/aix-as.c
===
--- clang/test/Driver/aix-as.c
+++ clang/test/Driver/aix-as.c
@@ -2,7 +2,7 @@
 // only test assembler functionalities in this suite.
 
 // Check powerpc-ibm-aix7.1.0.0, 32-bit.
-// RUN: %clang %s -### -c 2>&1 \
+// RUN: %clang %s -### -c 2>&1 -fno-integrated-as \
 // RUN: --target=powerpc-ibm-aix7.1.0.0 \
 // RUN:   | FileCheck --check-prefix=CHECK-AS32 %s
 // CHECK-AS32-NOT: warning:
@@ -12,7 +12,7 @@
 // CHECK-AS32: "-many" 
 
 // Check powerpc64-ibm-aix7.1.0.0, 64-bit.
-// RUN: %clang %s -### -c 2>&1 \
+// RUN: %clang %s -### -c 2>&1 -fno-integrated-as \
 // RUN: --target=powerpc64-ibm-aix7.1.0.0 \
 // RUN:   | FileCheck --check-prefix=CHECK-AS64 %s
 // CHECK-AS64-NOT: warning:
@@ -22,7 +22,7 @@
 // CHECK-AS64: "-many"
 
 // Check powerpc-ibm-aix7.1.0.0, 32-bit. -Xassembler  option. 
-// RUN: %clang %s -### -c 2>&1 \
+// RUN: %clang %s -### -c 2>&1 -fno-integrated-as \
 // RUN: -Xassembler -w \
 // RUN: --target=powerpc-ibm-aix7.1.0.0 \
 // RUN:   | FileCheck --check-prefix=CHECK-AS32-Xassembler %s
@@ -34,7 +34,7 @@
 // CHECK-AS32-Xassembler: "-w"
 
 // Check powerpc64-ibm-aix7.1.0.0, 64-bit. -Wa,, option.
-// RUN: %clang %s -### -c 2>&1 \
+// RUN: %clang %s -### -c 2>&1 -fno-integrated-as \
 // RUN: -Wa,-v,-w \
 // RUN: --target=powerpc64-ibm-aix7.1.0.0 \
 // RUN:   | FileCheck --check-prefix=CHECK-AS64-Wa %s
@@ -47,7 +47,7 @@
 // CHECK-AS64-Wa: "-w"
 
 // Check powerpc-ibm-aix7.1.0.0, 32-bit. Multiple input files.
-// RUN: %clang -### -c \
+// RUN: %clang -### -c -fno-integrated-as \
 // RUN: %S/Inputs/aix_ppc_tree/dummy0.s \
 // RUN: %S/Inputs/aix_ppc_tree/dummy1.s \
 // RUN: %S/Inputs/aix_ppc_tree/dummy2.s 2>&1 \
@@ -67,8 +67,8 @@
 // Check not passing no-integrated-as flag by default.
 // RUN: %clang %s -### -c 2>&1 --target=powerpc64-ibm-aix7.1.0.0 \
 // RUN:   | FileCheck --check-prefix=CHECK-IAS 
--implicit-check-not=-no-integrated-as %s
+// CHECK-IAS-NOT: "-a64"
 // CHECK-IAS: InstalledDir
-// CHECK-IAS: "-a64"
 
 // Check passing no-integrated-as flag if specified by user.
 // RUN: %clang %s -### -c 2>&1 --target=powerpc64-ibm-aix7.1.0.0 
-fno-integrated-as \
Index: clang/lib/Driver/ToolChains/AIX.h
===
--- clang/lib/Driver/ToolChains/AIX.h
+++ clang/lib/Driver/ToolChains/AIX.h
@@ -68,6 +68,7 @@
   }
   bool isPICDefaultForced() const override { return true; }
   bool HasNativeLLVMSupport() const override { return true; }
+  bool IsIntegratedAssemblerDefault() const override { return true; }
 
   void
   AddClangSystemIncludeArgs(const llvm::opt::ArgList &DriverArgs,


Index: clang/test/Driver/aix-integrated-as.c
===
--- /dev/null
+++ clang/test/Driver/aix-integrated-as.c
@@ -0,0 +1,17 @@
+// Test integrated-as is called by default on AIX.
+
+// Check powerpc-ibm-aix7.1.0.0, 32-bit.
+// RUN: %clang %s -### -c 2>&1 \
+// RUN: --target=powerpc-ibm-aix7.1.0.0 \
+// RUN:   | FileCheck --check-prefix=CHECK-IAS32 %s
+// CHECK-IAS32-NOT: "-a32"
+// CHECK-IAS32: "-cc1" "-triple" "powerpc-ibm-aix7.1.0.0" "-emit-obj"
+// CHECK-IAS32: "aix-integrated-as.o"
+
+// Check powerpc64-ibm-aix7.1.0.0, 64-bit.
+// RUN: %clang %s -### -c 2>&1 \
+// RUN: --target=powerpc64-ibm-aix7.1.0.0 \
+// RUN:   | FileCheck --check-prefix=CHECK-IAS64 %s
+// CHECK-IAS64-NOT: "-a64"
+// CHECK-IAS64: "-cc1" "-triple" "powerpc64-ibm-aix7.1.0.0" "-emit-obj"
+// CHECK-IAS64: "aix-integrated-as.o"
Index: clang/test/Driver/aix-as.c

[PATCH] D150758: [AIX] make integrated-as as default on AIX.

2023-05-30 Thread Esme Yi via Phabricator via cfe-commits
Esme updated this revision to Diff 526545.
Esme added a comment.

Remove unnecessary check lines.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D150758

Files:
  clang/lib/Driver/ToolChains/AIX.h
  clang/test/Driver/aix-as.c
  clang/test/Driver/aix-integrated-as.c


Index: clang/test/Driver/aix-integrated-as.c
===
--- /dev/null
+++ clang/test/Driver/aix-integrated-as.c
@@ -0,0 +1,15 @@
+// Test integrated-as is called by default on AIX.
+
+// Check powerpc-ibm-aix7.1.0.0, 32-bit.
+// RUN: %clang %s -### -c 2>&1 \
+// RUN: --target=powerpc-ibm-aix7.1.0.0 \
+// RUN:   | FileCheck --check-prefix=CHECK-IAS32 %s
+// CHECK-IAS32-NOT: "-a32"
+// CHECK-IAS32: "-cc1" "-triple" "powerpc-ibm-aix7.1.0.0" "-emit-obj"
+
+// Check powerpc64-ibm-aix7.1.0.0, 64-bit.
+// RUN: %clang %s -### -c 2>&1 \
+// RUN: --target=powerpc64-ibm-aix7.1.0.0 \
+// RUN:   | FileCheck --check-prefix=CHECK-IAS64 %s
+// CHECK-IAS64-NOT: "-a64"
+// CHECK-IAS64: "-cc1" "-triple" "powerpc64-ibm-aix7.1.0.0" "-emit-obj"
Index: clang/test/Driver/aix-as.c
===
--- clang/test/Driver/aix-as.c
+++ clang/test/Driver/aix-as.c
@@ -2,7 +2,7 @@
 // only test assembler functionalities in this suite.
 
 // Check powerpc-ibm-aix7.1.0.0, 32-bit.
-// RUN: %clang %s -### -c 2>&1 \
+// RUN: %clang %s -### -c 2>&1 -fno-integrated-as \
 // RUN: --target=powerpc-ibm-aix7.1.0.0 \
 // RUN:   | FileCheck --check-prefix=CHECK-AS32 %s
 // CHECK-AS32-NOT: warning:
@@ -12,7 +12,7 @@
 // CHECK-AS32: "-many" 
 
 // Check powerpc64-ibm-aix7.1.0.0, 64-bit.
-// RUN: %clang %s -### -c 2>&1 \
+// RUN: %clang %s -### -c 2>&1 -fno-integrated-as \
 // RUN: --target=powerpc64-ibm-aix7.1.0.0 \
 // RUN:   | FileCheck --check-prefix=CHECK-AS64 %s
 // CHECK-AS64-NOT: warning:
@@ -22,7 +22,7 @@
 // CHECK-AS64: "-many"
 
 // Check powerpc-ibm-aix7.1.0.0, 32-bit. -Xassembler  option. 
-// RUN: %clang %s -### -c 2>&1 \
+// RUN: %clang %s -### -c 2>&1 -fno-integrated-as \
 // RUN: -Xassembler -w \
 // RUN: --target=powerpc-ibm-aix7.1.0.0 \
 // RUN:   | FileCheck --check-prefix=CHECK-AS32-Xassembler %s
@@ -34,7 +34,7 @@
 // CHECK-AS32-Xassembler: "-w"
 
 // Check powerpc64-ibm-aix7.1.0.0, 64-bit. -Wa,, option.
-// RUN: %clang %s -### -c 2>&1 \
+// RUN: %clang %s -### -c 2>&1 -fno-integrated-as \
 // RUN: -Wa,-v,-w \
 // RUN: --target=powerpc64-ibm-aix7.1.0.0 \
 // RUN:   | FileCheck --check-prefix=CHECK-AS64-Wa %s
@@ -47,7 +47,7 @@
 // CHECK-AS64-Wa: "-w"
 
 // Check powerpc-ibm-aix7.1.0.0, 32-bit. Multiple input files.
-// RUN: %clang -### -c \
+// RUN: %clang -### -c -fno-integrated-as \
 // RUN: %S/Inputs/aix_ppc_tree/dummy0.s \
 // RUN: %S/Inputs/aix_ppc_tree/dummy1.s \
 // RUN: %S/Inputs/aix_ppc_tree/dummy2.s 2>&1 \
@@ -67,8 +67,8 @@
 // Check not passing no-integrated-as flag by default.
 // RUN: %clang %s -### -c 2>&1 --target=powerpc64-ibm-aix7.1.0.0 \
 // RUN:   | FileCheck --check-prefix=CHECK-IAS 
--implicit-check-not=-no-integrated-as %s
+// CHECK-IAS-NOT: "-a64"
 // CHECK-IAS: InstalledDir
-// CHECK-IAS: "-a64"
 
 // Check passing no-integrated-as flag if specified by user.
 // RUN: %clang %s -### -c 2>&1 --target=powerpc64-ibm-aix7.1.0.0 
-fno-integrated-as \
Index: clang/lib/Driver/ToolChains/AIX.h
===
--- clang/lib/Driver/ToolChains/AIX.h
+++ clang/lib/Driver/ToolChains/AIX.h
@@ -68,6 +68,7 @@
   }
   bool isPICDefaultForced() const override { return true; }
   bool HasNativeLLVMSupport() const override { return true; }
+  bool IsIntegratedAssemblerDefault() const override { return true; }
 
   void
   AddClangSystemIncludeArgs(const llvm::opt::ArgList &DriverArgs,


Index: clang/test/Driver/aix-integrated-as.c
===
--- /dev/null
+++ clang/test/Driver/aix-integrated-as.c
@@ -0,0 +1,15 @@
+// Test integrated-as is called by default on AIX.
+
+// Check powerpc-ibm-aix7.1.0.0, 32-bit.
+// RUN: %clang %s -### -c 2>&1 \
+// RUN: --target=powerpc-ibm-aix7.1.0.0 \
+// RUN:   | FileCheck --check-prefix=CHECK-IAS32 %s
+// CHECK-IAS32-NOT: "-a32"
+// CHECK-IAS32: "-cc1" "-triple" "powerpc-ibm-aix7.1.0.0" "-emit-obj"
+
+// Check powerpc64-ibm-aix7.1.0.0, 64-bit.
+// RUN: %clang %s -### -c 2>&1 \
+// RUN: --target=powerpc64-ibm-aix7.1.0.0 \
+// RUN:   | FileCheck --check-prefix=CHECK-IAS64 %s
+// CHECK-IAS64-NOT: "-a64"
+// CHECK-IAS64: "-cc1" "-triple" "powerpc64-ibm-aix7.1.0.0" "-emit-obj"
Index: clang/test/Driver/aix-as.c
===
--- clang/test/Driver/aix-as.c
+++ clang/test/Driver/aix-as.c
@@ -2,7 +2,7 @@
 // only test assembler functionalities in this suite.
 
 // Check powerpc-ibm-aix7.1.0.

[PATCH] D150758: [AIX] make integrated-as as default on AIX.

2023-05-30 Thread Esme Yi via Phabricator via cfe-commits
Esme added inline comments.



Comment at: clang/test/Driver/aix-integrated-as.c:9
+// CHECK-IAS32: "-cc1" "-triple" "powerpc-ibm-aix7.1.0.0" "-emit-obj"
+// CHECK-IAS32: "aix-integrated-as.o"
+

DiggerLin wrote:
> both -fno-integrated-as and -fintegrated-as output the same file name 
> "aix-integrated-as.o" , do you want to check "aix-integrated-as.o" here 
Thanks, it seems an unnecessary check.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D150758

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


[PATCH] D143725: [llvm-objdump][ARM] support --symbolize-operands for ARM/ELF

2023-02-14 Thread Esme Yi via Phabricator via cfe-commits
Esme added a comment.

Please include as much context as possible with your diff. 
https://llvm.org/docs/Phabricator.html#requesting-a-review-via-the-web-interface




Comment at: llvm/tools/llvm-objdump/llvm-objdump.cpp:1145
+  // So far only supports ARM/Thumb, PowerPC and X86.
+  Triple triple = STI->getTargetTriple();
+  if (!triple.isPPC() && !triple.isX86() && !triple.isARM() &&

Please capitalize the first letter of variable names.



Comment at: llvm/tools/llvm-objdump/llvm-objdump.cpp:1172
+  // for this case.
+  bool isFunctionCall =
+  Target == Index &&

ditto.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D143725

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


[PATCH] D150181: [XCOFF][DWARF] XCOFF64 should be able to select the dwarf version under intergrated-as mode.

2023-05-09 Thread Esme Yi via Phabricator via cfe-commits
Esme created this revision.
Esme added reviewers: shchenz, lkail, PowerPC, DiggerLin.
Herald added a subscriber: hiraditya.
Herald added a project: All.
Esme requested review of this revision.
Herald added subscribers: llvm-commits, cfe-commits, MaskRay.
Herald added projects: clang, LLVM.

DWARF32 is not supported for XCOFF64 under non integrated-as mode, because 
system assembler will fill the debug section lengths according to DWARF64 
format.
While in intergrated-as mode, XCOFF64 should be able to select the DWARF 
version.


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D150181

Files:
  clang/lib/Driver/ToolChains/Clang.cpp
  llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
  llvm/test/DebugInfo/XCOFF/dwarf-format.ll


Index: llvm/test/DebugInfo/XCOFF/dwarf-format.ll
===
--- /dev/null
+++ llvm/test/DebugInfo/XCOFF/dwarf-format.ll
@@ -0,0 +1,33 @@
+; RUN: llc -mtriple powerpc64-ibm-aix-xcoff -filetype=obj %s -o - \
+; RUN:   | llvm-dwarfdump -debug-line - | FileCheck %s --check-prefixes=CHECK
+
+; RUN: llc -mtriple powerpc64-ibm-aix-xcoff -filetype=obj -dwarf64 %s -o - \
+; RUN:   | llvm-dwarfdump -debug-line - | FileCheck %s --check-prefixes=CHECK64
+
+; CHECK: file format aix5coff64-rs6000
+; CHECK: format: DWARF32
+
+; CHECK64: file format aix5coff64-rs6000
+; CHECK64: format: DWARF64
+
+source_filename = "1.c"
+target datalayout = "E-m:a-p:32:32-Fi32-i64:64-n32"
+
+@foo = global i32 0, align 4, !dbg !0
+
+!llvm.dbg.cu = !{!2}
+!llvm.module.flags = !{!6, !7, !8, !9, !10}
+!llvm.ident = !{!11}
+
+!0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression())
+!1 = distinct !DIGlobalVariable(name: "foo", scope: !2, file: !3, line: 1, 
type: !5, isLocal: false, isDefinition: true)
+!2 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang 
version 17.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: 
FullDebug, globals: !4, splitDebugInlining: false, nameTableKind: None)
+!3 = !DIFile(filename: "1.c", directory: "llvm-project")
+!4 = !{!0}
+!5 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed)
+!6 = !{i32 7, !"Dwarf Version", i32 3}
+!7 = !{i32 2, !"Debug Info Version", i32 3}
+!8 = !{i32 1, !"wchar_size", i32 2}
+!9 = !{i32 8, !"PIC Level", i32 2}
+!10 = !{i32 7, !"frame-pointer", i32 2}
+!11 = !{!"clang version 17.0.0"}
Index: llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
===
--- llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
+++ llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
@@ -389,6 +389,7 @@
   DwarfVersion =
   TT.isNVPTX() ? 2 : (DwarfVersion ? DwarfVersion : dwarf::DWARF_VERSION);
 
+  bool UseIntegratedAs = Asm->OutStreamer->isIntegratedAssemblerRequired();
   bool Dwarf64 = DwarfVersion >= 3 && // DWARF64 was introduced in DWARFv3.
  TT.isArch64Bit();// DWARF64 requires 64-bit relocations.
 
@@ -396,15 +397,18 @@
   // 1: For ELF when requested.
   // 2: For XCOFF64: the AIX assembler will fill in debug section lengths
   //according to the DWARF64 format for 64-bit assembly, so we must use
-  //DWARF64 in the compiler too for 64-bit mode.
+  //DWARF64 in the compiler for 64-bit mode on non-integrated-as mode.
   Dwarf64 &=
-  ((Asm->TM.Options.MCOptions.Dwarf64 || MMI->getModule()->isDwarf64()) &&
-   TT.isOSBinFormatELF()) ||
-  TT.isOSBinFormatXCOFF();
-
-  if (!Dwarf64 && TT.isArch64Bit() && TT.isOSBinFormatXCOFF())
-report_fatal_error("XCOFF requires DWARF64 for 64-bit mode!");
-
+  ((TT.isOSBinFormatELF() ||
+(TT.isOSBinFormatXCOFF() && UseIntegratedAs)) &&
+   (Asm->TM.Options.MCOptions.Dwarf64 || MMI->getModule()->isDwarf64())) ||
+  (TT.isOSBinFormatXCOFF() && !UseIntegratedAs);
+
+  if (!Dwarf64 && TT.isArch64Bit() && TT.isOSBinFormatXCOFF() &&
+  !UseIntegratedAs)
+report_fatal_error(
+"XCOFF requires DWARF64 for 64-bit mode on non-integrated-as mode!");
+  
   UseRangesSection = !NoDwarfRangesSection && !TT.isNVPTX();
 
   // Use sections as references. Force for NVPTX.
Index: clang/lib/Driver/ToolChains/Clang.cpp
===
--- clang/lib/Driver/ToolChains/Clang.cpp
+++ clang/lib/Driver/ToolChains/Clang.cpp
@@ -4131,9 +4131,9 @@
 else if (!T.isArch64Bit())
   D.Diag(diag::err_drv_argument_only_allowed_with)
   << DwarfFormatArg->getAsString(Args) << "64 bit architecture";
-else if (!T.isOSBinFormatELF())
+else if (!(T.isOSBinFormatELF() || T.isOSBinFormatXCOFF()))
   D.Diag(diag::err_drv_argument_only_allowed_with)
-  << DwarfFormatArg->getAsString(Args) << "ELF platforms";
+  << DwarfFormatArg->getAsString(Args) << "ELF/XCOFF platforms";
   }
 
   DwarfFormatArg->render(Args, CmdArgs);


Index: llvm/test/DebugInfo/XCOFF/dwarf-format.ll
===
--- /dev/null
+++ ll

[PATCH] D150181: [XCOFF][DWARF] XCOFF64 should be able to select the dwarf version under intergrated-as mode.

2023-05-11 Thread Esme Yi via Phabricator via cfe-commits
Esme updated this revision to Diff 521229.
Esme added a comment.
Herald added a subscriber: nemanjai.

Update test cases.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D150181

Files:
  clang/lib/Driver/ToolChains/Clang.cpp
  clang/test/Driver/debug-options-as.c
  clang/test/Driver/debug-options.c
  llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
  llvm/test/CodeGen/PowerPC/aix-dwarf.ll
  llvm/test/CodeGen/PowerPC/aix-xcoff-exception-section-debug.ll
  llvm/test/DebugInfo/XCOFF/dwarf-format.ll

Index: llvm/test/DebugInfo/XCOFF/dwarf-format.ll
===
--- /dev/null
+++ llvm/test/DebugInfo/XCOFF/dwarf-format.ll
@@ -0,0 +1,33 @@
+; RUN: llc -mtriple powerpc64-ibm-aix-xcoff -filetype=obj %s -o - \
+; RUN:   | llvm-dwarfdump -debug-line - | FileCheck %s --check-prefixes=CHECK
+
+; RUN: llc -mtriple powerpc64-ibm-aix-xcoff -filetype=obj -dwarf64 %s -o - \
+; RUN:   | llvm-dwarfdump -debug-line - | FileCheck %s --check-prefixes=CHECK64
+
+; CHECK: file format aix5coff64-rs6000
+; CHECK: format: DWARF32
+
+; CHECK64: file format aix5coff64-rs6000
+; CHECK64: format: DWARF64
+
+source_filename = "1.c"
+target datalayout = "E-m:a-p:32:32-Fi32-i64:64-n32"
+
+@foo = global i32 0, align 4, !dbg !0
+
+!llvm.dbg.cu = !{!2}
+!llvm.module.flags = !{!6, !7, !8, !9, !10}
+!llvm.ident = !{!11}
+
+!0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression())
+!1 = distinct !DIGlobalVariable(name: "foo", scope: !2, file: !3, line: 1, type: !5, isLocal: false, isDefinition: true)
+!2 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 17.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, globals: !4, splitDebugInlining: false, nameTableKind: None)
+!3 = !DIFile(filename: "1.c", directory: "llvm-project")
+!4 = !{!0}
+!5 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed)
+!6 = !{i32 7, !"Dwarf Version", i32 3}
+!7 = !{i32 2, !"Debug Info Version", i32 3}
+!8 = !{i32 1, !"wchar_size", i32 2}
+!9 = !{i32 8, !"PIC Level", i32 2}
+!10 = !{i32 7, !"frame-pointer", i32 2}
+!11 = !{!"clang version 17.0.0"}
Index: llvm/test/CodeGen/PowerPC/aix-xcoff-exception-section-debug.ll
===
--- llvm/test/CodeGen/PowerPC/aix-xcoff-exception-section-debug.ll
+++ llvm/test/CodeGen/PowerPC/aix-xcoff-exception-section-debug.ll
@@ -3,8 +3,8 @@
 ; Exception auxilliary entries are present in the 64-bit tests because 64-bit && debug enabled are the requirements.
 ; RUN: llc -mtriple=powerpc-ibm-aix-xcoff -filetype=obj -o %t_32.o < %s
 ; RUN: llvm-readobj --syms %t_32.o | FileCheck %s --check-prefix=SYMS32
-; RUN: llc -mtriple=powerpc64-unknown-aix -filetype=obj -o %t_32.o < %s
-; RUN: llvm-readobj --syms %t_32.o | FileCheck %s --check-prefix=SYMS64
+; RUN: llc -mtriple=powerpc64-unknown-aix -filetype=obj -o %t_64.o < %s
+; RUN: llvm-readobj --syms %t_64.o | FileCheck %s --check-prefix=SYMS64
 
 ; If any debug information is included in a module and is XCOFF64, exception auxilliary entries are emitted
 
@@ -93,7 +93,7 @@
 ; SYMS64-NEXT:  NumberOfAuxEntries: 3
 ; SYMS64-NEXT:  Exception Auxiliary Entry {
 ; SYMS64-NEXT:Index: [[#IND+1]]
-; SYMS64-NEXT:OffsetToExceptionTable: 0x398
+; SYMS64-NEXT:OffsetToExceptionTable: 0x38C
 ; SYMS64-NEXT:SizeOfFunction: 0x18
 ; SYMS64-NEXT:SymbolIndexOfNextBeyond: [[#IND+4]]
 ; SYMS64-NEXT:Auxiliary Type: AUX_EXCEPT (0xFF)
@@ -126,7 +126,7 @@
 ; SYMS64-NEXT:  NumberOfAuxEntries: 3
 ; SYMS64-NEXT:  Exception Auxiliary Entry {
 ; SYMS64-NEXT:Index: [[#IND+5]]
-; SYMS64-NEXT:OffsetToExceptionTable: 0x3AC
+; SYMS64-NEXT:OffsetToExceptionTable: 0x3A0
 ; SYMS64-NEXT:SizeOfFunction: 0x68
 ; SYMS64-NEXT:SymbolIndexOfNextBeyond: [[#IND+8]]
 ; SYMS64-NEXT:Auxiliary Type: AUX_EXCEPT (0xFF)
Index: llvm/test/CodeGen/PowerPC/aix-dwarf.ll
===
--- llvm/test/CodeGen/PowerPC/aix-dwarf.ll
+++ llvm/test/CodeGen/PowerPC/aix-dwarf.ll
@@ -65,7 +65,7 @@
 ; SEC32-NEXT:RelocationPointer: 0x1F4
 ; SEC64-NEXT:Size: 0x18
 ; SEC64-NEXT:RawDataOffset: 0x1A8
-; SEC64-NEXT:RelocationPointer: 0x2C8
+; SEC64-NEXT:RelocationPointer: 0x29C
 ; SEC-NEXT:  LineNumberPointer: 0x0
 ; SEC-NEXT:  NumberOfRelocations: 2
 ; SEC-NEXT:  NumberOfLineNumbers: 0
@@ -93,9 +93,9 @@
 ; SEC32-NEXT:Size: 0x57
 ; SEC32-NEXT:RawDataOffset: 0x15C
 ; SEC32-NEXT:RelocationPointer: 0x208
-; SEC64-NEXT:Size: 0x6F
+; SEC64-NEXT:Size: 0x5F
 ; SEC64-NEXT:RawDataOffset: 0x200
-; SEC64-NEXT:RelocationPointer: 0x2E4
+; SEC64-NEXT:RelocationPointer: 0x2B8
 ; SEC-NEXT:  LineNumberPointer: 0x0
 ; SEC-NEXT:  NumberOfRelocations: 4
 ; SEC-NEXT:  NumberOfLineNumbers: 0
@@ -109,9 +109

[PATCH] D150181: [XCOFF][DWARF] XCOFF64 should be able to select the dwarf format in intergrated-as mode.

2023-05-16 Thread Esme Yi via Phabricator via cfe-commits
This revision was automatically updated to reflect the committed changes.
Closed by commit rG4054c68644df: [XCOFF][DWARF] XCOFF64 should be able to 
select the dwarf format in intergrated… (authored by Esme).

Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D150181

Files:
  clang/lib/Driver/ToolChains/Clang.cpp
  clang/test/Driver/debug-options-as.c
  clang/test/Driver/debug-options.c
  llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
  llvm/test/CodeGen/PowerPC/aix-dwarf.ll
  llvm/test/CodeGen/PowerPC/aix-xcoff-exception-section-debug.ll
  llvm/test/DebugInfo/XCOFF/dwarf-format.ll

Index: llvm/test/DebugInfo/XCOFF/dwarf-format.ll
===
--- /dev/null
+++ llvm/test/DebugInfo/XCOFF/dwarf-format.ll
@@ -0,0 +1,33 @@
+; RUN: llc -mtriple powerpc64-ibm-aix-xcoff -filetype=obj %s -o - \
+; RUN:   | llvm-dwarfdump -debug-line - | FileCheck %s --check-prefixes=CHECK
+
+; RUN: llc -mtriple powerpc64-ibm-aix-xcoff -filetype=obj -dwarf64 %s -o - \
+; RUN:   | llvm-dwarfdump -debug-line - | FileCheck %s --check-prefixes=CHECK64
+
+; CHECK: file format aix5coff64-rs6000
+; CHECK: format: DWARF32
+
+; CHECK64: file format aix5coff64-rs6000
+; CHECK64: format: DWARF64
+
+source_filename = "1.c"
+target datalayout = "E-m:a-p:32:32-Fi32-i64:64-n32"
+
+@foo = global i32 0, align 4, !dbg !0
+
+!llvm.dbg.cu = !{!2}
+!llvm.module.flags = !{!6, !7, !8, !9, !10}
+!llvm.ident = !{!11}
+
+!0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression())
+!1 = distinct !DIGlobalVariable(name: "foo", scope: !2, file: !3, line: 1, type: !5, isLocal: false, isDefinition: true)
+!2 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 17.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, globals: !4, splitDebugInlining: false, nameTableKind: None)
+!3 = !DIFile(filename: "1.c", directory: "llvm-project")
+!4 = !{!0}
+!5 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed)
+!6 = !{i32 7, !"Dwarf Version", i32 3}
+!7 = !{i32 2, !"Debug Info Version", i32 3}
+!8 = !{i32 1, !"wchar_size", i32 2}
+!9 = !{i32 8, !"PIC Level", i32 2}
+!10 = !{i32 7, !"frame-pointer", i32 2}
+!11 = !{!"clang version 17.0.0"}
Index: llvm/test/CodeGen/PowerPC/aix-xcoff-exception-section-debug.ll
===
--- llvm/test/CodeGen/PowerPC/aix-xcoff-exception-section-debug.ll
+++ llvm/test/CodeGen/PowerPC/aix-xcoff-exception-section-debug.ll
@@ -3,8 +3,8 @@
 ; Exception auxilliary entries are present in the 64-bit tests because 64-bit && debug enabled are the requirements.
 ; RUN: llc -mtriple=powerpc-ibm-aix-xcoff -filetype=obj -o %t_32.o < %s
 ; RUN: llvm-readobj --syms %t_32.o | FileCheck %s --check-prefix=SYMS32
-; RUN: llc -mtriple=powerpc64-unknown-aix -filetype=obj -o %t_32.o < %s
-; RUN: llvm-readobj --syms %t_32.o | FileCheck %s --check-prefix=SYMS64
+; RUN: llc -mtriple=powerpc64-unknown-aix -filetype=obj -o %t_64.o < %s
+; RUN: llvm-readobj --syms %t_64.o | FileCheck %s --check-prefix=SYMS64
 
 ; If any debug information is included in a module and is XCOFF64, exception auxilliary entries are emitted
 
@@ -93,7 +93,7 @@
 ; SYMS64-NEXT:  NumberOfAuxEntries: 3
 ; SYMS64-NEXT:  Exception Auxiliary Entry {
 ; SYMS64-NEXT:Index: [[#IND+1]]
-; SYMS64-NEXT:OffsetToExceptionTable: 0x398
+; SYMS64-NEXT:OffsetToExceptionTable: 0x38C
 ; SYMS64-NEXT:SizeOfFunction: 0x18
 ; SYMS64-NEXT:SymbolIndexOfNextBeyond: [[#IND+4]]
 ; SYMS64-NEXT:Auxiliary Type: AUX_EXCEPT (0xFF)
@@ -126,7 +126,7 @@
 ; SYMS64-NEXT:  NumberOfAuxEntries: 3
 ; SYMS64-NEXT:  Exception Auxiliary Entry {
 ; SYMS64-NEXT:Index: [[#IND+5]]
-; SYMS64-NEXT:OffsetToExceptionTable: 0x3AC
+; SYMS64-NEXT:OffsetToExceptionTable: 0x3A0
 ; SYMS64-NEXT:SizeOfFunction: 0x68
 ; SYMS64-NEXT:SymbolIndexOfNextBeyond: [[#IND+8]]
 ; SYMS64-NEXT:Auxiliary Type: AUX_EXCEPT (0xFF)
Index: llvm/test/CodeGen/PowerPC/aix-dwarf.ll
===
--- llvm/test/CodeGen/PowerPC/aix-dwarf.ll
+++ llvm/test/CodeGen/PowerPC/aix-dwarf.ll
@@ -65,7 +65,7 @@
 ; SEC32-NEXT:RelocationPointer: 0x1F4
 ; SEC64-NEXT:Size: 0x18
 ; SEC64-NEXT:RawDataOffset: 0x1A8
-; SEC64-NEXT:RelocationPointer: 0x2C8
+; SEC64-NEXT:RelocationPointer: 0x29C
 ; SEC-NEXT:  LineNumberPointer: 0x0
 ; SEC-NEXT:  NumberOfRelocations: 2
 ; SEC-NEXT:  NumberOfLineNumbers: 0
@@ -93,9 +93,9 @@
 ; SEC32-NEXT:Size: 0x57
 ; SEC32-NEXT:RawDataOffset: 0x15C
 ; SEC32-NEXT:RelocationPointer: 0x208
-; SEC64-NEXT:Size: 0x6F
+; SEC64-NEXT:Size: 0x5F
 ; SEC64-NEXT:RawDataOffset: 0x200
-; SEC64-NEXT:RelocationPointer: 0x2E4
+; SEC64-NEXT:RelocationPointer: 0x2B8
 ; SEC-NEXT:  LineNumberPointer: 0x0
 ; SEC-NEX

[PATCH] D150758: [AIX] make integrated-as as default on AIX.

2023-05-17 Thread Esme Yi via Phabricator via cfe-commits
Esme created this revision.
Esme added reviewers: shchenz, DiggerLin, hubert.reinterpretcast, PowerPC.
Herald added a subscriber: hiraditya.
Herald added a project: All.
Esme requested review of this revision.
Herald added subscribers: llvm-commits, cfe-commits, MaskRay.
Herald added projects: clang, LLVM.

Clang uses LLVM’s integrated assembler by default on most targets, however 
non-integrated-as mode is default on AIX.
Currently integrated-as mode on AIX has passed tests of LNT, bootstrap, RingX 
and Spec2017, therefore this patch sets integrated-as as the default assembler 
mode on AIX.


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D150758

Files:
  clang/lib/Driver/ToolChains/AIX.h
  clang/test/Driver/aix-as.c
  clang/test/Driver/aix-integrated-as.c
  llvm/lib/MC/MCAsmInfoXCOFF.cpp

Index: llvm/lib/MC/MCAsmInfoXCOFF.cpp
===
--- llvm/lib/MC/MCAsmInfoXCOFF.cpp
+++ llvm/lib/MC/MCAsmInfoXCOFF.cpp
@@ -52,7 +52,7 @@
   COMMDirectiveAlignmentIsInBytes = false;
   LCOMMDirectiveAlignmentType = LCOMM::Log2Alignment;
   HasDotTypeDotSizeDirective = false;
-  UseIntegratedAssembler = false;
+  UseIntegratedAssembler = true;
   ParseInlineAsmUsingAsmParser = true;
   NeedsFunctionDescriptors = true;
 
Index: clang/test/Driver/aix-integrated-as.c
===
--- /dev/null
+++ clang/test/Driver/aix-integrated-as.c
@@ -0,0 +1,17 @@
+// Test integrated-as is called by default on AIX.
+
+// Check powerpc-ibm-aix7.1.0.0, 32-bit.
+// RUN: %clang %s -### -c 2>&1 \
+// RUN: --target=powerpc-ibm-aix7.1.0.0 \
+// RUN:   | FileCheck --check-prefix=CHECK-IAS32 %s
+// CHECK-IAS32-NOT: "-a32"
+// CHECK-IAS32: "-cc1" "-triple" "powerpc-ibm-aix7.1.0.0" "-emit-obj"
+// CHECK-IAS32: "aix-integrated-as.o"
+
+// Check powerpc64-ibm-aix7.1.0.0, 64-bit.
+// RUN: %clang %s -### -c 2>&1 \
+// RUN: --target=powerpc64-ibm-aix7.1.0.0 \
+// RUN:   | FileCheck --check-prefix=CHECK-IAS64 %s
+// CHECK-IAS64-NOT: "-a64"
+// CHECK-IAS64: "-cc1" "-triple" "powerpc64-ibm-aix7.1.0.0" "-emit-obj"
+// CHECK-IAS64: "aix-integrated-as.o"
Index: clang/test/Driver/aix-as.c
===
--- clang/test/Driver/aix-as.c
+++ clang/test/Driver/aix-as.c
@@ -2,7 +2,7 @@
 // only test assembler functionalities in this suite.
 
 // Check powerpc-ibm-aix7.1.0.0, 32-bit.
-// RUN: %clang %s -### -c 2>&1 \
+// RUN: %clang %s -### -c 2>&1 -fno-integrated-as \
 // RUN: --target=powerpc-ibm-aix7.1.0.0 \
 // RUN:   | FileCheck --check-prefix=CHECK-AS32 %s
 // CHECK-AS32-NOT: warning:
@@ -12,7 +12,7 @@
 // CHECK-AS32: "-many" 
 
 // Check powerpc64-ibm-aix7.1.0.0, 64-bit.
-// RUN: %clang %s -### -c 2>&1 \
+// RUN: %clang %s -### -c 2>&1 -fno-integrated-as \
 // RUN: --target=powerpc64-ibm-aix7.1.0.0 \
 // RUN:   | FileCheck --check-prefix=CHECK-AS64 %s
 // CHECK-AS64-NOT: warning:
@@ -22,7 +22,7 @@
 // CHECK-AS64: "-many"
 
 // Check powerpc-ibm-aix7.1.0.0, 32-bit. -Xassembler  option. 
-// RUN: %clang %s -### -c 2>&1 \
+// RUN: %clang %s -### -c 2>&1 -fno-integrated-as \
 // RUN: -Xassembler -w \
 // RUN: --target=powerpc-ibm-aix7.1.0.0 \
 // RUN:   | FileCheck --check-prefix=CHECK-AS32-Xassembler %s
@@ -34,7 +34,7 @@
 // CHECK-AS32-Xassembler: "-w"
 
 // Check powerpc64-ibm-aix7.1.0.0, 64-bit. -Wa,, option.
-// RUN: %clang %s -### -c 2>&1 \
+// RUN: %clang %s -### -c 2>&1 -fno-integrated-as \
 // RUN: -Wa,-v,-w \
 // RUN: --target=powerpc64-ibm-aix7.1.0.0 \
 // RUN:   | FileCheck --check-prefix=CHECK-AS64-Wa %s
@@ -47,7 +47,7 @@
 // CHECK-AS64-Wa: "-w"
 
 // Check powerpc-ibm-aix7.1.0.0, 32-bit. Multiple input files.
-// RUN: %clang -### -c \
+// RUN: %clang -### -c -fno-integrated-as \
 // RUN: %S/Inputs/aix_ppc_tree/dummy0.s \
 // RUN: %S/Inputs/aix_ppc_tree/dummy1.s \
 // RUN: %S/Inputs/aix_ppc_tree/dummy2.s 2>&1 \
@@ -67,8 +67,8 @@
 // Check not passing no-integrated-as flag by default.
 // RUN: %clang %s -### -c 2>&1 --target=powerpc64-ibm-aix7.1.0.0 \
 // RUN:   | FileCheck --check-prefix=CHECK-IAS --implicit-check-not=-no-integrated-as %s
+// CHECK-IAS-NOT: "-a64"
 // CHECK-IAS: InstalledDir
-// CHECK-IAS: "-a64"
 
 // Check passing no-integrated-as flag if specified by user.
 // RUN: %clang %s -### -c 2>&1 --target=powerpc64-ibm-aix7.1.0.0 -fno-integrated-as \
Index: clang/lib/Driver/ToolChains/AIX.h
===
--- clang/lib/Driver/ToolChains/AIX.h
+++ clang/lib/Driver/ToolChains/AIX.h
@@ -68,6 +68,7 @@
   }
   bool isPICDefaultForced() const override { return true; }
   bool HasNativeLLVMSupport() const override { return true; }
+  bool IsIntegratedAssemblerDefault() const override { return true; }
 
   void
   AddClangSystemIncludeArgs(const llvm::opt::ArgList &DriverArgs,
___
cfe-com

[PATCH] D115503: [DebugInfo] emit DW_AT_accessibility attribute for class/struct/union types.

2021-12-10 Thread Esme Yi via Phabricator via cfe-commits
Esme created this revision.
Esme added reviewers: shchenz, probinson, dblaikie, jhenderson, aprantl, 
PowerPC.
Herald added a subscriber: hiraditya.
Esme requested review of this revision.
Herald added projects: clang, LLVM.
Herald added subscribers: llvm-commits, cfe-commits.

This patch emits DW_AT_accessibility attribute for class/struct/union types.

Sample program :

  class A {
public:
  struct B {
  };
public:
  B b;
  };
  
  struct C {
private:
  union D {
  };
public:
  D d;
  };
  
  union E {
private:
  class F {
  };
  class G {
  };
public:
  F f;
  G g;
  };

Debug info without this patch:

  0x013d:   DW_TAG_class_type
  DW_AT_name  ("A")
  
  0x0143: DW_TAG_member
DW_AT_name("b")
DW_AT_accessibility   (DW_ACCESS_public)
  
  0x014e: DW_TAG_structure_type
DW_AT_name("B") // no accessibility attribute is 
present, private access is assumed for B.
  
  0x0155:   DW_TAG_structure_type
  DW_AT_name  ("C")
  
  0x015b: DW_TAG_member
DW_AT_name("d")
  
  0x0165: DW_TAG_union_type
DW_AT_name("D") // no accessibility attribute is 
present, public access is assumed for D.
  
  0x016c:   DW_TAG_union_type
  DW_AT_name  ("E")
  
  0x0172: DW_TAG_member
DW_AT_name("f")
  
  0x017c: DW_TAG_class_type
DW_AT_name("F") // no accessibility attribute is 
present, public access is assumed for F.
  
  0x0182: DW_TAG_member
DW_AT_name("g")
  
  0x018c: DW_TAG_class_type
DW_AT_name("G") // no accessibility attribute is 
present, public access is assumed for G.


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D115503

Files:
  clang/include/clang/AST/DeclCXX.h
  clang/lib/CodeGen/CGDebugInfo.cpp
  clang/test/CodeGenCXX/debug-info-access.cpp
  llvm/lib/CodeGen/AsmPrinter/DwarfUnit.cpp
  llvm/test/DebugInfo/X86/debug-info-access.ll

Index: llvm/test/DebugInfo/X86/debug-info-access.ll
===
--- llvm/test/DebugInfo/X86/debug-info-access.ll
+++ llvm/test/DebugInfo/X86/debug-info-access.ll
@@ -1,9 +1,8 @@
 ; RUN: llc -mtriple=x86_64-apple-darwin %s -o %t -filetype=obj
 ; RUN: llvm-dwarfdump -debug-info %t | FileCheck %s
-;
+
 ; Test the DW_AT_accessibility DWARF attribute.
-;
-;
+
 ; Regenerate me:
 ; clang++ -g tools/clang/test/CodeGenCXX/debug-info-access.cpp -S -emit-llvm -o -
 ;
@@ -22,6 +21,34 @@
 ; void priv_default();
 ;   };
 ;
+;   class C {
+;   public:
+; struct D {
+; };
+;   protected:
+; union E {
+; };
+;   public:
+; D d;
+; E e;
+;   };
+;
+;   struct F {
+;   private:
+; union G {
+; };
+;   public:
+; G g;
+;   };
+;
+;   union H {
+;   private:
+; class I {
+; };
+;   public:
+; I i;
+;   };
+;
 ;   union U {
 ; void union_pub_default();
 ;   private:
@@ -33,119 +60,164 @@
 ;   A a;
 ;   B b;
 ;   U u;
-;
+;   C c;
+;   F f;
+;   H h;
+
 ; CHECK: DW_TAG_subprogram
 ; CHECK: DW_AT_name {{.*}}"free")
 ; CHECK-NOT: DW_AT_accessibility
 
+; CHECK: DW_TAG_member
+; CHECK: DW_AT_name {{.*}}"union_priv")
+; CHECK-NOT: DW_TAG
+; CHECK: DW_AT_accessibility {{.*}}(DW_ACCESS_private)
+
+; CHECK: DW_TAG_subprogram
+; CHECK: DW_AT_name {{.*}}"union_pub_default")
+; CHECK-NOT: DW_AT_accessibility
+
 ; CHECK: DW_TAG_member
 ; CHECK: DW_AT_name {{.*}}"pub_default_static")
 ; CHECK-NOT: DW_AT_accessibility
 ; CHECK-NOT: DW_TAG
-;
+
 ; CHECK: DW_TAG_subprogram
 ; CHECK: DW_AT_name {{.*}}"pub_default")
 ; CHECK-NOT: DW_AT_accessibility
 ; CHECK: DW_TAG
-;
+
 ; CHECK: DW_TAG_inheritance
 ; CHECK-NOT: DW_TAG
 ; CHECK: DW_AT_accessibility {{.*}}(DW_ACCESS_public)
-;
+
 ; CHECK: DW_TAG_member
 ; CHECK: DW_AT_name {{.*}}"public_static")
 ; CHECK-NOT: DW_TAG
 ; CHECK: DW_AT_accessibility {{.*}}(DW_ACCESS_public)
-;
+
 ; CHECK: DW_TAG_subprogram
 ; CHECK: DW_AT_name {{.*}}"pub")
 ; CHECK-NOT: DW_TAG
 ; CHECK: DW_AT_accessibility {{.*}}(DW_ACCESS_public)
-;
+
 ; CHECK: DW_TAG_subprogram
 ; CHECK: DW_AT_name {{.*}}"prot")
 ; CHECK-NOT: DW_TAG
 ; CHECK: DW_AT_accessibility {{.*}}(DW_ACCESS_protected)
-;
+
 ; CHECK: DW_TAG_subprogram
 ; CHECK: DW_AT_name {{.*}}"priv_default")
 ; CHECK-NOT: DW_AT_accessibility
 ; CHECK: DW_TAG
-;
-; CHECK: DW_TAG_member
-; CHECK: DW_AT_name {{.*}}"union_priv")
-; CHECK-NOT: DW_TAG
-; CHECK: DW_AT_accessibility {{.*}}(DW_ACCESS_private)
-;
-; CHECK: DW_TAG_subprogram
-; CHECK: DW_AT_name {{.*}}"union_pub_default")
-; CHECK-NOT: DW_AT_accessibility
-;
-; ModuleID = '/llvm/tools/clang/test/CodeGenCXX/debug-info-access.cpp'
-source_filename = "test/DebugInfo/X86/debug-info-access.ll"
-targ

[PATCH] D115503: [DebugInfo][Clang] record the access flag for class/struct/union types.

2021-12-12 Thread Esme Yi via Phabricator via cfe-commits
Esme updated this revision to Diff 393789.
Esme retitled this revision from "[DebugInfo] emit DW_AT_accessibility 
attribute for class/struct/union types." to "[DebugInfo][Clang] record the 
access flag for class/struct/union types.".
Esme added a comment.

Thanks! @dblaikie 
Separate into Clang part and LLVM part.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D115503

Files:
  clang/lib/CodeGen/CGDebugInfo.cpp
  clang/test/CodeGenCXX/debug-info-access.cpp


Index: clang/test/CodeGenCXX/debug-info-access.cpp
===
--- clang/test/CodeGenCXX/debug-info-access.cpp
+++ clang/test/CodeGenCXX/debug-info-access.cpp
@@ -25,6 +25,38 @@
   void priv_default();
 };
 
+class C {
+public:
+  // CHECK: !DICompositeType(tag: DW_TAG_structure_type, name: "D",{{.*}} 
flags: DIFlagPublic | DIFlagTypePassByValue,
+  struct D {
+  };
+protected:
+  //CHECK: !DICompositeType(tag: DW_TAG_union_type, name: "E",{{.*}} flags: 
DIFlagProtected | DIFlagTypePassByValue,
+  union E {
+  };
+public:
+  D d;
+  E e;
+};
+
+struct F {
+private:
+  // CHECK: !DICompositeType(tag: DW_TAG_union_type, name: "G",{{.*}} flags: 
DIFlagPrivate | DIFlagTypePassByValue,
+  union G {
+  };
+public:
+  G g;
+};
+
+union H {
+private:
+  // CHECK: !DICompositeType(tag: DW_TAG_class_type, name: "I",{{.*}} flags: 
DIFlagPrivate | DIFlagTypePassByValue,
+  class I {
+  };
+public:
+  I i;
+};
+
 union U {
   // CHECK-DAG: !DISubprogram(name: "union_pub_default",{{.*}} line: 
[[@LINE+1]],{{.*}} flags: DIFlagPrototyped,
   void union_pub_default();
@@ -33,7 +65,6 @@
   int union_priv;
 };
 
-
 // CHECK: !DISubprogram(name: "free",
 // CHECK-SAME:  flags: DIFlagPrototyped,
 // CHECK-SAME:  spFlags: DISPFlagDefinition
@@ -42,3 +73,6 @@
 U u;
 A a;
 B b;
+C c;
+F f;
+H h;
Index: clang/lib/CodeGen/CGDebugInfo.cpp
===
--- clang/lib/CodeGen/CGDebugInfo.cpp
+++ clang/lib/CodeGen/CGDebugInfo.cpp
@@ -3633,6 +3633,9 @@
 // Record exports it symbols to the containing structure.
 if (CXXRD->isAnonymousStructOrUnion())
 Flags |= llvm::DINode::FlagExportSymbols;
+
+Flags |= getAccessFlag(CXXRD->getAccess(),
+   dyn_cast(CXXRD->getDeclContext()));
   }
 
   llvm::DINodeArray Annotations = CollectBTFDeclTagAnnotations(D);


Index: clang/test/CodeGenCXX/debug-info-access.cpp
===
--- clang/test/CodeGenCXX/debug-info-access.cpp
+++ clang/test/CodeGenCXX/debug-info-access.cpp
@@ -25,6 +25,38 @@
   void priv_default();
 };
 
+class C {
+public:
+  // CHECK: !DICompositeType(tag: DW_TAG_structure_type, name: "D",{{.*}} flags: DIFlagPublic | DIFlagTypePassByValue,
+  struct D {
+  };
+protected:
+  //CHECK: !DICompositeType(tag: DW_TAG_union_type, name: "E",{{.*}} flags: DIFlagProtected | DIFlagTypePassByValue,
+  union E {
+  };
+public:
+  D d;
+  E e;
+};
+
+struct F {
+private:
+  // CHECK: !DICompositeType(tag: DW_TAG_union_type, name: "G",{{.*}} flags: DIFlagPrivate | DIFlagTypePassByValue,
+  union G {
+  };
+public:
+  G g;
+};
+
+union H {
+private:
+  // CHECK: !DICompositeType(tag: DW_TAG_class_type, name: "I",{{.*}} flags: DIFlagPrivate | DIFlagTypePassByValue,
+  class I {
+  };
+public:
+  I i;
+};
+
 union U {
   // CHECK-DAG: !DISubprogram(name: "union_pub_default",{{.*}} line: [[@LINE+1]],{{.*}} flags: DIFlagPrototyped,
   void union_pub_default();
@@ -33,7 +65,6 @@
   int union_priv;
 };
 
-
 // CHECK: !DISubprogram(name: "free",
 // CHECK-SAME:  flags: DIFlagPrototyped,
 // CHECK-SAME:  spFlags: DISPFlagDefinition
@@ -42,3 +73,6 @@
 U u;
 A a;
 B b;
+C c;
+F f;
+H h;
Index: clang/lib/CodeGen/CGDebugInfo.cpp
===
--- clang/lib/CodeGen/CGDebugInfo.cpp
+++ clang/lib/CodeGen/CGDebugInfo.cpp
@@ -3633,6 +3633,9 @@
 // Record exports it symbols to the containing structure.
 if (CXXRD->isAnonymousStructOrUnion())
 Flags |= llvm::DINode::FlagExportSymbols;
+
+Flags |= getAccessFlag(CXXRD->getAccess(),
+   dyn_cast(CXXRD->getDeclContext()));
   }
 
   llvm::DINodeArray Annotations = CollectBTFDeclTagAnnotations(D);
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D115503: [DebugInfo][Clang] record the access flag for class/struct/union types.

2021-12-12 Thread Esme Yi via Phabricator via cfe-commits
Esme updated this revision to Diff 393805.
Esme added a comment.

Add a case to show that the default access flag is not recorded.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D115503

Files:
  clang/lib/CodeGen/CGDebugInfo.cpp
  clang/test/CodeGenCXX/debug-info-access.cpp


Index: clang/test/CodeGenCXX/debug-info-access.cpp
===
--- clang/test/CodeGenCXX/debug-info-access.cpp
+++ clang/test/CodeGenCXX/debug-info-access.cpp
@@ -25,6 +25,43 @@
   void priv_default();
 };
 
+class C {
+public:
+  // CHECK: !DICompositeType(tag: DW_TAG_structure_type, name: "D",{{.*}} 
flags: DIFlagPublic | DIFlagTypePassByValue,
+  struct D {
+  };
+protected:
+  // CHECK: !DICompositeType(tag: DW_TAG_union_type, name: "E",{{.*}} flags: 
DIFlagProtected | DIFlagTypePassByValue,
+  union E {
+  };
+private:
+  // CHECK: !DICompositeType(tag: DW_TAG_structure_type, name: "J",{{.*}} 
flags: DIFlagTypePassByValue,
+  struct J {
+  };
+public:
+  D d;
+  E e;
+  J j;
+};
+
+struct F {
+private:
+  // CHECK: !DICompositeType(tag: DW_TAG_union_type, name: "G",{{.*}} flags: 
DIFlagPrivate | DIFlagTypePassByValue,
+  union G {
+  };
+public:
+  G g;
+};
+
+union H {
+private:
+  // CHECK: !DICompositeType(tag: DW_TAG_class_type, name: "I",{{.*}} flags: 
DIFlagPrivate | DIFlagTypePassByValue,
+  class I {
+  };
+public:
+  I i;
+};
+
 union U {
   // CHECK-DAG: !DISubprogram(name: "union_pub_default",{{.*}} line: 
[[@LINE+1]],{{.*}} flags: DIFlagPrototyped,
   void union_pub_default();
@@ -33,7 +70,6 @@
   int union_priv;
 };
 
-
 // CHECK: !DISubprogram(name: "free",
 // CHECK-SAME:  flags: DIFlagPrototyped,
 // CHECK-SAME:  spFlags: DISPFlagDefinition
@@ -42,3 +78,6 @@
 U u;
 A a;
 B b;
+C c;
+F f;
+H h;
Index: clang/lib/CodeGen/CGDebugInfo.cpp
===
--- clang/lib/CodeGen/CGDebugInfo.cpp
+++ clang/lib/CodeGen/CGDebugInfo.cpp
@@ -3633,6 +3633,9 @@
 // Record exports it symbols to the containing structure.
 if (CXXRD->isAnonymousStructOrUnion())
 Flags |= llvm::DINode::FlagExportSymbols;
+
+Flags |= getAccessFlag(CXXRD->getAccess(),
+   dyn_cast(CXXRD->getDeclContext()));
   }
 
   llvm::DINodeArray Annotations = CollectBTFDeclTagAnnotations(D);


Index: clang/test/CodeGenCXX/debug-info-access.cpp
===
--- clang/test/CodeGenCXX/debug-info-access.cpp
+++ clang/test/CodeGenCXX/debug-info-access.cpp
@@ -25,6 +25,43 @@
   void priv_default();
 };
 
+class C {
+public:
+  // CHECK: !DICompositeType(tag: DW_TAG_structure_type, name: "D",{{.*}} flags: DIFlagPublic | DIFlagTypePassByValue,
+  struct D {
+  };
+protected:
+  // CHECK: !DICompositeType(tag: DW_TAG_union_type, name: "E",{{.*}} flags: DIFlagProtected | DIFlagTypePassByValue,
+  union E {
+  };
+private:
+  // CHECK: !DICompositeType(tag: DW_TAG_structure_type, name: "J",{{.*}} flags: DIFlagTypePassByValue,
+  struct J {
+  };
+public:
+  D d;
+  E e;
+  J j;
+};
+
+struct F {
+private:
+  // CHECK: !DICompositeType(tag: DW_TAG_union_type, name: "G",{{.*}} flags: DIFlagPrivate | DIFlagTypePassByValue,
+  union G {
+  };
+public:
+  G g;
+};
+
+union H {
+private:
+  // CHECK: !DICompositeType(tag: DW_TAG_class_type, name: "I",{{.*}} flags: DIFlagPrivate | DIFlagTypePassByValue,
+  class I {
+  };
+public:
+  I i;
+};
+
 union U {
   // CHECK-DAG: !DISubprogram(name: "union_pub_default",{{.*}} line: [[@LINE+1]],{{.*}} flags: DIFlagPrototyped,
   void union_pub_default();
@@ -33,7 +70,6 @@
   int union_priv;
 };
 
-
 // CHECK: !DISubprogram(name: "free",
 // CHECK-SAME:  flags: DIFlagPrototyped,
 // CHECK-SAME:  spFlags: DISPFlagDefinition
@@ -42,3 +78,6 @@
 U u;
 A a;
 B b;
+C c;
+F f;
+H h;
Index: clang/lib/CodeGen/CGDebugInfo.cpp
===
--- clang/lib/CodeGen/CGDebugInfo.cpp
+++ clang/lib/CodeGen/CGDebugInfo.cpp
@@ -3633,6 +3633,9 @@
 // Record exports it symbols to the containing structure.
 if (CXXRD->isAnonymousStructOrUnion())
 Flags |= llvm::DINode::FlagExportSymbols;
+
+Flags |= getAccessFlag(CXXRD->getAccess(),
+   dyn_cast(CXXRD->getDeclContext()));
   }
 
   llvm::DINodeArray Annotations = CollectBTFDeclTagAnnotations(D);
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D115503: [DebugInfo][Clang] record the access flag for class/struct/union types.

2021-12-12 Thread Esme Yi via Phabricator via cfe-commits
Esme added inline comments.



Comment at: clang/test/CodeGenCXX/debug-info-access.cpp:28
 
+class C {
+public:

dblaikie wrote:
> shchenz wrote:
> > Will we generate a redundant flag if we define a private type in the class 
> > or a public type in the struct/union? Maybe we could add a case for that 
> > too.
> How',s this compare to member variables? Do we always put the access level on 
> members even when it's the default? Perhaps the Flag handling code could be 
> generalized and used between both these cases & if one of them gets fixed in 
> favor of not explicitly specifying the default, both would benefit.
Member variables use the same Flag handling code, i.e. getAccessFlag(), which 
returns 0 if the access specifier equals the default for the containing type.
Therefore for both cases we will not record the access flag when it's the 
default.
The case where the default access is not explicitly specified is added now.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D115503

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


[PATCH] D115503: [DebugInfo][Clang] record the access flag for class/struct/union types.

2021-12-13 Thread Esme Yi via Phabricator via cfe-commits
Esme added a comment.

In D115503#3188302 , @dblaikie wrote:

> Got any data on how much this (combined with the LLVM patch) increases debug 
> info size of, say, a clang self-host build? I assume not much, but wouldn't 
> hurt to know.

Before:

  $ size clang
 text  data bss dec   
  302446131 10748172 511744 313706047 --> total size is 627412094

After:

  $ size clang
 text  data bss dec 
  302446483 10748172 511744 313706399 --> total size is 627412798

I built two self-host Clangs with and without the two patches, got results 
showing there is 704 bytes of debug info increased. I think this is acceptable?

> (does GCC produce this sort of debug info, or does it skip the access 
> specifiers on nested types?)

Yes, GCC also emits the access attribute for nested types when the access level 
doesn't equal to the default.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D115503

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


[PATCH] D115503: [DebugInfo][Clang] record the access flag for class/struct/union types.

2021-12-14 Thread Esme Yi via Phabricator via cfe-commits
Esme added a comment.

In D115503#3192840 , @dblaikie wrote:

> Thanks for the data - looks good to me. Maybe include some of that data 
> (summary of total binary size change/total debug info size change - and if 
> you could include the flags (was this an -O0 -g build? Optimized (at what 
> level)? Compressed debug info (-gz)? etc) that'd be helpful to better 
> understand the comparison.

They are built with flags of `clang -O0 -g` (no -gz) and the table with summary 
changes is updated as follow.

| section   | before | after  | change  |
| .debug_loc| 929821 | 929821 | 0   |
| .debug_abbrev | 5885289  | 5971547  | +86258  |
| .debug_info   | 497613455  | 498122074  | +508619 |
| .debug_ranges | 45731664  | 45731664  | 0   |
| .debug_str| 233842595  | 233839388  | -3207   |
| .debug_line   | 149773166  | 149764583  | -8583   |
| total (debug) | 933775990  | 934359077  | +583087 |
|



| total (binary) | 1394617288 | 1395200024 | +582736 |


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D115503

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


[PATCH] D115503: [DebugInfo][Clang] record the access flag for class/struct/union types.

2021-12-17 Thread Esme Yi via Phabricator via cfe-commits
Esme added a comment.

In D115503#3195171 , @dblaikie wrote:

> Ah, cool - could you include % growth on those rows

Thanks, I edited the table in the previous comment.

> (hmm, .debug_line and .debug_str shouldn't be changing in size with this 
> change, right? If you use the same clang version to test the two cases (if 
> you're using a bootstrap with/without the patch applied, then the patch 
> changes itself would show up as changes here))

Hmm...it's a little strange. I got these data by:

1. pull a base llvm-project branch --> source codes
2. build the source --> clang1
3. build the codes after applying the patch  --> clang2
4. use clang1 to build the source (no patch) --> clang-before
5. use clang2 to build the source (no patch) --> clang-after
6. compare the size between clang-before and clang-after

I reproduced these steps on another base branch, and saw similar changes (i.e. 
.debug_line and .debug_str changed in size)...
But I think the change is so small as to be negligible?

> & if you could include this table in the commit message, that'd be great!
>
> (can you commit this yourself, or do you need someone to do that for you?)

I will include this table when committing, thanks!


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D115503

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


[PATCH] D115503: [DebugInfo][Clang] record the access flag for class/struct/union types.

2021-12-19 Thread Esme Yi 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 rG18f087c21cdb: [DebugInfo][Clang] record the access flag for 
class/struct/union types. (authored by Esme).

Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D115503

Files:
  clang/lib/CodeGen/CGDebugInfo.cpp
  clang/test/CodeGenCXX/debug-info-access.cpp


Index: clang/test/CodeGenCXX/debug-info-access.cpp
===
--- clang/test/CodeGenCXX/debug-info-access.cpp
+++ clang/test/CodeGenCXX/debug-info-access.cpp
@@ -25,6 +25,43 @@
   void priv_default();
 };
 
+class C {
+public:
+  // CHECK: !DICompositeType(tag: DW_TAG_structure_type, name: "D",{{.*}} 
flags: DIFlagPublic | DIFlagTypePassByValue,
+  struct D {
+  };
+protected:
+  // CHECK: !DICompositeType(tag: DW_TAG_union_type, name: "E",{{.*}} flags: 
DIFlagProtected | DIFlagTypePassByValue,
+  union E {
+  };
+private:
+  // CHECK: !DICompositeType(tag: DW_TAG_structure_type, name: "J",{{.*}} 
flags: DIFlagTypePassByValue,
+  struct J {
+  };
+public:
+  D d;
+  E e;
+  J j;
+};
+
+struct F {
+private:
+  // CHECK: !DICompositeType(tag: DW_TAG_union_type, name: "G",{{.*}} flags: 
DIFlagPrivate | DIFlagTypePassByValue,
+  union G {
+  };
+public:
+  G g;
+};
+
+union H {
+private:
+  // CHECK: !DICompositeType(tag: DW_TAG_class_type, name: "I",{{.*}} flags: 
DIFlagPrivate | DIFlagTypePassByValue,
+  class I {
+  };
+public:
+  I i;
+};
+
 union U {
   // CHECK-DAG: !DISubprogram(name: "union_pub_default",{{.*}} line: 
[[@LINE+1]],{{.*}} flags: DIFlagPrototyped,
   void union_pub_default();
@@ -33,7 +70,6 @@
   int union_priv;
 };
 
-
 // CHECK: !DISubprogram(name: "free",
 // CHECK-SAME:  flags: DIFlagPrototyped,
 // CHECK-SAME:  spFlags: DISPFlagDefinition
@@ -42,3 +78,6 @@
 U u;
 A a;
 B b;
+C c;
+F f;
+H h;
Index: clang/lib/CodeGen/CGDebugInfo.cpp
===
--- clang/lib/CodeGen/CGDebugInfo.cpp
+++ clang/lib/CodeGen/CGDebugInfo.cpp
@@ -3633,6 +3633,9 @@
 // Record exports it symbols to the containing structure.
 if (CXXRD->isAnonymousStructOrUnion())
 Flags |= llvm::DINode::FlagExportSymbols;
+
+Flags |= getAccessFlag(CXXRD->getAccess(),
+   dyn_cast(CXXRD->getDeclContext()));
   }
 
   llvm::DINodeArray Annotations = CollectBTFDeclTagAnnotations(D);


Index: clang/test/CodeGenCXX/debug-info-access.cpp
===
--- clang/test/CodeGenCXX/debug-info-access.cpp
+++ clang/test/CodeGenCXX/debug-info-access.cpp
@@ -25,6 +25,43 @@
   void priv_default();
 };
 
+class C {
+public:
+  // CHECK: !DICompositeType(tag: DW_TAG_structure_type, name: "D",{{.*}} flags: DIFlagPublic | DIFlagTypePassByValue,
+  struct D {
+  };
+protected:
+  // CHECK: !DICompositeType(tag: DW_TAG_union_type, name: "E",{{.*}} flags: DIFlagProtected | DIFlagTypePassByValue,
+  union E {
+  };
+private:
+  // CHECK: !DICompositeType(tag: DW_TAG_structure_type, name: "J",{{.*}} flags: DIFlagTypePassByValue,
+  struct J {
+  };
+public:
+  D d;
+  E e;
+  J j;
+};
+
+struct F {
+private:
+  // CHECK: !DICompositeType(tag: DW_TAG_union_type, name: "G",{{.*}} flags: DIFlagPrivate | DIFlagTypePassByValue,
+  union G {
+  };
+public:
+  G g;
+};
+
+union H {
+private:
+  // CHECK: !DICompositeType(tag: DW_TAG_class_type, name: "I",{{.*}} flags: DIFlagPrivate | DIFlagTypePassByValue,
+  class I {
+  };
+public:
+  I i;
+};
+
 union U {
   // CHECK-DAG: !DISubprogram(name: "union_pub_default",{{.*}} line: [[@LINE+1]],{{.*}} flags: DIFlagPrototyped,
   void union_pub_default();
@@ -33,7 +70,6 @@
   int union_priv;
 };
 
-
 // CHECK: !DISubprogram(name: "free",
 // CHECK-SAME:  flags: DIFlagPrototyped,
 // CHECK-SAME:  spFlags: DISPFlagDefinition
@@ -42,3 +78,6 @@
 U u;
 A a;
 B b;
+C c;
+F f;
+H h;
Index: clang/lib/CodeGen/CGDebugInfo.cpp
===
--- clang/lib/CodeGen/CGDebugInfo.cpp
+++ clang/lib/CodeGen/CGDebugInfo.cpp
@@ -3633,6 +3633,9 @@
 // Record exports it symbols to the containing structure.
 if (CXXRD->isAnonymousStructOrUnion())
 Flags |= llvm::DINode::FlagExportSymbols;
+
+Flags |= getAccessFlag(CXXRD->getAccess(),
+   dyn_cast(CXXRD->getDeclContext()));
   }
 
   llvm::DINodeArray Annotations = CollectBTFDeclTagAnnotations(D);
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits