|
5 | 5 | // RUN: %clang_cc1 -triple aarch64-none-linux-android21 -emit-llvm %s -o %t.ll
|
6 | 6 | // RUN: FileCheck --check-prefix=OGCG --input-file=%t.ll %s
|
7 | 7 |
|
8 |
| -// CIR: cir.global "private" constant cir_private dso_local @[[STR1_GLOBAL:.*]] = #cir.const_array<"abcd\00" : !cir.array<!s8i x 5>> : !cir.array<!s8i x 5> |
9 | 8 |
|
10 |
| -// LLVM: @[[STR1_GLOBAL:.*]] = private constant [5 x i8] c"abcd\00" |
| 9 | +char const *array[] { |
| 10 | + "my", "hands", "are", "typing", "words" |
| 11 | +}; |
11 | 12 |
|
12 |
| -// OGCG: @[[STR1_GLOBAL:.*]] = private unnamed_addr constant [5 x i8] c"abcd\00" |
| 13 | +// CIR: cir.global "private" constant cir_private dso_local @"[[STR:.+]]" = #cir.const_array<"my\00" : !cir.array<!s8i x 3>> : !cir.array<!s8i x 3> |
| 14 | +// CIR: cir.global "private" constant cir_private dso_local @"[[STR1:.+]]" = #cir.const_array<"hands\00" : !cir.array<!s8i x 6>> : !cir.array<!s8i x 6> |
| 15 | +// CIR: cir.global "private" constant cir_private dso_local @"[[STR2:.+]]" = #cir.const_array<"are\00" : !cir.array<!s8i x 4>> : !cir.array<!s8i x 4> |
| 16 | +// CIR: cir.global "private" constant cir_private dso_local @"[[STR3:.+]]" = #cir.const_array<"typing\00" : !cir.array<!s8i x 7>> : !cir.array<!s8i x 7> |
| 17 | +// CIR: cir.global "private" constant cir_private dso_local @"[[STR4:.+]]" = #cir.const_array<"words\00" : !cir.array<!s8i x 6>> : !cir.array<!s8i x 6> |
| 18 | +// CIR: cir.global external @array = #cir.const_array<[#cir.global_view<@"[[STR]]"> : !cir.ptr<!s8i>, #cir.global_view<@"[[STR1]]"> : !cir.ptr<!s8i>, #cir.global_view<@"[[STR2]]"> : !cir.ptr<!s8i>, #cir.global_view<@"[[STR3]]"> : !cir.ptr<!s8i>, #cir.global_view<@"[[STR4]]"> : !cir.ptr<!s8i>]> : !cir.array<!cir.ptr<!s8i> x 5> |
| 19 | + |
| 20 | +// LLVM: @[[STR:.+]] = private constant [3 x i8] c"my\00" |
| 21 | +// LLVM: @[[STR1:.+]] = private constant [6 x i8] c"hands\00" |
| 22 | +// LLVM: @[[STR2:.+]] = private constant [4 x i8] c"are\00" |
| 23 | +// LLVM: @[[STR3:.+]] = private constant [7 x i8] c"typing\00" |
| 24 | +// LLVM: @[[STR4:.+]] = private constant [6 x i8] c"words\00" |
| 25 | +// LLVM: @array = global [5 x ptr] [ptr @[[STR]], ptr @[[STR1]], ptr @[[STR2]], ptr @[[STR3]], ptr @[[STR4]]] |
| 26 | + |
| 27 | +// OGCG: @[[STR:.+]] = private unnamed_addr constant [3 x i8] c"my\00" |
| 28 | +// OGCG: @[[STR1:.+]] = private unnamed_addr constant [6 x i8] c"hands\00" |
| 29 | +// OGCG: @[[STR2:.+]] = private unnamed_addr constant [4 x i8] c"are\00" |
| 30 | +// OGCG: @[[STR3:.+]] = private unnamed_addr constant [7 x i8] c"typing\00" |
| 31 | +// OGCG: @[[STR4:.+]] = private unnamed_addr constant [6 x i8] c"words\00" |
| 32 | +// OGCG: @array = global [5 x ptr] [ptr @[[STR]], ptr @[[STR1]], ptr @[[STR2]], ptr @[[STR3]], ptr @[[STR4]]] |
| 33 | + |
| 34 | +// CIR: cir.global "private" constant cir_private dso_local @[[STR5_GLOBAL:.*]] = #cir.const_array<"abcd\00" : !cir.array<!s8i x 5>> : !cir.array<!s8i x 5> |
| 35 | + |
| 36 | +// LLVM: @[[STR5_GLOBAL:.*]] = private constant [5 x i8] c"abcd\00" |
| 37 | + |
| 38 | +// OGCG: @[[STR5_GLOBAL:.*]] = private unnamed_addr constant [5 x i8] c"abcd\00" |
13 | 39 |
|
14 | 40 | decltype(auto) returns_literal() {
|
15 | 41 | return "abcd";
|
16 | 42 | }
|
17 | 43 |
|
18 | 44 | // CIR: cir.func{{.*}} @_Z15returns_literalv() -> !cir.ptr<!cir.array<!s8i x 5>>
|
19 | 45 | // CIR: %[[RET_ADDR:.*]] = cir.alloca !cir.ptr<!cir.array<!s8i x 5>>, !cir.ptr<!cir.ptr<!cir.array<!s8i x 5>>>, ["__retval"]
|
20 |
| -// CIR: %[[STR_ADDR:.*]] = cir.get_global @[[STR1_GLOBAL]] : !cir.ptr<!cir.array<!s8i x 5>> |
| 46 | +// CIR: %[[STR_ADDR:.*]] = cir.get_global @[[STR5_GLOBAL]] : !cir.ptr<!cir.array<!s8i x 5>> |
21 | 47 | // CIR: cir.store{{.*}} %[[STR_ADDR]], %[[RET_ADDR]]
|
22 | 48 | // CIR: %[[RET:.*]] = cir.load %[[RET_ADDR]]
|
23 | 49 | // CIR: cir.return %[[RET]]
|
0 commit comments