[LLVMbugs] [Bug 15364] New: LTO miscompiles some code?
bugzilla-daemon at llvm.org
bugzilla-daemon at llvm.org
Tue Feb 26 10:10:29 PST 2013
http://llvm.org/bugs/show_bug.cgi?id=15364
Bug ID: 15364
Summary: LTO miscompiles some code?
Product: new-bugs
Version: 3.2
Hardware: All
OS: All
Status: NEW
Severity: enhancement
Priority: P
Component: new bugs
Assignee: unassignedbugs at nondot.org
Reporter: bruce.mitchener at gmail.com
CC: llvmbugs at cs.uiuc.edu
Classification: Unclassified
Created attachment 10081
--> http://llvm.org/bugs/attachment.cgi?id=10081&action=edit
Demonstration of error
I'm working on emscripten and am updating the version of libcxx that is used in
emscripten to the current version. I thought it would be a good idea to run
the libcxx test cases against emscripten and found what appears to be a bug in
LLVM.
I've attached a fairly minimal test case for the bug and it goes into an
infinite loop when compiled with emscripten.
According to Alon Zakai (lead on emscripten):
Looks like LLVM LTO is breaking this. It works with -O1 --llvm-lto 0 and
fails with -O1 --llvm-lto 1.
Diffing those, it does look like LTO messes stuff up. With
https://gist.github.com/kripken/5039740
applies to the LTO's one, it works ok. Basically, LTO copies the first
into local vars - but never uses them. It also doesn't make a stack copy
of the last vars. Manually changing those in the diff make it work
properly.
The 'first' and 'last' variables that he is referring to are from the
definition of std::includes:
template <class _Compare, class _InputIterator1, class _InputIterator2>
bool
__includes(_InputIterator1 __first1, _InputIterator1 __last1,
_InputIterator2 __first2, _InputIterator2 __last2,
_Compare __comp)
{
for (; __first2 != __last2; ++__first1)
{
if (__first1 == __last1 || __comp(*__first2, *__first1))
return false;
if (!__comp(*__first1, *__first2))
++__first2;
}
return true;
}
The bug against emscripten can be seen at
https://github.com/kripken/emscripten/issues/873.
I am using clang / llvm 3.2.
--
You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20130226/662f7e91/attachment.html>
More information about the llvm-bugs
mailing list