In recent years, language mechanisms to suspend, or delay, the executi
on of goals until certain variables become bound have become increasin
gly popular in logic programming languages. While convenient, such mec
hanisms can make control flow within a program difficult to predict at
compile time, and therefore render many traditional compiler optimiza
tions inapplicable. Unfortunately, this performance cost is also incur
red by programs that do not use any delay primitives: In this paper, w
e describe a simple dataflow analysis for detecting computations where
suspension effects can be ignored, and discuss several low-level opti
mizations that rely on this information. Our algorithm has been implem
ented in the je system. Optimizations based on information it produces
result in significant performance improvements, demonstrating speed c
omparable to or exceeding that of optimized C programs.