14796b4aeSNikita Popov; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --check-globals 2edb2fc6dSNikita Popov; RUN: opt -S -passes=globalopt < %s | FileCheck %s 34796b4aeSNikita Popov 44796b4aeSNikita Popov; Global SRA should not be performed here (or at least not naively), as 54796b4aeSNikita Popov; offset 4 is accessed as both i32 and i64. 64796b4aeSNikita Popov 74796b4aeSNikita Popov%T = type { i32, i32, i32, i32 } 84796b4aeSNikita Popov@g = internal global %T zeroinitializer 94796b4aeSNikita Popov 104796b4aeSNikita Popov;. 11*d10b7655SNikita Popov; CHECK: @g = internal unnamed_addr global %T zeroinitializer 124796b4aeSNikita Popov;. 134796b4aeSNikita Popovdefine void @test1() { 144796b4aeSNikita Popov; CHECK-LABEL: @test1( 15*d10b7655SNikita Popov; CHECK-NEXT: store i32 1, ptr getelementptr ([[T:%.*]], ptr @g, i64 0, i32 1), align 4 16*d10b7655SNikita Popov; CHECK-NEXT: store i32 2, ptr getelementptr ([[T]], ptr @g, i64 0, i32 2), align 4 174796b4aeSNikita Popov; CHECK-NEXT: ret void 184796b4aeSNikita Popov; 194796b4aeSNikita Popov store i32 1, ptr getelementptr (%T, ptr @g, i64 0, i32 1) 204796b4aeSNikita Popov store i32 2, ptr getelementptr (%T, ptr @g, i64 0, i32 2) 214796b4aeSNikita Popov ret void 224796b4aeSNikita Popov} 234796b4aeSNikita Popov 244796b4aeSNikita Popovdefine i32 @load1() { 254796b4aeSNikita Popov; CHECK-LABEL: @load1( 26*d10b7655SNikita Popov; CHECK-NEXT: [[V:%.*]] = load i32, ptr getelementptr ([[T:%.*]], ptr @g, i64 0, i32 1), align 4 274796b4aeSNikita Popov; CHECK-NEXT: ret i32 [[V]] 284796b4aeSNikita Popov; 294796b4aeSNikita Popov %v = load i32, ptr getelementptr (%T, ptr @g, i64 0, i32 1) 304796b4aeSNikita Popov ret i32 %v 314796b4aeSNikita Popov} 324796b4aeSNikita Popov 334796b4aeSNikita Popovdefine i64 @load2() { 344796b4aeSNikita Popov; CHECK-LABEL: @load2( 35*d10b7655SNikita Popov; CHECK-NEXT: [[V:%.*]] = load i64, ptr getelementptr ([[T:%.*]], ptr @g, i64 0, i32 2), align 4 364796b4aeSNikita Popov; CHECK-NEXT: ret i64 [[V]] 374796b4aeSNikita Popov; 384796b4aeSNikita Popov %v = load i64, ptr getelementptr (%T, ptr @g, i64 0, i32 2) 394796b4aeSNikita Popov ret i64 %v 404796b4aeSNikita Popov} 41