Difference between revisions of "LLVM issues affecting LDC"

From D Wiki
Jump to: navigation, search
(Created page with "This page lists issues in previous version of LLVM known to affect LDC. Because of such issues, use of the latest LLVM release is highly recommended. If there are no recent L...")
 
(LLVM 3.1)
Line 16: Line 16:
 
[…]
 
[…]
 
</pre>
 
</pre>
: The issue does not occur on LLVM 3.0 and 3.2. Because of this, the release-mode std.exception unittests [https://github.com/ldc-developers/ldc/commit/d33bfb0d42a117f0495f304921343a209a2441a4 with reduced optimizations] on x86_64 LLVM 3.1.
+
: The issue does not occur on LLVM 3.0 and 3.2. Because of this, the release-mode std.exception unittests are executed [https://github.com/ldc-developers/ldc/commit/d33bfb0d42a117f0495f304921343a209a2441a4 with reduced optimizations] on x86_64 LLVM 3.1.
  
  
 
[[Category:LDC]]
 
[[Category:LDC]]

Revision as of 23:47, 11 March 2013

This page lists issues in previous version of LLVM known to affect LDC.

Because of such issues, use of the latest LLVM release is highly recommended. If there are no recent LLVM packages for your distribution, see Building LDC from source. LLVM is statically linked by default and can thus be removed again after building LDC. It does not have to be installed system-wide.

LLVM 3.1

  • There is an infinite recursion bug in the scalar evolution optimization pass in LLVM 3.1 (LLVM PR: TBD). It is known to be triggered by the std.exception unit tests on x86_64. In GDB, the cycle looks similar to this:
[…]
#2 llvm::ScalarEvolution::isKnownPredicate(llvm::CmpInst::Predicate, llvm::SCEV const*, llvm::SCEV const*) ()
#3 llvm::ScalarEvolution::getUMaxExpr(llvm::SmallVectorImpl<llvm::SCEV const*>&) ()
#4 llvm::ScalarEvolution::getUMaxExpr(llvm::SCEV const*, llvm::SCEV const*) ()
#5 llvm::ScalarEvolution::createSCEV(llvm::Value*) ()
#6 llvm::ScalarEvolution::getSCEV(llvm::Value*) ()
#7 llvm::ScalarEvolution::isImpliedCond(llvm::CmpInst::Predicate, llvm::SCEV const*, llvm::SCEV const*, llvm::Value*, bool) ()
#8 llvm::ScalarEvolution::isKnownPredicate(llvm::CmpInst::Predicate, llvm::SCEV const*, llvm::SCEV const*) ()
[…]
The issue does not occur on LLVM 3.0 and 3.2. Because of this, the release-mode std.exception unittests are executed with reduced optimizations on x86_64 LLVM 3.1.