Lines Matching refs:MSSA
3 …%s -memcpyopt -S -enable-memcpyopt-memoryssa=1 -verify-memoryssa | FileCheck %s --check-prefix=MSSA
37 ; MSSA-LABEL: @wobble(
38 ; MSSA-NEXT: bb:
39 ; MSSA-NEXT: [[TEMP:%.*]] = alloca i8, i32 64, align 1
40 ; MSSA-NEXT: call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TEMP]], i8* nonnull align 8 [[SR…
41 ; MSSA-NEXT: br i1 [[SOME_CONDITION:%.*]], label [[MORE:%.*]], label [[OUT:%.*]]
42 ; MSSA: out:
43 ; MSSA-NEXT: call void @qux()
44 ; MSSA-NEXT: unreachable
45 ; MSSA: more:
46 ; MSSA-NEXT: call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[DST:%.*]], i8* align 8 [[SRC]], …
47 ; MSSA-NEXT: ret void
88 ; MSSA-LABEL: @foo(
89 ; MSSA-NEXT: bb:
90 ; MSSA-NEXT: [[S:%.*]] = alloca [[STRUCT_S:%.*]], align 4
91 ; MSSA-NEXT: [[T:%.*]] = alloca [[STRUCT_S]], align 4
92 ; MSSA-NEXT: [[S1:%.*]] = bitcast %struct.s* [[S]] to i8*
93 ; MSSA-NEXT: call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 [[S1]], i8* align 4 bitcast (%stru…
94 ; MSSA-NEXT: br i1 [[T3:%.*]], label [[BB4:%.*]], label [[BB7:%.*]]
95 ; MSSA: bb4:
96 ; MSSA-NEXT: [[T5:%.*]] = bitcast %struct.s* [[T]] to i8*
97 ; MSSA-NEXT: [[S6:%.*]] = bitcast %struct.s* [[S]] to i8*
98 ; MSSA-NEXT: call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 [[T5]], i8* align 4 bitcast (%stru…
99 ; MSSA-NEXT: br label [[BB7]]
100 ; MSSA: bb7:
101 ; MSSA-NEXT: [[T8:%.*]] = getelementptr [[STRUCT_S]], %struct.s* [[T]], i32 0, i32 0
102 ; MSSA-NEXT: [[T9:%.*]] = load i32, i32* [[T8]], align 4
103 ; MSSA-NEXT: [[T10:%.*]] = getelementptr [[STRUCT_S]], %struct.s* [[T]], i32 0, i32 1
104 ; MSSA-NEXT: [[T11:%.*]] = load i32, i32* [[T10]], align 4
105 ; MSSA-NEXT: [[T12:%.*]] = add i32 [[T9]], [[T11]]
106 ; MSSA-NEXT: ret i32 [[T12]]
169 ; MSSA-LABEL: @baz(
170 ; MSSA-NEXT: bb:
171 ; MSSA-NEXT: [[S:%.*]] = alloca [[STRUCT_S:%.*]], align 4
172 ; MSSA-NEXT: [[T:%.*]] = alloca [[STRUCT_S]], align 4
173 ; MSSA-NEXT: [[S3:%.*]] = bitcast %struct.s* [[S]] to i8*
174 ; MSSA-NEXT: call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 [[S3]], i8* align 4 bitcast (%stru…
175 ; MSSA-NEXT: br i1 [[T5:%.*]], label [[BB6:%.*]], label [[BB22:%.*]]
176 ; MSSA: bb6:
177 ; MSSA-NEXT: invoke void @__cxa_throw(i8* null, i8* bitcast (i8** @i to i8*), i8* null)
178 ; MSSA-NEXT: to label [[BB25:%.*]] unwind label [[BB9:%.*]]
179 ; MSSA: bb9:
180 ; MSSA-NEXT: [[T10:%.*]] = landingpad { i8*, i32 }
181 ; MSSA-NEXT: catch i8* null
182 ; MSSA-NEXT: br label [[BB13:%.*]]
183 ; MSSA: bb13:
184 ; MSSA-NEXT: [[T15:%.*]] = call i8* @__cxa_begin_catch(i8* null)
185 ; MSSA-NEXT: br label [[BB23:%.*]]
186 ; MSSA: bb22:
187 ; MSSA-NEXT: [[T23:%.*]] = bitcast %struct.s* [[T]] to i8*
188 ; MSSA-NEXT: [[S24:%.*]] = bitcast %struct.s* [[S]] to i8*
189 ; MSSA-NEXT: call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 [[T23]], i8* align 4 bitcast (%str…
190 ; MSSA-NEXT: br label [[BB23]]
191 ; MSSA: bb23:
192 ; MSSA-NEXT: [[T17:%.*]] = getelementptr inbounds [[STRUCT_S]], %struct.s* [[T]], i32 0, i32 0
193 ; MSSA-NEXT: [[T18:%.*]] = load i32, i32* [[T17]], align 4
194 ; MSSA-NEXT: [[T19:%.*]] = getelementptr inbounds [[STRUCT_S]], %struct.s* [[T]], i32 0, i32 1
195 ; MSSA-NEXT: [[T20:%.*]] = load i32, i32* [[T19]], align 4
196 ; MSSA-NEXT: [[T21:%.*]] = add nsw i32 [[T18]], [[T20]]
197 ; MSSA-NEXT: ret i32 [[T21]]
198 ; MSSA: bb25:
199 ; MSSA-NEXT: unreachable