1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-21 03:53:04 +02:00
llvm-mirror/test/CodeGen/X86/extract-extract.ll
Dan Gohman f64bbe9328 Fix a bug in the DAGCombiner's handling of multiple linked
MERGE_VALUES nodes. Replacing the result values with the
operands in one MERGE_VALUES node may cause another
MERGE_VALUES node be CSE'd with the first one, and bring
its uses along, so that the first one isn't dead, as this
code expects. Fix this by iterating until the node is
really dead. This fixes PR4699.

llvm-svn: 78619
2009-08-10 23:43:19 +00:00

25 lines
819 B
LLVM

; RUN: llvm-as < %s | llc -march=x86 >/dev/null
; PR4699
; Handle this extractvalue-of-extractvalue case without getting in
; trouble with CSE in DAGCombine.
%cc = type { %crd }
%cr = type { i32 }
%crd = type { i64, %cr* }
%pp = type { %cc }
define fastcc void @foo(%pp* nocapture byval %p_arg) {
entry:
%tmp2 = getelementptr %pp* %p_arg, i64 0, i32 0 ; <%cc*> [#uses=
%tmp3 = load %cc* %tmp2 ; <%cc> [#uses=1]
%tmp34 = extractvalue %cc %tmp3, 0 ; <%crd> [#uses=1]
%tmp345 = extractvalue %crd %tmp34, 0 ; <i64> [#uses=1]
%.ptr.i = load %cr** undef ; <%cr*> [#uses=0]
%tmp15.i = shl i64 %tmp345, 3 ; <i64> [#uses=0]
store %cr* undef, %cr** undef
ret void
}