1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py 2; RUN: opt -passes=globalopt -S %s | FileCheck %s 3 4%struct.global.20ptr = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr } 5 6@global.20ptr = internal unnamed_addr global %struct.global.20ptr zeroinitializer 7 8declare i32 @fn0() 9 10declare i32 @fn1() 11 12define void @stores_single_use_gep_constexpr() { 13; CHECK-LABEL: @stores_single_use_gep_constexpr( 14; CHECK-NEXT: entry: 15; CHECK-NEXT: store ptr @fn0, ptr @global.20ptr, align 8 16; CHECK-NEXT: store ptr @fn1, ptr getelementptr inbounds ([[STRUCT_GLOBAL_20PTR:%.*]], ptr @global.20ptr, i64 0, i32 1), align 8 17; CHECK-NEXT: ret void 18; 19entry: 20 store ptr @fn0, ptr @global.20ptr, align 8 21 store ptr @fn1, ptr getelementptr inbounds (%struct.global.20ptr, ptr @global.20ptr, i64 0, i32 1), align 8 22 ret void 23} 24 25define void @stores_ptrtoint_constexpr() { 26; CHECK-LABEL: @stores_ptrtoint_constexpr( 27; CHECK-NEXT: entry: 28; CHECK-NEXT: store i32 0, ptr inttoptr (i64 add (i64 ptrtoint (ptr @global.20ptr to i64), i64 200) to ptr), align 8 29; CHECK-NEXT: ret void 30; 31entry: 32 store i32 0, ptr inttoptr (i64 add (i64 ptrtoint (ptr @global.20ptr to i64), i64 200) to ptr), align 8 33 ret void 34} 35