Disable the clang/llvm optimizer for a method that triggers wrong codegen.
authorLubomir Litchev <lubol@microsoft.com>
Fri, 18 Sep 2015 17:58:12 +0000 (10:58 -0700)
committerLubomir Litchev <lubol@microsoft.com>
Fri, 18 Sep 2015 18:05:32 +0000 (11:05 -0700)
commit93a90d45e66eefe916295f2812a3c6437b0806b3
treead8c5fc3c1c4367fbe9bdb313659715e90a4ed2d
parent8ff8514192ff83a1625f009bb5783a3ee675e072
Disable the clang/llvm optimizer for a method that triggers wrong codegen.

There is a bug in the clang-3.5 optimizer. The issue is that in release
build the optimizer is mistyping (or just wrongly decides to use 32 bit
operation for a corner case of MIN_LONG) the args of the (ltemp / lval2)
to int (it does a 32 bit div operation instead of 64 bit.)
For the case of lval1 and lval2 equal to MIN_LONG (0x8000000000000000)
this results in raising a SIGFPE.
src/jit/compiler.h
src/jit/gentree.cpp