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