1*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=x86 >/dev/null 2*9880d681SAndroid Build Coastguard Worker; PR4699 3*9880d681SAndroid Build Coastguard Worker 4*9880d681SAndroid Build Coastguard Worker; Handle this extractvalue-of-extractvalue case without getting in 5*9880d681SAndroid Build Coastguard Worker; trouble with CSE in DAGCombine. 6*9880d681SAndroid Build Coastguard Worker 7*9880d681SAndroid Build Coastguard Worker %cc = type { %crd } 8*9880d681SAndroid Build Coastguard Worker %cr = type { i32 } 9*9880d681SAndroid Build Coastguard Worker %crd = type { i64, %cr* } 10*9880d681SAndroid Build Coastguard Worker %pp = type { %cc } 11*9880d681SAndroid Build Coastguard Worker 12*9880d681SAndroid Build Coastguard Workerdefine fastcc void @foo(%pp* nocapture byval %p_arg) { 13*9880d681SAndroid Build Coastguard Workerentry: 14*9880d681SAndroid Build Coastguard Worker %tmp2 = getelementptr %pp, %pp* %p_arg, i64 0, i32 0 ; <%cc*> [#uses= 15*9880d681SAndroid Build Coastguard Worker %tmp3 = load %cc, %cc* %tmp2 ; <%cc> [#uses=1] 16*9880d681SAndroid Build Coastguard Worker %tmp34 = extractvalue %cc %tmp3, 0 ; <%crd> [#uses=1] 17*9880d681SAndroid Build Coastguard Worker %tmp345 = extractvalue %crd %tmp34, 0 ; <i64> [#uses=1] 18*9880d681SAndroid Build Coastguard Worker %.ptr.i = load %cr*, %cr** undef ; <%cr*> [#uses=0] 19*9880d681SAndroid Build Coastguard Worker %tmp15.i = shl i64 %tmp345, 3 ; <i64> [#uses=0] 20*9880d681SAndroid Build Coastguard Worker store %cr* undef, %cr** undef 21*9880d681SAndroid Build Coastguard Worker ret void 22*9880d681SAndroid Build Coastguard Worker} 23*9880d681SAndroid Build Coastguard Worker 24*9880d681SAndroid Build Coastguard Worker 25