llvm-project/llvm/lib/IR
Chandler Carruth 0d256c0f5d [IR] Make SwitchInst::CaseIt almost a normal iterator.
This moves it to the iterator facade utilities giving it full random
access semantics, etc. It can also now be used with standard algorithms
like std::all_of and std::any_of and range adaptors like llvm::reverse.

Also make the semantics of iterating match what every other iterator
uses and forbid decrementing past the begin iterator. This was used as
a hacky way to work around iterator invalidation. However, every
instance trying to do this failed to actually avoid touching invalid
iterators despite the clear documentation that the removed and all
subsequent iterators become invalid including the end iterator. So I've
added a return of the next iterator to removeCase and rewritten the
loops that were doing this to correctly follow the iterator pattern of
either incremneting or removing and assigning fresh values to the
iterator and the end.

In one case we were trying to go backwards to make this cleaner but it
doesn't actually work. I've made that code match the code we use
everywhere else to remove cases as we iterate. This changes the order of
cases in one test output and I moved that test to CHECK-DAG so it
wouldn't care -- the order isn't semantically meaningful anyways.

llvm-svn: 298791
2017-03-26 02:49:23 +00:00
..
AsmWriter.cpp Rename AttributeSet to AttributeList 2017-03-21 16:57:19 +00:00
AttributeImpl.h Rename AttributeSet to AttributeList 2017-03-21 16:57:19 +00:00
AttributeSetNode.h Rename AttributeSet to AttributeList 2017-03-21 16:57:19 +00:00
Attributes.cpp Rename AttributeSet to AttributeList 2017-03-21 16:57:19 +00:00
AttributesCompatFunc.td Provide a way to specify inliner's attribute compatibility and merging. 2015-12-22 23:57:37 +00:00
AutoUpgrade.cpp Let llvm.objectsize be conservative with null pointers 2017-03-21 20:08:59 +00:00
BasicBlock.cpp [IR] Use const_cast to reuse the const version of two BasicBlock methods that are duplicated for both const and non-const. NFC 2017-01-22 06:53:04 +00:00
CMakeLists.txt [CMake] NFC. Updating CMake dependency specifications 2016-11-17 04:36:50 +00:00
Comdat.cpp [IR] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC). 2017-02-17 00:00:09 +00:00
ConstantFold.cpp Fix constant folding of fp2int to large integers 2017-03-19 16:50:25 +00:00
ConstantFold.h IR: Introduce inrange attribute on getelementptr indices. 2016-11-10 22:34:55 +00:00
ConstantRange.cpp [ConstantRange] Add setSizeSmallerThanOf method. 2017-03-20 06:33:07 +00:00
Constants.cpp Replace APFloatBase static fltSemantics data members with getter functions 2016-12-14 11:57:17 +00:00
ConstantsContext.h [ADT, IR] Fix some Clang-tidy modernize-use-equals-delete and Include What You Use warnings; other minor fixes (NFC). 2016-12-07 22:06:02 +00:00
Core.cpp Rename AttributeSet to AttributeList 2017-03-21 16:57:19 +00:00
DIBuilder.cpp Revert "Debug Info: Add basic support for external types references." 2017-03-13 22:56:14 +00:00
DataLayout.cpp [IR] Use a binary search in DataLayout::getAlignmentInfo 2017-03-23 06:15:56 +00:00
DebugInfo.cpp Enable stripping of multiple DILocation on !llvm.loop metadata 2017-03-19 13:54:57 +00:00
DebugInfoMetadata.cpp [DebugInfo] Emit address space with DW_AT_address_class attribute for pointer and reference types 2017-03-08 23:55:44 +00:00
DebugLoc.cpp Cleanup dump() functions. 2017-01-28 02:02:38 +00:00
DiagnosticInfo.cpp [Stack Protection] Add diagnostic information for why stack protection was applied to a function 2017-02-28 16:02:37 +00:00
DiagnosticPrinter.cpp
Dominators.cpp Revert "Do not verify dominator tree if it has no roots" 2017-01-25 17:15:48 +00:00
Function.cpp Rename AttributeSet to AttributeList 2017-03-21 16:57:19 +00:00
GCOV.cpp Cleanup dump() functions. 2017-01-28 02:02:38 +00:00
GVMaterializer.cpp
Globals.cpp [IR] Inline some Function accessors 2017-03-16 16:57:31 +00:00
IRBuilder.cpp AMDGPU: Basic folds for fmed3 intrinsic 2017-02-27 23:08:49 +00:00
IRPrintingPasses.cpp Implement getPassName() for IR printing passes. 2017-03-10 07:09:20 +00:00
InlineAsm.cpp [IR] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC). 2017-02-17 00:00:09 +00:00
Instruction.cpp Set the prof weight correctly for call instructions in DeadArgumentElimination. 2017-03-23 23:26:00 +00:00
Instructions.cpp [IR] Make SwitchInst::CaseIt almost a normal iterator. 2017-03-26 02:49:23 +00:00
IntrinsicInst.cpp Add intrinsics for constrained floating point operations 2017-01-26 23:27:59 +00:00
LLVMBuild.txt
LLVMContext.cpp Add !associated metadata. 2017-03-17 22:17:24 +00:00
LLVMContextImpl.cpp Rename AttributeSet to AttributeList 2017-03-21 16:57:19 +00:00
LLVMContextImpl.h Rename AttributeSet to AttributeList 2017-03-21 16:57:19 +00:00
LegacyPassManager.cpp Reverted: Track validity of pass results 2017-01-15 10:23:18 +00:00
MDBuilder.cpp Add function importing info from samplepgo profile to the module summary. 2017-02-28 18:09:44 +00:00
Mangler.cpp Remove the default constructor and count variable from the Mangler since 2016-09-29 02:03:50 +00:00
Metadata.cpp [IR] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC). 2017-02-17 00:00:09 +00:00
MetadataImpl.h
Module.cpp Rename AttributeSet to AttributeList 2017-03-21 16:57:19 +00:00
ModuleSummaryIndex.cpp ThinLTO: handles modules with empty summaries 2016-10-08 04:44:18 +00:00
Operator.cpp [IR] Remove some unneeded includes from Operator.h and fix cpp files that were transitively depending on it. NFC 2017-03-20 05:08:41 +00:00
OptBisect.cpp Remove opt-bisect support for "cases" in favor of debug counters 2017-03-11 01:41:03 +00:00
Pass.cpp Cleanup dump() functions. 2017-01-28 02:02:38 +00:00
PassManager.cpp [PM] Introduce an analysis set used to preserve all analyses over 2017-01-15 06:32:49 +00:00
PassRegistry.cpp Use the range variant of find instead of unpacking begin/end 2016-08-11 22:21:41 +00:00
ProfileSummary.cpp Reapply r271728 after adding move cobstructor for ProfileSummaryInfo 2016-06-03 22:54:26 +00:00
Statepoint.cpp Rename AttributeSet to AttributeList 2017-03-21 16:57:19 +00:00
SymbolTableListTraitsImpl.h ADT: Remove external uses of ilist_iterator, NFC 2016-09-03 01:22:56 +00:00
Type.cpp IR: Move NumElements field from {Array,Vector}Type to SequentialType. 2016-12-02 03:20:58 +00:00
TypeFinder.cpp [IR] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC). 2017-02-17 00:00:09 +00:00
Use.cpp
User.cpp Retire llvm::alignOf in favor of C++11 alignof. 2016-10-20 15:02:18 +00:00
Value.cpp Rename AttributeSet to AttributeList 2017-03-21 16:57:19 +00:00
ValueSymbolTable.cpp [IR] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC). 2017-02-17 00:00:09 +00:00
ValueTypes.cpp getVectorElementType().getSizeInBits() -> getScalarSizeInBits() ; NFCI 2016-09-14 16:37:15 +00:00
Verifier.cpp Rename AttributeSet to AttributeList 2017-03-21 16:57:19 +00:00