diff options
| author | Vedant Kumar <vsk@apple.com> | 2015-09-08 22:33:23 +0000 | 
|---|---|---|
| committer | Vedant Kumar <vsk@apple.com> | 2015-09-08 22:33:23 +0000 | 
| commit | 9ebd49a4cf69c651e27444f04f486b353c28f23a (patch) | |
| tree | 97a4b4fc8d0ca92aa0cdf98f7d96dd68176d36ec /llvm | |
| parent | ee6110cd39eed65e55dd822002a41091f67bfc5a (diff) | |
| download | bcm5719-llvm-9ebd49a4cf69c651e27444f04f486b353c28f23a.tar.gz bcm5719-llvm-9ebd49a4cf69c651e27444f04f486b353c28f23a.zip  | |
[Bitcode] Add compatibility tests for new instructions
Adds basic compatibility tests for the following instructions:
  catchpad, catchendpad, cleanuppad, cleanupendpad, terminatepad,
  cleanupret, catchret
llvm-svn: 247087
Diffstat (limited to 'llvm')
| -rw-r--r-- | llvm/test/Bitcode/compatibility.ll | 100 | 
1 files changed, 97 insertions, 3 deletions
diff --git a/llvm/test/Bitcode/compatibility.ll b/llvm/test/Bitcode/compatibility.ll index 302b6c4a17e..2dd6bc10963 100644 --- a/llvm/test/Bitcode/compatibility.ll +++ b/llvm/test/Bitcode/compatibility.ll @@ -700,6 +700,9 @@ define void @typesystem() {    ret void  } +declare void @llvm.token(token) +; CHECK: declare void @llvm.token(token) +  ;; Inline Assembler Expressions  define void @inlineasm(i32 %arg) {    call i32 asm "bswap $0", "=r,r"(i32 %arg) @@ -760,6 +763,100 @@ exc:    ret void  } +define i32 @instructions.win_eh.1() personality i32 -3 { +entry: +  %arg1 = alloca i32 +  %arg2 = alloca i32 +  invoke void @f.ccc() to label %normal unwind label %catchpad1 +  invoke void @f.ccc() to label %normal unwind label %catchpad2 +  invoke void @f.ccc() to label %normal unwind label %catchpad3 + +catchpad1: +  catchpad [] to label %normal unwind label %exn.1 +  ; CHECK: catchpad [] to label %normal unwind label %exn.1 + +catchpad2: +  catchpad [i32* %arg1] to label %normal unwind label %exn.2 +  ; CHECK: catchpad [i32* %arg1] to label %normal unwind label %exn.2 + +catchpad3: +  catchpad [i32* %arg1, i32* %arg2] to label %normal unwind label %exn.3 +  ; CHECK: catchpad [i32* %arg1, i32* %arg2] to label %normal unwind label %exn.3 + +exn.1: +  catchendpad unwind label %terminate.1 +  ; CHECK: catchendpad unwind label %terminate.1 + +exn.2: +  catchendpad unwind to caller +  ; CHECK: catchendpad unwind to caller + +exn.3: +  catchendpad unwind label %cleanuppad1 +  ; CHECK: catchendpad unwind label %cleanuppad1 + +cleanuppad1: +  %clean.1 = cleanuppad [] +  ; CHECK: %clean.1 = cleanuppad [] +  invoke void @f.ccc() to label %normal unwind label %cleanupendpad1 + +cleanupendpad1: +  cleanupendpad %clean.1 unwind label %terminate.2 +  ; CHECK: cleanupendpad %clean.1 unwind label %terminate.2 + +terminate.1: +  terminatepad [] unwind to caller +  ; CHECK: terminatepad [] unwind to caller + +terminate.2: +  terminatepad [i32* %arg1] unwind label %normal.pre +  ; CHECK: terminatepad [i32* %arg1] unwind label %normal.pre + +normal.pre: +  terminatepad [i32* %arg1, i32* %arg2] unwind to caller +  ; CHECK: terminatepad [i32* %arg1, i32* %arg2] unwind to caller + +normal: +  ret i32 0 +} + +define i32 @instructions.win_eh.2() personality i32 -4 { +entry: +  invoke void @f.ccc() to label %invoke.cont unwind label %catchpad + +invoke.cont: +  invoke void @f.ccc() to label %continue unwind label %cleanup + +cleanup: +  %clean = cleanuppad [] +  ; CHECK: %clean = cleanuppad [] +  cleanupret %clean unwind to caller +  ; CHECK: cleanupret %clean unwind to caller + +catchpad: +  %catch = catchpad [] to label %body unwind label %catchend +  ; CHECK: %catch = catchpad [] to label %body unwind label %catchend + +body: +  invoke void @f.ccc() to label %continue unwind label %catchend +  catchret %catch to label %return +  ; CHECK: catchret %catch to label %return + +return: +  ret i32 0 + +catchend: +  catchendpad unwind label %terminate +  ; CHECK: catchendpad unwind label %terminate + +terminate: +  terminatepad [] unwind to caller +  ; CHECK: terminatepad [] unwind to caller + +continue: +  ret i32 0 +} +  ; Instructions -- Binary Operations  define void @instructions.binops(i8 %op1, i8 %op2) {    ; nuw x nsw @@ -1212,9 +1309,6 @@ define void @misc.metadata() {    ret void  } -declare void @llvm.tokenfoo(token) -; CHECK: declare void @llvm.tokenfoo(token) -  ; CHECK: attributes #0 = { alignstack=4 }  ; CHECK: attributes #1 = { alignstack=8 }  ; CHECK: attributes #2 = { alwaysinline }  | 

