[clang] 2e192ab - [CodeExtractor] Preserve topological order for the return blocks.

2021-08-25 Thread Vyacheslav Zakharin via cfe-commits

Author: Vyacheslav Zakharin
Date: 2021-08-25T08:09:01-07:00
New Revision: 2e192ab1f457918484d3f41b9d2271a9dd8a9de3

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

LOG: [CodeExtractor] Preserve topological order for the return blocks.

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

Added: 


Modified: 
clang/test/OpenMP/cancel_codegen.cpp
clang/test/OpenMP/parallel_codegen.cpp
llvm/lib/Transforms/IPO/IROutliner.cpp
llvm/lib/Transforms/Utils/CodeExtractor.cpp
llvm/test/Transforms/CodeExtractor/LoopExtractor.ll
llvm/test/Transforms/CodeExtractor/LoopExtractor_crash.ll
llvm/test/Transforms/CodeExtractor/LoopExtractor_infinite.ll
llvm/test/Transforms/CodeExtractor/live_shrink_unsafe.ll
llvm/test/Transforms/CodeExtractor/unreachable-block.ll
llvm/test/Transforms/HotColdSplit/multiple-exits.ll
llvm/test/Transforms/IROutliner/outlining-different-output-blocks.ll
llvm/test/Transforms/IROutliner/outlining-same-output-blocks.ll
llvm/test/Transforms/OpenMP/parallel_region_merging.ll
llvm/test/tools/llvm-extract/extract-blocks-with-groups.ll

Removed: 




