@@ -109,8 +109,6 @@ struct NamedBitfields {
109
109
double f3;
110
110
};
111
111
112
- NamedBitfields g;
113
-
114
112
void copy8 (NamedBitfields *a1, NamedBitfields *a2) {
115
113
// CHECK-LABEL: _Z5copy8P14NamedBitfieldsS0_
116
114
// CHECK: tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %a1, ptr noundef nonnull align 8 dereferenceable(16) %a2, i64 16, i1 false),
@@ -119,6 +117,23 @@ void copy8(NamedBitfields *a1, NamedBitfields *a2) {
119
117
*a1 = *a2;
120
118
}
121
119
120
+ struct NamedBitfields2 {
121
+ char a, b, c;
122
+ signed f0 : 3 ;
123
+ unsigned f1 : 4 ;
124
+ char f2 : 7 ;
125
+ double f3;
126
+ unsigned f4 : 4 ;
127
+ };
128
+
129
+ void copy9 (NamedBitfields2 *a1, NamedBitfields2 *a2) {
130
+ // CHECK-LABEL: _Z5copy9P15NamedBitfields2S0_
131
+ // CHECK: tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %a1, ptr noundef nonnull align 8 dereferenceable(24) %a2, i64 24, i1 false),
132
+ // CHECK-OLD-SAME: !tbaa.struct [[TS7:!.*]]
133
+ // CHECK-NEW-SAME: !tbaa [[TAG_NamedBitfields2:!.+]], !tbaa.struct
134
+ *a1 = *a2;
135
+ }
136
+
122
137
// CHECK-OLD: [[TS]] = !{i64 0, i64 2, !{{.*}}, i64 4, i64 4, !{{.*}}, i64 8, i64 1, !{{.*}}, i64 12, i64 4, !{{.*}}}
123
138
// CHECK-OLD: [[CHAR:!.*]] = !{!"omnipotent char", !{{.*}}}
124
139
// CHECK-OLD: [[TAG_INT:!.*]] = !{[[INT:!.*]], [[INT]], i64 0}
@@ -133,6 +148,7 @@ void copy8(NamedBitfields *a1, NamedBitfields *a2) {
133
148
// CHECK-OLD: [[TS6]] = !{i64 0, i64 4, [[TAG_INT]], i64 1, i64 4, [[TAG_INT]], i64 2, i64 1, [[TAG_CHAR]], i64 8, i64 8, [[TAG_DOUBLE:!.+]]}
134
149
// CHECK-OLD: [[TAG_DOUBLE]] = !{[[DOUBLE:!.+]], [[DOUBLE]], i64 0}
135
150
// CHECK-OLD [[DOUBLE]] = !{!"double", [[CHAR]], i64 0}
151
+ // CHECK-OLD: [[TS7]] = !{i64 0, i64 1, [[TAG_CHAR]], i64 1, i64 1, [[TAG_CHAR]], i64 2, i64 1, [[TAG_CHAR]], i64 3, i64 4, [[TAG_INT]], i64 3, i64 4, [[TAG_INT]], i64 4, i64 1, [[TAG_CHAR]], i64 8, i64 8, [[TAG_DOUBLE]], i64 16, i64 4, [[TAG_INT]]}
136
152
137
153
// CHECK-NEW-DAG: [[TYPE_char:!.*]] = !{{{.*}}, i64 1, !"omnipotent char"}
138
154
// CHECK-NEW-DAG: [[TAG_char]] = !{[[TYPE_char]], [[TYPE_char]], i64 0, i64 0}
@@ -150,3 +166,5 @@ void copy8(NamedBitfields *a1, NamedBitfields *a2) {
150
166
// CHECK-NEW-DAG: [[TAG_NamedBitfields]] = !{[[TYPE_NamedBitfields:!.+]], [[TYPE_NamedBitfields]], i64 0, i64 16}
151
167
// CHECK-NEW-DAG: [[TYPE_NamedBitfields]] = !{[[TYPE_char]], i64 16, !"_ZTS14NamedBitfields", [[TYPE_int]], i64 0, i64 4, [[TYPE_int]], i64 1, i64 4, [[TYPE_char]], i64 2, i64 1, [[TYPE_double:!.+]], i64 8, i64 8}
152
168
// CHECK-NEW-DAG: [[TYPE_double]] = !{[[TYPE_char]], i64 8, !"double"}
169
+ // CHECK-NEW-DAG: [[TAG_NamedBitfields2]] = !{[[TYPE_NamedBitfields2:!.+]], [[TYPE_NamedBitfields2]], i64 0, i64 24}
170
+ // CHECK-NEW-DAG: [[TYPE_NamedBitfields2]] = !{[[TYPE_char]], i64 24, !"_ZTS15NamedBitfields2", [[TYPE_char]], i64 0, i64 1, [[TYPE_char]], i64 1, i64 1, [[TYPE_char]], i64 2, i64 1, [[TYPE_int]], i64 3, i64 4, [[TYPE_int]], i64 3, i64 4, [[TYPE_char]], i64 4, i64 1, [[TYPE_double]], i64 8, i64 8, [[TYPE_int]], i64 16, i64 4}
0 commit comments