1 ; RUN: opt %loadPolly %defaultOpts -polly-codegen -enable-polly-vector -dce -S %s | FileCheck %s
2 ; Obtained from C source as:
3 ; clang -S -emit-llvm -O0 O3-pr49087.c
4 ; opt -correlated-propagation -mem2reg -instcombine -loop-simplify -indvars -instnamer O3-pr49087.s > O3-pr49087.ll
6 ; ModuleID = 'O3-pr49087.s'
7 target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"
8 target triple = "x86_64-unknown-linux-gnu"
10 %struct.S0 = type { i32 }
12 @g = common global i32 0, align 4
13 @s0 = common global %struct.S0 zeroinitializer, align 4
15 define i32 @foo(i32 %arg) nounwind uwtable {
19 for.cond: ; preds = %for.inc20, %entry
20 %tmp = phi i32 [ 0, %entry ], [ %add22, %for.inc20 ]
21 %cmp = icmp slt i32 %tmp, 10
22 br i1 %cmp, label %for.body, label %for.end23.loopexit
24 for.body: ; preds = %for.cond
27 for.cond1: ; preds = %for.inc17, %for.body
28 %tmp1 = phi i32 [ 0, %for.body ], [ %add, %for.inc17 ]
29 %cmp3 = icmp slt i32 %tmp1, 1
30 br i1 %cmp3, label %for.body4, label %for.end19
32 for.body4: ; preds = %for.cond1
33 %tobool = icmp eq i32 %arg, 0
34 br i1 %tobool, label %if.end, label %if.then
36 if.then: ; preds = %for.body4
39 for.cond8: ; preds = %if.then
40 %cmp10 = icmp slt i32 %arg, 10
41 br i1 %cmp10, label %for.body11, label %for.end
43 for.body11: ; preds = %for.cond8
46 for.inc: ; No predecessors!
49 for.end: ; preds = %for.cond8
52 if.end: ; preds = %for.body4, %for.end
53 %call13 = call signext i8 @func2()
54 %conv14 = sext i8 %call13 to i32
55 %tmp15 = load i32* getelementptr inbounds (%struct.S0* @s0, i64 0, i32 0), align 4
56 %xor = xor i32 %conv14, %tmp15
57 store i32 %xor, i32* @g, align 4
60 for.inc17: ; preds = %if.end
61 %add = add nsw i32 %tmp1, 1
64 for.end19: ; preds = %for.cond1
67 for.inc20: ; preds = %for.end19
68 %add22 = add nsw i32 %tmp, 1
71 for.end23.loopexit: ; preds = %for.cond
74 for.end23: ; preds = %for.end23.loopexit, %for.body11
78 define internal signext i8 @func2() nounwind uwtable {