| ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 5 |
| ; RUN: opt -S -passes="function(print<memoryssa>),cgscc(function-attrs),function(loop-mssa(licm))" < %s 2>/dev/null | FileCheck %s |
| |
| @g = external global i16 |
| |
| define i16 @fn() { |
| ; CHECK-LABEL: define i16 @fn( |
| ; CHECK-SAME: ) #[[ATTR0:[0-9]+]] { |
| ; CHECK-NEXT: [[V:%.*]] = load i16, ptr @g, align 2 |
| ; CHECK-NEXT: ret i16 [[V]] |
| ; |
| %v = load i16, ptr @g |
| ret i16 %v |
| } |
| |
| declare void @fn2(i16) |
| |
| define void @test() { |
| ; CHECK-LABEL: define void @test() { |
| ; CHECK-NEXT: [[ENTRY:.*:]] |
| ; CHECK-NEXT: br label %[[LOOP:.*]] |
| ; CHECK: [[LOOP]]: |
| ; CHECK-NEXT: [[CALL:%.*]] = call i16 @fn(i32 0) |
| ; CHECK-NEXT: call void @fn2(i16 [[CALL]]) |
| ; CHECK-NEXT: br i1 false, label %[[LOOP]], label %[[EXIT:.*]] |
| ; CHECK: [[EXIT]]: |
| ; CHECK-NEXT: ret void |
| ; |
| entry: |
| br label %loop |
| |
| loop: |
| %call = call i16 @fn(i32 0) ; intentional signature mismatch |
| call void @fn2(i16 %call) |
| br i1 false, label %loop, label %exit |
| |
| exit: |
| ret void |
| } |