blob: 55f57367495a4a961e6d62e498ad012b5127b396 [file] [edit]
; This test checks that after SelectionDAG runs, DAGCombiner can combine a
; load and a zext instruction without crashing in tryToFoldExtOfLoad(),
; even when the folded load result is still used along the truncate
; replacement path.
; RUN: llc -O3 -mtriple=x86_64-unknown-linux-gnu -filetype=null < %s
@ak = external global i16
@s = external global i16
define i32 @main() {
entry:
%0 = load i16, ptr @ak, align 2
%1 = load volatile i16, ptr @s, align 2
%2 = load i16, ptr @ak, align 2
%3 = xor i16 %2, -1
%conv4211404 = zext i16 %3 to i64
%xor422 = xor i64 1, %conv4211404
%conv3591399 = zext i16 %0 to i64
%or424 = or i64 %xor422, %conv3591399
%conv333 = sext i16 %0 to i32
%conv434 = zext i16 %2 to i32
%4 = trunc i64 %or424 to i32
%or436 = or i32 %conv434, %4
%conv453 = xor i32 %conv333, %or436
ret i32 %conv453
}