[PATCH] D15689: [opaque pointer types] Prune some uses of PointerType::getElementType.Breaking API changes:* PointerType no longer inherits from SequentialType* PointerType::getElementType deprecated in favor of getPointerElementType* Type...

Eduard Burtescu via llvm-commits llvm-commits at lists.llvm.org
Mon Dec 21 06:42:15 PST 2015


eddyb created this revision.
eddyb added a reviewer: dblaikie.
eddyb added a subscriber: llvm-commits.
Herald added a reviewer: tstellarAMD.
Herald added subscribers: dsanders, jyknight, arsenm, sanjoy, jholewinski.

...::getPointerElementType removed, cast to PointerType instead
* GetElementPtrInst::getType override returning SequentialType removed
* gep_type_iterator requires explicit pointee types, no pointer shorthand
* DataLayout::getIndexedOffset now takes the pointee, instead of the pointer type
* SimplifyGEPInst requires the source element (pointee) type
* Creating a GetElementPtrConstantExpr takes both source and result element types
* isDereferenceable(AndAligned)Pointer and isSafeToLoadUnconditionally all take an explicit access size
* isStridedPtr and ConstantFoldLoadFromConstPtr both require an pointee type
* FindAvailableLoadedValue takes a LoadInst* instead of a Value*

Disinherit PointerType from SequentialType and limit pointee accesses to getPointerElementType.

Use GlobalValue::getValueType for the pointee instead of GlobalValue::getType.

Use GEP get{Source,Result}ElementType instead of going through pointer types.

Get the loaded/stored type directly, not from getPointerElementType.

Get alloca types via getAllocatedType(), bypassing getPointerElementType().

Remove one dead getPointerElementType() call.

http://reviews.llvm.org/D15689

