summaryrefslogtreecommitdiffstats
path: root/llvm/test/Transforms/GlobalOpt
diff options
context:
space:
mode:
authorTim Northover <tnorthover@apple.com>2019-05-14 11:03:13 +0000
committerTim Northover <tnorthover@apple.com>2019-05-14 11:03:13 +0000
commited9117f88d0f2282b6c994fc3a5f4818c4046e84 (patch)
tree784e75392344aebfe36d05e21f510b6d6f0e7dd8 /llvm/test/Transforms/GlobalOpt
parent9df3883618a91832f129213a4637957bf2ba9fa2 (diff)
downloadbcm5719-llvm-ed9117f88d0f2282b6c994fc3a5f4818c4046e84.tar.gz
bcm5719-llvm-ed9117f88d0f2282b6c994fc3a5f4818c4046e84.zip
GlobalOpt: do not promote globals used atomically to constants.
Some atomic loads are implemented as cmpxchg (particularly if large or floating), and that usually requires write access to the memory involved or it will segfault. We can still propagate the constant value to users we understand though. llvm-svn: 360662
Diffstat (limited to 'llvm/test/Transforms/GlobalOpt')
-rw-r--r--llvm/test/Transforms/GlobalOpt/atomic.ll11
1 files changed, 10 insertions, 1 deletions
diff --git a/llvm/test/Transforms/GlobalOpt/atomic.ll b/llvm/test/Transforms/GlobalOpt/atomic.ll
index 563c1fec7d2..7597e0f03ba 100644
--- a/llvm/test/Transforms/GlobalOpt/atomic.ll
+++ b/llvm/test/Transforms/GlobalOpt/atomic.ll
@@ -3,7 +3,7 @@
@GV1 = internal global i64 1
@GV2 = internal global i32 0
-; CHECK: @GV1 = internal unnamed_addr constant i64 1
+; CHECK: @GV1 = internal unnamed_addr global i64 1
; CHECK: @GV2 = internal unnamed_addr global i32 0
define void @test1() {
@@ -23,3 +23,12 @@ entry:
%atomic-load = load atomic i32, i32* @GV2 seq_cst, align 4
ret i32 %atomic-load
}
+
+
+define i64 @test3() {
+; CHECK-LABEL: @test3
+; CHECK: ret i64 1
+
+ %val = load atomic i64, i64* @GV1 acquire, align 8
+ ret i64 %val
+}
OpenPOWER on IntegriCloud