llvm-6502/test/CodeGen/X86/pr14562.ll
Paul Redmond 5c97450df7 PR14562 - Truncation of left shift became undef
DAGCombiner::ReduceLoadWidth was converting (trunc i32 (shl i64 v, 32))
into (shl i32 v, 32) into undef. To prevent this, check the shift count
against the final result size.

Patch by: Kevin Schoedel
Reviewed by: Nadav Rotem


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174972 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-12 15:21:21 +00:00

16 lines
331 B
LLVM

; RUN: llc < %s -march=x86 | FileCheck %s
@temp1 = global i64 -77129852189294865, align 8
define void @foo() nounwind {
%x = load i64* @temp1, align 8
%s = shl i64 %x, 32
%t = trunc i64 %s to i32
%z = zext i32 %t to i64
store i64 %z, i64* @temp1, align 8
; CHECK: movl $0, temp1+4
; CHECK: movl $0, temp1
ret void
}