diff --git a/llvm/test/Bitcode/callbr.ll b/llvm/test/Bitcode/callbr.ll index f35f2190c1fe..d7f413e26867 100644 --- a/llvm/test/Bitcode/callbr.ll +++ b/llvm/test/Bitcode/callbr.ll @@ -15,3 +15,31 @@ normal: fail: ret i32 0 } + +define i32 @test_asm_goto2(i32 %x){ +entry: +; CHECK-TYPED: callbr void asm "", "r,i,i"(i32 %x, i8* blockaddress(@test_asm_goto2, %fail), i8* blockaddress(@test_asm_goto2, %fail2)) +; CHECK-OPAQUE: callbr void asm "", "r,i,i"(i32 %x, ptr blockaddress(@test_asm_goto2, %fail), ptr blockaddress(@test_asm_goto2, %fail2)) +; CHECK-NEXT: to label %normal [label %fail, label %fail2] + callbr void asm "", "r,i,i"(i32 %x, i8* blockaddress(@test_asm_goto2, %fail), i8* blockaddress(@test_asm_goto2, %fail2)) to label %normal [label %fail, label %fail2] +normal: + ret i32 1 +fail: + ret i32 0 +fail2: + ret i32 2 +} + +define i32 @test_asm_goto3(i32 %x){ +entry: +; CHECK-TYPED: callbr void asm "", "r,i,i"(i32 %x, i8* blockaddress(@test_asm_goto3, %unrelated), i8* blockaddress(@test_asm_goto3, %fail)) +; CHECK-OPAQUE: callbr void asm "", "r,i,i"(i32 %x, ptr blockaddress(@test_asm_goto3, %unrelated), ptr blockaddress(@test_asm_goto3, %fail)) +; CHECK-NEXT: to label %normal [label %fail] + callbr void asm "", "r,i,i"(i32 %x, i8* blockaddress(@test_asm_goto3, %unrelated), i8* blockaddress(@test_asm_goto3, %fail)) to label %normal [label %fail] +normal: + ret i32 1 +fail: + ret i32 0 +unrelated: + ret i32 2 +} diff --git a/llvm/test/Bitcode/callbr.ll.bc b/llvm/test/Bitcode/callbr.ll.bc index 8827de6a1577..bc611b192509 100644 Binary files a/llvm/test/Bitcode/callbr.ll.bc and b/llvm/test/Bitcode/callbr.ll.bc differ