| ; RUN: opt -S -codegenprepare -mtriple=thumbv7m -disable-complex-addr-modes=false -addr-sink-new-select=true < %s | FileCheck %s |
| |
| target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64" |
| |
| ; Select between two geps with different base, same constant offset |
| define void @test_select_twogep_base(i32* %ptr1, i32* %ptr2, i32 %value) { |
| ; CHECK-LABEL: @test_select_twogep_base |
| ; CHECK-NOT: select i1 %cmp, i32* %gep1, i32* %gep2 |
| ; CHECK: select i1 %cmp, i32* %ptr1, i32* %ptr2 |
| entry: |
| %cmp = icmp sgt i32 %value, 0 |
| %gep1 = getelementptr inbounds i32, i32* %ptr1, i32 1 |
| %gep2 = getelementptr inbounds i32, i32* %ptr2, i32 1 |
| %select = select i1 %cmp, i32* %gep1, i32* %gep2 |
| store i32 %value, i32* %select, align 4 |
| ret void |
| } |
| |