| ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 6 |
| ; RUN: opt < %s -passes=licm -verify-memoryssa -S | FileCheck %s |
| |
| declare i1 @b() |
| |
| define i32 @a(i32 %x) nounwind { |
| ; CHECK-LABEL: define i32 @a( |
| ; CHECK-SAME: i32 [[X:%.*]]) #[[ATTR0:[0-9]+]] { |
| ; CHECK-NEXT: [[FOR_BODY_PREHEADER:.*:]] |
| ; CHECK-NEXT: br label %[[FOR_BODY:.*]] |
| ; CHECK: [[FOR_BODY]]: |
| ; CHECK-NEXT: [[CMP:%.*]] = call i1 @b() |
| ; CHECK-NEXT: br i1 [[CMP]], label %[[FOR_BODY]], label %[[FOR_END_LOOPEXIT:.*]] |
| ; CHECK: [[FOR_END_LOOPEXIT]]: |
| ; CHECK-NEXT: [[Y:%.*]] = sdiv i32 10, [[X]] |
| ; CHECK-NEXT: ret i32 [[Y]] |
| ; |
| for.body.preheader: |
| %y = sdiv i32 10, %x |
| br label %for.body |
| |
| for.body: |
| %cmp = call i1 @b() |
| br i1 %cmp, label %for.body, label %for.end.loopexit |
| |
| for.end.loopexit: |
| ret i32 %y |
| } |