llvm-6502/lib/Transforms/IPO
James Molloy a54c5b4489 "float2int": Add a new pass to demote from float to int where possible.
It is possible to have code that converts from integer to float, performs operations then converts back, and the result is provably the same as if integers were used.

This can come from different sources, but the most obvious is a helper function that uses floats but the arguments given at an inlined callsites are integers.

This pass considers all integers requiring a bitwidth less than or equal to the bitwidth of the mantissa of a floating point type (23 for floats, 52 for doubles) as exactly representable in floating point.

To reduce the risk of harming efficient code, the pass only attempts to perform complete removal of inttofp/fptoint operations, not just move them around.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@233062 91177308-0d34-0410-b5e6-96231b3b80d8
2015-03-24 11:15:23 +00:00
..
ArgumentPromotion.cpp Add some missed formatting 2015-03-14 21:40:12 +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 bitset metadata format and bitset lowering pass. 2015-02-20 20:30:47 +00:00
ConstantMerge.cpp DataLayout is mandatory, update the API to reflect it with references. 2015-03-10 02:37:25 +00:00
DeadArgumentElimination.cpp DeadArgElim: aggregate Return assessment properly. 2015-02-11 23:13:11 +00:00
ExtractGV.cpp Reformat partially, where I touched for whitespace changes. 2014-10-28 11:54:52 +00:00
FunctionAttrs.cpp [PM] Separate the TargetLibraryInfo object from the immutable pass. 2015-01-15 10:41:28 +00:00
GlobalDCE.cpp GlobalDCE: Improve performance for large modules containing comdats. 2015-03-19 18:23:29 +00:00
GlobalOpt.cpp Re-sort includes with sort-includes.py and insert raw_ostream.h where it's used. 2015-03-23 19:32:43 +00:00
InlineAlways.cpp [PM] Split the AssumptionTracker immutable pass into two separate APIs: 2015-01-04 12:03:27 +00:00
Inliner.cpp Re-sort includes with sort-includes.py and insert raw_ostream.h where it's used. 2015-03-23 19:32:43 +00:00
InlineSimple.cpp [PM] Split the AssumptionTracker immutable pass into two separate APIs: 2015-01-04 12:03:27 +00:00
Internalize.cpp Use range based for loops to avoid needing to re-mention SmallPtrSet size. 2014-08-24 23:23:06 +00:00
IPConstantPropagation.cpp [C++] Use 'nullptr'. Transforms edition. 2014-04-25 05:29:35 +00:00
IPO.cpp Introduce bitset metadata format and bitset lowering pass. 2015-02-20 20:30:47 +00:00
LLVMBuild.txt Update libdeps since TLI was moved from Target to Analysis in r226078. 2015-01-15 05:21:00 +00:00
LoopExtractor.cpp [PM] Lift the analyses into the interface for 2015-01-19 03:03:39 +00:00
LowerBitSets.cpp LowerBitSets: Avoid reusing byte set addresses. 2015-03-19 22:02:10 +00:00
Makefile
MergeFunctions.cpp DataLayout is mandatory, update the API to reflect it with references. 2015-03-10 02:37:25 +00:00
PartialInlining.cpp Add range adapters predecessors() and successors() for BBs 2015-02-04 19:14:57 +00:00
PassManagerBuilder.cpp "float2int": Add a new pass to demote from float to int where possible. 2015-03-24 11:15:23 +00:00
PruneEH.cpp Don't promote asynch EH invokes of nounwind functions to calls 2015-02-11 01:23:16 +00:00
StripDeadPrototypes.cpp [Modules] Fix potential ODR violations by sinking the DEBUG_TYPE 2014-04-22 02:55:47 +00:00
StripSymbols.cpp IR: Split Metadata from Value 2014-12-09 18:38:53 +00:00