; 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 }