Add support to ADCE for pruning unreachable blocks. This addresses the final
[oota-llvm.git] / test / Transforms / ADCE / 2008-07-02-Unreachable.ll
1 ; RUN: llvm-as < %s | opt -adce -simplifycfg | llvm-dis | not grep forcond
2 ; PR2509
3
4 target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:128:128"
5 target triple = "i686-apple-darwin9.3.0"
6 @g_3 = external global i8               ; <i8*> [#uses=2]
7
8 define i32 @func_1() nounwind  {
9 entry:
10         br i1 false, label %ifelse, label %ifthen
11
12 ifthen:         ; preds = %entry
13         br label %ifend
14
15 ifelse:         ; preds = %entry
16         %tmp3 = load i8* @g_3           ; <i8> [#uses=0]
17         br label %forcond.thread
18
19 forcond.thread:         ; preds = %ifelse
20         br label %afterfor
21
22 forcond:                ; preds = %forinc
23         br i1 false, label %afterfor, label %forbody
24
25 forbody:                ; preds = %forcond
26         br label %forinc
27
28 forinc:         ; preds = %forbody
29         br label %forcond
30
31 afterfor:               ; preds = %forcond, %forcond.thread
32         %tmp10 = load i8* @g_3          ; <i8> [#uses=0]
33         br label %ifend
34
35 ifend:          ; preds = %afterfor, %ifthen
36         ret i32 0
37 }