llvm-6502/include/llvm
Andrew Trick 616011418e Fix ScalarEvolution::ComputeExitLimitFromCond for 'or' conditions.
Fixes PR16130 - clang produces incorrect code with loop/expression at -O2.

This is a 2+ year old bug that's now holding up the release. It's a
case where we knowingly made aggressive assumptions about undefined
behavior. These assumptions are wrong when SCEV is computing a
subexpression that does not directly control the branch. With this
fix, we avoid making assumptions in those cases but still optimize the
common case. SCEV's trip count computation for exits controlled by
'or' expressions is now analagous to the trip count computation for
loops with multiple exits. I had already fixed the multiple exit case
to be conservative.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182989 91177308-0d34-0410-b5e6-96231b3b80d8
2013-05-31 06:43:25 +00:00
..
ADT Implement IEEE-754R 2008 nextUp/nextDown functions in the guise of the function APFloat::next(bool nextDown). 2013-05-30 18:07:13 +00:00
Analysis Fix ScalarEvolution::ComputeExitLimitFromCond for 'or' conditions. 2013-05-31 06:43:25 +00:00
Assembly
Bitcode Remove the Copied parameter from MemoryObject::readBytes. 2013-05-24 10:54:58 +00:00
CodeGen Order CALLSEQ_START and CALLSEQ_END nodes. 2013-05-29 22:03:55 +00:00
Config Allow host triple to be correctly overridden in CMake builds 2013-05-04 07:36:23 +00:00
DebugInfo Create a stub for DWARF parser unittests 2013-04-17 08:29:02 +00:00
ExecutionEngine Expose the RTDyldMemoryManager through the C API. This allows clients of 2013-05-22 02:46:43 +00:00
IR Fix wrong comment. Null is not acceptable. 2013-05-31 01:40:30 +00:00
IRReader Split out the IRReader header and the utility functions it provides into 2013-03-26 02:25:37 +00:00
MC MCObjectSymbolizer: Switch from IntervalMap to sorted vector, following r182625. 2013-05-30 18:18:36 +00:00
Object Fix a couple of typos and 80-col. 2013-05-30 18:59:11 +00:00
Option Documentation warning: \param, not \parm 2013-05-09 21:15:03 +00:00
Support [Mips] Add Mips specific dynamic table entry tags. 2013-05-28 20:48:56 +00:00
TableGen Make sure TableGen exits with an error code after printing errors. 2013-03-20 20:43:11 +00:00
Target Don't reach into the middle of TargetMachine and cache one of its ivars. 2013-05-29 20:37:19 +00:00
Transforms Extend RemapInstruction and friends to take an optional new parameter, a ValueMaterializer. 2013-05-28 15:17:05 +00:00
AutoUpgrade.h
CMakeLists.txt
DebugInfo.h Simplify logic by using the appropriate functions. 2013-05-29 17:33:31 +00:00
DIBuilder.h Solidify the assumption that a DW_TAG_subprogram's type is a DW_TAG_subroutine_type 2013-05-22 23:22:18 +00:00
GVMaterializer.h
InitializePasses.h Add DebugIR pass -- emits IR file and replace source lines with IR lines in MD 2013-05-08 20:44:14 +00:00
InstVisitor.h
LinkAllIR.h
LinkAllPasses.h Add support for bottom-up SLP vectorization infrastructure. 2013-04-09 19:44:35 +00:00
Linker.h Fix a performance bug in the Linker. 2013-05-04 05:05:18 +00:00
Pass.h
PassAnalysisSupport.h
PassManager.h This patch breaks up Wrap.h so that it does not have to include all of 2013-05-01 20:59:00 +00:00
PassManagers.h Use a DenseMap instead of a std::map for AnalysisID -> Pass* maps. This reduces the pass-manager overhead from FPPassManager::runOnFunction() by about 10%. 2013-02-26 01:31:59 +00:00
PassRegistry.h This patch breaks up Wrap.h so that it does not have to include all of 2013-05-01 20:59:00 +00:00
PassSupport.h