reference, declarationdefinition
definition → references, declarations, derived classes, virtual overrides
reference to multiple definitions → definitions
unreferenced
    1
    2
    3
    4
    5
    6
    7
    8
    9
   10
   11
   12
   13
   14
   15
   16
   17
   18
   19
   20
   21
   22
   23
   24
   25
   26
   27
   28
   29
   30
   31
   32
   33
   34
   35
   36
   37
   38
   39
   40
   41
   42
   43
   44
   45
   46
   47
   48
   49
   50
   51
   52
   53
   54
   55
   56
   57
   58
   59
   60
   61
   62
   63
   64
   65
   66
   67
   68
   69
   70
   71
   72
   73
   74
   75
   76
   77
   78
   79
   80
   81
   82
   83
   84
   85
   86
   87
   88
   89
   90
   91
   92
   93
   94
   95
   96
   97
   98
   99
  100
  101
  102
  103
  104
  105
  106
  107
  108
  109
  110
  111
  112
  113
  114
  115
  116
  117
  118
  119
  120
  121
  122
  123
  124
  125
  126
  127
  128
  129
  130
  131
; 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 }