diff  --git a/clang/test/OpenMP/cancel_codegen.cpp 
b/clang/test/OpenMP/cancel_codegen.cpp
index 2b7c1d6d254d7..d87dee6184b0d 100644
--- a/clang/test/OpenMP/cancel_codegen.cpp
+++ b/clang/test/OpenMP/cancel_codegen.cpp
@@ -1560,8 +1560,6 @@ for (int i = 0; i < argc; ++i) {
 // CHECK3-NEXT:store i32 [[TMP0]], i32* [[TID_ADDR_LOCAL]], align 4
 // CHECK3-NEXT:[[TID:%.*]] = load i32, i32* [[TID_ADDR_LOCAL]], align 4
 // CHECK3-NEXT:br label [[OMP_PAR_REGION:%.*]]
-// CHECK3:   omp.par.outlined.exit.exitStub:
-// CHECK3-NEXT:ret void
 // CHECK3:   omp.par.region:
 // CHECK3-NEXT:[[TMP1:%.*]] = load float, float* @flag, align 4
 // CHECK3-NEXT:[[TOBOOL:%.*]] = fcmp une float [[TMP1]], 0.00e+00
@@ -1607,6 +1605,8 @@ for (int i = 0; i < argc; ++i) {
 // CHECK3-NEXT:br label [[OMP_PAR_OUTLINED_EXIT_EXITSTUB]]
 // CHECK3:   .split:
 // CHECK3-NEXT:br label [[TMP3]]
+// CHECK3:   omp.par.outlined.exit.exitStub:
+// CHECK3-NEXT:ret void
 //
 //
 // CHECK3-LABEL: define {{[^@]+}}@.omp_task_entry.
@@ -2187,8 +2187,6 @@ for (int i = 0; i < argc; ++i) {
 // CHECK4-NEXT:store i32 [[TMP0]], i32* [[TID_ADDR_LOCAL]], align 4
 // CHECK4-NEXT:[[TID:%.*]] = load i32, i32* [[TID_ADDR_LOCAL]], align 4
 // CHECK4-NEXT:br label [[OMP_PAR_REGION:%.*]]
-// CHECK4:   omp.par.outlined.exit.exitStub:
-// CHECK4-NEXT:ret void
 // CHECK4:   omp.par.region:
 // CHECK4-NEXT:[[TMP1:%.*]] = load float, float* @flag, align 4
 // CHECK4-NEXT:[[TOBOOL:%.*]] = fcmp une float [[TMP1]], 0.00e+00
@@ -2234,6 +2232,8 @@ for (int i = 0; i < argc; ++i) {
 // CHECK4-NEXT:br label [[OMP_PAR_OUTLINED_EXIT_EXITSTUB]]
 // CHECK4:   .split:
 // CHECK4-NEXT:br label [[TMP3]]
+// CHECK4:   omp.par.outlined.exit.exitStub:
+// CHECK4-NEXT:ret void
 //
 //
 // CHECK4-LABEL: define {{[^@]+}}@.omp_task_entry.
@@ -4054,8 +4054,6 @@ for (int i = 0; i < argc; ++i) {
 // CHECK9-NEXT:store i32 [[TMP0]], i32* [[TID_ADDR_LOCAL]], align 4
 // CHECK9-NEXT:[[TID:%.*]] = load i32, i32* [[TID_ADDR_LOCAL]], align 4
 // CHECK9-NEXT:br label [[OMP_PAR_REGION:%.*]]
-// CHECK9:   omp.par.outlined.exit.exitStub:
-// CHECK9-NEXT:ret void
 // CHECK9:   omp.par.region:
 // CHECK9-NEXT:[[TMP1:%.*]] = load float, float* @flag, align 4
 // CHECK9-NEXT:[[TOBOOL:%.*]] = fcmp une float [[TMP1]], 0.00e+00
@@ -4101,6 +4099,8 @@ for (int i = 0; i < argc; ++i) {
 // CHECK9-NEXT:br label [[OMP_PAR_OUTLINED_EXIT_EXITSTUB]]
 // CHECK9:   .split:
 // CHECK9-NEXT:br label [[TMP3]]
+// CHECK9:   omp.par.outlined.exit.exitStub:
+// CHECK9-NEXT:ret void
 //
 //
 // CHECK9-LABEL: define {{[^@]+}}@.omp_task_entry.
@@ -4681,8 +4681,6 @@ for (int i = 0; i < argc; ++i) {
 // CHECK10-NEXT:store i32 [[TMP0]], i32* [[TID_ADDR_LOCAL]], align 4
 // CHECK10-NEXT:[[TID:%.*]] = load i32, i32* [[TID_ADDR_LOCAL]], align 4
 // CHECK10-NEXT:br label [[OMP_PAR_REGION:%.*]]
-// CHECK10:   omp.par.outlined.exit.exitStub:
-// CHECK10-NEXT:ret void
 // CHECK10:   omp.par.region:
 // CHECK10-NEXT:[[TMP1:%.*]] = load float, float* @flag, align 4
 // CHECK10-NEXT:[[TOBOOL:%.*]] = fcmp une float [[TMP1]], 0.00e+00
@@ -4728,6 +4726,8 @@ for (int i = 0; i < argc; ++i) {
 // CHECK10-NEXT:br label [[OMP_PAR_OUTLINED_EXIT_EXITSTUB]]
 // CHECK10:   .split:
 // CHECK10-NEXT:br label [[TMP3]]
+// CHECK10:   omp.par.outlined.exit.exitStub:
+// CHECK10-NEXT:ret void
 //
 //
 // CHECK10-LABEL: define {{[^@]+}}@.omp_task_entry.

diff  --git a/clang/test/OpenMP/parallel_codegen.cpp 

[clang] 1ffbe8c - [clang-offload-wrapper] Disabled ELF offload notes embedding by default.

2021-08-18 Thread Vyacheslav Zakharin via cfe-commits

Author: Vyacheslav Zakharin
Date: 2021-08-18T08:18:03-07:00
New Revision: 1ffbe8c04ff269ca9847c37036fbad943820d6ae

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

LOG: [clang-offload-wrapper] Disabled ELF offload notes embedding by default.

This change-set puts 93d08acaacec951dbb302f77eeae51974985b6b2 functionality
under -add-omp-offload-notes switch that is OFF by default.
CUDA toolchain is not able to handle ELF images with LLVMOMPOFFLOAD
notes for unknown reason (see https://reviews.llvm.org/D99551#2950272).
I disable the ELF notes embedding until the CUDA issue is triaged and resolved.

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

Added: 


Modified: 
clang/test/Driver/clang-offload-wrapper.c
clang/tools/clang-offload-wrapper/ClangOffloadWrapper.cpp

Removed: 




diff  --git a/clang/test/Driver/clang-offload-wrapper.c 
b/clang/test/Driver/clang-offload-wrapper.c
index c671d88209744..1c84072fef80a 100644
--- a/clang/test/Driver/clang-offload-wrapper.c
+++ b/clang/test/Driver/clang-offload-wrapper.c
@@ -19,7 +19,7 @@
 //
 // Check bitcode produced by the wrapper tool.
 //
-// RUN: clang-offload-wrapper -target=x86_64-pc-linux-gnu -o %t.wrapper.bc 
%t.tgt 2>&1 | FileCheck %s --check-prefix ELF-WARNING
+// RUN: clang-offload-wrapper -add-omp-offload-notes 
-target=x86_64-pc-linux-gnu -o %t.wrapper.bc %t.tgt 2>&1 | FileCheck %s 
--check-prefix ELF-WARNING
 // RUN: llvm-dis %t.wrapper.bc -o - | FileCheck %s --check-prefix CHECK-IR
 
 // ELF-WARNING: is not an ELF image, so notes cannot be added to it.
@@ -58,16 +58,16 @@
 // Check that clang-offload-wrapper adds LLVMOMPOFFLOAD notes
 // into the ELF offload images:
 // RUN: yaml2obj %S/Inputs/empty-elf-template.yaml -o %t.64le -DBITS=64 
-DENCODING=LSB
-// RUN: clang-offload-wrapper -target=x86_64-pc-linux-gnu -o 
%t.wrapper.elf64le.bc %t.64le
+// RUN: clang-offload-wrapper -add-omp-offload-notes 
-target=x86_64-pc-linux-gnu -o %t.wrapper.elf64le.bc %t.64le
 // RUN: llvm-dis %t.wrapper.elf64le.bc -o - | FileCheck %s --check-prefix 
OMPNOTES
 // RUN: yaml2obj %S/Inputs/empty-elf-template.yaml -o %t.64be -DBITS=64 
-DENCODING=MSB
-// RUN: clang-offload-wrapper -target=x86_64-pc-linux-gnu -o 
%t.wrapper.elf64be.bc %t.64be
+// RUN: clang-offload-wrapper -add-omp-offload-notes 
-target=x86_64-pc-linux-gnu -o %t.wrapper.elf64be.bc %t.64be
 // RUN: llvm-dis %t.wrapper.elf64be.bc -o - | FileCheck %s --check-prefix 
OMPNOTES
 // RUN: yaml2obj %S/Inputs/empty-elf-template.yaml -o %t.32le -DBITS=32 
-DENCODING=LSB
-// RUN: clang-offload-wrapper -target=x86_64-pc-linux-gnu -o 
%t.wrapper.elf32le.bc %t.32le
+// RUN: clang-offload-wrapper -add-omp-offload-notes 
-target=x86_64-pc-linux-gnu -o %t.wrapper.elf32le.bc %t.32le
 // RUN: llvm-dis %t.wrapper.elf32le.bc -o - | FileCheck %s --check-prefix 
OMPNOTES
 // RUN: yaml2obj %S/Inputs/empty-elf-template.yaml -o %t.32be -DBITS=32 
-DENCODING=MSB
-// RUN: clang-offload-wrapper -target=x86_64-pc-linux-gnu -o 
%t.wrapper.elf32be.bc %t.32be
+// RUN: clang-offload-wrapper -add-omp-offload-notes 
-target=x86_64-pc-linux-gnu -o %t.wrapper.elf32be.bc %t.32be
 // RUN: llvm-dis %t.wrapper.elf32be.bc -o - | FileCheck %s --check-prefix 
OMPNOTES
 
 // There is no clean way for extracting the offload image

diff  --git a/clang/tools/clang-offload-wrapper/ClangOffloadWrapper.cpp 
b/clang/tools/clang-offload-wrapper/ClangOffloadWrapper.cpp
index bbadd909089e3..b86a927010eb2 100644
--- a/clang/tools/clang-offload-wrapper/ClangOffloadWrapper.cpp
+++ b/clang/tools/clang-offload-wrapper/ClangOffloadWrapper.cpp
@@ -76,6 +76,10 @@ static cl::opt SaveTemps(
  "This option forces print-out of the temporary files' names."),
 cl::Hidden);
 
+static cl::opt AddOpenMPOffloadNotes(
+"add-omp-offload-notes",
+cl::desc("Add LLVMOMPOFFLOAD ELF notes to ELF device images."), 
cl::Hidden);
+
 namespace {
 
 class BinaryWrapper {
@@ -630,7 +634,7 @@ int main(int argc, const char **argv) {
   return 1;
 }
 std::unique_ptr Buffer(std::move(*BufOrErr));
-if (File != "-") {
+if (File != "-" && AddOpenMPOffloadNotes) {
   // Adding ELF notes for STDIN is not supported yet.
   Buffer = Wrapper.addELFNotes(std::move(Buffer), File);
 }



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


[clang] 93d08ac - [clang-offload-wrapper] Add standard notes for ELF offload images

2021-08-16 Thread Vyacheslav Zakharin via cfe-commits

Author: Vyacheslav Zakharin
Date: 2021-08-16T13:09:01-07:00
New Revision: 93d08acaacec951dbb302f77eeae51974985b6b2

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

LOG: [clang-offload-wrapper] Add standard notes for ELF offload images

The patch adds ELF notes into SHT_NOTE sections of ELF offload images
passed to clang-offload-wrapper.

The new notes use a null-terminated "LLVMOMPOFFLOAD" note name.
There are currently three types of notes:

VERSION: a string (not null-terminated) representing the ELF offload
image structure. The current version '1.0' does not put any restrictions
on the structure of the image. If we ever need to come up with a common
structure for ELF offload images (e.g. to be able to analyze the images
in libomptarget in some standard way), then we will introduce new versions.

PRODUCER: a vendor specific name of the producing toolchain.
Upstream LLVM uses "LLVM" (not null-terminated).

PRODUCER_VERSION: a vendor specific version of the producing toolchain.
Upstream LLVM uses LLVM_VERSION_STRING with optional  LLVM_REVISION.

All three notes are not mandatory currently.

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

Added: 
clang/test/Driver/Inputs/empty-elf-template.yaml

Modified: 
clang/test/Driver/clang-offload-wrapper.c
clang/tools/clang-offload-wrapper/CMakeLists.txt
clang/tools/clang-offload-wrapper/ClangOffloadWrapper.cpp

Removed: 




diff  --git a/clang/test/Driver/Inputs/empty-elf-template.yaml 
b/clang/test/Driver/Inputs/empty-elf-template.yaml
new file mode 100644
index 0..f77de07a430f6
--- /dev/null
+++ b/clang/test/Driver/Inputs/empty-elf-template.yaml
@@ -0,0 +1,5 @@
+--- !ELF
+FileHeader:
+  Class: ELFCLASS[[BITS]]
+  Data:  ELFDATA2[[ENCODING]]
+  Type:  ET_REL

diff  --git a/clang/test/Driver/clang-offload-wrapper.c 
b/clang/test/Driver/clang-offload-wrapper.c
index 9a36559e34dd7..c671d88209744 100644
--- a/clang/test/Driver/clang-offload-wrapper.c
+++ b/clang/test/Driver/clang-offload-wrapper.c
@@ -19,9 +19,10 @@
 //
 // Check bitcode produced by the wrapper tool.
 //
-// RUN: clang-offload-wrapper -target=x86_64-pc-linux-gnu -o %t.wrapper.bc 
%t.tgt
+// RUN: clang-offload-wrapper -target=x86_64-pc-linux-gnu -o %t.wrapper.bc 
%t.tgt 2>&1 | FileCheck %s --check-prefix ELF-WARNING
 // RUN: llvm-dis %t.wrapper.bc -o - | FileCheck %s --check-prefix CHECK-IR
 
+// ELF-WARNING: is not an ELF image, so notes cannot be added to it.
 // CHECK-IR: target triple = "x86_64-pc-linux-gnu"
 
 // CHECK-IR-DAG: [[ENTTY:%.+]] = type { i8*, i8*, i{{32|64}}, i32, i32 }
@@ -53,3 +54,24 @@
 // CHECK-IR:   ret void
 
 // CHECK-IR: declare void @__tgt_unregister_lib([[DESCTY]]*)
+
+// Check that clang-offload-wrapper adds LLVMOMPOFFLOAD notes
+// into the ELF offload images:
+// RUN: yaml2obj %S/Inputs/empty-elf-template.yaml -o %t.64le -DBITS=64 
-DENCODING=LSB
+// RUN: clang-offload-wrapper -target=x86_64-pc-linux-gnu -o 
%t.wrapper.elf64le.bc %t.64le
+// RUN: llvm-dis %t.wrapper.elf64le.bc -o - | FileCheck %s --check-prefix 
OMPNOTES
+// RUN: yaml2obj %S/Inputs/empty-elf-template.yaml -o %t.64be -DBITS=64 
-DENCODING=MSB
+// RUN: clang-offload-wrapper -target=x86_64-pc-linux-gnu -o 
%t.wrapper.elf64be.bc %t.64be
+// RUN: llvm-dis %t.wrapper.elf64be.bc -o - | FileCheck %s --check-prefix 
OMPNOTES
+// RUN: yaml2obj %S/Inputs/empty-elf-template.yaml -o %t.32le -DBITS=32 
-DENCODING=LSB
+// RUN: clang-offload-wrapper -target=x86_64-pc-linux-gnu -o 
%t.wrapper.elf32le.bc %t.32le
+// RUN: llvm-dis %t.wrapper.elf32le.bc -o - | FileCheck %s --check-prefix 
OMPNOTES
+// RUN: yaml2obj %S/Inputs/empty-elf-template.yaml -o %t.32be -DBITS=32 
-DENCODING=MSB
+// RUN: clang-offload-wrapper -target=x86_64-pc-linux-gnu -o 
%t.wrapper.elf32be.bc %t.32be
+// RUN: llvm-dis %t.wrapper.elf32be.bc -o - | FileCheck %s --check-prefix 
OMPNOTES
+
+// There is no clean way for extracting the offload image
+// from the object file currently, so try to find
+// the inserted ELF notes in the device image variable's
+// initializer:
+// OMPNOTES: @{{.+}} = internal unnamed_addr constant [{{[0-9]+}} x i8] 
c"{{.*}}LLVMOMPOFFLOAD{{.*}}LLVMOMPOFFLOAD{{.*}}LLVMOMPOFFLOAD{{.*}}"

diff  --git a/clang/tools/clang-offload-wrapper/CMakeLists.txt 
b/clang/tools/clang-offload-wrapper/CMakeLists.txt
index 8bcb46267a37c..144edf5ab60c0 100644
--- a/clang/tools/clang-offload-wrapper/CMakeLists.txt
+++ b/clang/tools/clang-offload-wrapper/CMakeLists.txt
@@ -1,4 +1,4 @@
-set(LLVM_LINK_COMPONENTS BitWriter Core Support TransformUtils)
+set(LLVM_LINK_COMPONENTS BitWriter Core Object Support TransformUtils)
 
 add_clang_tool(clang-offload-wrapper
   ClangOffloadWrapper.cpp

diff  --git a/clang/tools/clang-offload-wrapper/ClangOffloadWrapper.cpp 

[clang] 3a1b075 - Define __SPIR__ macro for spir/spir64 targets.

2020-06-03 Thread Vyacheslav Zakharin via cfe-commits

Author: Vyacheslav Zakharin
Date: 2020-06-03T12:36:21-07:00
New Revision: 3a1b07506c1fc6e6aee528289341aa0d0d806814

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

LOG: Define __SPIR__ macro for spir/spir64 targets.

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

Added: 


Modified: 
clang/lib/Basic/Targets/SPIR.cpp
clang/test/Preprocessor/predefined-macros.c

Removed: 




diff  --git a/clang/lib/Basic/Targets/SPIR.cpp 
b/clang/lib/Basic/Targets/SPIR.cpp
index a9b815d13bc1..9b7aab85314a 100644
--- a/clang/lib/Basic/Targets/SPIR.cpp
+++ b/clang/lib/Basic/Targets/SPIR.cpp
@@ -23,10 +23,12 @@ void SPIRTargetInfo::getTargetDefines(const LangOptions 
,
 
 void SPIR32TargetInfo::getTargetDefines(const LangOptions ,
 MacroBuilder ) const {
+  SPIRTargetInfo::getTargetDefines(Opts, Builder);
   DefineStd(Builder, "SPIR32", Opts);
 }
 
 void SPIR64TargetInfo::getTargetDefines(const LangOptions ,
 MacroBuilder ) const {
+  SPIRTargetInfo::getTargetDefines(Opts, Builder);
   DefineStd(Builder, "SPIR64", Opts);
 }

diff  --git a/clang/test/Preprocessor/predefined-macros.c 
b/clang/test/Preprocessor/predefined-macros.c
index def105f4c52e..083f0e539d88 100644
--- a/clang/test/Preprocessor/predefined-macros.c
+++ b/clang/test/Preprocessor/predefined-macros.c
@@ -173,7 +173,17 @@
 
 // RUN: %clang_cc1 %s -E -dM -o - -x cl -triple spir-unknown-unknown \
 // RUN:   | FileCheck -match-full-lines %s --check-prefix=CHECK-SPIR
-// CHECK-SPIR: #define __IMAGE_SUPPORT__ 1
+// CHECK-SPIR-DAG: #define __IMAGE_SUPPORT__ 1
+// CHECK-SPIR-DAG: #define __SPIR__ 1
+// CHECK-SPIR-DAG: #define __SPIR32__ 1
+// CHECK-SPIR-NOT: #define __SPIR64__ 1
+
+// RUN: %clang_cc1 %s -E -dM -o - -x cl -triple spir64-unknown-unknown \
+// RUN:   | FileCheck -match-full-lines %s --check-prefix=CHECK-SPIR64
+// CHECK-SPIR64-DAG: #define __IMAGE_SUPPORT__ 1
+// CHECK-SPIR64-DAG: #define __SPIR__ 1
+// CHECK-SPIR64-DAG: #define __SPIR64__ 1
+// CHECK-SPIR64-NOT: #define __SPIR32__ 1
 
 // RUN: %clang_cc1 %s -E -dM -o - -x hip -triple amdgcn-amd-amdhsa \
 // RUN:   | FileCheck -match-full-lines %s --check-prefix=CHECK-HIP



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


r365666 - [clang] Preserve names of addrspacecast'ed values.

2019-07-10 Thread Vyacheslav Zakharin via cfe-commits
Author: vzakhari
Date: Wed Jul 10 10:10:05 2019
New Revision: 365666

URL: http://llvm.org/viewvc/llvm-project?rev=365666=rev
Log:
[clang] Preserve names of addrspacecast'ed values.

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

Modified:
cfe/trunk/lib/CodeGen/TargetInfo.cpp
cfe/trunk/test/CodeGenCUDA/builtins-amdgcn.cu
cfe/trunk/test/CodeGenOpenCL/address-spaces-conversions.cl
cfe/trunk/test/CodeGenOpenCLCXX/address-space-deduction.cl
cfe/trunk/test/CodeGenOpenCLCXX/addrspace-of-this.cl
cfe/trunk/test/CodeGenOpenCLCXX/addrspace-operators.cl
cfe/trunk/test/CodeGenOpenCLCXX/addrspace-references.cl
cfe/trunk/test/CodeGenOpenCLCXX/template-address-spaces.cl

Modified: cfe/trunk/lib/CodeGen/TargetInfo.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/TargetInfo.cpp?rev=365666=365665=365666=diff
==
--- cfe/trunk/lib/CodeGen/TargetInfo.cpp (original)
+++ cfe/trunk/lib/CodeGen/TargetInfo.cpp Wed Jul 10 10:10:05 2019
@@ -449,7 +449,9 @@ llvm::Value *TargetCodeGenInfo::performA
   // space, an address space conversion may end up as a bitcast.
   if (auto *C = dyn_cast(Src))
 return performAddrSpaceCast(CGF.CGM, C, SrcAddr, DestAddr, DestTy);
-  return CGF.Builder.CreatePointerBitCastOrAddrSpaceCast(Src, DestTy);
+  // Try to preserve the source's name to make IR more readable.
+  return CGF.Builder.CreatePointerBitCastOrAddrSpaceCast(
+  Src, DestTy, Src->hasName() ? Src->getName() + ".ascast" : "");
 }
 
 llvm::Constant *

Modified: cfe/trunk/test/CodeGenCUDA/builtins-amdgcn.cu
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCUDA/builtins-amdgcn.cu?rev=365666=365665=365666=diff
==
--- cfe/trunk/test/CodeGenCUDA/builtins-amdgcn.cu (original)
+++ cfe/trunk/test/CodeGenCUDA/builtins-amdgcn.cu Wed Jul 10 10:10:05 2019
@@ -2,15 +2,15 @@
 #include "Inputs/cuda.h"
 
 // CHECK-LABEL: @_Z16use_dispatch_ptrPi(
-// CHECK: %2 = call i8 addrspace(4)* @llvm.amdgcn.dispatch.ptr()
-// CHECK: %3 = addrspacecast i8 addrspace(4)* %2 to i8 addrspace(4)**
+// CHECK: %[[PTR:.*]] = call i8 addrspace(4)* @llvm.amdgcn.dispatch.ptr()
+// CHECK: %{{.*}} = addrspacecast i8 addrspace(4)* %[[PTR]] to i8 
addrspace(4)**
 __global__ void use_dispatch_ptr(int* out) {
   const int* dispatch_ptr = (const int*)__builtin_amdgcn_dispatch_ptr();
   *out = *dispatch_ptr;
 }
 
 // CHECK-LABEL: @_Z12test_ds_fmaxf(
-// CHECK: call float @llvm.amdgcn.ds.fmax(float addrspace(3)* 
@_ZZ12test_ds_fmaxfE6shared, float %2, i32 0, i32 0, i1 false)
+// CHECK: call float @llvm.amdgcn.ds.fmax(float addrspace(3)* 
@_ZZ12test_ds_fmaxfE6shared, float %{{[^,]*}}, i32 0, i32 0, i1 false)
 __global__
 void test_ds_fmax(float src) {
   __shared__ float shared;

Modified: cfe/trunk/test/CodeGenOpenCL/address-spaces-conversions.cl
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenOpenCL/address-spaces-conversions.cl?rev=365666=365665=365666=diff
==
--- cfe/trunk/test/CodeGenOpenCL/address-spaces-conversions.cl (original)
+++ cfe/trunk/test/CodeGenOpenCL/address-spaces-conversions.cl Wed Jul 10 
10:10:05 2019
@@ -13,7 +13,7 @@ void test(global int *arg_glob, generic
   // CHECK-NOFAKE-NOT: addrspacecast
 
   arg_gen = _priv; // implicit cast with obtaining adr, private -> generic
-  // CHECK: %{{[0-9]+}} = addrspacecast i32* %var_priv to i32 addrspace(4)*
+  // CHECK: %{{[._a-z0-9]+}} = addrspacecast i32* %{{[._a-z0-9]+}} to i32 
addrspace(4)*
   // CHECK-NOFAKE-NOT: addrspacecast
 
   arg_glob = (global int *)arg_gen; // explicit cast

Modified: cfe/trunk/test/CodeGenOpenCLCXX/address-space-deduction.cl
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenOpenCLCXX/address-space-deduction.cl?rev=365666=365665=365666=diff
==
--- cfe/trunk/test/CodeGenOpenCLCXX/address-space-deduction.cl (original)
+++ cfe/trunk/test/CodeGenOpenCLCXX/address-space-deduction.cl Wed Jul 10 
10:10:05 2019
@@ -29,7 +29,7 @@ int foo(int par, int PTR par_p){
   int loc;
   //COMMON: %loc_p = alloca i32 addrspace(4)*
   //COMMON: %loc_p_const = alloca i32*
-  //COMMON: [[GAS:%[0-9]+]] = addrspacecast i32* %loc to i32 addrspace(4)*
+  //COMMON: [[GAS:%[._a-z0-9]*]] = addrspacecast i32* %loc to i32 addrspace(4)*
   //COMMON: store i32 addrspace(4)* [[GAS]], i32 addrspace(4)** %loc_p
   int PTR loc_p = ADR(loc);
   //COMMON: store i32* %loc, i32** %loc_p_const

Modified: cfe/trunk/test/CodeGenOpenCLCXX/addrspace-of-this.cl
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenOpenCLCXX/addrspace-of-this.cl?rev=365666=365665=365666=diff
==
--- cfe/trunk/test/CodeGenOpenCLCXX/addrspace-of-this.cl (original)
+++