diff options
author | Stephen Lin <stephenwlin@gmail.com> | 2013-07-14 01:50:49 +0000 |
---|---|---|
committer | Stephen Lin <stephenwlin@gmail.com> | 2013-07-14 01:50:49 +0000 |
commit | 15bfd6d3ad739cca0a12049f3e7e94c3645ee881 (patch) | |
tree | 21476928d99a2db9bfb4a6af003f4030160d4703 /test/Transforms/ObjCARC | |
parent | 39f4e8d9cce22b60a3417a5f17c847fa5b1daebf (diff) | |
download | llvm-15bfd6d3ad739cca0a12049f3e7e94c3645ee881.tar.gz llvm-15bfd6d3ad739cca0a12049f3e7e94c3645ee881.tar.bz2 llvm-15bfd6d3ad739cca0a12049f3e7e94c3645ee881.tar.xz |
Catch more CHECK that can be converted to CHECK-LABEL in Transforms for easier debugging. No functionality change.
This conversion was done with the following bash script:
find test/Transforms -name "*.ll" | \
while read NAME; do
echo "$NAME"
if ! grep -q "^; *RUN: *llc" $NAME; then
TEMP=`mktemp -t temp`
cp $NAME $TEMP
sed -n "s/^define [^@]*@\([A-Za-z0-9_]*\)(.*$/\1/p" < $NAME | \
while read FUNC; do
sed -i '' "s/;\(.*\)\([A-Za-z0-9_]*\):\( *\)define\([^@]*\)@$FUNC\([( ]*\)\$/;\1\2-LABEL:\3define\4@$FUNC(/g" $TEMP
done
mv $TEMP $NAME
fi
done
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186269 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/Transforms/ObjCARC')
21 files changed, 186 insertions, 186 deletions
diff --git a/test/Transforms/ObjCARC/arc-annotations.ll b/test/Transforms/ObjCARC/arc-annotations.ll index c0dea4b1b6..f76ba3b80b 100644 --- a/test/Transforms/ObjCARC/arc-annotations.ll +++ b/test/Transforms/ObjCARC/arc-annotations.ll @@ -27,7 +27,7 @@ declare i8* @returner() ; Simple retain+release pair deletion, with some intervening control ; flow and harmless instructions. -; CHECK: define void @test0( +; CHECK-LABEL: define void @test0( ; CHECK: entry: ; CHECK: call void @llvm.arc.annotation.bottomup.bbstart(i8** @x, i8** @S_None) ; CHECK: %0 = tail call i8* @objc_retain(i8* %a) #0, !llvm.arc.annotation.bottomup ![[ANN0:[0-9]+]], !llvm.arc.annotation.topdown ![[ANN1:[0-9]+]] diff --git a/test/Transforms/ObjCARC/basic.ll b/test/Transforms/ObjCARC/basic.ll index 2bb312bf26..12af3548d3 100644 --- a/test/Transforms/ObjCARC/basic.ll +++ b/test/Transforms/ObjCARC/basic.ll @@ -177,7 +177,7 @@ if.end5: ; preds = %if.then3, %if.end ret void } -; CHECK: define void @test1b_imprecise( +; CHECK-LABEL: define void @test1b_imprecise( ; CHECK: entry: ; CHECK: tail call i8* @objc_retain(i8* %x) [[NUW:#[0-9]+]] ; CHECK-NOT: @objc_ @@ -210,7 +210,7 @@ if.end5: ; preds = %if.then3, %if.end ; Like test0 but the pointer is passed to an intervening call, ; so the optimization is not safe. -; CHECK: define void @test2_precise( +; CHECK-LABEL: define void @test2_precise( ; CHECK: @objc_retain(i8* %a) ; CHECK: @objc_release ; CHECK: } @@ -239,7 +239,7 @@ return: ret void } -; CHECK: define void @test2_imprecise( +; CHECK-LABEL: define void @test2_imprecise( ; CHECK: @objc_retain(i8* %a) ; CHECK: @objc_release ; CHECK: } @@ -273,7 +273,7 @@ return: ; TODO: For now, assume this can't happen. -; CHECK: define void @test3_precise( +; CHECK-LABEL: define void @test3_precise( ; TODO: @objc_retain(i8* %a) ; TODO: @objc_release ; CHECK: } @@ -293,7 +293,7 @@ return: ret void } -; CHECK: define void @test3_imprecise( +; CHECK-LABEL: define void @test3_imprecise( ; TODO: @objc_retain(i8* %a) ; TODO: @objc_release ; CHECK: } @@ -319,7 +319,7 @@ return: ; Like test0 but the retain is in a loop, ; so the optimization is not safe. -; CHECK: define void @test4_precise( +; CHECK-LABEL: define void @test4_precise( ; TODO: @objc_retain(i8* %a) ; TODO: @objc_release ; CHECK: } @@ -339,7 +339,7 @@ return: ret void } -; CHECK: define void @test4_imprecise( +; CHECK-LABEL: define void @test4_imprecise( ; TODO: @objc_retain(i8* %a) ; TODO: @objc_release ; CHECK: } @@ -363,7 +363,7 @@ return: ; Like test0 but the pointer is conditionally passed to an intervening call, ; so the optimization is not safe. -; CHECK: define void @test5a( +; CHECK-LABEL: define void @test5a( ; CHECK: @objc_retain(i8* ; CHECK: @objc_release ; CHECK: } @@ -379,7 +379,7 @@ entry: ret void } -; CHECK: define void @test5b( +; CHECK-LABEL: define void @test5b( ; CHECK: @objc_retain(i8* ; CHECK: @objc_release ; CHECK: } @@ -399,7 +399,7 @@ entry: ; retain+release pair deletion, where the release happens on two different ; flow paths. -; CHECK: define void @test6a( +; CHECK-LABEL: define void @test6a( ; CHECK: entry: ; CHECK: tail call i8* @objc_retain( ; CHECK: t: @@ -433,7 +433,7 @@ return: ret void } -; CHECK: define void @test6b( +; CHECK-LABEL: define void @test6b( ; CHECK-NOT: @objc_ ; CHECK: } define void @test6b(i32* %x, i1 %p) nounwind { @@ -461,7 +461,7 @@ return: ret void } -; CHECK: define void @test6c( +; CHECK-LABEL: define void @test6c( ; CHECK: entry: ; CHECK: tail call i8* @objc_retain( ; CHECK: t: @@ -495,7 +495,7 @@ return: ret void } -; CHECK: define void @test6d( +; CHECK-LABEL: define void @test6d( ; CHECK: entry: ; CHECK: tail call i8* @objc_retain( ; CHECK: t: @@ -533,7 +533,7 @@ return: ; retain+release pair deletion, where the retain happens on two different ; flow paths. -; CHECK: define void @test7( +; CHECK-LABEL: define void @test7( ; CHECK: entry: ; CHECK-NOT: objc_ ; CHECK: t: @@ -567,7 +567,7 @@ return: ret void } -; CHECK: define void @test7b( +; CHECK-LABEL: define void @test7b( ; CHECK-NOT: @objc_ ; CHECK: } define void @test7b(i32* %x, i1 %p) nounwind { @@ -596,7 +596,7 @@ return: ; Like test7, but there's a retain/retainBlock mismatch. Don't delete! -; CHECK: define void @test7c +; CHECK-LABEL: define void @test7c( ; CHECK: t: ; CHECK: call i8* @objc_retainBlock ; CHECK: f: @@ -631,7 +631,7 @@ return: ; retain+release pair deletion, where the retain and release both happen on ; different flow paths. Wild! -; CHECK: define void @test8a( +; CHECK-LABEL: define void @test8a( ; CHECK: entry: ; CHECK: t: ; CHECK: @objc_retain @@ -679,7 +679,7 @@ return: ret void } -; CHECK: define void @test8b( +; CHECK-LABEL: define void @test8b( ; CHECK-NOT: @objc_ ; CHECK: } define void @test8b(i32* %x, i1 %p, i1 %q) nounwind { @@ -717,7 +717,7 @@ return: ret void } -; CHECK: define void @test8c( +; CHECK-LABEL: define void @test8c( ; CHECK: entry: ; CHECK: t: ; CHECK: @objc_retain @@ -765,7 +765,7 @@ return: ret void } -; CHECK: define void @test8d( +; CHECK-LABEL: define void @test8d( ; CHECK: entry: ; CHECK: t: ; CHECK: @objc_retain @@ -815,7 +815,7 @@ return: ; Trivial retain+release pair deletion. -; CHECK: define void @test9( +; CHECK-LABEL: define void @test9( ; CHECK-NOT: @objc_ ; CHECK: } define void @test9(i8* %x) nounwind { @@ -827,7 +827,7 @@ entry: ; Retain+release pair, but on an unknown pointer relationship. Don't delete! -; CHECK: define void @test9b +; CHECK-LABEL: define void @test9b( ; CHECK: @objc_retain(i8* %x) ; CHECK: @objc_release(i8* %s) ; CHECK: } @@ -841,7 +841,7 @@ entry: ; Trivial retain+release pair with intervening calls - don't delete! -; CHECK: define void @test10( +; CHECK-LABEL: define void @test10( ; CHECK: @objc_retain(i8* %x) ; CHECK: @callee ; CHECK: @use_pointer @@ -860,7 +860,7 @@ entry: ; Also, add a tail keyword, since objc_retain can never be passed ; a stack argument. -; CHECK: define void @test11( +; CHECK-LABEL: define void @test11( ; CHECK: tail call i8* @objc_retain(i8* %x) [[NUW]] ; CHECK: call i8* @objc_autorelease(i8* %0) [[NUW]] ; CHECK: } @@ -874,7 +874,7 @@ entry: ; Same as test11 but with no use_pointer call. Delete the pair! -; CHECK: define void @test11a( +; CHECK-LABEL: define void @test11a( ; CHECK: entry: ; CHECK-NEXT: ret void ; CHECK: } @@ -889,7 +889,7 @@ entry: ; since if the frontend emitted code for an __autoreleasing variable, we may ; want it to be in the autorelease pool. -; CHECK: define i8* @test11b( +; CHECK-LABEL: define i8* @test11b( ; CHECK: tail call i8* @objc_retain(i8* %x) [[NUW]] ; CHECK: call i8* @objc_autorelease(i8* %0) [[NUW]] ; CHECK: } @@ -903,7 +903,7 @@ entry: ; Trivial retain,release pair with intervening call, but it's dominated ; by another retain - delete! -; CHECK: define void @test12( +; CHECK-LABEL: define void @test12( ; CHECK-NEXT: entry: ; CHECK-NEXT: @objc_retain(i8* %x) ; CHECK-NOT: @objc_ @@ -920,7 +920,7 @@ entry: ; Trivial retain,autorelease pair. Don't delete! -; CHECK: define void @test13( +; CHECK-LABEL: define void @test13( ; CHECK: tail call i8* @objc_retain(i8* %x) [[NUW]] ; CHECK: tail call i8* @objc_retain(i8* %x) [[NUW]] ; CHECK: @use_pointer(i8* %x) @@ -937,7 +937,7 @@ entry: ; Delete the retain+release pair. -; CHECK: define void @test13b +; CHECK-LABEL: define void @test13b( ; CHECK-NEXT: entry: ; CHECK-NEXT: @objc_retain(i8* %x) ; CHECK-NEXT: @use_pointer @@ -957,7 +957,7 @@ entry: ; Don't delete the retain+release pair because there's an ; autoreleasePoolPop in the way. -; CHECK: define void @test13c +; CHECK-LABEL: define void @test13c( ; CHECK: @objc_retain(i8* %x) ; CHECK: @objc_autoreleasePoolPop ; CHECK: @objc_retain(i8* %x) @@ -978,7 +978,7 @@ entry: ; Like test13c, but there's an autoreleasePoolPush in the way, but that ; doesn't matter. -; CHECK: define void @test13d +; CHECK-LABEL: define void @test13d( ; CHECK-NEXT: entry: ; CHECK-NEXT: @objc_retain(i8* %x) ; CHECK-NEXT: @objc_autoreleasePoolPush @@ -1000,7 +1000,7 @@ entry: ; Trivial retain,release pair with intervening call, but it's post-dominated ; by another release - delete! -; CHECK: define void @test14( +; CHECK-LABEL: define void @test14( ; CHECK-NEXT: entry: ; CHECK-NEXT: @use_pointer ; CHECK-NEXT: @use_pointer @@ -1020,7 +1020,7 @@ entry: ; Trivial retain,autorelease pair with intervening call, but it's post-dominated ; by another release. Don't delete anything. -; CHECK: define void @test15( +; CHECK-LABEL: define void @test15( ; CHECK-NEXT: entry: ; CHECK-NEXT: @objc_retain(i8* %x) ; CHECK-NEXT: @use_pointer @@ -1040,7 +1040,7 @@ entry: ; Trivial retain,autorelease pair, post-dominated ; by another release. Delete the retain and release. -; CHECK: define void @test15b +; CHECK-LABEL: define void @test15b( ; CHECK-NEXT: entry: ; CHECK-NEXT: @objc_retain ; CHECK-NEXT: @objc_autorelease @@ -1055,7 +1055,7 @@ entry: ret void } -; CHECK: define void @test15c +; CHECK-LABEL: define void @test15c( ; CHECK-NEXT: entry: ; CHECK-NEXT: @objc_autorelease ; CHECK-NEXT: ret void @@ -1070,7 +1070,7 @@ entry: ; Retain+release pairs in diamonds, all dominated by a retain. -; CHECK: define void @test16a( +; CHECK-LABEL: define void @test16a( ; CHECK: @objc_retain(i8* %x) ; CHECK-NOT: @objc ; CHECK: } @@ -1104,7 +1104,7 @@ purple: ret void } -; CHECK: define void @test16b( +; CHECK-LABEL: define void @test16b( ; CHECK: @objc_retain(i8* %x) ; CHECK-NOT: @objc ; CHECK: } @@ -1138,7 +1138,7 @@ purple: ret void } -; CHECK: define void @test16c( +; CHECK-LABEL: define void @test16c( ; CHECK: @objc_retain(i8* %x) ; CHECK-NOT: @objc ; CHECK: } @@ -1172,7 +1172,7 @@ purple: ret void } -; CHECK: define void @test16d( +; CHECK-LABEL: define void @test16d( ; CHECK: @objc_retain(i8* %x) ; CHECK-NOT: @objc ; CHECK: } @@ -1209,7 +1209,7 @@ purple: ; Retain+release pairs in diamonds, all post-dominated by a release. -; CHECK: define void @test17( +; CHECK-LABEL: define void @test17( ; CHECK-NOT: @objc_ ; CHECK: purple: ; CHECK: @objc_release @@ -1246,7 +1246,7 @@ purple: ; Delete no-ops. -; CHECK: define void @test18( +; CHECK-LABEL: define void @test18( ; CHECK-NOT: @objc_ ; CHECK: } define void @test18() { @@ -1258,7 +1258,7 @@ define void @test18() { ; Delete no-ops where undef can be assumed to be null. -; CHECK: define void @test18b +; CHECK-LABEL: define void @test18b( ; CHECK-NOT: @objc_ ; CHECK: } define void @test18b() { @@ -1294,7 +1294,7 @@ entry: ; Bitcast insertion -; CHECK: define void @test20( +; CHECK-LABEL: define void @test20( ; CHECK: %tmp1 = tail call i8* @objc_retain(i8* %tmp) [[NUW]] ; CHECK-NEXT: invoke ; CHECK: } @@ -1322,7 +1322,7 @@ if.end: ; preds = %invoke.cont23 ; Delete a redundant retain,autorelease when forwaring a call result ; directly to a return value. -; CHECK: define i8* @test21( +; CHECK-LABEL: define i8* @test21( ; CHECK: call i8* @returner() ; CHECK-NEXT: ret i8* %call ; CHECK-NEXT: } @@ -1336,7 +1336,7 @@ entry: ; Move an objc call up through a phi that has null operands. -; CHECK: define void @test22( +; CHECK-LABEL: define void @test22( ; CHECK: B: ; CHECK: %1 = bitcast double* %p to i8* ; CHECK: call void @objc_release(i8* %1) @@ -1359,7 +1359,7 @@ C: ; Optimize objc_retainBlock. -; CHECK: define void @test23( +; CHECK-LABEL: define void @test23( ; CHECK-NOT: @objc_ ; CHECK: } %block0 = type { i64, i64, i8*, i8* } @@ -1393,7 +1393,7 @@ entry: ; Don't optimize objc_retainBlock, because there's no copy_on_escape metadata. -; CHECK: define void @test23c( +; CHECK-LABEL: define void @test23c( ; CHECK: @objc_retainBlock ; CHECK: @objc_release ; CHECK: } @@ -1408,7 +1408,7 @@ entry: ; Any call can decrement a retain count. -; CHECK: define void @test24( +; CHECK-LABEL: define void @test24( ; CHECK: @objc_retain(i8* %a) ; CHECK: @objc_release ; CHECK: } @@ -1423,7 +1423,7 @@ define void @test24(i8* %r, i8* %a) { ; Don't move a retain/release pair if the release can be moved ; but the retain can't be moved to balance it. -; CHECK: define void @test25( +; CHECK-LABEL: define void @test25( ; CHECK: entry: ; CHECK: call i8* @objc_retain(i8* %p) ; CHECK: true: @@ -1448,7 +1448,7 @@ done: ; Don't move a retain/release pair if the retain can be moved ; but the release can't be moved to balance it. -; CHECK: define void @test26( +; CHECK-LABEL: define void @test26( ; CHECK: entry: ; CHECK: call i8* @objc_retain(i8* %p) ; CHECK: true: @@ -1472,7 +1472,7 @@ done: ; Don't sink the retain,release into the loop. -; CHECK: define void @test27( +; CHECK-LABEL: define void @test27( ; CHECK: entry: ; CHECK: call i8* @objc_retain(i8* %p) ; CHECK: loop: @@ -1497,7 +1497,7 @@ done: ; Trivial code motion case: Triangle. -; CHECK: define void @test28( +; CHECK-LABEL: define void @test28( ; CHECK-NOT: @objc_ ; CHECK: true: ; CHECK: call i8* @objc_retain( @@ -1525,7 +1525,7 @@ done: ; Trivial code motion case: Triangle, but no metadata. Don't move past ; unrelated memory references! -; CHECK: define void @test28b +; CHECK-LABEL: define void @test28b( ; CHECK: call i8* @objc_retain( ; CHECK: true: ; CHECK-NOT: @objc_ @@ -1555,7 +1555,7 @@ done: ; Trivial code motion case: Triangle, with metadata. Do move past ; unrelated memory references! And preserve the metadata. -; CHECK: define void @test28c +; CHECK-LABEL: define void @test28c( ; CHECK-NOT: @objc_ ; CHECK: true: ; CHECK: call i8* @objc_retain( @@ -1583,7 +1583,7 @@ done: ; Like test28. but with two releases. -; CHECK: define void @test29( +; CHECK-LABEL: define void @test29( ; CHECK-NOT: @objc_ ; CHECK: true: ; CHECK: call i8* @objc_retain( @@ -1618,7 +1618,7 @@ ohno: ; Basic case with the use and call in a diamond ; with an extra release. -; CHECK: define void @test30( +; CHECK-LABEL: define void @test30( ; CHECK-NOT: @objc_ ; CHECK: true: ; CHECK: call i8* @objc_retain( @@ -1657,7 +1657,7 @@ ohno: ; Basic case with a mergeable release. -; CHECK: define void @test31( +; CHECK-LABEL: define void @test31( ; CHECK: call i8* @objc_retain(i8* %p) ; CHECK: call void @callee() ; CHECK: store @@ -1686,7 +1686,7 @@ false: ; Don't consider bitcasts or getelementptrs direct uses. -; CHECK: define void @test32( +; CHECK-LABEL: define void @test32( ; CHECK-NOT: @objc_ ; CHECK: true: ; CHECK: call i8* @objc_retain( @@ -1715,7 +1715,7 @@ done: ; Do consider icmps to be direct uses. -; CHECK: define void @test33( +; CHECK-LABEL: define void @test33( ; CHECK-NOT: @objc_ ; CHECK: true: ; CHECK: call i8* @objc_retain( @@ -1745,7 +1745,7 @@ done: ; Delete retain,release if there's just a possible dec and we have imprecise ; releases. -; CHECK: define void @test34a( +; CHECK-LABEL: define void @test34a( ; CHECK: call i8* @objc_retain ; CHECK: true: ; CHECK: done: @@ -1767,7 +1767,7 @@ done: ret void } -; CHECK: define void @test34b( +; CHECK-LABEL: define void @test34b( ; CHECK-NOT: @objc_ ; CHECK: } define void @test34b(i8* %p, i1 %x, i8* %y) { @@ -1791,7 +1791,7 @@ done: ; release. ; Precise. -; CHECK: define void @test35a( +; CHECK-LABEL: define void @test35a( ; CHECK: entry: ; CHECK: call i8* @objc_retain ; CHECK: true: @@ -1815,7 +1815,7 @@ done: } ; Imprecise. -; CHECK: define void @test35b( +; CHECK-LABEL: define void @test35b( ; CHECK-NOT: @objc_ ; CHECK: } define void @test35b(i8* %p, i1 %x, i8* %y) { @@ -1836,7 +1836,7 @@ done: ; Delete a retain,release if there's no actual use and we have precise release. -; CHECK: define void @test36a( +; CHECK-LABEL: define void @test36a( ; CHECK: @objc_retain ; CHECK: call void @callee() ; CHECK-NOT: @objc_ @@ -1854,7 +1854,7 @@ entry: ; Like test36, but with metadata. -; CHECK: define void @test36b( +; CHECK-LABEL: define void @test36b( ; CHECK-NOT: @objc_ ; CHECK: } define void @test36b(i8* %p) { @@ -1868,7 +1868,7 @@ entry: ; Be aggressive about analyzing phis to eliminate possible uses. -; CHECK: define void @test38( +; CHECK-LABEL: define void @test38( ; CHECK-NOT: @objc_ ; CHECK: } define void @test38(i8* %p, i1 %u, i1 %m, i8* %z, i8* %y, i8* %x, i8* %w) { @@ -1902,7 +1902,7 @@ g: ; Delete retain,release pairs around loops. -; CHECK: define void @test39( +; CHECK-LABEL: define void @test39( ; CHECK-NOT: @objc_ ; CHECK: } define void @test39(i8* %p) { @@ -1920,7 +1920,7 @@ exit: ; preds = %loop ; Delete retain,release pairs around loops containing uses. -; CHECK: define void @test39b( +; CHECK-LABEL: define void @test39b( ; CHECK-NOT: @objc_ ; CHECK: } define void @test39b(i8* %p) { @@ -1939,7 +1939,7 @@ exit: ; preds = %loop ; Delete retain,release pairs around loops containing potential decrements. -; CHECK: define void @test39c( +; CHECK-LABEL: define void @test39c( ; CHECK-NOT: @objc_ ; CHECK: } define void @test39c(i8* %p) { @@ -1959,7 +1959,7 @@ exit: ; preds = %loop ; Delete retain,release pairs around loops even if ; the successors are in a different order. -; CHECK: define void @test40( +; CHECK-LABEL: define void @test40( ; CHECK-NOT: @objc_ ; CHECK: } define void @test40(i8* %p) { @@ -1979,7 +1979,7 @@ exit: ; preds = %loop ; Do the known-incremented retain+release elimination even if the pointer ; is also autoreleased. -; CHECK: define void @test42( +; CHECK-LABEL: define void @test42( ; CHECK-NEXT: entry: ; CHECK-NEXT: call i8* @objc_retain(i8* %p) ; CHECK-NEXT: call i8* @objc_autorelease(i8* %p) @@ -2001,7 +2001,7 @@ entry: ; Don't the known-incremented retain+release elimination if the pointer is ; autoreleased and there's an autoreleasePoolPop. -; CHECK: define void @test43( +; CHECK-LABEL: define void @test43( ; CHECK-NEXT: entry: ; CHECK-NEXT: call i8* @objc_retain(i8* %p) ; CHECK-NEXT: call i8* @objc_autorelease(i8* %p) @@ -2027,7 +2027,7 @@ entry: ; Do the known-incremented retain+release elimination if the pointer is ; autoreleased and there's an autoreleasePoolPush. -; CHECK: define void @test43b +; CHECK-LABEL: define void @test43b( ; CHECK-NEXT: entry: ; CHECK-NEXT: call i8* @objc_retain(i8* %p) ; CHECK-NEXT: call i8* @objc_autorelease(i8* %p) @@ -2050,7 +2050,7 @@ entry: ; Do retain+release elimination for non-provenance pointers. -; CHECK: define void @test44( +; CHECK-LABEL: define void @test44( ; CHECK-NOT: objc_ ; CHECK: } define void @test44(i8** %pp) { @@ -2063,7 +2063,7 @@ define void @test44(i8** %pp) { ; Don't delete retain+release with an unknown-provenance ; may-alias objc_release between them. -; CHECK: define void @test45( +; CHECK-LABEL: define void @test45( ; CHECK: call i8* @objc_retain(i8* %p) ; CHECK: call void @objc_release(i8* %q) ; CHECK: call void @use_pointer(i8* %p) @@ -2081,7 +2081,7 @@ define void @test45(i8** %pp, i8** %qq) { ; Don't delete retain and autorelease here. -; CHECK: define void @test46( +; CHECK-LABEL: define void @test46( ; CHECK: tail call i8* @objc_retain(i8* %p) [[NUW]] ; CHECK: true: ; CHECK: call i8* @objc_autorelease(i8* %p) [[NUW]] @@ -2102,7 +2102,7 @@ false: ; Delete no-op cast calls. -; CHECK: define i8* @test47( +; CHECK-LABEL: define i8* @test47( ; CHECK-NOT: call ; CHECK: ret i8* %p ; CHECK: } @@ -2113,7 +2113,7 @@ define i8* @test47(i8* %p) nounwind { ; Delete no-op cast calls. -; CHECK: define i8* @test48( +; CHECK-LABEL: define i8* @test48( ; CHECK-NOT: call ; CHECK: ret i8* %p ; CHECK: } @@ -2124,7 +2124,7 @@ define i8* @test48(i8* %p) nounwind { ; Delete no-op cast calls. -; CHECK: define i8* @test49( +; CHECK-LABEL: define i8* @test49( ; CHECK-NOT: call ; CHECK: ret i8* %p ; CHECK: } @@ -2136,7 +2136,7 @@ define i8* @test49(i8* %p) nounwind { ; Do delete retain+release with intervening stores of the address value if we ; have imprecise release attached to objc_release. -; CHECK: define void @test50a( +; CHECK-LABEL: define void @test50a( ; CHECK-NEXT: call i8* @objc_retain ; CHECK-NEXT: call void @callee ; CHECK-NEXT: store @@ -2151,7 +2151,7 @@ define void @test50a(i8* %p, i8** %pp) { ret void } -; CHECK: define void @test50b( +; CHECK-LABEL: define void @test50b( ; CHECK-NOT: @objc_ ; CHECK: } define void @test50b(i8* %p, i8** %pp) { @@ -2166,7 +2166,7 @@ define void @test50b(i8* %p, i8** %pp) { ; Don't delete retain+release with intervening stores through the ; address value. -; CHECK: define void @test51a( +; CHECK-LABEL: define void @test51a( ; CHECK: call i8* @objc_retain(i8* %p) ; CHECK: call void @objc_release(i8* %p) ; CHECK: ret void @@ -2179,7 +2179,7 @@ define void @test51a(i8* %p) { ret void } -; CHECK: define void @test51b( +; CHECK-LABEL: define void @test51b( ; CHECK: call i8* @objc_retain(i8* %p) ; CHECK: call void @objc_release(i8* %p) ; CHECK: ret void @@ -2195,7 +2195,7 @@ define void @test51b(i8* %p) { ; Don't delete retain+release with intervening use of a pointer of ; unknown provenance. -; CHECK: define void @test52a( +; CHECK-LABEL: define void @test52a( ; CHECK: call i8* @objc_retain ; CHECK: call void @callee() ; CHECK: call void @use_pointer(i8* %z) @@ -2212,7 +2212,7 @@ define void @test52a(i8** %zz, i8** %pp) { ret void } -; CHECK: define void @test52b( +; CHECK-LABEL: define void @test52b( ; CHECK: call i8* @objc_retain ; CHECK: call void @callee() ; CHECK: call void @use_pointer(i8* %z) @@ -2234,7 +2234,7 @@ define void @test52b(i8** %zz, i8** %pp) { ; Oops. That's wrong. Clang sometimes uses function types gratuitously. ; See rdar://10551239. -; CHECK: define void @test53( +; CHECK-LABEL: define void @test53( ; CHECK: @objc_ ; CHECK: } define void @test53(void ()** %zz, i8** %pp) { @@ -2249,7 +2249,7 @@ define void @test53(void ()** %zz, i8** %pp) { ; Convert autorelease to release if the value is unused. -; CHECK: define void @test54( +; CHECK-LABEL: define void @test54( ; CHECK: call i8* @returner() ; CHECK-NEXT: call void @objc_release(i8* %t) [[NUW]], !clang.imprecise_release !0 ; CHECK-NEXT: ret void @@ -2262,7 +2262,7 @@ define void @test54() { ; Nested retain+release pairs. Delete them both. -; CHECK: define void @test55( +; CHECK-LABEL: define void @test55( ; CHECK-NOT: @objc ; CHECK: } define void @test55(i8* %x) { @@ -2279,7 +2279,7 @@ entry: ; can be partially eliminated. Plus an extra outer pair to ; eliminate, for fun. -; CHECK: define void @test56( +; CHECK-LABEL: define void @test56( ; CHECK-NOT: @objc ; CHECK: if.then: ; CHECK-NEXT: %0 = tail call i8* @objc_retain(i8* %x) [[NUW]] @@ -2313,7 +2313,7 @@ if.end: ; preds = %entry, %if.then ; known unnecessary because the presence of the second one means that ; the first one won't be deleting the object. -; CHECK: define void @test57( +; CHECK-LABEL: define void @test57( ; CHECK-NEXT: entry: ; CHECK-NEXT: call void @use_pointer(i8* %x) ; CHECK-NEXT: call void @use_pointer(i8* %x) @@ -2339,7 +2339,7 @@ entry: ; An adjacent retain+release pair is sufficient even if it will be ; removed itself. -; CHECK: define void @test58( +; CHECK-LABEL: define void @test58( ; CHECK-NEXT: entry: ; CHECK-NEXT: call void @use_pointer(i8* %x) ; CHECK-NEXT: call void @use_pointer(i8* %x) @@ -2358,7 +2358,7 @@ entry: ; Don't delete the second retain+release pair in an adjacent set. -; CHECK: define void @test59( +; CHECK-LABEL: define void @test59( ; CHECK-NEXT: entry: ; CHECK-NEXT: %0 = tail call i8* @objc_retain(i8* %x) [[NUW]] ; CHECK-NEXT: call void @use_pointer(i8* %x) @@ -2385,7 +2385,7 @@ entry: ; We have a precise lifetime retain/release here. We can not remove them since ; @something is not constant. -; CHECK: define void @test60a( +; CHECK-LABEL: define void @test60a( ; CHECK: call i8* @objc_retain ; CHECK: call void @objc_release ; CHECK: } @@ -2399,7 +2399,7 @@ define void @test60a() { ret void } -; CHECK: define void @test60b( +; CHECK-LABEL: define void @test60b( ; CHECK: call i8* @objc_retain ; CHECK-NOT: call i8* @objc_retain ; CHECK-NOT: call i8* @objc_rrelease @@ -2415,7 +2415,7 @@ define void @test60b() { ret void } -; CHECK: define void @test60c( +; CHECK-LABEL: define void @test60c( ; CHECK-NOT: @objc_ ; CHECK: } define void @test60c() { @@ -2428,7 +2428,7 @@ define void @test60c() { ret void } -; CHECK: define void @test60d( +; CHECK-LABEL: define void @test60d( ; CHECK-NOT: @objc_ ; CHECK: } define void @test60d() { @@ -2441,7 +2441,7 @@ define void @test60d() { ret void } -; CHECK: define void @test60e( +; CHECK-LABEL: define void @test60e( ; CHECK-NOT: @objc_ ; CHECK: } define void @test60e() { @@ -2457,7 +2457,7 @@ define void @test60e() { ; Constant pointers to objects don't need to be considered related to other ; pointers. -; CHECK: define void @test61( +; CHECK-LABEL: define void @test61( ; CHECK-NOT: @objc_ ; CHECK: } define void @test61() { @@ -2472,7 +2472,7 @@ define void @test61() { ; Delete a retain matched by releases when one is inside the loop and the ; other is outside the loop. -; CHECK: define void @test62( +; CHECK-LABEL: define void @test62( ; CHECK-NOT: @objc_ ; CHECK: } define void @test62(i8* %x, i1* %p) nounwind { @@ -2496,7 +2496,7 @@ exit: ; Like test62 but with no release in exit. ; Don't delete anything! -; CHECK: define void @test63( +; CHECK-LABEL: define void @test63( ; CHECK: loop: ; CHECK: tail call i8* @objc_retain(i8* %x) ; CHECK: loop.more: @@ -2522,7 +2522,7 @@ exit: ; Like test62 but with no release in loop.more. ; Don't delete anything! -; CHECK: define void @test64( +; CHECK-LABEL: define void @test64( ; CHECK: loop: ; CHECK: tail call i8* @objc_retain(i8* %x) ; CHECK: exit: @@ -2547,7 +2547,7 @@ exit: ; Move an autorelease past a phi with a null. -; CHECK: define i8* @test65( +; CHECK-LABEL: define i8* @test65( ; CHECK: if.then: ; CHECK: call i8* @objc_autorelease( ; CHECK: return: @@ -2570,7 +2570,7 @@ return: ; preds = %if.then, %entry ; Don't move an autorelease past an autorelease pool boundary. -; CHECK: define i8* @test65b( +; CHECK-LABEL: define i8* @test65b( ; CHECK: if.then: ; CHECK-NOT: @objc_autorelease ; CHECK: return: @@ -2596,7 +2596,7 @@ return: ; preds = %if.then, %entry ; Don't move an autoreleaseReuturnValue, which would break ; the RV optimization. -; CHECK: define i8* @test65c( +; CHECK-LABEL: define i8* @test65c( ; CHECK: if.then: ; CHECK-NOT: @objc_autorelease ; CHECK: return: @@ -2620,7 +2620,7 @@ return: ; preds = %if.then, %entry ; An objc_retain can serve as a may-use for a different pointer. ; rdar://11931823 -; CHECK: define void @test66a( +; CHECK-LABEL: define void @test66a( ; CHECK: tail call i8* @objc_retain(i8* %cond) [[NUW]] ; CHECK: tail call void @objc_release(i8* %call) [[NUW]] ; CHECK: tail call i8* @objc_retain(i8* %tmp8) [[NUW]] @@ -2643,7 +2643,7 @@ cond.end: ; preds = %cond.true, %entry ret void } -; CHECK: define void @test66b( +; CHECK-LABEL: define void @test66b( ; CHECK: tail call i8* @objc_retain(i8* %cond) [[NUW]] ; CHECK: tail call void @objc_release(i8* %call) [[NUW]] ; CHECK: tail call i8* @objc_retain(i8* %tmp8) [[NUW]] @@ -2666,7 +2666,7 @@ cond.end: ; preds = %cond.true, %entry ret void } -; CHECK: define void @test66c( +; CHECK-LABEL: define void @test66c( ; CHECK: tail call i8* @objc_retain(i8* %cond) [[NUW]] ; CHECK: tail call void @objc_release(i8* %call) [[NUW]] ; CHECK: tail call i8* @objc_retain(i8* %tmp8) [[NUW]] @@ -2689,7 +2689,7 @@ cond.end: ; preds = %cond.true, %entry ret void } -; CHECK: define void @test66d( +; CHECK-LABEL: define void @test66d( ; CHECK: tail call i8* @objc_retain(i8* %cond) [[NUW]] ; CHECK: tail call void @objc_release(i8* %call) [[NUW]] ; CHECK: tail call i8* @objc_retain(i8* %tmp8) [[NUW]] @@ -3045,7 +3045,7 @@ declare i32 @objc_sync_exit(i8*) ; Make sure that we understand that objc_sync_{enter,exit} are IC_User not ; IC_Call/IC_CallOrUser. -; CHECK: define void @test67 +; CHECK-LABEL: define void @test67( ; CHECK-NEXT: call i32 @objc_sync_enter(i8* %x) ; CHECK-NEXT: call i32 @objc_sync_exit(i8* %x) ; CHECK-NEXT: ret void diff --git a/test/Transforms/ObjCARC/cfg-hazards.ll b/test/Transforms/ObjCARC/cfg-hazards.ll index 0156d5bfb4..61e5a3b1dc 100644 --- a/test/Transforms/ObjCARC/cfg-hazards.ll +++ b/test/Transforms/ObjCARC/cfg-hazards.ll @@ -10,7 +10,7 @@ declare void @objc_release(i8*) declare void @callee() declare void @block_callee(void ()*) -; CHECK: define void @test0( +; CHECK-LABEL: define void @test0( ; CHECK: call i8* @objc_retain( ; CHECK: for.body: ; CHECK-NOT: @objc @@ -35,7 +35,7 @@ for.end: ; preds = %for.body ret void } -; CHECK: define void @test1( +; CHECK-LABEL: define void @test1( ; CHECK: call i8* @objc_retain( ; CHECK: for.body: ; CHECK-NOT: @objc @@ -60,7 +60,7 @@ for.end: ; preds = %for.body ret void } -; CHECK: define void @test2( +; CHECK-LABEL: define void @test2( ; CHECK: call i8* @objc_retain( ; CHECK: for.body: ; CHECK-NOT: @objc diff --git a/test/Transforms/ObjCARC/contract-storestrong.ll b/test/Transforms/ObjCARC/contract-storestrong.ll index 023604e105..50a2d97566 100644 --- a/test/Transforms/ObjCARC/contract-storestrong.ll +++ b/test/Transforms/ObjCARC/contract-storestrong.ll @@ -8,7 +8,7 @@ declare void @use_pointer(i8*) @x = external global i8* -; CHECK: define void @test0( +; CHECK-LABEL: define void @test0( ; CHECK: entry: ; CHECK-NEXT: tail call void @objc_storeStrong(i8** @x, i8* %p) [[NUW:#[0-9]+]] ; CHECK-NEXT: ret void @@ -137,7 +137,7 @@ entry: ; Like test0, but there's no store, so don't form an objc_storeStrong. -; CHECK: define void @test7( +; CHECK-LABEL: define void @test7( ; CHECK-NEXT: entry: ; CHECK-NEXT: %0 = tail call i8* @objc_retain(i8* %p) [[NUW]] ; CHECK-NEXT: %tmp = load i8** @x, align 8 @@ -154,7 +154,7 @@ entry: ; Like test0, but there's no retain, so don't form an objc_storeStrong. -; CHECK: define void @test8( +; CHECK-LABEL: define void @test8( ; CHECK-NEXT: entry: ; CHECK-NEXT: %tmp = load i8** @x, align 8 ; CHECK-NEXT: store i8* %p, i8** @x, align 8 diff --git a/test/Transforms/ObjCARC/contract-testcases.ll b/test/Transforms/ObjCARC/contract-testcases.ll index fc023f8981..0bf63a6e51 100644 --- a/test/Transforms/ObjCARC/contract-testcases.ll +++ b/test/Transforms/ObjCARC/contract-testcases.ll @@ -18,7 +18,7 @@ declare i32 @__gxx_personality_sj0(...) ; Don't get in trouble on bugpointed code. -; CHECK: define void @test0( +; CHECK-LABEL: define void @test0( define void @test0() { bb: %tmp = bitcast %4* undef to i8* @@ -45,7 +45,7 @@ bb6: ; preds = %bb5, %bb4, %bb4, %b ; When rewriting operands for a phi which has multiple operands ; for the same block, use the exactly same value in each block. -; CHECK: define void @test1( +; CHECK-LABEL: define void @test1( ; CHECK: %0 = bitcast i8* %tmp3 to %0* ; CHECK: br i1 undef, label %bb7, label %bb7 ; CHECK: bb7: diff --git a/test/Transforms/ObjCARC/contract.ll b/test/Transforms/ObjCARC/contract.ll index 3544f88552..2259e17ec5 100644 --- a/test/Transforms/ObjCARC/contract.ll +++ b/test/Transforms/ObjCARC/contract.ll @@ -12,7 +12,7 @@ declare void @use_pointer(i8*) declare i8* @returner() declare void @callee() -; CHECK: define void @test0 +; CHECK-LABEL: define void @test0( ; CHECK: call void @use_pointer(i8* %0) ; CHECK: } define void @test0(i8* %x) nounwind { @@ -22,7 +22,7 @@ entry: ret void } -; CHECK: define void @test1 +; CHECK-LABEL: define void @test1( ; CHECK: call void @use_pointer(i8* %0) ; CHECK: } define void @test1(i8* %x) nounwind { @@ -34,7 +34,7 @@ entry: ; Merge objc_retain and objc_autorelease into objc_retainAutorelease. -; CHECK: define void @test2( +; CHECK-LABEL: define void @test2( ; CHECK: tail call i8* @objc_retainAutorelease(i8* %x) [[NUW:#[0-9]+]] ; CHECK: } define void @test2(i8* %x) nounwind { @@ -47,7 +47,7 @@ entry: ; Same as test2 but the value is returned. Do an RV optimization. -; CHECK: define i8* @test2b( +; CHECK-LABEL: define i8* @test2b( ; CHECK: tail call i8* @objc_retainAutoreleaseReturnValue(i8* %x) [[NUW]] ; CHECK: } define i8* @test2b(i8* %x) nounwind { @@ -59,7 +59,7 @@ entry: ; Merge a retain,autorelease pair around a call. -; CHECK: define void @test3( +; CHECK-LABEL: define void @test3( ; CHECK: tail call i8* @objc_retainAutorelease(i8* %x) [[NUW]] ; CHECK: @use_pointer(i8* %0) ; CHECK: } @@ -74,7 +74,7 @@ entry: ; Trivial retain,autorelease pair with intervening call, but it's post-dominated ; by another release. The retain and autorelease can be merged. -; CHECK: define void @test4( +; CHECK-LABEL: define void @test4( ; CHECK-NEXT: entry: ; CHECK-NEXT: @objc_retainAutorelease(i8* %x) [[NUW]] ; CHECK-NEXT: @use_pointer @@ -92,7 +92,7 @@ entry: ; Don't merge retain and autorelease if they're not control-equivalent. -; CHECK: define void @test5( +; CHECK-LABEL: define void @test5( ; CHECK: tail call i8* @objc_retain(i8* %p) [[NUW]] ; CHECK: true: ; CHECK: call i8* @objc_autorelease(i8* %0) [[NUW]] @@ -119,7 +119,7 @@ false: ; into objc_retainAutoreleasedReturnValueAutoreleaseReturnValue? ; Those entrypoints don't exist yet though. -; CHECK: define i8* @test6( +; CHECK-LABEL: define i8* @test6( ; CHECK: call i8* @objc_retainAutoreleasedReturnValue(i8* %p) [[NUW]] ; CHECK: %t = tail call i8* @objc_autoreleaseReturnValue(i8* %1) [[NUW]] ; CHECK: } @@ -148,7 +148,7 @@ define i8* @test7(i8* %p) { ; Do the return value substitution for PHI nodes too. -; CHECK: define i8* @test8( +; CHECK-LABEL: define i8* @test8( ; CHECK: %retval = phi i8* [ %p, %if.then ], [ null, %entry ] ; CHECK: } define i8* @test8(i1 %x, i8* %c) { @@ -165,7 +165,7 @@ return: ; preds = %if.then, %entry } ; Kill calls to @clang.arc.use(...) -; CHECK: define void @test9( +; CHECK-LABEL: define void @test9( ; CHECK-NOT: clang.arc.use ; CHECK: } define void @test9(i8* %a, i8* %b) { @@ -188,7 +188,7 @@ define void @test10() { ; Convert objc_retain to objc_retainAutoreleasedReturnValue if its ; argument is a return value. -; CHECK: define void @test11( +; CHECK-LABEL: define void @test11( ; CHECK-NEXT: %y = call i8* @returner() ; CHECK-NEXT: tail call i8* @objc_retainAutoreleasedReturnValue(i8* %y) [[NUW]] ; CHECK-NEXT: ret void @@ -201,7 +201,7 @@ define void @test11() { ; Don't convert objc_retain to objc_retainAutoreleasedReturnValue if its ; argument is not a return value. -; CHECK: define void @test12( +; CHECK-LABEL: define void @test12( ; CHECK-NEXT: tail call i8* @objc_retain(i8* %y) [[NUW]] ; CHECK-NEXT: ret void ; CHECK-NEXT: } @@ -213,7 +213,7 @@ define void @test12(i8* %y) { ; Don't Convert objc_retain to objc_retainAutoreleasedReturnValue if it ; isn't next to the call providing its return value. -; CHECK: define void @test13( +; CHECK-LABEL: define void @test13( ; CHECK-NEXT: %y = call i8* @returner() ; CHECK-NEXT: call void @callee() ; CHECK-NEXT: tail call i8* @objc_retain(i8* %y) [[NUW]] diff --git a/test/Transforms/ObjCARC/empty-block.ll b/test/Transforms/ObjCARC/empty-block.ll index ca5541365a..0440ab8f7c 100644 --- a/test/Transforms/ObjCARC/empty-block.ll +++ b/test/Transforms/ObjCARC/empty-block.ll @@ -11,7 +11,7 @@ declare i8* @objc_autoreleaseReturnValue(i8*) ; Don't delete the autorelease. -; CHECK: define %0* @test0( +; CHECK-LABEL: define %0* @test0( ; CHECK: @objc_retain ; CHECK: .lr.ph: ; CHECK-NOT: @objc_r @@ -35,7 +35,7 @@ define %0* @test0(%0* %buffer) nounwind { ; Do delete the autorelease, even with the retain in a different block. -; CHECK: define %0* @test1( +; CHECK-LABEL: define %0* @test1( ; CHECK-NOT: @objc ; CHECK: } define %0* @test1() nounwind { diff --git a/test/Transforms/ObjCARC/escape.ll b/test/Transforms/ObjCARC/escape.ll index 8f252a0d34..28f2e80779 100644 --- a/test/Transforms/ObjCARC/escape.ll +++ b/test/Transforms/ObjCARC/escape.ll @@ -9,7 +9,7 @@ target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f3 ; Don't optimize away the retainBlock, because the object's address "escapes" ; with the objc_storeWeak call. -; CHECK: define void @test0( +; CHECK-LABEL: define void @test0( ; CHECK: %tmp7 = call i8* @objc_retainBlock(i8* %tmp6) [[NUW:#[0-9]+]], !clang.arc.copy_on_escape !0 ; CHECK: call void @objc_release(i8* %tmp7) [[NUW]], !clang.imprecise_release !0 ; CHECK: } @@ -65,7 +65,7 @@ entry: ; Like test0, but it makes a regular call instead of a storeWeak call, ; so the optimization is valid. -; CHECK: define void @test1( +; CHECK-LABEL: define void @test1( ; CHECK-NOT: @objc_retainBlock ; CHECK: } define void @test1() nounwind { diff --git a/test/Transforms/ObjCARC/gvn.ll b/test/Transforms/ObjCARC/gvn.ll index 1c55ee5c8a..2d120e7345 100644 --- a/test/Transforms/ObjCARC/gvn.ll +++ b/test/Transforms/ObjCARC/gvn.ll @@ -26,7 +26,7 @@ entry: ; GVN should not be able to eliminate this redundant load, with ARC-specific ; alias analysis. -; CHECK: define i8* @test1 +; CHECK-LABEL: define i8* @test1( ; CHECK: load ; CHECK: load ; CHECK: ret i8* %t diff --git a/test/Transforms/ObjCARC/intrinsic-use-isolated.ll b/test/Transforms/ObjCARC/intrinsic-use-isolated.ll index 4215b5c364..f5c31fd82e 100644 --- a/test/Transforms/ObjCARC/intrinsic-use-isolated.ll +++ b/test/Transforms/ObjCARC/intrinsic-use-isolated.ll @@ -6,7 +6,7 @@ declare void @clang.arc.use(...) nounwind ; Kill calls to @clang.arc.use(...) -; CHECK: define void @test0( +; CHECK-LABEL: define void @test0( ; CHECK-NOT: clang.arc.use ; CHECK: } define void @test0(i8* %a, i8* %b) { diff --git a/test/Transforms/ObjCARC/intrinsic-use.ll b/test/Transforms/ObjCARC/intrinsic-use.ll index 60370c1f44..f3833cb542 100644 --- a/test/Transforms/ObjCARC/intrinsic-use.ll +++ b/test/Transforms/ObjCARC/intrinsic-use.ll @@ -17,7 +17,7 @@ declare void @test0_helper(i8*, i8**) ; FIXME: the fact that we re-order retains w.r.t. @clang.arc.use could ; be problematic if we get run twice, e.g. under LTO. ; -; CHECK: define void @test0( +; CHECK-LABEL: define void @test0( ; CHECK: @objc_retain(i8* %x) ; CHECK-NEXT: store i8* %y, i8** %temp0 ; CHECK-NEXT: @objc_retain(i8* %y) @@ -65,7 +65,7 @@ entry: ret void } -; CHECK: define void @test0a( +; CHECK-LABEL: define void @test0a( ; CHECK: @objc_retain(i8* %x) ; CHECK-NEXT: store i8* %y, i8** %temp0 ; CHECK-NEXT: @objc_retain(i8* %y) diff --git a/test/Transforms/ObjCARC/invoke.ll b/test/Transforms/ObjCARC/invoke.ll index 9510f2e7dd..04d057b9d4 100644 --- a/test/Transforms/ObjCARC/invoke.ll +++ b/test/Transforms/ObjCARC/invoke.ll @@ -10,7 +10,7 @@ declare i8* @returner() ; ARCOpt shouldn't try to move the releases to the block containing the invoke. -; CHECK: define void @test0( +; CHECK-LABEL: define void @test0( ; CHECK: invoke.cont: ; CHECK: call void @objc_release(i8* %zipFile) [[NUW:#[0-9]+]], !clang.imprecise_release !0 ; CHECK: ret void @@ -38,7 +38,7 @@ lpad: ; preds = %entry ; ARCOpt should move the release before the callee calls. -; CHECK: define void @test1( +; CHECK-LABEL: define void @test1( ; CHECK: invoke.cont: ; CHECK: call void @objc_release(i8* %zipFile) [[NUW]], !clang.imprecise_release !0 ; CHECK: call void @callee() @@ -108,7 +108,7 @@ finally.rethrow: ; preds = %invoke.cont, %entry ; Don't try to place code on invoke critical edges. -; CHECK: define void @test3( +; CHECK-LABEL: define void @test3( ; CHECK: if.end: ; CHECK-NEXT: call void @objc_release(i8* %p) [[NUW]] ; CHECK-NEXT: ret void @@ -139,7 +139,7 @@ if.end: ; Like test3, but with ARC-relevant exception handling. -; CHECK: define void @test4( +; CHECK-LABEL: define void @test4( ; CHECK: lpad: ; CHECK-NEXT: %r = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__objc_personality_v0 to i8*) ; CHECK-NEXT: cleanup @@ -177,7 +177,7 @@ if.end: ; Don't turn the retainAutoreleaseReturnValue into retain, because it's ; for an invoke which we can assume codegen will put immediately prior. -; CHECK: define void @test5( +; CHECK-LABEL: define void @test5( ; CHECK: call i8* @objc_retainAutoreleasedReturnValue(i8* %z) ; CHECK: } define void @test5() { @@ -197,7 +197,7 @@ if.end: ; Like test5, but there's intervening code. -; CHECK: define void @test6( +; CHECK-LABEL: define void @test6( ; CHECK: call i8* @objc_retain(i8* %z) ; CHECK: } define void @test6() { diff --git a/test/Transforms/ObjCARC/nested.ll b/test/Transforms/ObjCARC/nested.ll index ca9c58bcb3..2eeb4fc258 100644 --- a/test/Transforms/ObjCARC/nested.ll +++ b/test/Transforms/ObjCARC/nested.ll @@ -25,7 +25,7 @@ declare void @__crasher_block_invoke1(i8* nocapture) ; Delete a nested retain+release pair. -; CHECK: define void @test0( +; CHECK-LABEL: define void @test0( ; CHECK: call i8* @objc_retain ; CHECK-NOT: @objc_retain ; CHECK: } @@ -89,7 +89,7 @@ forcoll.empty: ; Delete a nested retain+release pair. -; CHECK: define void @test2( +; CHECK-LABEL: define void @test2( ; CHECK: call i8* @objc_retain ; CHECK-NOT: @objc_retain ; CHECK: } @@ -154,7 +154,7 @@ forcoll.empty: ; Delete a nested retain+release pair. -; CHECK: define void @test4( +; CHECK-LABEL: define void @test4( ; CHECK: call i8* @objc_retain ; CHECK-NOT: @objc_retain ; CHECK: } @@ -219,7 +219,7 @@ forcoll.empty: ; Delete a nested retain+release pair. -; CHECK: define void @test5( +; CHECK-LABEL: define void @test5( ; CHECK: call i8* @objc_retain ; CHECK-NOT: @objc_retain ; CHECK: } @@ -287,7 +287,7 @@ forcoll.empty: ; The optimizer currently can't do this, because isn't isn't sophisticated enough in ; reasnoning about nesting. -; CHECK: define void @test6( +; CHECK-LABEL: define void @test6( ; CHECK: call i8* @objc_retain ; CHECK: @objc_retain ; CHECK: } @@ -355,7 +355,7 @@ forcoll.empty: ; The optimizer currently can't do this, because isn't isn't sophisticated enough in ; reasnoning about nesting. -; CHECK: define void @test7( +; CHECK-LABEL: define void @test7( ; CHECK: call i8* @objc_retain ; CHECK: @objc_retain ; CHECK: } @@ -422,7 +422,7 @@ forcoll.empty: ; Delete a nested retain+release pair. -; CHECK: define void @test8( +; CHECK-LABEL: define void @test8( ; CHECK: call i8* @objc_retain ; CHECK-NOT: @objc_retain ; CHECK: } @@ -496,7 +496,7 @@ forcoll.empty: ; The optimizer currently can't do this, because of a split loop backedge. ; See test9b for the same testcase without a split backedge. -; CHECK: define void @test9( +; CHECK-LABEL: define void @test9( ; CHECK: call i8* @objc_retain ; CHECK: call i8* @objc_retain ; CHECK: call i8* @objc_retain @@ -563,7 +563,7 @@ forcoll.empty: ; Like test9, but without a split backedge. TODO: optimize this. -; CHECK: define void @test9b( +; CHECK-LABEL: define void @test9b( ; CHECK: call i8* @objc_retain ; CHECK: call i8* @objc_retain ; CHECK: @objc_retain @@ -629,7 +629,7 @@ forcoll.empty: ; The optimizer currently can't do this, because of a split loop backedge. ; See test10b for the same testcase without a split backedge. -; CHECK: define void @test10( +; CHECK-LABEL: define void @test10( ; CHECK: call i8* @objc_retain ; CHECK: call i8* @objc_retain ; CHECK: call i8* @objc_retain @@ -697,7 +697,7 @@ forcoll.empty: ; Like test10, but without a split backedge. TODO: optimize this. -; CHECK: define void @test10b( +; CHECK-LABEL: define void @test10b( ; CHECK: call i8* @objc_retain ; CHECK: call i8* @objc_retain ; CHECK: @objc_retain @@ -769,7 +769,7 @@ forcoll.empty: @__block_d_tmp = external hidden constant { i64, i64, i8*, i8*, i8*, i8* } @__block_d_tmp5 = external hidden constant { i64, i64, i8*, i8*, i8*, i8* } -; CHECK: define void @test11( +; CHECK-LABEL: define void @test11( ; CHECK: tail call i8* @objc_retain(i8* %call) [[NUW:#[0-9]+]] ; CHECK: tail call i8* @objc_retain(i8* %call) [[NUW]] ; CHECK: call void @objc_release(i8* %call) [[NUW]], !clang.imprecise_release !0 diff --git a/test/Transforms/ObjCARC/no-objc-arc-exceptions.ll b/test/Transforms/ObjCARC/no-objc-arc-exceptions.ll index 58b5bbe9c7..2a56371e26 100644 --- a/test/Transforms/ObjCARC/no-objc-arc-exceptions.ll +++ b/test/Transforms/ObjCARC/no-objc-arc-exceptions.ll @@ -10,7 +10,7 @@ target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f3 ; metadata and eliminate the retainBlock+release pair here. ; rdar://10803830. -; CHECK: define void @test0( +; CHECK-LABEL: define void @test0( ; CHECK-NOT: @objc ; CHECK: } define void @test0() { @@ -63,7 +63,7 @@ lpad: ; preds = %entry ; shouldn't eliminate anything, but *CAN* strength reduce the objc_retainBlock ; to an objc_retain. -; CHECK: define void @test0_no_metadata( +; CHECK-LABEL: define void @test0_no_metadata( ; CHECK: call i8* @objc_retain( ; CHECK: invoke ; CHECK: call void @objc_release( diff --git a/test/Transforms/ObjCARC/pointer-types.ll b/test/Transforms/ObjCARC/pointer-types.ll index 6abc939864..257560d9f7 100644 --- a/test/Transforms/ObjCARC/pointer-types.ll +++ b/test/Transforms/ObjCARC/pointer-types.ll @@ -5,7 +5,7 @@ ; in dubious ways. ; rdar://10551239 -; CHECK: define void @test0( +; CHECK-LABEL: define void @test0( ; CHECK: %otherBlock = phi void ()* [ %b1, %if.then ], [ null, %entry ] ; CHECK-NEXT: call void @use_fptr(void ()* %otherBlock) ; CHECK-NEXT: %tmp11 = bitcast void ()* %otherBlock to i8* diff --git a/test/Transforms/ObjCARC/post-inlining.ll b/test/Transforms/ObjCARC/post-inlining.ll index ad69ccdd79..b2d6112cf4 100644 --- a/test/Transforms/ObjCARC/post-inlining.ll +++ b/test/Transforms/ObjCARC/post-inlining.ll @@ -8,7 +8,7 @@ declare i8* @objc_retainAutoreleasedReturnValue(i8*) ; Clean up residue left behind after inlining. -; CHECK: define void @test0( +; CHECK-LABEL: define void @test0( ; CHECK: entry: ; CHECK-NEXT: ret void ; CHECK-NEXT: } @@ -21,7 +21,7 @@ entry: ; Same as test0, but with slightly different use arrangements. -; CHECK: define void @test1( +; CHECK-LABEL: define void @test1( ; CHECK: entry: ; CHECK-NEXT: ret void ; CHECK-NEXT: } @@ -34,7 +34,7 @@ entry: ; Delete a retainRV+autoreleaseRV even if the pointer is used. -; CHECK: define void @test24( +; CHECK-LABEL: define void @test24( ; CHECK-NEXT: entry: ; CHECK-NEXT: call void @use_pointer(i8* %p) ; CHECK-NEXT: ret void diff --git a/test/Transforms/ObjCARC/retain-block-alloca.ll b/test/Transforms/ObjCARC/retain-block-alloca.ll index f40be238ba..6b1578aea4 100644 --- a/test/Transforms/ObjCARC/retain-block-alloca.ll +++ b/test/Transforms/ObjCARC/retain-block-alloca.ll @@ -8,7 +8,7 @@ @__block_descriptor_tmp = external hidden constant { i64, i64, i8*, i8*, i8*, i8* } @"\01L_OBJC_SELECTOR_REFERENCES_" = external hidden global i8*, section "__DATA, __objc_selrefs, literal_pointers, no_dead_strip" -; CHECK: define void @test( +; CHECK-LABEL: define void @test( ; CHECK: %3 = call i8* @objc_retainBlock(i8* %2) [[NUW:#[0-9]+]] ; CHECK: @objc_msgSend ; CHECK-NEXT: @objc_release(i8* %3) @@ -43,7 +43,7 @@ entry: ; Same as test, but the objc_retainBlock has a clang.arc.copy_on_escape ; tag so it's safe to delete. -; CHECK: define void @test_with_COE( +; CHECK-LABEL: define void @test_with_COE( ; CHECK-NOT: @objc_retainBlock ; CHECK: @objc_msgSend ; CHECK: @objc_release diff --git a/test/Transforms/ObjCARC/retain-block-escape-analysis.ll b/test/Transforms/ObjCARC/retain-block-escape-analysis.ll index 8df05ad226..7914bb837f 100644 --- a/test/Transforms/ObjCARC/retain-block-escape-analysis.ll +++ b/test/Transforms/ObjCARC/retain-block-escape-analysis.ll @@ -20,7 +20,7 @@ declare i8* @objc_retainBlock(i8*) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; define void @bitcasttest(i8* %storage, void (...)* %block) { -; CHECK: define void @bitcasttest +; CHECK-LABEL: define void @bitcasttest( entry: %t1 = bitcast void (...)* %block to i8* ; CHECK: tail call i8* @objc_retain @@ -37,7 +37,7 @@ entry: } define void @bitcasttest_a(i8* %storage, void (...)* %block) { -; CHECK: define void @bitcasttest_a +; CHECK-LABEL: define void @bitcasttest_a( entry: %t1 = bitcast void (...)* %block to i8* ; CHECK-NOT: tail call i8* @objc_retain @@ -54,7 +54,7 @@ entry: } define void @geptest(void (...)** %storage_array, void (...)* %block) { -; CHECK: define void @geptest +; CHECK-LABEL: define void @geptest( entry: %t1 = bitcast void (...)* %block to i8* ; CHECK: tail call i8* @objc_retain @@ -73,7 +73,7 @@ entry: } define void @geptest_a(void (...)** %storage_array, void (...)* %block) { -; CHECK: define void @geptest_a +; CHECK-LABEL: define void @geptest_a( entry: %t1 = bitcast void (...)* %block to i8* ; CHECK-NOT: tail call i8* @objc_retain @@ -93,7 +93,7 @@ entry: define void @selecttest(void (...)** %store1, void (...)** %store2, void (...)* %block) { -; CHECK: define void @selecttest +; CHECK-LABEL: define void @selecttest( entry: %t1 = bitcast void (...)* %block to i8* ; CHECK: tail call i8* @objc_retain @@ -111,7 +111,7 @@ entry: define void @selecttest_a(void (...)** %store1, void (...)** %store2, void (...)* %block) { -; CHECK: define void @selecttest_a +; CHECK-LABEL: define void @selecttest_a( entry: %t1 = bitcast void (...)* %block to i8* ; CHECK-NOT: tail call i8* @objc_retain @@ -130,7 +130,7 @@ entry: define void @phinodetest(void (...)** %storage1, void (...)** %storage2, void (...)* %block) { -; CHECK: define void @phinodetest +; CHECK-LABEL: define void @phinodetest( entry: %t1 = bitcast void (...)* %block to i8* ; CHECK: tail call i8* @objc_retain @@ -160,7 +160,7 @@ end: define void @phinodetest_a(void (...)** %storage1, void (...)** %storage2, void (...)* %block) { -; CHECK: define void @phinodetest_a +; CHECK-LABEL: define void @phinodetest_a( entry: %t1 = bitcast void (...)* %block to i8* ; CHECK-NOT: tail call i8* @objc_retain diff --git a/test/Transforms/ObjCARC/rv.ll b/test/Transforms/ObjCARC/rv.ll index e857c9f41b..85a16127c6 100644 --- a/test/Transforms/ObjCARC/rv.ll +++ b/test/Transforms/ObjCARC/rv.ll @@ -26,7 +26,7 @@ declare i8* @returner() ; retain is an objc_retainAutoreleasedReturnValue, since it's ; better to do the RV optimization. -; CHECK: define void @test0( +; CHECK-LABEL: define void @test0( ; CHECK-NEXT: entry: ; CHECK-NEXT: %x = call i8* @returner ; CHECK-NEXT: %0 = tail call i8* @objc_retainAutoreleasedReturnValue(i8* %x) [[NUW:#[0-9]+]] @@ -54,7 +54,7 @@ return: ; Delete no-ops. -; CHECK: define void @test2 +; CHECK-LABEL: define void @test2( ; CHECK-NOT: @objc_ ; CHECK: } define void @test2() { @@ -67,7 +67,7 @@ define void @test2() { ; Delete a redundant retainRV,autoreleaseRV when forwaring a call result ; directly to a return value. -; CHECK: define i8* @test3 +; CHECK-LABEL: define i8* @test3( ; CHECK: call i8* @returner() ; CHECK-NEXT: ret i8* %call define i8* @test3() { @@ -81,7 +81,7 @@ entry: ; Delete a redundant retain,autoreleaseRV when forwaring a call result ; directly to a return value. -; CHECK: define i8* @test4 +; CHECK-LABEL: define i8* @test4( ; CHECK: call i8* @returner() ; CHECK-NEXT: ret i8* %call define i8* @test4() { @@ -114,7 +114,7 @@ entry: ; into objc_retainAutoreleasedReturnValueAutoreleaseReturnValue? ; Those entrypoints don't exist yet though. -; CHECK: define i8* @test7( +; CHECK-LABEL: define i8* @test7( ; CHECK: call i8* @objc_retainAutoreleasedReturnValue(i8* %p) ; CHECK: %t = tail call i8* @objc_autoreleaseReturnValue(i8* %p) define i8* @test7() { @@ -125,7 +125,7 @@ define i8* @test7() { ret i8* %t } -; CHECK: define i8* @test7b( +; CHECK-LABEL: define i8* @test7b( ; CHECK: call i8* @objc_retain(i8* %p) ; CHECK: %t = tail call i8* @objc_autoreleaseReturnValue(i8* %p) define i8* @test7b() { @@ -188,7 +188,7 @@ define i8* @test12(i8* %p) { ; Don't zap the objc_retainAutoreleasedReturnValue. -; CHECK: define i8* @test13( +; CHECK-LABEL: define i8* @test13( ; CHECK: tail call i8* @objc_retainAutoreleasedReturnValue(i8* %p) ; CHECK: call i8* @objc_autorelease(i8* %p) ; CHECK: ret i8* %p @@ -203,7 +203,7 @@ define i8* @test13() { ; Convert objc_retainAutoreleasedReturnValue to objc_retain if its ; argument is not a return value. -; CHECK: define void @test14( +; CHECK-LABEL: define void @test14( ; CHECK-NEXT: tail call i8* @objc_retain(i8* %p) [[NUW]] ; CHECK-NEXT: ret void define void @test14(i8* %p) { @@ -214,7 +214,7 @@ define void @test14(i8* %p) { ; Don't convert objc_retainAutoreleasedReturnValue to objc_retain if its ; argument is a return value. -; CHECK: define void @test15( +; CHECK-LABEL: define void @test15( ; CHECK-NEXT: %y = call i8* @returner() ; CHECK-NEXT: tail call i8* @objc_retainAutoreleasedReturnValue(i8* %y) [[NUW]] ; CHECK-NEXT: ret void @@ -272,7 +272,7 @@ define i8* @test22(i8* %p) { ; Convert autoreleaseRV to autorelease. -; CHECK: define void @test23( +; CHECK-LABEL: define void @test23( ; CHECK: call i8* @objc_autorelease(i8* %p) [[NUW]] define void @test23(i8* %p) { store i8 0, i8* %p @@ -283,7 +283,7 @@ define void @test23(i8* %p) { ; Don't convert autoreleaseRV to autorelease if the result is returned, ; even through a bitcast. -; CHECK: define {}* @test24( +; CHECK-LABEL: define {}* @test24( ; CHECK: tail call i8* @objc_autoreleaseReturnValue(i8* %p) define {}* @test24(i8* %p) { %t = call i8* @objc_autoreleaseReturnValue(i8* %p) diff --git a/test/Transforms/ObjCARC/split-backedge.ll b/test/Transforms/ObjCARC/split-backedge.ll index 5ac278a45d..1b7cf441a6 100644 --- a/test/Transforms/ObjCARC/split-backedge.ll +++ b/test/Transforms/ObjCARC/split-backedge.ll @@ -3,7 +3,7 @@ ; Handle a retain+release pair entirely contained within a split loop backedge. ; rdar://11256239 -; CHECK: define void @test0 +; CHECK-LABEL: define void @test0( ; CHECK: call i8* @objc_retain(i8* %call) [[NUW:#[0-9]+]] ; CHECK: call i8* @objc_retain(i8* %call) [[NUW]] ; CHECK: call i8* @objc_retain(i8* %cond) [[NUW]] diff --git a/test/Transforms/ObjCARC/weak.ll b/test/Transforms/ObjCARC/weak.ll index 85a290c098..119aa82578 100644 --- a/test/Transforms/ObjCARC/weak.ll +++ b/test/Transforms/ObjCARC/weak.ll @@ -10,7 +10,7 @@ declare void @objc_copyWeak(i8**, i8**) ; If the pointer-to-weak-pointer is null, it's undefined behavior. -; CHECK: define void @test0( +; CHECK-LABEL: define void @test0( ; CHECK: store i8* undef, i8** null ; CHECK: store i8* undef, i8** null ; CHECK: store i8* undef, i8** null |