| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
| |
classes. The associated test case still doesn't pass, but it does have far
fewer issues.
rdar://12719844
llvm-svn: 168657
|
| |
|
|
|
|
|
|
| |
doInitialization and doFinalization per module detangled from runOn?? calls, still has temporary code not to break ASAN to be removed when that pass conforms to the proposed model".
It appears to have broken at least one buildbot.
llvm-svn: 168654
|
| |
|
|
|
|
| |
Added in first optimization using fast-math flags to serve as an example for following optimizations. SimplifyInstruction will now try to optimize an fmul observing its FastMathFlags to see if it can fold multiply by zero when 'nnan' and 'nsz' flags are set.
llvm-svn: 168648
|
| |
|
|
|
|
| |
Added in bitcode enum for the serializing of fast-math flags. Added in the reading/writing of fast-math flags from the OptimizationFlags record for BinaryOps.
llvm-svn: 168646
|
| |
|
|
|
|
| |
Added in the ability to read LLVM IR text that contains fast-math flags as a sequence of capital letters separated by spaces in any order. Added in the printing of the fast-math flags in a canonical order, and don't print the other flags when 'fast' is specified, as 'fast' implies all the others.
llvm-svn: 168645
|
| |
|
|
| |
llvm-svn: 168644
|
| |
|
|
|
|
| |
add a TODO for starting.
llvm-svn: 168643
|
| |
|
|
|
|
| |
Add in getter/setter methods for Instructions, allowing them to be the interface to FPMathOperator similarly to now NUS/NSW is handled.
llvm-svn: 168642
|
| |
|
|
| |
llvm-svn: 168638
|
| |
|
|
| |
llvm-svn: 168637
|
| |
|
|
|
|
|
|
| |
doFinalization per module detangled from runOn?? calls, still has temporary code not to break ASAN to be removed when that pass conforms to the proposed model
Patch by Pedro Artigas, with feedback from by Chandler Carruth.
llvm-svn: 168635
|
| |
|
|
| |
llvm-svn: 168633
|
| |
|
|
|
|
|
|
|
| |
r168627), we no longer need to call the freezeReservedRegs() function a second
time. Previously, this pass was conservatively adding the FP to the set of
reserved registers, requiring the second update to the reserved registers.
rdar://12719844
llvm-svn: 168631
|
| |
|
|
|
|
|
|
|
| |
r168627), we no longer need to call the freezeReservedRegs() function a second
time. Previously, this pass was conservatively adding the FP to the set of
reserved registers, requiring the second update to the reserved registers.
rdar://12719844
llvm-svn: 168630
|
| |
|
|
|
|
|
|
| |
InstCombineLoadStoreAlloca.cpp, which had many issues.
(At least two bugs were noted on llvm-commits, and it was overly conservative.)
Instead, use getOrEnforceKnownAlignment.
llvm-svn: 168629
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This pass was conservative in that it always reserved the FP to enable dynamic
stack realignment, which allowed the RA to use aligned spills for vector
registers. This happens even when spills were not necessary. The RA has
since been improved to use unaligned spills when necessary.
The new behavior is to realign the stack if the frame pointer was already
reserved for some other reason, but don't reserve the frame pointer just
because a function contains vector virtual registers.
Part of rdar://12719844
llvm-svn: 168627
|
| |
|
|
| |
llvm-svn: 168622
|
| |
|
|
| |
llvm-svn: 168617
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
Enhancement to InstCombine. Try to catch this opportunity:
---------------------------------------------------------------
((X^C1) >> C2) ^ C3 => (X>>C2) ^ ((C1>>C2)^C3)
where the subexpression "X ^ C1" has more than one uses, and
"(X^C1) >> C2" has single use.
----------------------------------------------------------------
Reviewed by Nadav (with minor change per his request).
llvm-svn: 168615
|
| |
|
|
| |
llvm-svn: 168608
|
| |
|
|
|
|
|
| |
When I migrated the toascii simplifier in r168580 Benjamin Kramer noticed
a bug in one of the comments that I migrated.
llvm-svn: 168605
|
| |
|
|
|
|
|
| |
This patch migrates the printf optimizations from the simplify-libcalls
pass into the instcombine library call simplifier.
llvm-svn: 168604
|
| |
|
|
| |
llvm-svn: 168601
|
| |
|
|
| |
llvm-svn: 168600
|
| |
|
|
| |
llvm-svn: 168597
|
| |
|
|
| |
llvm-svn: 168592
|
| |
|
|
| |
llvm-svn: 168590
|
| |
|
|
|
|
|
|
| |
MachineInstrBuilder.
Simplify some repetitive code with it. No functionality change.
llvm-svn: 168587
|
| |
|
|
| |
llvm-svn: 168586
|
| |
|
|
|
|
| |
The bug can be triggered when we require LoopInfo analysis ahead of DominatorTree construction in a Module Pass. The cause is that the LoopInfo analysis itself also invokes DominatorTree construction, therefore, when PassManager schedules LoopInfo, it will add DominatorTree first. Then after that, when the PassManger turns to schedule DominatorTree invoked by the above ModulePass, it finds there is already a DominatorTree, so it delete the redundant one. However, somehow it still try to access that pass pointer after free as code pasted below, which results in segment fault.
llvm-svn: 168581
|
| |
|
|
|
|
|
| |
This patch migrates the toascii optimizations from the simplify-libcalls
pass into the instcombine library call simplifier.
llvm-svn: 168580
|
| |
|
|
|
|
|
| |
This patch migrates the isascii optimizations from the simplify-libcalls
pass into the instcombine library call simplifier.
llvm-svn: 168579
|
| |
|
|
|
|
|
| |
This patch migrates the isdigit optimizations from the simplify-libcalls
pass into the instcombine library call simplifier.
llvm-svn: 168578
|
| |
|
|
|
|
|
| |
This patch migrates the *abs optimizations from the simplify-libcalls
pass into the instcombine library call simplifier.
llvm-svn: 168574
|
| |
|
|
|
|
|
| |
This patch migrates the ffs* optimizations from the simplify-libcalls
pass into the instcombine library call simplifier.
llvm-svn: 168571
|
| |
|
|
| |
llvm-svn: 168570
|
| |
|
|
| |
llvm-svn: 168569
|
| |
|
|
| |
llvm-svn: 168568
|
| |
|
|
|
|
|
|
| |
- Widespread trailing space removal
- A dash of OCD spacing to block align enums
- joined a line that probably needed 80 cols a while back
llvm-svn: 168566
|
| |
|
|
|
|
|
| |
to support it. Original patch with the parsing and plumbing by the PaX team and
Roman Divacky. I added the bits in MCDwarf.cpp and the test.
llvm-svn: 168565
|
| |
|
|
|
|
|
|
| |
trivial copy ctors.
No functionality change.
llvm-svn: 168561
|
| |
|
|
| |
llvm-svn: 168560
|
| |
|
|
|
|
| |
a reference.
llvm-svn: 168559
|
| |
|
|
|
|
| |
induction variable.
llvm-svn: 168558
|
| |
|
|
| |
llvm-svn: 168557
|
| |
|
|
|
|
| |
earlier before IsExp10 could be set to true.
llvm-svn: 168553
|
| |
|
|
| |
llvm-svn: 168551
|
| |
|
|
|
|
| |
called at the start of the function and captured in a local variable.
llvm-svn: 168548
|
| |
|
|
| |
llvm-svn: 168546
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Necessary to give disassembler users (like darwin's otool) a possibility to
dlopen libLTO and still initialize the required LLVM bits. This used to go
through libMCDisassembler but that's a gross layering violation, the MC layer
can't pull in functions from the targets. Adding a function to libLTO is a bit
of a hack but not worse than exposing other disassembler bits from libLTO.
Fixes PR14362.
llvm-svn: 168545
|