[PATCH] D29404: [ValueTracking] emit a warning when we detect a conflicting assumption (PR31809)
Eli Friedman via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Thu Feb 2 10:42:35 PST 2017
efriedma added a comment.
> When we hit this case, we're headed for disaster: either we have a bug in LLVM or the program has UB.
"the program has UB" is a bit ambiguous. It's possible the "llvm.assume" call is dynamically unreachable, and therefore the undefined behavior doesn't matter. The dynamically unreachable codepath might not even exist in the original source code; for example, loop unswitching could duplicate a loop, and then one of "llvm.assume" calls becomes unreachable due to a correlated condition. This is one of the reasons LLVM doesn't emit warnings when the optimizer discovers code with undefined behavior.
More information about the llvm-commits