Test source: git
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%)
+ : '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