132 lines
3.5 KiB
LLVM
132 lines
3.5 KiB
LLVM
|
; RUN: opt -S -memoryssa %s | FileCheck %s
|
||
|
; REQUIRES: asserts
|
||
|
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
|
||
|
target triple = "x86_64-unknown-linux-gnu"
|
||
|
|
||
|
; CHECK-LABEL: @func()
|
||
|
; Function Attrs: noinline
|
||
|
define dso_local void @func() unnamed_addr #0 align 2 {
|
||
|
entry:
|
||
|
%NoFinalize.addr = alloca i8, align 1
|
||
|
call void @blah()
|
||
|
call void @blah()
|
||
|
call void @blah()
|
||
|
call void @blah()
|
||
|
call void @blah()
|
||
|
call void @blah()
|
||
|
%call8 = call zeroext i1 @foo()
|
||
|
br i1 %call8, label %if.then9, label %while.cond
|
||
|
|
||
|
if.then9: ; preds = %entry
|
||
|
call void @blah()
|
||
|
call void @blah()
|
||
|
call void @blah()
|
||
|
call void @blah()
|
||
|
call void @blah()
|
||
|
call void @blah()
|
||
|
call void @blah()
|
||
|
br label %while.cond
|
||
|
|
||
|
while.cond: ; preds = %cleanup, %if.then9, %entry
|
||
|
%call34 = call zeroext i1 @foo()
|
||
|
call void @blah()
|
||
|
br i1 %call34, label %while.body, label %while.end
|
||
|
|
||
|
while.body: ; preds = %while.cond
|
||
|
%call35 = call zeroext i1 @foo()
|
||
|
br i1 %call35, label %if.end37, label %if.then36
|
||
|
|
||
|
if.then36: ; preds = %while.body
|
||
|
store i32 2, i32* undef, align 4
|
||
|
br label %cleanup
|
||
|
|
||
|
if.end37: ; preds = %while.body
|
||
|
%call38 = call zeroext i1 @foo()
|
||
|
br i1 %call38, label %if.end46, label %land.lhs.true
|
||
|
|
||
|
land.lhs.true: ; preds = %if.end37
|
||
|
call void @blah()
|
||
|
%call41 = call zeroext i1 @foo()
|
||
|
br i1 %call41, label %if.then42, label %if.end46
|
||
|
|
||
|
if.then42: ; preds = %land.lhs.true
|
||
|
call void @blah()
|
||
|
br label %if.end46
|
||
|
|
||
|
if.end46: ; preds = %if.then42, %land.lhs.true, %if.end37
|
||
|
call void @blah()
|
||
|
call void @blah()
|
||
|
call void @blah()
|
||
|
call void @blah()
|
||
|
br label %cleanup
|
||
|
|
||
|
cleanup: ; preds = %if.end46, %if.then36
|
||
|
call void @blah()
|
||
|
br label %while.cond
|
||
|
|
||
|
while.end: ; preds = %while.cond
|
||
|
call void @blah()
|
||
|
call void @blah()
|
||
|
call void @blah()
|
||
|
call void @blah()
|
||
|
call void @blah()
|
||
|
call void @blah()
|
||
|
call void @blah()
|
||
|
call void @blah()
|
||
|
call void @blah()
|
||
|
call void @blah()
|
||
|
call void @blah()
|
||
|
call void @blah()
|
||
|
call void @blah()
|
||
|
call void @blah()
|
||
|
call void @blah()
|
||
|
%call93 = call zeroext i1 @foo()
|
||
|
br i1 %call93, label %if.end120, label %if.then94
|
||
|
|
||
|
if.then94: ; preds = %while.end
|
||
|
store i32 0, i32* undef, align 4
|
||
|
call void @blah()
|
||
|
call void @blah()
|
||
|
call void @blah()
|
||
|
call void @blah()
|
||
|
call void @blah()
|
||
|
call void @blah()
|
||
|
call void @blah()
|
||
|
call void @blah()
|
||
|
call void @blah()
|
||
|
br label %for.cond
|
||
|
|
||
|
for.cond: ; preds = %for.body, %if.then94
|
||
|
br i1 undef, label %for.body, label %if.end120
|
||
|
|
||
|
for.body: ; preds = %for.cond
|
||
|
call void @blah()
|
||
|
call void @blah()
|
||
|
call void @blah()
|
||
|
call void @blah()
|
||
|
call void @blah()
|
||
|
call void @blah()
|
||
|
call void @blah()
|
||
|
call void @blah()
|
||
|
call void @blah()
|
||
|
call void @blah()
|
||
|
call void @blah()
|
||
|
call void @blah()
|
||
|
call void @blah()
|
||
|
call void @blah()
|
||
|
br label %for.cond
|
||
|
|
||
|
if.end120: ; preds = %for.cond, %while.end
|
||
|
%val = load i8, i8* %NoFinalize.addr, align 1
|
||
|
ret void
|
||
|
}
|
||
|
|
||
|
; Function Attrs: noinline
|
||
|
declare hidden void @blah() unnamed_addr #0 align 2
|
||
|
|
||
|
; Function Attrs: noinline
|
||
|
declare hidden i1 @foo() local_unnamed_addr #0 align 2
|
||
|
|
||
|
attributes #0 = { noinline }
|
||
|
|