mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-10-22 20:43:44 +02:00
6acf8c9125
on the DragonEgg self-host bot. Unfortunately, the testcase is pretty messy and doesn't reduce well due to interactions with other parts of InstCombine. llvm-svn: 122072
28 lines
655 B
LLVM
28 lines
655 B
LLVM
; RUN: opt -S -instcombine < %s | FileCheck %s
|
|
; <rdar://problem/8558713>
|
|
|
|
; CHECK: @test1
|
|
define i32 @test1(i32 %a, i32 %b) nounwind ssp {
|
|
entry:
|
|
; CHECK-NOT: sext
|
|
%conv = sext i32 %a to i64
|
|
%conv2 = sext i32 %b to i64
|
|
%add = add nsw i64 %conv2, %conv
|
|
%add.off = add i64 %add, 2147483648
|
|
; CHECK: llvm.sadd.with.overflow
|
|
%0 = icmp ugt i64 %add.off, 4294967295
|
|
br i1 %0, label %if.then, label %if.end
|
|
|
|
if.then:
|
|
%call = tail call i32 (...)* @throwAnExceptionOrWhatever() nounwind
|
|
br label %if.end
|
|
|
|
if.end:
|
|
; CHECK-NOT: trunc
|
|
%conv9 = trunc i64 %add to i32
|
|
; CHECK: ret i32
|
|
ret i32 %conv9
|
|
}
|
|
|
|
declare i32 @throwAnExceptionOrWhatever(...)
|