| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
| |
llvm-svn: 150795
|
| |
|
|
|
|
|
|
|
| |
useful to represent a variable that is const in the source but can't be constant
in the IR because of a non-trivial constructor. If globalopt evaluates the
constructor, and there was an invariant.start with no matching invariant.end
possible, it will mark the global constant afterwards.
llvm-svn: 150794
|
| |
|
|
|
|
| |
instructions to be emitted.
llvm-svn: 150782
|
| |
|
|
| |
llvm-svn: 150780
|
| |
|
|
| |
llvm-svn: 150779
|
| |
|
|
| |
llvm-svn: 150778
|
| |
|
|
| |
llvm-svn: 150775
|
| |
|
|
|
|
| |
entend flag.
llvm-svn: 150774
|
| |
|
|
| |
llvm-svn: 150773
|
| |
|
|
|
|
| |
NDEBUG guards.
llvm-svn: 150771
|
| |
|
|
|
|
| |
bail on reserved registers. This *should* be safe as of r150786.
llvm-svn: 150769
|
| |
|
|
|
|
| |
un-allocatable registers.
llvm-svn: 150768
|
| |
|
|
| |
llvm-svn: 150739
|
| |
|
|
| |
llvm-svn: 150737
|
| |
|
|
|
|
|
|
|
| |
Call clobbers are now represented with register mask operands. The
regmask can easily represent the fact that xmm6 is call-preserved while
ymm6 isn't. This is automatically computed by TableGen from the
CalleeSavedRegs containing xmm6.
llvm-svn: 150709
|
| |
|
|
|
|
|
| |
The different calling conventions and call-preserved registers are
represented with regmask operands that are added dynamically.
llvm-svn: 150708
|
| |
|
|
| |
llvm-svn: 150706
|
| |
|
|
|
|
| |
and introduces subtle miscompiles in many places.
llvm-svn: 150703
|
| |
|
|
|
|
|
| |
Turns out this isn't safe, because the code below depends on LHS and RHS having
the same type.
llvm-svn: 150695
|
| |
|
|
| |
llvm-svn: 150694
|
| |
|
|
|
|
| |
pointers.
llvm-svn: 150690
|
| |
|
|
|
|
| |
are named elsewhere.
llvm-svn: 150679
|
| |
|
|
| |
llvm-svn: 150670
|
| |
|
|
|
|
| |
N) for all operations. This fixes a horrible worst case with lots of nodes where 99% of the time was being spent in std::remove.
llvm-svn: 150669
|
| |
|
|
|
|
|
| |
With MSVCRT, prior checker missed emission of #INF and #NAN.
FIXME: Checking should be simpler.
llvm-svn: 150667
|
| |
|
|
|
|
| |
atof(3) might behave differently among platforms.
llvm-svn: 150661
|
| |
|
|
| |
llvm-svn: 150655
|
| |
|
|
| |
llvm-svn: 150654
|
| |
|
|
|
|
| |
registers.
llvm-svn: 150653
|
| |
|
|
|
|
| |
Patrik Hägglund, with slightly modified test. Issue reported by Patrik Hägglund on llvmdev.
llvm-svn: 150642
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Call instructions no longer have a list of 43 call-clobbered registers.
Instead, they get a single register mask operand with a bit vector of
call-preserved registers.
This saves a lot of memory, 42 x 32 bytes = 1344 bytes per call
instruction, and it speeds up building call instructions because those
43 imp-def operands no longer need to be added to use-def lists. (And
removed and shifted and re-added for every explicit call operand).
Passes like LiveVariables, LiveIntervals, RAGreedy, PEI, and
BranchFolding are significantly faster because they can deal with call
clobbers in bulk.
Overall, clang -O2 is between 0% and 8% faster, uniformly distributed
depending on call density in the compiled code. Debug builds using
clang -O0 are 0% - 3% faster.
I have verified that this patch doesn't change the assembly generated
for the LLVM nightly test suite when building with -disable-copyprop
and -disable-branch-fold.
Branch folding behaves slightly differently in a few cases because call
instructions have different hash values now.
Copy propagation flushes its data structures when it crosses a register
mask operand. This causes it to leave a few dead copies behind, on the
order of 20 instruction across the entire nightly test suite, including
SPEC. Fixing this properly would require the pass to use different data
structures.
llvm-svn: 150638
|
| |
|
|
|
|
|
| |
Don't attempt to move instructions with regmask operands. They are most
likely calls anyway.
llvm-svn: 150634
|
| |
|
|
|
|
| |
The existing framework for postra scheduling is library local. We want to keep it that way. Soon we will have a more general MachineScheduler interface. At that time, various bits will be exposed to targets. In the meantime, the VLIWPacketizer wants to use ScheduleDAGInstrs directly, so it needs to wrapped in a PIMPL to avoid exposing it to the target interface.
llvm-svn: 150633
|
| |
|
|
| |
llvm-svn: 150632
|
| |
|
|
| |
llvm-svn: 150630
|
| |
|
|
| |
llvm-svn: 150628
|
| |
|
|
| |
llvm-svn: 150627
|
| |
|
|
|
|
|
|
|
| |
method. This allows the target lowering code to not have to deal with MDNodes.
Also, avoid leaking memory like a sieve by not creating a global variable for
the image info section, but just emitting the code directly.
llvm-svn: 150624
|
| |
|
|
| |
llvm-svn: 150623
|
| |
|
|
|
|
|
|
| |
Accomplished by moving the body of StringRef::edit_distance into
a separate function that accepts two ArrayRefs, and making
StringRef::edit_distance a wrapper around the new function.
llvm-svn: 150621
|
| |
|
|
| |
llvm-svn: 150619
|
| |
|
|
| |
llvm-svn: 150608
|
| |
|
|
|
|
| |
Patch by Sundeep!
llvm-svn: 150607
|
| |
|
|
| |
llvm-svn: 150606
|
| |
|
|
|
|
| |
This reverts commit 1656806a944bbd23e98c6e578810fe02495ab741.
llvm-svn: 150605
|
| |
|
|
|
|
|
|
| |
as it's breaking the build.
This reverts commit 11241abca5e2a313412fed594bb9d9fa2a2057fb.
llvm-svn: 150604
|
| |
|
|
| |
llvm-svn: 150603
|
| |
|
|
| |
llvm-svn: 150601
|
| |
|
|
| |
llvm-svn: 150591
|
| |
|
|
|
|
| |
EmitValue (literal values). Previously only called on expressions in instructions. New test cases added to tls.s, tls-i386.s. Resolves PR11981.
llvm-svn: 150582
|