1; Checks that case when GEP is bound to trivial PHI node is correctly handled. 2; RUN: opt %s -mtriple=aarch64-linux-gnu -codegenprepare -S -o - | FileCheck %s 3 4; CHECK: define void @crash([65536 x i32]** %s, i32 %n) { 5; CHECK-NEXT: entry: 6; CHECK-NEXT: %struct = load [65536 x i32]*, [65536 x i32]** %s 7; CHECK-NEXT: %gep0 = getelementptr [65536 x i32], [65536 x i32]* %struct, i64 0, i32 20000 8; CHECK-NEXT: store i32 %n, i32* %gep0 9; CHECK-NEXT: ret void 10; CHECK-NEXT: } 11 12define void @crash([65536 x i32]** %s, i32 %n) { 13entry: 14 %struct = load [65536 x i32]*, [65536 x i32]** %s 15 %cmp = icmp slt i32 0, %n 16 br i1 %cmp, label %baz, label %bar 17baz: 18 br label %bar 19 20foo: 21 %gep0 = getelementptr [65536 x i32], [65536 x i32]* %phi2, i64 0, i32 20000 22 br label %st 23 24st: 25 store i32 %n, i32* %gep0 26 br label %out 27 28bar: 29 %phi2 = phi [65536 x i32]* [ %struct, %baz ], [ %struct, %entry ] 30 br label %foo 31out: 32 ret void 33} 34