d86eb687e982b127c382f5ca3e9d40e8eb3379cc
[oota-llvm.git] / test / CodeGen / X86 / 2009-01-09-SchedDupBug.ll
1 ; RUN: llvm-as < %s | llc -march=x86 -mattr=+sse2
2 ; rdar://6481994
3
4         %Value = type { i32 (...)** }
5
6 declare { i32, i1 } @llvm.sadd.with.overflow.i32(i32, i32) nounwind
7
8 define %Value* @bar(%Value** %exception) nounwind {
9 prologue:
10         br i1 true, label %NextVerify41, label %FailedVerify
11
12 NextVerify41:           ; preds = %prologue
13         br i1 true, label %NextVerify, label %FailedVerify
14
15 NextVerify:             ; preds = %NextVerify41
16         br i1 false, label %label12, label %label
17
18 label:          ; preds = %NextVerify
19         br i1 true, label %xxNumberLiteral.exit, label %handle_exception
20
21 xxNumberLiteral.exit:           ; preds = %label
22         %0 = call { i32, i1 } @llvm.sadd.with.overflow.i32(i32 0, i32 0)                ; <{ i32, i1 }> [#uses=2]
23         %intAdd = extractvalue { i32, i1 } %0, 0                ; <i32> [#uses=1]
24         %intAddOverflow = extractvalue { i32, i1 } %0, 1                ; <i1> [#uses=1]
25         %toint55 = ashr i32 %intAdd, 1          ; <i32> [#uses=1]
26         %toFP56 = sitofp i32 %toint55 to double         ; <double> [#uses=1]
27         br i1 %intAddOverflow, label %exit, label %label12
28
29 label12:                ; preds = %xxNumberLiteral.exit, %NextVerify
30         %var_lr1.0 = phi double [ %toFP56, %xxNumberLiteral.exit ], [ 0.000000e+00, %NextVerify ]               ; <double> [#uses=0]
31         unreachable
32
33 exit:           ; preds = %xxNumberLiteral.exit
34         ret %Value* null
35
36 FailedVerify:           ; preds = %NextVerify41, %prologue
37         ret %Value* null
38
39 handle_exception:               ; preds = %label
40         ret %Value* undef
41 }