blob: 887a0d05264f5491b5ad18b904199ed51559718e [file] [log] [blame]
; 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
}