Lines Matching refs:AC
4 … -assume-builder -verify --enable-knowledge-retention -S %s | FileCheck %s --check-prefixes=WITH-AC
10 …>,assume-builder,verify' --enable-knowledge-retention -S %s | FileCheck %s --check-prefixes=WITH-AC
77 ; WITH-AC-LABEL: define {{[^@]+}}@test
78 ; WITH-AC-SAME: (i32* [[P:%.*]], i32* [[P1:%.*]], i32* [[P2:%.*]], i32* [[P3:%.*]]) {
79 ; WITH-AC-NEXT: call void @llvm.assume(i1 true) [ "nonnull"(i32* [[P]]), "dereferenceable"(i32* …
80 ; WITH-AC-NEXT: call void @func(i32* nonnull dereferenceable(16) [[P]], i32* null)
81 ; WITH-AC-NEXT: call void @llvm.assume(i1 true) [ "dereferenceable"(i32* [[P1]], i64 12) ]
82 ; WITH-AC-NEXT: call void @func(i32* dereferenceable(12) [[P1]], i32* nonnull [[P]])
83 ; WITH-AC-NEXT: call void @llvm.assume(i1 true) [ "cold"() ]
84 ; WITH-AC-NEXT: call void @func_cold(i32* dereferenceable(12) [[P1]]) [[ATTR6:#.*]]
85 ; WITH-AC-NEXT: call void @llvm.assume(i1 true) [ "cold"() ]
86 ; WITH-AC-NEXT: call void @func_cold(i32* dereferenceable(12) [[P1]])
87 ; WITH-AC-NEXT: call void @func(i32* [[P1]], i32* [[P]])
88 ; WITH-AC-NEXT: call void @func_strbool(i32* [[P1]])
89 ; WITH-AC-NEXT: call void @llvm.assume(i1 true) [ "dereferenceable"(i32* [[P]], i64 32) ]
90 ; WITH-AC-NEXT: call void @func(i32* dereferenceable(32) [[P]], i32* dereferenceable(8) [[P]])
91 ; WITH-AC-NEXT: call void @func_many(i32* align 8 [[P1]])
92 ; WITH-AC-NEXT: call void @llvm.assume(i1 true) [ "noundef"(i32* [[P1]]), "align"(i32* [[P1]], i…
93 ; WITH-AC-NEXT: call void @func_many(i32* noundef align 8 [[P1]])
94 ; WITH-AC-NEXT: call void @func_argattr(i32* [[P2]], i32* [[P3]])
95 ; WITH-AC-NEXT: call void @llvm.assume(i1 true) [ "noundef"(i32* [[P2]]), "align"(i32* [[P2]], i…
96 ; WITH-AC-NEXT: call void @func_argattr2(i32* [[P2]], i32* [[P3]])
97 ; WITH-AC-NEXT: call void @func(i32* nonnull [[P1]], i32* nonnull [[P]])
98 ; WITH-AC-NEXT: call void @llvm.assume(i1 true) [ "nonnull"(i32* [[P1]]), "noundef"(i32* [[P]]) ]
99 ; WITH-AC-NEXT: call void @func(i32* noundef nonnull [[P1]], i32* noundef nonnull [[P]])
100 ; WITH-AC-NEXT: ret void
241 ; WITH-AC-LABEL: define {{[^@]+}}@test2
242 ; WITH-AC-SAME: (%struct.S* [[TMP0:%.*]], i32* [[TMP1:%.*]], i8* [[TMP2:%.*]]) {
243 ; WITH-AC-NEXT: [[TMP4:%.*]] = alloca %struct.S*, align 8
244 ; WITH-AC-NEXT: [[TMP5:%.*]] = alloca i32*, align 8
245 ; WITH-AC-NEXT: [[TMP6:%.*]] = alloca i8*, align 8
246 ; WITH-AC-NEXT: [[TMP7:%.*]] = alloca [[STRUCT_S:%.*]], align 8
247 ; WITH-AC-NEXT: store %struct.S* [[TMP0]], %struct.S** [[TMP4]], align 8
248 ; WITH-AC-NEXT: store i32* [[TMP1]], i32** [[TMP5]], align 8
249 ; WITH-AC-NEXT: store i8* [[TMP2]], i8** [[TMP6]], align 8
250 ; WITH-AC-NEXT: [[TMP8:%.*]] = load i32*, i32** [[TMP5]], align 8
251 ; WITH-AC-NEXT: [[TMP9:%.*]] = load i32, i32* [[TMP8]], align 4
252 ; WITH-AC-NEXT: [[TMP10:%.*]] = trunc i32 [[TMP9]] to i8
253 ; WITH-AC-NEXT: [[TMP11:%.*]] = load i8*, i8** [[TMP6]], align 8
254 ; WITH-AC-NEXT: store i8 [[TMP10]], i8* [[TMP11]], align 1
255 ; WITH-AC-NEXT: [[TMP12:%.*]] = bitcast %struct.S* [[TMP7]] to i8*
256 ; WITH-AC-NEXT: [[TMP13:%.*]] = load %struct.S*, %struct.S** [[TMP4]], align 8
257 ; WITH-AC-NEXT: [[TMP14:%.*]] = bitcast %struct.S* [[TMP13]] to i8*
258 ; WITH-AC-NEXT: [[TMP15:%.*]] = bitcast %struct.S* [[TMP7]] to i8*
259 ; WITH-AC-NEXT: [[TMP16:%.*]] = load %struct.S*, %struct.S** [[TMP4]], align 8
260 ; WITH-AC-NEXT: [[TMP17:%.*]] = getelementptr inbounds [[STRUCT_S]], %struct.S* [[TMP16]], i32 0…
261 ; WITH-AC-NEXT: call void @llvm.assume(i1 true) [ "dereferenceable"(%struct.S* [[TMP16]], i64 4)…
262 ; WITH-AC-NEXT: [[TMP18:%.*]] = load i32, i32* [[TMP17]], align 8
263 ; WITH-AC-NEXT: [[TMP19:%.*]] = load %struct.S*, %struct.S** [[TMP4]], align 8
264 ; WITH-AC-NEXT: [[TMP20:%.*]] = getelementptr inbounds [[STRUCT_S]], %struct.S* [[TMP19]], i32 0…
265 ; WITH-AC-NEXT: call void @llvm.assume(i1 true) [ "dereferenceable"(%struct.S* [[TMP19]], i64 5)…
266 ; WITH-AC-NEXT: [[TMP21:%.*]] = load i8, i8* [[TMP20]], align 4
267 ; WITH-AC-NEXT: [[TMP22:%.*]] = sext i8 [[TMP21]] to i32
268 ; WITH-AC-NEXT: [[TMP23:%.*]] = add nsw i32 [[TMP18]], [[TMP22]]
269 ; WITH-AC-NEXT: [[TMP24:%.*]] = load %struct.S*, %struct.S** [[TMP4]], align 8
270 ; WITH-AC-NEXT: [[TMP25:%.*]] = getelementptr inbounds [[STRUCT_S]], %struct.S* [[TMP24]], i32 0…
271 ; WITH-AC-NEXT: call void @llvm.assume(i1 true) [ "dereferenceable"(%struct.S* [[TMP24]], i64 16…
272 ; WITH-AC-NEXT: [[TMP26:%.*]] = load i32*, i32** [[TMP25]], align 8
273 ; WITH-AC-NEXT: [[TMP27:%.*]] = load i32, i32* [[TMP26]], align 4
274 ; WITH-AC-NEXT: [[TMP28:%.*]] = add nsw i32 [[TMP23]], [[TMP27]]
275 ; WITH-AC-NEXT: ret i32 [[TMP28]]
454 ; WITH-AC-LABEL: define {{[^@]+}}@test3
455 ; WITH-AC-SAME: (%struct.S* [[TMP0:%.*]], i32* [[TMP1:%.*]], i8* [[TMP2:%.*]]) [[ATTR4:#.*]] {
456 ; WITH-AC-NEXT: [[TMP4:%.*]] = alloca %struct.S*, align 8
457 ; WITH-AC-NEXT: [[TMP5:%.*]] = alloca i32*, align 8
458 ; WITH-AC-NEXT: [[TMP6:%.*]] = alloca i8*, align 8
459 ; WITH-AC-NEXT: [[TMP7:%.*]] = alloca [[STRUCT_S:%.*]], align 8
460 ; WITH-AC-NEXT: store %struct.S* [[TMP0]], %struct.S** [[TMP4]], align 8
461 ; WITH-AC-NEXT: store i32* [[TMP1]], i32** [[TMP5]], align 8
462 ; WITH-AC-NEXT: store i8* [[TMP2]], i8** [[TMP6]], align 8
463 ; WITH-AC-NEXT: [[TMP8:%.*]] = load i32*, i32** [[TMP5]], align 8
464 ; WITH-AC-NEXT: [[TMP9:%.*]] = load i32, i32* [[TMP8]], align 4
465 ; WITH-AC-NEXT: [[TMP10:%.*]] = trunc i32 [[TMP9]] to i8
466 ; WITH-AC-NEXT: [[TMP11:%.*]] = load i8*, i8** [[TMP6]], align 8
467 ; WITH-AC-NEXT: store i8 [[TMP10]], i8* [[TMP11]], align 1
468 ; WITH-AC-NEXT: [[TMP12:%.*]] = bitcast %struct.S* [[TMP7]] to i8*
469 ; WITH-AC-NEXT: [[TMP13:%.*]] = load %struct.S*, %struct.S** [[TMP4]], align 32
470 ; WITH-AC-NEXT: [[TMP14:%.*]] = bitcast %struct.S* [[TMP13]] to i8*
471 ; WITH-AC-NEXT: call void @may_throw()
472 ; WITH-AC-NEXT: [[TMP15:%.*]] = bitcast %struct.S* [[TMP7]] to i8*
473 ; WITH-AC-NEXT: [[TMP16:%.*]] = load %struct.S*, %struct.S** [[TMP4]], align 8
474 ; WITH-AC-NEXT: [[TMP17:%.*]] = getelementptr inbounds [[STRUCT_S]], %struct.S* [[TMP16]], i32 0…
475 ; WITH-AC-NEXT: call void @llvm.assume(i1 true) [ "dereferenceable"(%struct.S* [[TMP16]], i64 4)…
476 ; WITH-AC-NEXT: [[TMP18:%.*]] = load i32, i32* [[TMP17]], align 8
477 ; WITH-AC-NEXT: [[TMP19:%.*]] = load %struct.S*, %struct.S** [[TMP4]], align 8
478 ; WITH-AC-NEXT: [[TMP20:%.*]] = getelementptr inbounds [[STRUCT_S]], %struct.S* [[TMP19]], i32 0…
479 ; WITH-AC-NEXT: call void @llvm.assume(i1 true) [ "dereferenceable"(%struct.S* [[TMP19]], i64 5)…
480 ; WITH-AC-NEXT: [[TMP21:%.*]] = load i8, i8* [[TMP20]], align 8
481 ; WITH-AC-NEXT: [[TMP22:%.*]] = sext i8 [[TMP21]] to i32
482 ; WITH-AC-NEXT: [[TMP23:%.*]] = add nsw i32 [[TMP18]], [[TMP22]]
483 ; WITH-AC-NEXT: [[TMP24:%.*]] = load %struct.S*, %struct.S** [[TMP4]], align 8
484 ; WITH-AC-NEXT: [[TMP25:%.*]] = getelementptr inbounds [[STRUCT_S]], %struct.S* [[TMP24]], i32 0…
485 ; WITH-AC-NEXT: call void @llvm.assume(i1 true) [ "dereferenceable"(%struct.S* [[TMP24]], i64 16…
486 ; WITH-AC-NEXT: [[TMP26:%.*]] = load i32*, i32** [[TMP25]], align 8
487 ; WITH-AC-NEXT: [[TMP27:%.*]] = load i32, i32* [[TMP26]], align 4
488 ; WITH-AC-NEXT: [[TMP28:%.*]] = add nsw i32 [[TMP23]], [[TMP27]]
489 ; WITH-AC-NEXT: ret i32 [[TMP28]]
647 ; WITH-AC-LABEL: define {{[^@]+}}@_Z6squarePi
648 ; WITH-AC-SAME: (i32* [[P:%.*]], i32* [[P1:%.*]], i1 [[COND:%.*]]) {
649 ; WITH-AC-NEXT: call void @llvm.assume(i1 true) [ "dereferenceable"(i32* [[P]], i64 4), "nonnull…
650 ; WITH-AC-NEXT: store i32 0, i32* [[P]], align 4
651 ; WITH-AC-NEXT: call void @llvm.assume(i1 true) [ "dereferenceable"(i32* [[P1]], i64 4), "nonnul…
652 ; WITH-AC-NEXT: store i32 0, i32* [[P1]], align 8
653 ; WITH-AC-NEXT: br i1 [[COND]], label [[A:%.*]], label [[B:%.*]]
654 ; WITH-AC: A:
655 ; WITH-AC-NEXT: call void @llvm.assume(i1 true) [ "align"(i32* [[P]], i64 8) ]
656 ; WITH-AC-NEXT: store i32 0, i32* [[P]], align 8
657 ; WITH-AC-NEXT: store i32 0, i32* [[P1]], align 4
658 ; WITH-AC-NEXT: br i1 [[COND]], label [[C:%.*]], label [[B]]
659 ; WITH-AC: B:
660 ; WITH-AC-NEXT: call void @llvm.assume(i1 true) [ "dereferenceable"(i32* [[P]], i64 4), "nonnull…
661 ; WITH-AC-NEXT: store i32 0, i32* [[P]], align 8
662 ; WITH-AC-NEXT: call void @llvm.assume(i1 true) [ "dereferenceable"(i32* [[P1]], i64 4), "nonnul…
663 ; WITH-AC-NEXT: store i32 0, i32* [[P1]], align 8
664 ; WITH-AC-NEXT: br label [[C]]
665 ; WITH-AC: C:
666 ; WITH-AC-NEXT: call void @llvm.assume(i1 true) [ "dereferenceable"(i32* [[P]], i64 4), "nonnull…
667 ; WITH-AC-NEXT: store i32 0, i32* [[P]], align 32
668 ; WITH-AC-NEXT: call void @llvm.assume(i1 true) [ "dereferenceable"(i32* [[P1]], i64 4), "nonnul…
669 ; WITH-AC-NEXT: store i32 0, i32* [[P1]], align 4
670 ; WITH-AC-NEXT: ret i32 0
799 ; WITH-AC-LABEL: define {{[^@]+}}@test4A
800 ; WITH-AC-SAME: (i32* [[TMP0:%.*]], i32* [[TMP1:%.*]], i32 [[TMP2:%.*]], i32 [[TMP3:%.*]]) {
801 ; WITH-AC-NEXT: [[TMP5:%.*]] = icmp ne i32* [[TMP1]], null
802 ; WITH-AC-NEXT: br i1 [[TMP5]], label [[TMP6:%.*]], label [[TMP12:%.*]]
803 ; WITH-AC: 6:
804 ; WITH-AC-NEXT: [[TMP7:%.*]] = add nsw i32 [[TMP3]], [[TMP2]]
805 ; WITH-AC-NEXT: call void @may_throw()
806 ; WITH-AC-NEXT: call void @llvm.assume(i1 true) [ "dereferenceable"(i32* [[TMP0]], i64 4), "nonn…
807 ; WITH-AC-NEXT: [[TMP8:%.*]] = load i32, i32* [[TMP0]], align 4
808 ; WITH-AC-NEXT: [[TMP9:%.*]] = add nsw i32 [[TMP7]], [[TMP8]]
809 ; WITH-AC-NEXT: store i32 0, i32* [[TMP0]], align 4
810 ; WITH-AC-NEXT: call void @llvm.assume(i1 true) [ "dereferenceable"(i32* [[TMP1]], i64 4), "nonn…
811 ; WITH-AC-NEXT: [[TMP10:%.*]] = load i32, i32* [[TMP1]], align 4
812 ; WITH-AC-NEXT: [[TMP11:%.*]] = add nsw i32 [[TMP9]], [[TMP10]]
813 ; WITH-AC-NEXT: call void @may_throw()
814 ; WITH-AC-NEXT: store i32 [[TMP11]], i32* [[TMP1]], align 4
815 ; WITH-AC-NEXT: br label [[TMP12]]
816 ; WITH-AC: 12:
817 ; WITH-AC-NEXT: ret i32 0
904 ; WITH-AC-LABEL: define {{[^@]+}}@terminator
905 ; WITH-AC-SAME: (i32* [[P:%.*]]) personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
906 ; WITH-AC-NEXT: invoke void @may_throwv2(i32* nonnull [[P]])
907 ; WITH-AC-NEXT: to label [[EXIT:%.*]] unwind label [[CATCH:%.*]]
908 ; WITH-AC: Catch:
909 ; WITH-AC-NEXT: [[V:%.*]] = landingpad { i8*, i32 }
910 ; WITH-AC-NEXT: catch i8* null
911 ; WITH-AC-NEXT: br label [[EXIT]]
912 ; WITH-AC: Exit:
913 ; WITH-AC-NEXT: [[DOT0:%.*]] = phi i32 [ 1, [[TMP0:%.*]] ], [ 0, [[CATCH]] ]
914 ; WITH-AC-NEXT: ret i32 [[DOT0]]
990 ; WITH-AC-LABEL: define {{[^@]+}}@test5
991 ; WITH-AC-SAME: (i8* [[TMP0:%.*]], i32 [[TMP1:%.*]]) {
992 ; WITH-AC-NEXT: [[TMP3:%.*]] = bitcast i8* [[TMP0]] to i64*
993 ; WITH-AC-NEXT: [[TMP4:%.*]] = bitcast i8* [[TMP0]] to i16*
994 ; WITH-AC-NEXT: [[TMP5:%.*]] = sext i32 [[TMP1]] to i64
995 ; WITH-AC-NEXT: [[TMP6:%.*]] = getelementptr inbounds i16, i16* [[TMP4]], i64 [[TMP5]]
996 ; WITH-AC-NEXT: call void @llvm.assume(i1 true) [ "dereferenceable"(i16* [[TMP6]], i64 2), "nonn…
997 ; WITH-AC-NEXT: [[TMP7:%.*]] = load i16, i16* [[TMP6]], align 2
998 ; WITH-AC-NEXT: [[A:%.*]] = load i16, i16* [[TMP6]], align 4
999 ; WITH-AC-NEXT: [[TMP8:%.*]] = sext i16 [[TMP7]] to i64
1000 ; WITH-AC-NEXT: [[TMP9:%.*]] = getelementptr inbounds i64, i64* [[TMP3]], i64 [[TMP8]]
1001 ; WITH-AC-NEXT: call void @llvm.assume(i1 true) [ "dereferenceable"(i64* [[TMP9]], i64 8) ]
1002 ; WITH-AC-NEXT: [[TMP10:%.*]] = load i64, i64* [[TMP9]], align 16
1003 ; WITH-AC-NEXT: [[B:%.*]] = load i64, i64* [[TMP9]], align 32
1004 ; WITH-AC-NEXT: [[TMP11:%.*]] = trunc i64 [[TMP10]] to i32
1005 ; WITH-AC-NEXT: ret i32 [[TMP11]]
1113 ; WITH-AC-LABEL: define {{[^@]+}}@test6
1114 ; WITH-AC-SAME: (i32* [[TMP0:%.*]], i32 [[TMP1:%.*]], i32* [[TMP2:%.*]]) {
1115 ; WITH-AC-NEXT: br label [[TMP4:%.*]]
1116 ; WITH-AC: 4:
1117 ; WITH-AC-NEXT: [[DOT0:%.*]] = phi i32 [ 0, [[TMP3:%.*]] ], [ [[TMP16:%.*]], [[TMP6:%.*]] ]
1118 ; WITH-AC-NEXT: [[TMP5:%.*]] = icmp slt i32 [[DOT0]], [[TMP1]]
1119 ; WITH-AC-NEXT: br i1 [[TMP5]], label [[TMP6]], label [[TMP17:%.*]]
1120 ; WITH-AC: 6:
1121 ; WITH-AC-NEXT: [[TMP7:%.*]] = add nsw i32 [[TMP1]], [[DOT0]]
1122 ; WITH-AC-NEXT: [[TMP8:%.*]] = sext i32 [[TMP7]] to i64
1123 ; WITH-AC-NEXT: [[TMP9:%.*]] = getelementptr inbounds i32, i32* [[TMP0]], i64 [[TMP8]]
1124 ; WITH-AC-NEXT: call void @llvm.assume(i1 true) [ "nonnull"(i32* [[TMP0]]), "align"(i32* [[TMP0]…
1125 ; WITH-AC-NEXT: [[TMP10:%.*]] = load i32, i32* [[TMP9]], align 4
1126 ; WITH-AC-NEXT: [[TMP11:%.*]] = mul nsw i32 [[DOT0]], [[TMP10]]
1127 ; WITH-AC-NEXT: [[TMP12:%.*]] = sext i32 [[DOT0]] to i64
1128 ; WITH-AC-NEXT: [[TMP13:%.*]] = getelementptr inbounds i32, i32* [[TMP0]], i64 [[TMP12]]
1129 ; WITH-AC-NEXT: call void @llvm.assume(i1 true) [ "dereferenceable"(i32* [[TMP13]], i64 4) ]
1130 ; WITH-AC-NEXT: [[TMP14:%.*]] = load i32, i32* [[TMP13]], align 4
1131 ; WITH-AC-NEXT: [[TMP15:%.*]] = add nsw i32 [[TMP14]], [[TMP11]]
1132 ; WITH-AC-NEXT: store i32 [[TMP15]], i32* [[TMP13]], align 4
1133 ; WITH-AC-NEXT: [[TMP16]] = add nsw i32 [[DOT0]], 1
1134 ; WITH-AC-NEXT: br label [[TMP4]]
1135 ; WITH-AC: 17:
1136 ; WITH-AC-NEXT: [[TMP18:%.*]] = sext i32 [[TMP1]] to i64
1137 ; WITH-AC-NEXT: [[TMP19:%.*]] = getelementptr inbounds i32, i32* [[TMP2]], i64 [[TMP18]]
1138 ; WITH-AC-NEXT: call void @llvm.assume(i1 true) [ "nonnull"(i32* [[TMP2]]), "align"(i32* [[TMP2]…
1139 ; WITH-AC-NEXT: [[TMP20:%.*]] = load i32, i32* [[TMP19]], align 4
1140 ; WITH-AC-NEXT: ret i32 [[TMP20]]
1269 ; WITH-AC-LABEL: define {{[^@]+}}@test7
1270 ; WITH-AC-SAME: (%struct.A* nonnull [[TMP0:%.*]], i32 [[TMP1:%.*]]) {
1271 ; WITH-AC-NEXT: [[TMP3:%.*]] = sext i32 [[TMP1]] to i64
1272 ; WITH-AC-NEXT: [[TMP4:%.*]] = getelementptr inbounds [[STRUCT_A:%.*]], %struct.A* [[TMP0]], i64…
1273 ; WITH-AC-NEXT: call void @llvm.assume(i1 true) [ "dereferenceable"(%struct.A* [[TMP0]], i64 280…
1274 ; WITH-AC-NEXT: [[TMP5:%.*]] = load i64, i64* [[TMP4]], align 8
1275 ; WITH-AC-NEXT: [[TMP6:%.*]] = getelementptr inbounds [[STRUCT_A]], %struct.A* [[TMP0]], i64 0, …
1276 ; WITH-AC-NEXT: [[TMP7:%.*]] = load i64, i64* [[TMP6]], align 32
1277 ; WITH-AC-NEXT: [[TMP8:%.*]] = getelementptr inbounds [[STRUCT_A]], %struct.A* [[TMP0]], i64 0, …
1278 ; WITH-AC-NEXT: [[TMP9:%.*]] = load i64*, i64** [[TMP8]], align 8
1279 ; WITH-AC-NEXT: [[TMP10:%.*]] = getelementptr inbounds i64, i64* [[TMP9]], i64 [[TMP5]]
1280 ; WITH-AC-NEXT: call void @llvm.assume(i1 true) [ "dereferenceable"(i64* [[TMP10]], i64 8), "non…
1281 ; WITH-AC-NEXT: store i64 [[TMP7]], i64* [[TMP10]], align 8
1282 ; WITH-AC-NEXT: store i64 [[TMP7]], i64* [[TMP10]], align 8
1283 ; WITH-AC-NEXT: [[TMP11:%.*]] = bitcast %struct.A* [[TMP0]] to i32**
1284 ; WITH-AC-NEXT: [[TMP12:%.*]] = load i32*, i32** [[TMP11]], align 8
1285 ; WITH-AC-NEXT: [[TMP13:%.*]] = load i32, i32* [[TMP12]], align 4
1286 ; WITH-AC-NEXT: ret i32 [[TMP13]]