diff options
author | Dimitry Andric <dim@FreeBSD.org> | 2016-07-23 20:41:05 +0000 |
---|---|---|
committer | Dimitry Andric <dim@FreeBSD.org> | 2016-07-23 20:41:05 +0000 |
commit | 01095a5d43bbfde13731688ddcf6048ebb8b7721 (patch) | |
tree | 4def12e759965de927d963ac65840d663ef9d1ea /test/CodeGen/Hexagon/rdf-reset-kills.ll | |
parent | f0f4822ed4b66e3579e92a89f368f8fb860e218e (diff) |
Vendor import of llvm release_39 branch r276489:vendor/llvm/llvm-release_39-r276489
Diffstat (limited to 'test/CodeGen/Hexagon/rdf-reset-kills.ll')
-rw-r--r-- | test/CodeGen/Hexagon/rdf-reset-kills.ll | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/test/CodeGen/Hexagon/rdf-reset-kills.ll b/test/CodeGen/Hexagon/rdf-reset-kills.ll new file mode 100644 index 000000000000..37db8c5f64e6 --- /dev/null +++ b/test/CodeGen/Hexagon/rdf-reset-kills.ll @@ -0,0 +1,28 @@ +; RUN: llc -march=hexagon < %s +; REQUIRES: asserts + +; This test used to crash in register scavenger due to incorrectly set +; kill flags. + +target triple = "hexagon" + +define void @foo(i64 %a) #0 { +entry: + %conv.i = and i64 %a, 9218868437227405312 + %cmp = icmp ne i64 %conv.i, 9218868437227405312 + %and.i37 = and i64 %a, 4503599627370495 + %tobool = icmp eq i64 %and.i37, 0 + %or.cond = or i1 %cmp, %tobool + br i1 %or.cond, label %lor.lhs.false, label %if.then + +lor.lhs.false: ; preds = %entry + br i1 undef, label %return, label %if.then + +if.then: ; preds = %lor.lhs.false, %entry + br label %return + +return: ; preds = %if.then, %lor.lhs.false + ret void +} + +attributes #0 = { norecurse nounwind } |