llvm-project/llvm/lib/IR
Pete Cooper b4eede2c07 Rename NumOperands to make it clear its managed by the User. NFC.
This is to try make it very clear that subclasses shouldn't be changing
the value directly.  Now that OperandList for normal instructions is computed
using the NumOperands, its critical that the NumOperands is accurate or we
could compute the wrong offset to the first operand.

I looked over all places which update NumOperands and they are all safe.
Hung off use User's don't use NumOperands to compute the OperandList so they
are safe to continue to manipulate it.  The only other User which changed it
was GlobalVariable which has an optional init list but always allocated space
for a single Use.  It was correctly setting NumOperands to 1 before setting an
initializer, and setting it to 0 after clearing the init list, so the order was safe.

Added some comments to that code to make sure that this isn't changed in future
without being aware of this constraint.

Reviewed by Duncan Exon Smith.

llvm-svn: 239621
2015-06-12 17:48:10 +00:00
..
AsmWriter.cpp Prefer copy init over direct init. NFC. 2015-06-08 18:58:57 +00:00
AttributeImpl.h Add missing dereferenceable_or_null getters 2015-05-06 17:41:54 +00:00
Attributes.cpp Add initial support for the convergent attribute. 2015-05-26 23:48:40 +00:00
AutoUpgrade.cpp [opaque pointer type] Pass explicit type to Load instruction creation in AutoUpgrade 2015-05-20 21:46:30 +00:00
BasicBlock.cpp Set proper debug location for branch added in BasicBlock::splitBasicBlock(). 2015-06-11 18:25:54 +00:00
CMakeLists.txt [opaque pointer type] Explicit pointee type for GEPOperator/GEPConstantExpr. 2015-05-08 00:42:26 +00:00
Comdat.cpp IR: Add COMDATs to the IR 2014-06-27 18:19:56 +00:00
ConstantFold.cpp [ConstantFold] Don't skip the first gep index when folding geps 2015-06-04 07:01:56 +00:00
ConstantFold.h Recommit r236670: [opaque pointer type] Pass explicit pointer type through GEP constant folding"" 2015-05-07 17:28:58 +00:00
ConstantRange.cpp [ConstantRange] Split makeICmpRegion in two. 2015-03-18 00:41:24 +00:00
Constants.cpp Replace all accesses to User::OperandList with getter and setter methods. NFC. 2015-06-12 17:48:05 +00:00
ConstantsContext.h Fix some odd whitespace and formatting errors while making 2015-05-18 21:49:02 +00:00
Core.cpp [C API] Add LLVMStructGetTypeAtIndex. 2015-06-04 09:09:53 +00:00
DIBuilder.cpp IR / debug info: Add a DWOId field to DICompileUnit, 2015-05-21 20:37:30 +00:00
DataLayout.cpp COFF: Let globals with private linkage reside in their own section 2015-03-17 23:54:51 +00:00
DebugInfo.cpp IR: Give 'DI' prefix to debug info metadata 2015-04-29 16:38:44 +00:00
DebugInfoMetadata.cpp IR / debug info: Add a DWOId field to DICompileUnit, 2015-05-21 20:37:30 +00:00
DebugLoc.cpp IR: Give 'DI' prefix to debug info metadata 2015-04-29 16:38:44 +00:00
DiagnosticInfo.cpp Replace an instance of custom atomics with standard ones. 2015-06-11 17:30:34 +00:00
DiagnosticPrinter.cpp Fix typos in comments, NFC 2014-08-29 21:53:01 +00:00
Dominators.cpp [DomTree] verifyDomTree to unconditionally perform DT verification 2015-05-06 08:18:41 +00:00
Function.cpp ArgumentPromotion: Drop sret attribute on functions that are only called directly. 2015-06-10 21:14:34 +00:00
GCOV.cpp Remove more superfluous .str() and replace std::string concatenation with Twine. 2015-03-30 15:42:36 +00:00
GVMaterializer.cpp [Layering] Move GVMaterializer.h into the IR library where its 2014-03-06 03:50:29 +00:00
Globals.cpp Rename NumOperands to make it clear its managed by the User. NFC. 2015-06-12 17:48:10 +00:00
IRBuilder.cpp Change Function::getIntrinsicID() to return an Intrinsic::ID. NFC. 2015-05-20 17:16:39 +00:00
IRPrintingPasses.cpp uselistorder: Pull the bit through PrintModulePass 2015-04-15 02:38:06 +00:00
InlineAsm.cpp Silence sign compare warning. NFC. 2015-03-29 20:49:03 +00:00
Instruction.cpp [PlaceSafepoints] Cleanup InsertSafepointPoll function 2015-05-26 21:03:23 +00:00
Instructions.cpp Rename NumOperands to make it clear its managed by the User. NFC. 2015-06-12 17:48:10 +00:00
IntrinsicInst.cpp IR: Split Metadata from Value 2014-12-09 18:38:53 +00:00
LLVMBuild.txt
LLVMContext.cpp [IR/AsmWriter] Output escape sequences if the first character isdigit() 2015-06-02 21:25:08 +00:00
LLVMContextImpl.cpp Add the i128 builtin type to LLVM. 2015-04-17 15:32:15 +00:00
LLVMContextImpl.h Move the name pointer out of Value into a map that lives on the 2015-06-01 22:24:01 +00:00
LegacyPassManager.cpp Rangify more for loops in LegacyPassManager.cpp. 2015-06-05 17:48:47 +00:00
MDBuilder.cpp Add isConstant argument to MDBuilder::createTBAAStructTagNode 2015-06-01 14:53:55 +00:00
Makefile
Mangler.cpp Revert "Move dllimport name mangling to IR mangler." 2015-06-11 01:31:48 +00:00
Metadata.cpp Move the name pointer out of Value into a map that lives on the 2015-06-01 22:24:01 +00:00
MetadataImpl.h Added missing header for the explicit dependency on MDNode. 2015-02-04 00:20:52 +00:00
MetadataTracking.cpp IR: Store RAUW support and Context in the same pointer, NFC 2015-01-19 19:02:06 +00:00
Module.cpp While in GlobalValue fix the function(s) that don't follow the 2015-05-15 18:20:14 +00:00
Operator.cpp Put GEPOperator member function definition in the appropriate .cpp file 2015-05-21 21:17:12 +00:00
Pass.cpp Refactoring cl::parser construction and initialization. 2015-01-22 21:01:12 +00:00
PassManager.cpp [PM] Push the debug option for the new pass manager into the opt tool 2015-01-13 22:42:38 +00:00
PassRegistry.cpp Revert r231276 (including r231277): Add a lock() function in PassRegistry to speed up multi-thread synchronization. 2015-03-05 17:53:00 +00:00
Statepoint.cpp Add invoke related functionality into StatepointSite classes. 2015-02-19 11:02:11 +00:00
SymbolTableListTraitsImpl.h Canonicalize header guards into a common format. 2014-08-13 16:26:38 +00:00
Type.cpp Int128 is also a built-in preconstructed type. 2015-06-02 23:56:53 +00:00
TypeFinder.cpp Fix Value dangling reference debug output 2015-03-10 23:55:38 +00:00
Use.cpp Fix a URL (NFC) 2014-08-21 21:09:24 +00:00
User.cpp Rename NumOperands to make it clear its managed by the User. NFC. 2015-06-12 17:48:10 +00:00
Value.cpp Rename NumOperands to make it clear its managed by the User. NFC. 2015-06-12 17:48:10 +00:00
ValueSymbolTable.cpp Changed renaming of local symbols by inserting a dot vefore the numeric suffix. 2015-05-12 16:47:30 +00:00
ValueTypes.cpp Add support for v1i128 type. 2015-04-17 16:11:05 +00:00
Verifier.cpp Add initial support for the convergent attribute. 2015-05-26 23:48:40 +00:00
module.modulemap [modules] Add module maps for LLVM. These are not quite ready for prime-time 2014-05-21 02:46:14 +00:00