diff options
author | Dimitry Andric <dim@FreeBSD.org> | 2017-04-16 16:01:22 +0000 |
---|---|---|
committer | Dimitry Andric <dim@FreeBSD.org> | 2017-04-16 16:01:22 +0000 |
commit | 71d5a2540a98c81f5bcaeb48805e0e2881f530ef (patch) | |
tree | 5343938942df402b49ec7300a1c25a2d4ccd5821 /test/Transforms/ConstantMerge/dont-merge.ll | |
parent | 31bbf64f3a4974a2d6c8b3b27ad2f519caf74057 (diff) |
Diffstat (limited to 'test/Transforms/ConstantMerge/dont-merge.ll')
-rw-r--r-- | test/Transforms/ConstantMerge/dont-merge.ll | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/test/Transforms/ConstantMerge/dont-merge.ll b/test/Transforms/ConstantMerge/dont-merge.ll index e5337dff27df..21e390785df5 100644 --- a/test/Transforms/ConstantMerge/dont-merge.ll +++ b/test/Transforms/ConstantMerge/dont-merge.ll @@ -42,3 +42,41 @@ define void @test3() { call void asm sideeffect "T3A, T3B",""() ; invisible use of T3A and T3B ret void } + +; Don't merge constants with !type annotations. + +@T4A1 = internal constant i32 2, !type !0 +@T4A2 = internal unnamed_addr constant i32 2, !type !1 + +@T4B1 = internal constant i32 3, !type !0 +@T4B2 = internal unnamed_addr constant i32 3, !type !0 + +@T4C1 = internal constant i32 4, !type !0 +@T4C2 = unnamed_addr constant i32 4 + +@T4D1 = unnamed_addr constant i32 5, !type !0 +@T4D2 = internal constant i32 5 + +!0 = !{i64 0, !"typeinfo name for A"} +!1 = !{i64 0, !"typeinfo name for B"} + +; CHECK: @T4A1 +; CHECK: @T4A2 +; CHECK: @T4B1 +; CHECK: @T4B2 +; CHECK: @T4C1 +; CHECK: @T4C2 +; CHECK: @T4D1 +; CHECK: @T4D2 + +define void @test4(i32** %P1, i32** %P2, i32** %P3, i32** %P4, i32** %P5, i32** %P6, i32** %P7, i32** %P8) { + store i32* @T4A1, i32** %P1 + store i32* @T4A2, i32** %P2 + store i32* @T4B1, i32** %P3 + store i32* @T4B2, i32** %P4 + store i32* @T4C1, i32** %P5 + store i32* @T4C2, i32** %P6 + store i32* @T4D1, i32** %P7 + store i32* @T4D2, i32** %P8 + ret void +} |