| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
| |
Patch by Kay Tiong Khoo!
llvm-svn: 152487
|
| |
|
|
| |
llvm-svn: 152443
|
| |
|
|
|
|
|
|
|
|
| |
* Add enums and structures for GNU version information.
* Implement extraction of that information on a per-symbol basis (ELFObjectFile::getSymbolVersion).
* Implement a generic interface, GetELFSymbolVersion(), for getting the symbol version from the ObjectFile (hides the templating).
* Have llvm-readobj print out the version, when available.
* Add a test for the new feature: readobj-elf-versioning.test
llvm-svn: 152436
|
| |
|
|
|
|
|
|
|
| |
traversal, consider nodes for which the only successors are backedges
which the traversal is ignoring to be exit nodes. This fixes a problem
where the bottom-up traversal was failing to visit split blocks along
split loop backedges. This fixes rdar://10989035.
llvm-svn: 152421
|
| |
|
|
|
|
|
| |
prefix. Added a FIXME to remind us this still does not work when it is not the
first prefix.
llvm-svn: 152414
|
| |
|
|
| |
llvm-svn: 152406
|
| |
|
|
|
|
|
| |
negative switch cases if the branch condition is known to be positive.
Inspired by a recent improvement to GCC's VRP.
llvm-svn: 152405
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
introduced. Specifically, there are cost reductions for all
constant-operand icmp instructions against an alloca, regardless of
whether the alloca will in fact be elligible for SROA. That means we
don't want to abort the icmp reduction computation when we abort the
SROA reduction computation. That in turn frees us from the need to keep
a separate worklist and defer the ICmp calculations.
Use this new-found freedom and some judicious function boundaries to
factor the innards of computing the cost factor of any given instruction
out of the loop over the instructions and into static helper functions.
This greatly simplifies the code, and hopefully makes it more clear what
is happening here.
Reviewed by Eric Christopher. There is some concern that we'd like to
ensure this doesn't get out of hand, and I plan to benchmark the effects
of this change over the next few days along with some further fixes to
the inline cost.
llvm-svn: 152368
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Original commit message from r147481:
DAGCombine for transforming 128->256 casts into a vmovaps, rather
then a vxorps + vinsertf128 pair if the original vector came from a load.
Fix:
Unaligned loads need to generate a vmovups.
rdar://10974078
llvm-svn: 152366
|
| |
|
|
|
|
|
| |
The test fell back to the C backend, making it useless and it started to fail
on configurations that don't build the C backend.
llvm-svn: 152342
|
| |
|
|
| |
llvm-svn: 152292
|
| |
|
|
| |
llvm-svn: 152242
|
| |
|
|
|
|
| |
Patch by Michael Liao!
llvm-svn: 152232
|
| |
|
|
|
|
|
|
| |
as well as completely defined classes.
This fixes rdar://10956070
llvm-svn: 152171
|
| |
|
|
|
|
| |
performance regression (due to increased register pressure from overly aggressive pre-inc formation).
llvm-svn: 152162
|
| |
|
|
| |
llvm-svn: 152136
|
| |
|
|
| |
llvm-svn: 152127
|
| |
|
|
|
|
|
|
|
|
| |
When an instruction only writes sub-registers, it is still necessary to
add an <imp-def> operand for the super-register. When reloading into a
virtual register, rewriting will add the operand, but when loading
directly into a virtual register, the <imp-def> operand is still
necessary.
llvm-svn: 152095
|
| |
|
|
|
|
|
|
|
| |
The fpscr register contains both flags (set by FP operations/comparisons) and
control bits. The control bits (FPSCR) should be reserved, since they're always
available and needn't be defined before use. The flag bits (FPSCR_NZCV) should
like to be unreserved so they can be hoisted by MachineCSE. This fixes PR12165.
llvm-svn: 152076
|
| |
|
|
|
|
| |
rdar://10988114
llvm-svn: 152068
|
| |
|
|
| |
llvm-svn: 152066
|
| |
|
|
|
|
|
|
|
|
| |
This was testing the handling of sub-register coalescing followed by
remat. The original problem was caused by the extra <imp-def> operands
added by sub-register coalescing. Those <imp-def> operands are not
added any longer, and the test case passes even when the original patch
is reverted.
llvm-svn: 152040
|
| |
|
|
|
|
|
|
|
|
|
| |
In this update:
- I assumed neon2 does not imply vfpv4, but neon and vfpv4 imply neon2.
- I kept setting .fpu=neon-vfpv4 code attribute because that is what the
assembler understands.
Patch by Ana Pazos <apazos@codeaurora.org>
llvm-svn: 152036
|
| |
|
|
| |
llvm-svn: 152014
|
| |
|
|
|
|
|
|
|
|
|
| |
MachineOperands that define part of a virtual register must have an
<undef> flag if they are not intended as read-modify-write operands.
The old trick of adding an <imp-def> operand doesn't work any longer.
Fixes PR12177.
llvm-svn: 152008
|
| |
|
|
|
|
|
|
|
|
| |
equalities into phi node operands for which the equality is known to
hold in the incoming basic block. That's because replaceAllDominatedUsesWith
wasn't handling phi nodes correctly in general (that this didn't give wrong
results was just luck: the specific way GVN uses replaceAllDominatedUsesWith
precluded wrong changes to phi nodes).
llvm-svn: 152006
|
| |
|
|
|
|
|
|
| |
Some BBs can become dead after codegen preparation. If we delete them here, it
could help enable tail-call optimizations later on.
<rdar://problem/10256573>
llvm-svn: 152002
|
| |
|
|
| |
llvm-svn: 151958
|
| |
|
|
|
|
|
|
|
|
| |
forming constant ranges.
This could probably be made a lot smarter, but this is a common case and doesn't require LVI to scan a lot
of code. With this change CVP can optimize away the "shift == 0" case in Hashing.h that only gets hit when
"shift" is in a range not containing 0.
llvm-svn: 151919
|
| |
|
|
|
|
|
|
|
|
|
|
| |
In this instance we are generating the tail-call during legalizeDAG. The 2nd
floor call can't be a tail call because it clobbers %xmm1, which is defined by
the first floor call. The first floor call can't be a tail-call because it's
not in the tail position. The only reasonable way I could think to fix this
in a target-independent manner was to check for glue logic on the copy reg.
rdar://10930395
llvm-svn: 151877
|
| |
|
|
|
|
|
|
|
| |
The inline table needs to be constructed ahead of time so that it doesn't try to
create new strings while we're emitting everything.
This reverts commit a8ff9bccb399183cdd5f1c3cec2bda763664b4b0.
llvm-svn: 151864
|
| |
|
|
|
|
|
|
|
|
|
|
| |
floating point equality comparisons into integer ones with -ffast-math. The
issue is the optimization causes +0.0 != -0.0.
Now the optimization is only done when one side is known to be 0.0. The other
side's sign bit is masked off for the comparison.
rdar://10964603
llvm-svn: 151861
|
| |
|
|
|
|
|
|
|
| |
fixups that are being used to determine section offsets. Reduces
the total number of fixups by 50% for a non-trivial testcase.
Part of rdar://10413936
llvm-svn: 151852
|
| |
|
|
|
|
| |
Add ObjectFile::getLoadName() for retrieving the soname/installname of a shared object.
llvm-svn: 151845
|
| |
|
|
|
|
| |
runs into the undefined 15 condition code value.
llvm-svn: 151844
|
| |
|
|
|
|
|
|
|
|
|
| |
and stores was added.
- SelectAddr should return false if Parent is an unaligned f32 load or store.
- Only aligned load and store nodes should be matched to select reg+imm
floating point instructions.
- MIPS does not have support for f64 unaligned load or store instructions.
llvm-svn: 151843
|
| |
|
|
|
|
|
|
| |
so that the test will not fail when run on an Intel Atom
processor, due to the Atom scheduler producing an instruction sequence that is
different from that which is normally expected.
llvm-svn: 151832
|
| |
|
|
| |
llvm-svn: 151818
|
| |
|
|
| |
llvm-svn: 151816
|
| |
|
|
|
|
| |
Make darwin bots happier.
llvm-svn: 151813
|
| |
|
|
|
|
|
|
| |
though they could have sideeffects.
Only allow log2/exp2 to be converted to an intrinsic if they are declared "readnone".
llvm-svn: 151807
|
| |
|
|
| |
llvm-svn: 151795
|
| |
|
|
|
|
|
|
|
| |
* Add begin_dynamic_table() / end_dynamic_table() private interface to ELFObjectFile.
* Add begin_libraries_needed() / end_libraries_needed() interface to ObjectFile, for grabbing the list of needed libraries for a shared object or dynamic executable.
* Implement this new interface completely for ELF, leave stubs for COFF and MachO.
* Add 'llvm-readobj' tool for dumping ObjectFile information.
llvm-svn: 151785
|
| |
|
|
|
|
|
| |
While we're at it - don't copy vreg implicit operands while rematerializing.
This fixes PR12138.
llvm-svn: 151779
|
| |
|
|
| |
llvm-svn: 151778
|
| |
|
|
|
|
| |
optimization, making the lives of later passes easier.
llvm-svn: 151722
|
| |
|
|
|
|
| |
a constant. This fixes PR1768.
llvm-svn: 151713
|
| |
|
|
| |
llvm-svn: 151694
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
Without this hook, functions w/ a completely empty body (including no
epilogue) will cause an MCEmitter assertion failure.
For example,
define internal fastcc void @empty_function() {
unreachable
}
rdar://10947471
llvm-svn: 151673
|
| |
|
|
|
|
| |
and isWeak(), with a bitset of flags.
llvm-svn: 151670
|