llvm-project/llvm/lib/IR
Ramkumar Ramachandra 8fcb498a9a InstCombine: propagate deref via new addDereferenceableAttr
The "dereferenceable" attribute cannot be added via .addAttribute(),
since it also expects a size in bytes. AttrBuilder#addAttribute or
AttributeSet#addAttribute is wrapped by classes Function, InvokeInst,
and CallInst. Add corresponding wrappers to
AttrBuilder#addDereferenceableAttr.

Having done this, propagate the dereferenceable attribute via
gc.relocate, adding a test to exercise it. Note that -datalayout is
required during execution over and above -instcombine, because
InstCombine only optionally requires DataLayoutPass.

Differential Revision: http://reviews.llvm.org/D7510

llvm-svn: 229265
2015-02-14 19:37:54 +00:00
..
AsmWriter.cpp AsmWriter/Bitcode: MDImportedEntity 2015-02-13 01:46:02 +00:00
AsmWriter.h IR: Implement uselistorder assembly directives 2014-08-19 21:30:15 +00:00
AttributeImpl.h Canonicalize header guards into a common format. 2014-08-13 16:26:38 +00:00
Attributes.cpp InstCombine: propagate deref via new addDereferenceableAttr 2015-02-14 19:37:54 +00:00
AutoUpgrade.cpp [X86] Fix XOP vpcom intrinsic autoupgrade to map 'true' and 'false' to the correct immediates. Seems they were swapped. 2015-02-13 07:42:15 +00:00
BasicBlock.cpp Add a pass for inserting safepoints into (nearly) arbitrary IR 2015-02-04 00:37:33 +00:00
CMakeLists.txt Use ADDITIONAL_HEADER_DIRS in all LLVM CMake projects. 2015-02-11 03:28:02 +00:00
Comdat.cpp IR: Add COMDATs to the IR 2014-06-27 18:19:56 +00:00
ConstantFold.cpp ConstantFold: Shifting undef by zero results in undef 2014-12-18 23:54:43 +00:00
ConstantFold.h Canonicalize header guards into a common format. 2014-08-13 16:26:38 +00:00
ConstantRange.cpp [Modules] Move the ConstantRange class into the IR library. This is 2014-03-04 12:24:34 +00:00
Constants.cpp Reapply "LLVMContext: Store APInt/APFloat directly into the ConstantInt/FP DenseMaps." 2014-12-06 13:12:56 +00:00
ConstantsContext.h IR: De-duplicate code for replacing operands in place 2014-08-19 19:13:30 +00:00
Core.cpp [PM] Remove the old 'PassManager.h' header file at the top level of 2015-02-13 10:01:29 +00:00
DIBuilder.cpp IR: Drop never-used defaults for DIBuilder::createTemplate*(), NFC 2015-02-13 03:35:29 +00:00
DataLayout.cpp DataLayout: Report when the preferred alignment is less than the ABI 2015-02-11 09:13:09 +00:00
DebugInfo.cpp Debug info: Use DW_OP_bit_piece instead of DW_OP_piece in the 2015-02-09 23:57:15 +00:00
DebugInfoMetadata.cpp AsmWriter/Bitcode: MDLocalVariable 2015-02-13 01:39:44 +00:00
DebugLoc.cpp IR: Cleanup dead code, NFC 2015-01-16 17:31:29 +00:00
DiagnosticInfo.cpp IR: Split Metadata from Value 2014-12-09 18:38:53 +00:00
DiagnosticPrinter.cpp Fix typos in comments, NFC 2014-08-29 21:53:01 +00:00
Dominators.cpp [PM] Port domtree to the new pass manager (at last). 2015-01-14 10:19:28 +00:00
Function.cpp InstCombine: propagate deref via new addDereferenceableAttr 2015-02-14 19:37:54 +00:00
GCOV.cpp llvm-cov: Don't use llvm::outs() in library code 2015-01-23 23:09:27 +00:00
GVMaterializer.cpp [Layering] Move GVMaterializer.h into the IR library where its 2014-03-06 03:50:29 +00:00
Globals.cpp The leak detector is dead, long live asan and valgrind. 2014-12-22 13:00:36 +00:00
IRBuilder.cpp [Statepoint] Improve two asserts, fix some style (NFC) 2015-02-09 23:02:10 +00:00
IRPrintingPasses.cpp [PM] Switch the new pass manager to use a reference-based API for IR 2015-01-05 02:47:05 +00:00
InlineAsm.cpp Reformat (and remove some tabs) to make debugging this code a 2015-02-10 21:15:06 +00:00
Instruction.cpp The leak detector is dead, long live asan and valgrind. 2014-12-22 13:00:36 +00:00
Instructions.cpp InstCombine: propagate deref via new addDereferenceableAttr 2015-02-14 19:37:54 +00:00
IntrinsicInst.cpp IR: Split Metadata from Value 2014-12-09 18:38:53 +00:00
LLVMBuild.txt
LLVMContext.cpp Fix LLVMContext to match what MDKind names that the LL parser permits. Fixes PR21799! 2014-12-11 02:10:28 +00:00
LLVMContextImpl.cpp Revert GCStrategy ownership changes 2015-01-26 18:26:35 +00:00
LLVMContextImpl.h IR: Remove unnecessary fields from MDTemplateParameter 2015-02-10 01:59:57 +00:00
LegacyPassManager.cpp [LPM] A targeted but somewhat horrible fix to the legacy pass manager's 2015-01-28 09:47:21 +00:00
MDBuilder.cpp IR: Return unique_ptr from MDNode::getTemporary() 2015-01-19 21:30:18 +00:00
Makefile
Mangler.cpp Silencing an "enumeral and non-enumeral type in conditional expression" warning; NFC. 2014-10-28 13:12:13 +00:00
Metadata.cpp IR: Add MDNode::replaceWithPermanent() 2015-02-10 19:13:46 +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 Verifier: Check for null operands in !llvm.module.flags 2015-02-11 09:13:06 +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 [PM] Remove an unused and rather expensive mapping from an analysis 2014-10-06 00:30:59 +00:00
Statepoint.cpp Intrinsics: introduce llvm_any_ty aka ValueType Any 2015-01-22 20:14:38 +00:00
SymbolTableListTraitsImpl.h Canonicalize header guards into a common format. 2014-08-13 16:26:38 +00:00
Type.cpp [slp] Fix a nasty bug in the SLP vectorizer that Joerg pointed out. 2015-02-12 02:30:56 +00:00
TypeFinder.cpp IR: Split Metadata from Value 2014-12-09 18:38:53 +00:00
Use.cpp Fix a URL (NFC) 2014-08-21 21:09:24 +00:00
UseListOrder.cpp verify-uselistorder: Force -preserve-bc-use-list-order 2014-08-19 21:08:27 +00:00
User.cpp IR: Cleanup comments for Value, User, and MDNode 2014-10-15 20:28:31 +00:00
Value.cpp isDereferenceablePointer: look through gc.relocate calls 2015-02-09 21:08:03 +00:00
ValueSymbolTable.cpp IR: Split Metadata from Value 2014-12-09 18:38:53 +00:00
ValueTypes.cpp Add v4f16 to supported value types. 2013-10-03 03:29:21 +00:00
Verifier.cpp IR: Add MDExpression::ExprOperand 2015-02-13 01:07:46 +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