; RUN: llc < %s

;; GetMemInstArgs() folded the two getElementPtr instructions together,
;; producing an illegal getElementPtr.  That's because the type generated
;; by the last index for the first one is a structure field, not an array
;; element, and the second one indexes off that structure field.
;; The code is legal but not type-safe and the two GEPs should not be folded.
;; 
;; This code fragment is from Spec/CINT2000/197.parser/197.parser.bc,
;; file post_process.c, function build_domain().
;; (Modified to replace store with load and return load value.)
;; 
        %Domain = type { i8*, i32, i32*, i32, i32, i32*, %Domain* }
@domain_array = external global [497 x %Domain]         ; <[497 x %Domain]*> [#uses=2]

declare void @opaque([497 x %Domain]*)

define i32 @main(i32 %argc, i8** %argv) {
bb0:
        call void @opaque( [497 x %Domain]* @domain_array )
        %cann-indvar-idxcast = sext i32 %argc to i64            ; <i64> [#uses=1]
        %reg841 = getelementptr [497 x %Domain], [497 x %Domain]* @domain_array, i64 0, i64 %cann-indvar-idxcast, i32 3          ; <i32*> [#uses=1]
        %reg846 = getelementptr i32, i32* %reg841, i64 1             ; <i32*> [#uses=1]
        %reg820 = load i32, i32* %reg846             ; <i32> [#uses=1]
        ret i32 %reg820
}