Files:
  include/llvm/Analysis/ConstantFolding.h
  include/llvm/Analysis/InstructionSimplify.h
  include/llvm/Analysis/Loads.h
  include/llvm/Analysis/LoopAccessAnalysis.h
  include/llvm/Analysis/TargetTransformInfoImpl.h
  include/llvm/Analysis/ValueTracking.h
  include/llvm/IR/DataLayout.h
  include/llvm/IR/DerivedTypes.h
  include/llvm/IR/GetElementPtrTypeIterator.h
  include/llvm/IR/IRBuilder.h
  include/llvm/IR/Instructions.h
  include/llvm/IR/Operator.h
  include/llvm/IR/Statepoint.h
  include/llvm/IR/Type.h
  lib/Analysis/AliasAnalysisEvaluator.cpp
  lib/Analysis/BasicAliasAnalysis.cpp
  lib/Analysis/ConstantFolding.cpp
  lib/Analysis/GlobalsModRef.cpp
  lib/Analysis/InlineCost.cpp
  lib/Analysis/InstructionSimplify.cpp
  lib/Analysis/Lint.cpp
  lib/Analysis/Loads.cpp
  lib/Analysis/LoopAccessAnalysis.cpp
  lib/Analysis/MemDerefPrinter.cpp
  lib/Analysis/MemoryBuiltins.cpp
  lib/Analysis/ObjCARCInstKind.cpp
  lib/Analysis/PHITransAddr.cpp
  lib/Analysis/ScalarEvolution.cpp
  lib/Analysis/ScalarEvolutionExpander.cpp
  lib/Analysis/ValueTracking.cpp
  lib/Analysis/VectorUtils.cpp
  lib/AsmParser/LLParser.cpp
  lib/Bitcode/Reader/BitcodeReader.cpp
  lib/Bitcode/Writer/BitcodeWriter.cpp
  lib/CodeGen/AsmPrinter/AsmPrinter.cpp
  lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp
  lib/CodeGen/AtomicExpandPass.cpp
  lib/CodeGen/CodeGenPrepare.cpp
  lib/CodeGen/GCRootLowering.cpp
  lib/CodeGen/SelectionDAG/FastISel.cpp
  lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
  lib/CodeGen/SelectionDAG/StatepointLowering.cpp
  lib/CodeGen/SelectionDAG/TargetLowering.cpp
  lib/ExecutionEngine/ExecutionEngine.cpp
  lib/ExecutionEngine/Interpreter/Execution.cpp
  lib/ExecutionEngine/Orc/IndirectionUtils.cpp
  lib/IR/AsmWriter.cpp
  lib/IR/ConstantFold.cpp
  lib/IR/ConstantFold.h
  lib/IR/Constants.cpp
  lib/IR/ConstantsContext.h
  lib/IR/Core.cpp
  lib/IR/DataLayout.cpp
  lib/IR/Function.cpp
  lib/IR/Globals.cpp
  lib/IR/IRBuilder.cpp
  lib/IR/Instructions.cpp
  lib/IR/Mangler.cpp
  lib/IR/Operator.cpp
  lib/IR/Type.cpp
  lib/IR/Verifier.cpp
  lib/Linker/IRMover.cpp
  lib/Linker/LinkModules.cpp
  lib/Target/AArch64/AArch64FastISel.cpp
  lib/Target/AArch64/AArch64ISelDAGToDAG.cpp
  lib/Target/AArch64/AArch64ISelLowering.cpp
  lib/Target/AMDGPU/AMDGPUISelLowering.cpp
  lib/Target/AMDGPU/AMDGPUPromoteAlloca.cpp
  lib/Target/AMDGPU/SITypeRewriter.cpp
  lib/Target/ARM/ARMFastISel.cpp
  lib/Target/ARM/ARMISelLowering.cpp
  lib/Target/CppBackend/CPPBackend.cpp
  lib/Target/Hexagon/HexagonCommonGEP.cpp
  lib/Target/Hexagon/HexagonISelLowering.cpp
  lib/Target/Hexagon/HexagonTargetObjectFile.cpp
  lib/Target/Mips/Mips16HardFloat.cpp
  lib/Target/Mips/MipsTargetObjectFile.cpp
  lib/Target/NVPTX/NVPTXAsmPrinter.cpp
  lib/Target/NVPTX/NVPTXFavorNonGenericAddrSpaces.cpp
  lib/Target/NVPTX/NVPTXGenericToNVVM.cpp
  lib/Target/NVPTX/NVPTXISelLowering.cpp
  lib/Target/NVPTX/NVPTXLowerAlloca.cpp
  lib/Target/NVPTX/NVPTXLowerKernelArgs.cpp
  lib/Target/PowerPC/PPCISelLowering.cpp
  lib/Target/PowerPC/PPCLoopPreIncPrep.cpp
  lib/Target/Sparc/SparcISelLowering.cpp
  lib/Target/X86/X86ISelLowering.cpp
  lib/Target/XCore/XCoreAsmPrinter.cpp
  lib/Target/XCore/XCoreISelLowering.cpp
  lib/Target/XCore/XCoreLowerThreadLocal.cpp
  lib/Target/XCore/XCoreTargetObjectFile.cpp
  lib/Transforms/IPO/ArgumentPromotion.cpp
  lib/Transforms/IPO/ExtractGV.cpp
  lib/Transforms/IPO/GlobalOpt.cpp
  lib/Transforms/InstCombine/InstCombineCalls.cpp
  lib/Transforms/InstCombine/InstCombineCasts.cpp
  lib/Transforms/InstCombine/InstCombineLoadStoreAlloca.cpp
  lib/Transforms/InstCombine/InstructionCombining.cpp
  lib/Transforms/Instrumentation/AddressSanitizer.cpp
  lib/Transforms/Instrumentation/DataFlowSanitizer.cpp
  lib/Transforms/Instrumentation/GCOVProfiling.cpp
  lib/Transforms/Instrumentation/MemorySanitizer.cpp
  lib/Transforms/Instrumentation/SafeStack.cpp
  lib/Transforms/Instrumentation/ThreadSanitizer.cpp
  lib/Transforms/ObjCARC/ObjCARCOpts.cpp
  lib/Transforms/Scalar/GVN.cpp
  lib/Transforms/Scalar/IndVarSimplify.cpp
  lib/Transforms/Scalar/JumpThreading.cpp
  lib/Transforms/Scalar/LoopLoadElimination.cpp
  lib/Transforms/Scalar/MemCpyOptimizer.cpp
  lib/Transforms/Scalar/NaryReassociate.cpp
  lib/Transforms/Scalar/PlaceSafepoints.cpp
  lib/Transforms/Scalar/RewriteStatepointsForGC.cpp
  lib/Transforms/Scalar/SCCP.cpp
  lib/Transforms/Scalar/SROA.cpp
  lib/Transforms/Scalar/ScalarReplAggregates.cpp
  lib/Transforms/Scalar/Scalarizer.cpp
  lib/Transforms/Scalar/SeparateConstOffsetFromGEP.cpp
  lib/Transforms/Scalar/StraightLineStrengthReduce.cpp
  lib/Transforms/Scalar/TailRecursionElimination.cpp
  lib/Transforms/Utils/CloneModule.cpp
  lib/Transforms/Utils/InlineFunction.cpp
  lib/Transforms/Utils/Local.cpp
  lib/Transforms/Utils/LoopUtils.cpp
  lib/Transforms/Utils/ModuleUtils.cpp
  lib/Transforms/Utils/SimplifyCFG.cpp
  lib/Transforms/Vectorize/BBVectorize.cpp
  lib/Transforms/Vectorize/LoopVectorize.cpp
  lib/Transforms/Vectorize/SLPVectorizer.cpp
  tools/bugpoint/CrashDebugger.cpp
  tools/llvm-nm/llvm-nm.cpp

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D15689.43370.patch
Type: text/x-patch
Size: 286974 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20151221/b8770451/attachment-0001.bin>


More information about the llvm-commits mailing list