[PATCH] D16890: Fix PR25339: ARM Constant Island
Weiming Zhao via llvm-commits
llvm-commits at lists.llvm.org
Wed Mar 16 18:13:06 PDT 2016
weimingz added a comment.
Hi,
There are cases where LLVM is able to detect some UB but clang is not.
For example,
unsigned int foo(unsigned int x) {
int ret = 0;
for(int i = 0; i <= 32; ++i)
ret += x >> i;
return ret;
}
When the loop is unrolled, LLVM InstructionSimplify will catch it and
return a UNDEF value.
How can we let LLVM report some warning message to help developers
correct the error?
Or should we use similar behavior as GCC (e.g. x >> 32 returns 0)?
This can also saves compiler engineer's effort: users complain that it's
a compiler bug because their code works with GCC or older version of
LLVM (because the loop is not unrolled). And it's really hard to debug
such UB in some large code base.
Thanks,
Weiming
Repository:
rL LLVM
http://reviews.llvm.org/D16890
More information about the llvm-commits
mailing list