llvm-6502/lib/Transforms/IPO
Hal Finkel a739834446 Allow isDereferenceablePointer to look through some bitcasts
isDereferenceablePointer should not give up upon encountering any bitcast. If
we're casting from a pointer to a larger type to a pointer to a small type, we
can continue by examining the bitcast's operand. This missing capability
was noted in a comment in the function.

In order for this to work, isDereferenceablePointer now takes an optional
DataLayout pointer (essentially all callers already had such a pointer
available). Most code uses isDereferenceablePointer though
isSafeToSpeculativelyExecute (which already took an optional DataLayout
pointer), and to enable the LICM test case, LICM needs to actually provide its DL
pointer to isSafeToSpeculativelyExecute (which it was not doing previously).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@212686 91177308-0d34-0410-b5e6-96231b3b80d8
2014-07-10 05:27:53 +00:00
..
ArgumentPromotion.cpp Allow isDereferenceablePointer to look through some bitcasts 2014-07-10 05:27:53 +00:00
BarrierNoopPass.cpp [C++11] Add 'override' keyword to virtual methods that override their base class. 2014-03-05 09:10:37 +00:00
CMakeLists.txt Introduce a BarrierNoop pass, a hack designed to allow *some* control 2012-10-18 08:05:46 +00:00
ConstantMerge.cpp [C++] Use 'nullptr'. Transforms edition. 2014-04-25 05:29:35 +00:00
DeadArgumentElimination.cpp Constify the Function pointers in the result of makeSubprogramMap 2014-07-02 18:30:05 +00:00
ExtractGV.cpp GlobalValue: Assert symbols with local linkage have default visibility 2014-05-07 23:00:22 +00:00
FunctionAttrs.cpp When analyzing params/args for readnone/readonly, don't forget to consider that a pointer argument may be passed through a callsite to the return, and that we may need to analyze it. Fixes a bug reported on llvm-dev: http://lists.cs.uiuc.edu/pipermail/llvmdev/2014-May/073098.html 2014-05-30 02:31:27 +00:00
GlobalDCE.cpp Revert "GlobalDCE: Delete available_externally initializers if it allows removing the value the initializer is referring to." 2014-07-08 17:06:03 +00:00
GlobalOpt.cpp GlobalOpt: Don't swap private for internal linkage 2014-07-01 15:26:50 +00:00
InlineAlways.cpp Check the alwaysinline attribute on the call as well as on the caller. 2014-05-19 18:25:54 +00:00
Inliner.cpp Add support for missed and analysis optimization remarks. 2014-05-22 14:19:46 +00:00
InlineSimple.cpp [C++] Use 'nullptr'. Transforms edition. 2014-04-25 05:29:35 +00:00
Internalize.cpp LTO: -internalize sets visibility to default 2014-05-05 17:40:44 +00:00
IPConstantPropagation.cpp [C++] Use 'nullptr'. Transforms edition. 2014-04-25 05:29:35 +00:00
IPO.cpp Removing spurious dependency of IPO on JumpInstrTables 2014-06-05 19:43:57 +00:00
LLVMBuild.txt Prune redundant dependencies in LLVMBuild.txt. 2013-12-11 00:30:57 +00:00
LoopExtractor.cpp [C++] Use 'nullptr'. Transforms edition. 2014-04-25 05:29:35 +00:00
Makefile
MergeFunctions.cpp MergeFunctions Pass, removed DenseMap helpers. 2014-06-22 01:53:30 +00:00
PartialInlining.cpp [C++] Use 'nullptr'. Transforms edition. 2014-04-25 05:29:35 +00:00
PassManagerBuilder.cpp Run interprocedural const prop before global optimizer 2014-07-03 19:28:15 +00:00
PruneEH.cpp [C++] Use 'nullptr'. Transforms edition. 2014-04-25 05:29:35 +00:00
StripDeadPrototypes.cpp [Modules] Fix potential ODR violations by sinking the DEBUG_TYPE 2014-04-22 02:55:47 +00:00
StripSymbols.cpp [C++] Use 'nullptr'. Transforms edition. 2014-04-25 05:29:35 +00:00