Bump version to 19.1.0-rc3
[llvm-project.git] / llvm / test / Feature / weak_constant.ll
blob185a9aab1fc2f8b91223bbfa6a78875b63788d00
1 ; RUN: opt < %s -O3 -S > %t
2 ; RUN:   grep 'constant i32 undef' %t | count 1
3 ; RUN:   grep 'constant i32 5' %t | count 1
4 ; RUN:   grep 'i32 7' %t | count 1
5 ; RUN:   grep 'i32 9' %t | count 1
7         %0 = type { i32, i32 }          ; type %0
8 @a = weak constant i32 undef            ; <ptr> [#uses=1]
9 @b = weak constant i32 5                ; <ptr> [#uses=1]
10 @c = weak constant %0 { i32 7, i32 9 }          ; <ptr> [#uses=1]
12 define i32 @la() {
13         %v = load i32, ptr @a           ; <i32> [#uses=1]
14         ret i32 %v
17 define i32 @lb() {
18         %v = load i32, ptr @b           ; <i32> [#uses=1]
19         ret i32 %v
22 define i32 @lc() {
23         %g = getelementptr %0, ptr @c, i32 0, i32 0             ; <ptr> [#uses=1]
24         %u = load i32, ptr %g           ; <i32> [#uses=1]
25         %h = getelementptr %0, ptr @c, i32 0, i32 1             ; <ptr> [#uses=1]
26         %v = load i32, ptr %h           ; <i32> [#uses=1]
27         %r = add i32 %u, %v
28         ret i32 %r
31 define i32 @f() {
32         %u = call i32 @la()             ; <i32> [#uses=1]
33         %v = call i32 @lb()             ; <i32> [#uses=1]
34         %w = call i32 @lc()             ; <i32> [#uses=1]
35         %r = add i32 %u, %v             ; <i32> [#uses=1]
36         %s = add i32 %r, %w             ; <i32> [#uses=1]
37         ret i32 %s