1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py 2; RUN: opt -S -passes=instcombine < %s | FileCheck %s 3 4@g = global [16 x i16] zeroinitializer 5 6define ptr @gep_constexpr_gv_1() { 7; CHECK-LABEL: @gep_constexpr_gv_1( 8; CHECK-NEXT: ret ptr getelementptr inbounds nuw (i8, ptr @g, i64 20) 9; 10 ret ptr getelementptr([16 x i16], ptr @g, i64 0, i64 10) 11} 12 13define ptr @gep_constexpr_gv_2() { 14; CHECK-LABEL: @gep_constexpr_gv_2( 15; CHECK-NEXT: ret ptr getelementptr inbounds nuw (i8, ptr @g, i64 24) 16; 17 ret ptr getelementptr(i32, ptr getelementptr([16 x i16], ptr @g, i64 0, i64 10), i64 1) 18} 19 20; Silly expression to get an inttoptr that does not combine with the GEP. 21define ptr @gep_constexpr_inttoptr() { 22; CHECK-LABEL: @gep_constexpr_inttoptr( 23; CHECK-NEXT: ret ptr getelementptr (i8, ptr inttoptr (i64 mul (i64 ptrtoint (ptr @g to i64), i64 2) to ptr), i64 20) 24; 25 ret ptr getelementptr([16 x i16], ptr inttoptr (i64 mul (i64 ptrtoint (ptr @g to i64), i64 2) to ptr), i64 0, i64 10) 26} 27