Test Failure: Transforms/GVN/pr42605.ll

Test source: git

Log:

Source: /home/nlopes/llvm/llvm/test/Transforms/GVN/pr42605.ll

----------------------------------------
@global = global 4 bytes, align 4

define nowrite nofree i32 @_Z3gooi(i32 %i) {
%entry:
  %t0 = load i32, * @global, align 4
  %add = add nsw i32 %t0, %i
  ret i32 %add
}
=>
@global = global 4 bytes, align 4

define nowrite nofree i32 @_Z3gooi(i32 %i) {
%entry:
  %t0 = load i32, * @global, align 4
  %add = add nsw i32 %t0, %i
  ret i32 %add
}
Transformation doesn't verify!
ERROR: Timeout


----------------------------------------
@.str = constant 8 bytes, align 1

define void @noclobber() {
#init:
  br label %entry

%entry:
  %call = call i32 @_Z3gooi(i32 2) nowrite nofree
  %add = add nsw i32 %call, 5
  %cmp = icmp sgt i32 %add, 2
  br i1 %cmp, label %if.then, label %if.end

%if.then:
  %call1 = call i32 @_Z3gooi(i32 3) nowrite nofree
  %add2 = add nsw i32 %call1, 5
  br label %if.end

%if.end:
  %i.0 = phi i32 [ 3, %if.then ], [ 2, %entry ]
  %global2.0 = phi i32 [ %add2, %if.then ], [ %add, %entry ]
  %call3 = call i32 @_Z3gooi(i32 %i.0) nowrite nofree
  %add4 = add nsw i32 %call3, 5
  %__constexpr_0 = gep inbounds * @.str, 8 x i64 0, 1 x i64 0
  %call5 = call i32 @printf(nocapture * %__constexpr_0, i32 %global2.0, i32 %add4)
  ret void
}
=>
@.str = constant 8 bytes, align 1

define void @noclobber() {
#init:
  br label %entry

%entry:
  %call = call i32 @_Z3gooi(i32 2) nowrite nofree
  %add = add nsw i32 %call, 5
  %cmp = icmp sgt i32 %add, 2
  br i1 %cmp, label %if.then, label %if.end

%if.then:
  %call1 = call i32 @_Z3gooi(i32 3) nowrite nofree
  %add2 = add nsw i32 %call1, 5
  br label %if.end

%if.end:
  %add4.pre-phi = phi i32 [ %add2, %if.then ], [ %add, %entry ]
  %i.0 = phi i32 [ 3, %if.then ], [ 2, %entry ]
  %global2.0 = phi i32 [ %add2, %if.then ], [ %add, %entry ]
  %call3 = call i32 @_Z3gooi(i32 %i.0) nowrite nofree
  %__constexpr_0 = gep inbounds * @.str, 8 x i64 0, 1 x i64 0
  %call5 = call i32 @printf(nocapture * %__constexpr_0, i32 %global2.0, i32 %add4.pre-phi)
  ret void
}
Transformation doesn't verify!
ERROR: Source is more defined than target

Example:

Source:
i32 %call = #xc47ffffb (3296722939, -998244357)
i32 %add = #xc4800000 (3296722944, -998244352)
i1 %cmp = #x0 (0)
i32 %call1 = poison
i32 %add2 = poison
i32 %i.0 = #x00000002 (2)
i32 %global2.0 = #xc4800000 (3296722944, -998244352)
i32 %call3 = #x80000000 (2147483648, -2147483648)
i32 %add4 = #x80000005 (2147483653, -2147483643)
* %__constexpr_0 = pointer(non-local, block_id=1, offset=0)
i32 %call5 = poison

SOURCE MEMORY STATE
===================
NON-LOCAL BLOCKS:
Block 0 >	size: 0	align: 1	alloc type: 0
Block 1 >	size: 8	align: 1	alloc type: 0
Block 2 >	size: 0	align: 4	alloc type: 0

Target:
i32 %call = #x80000000 (2147483648, -2147483648)
i32 %add = #x80000005 (2147483653, -2147483643)
i1 %cmp = #x0 (0)
i32 %call1 = poison
i32 %add2 = poison
i32 %add4.pre-phi = #x80000005 (2147483653, -2147483643)
i32 %i.0 = #x00000002 (2)
i32 %global2.0 = #x80000005 (2147483653, -2147483643)
i32 %call3 = poison
* %__constexpr_0 = pointer(non-local, block_id=1, offset=0)
i32 %call5 = poison



------------------- SMT STATS -------------------
Num queries: 5
Num invalid: 0
Num skips:   0
Num trivial: 2 (28.6%)
Num timeout: 1 (20.0%)
Num errors:  0 (0.0%)
Num SAT:     4 (80.0%)
Num UNSAT:   0 (0.0%)

stderr:

+ : 'RUN: at line 1'
+ /home/nlopes/alive2/scripts/opt-alive.sh -gvn /home/nlopes/llvm/llvm/test/Transforms/GVN/pr42605.ll -S
+ /home/nlopes/llvm/build/bin/FileCheck /home/nlopes/llvm/llvm/test/Transforms/GVN/pr42605.ll

Alive2: Transform doesn't verify; aborting!
FileCheck error: '<stdin>' is empty.
FileCheck command line:  /home/nlopes/llvm/build/bin/FileCheck /home/nlopes/llvm/llvm/test/Transforms/GVN/pr42605.ll

 

<-- Back