| ; RUN: opt %loadNPMPolly -polly-process-unprofitable -passes=polly-codegen -S < %s | FileCheck %s |
| ; |
| ; llvm.org/PR25412 |
| ; %synthgep caused %gep to be synthesized in subregion_if which was reused for |
| ; %retval in subregion_exit, even though it is not dominating subregion_exit. |
| ; |
| ; CHECK-LABEL: polly.stmt.polly.merge_new_and_old.exit: |
| ; CHECK: %scevgep[[R1:[0-9]*]] = getelementptr i8, ptr %arg, i64 16 |
| ; CHECK: store ptr %scevgep[[R1]], ptr %gep.s2a |
| ; CHECK: br label |
| |
| %struct.hoge = type { double, double, double } |
| |
| define double @func(ptr %arg) { |
| entry: |
| br label %subregion_entry |
| |
| subregion_entry: |
| %gep = getelementptr inbounds %struct.hoge, ptr %arg, i64 0, i32 2 |
| %cond = fcmp ogt double undef, undef |
| br i1 %cond, label %subregion_if, label %subregion_exit |
| |
| subregion_if: |
| %synthgep = load double, ptr %gep |
| br label %subregion_exit |
| |
| subregion_exit: |
| %retval = load double, ptr %gep |
| ret double %retval |
| } |