Call to scGeneralizeExts
in crucible_llvm_verify
is a performance bottleneck
#626
Labels
performance
Issues that involve or include performance problems
subsystem: crucible-jvm
Issues related to Java verification with crucible-jvm
subsystem: crucible-llvm
Issues related to LLVM bitcode verification with crucible-llvm
Profiling shows that on some proof goals (some of the s2n proofs in particular), the following call to
scGeneralizeExts
takes up a significant portion of the total runtime ofcrucible_llvm_verify
:saw-script/src/SAWScript/Crucible/LLVM/Builtins.hs
Line 403 in faf2dee
There is also similar call to
scGeneralizeExts
incrucible_jvm_verify
:saw-script/src/SAWScript/Crucible/JVM/Builtins.hs
Line 276 in faf2dee
The purpose of
scGeneralizeExts
is simply to convert external constants into local variables, which the saw backends were initially designed to handle. Instead of doing this possibly-expensive pre-processing step, we should just make sure that the various saw-core simulator backends can handle external constants in the same way that they handle local variables.The text was updated successfully, but these errors were encountered: