|
| 1 | +// RUN: %clang_cc1 -triple aarch64-none-linux-android21 -fclangir -emit-cir -mmlir --mlir-print-ir-before=cir-lowering-prepare %s -o %t.cir 2>&1 | FileCheck %s -check-prefix=BEFORE |
| 2 | +// RUN: %clang_cc1 -triple aarch64-none-linux-android21 -fclangir -emit-cir -mmlir --mlir-print-ir-after=cir-lowering-prepare %s -o %t.cir 2>&1 | FileCheck %s -check-prefix=AFTER |
| 3 | +// RUN: %clang_cc1 -triple aarch64-none-linux-android21 -fclangir -emit-llvm %s -o %t.ll |
| 4 | +// RUN: FileCheck --input-file=%t.ll %s -check-prefix=LLVM |
| 5 | +double *a __attribute__((annotate("withargs", "21", 12 ))); |
| 6 | +int *b __attribute__((annotate("withargs", "21", 12 ))); |
| 7 | +void *c __attribute__((annotate("noargvar"))); |
| 8 | +void foo(int i) __attribute__((annotate("noargfunc"))) { |
| 9 | +} |
| 10 | +// redeclare with more annotate |
| 11 | +void foo(int i) __attribute__((annotate("withargfunc", "os", 23 ))); |
| 12 | +void bar() __attribute__((annotate("withargfunc", "os", 22))) { |
| 13 | +} |
| 14 | + |
| 15 | +// BEFORE: cir.global external @a = #cir.ptr<null> : !cir.ptr<!cir.double> |
| 16 | +// BEFORE-SAME: [#cir.annotation<name = <"withargs" : !cir.array<!s8i x 8>>, |
| 17 | +// BEFORE-SAME: unit = <"[[PATH:.*]]attribute-annotate-multiple.cpp" : |
| 18 | +// BEFORE-SAME: !cir.array<!s8i x [[FILENAME_LEN:[0-9]+]]>>, |
| 19 | +// BEFORE-SAME: lineno = <5>, args = #cir.const_struct<{#cir.global_view<@".str"> |
| 20 | +// BEFORE-SAME: : !cir.ptr<!cir.array<!s8i x 3>>, #cir.int<12> : !s32i}> |
| 21 | +// BEFORE: cir.global "private" constant internal dsolocal @".str" = |
| 22 | +// BEFORE-SAME: #cir.const_array<"21\00" : !cir.array<!s8i x 3>> : |
| 23 | +// BEFORE-SAME: !cir.array<!s8i x 3> {alignment = 1 : i64} |
| 24 | +// BEFORE: cir.global external @b = #cir.ptr<null> : !cir.ptr<!s32i> |
| 25 | +// BEFORE-SAME: [#cir.annotation<name = <"withargs" : !cir.array<!s8i x 8>>, |
| 26 | +// BEFORE-SAME: unit = <"[[PATH]]attribute-annotate-multiple.cpp" : |
| 27 | +// BEFORE-SAME: !cir.array<!s8i x [[FILENAME_LEN]]>>, |
| 28 | +// BEFORE-SAME: lineno = <6>, args = #cir.const_struct<{#cir.global_view<@".str"> |
| 29 | +// BEFORE-SAME: : !cir.ptr<!cir.array<!s8i x 3>>, #cir.int<12> : !s32i}> |
| 30 | +// BEFORE: cir.global external @c = #cir.ptr<null> : !cir.ptr<!void> |
| 31 | +// BEFORE-SAME: [#cir.annotation<name = <"noargvar" : !cir.array<!s8i x 8>>, |
| 32 | +// BEFORE-SAME: unit = <"[[PATH]]attribute-annotate-multiple.cpp" : |
| 33 | +// BEFORE-SAME: !cir.array<!s8i x [[FILENAME_LEN]]>>, |
| 34 | +// BEFORE-SAME: lineno = <7>, args = #cir.zero : !cir.ptr<!void>>] |
| 35 | +// BEFORE: cir.func @_Z3fooi(%arg0: !s32i) attributes {annotates = |
| 36 | +// BEFORE-SAME: [#cir.annotation<name = <"noargfunc" : !cir.array<!s8i x 9>>, |
| 37 | +// BEFORE-SAME: unit = <"[[PATH]]attribute-annotate-multiple.cpp" : |
| 38 | +// BEFORE-SAME: !cir.array<!s8i x [[FILENAME_LEN]]>>, |
| 39 | +// BEFORE-SAME: lineno = <11>, args = #cir.zero : !cir.ptr<!void>>, |
| 40 | +// BEFORE-SAME: #cir.annotation<name = <"withargfunc" : !cir.array<!s8i x 11>>, |
| 41 | +// BEFORE-SAME: unit = <"[[PATH]]attribute-annotate-multiple.cpp" : |
| 42 | +// BEFORE-SAME: !cir.array<!s8i x [[FILENAME_LEN]]>>, |
| 43 | +// BEFORE-SAME: lineno = <11>, args = #cir.const_struct<{#cir.global_view<@".str1"> : |
| 44 | +// BEFORE-SAME: !cir.ptr<!cir.array<!s8i x 3>>, #cir.int<23> : !s32i}> |
| 45 | +// BEFORE: cir.func @_Z3barv() attributes {annotates = |
| 46 | +// BEFORE-SAME: [#cir.annotation<name = <"withargfunc" : !cir.array<!s8i x 11>>, |
| 47 | +// BEFORE-SAME: unit = <"[[PATH]]attribute-annotate-multiple.cpp" : |
| 48 | +// BEFORE-SAME: !cir.array<!s8i x [[FILENAME_LEN]]>>, |
| 49 | +// BEFORE-SAME: lineno = <12>, args = #cir.const_struct<{#cir.global_view<@".str1"> : |
| 50 | +// BEFORE-SAME: !cir.ptr<!cir.array<!s8i x 3>>, #cir.int<22> : !s32i}> |
| 51 | +// BEFORE: cir.global "private" constant internal dsolocal @".str1" |
| 52 | +// BEFORE-SAME: #cir.const_array<"os\00" : !cir.array<!s8i x 3>> : |
| 53 | +// BEFORE-SAME: !cir.array<!s8i x 3> {alignment = 1 : i64} |
| 54 | + |
| 55 | +// AFTER: ![[ANNO_STRUCT_T0:.*]] = !cir.struct<struct {!cir.ptr<!cir.void>, |
| 56 | +// AFTER-SAME: !cir.ptr<!cir.void>, !cir.ptr<!cir.void>, !cir.int<u, 32>, !cir.ptr<!cir.void>}> |
| 57 | +// AFTER: ![[ANNO_STRUCT_T1:.*]] = !cir.struct<struct {!cir.ptr<!cir.array<!cir.int<s, 8> x 3>>, !cir.int<s, 32>}> |
| 58 | +// AFTER: cir.global "private" constant cir_private dsolocal @".str.0.llvm.metadata" = |
| 59 | +// AFTER-SAME: #cir.const_array<"withargs" : !cir.array<!s8i x 8>> : |
| 60 | +// AFTER-SAME: !cir.array<!s8i x 8> {section = "llvm.metadata"} |
| 61 | +// AFTER: cir.global "private" constant cir_private dsolocal @".str.1.llvm.metadata" = |
| 62 | +// AFTER-SAME: #cir.const_array<"[[PATH:.*]]attribute-annotate-multiple.cpp" : |
| 63 | +// AFTER-SAME: !cir.array<!s8i x [[FILENAME_LEN:[0-9]+]]>> : |
| 64 | +// AFTER-SAME: !cir.array<!s8i x [[FILENAME_LEN]]> {section = "llvm.metadata"} |
| 65 | +// AFTER: cir.global "private" constant cir_private dsolocal @".args.0.llvm.metadata" = |
| 66 | +// AFTER-SAME: #cir.const_struct<{#cir.global_view<@".str"> : |
| 67 | +// AFTER-SAME: !cir.ptr<!cir.array<!s8i x 3>>, #cir.int<12> : !s32i}> : |
| 68 | +// AFTER-SAME: ![[ANNO_STRUCT_T1]] {section = "llvm.metadata"} |
| 69 | +// AFTER: cir.global "private" constant cir_private dsolocal @".str.2.llvm.metadata" = |
| 70 | +// AFTER-SAME: #cir.const_array<"noargvar" : !cir.array<!s8i x 8>> : |
| 71 | +// AFTER-SAME: !cir.array<!s8i x 8> {section = "llvm.metadata"} |
| 72 | +// AFTER: cir.global "private" constant cir_private dsolocal @".str.3.llvm.metadata" = |
| 73 | +// AFTER-SAME: #cir.const_array<"noargfunc" : !cir.array<!s8i x 9>> : |
| 74 | +// AFTER-SAME: !cir.array<!s8i x 9> {section = "llvm.metadata"} |
| 75 | +// AFTER: cir.global "private" constant cir_private dsolocal @".str.4.llvm.metadata" = |
| 76 | +// AFTER-SAME: #cir.const_array<"withargfunc" : !cir.array<!s8i x 11>> : |
| 77 | +// AFTER-SAME: !cir.array<!s8i x 11> {section = "llvm.metadata"} |
| 78 | +// AFTER: cir.global "private" constant cir_private dsolocal @".args.1.llvm.metadata" = |
| 79 | +// AFTER-SAME: #cir.const_struct<{#cir.global_view<@".str1"> : |
| 80 | +// AFTER-SAME: !cir.ptr<!cir.array<!s8i x 3>>, #cir.int<23> : !s32i}> : |
| 81 | +// AFTER-SAME: ![[ANNO_STRUCT_T1]] {section = "llvm.metadata"} |
| 82 | +// AFTER: cir.global "private" constant cir_private dsolocal @".args.2.llvm.metadata" = |
| 83 | +// AFTER-SAME: #cir.const_struct<{#cir.global_view<@".str1"> : |
| 84 | +// AFTER-SAME: !cir.ptr<!cir.array<!s8i x 3>>, #cir.int<22> : !s32i}> : |
| 85 | +// AFTER-SAME: ![[ANNO_STRUCT_T1]] {section = "llvm.metadata"} |
| 86 | + |
| 87 | +// AFTER: cir.global appending @llvm.global.annotations = |
| 88 | +// AFTER-SAME: #cir.const_array< |
| 89 | + |
| 90 | +// AFTER-SAME: [#cir.const_struct<{#cir.global_view<@a> : !cir.ptr<!void>, |
| 91 | +// AFTER-SAME: #cir.global_view<@".str.0.llvm.metadata"> : !cir.ptr<!void>, |
| 92 | +// AFTER-SAME: #cir.global_view<@".str.1.llvm.metadata"> : !cir.ptr<!void>, |
| 93 | +// AFTER-SAME: #cir.int<5> : !u32i, |
| 94 | +// AFTER-SAME: #cir.global_view<@".args.0.llvm.metadata"> : !cir.ptr<!void>}> : |
| 95 | +// AFTER-SAME: ![[ANNO_STRUCT_T0]], |
| 96 | + |
| 97 | +// AFTER-SAME: #cir.const_struct<{#cir.global_view<@b> : !cir.ptr<!void>, |
| 98 | +// AFTER-SAME: #cir.global_view<@".str.0.llvm.metadata"> : !cir.ptr<!void>, |
| 99 | +// AFTER-SAME: #cir.global_view<@".str.1.llvm.metadata"> : !cir.ptr<!void>, |
| 100 | +// AFTER-SAME: #cir.int<6> : !u32i, |
| 101 | +// AFTER-SAME: #cir.global_view<@".args.0.llvm.metadata"> : !cir.ptr<!void>}> : |
| 102 | +// AFTER-SAME: ![[ANNO_STRUCT_T0]], |
| 103 | + |
| 104 | +// AFTER-SAME: #cir.const_struct<{#cir.global_view<@c> : !cir.ptr<!void>, |
| 105 | +// AFTER-SAME: #cir.global_view<@".str.2.llvm.metadata"> : !cir.ptr<!void>, |
| 106 | +// AFTER-SAME: #cir.global_view<@".str.1.llvm.metadata"> : !cir.ptr<!void>, |
| 107 | +// AFTER-SAME: #cir.int<7> : !u32i, |
| 108 | +// AFTER-SAME: #cir.zero : !cir.ptr<!void>}> : |
| 109 | +// AFTER-SAME: ![[ANNO_STRUCT_T0]], |
| 110 | + |
| 111 | +// AFTER-SAME: #cir.const_struct<{#cir.global_view<@_Z3fooi> : !cir.ptr<!void>, |
| 112 | +// AFTER-SAME: #cir.global_view<@".str.3.llvm.metadata"> : !cir.ptr<!void>, |
| 113 | +// AFTER-SAME: #cir.global_view<@".str.1.llvm.metadata"> : !cir.ptr<!void>, |
| 114 | +// AFTER-SAME: #cir.int<11> : !u32i, |
| 115 | +// AFTER-SAME: #cir.zero : !cir.ptr<!void>}> : |
| 116 | +// AFTER-SAME: ![[ANNO_STRUCT_T0]], |
| 117 | + |
| 118 | +// AFTER-SAME: #cir.const_struct<{#cir.global_view<@_Z3fooi> : !cir.ptr<!void>, |
| 119 | +// AFTER-SAME: #cir.global_view<@".str.4.llvm.metadata"> : !cir.ptr<!void>, |
| 120 | +// AFTER-SAME: #cir.global_view<@".str.1.llvm.metadata"> : !cir.ptr<!void>, |
| 121 | +// AFTER-SAME: #cir.int<11> : !u32i, |
| 122 | +// AFTER-SAME: #cir.global_view<@".args.1.llvm.metadata"> : !cir.ptr<!void>}> : |
| 123 | +// AFTER-SAME: ![[ANNO_STRUCT_T0]], |
| 124 | + |
| 125 | +// AFTER-SAME: #cir.const_struct<{#cir.global_view<@_Z3barv> : !cir.ptr<!void>, |
| 126 | +// AFTER-SAME: #cir.global_view<@".str.4.llvm.metadata"> : !cir.ptr<!void>, |
| 127 | +// AFTER-SAME: #cir.global_view<@".str.1.llvm.metadata"> : !cir.ptr<!void>, |
| 128 | +// AFTER-SAME: #cir.int<12> : !u32i, |
| 129 | +// AFTER-SAME: #cir.global_view<@".args.2.llvm.metadata"> : !cir.ptr<!void>}> : |
| 130 | +// AFTER-SAME: ![[ANNO_STRUCT_T0]]]> : |
| 131 | +// AFTER-SAME: !cir.array<![[ANNO_STRUCT_T0]] x 6> {section = "llvm.metadata"} |
| 132 | + |
| 133 | +// LLVM: @.str.0.llvm.metadata = private constant [8 x i8] c"withargs", section "llvm.metadata" |
| 134 | +// LLVM: @.str.1.llvm.metadata = private constant [[[FILENAME_LEN:[0-9]+]] x i8] c"[[PATH:.*]]attribute-annotate-multiple.cpp", section "llvm.metadata" |
| 135 | +// LLVM: @.args.0.llvm.metadata = private constant { ptr, i32 } { ptr @.str, i32 12 }, section "llvm.metadata" |
| 136 | +// LLVM: @.str.2.llvm.metadata = private constant [8 x i8] c"noargvar", section "llvm.metadata" |
| 137 | +// LLVM: @.str.3.llvm.metadata = private constant [9 x i8] c"noargfunc", section "llvm.metadata" |
| 138 | +// LLVM: @.str.4.llvm.metadata = private constant [11 x i8] c"withargfunc", section "llvm.metadata" |
| 139 | +// LLVM: @.args.1.llvm.metadata = private constant { ptr, i32 } { ptr @.str1, i32 23 }, section "llvm.metadata" |
| 140 | +// LLVM: @.args.2.llvm.metadata = private constant { ptr, i32 } { ptr @.str1, i32 22 }, section "llvm.metadata" |
| 141 | + |
| 142 | +// LLVM: @llvm.global.annotations = appending global [6 x { ptr, ptr, ptr, i32, ptr }] |
| 143 | +// LLVM-SAME: [{ ptr, ptr, ptr, i32, ptr } |
| 144 | +// LLVM-SAME: { ptr @a, ptr @.str.0.llvm.metadata, ptr @.str.1.llvm.metadata, i32 5, ptr @.args.0.llvm.metadata }, |
| 145 | + |
| 146 | +// LLVM-SAME: { ptr, ptr, ptr, i32, ptr } |
| 147 | +// LLVM-SAME: { ptr @b, ptr @.str.0.llvm.metadata, ptr @.str.1.llvm.metadata, i32 6, ptr @.args.0.llvm.metadata }, |
| 148 | + |
| 149 | +// LLVM-SAME: { ptr, ptr, ptr, i32, ptr } |
| 150 | +// LLVM-SAME: { ptr @c, ptr @.str.2.llvm.metadata, ptr @.str.1.llvm.metadata, i32 7, ptr null }, |
| 151 | + |
| 152 | +// LLVM-SAME: { ptr, ptr, ptr, i32, ptr } |
| 153 | +// LLVM-SAME: { ptr @_Z3fooi, ptr @.str.3.llvm.metadata, ptr @.str.1.llvm.metadata, i32 11, ptr null }, |
| 154 | + |
| 155 | +// LLVM-SAME: { ptr, ptr, ptr, i32, ptr } |
| 156 | +// LLVM-SAME: { ptr @_Z3fooi, ptr @.str.4.llvm.metadata, ptr @.str.1.llvm.metadata, i32 11, ptr @.args.1.llvm.metadata }, |
| 157 | + |
| 158 | +// LLVM-SAME: { ptr, ptr, ptr, i32, ptr } |
| 159 | +// LLVM-SAME: { ptr @_Z3barv, ptr @.str.4.llvm.metadata, ptr @.str.1.llvm.metadata, i32 12, ptr @.args.2.llvm.metadata }], |
| 160 | +// LLVM-SAME: section "llvm.metadata" |
| 161 | + |
| 162 | +// LLVM: @a = global ptr null |
| 163 | +// LLVM: @.str = internal constant [3 x i8] c"21\00" |
| 164 | +// LLVM: @b = global ptr null |
| 165 | +// LLVM: @c = global ptr null |
| 166 | +// LLVM: @.str1 = internal constant [3 x i8] c"os\00" |
| 167 | + |
| 168 | +// LLVM: define dso_local void @_Z3fooi(i32 %0) |
| 169 | +// LLVM: define dso_local void @_Z3barv() |
0 commit comments