Test source: git
Source: <stdin>
-- 1. RequireAnalysisPass<ProfileSummaryAnalysis, Module> : Skipping NOP
ERROR: Unsupported instruction: %guard = load atomic i8, ptr @guard acquire, align 8
-- 2. RequireAnalysisPass<ProfileSummaryAnalysis, Module> : Skipping NOP
ERROR: Unsupported instruction: %guard = load atomic i8, ptr @guard acquire, align 8
-- 3. ModuleToFunctionPassAdaptor
ERROR: Unsupported instruction: %guard = load atomic i8, ptr @guard acquire, align 8
----------------------------------------
@g_getS = global 1 bytes, align 1
@g_getX = global 4 bytes, align 1
define ptr @getS_or_getX(i1 %cond) {
entry:
%result = select i1 %cond, ptr @g_getS, ptr @g_getX
ret ptr %result
}
Transformation seems to be correct! (syntactically equal)
----------------------------------------
@g_getS = global 1 bytes, align 1
define ptr @getS_weak_function() {
entry:
ret ptr @g_getS
}
Transformation seems to be correct! (syntactically equal)
----------------------------------------
@g_getS = global 1 bytes, align 1
define ptr @getS_linkonce_odr_function() {
entry:
ret ptr @g_getS
}
Transformation seems to be correct! (syntactically equal)
----------------------------------------
declare ptr @getS()
declare i32 @S_getI(ptr)
@g_getS = global 1 bytes, align 1
define i32 @caller_1() {
#0:
%getS_ptr = call ptr @getS()
%getI = call i32 @S_getI(ptr @g_getS)
ret i32 %getI
}
Transformation seems to be correct! (syntactically equal)
----------------------------------------
declare ptr @getS()
declare i32 @S_getI(ptr)
define i32 @caller_2() {
entry:
%getS_ptr = call ptr @getS()
br label %use
use:
%getI = call i32 @S_getI(ptr %getS_ptr)
ret i32 %getI
}
Transformation seems to be correct! (syntactically equal)
----------------------------------------
declare i32 @S_getI(ptr)
declare ptr @getS()
@g_getS = global 1 bytes, align 1
define i32 @caller_3() {
entry:
%getI = call i32 @S_getI(ptr @g_getS)
%getS_ptr = call ptr @getS()
ret i32 %getI
}
Transformation seems to be correct! (syntactically equal)
----------------------------------------
declare ptr @getS_or_getX(i1)
declare i32 @S_getI(ptr)
@g_getS = global 1 bytes, align 1
define i32 @caller_4(i1 %cond) {
#0:
%getS_or_getX_ptr = call ptr @getS_or_getX(i1 %cond)
%getI = call i32 @S_getI(ptr @g_getS)
ret i32 %getI
}
Transformation seems to be correct! (syntactically equal)
----------------------------------------
declare ptr @getS_weak_function()
declare i32 @S_getI(ptr)
@g_getS = global 1 bytes, align 1
define i32 @caller_5() {
#0:
%getS_ptr = call ptr @getS_weak_function()
%getI = call i32 @S_getI(ptr @g_getS)
ret i32 %getI
}
Transformation seems to be correct! (syntactically equal)
----------------------------------------
declare ptr @getS_dec()
declare i32 @S_getI(ptr)
@g_getS = global 1 bytes, align 1
define i32 @caller_6() {
#0:
%getS_ptr = call ptr @getS_dec()
%getI = call i32 @S_getI(ptr @g_getS)
ret i32 %getI
}
Transformation seems to be correct! (syntactically equal)
----------------------------------------
declare ptr @getS_dllimport_function()
declare i32 @S_getI(ptr)
@g_getS = global 1 bytes, align 1
define i32 @caller_7() {
#0:
%getS_ptr = call ptr @getS_dllimport_function()
%getI = call i32 @S_getI(ptr @g_getS)
ret i32 %getI
}
Transformation seems to be correct! (syntactically equal)
----------------------------------------
declare ptr @getS_linkonce_odr_function()
declare i32 @S_getI(ptr)
@g_getS = global 1 bytes, align 1
define i32 @caller_8() {
#0:
%getS_ptr = call ptr @getS_linkonce_odr_function()
%getI = call i32 @S_getI(ptr @g_getS)
ret i32 %getI
}
Transformation seems to be correct! (syntactically equal)
-- 1. PassManager<Function> : Skipping NOP
ERROR: Unsupported instruction: %guard = load atomic i8, ptr @guard acquire, align 8
-- 2. CodeGenPreparePass
ERROR: Unsupported instruction: %guard = load atomic i8, ptr @guard acquire, align 8
-- 3. CodeGenPreparePass
ERROR: Unsupported instruction: %guard = load atomic i8, ptr @guard acquire, align 8
-- 4. PassManager<Function> : Skipping NOP
ERROR: Unsupported instruction: %guard = load atomic i8, ptr @guard acquire, align 8
-- 5. PassManager<Function> : Skipping NOP
-- 6. CodeGenPreparePass
----------------------------------------
@g_getS = global 1 bytes, align 1
@g_getX = global 4 bytes, align 1
define ptr @getS_or_getX(i1 %cond) {
entry:
%result = select i1 %cond, ptr @g_getS, ptr @g_getX
ret ptr %result
}
Transformation seems to be correct! (syntactically equal)
-- 7. CodeGenPreparePass
----------------------------------------
@g_getS = global 1 bytes, align 1
@g_getX = global 4 bytes, align 1
define ptr @getS_or_getX(i1 %cond) {
entry:
%result = select i1 %cond, ptr @g_getS, ptr @g_getX
ret ptr %result
}
Transformation seems to be correct! (syntactically equal)
-- 8. PassManager<Function> : Skipping NOP
-- 9. PassManager<Function> : Skipping NOP
-- 10. CodeGenPreparePass
----------------------------------------
@g_getS = global 1 bytes, align 1
define ptr @getS_weak_function() {
entry:
ret ptr @g_getS
}
Transformation seems to be correct! (syntactically equal)
-- 11. CodeGenPreparePass
----------------------------------------
@g_getS = global 1 bytes, align 1
define ptr @getS_weak_function() {
entry:
ret ptr @g_getS
}
Transformation seems to be correct! (syntactically equal)
-- 12. PassManager<Function> : Skipping NOP
-- 13. PassManager<Function> : Skipping NOP
-- 14. CodeGenPreparePass
----------------------------------------
@g_getS = global 1 bytes, align 1
define ptr @getS_linkonce_odr_function() {
entry:
ret ptr @g_getS
}
Transformation seems to be correct! (syntactically equal)
-- 15. CodeGenPreparePass
----------------------------------------
@g_getS = global 1 bytes, align 1
define ptr @getS_linkonce_odr_function() {
entry:
ret ptr @g_getS
}
Transformation seems to be correct! (syntactically equal)
-- 16. PassManager<Function> : Skipping NOP
-- 17. PassManager<Function> : Skipping NOP
-- 18. CodeGenPreparePass
----------------------------------------
declare ptr @getS()
declare i32 @S_getI(ptr)
@g_getS = global 1 bytes, align 1
define i32 @caller_1() {
#0:
%getS_ptr = call ptr @getS()
%getI = call i32 @S_getI(ptr @g_getS)
ret i32 %getI
}
Transformation seems to be correct! (syntactically equal)
-- 19. CodeGenPreparePass
----------------------------------------
declare ptr @getS()
declare i32 @S_getI(ptr)
@g_getS = global 1 bytes, align 1
define i32 @caller_1() {
#0:
%getS_ptr = call ptr @getS()
%getI = call i32 @S_getI(ptr @g_getS)
ret i32 %getI
}
=>
declare ptr @getS()
declare i32 @S_getI(ptr)
@g_getS = global 1 bytes, align 1
define i32 @caller_1() {
#0:
%getS_ptr = call ptr @getS()
%getI = call i32 @S_getI(ptr %getS_ptr)
ret i32 %getI
}
Transformation doesn't verify! (unsound)
ERROR: Source is more defined than target
Example:
Source:
ptr %getS_ptr = null
i32 %getI = function did not return!
SOURCE MEMORY STATE
===================
NON-LOCAL BLOCKS:
Block 0 > size: 0 align: 1 alloc type: 0 alive: false address: 0
Block 1 > size: 1 align: 1 alloc type: 0 alive: true address: 14
Contents:
poison
Block 2 > size: 1 align: 65536 alloc type: 0 alive: true address: 12
Block 3 > size: 3 align: 524288 alloc type: 0 alive: true address: 8
Target:
ptr %getS_ptr = null
i32 %getI = function did not return!
Pass: CodeGenPreparePass
Command line: '/home/nlopes/llvm/build/bin/opt' '-load=/home/nlopes/alive2/build/tv/tv.so' '-load-pass-plugin=/home/nlopes/alive2/build/tv/tv.so' '-tv-exit-on-error' '-S' '-passes=require<profile-summary>,function(codegenprepare)' '-mtriple=aarch64-none-linux-gnu' '-tv-smt-to=20000' '-tv-report-dir=/home/nlopes/alive2/build/logs' '-tv-smt-stats'
Wrote bitcode to: "/home/nlopes/alive2/build/logs/in_xSmwOEnM_cGjf.bc"
------------------- SMT STATS -------------------
Num queries: 16
Num invalid: 0
Num skips: 0
Num trivial: 2 (11.1%)
Num timeout: 0 (0.0%)
Num errors: 0 (0.0%)
Num SAT: 12 (75.0%)
Num UNSAT: 4 (25.0%)
Alive2: Transform doesn't verify; aborting!
RUN: at line 2: /home/nlopes/alive2/build/opt-alive.sh -S -passes='require<profile-summary>,function(codegenprepare)' -mtriple=aarch64-none-linux-gnu < /bitbucket/nlopes/llvm/llvm/test/Transforms/CodeGenPrepare/revert-constant-ptr-propagation-on-calls.ll | /bitbucket/nlopes/llvm/build/bin/FileCheck /bitbucket/nlopes/llvm/llvm/test/Transforms/CodeGenPrepare/revert-constant-ptr-propagation-on-calls.ll + /home/nlopes/alive2/build/opt-alive.sh -S '-passes=require<profile-summary>,function(codegenprepare)' -mtriple=aarch64-none-linux-gnu + /bitbucket/nlopes/llvm/build/bin/FileCheck /bitbucket/nlopes/llvm/llvm/test/Transforms/CodeGenPrepare/revert-constant-ptr-propagation-on-calls.ll FileCheck error: '<stdin>' is empty. FileCheck command line: /bitbucket/nlopes/llvm/build/bin/FileCheck /bitbucket/nlopes/llvm/llvm/test/Transforms/CodeGenPrepare/revert-constant-ptr-propagation-on-calls.ll