| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
| |
No one uses *-mingw64. mingw-w64 is represented as {i686|x86_64}-w64-mingw32. In llvm side, i686 and x64 can be treated as similar way.
llvm-svn: 125747
|
|
|
|
| |
llvm-svn: 125746
|
|
|
|
| |
llvm-svn: 124639
|
|
|
|
| |
llvm-svn: 124077
|
|
|
|
|
|
| |
and fixes here and there.
llvm-svn: 123170
|
|
|
|
| |
llvm-svn: 119754
|
|
|
|
|
|
| |
out of TargetRegisterInfo to TargetFrameInfo, which is definitely much better suitable place
llvm-svn: 119097
|
|
|
|
| |
llvm-svn: 116083
|
|
|
|
|
|
| |
Patch by Cameron!
llvm-svn: 115480
|
|
|
|
|
|
|
|
| |
so and also change X86 for consistency.
Investigating if this can be improved a bit.
llvm-svn: 115469
|
|
|
|
|
|
| |
defaults to small pic code model.
llvm-svn: 111741
|
|
|
|
| |
llvm-svn: 111173
|
|
|
|
|
|
|
|
|
|
| |
target.
- The COFF backend doesn't support MingW/Cygwin at the moment, it'll report an
error, but it's still much better than random assertions from the MachO backend.
- We want to make ELF the default eventually, it's what the majority of targets use.
llvm-svn: 110197
|
|
|
|
| |
llvm-svn: 109947
|
|
|
|
| |
llvm-svn: 109494
|
|
|
|
|
|
|
|
|
| |
pass that inserted it.
It is no longer necessary to limit the live ranges of FP registers to a single
basic block.
llvm-svn: 108536
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
FP_REG_KILL instructions are still inserted, but can be disabled by passing
-live-x87 to llc. The X87FPRegKillInserterPass is going to be removed shortly.
CFG edges are partioned into bundles where the x87 stack must be allocated
identically. Code is insertad at the end of each basic block that shuffles the
live FP registers to match the outgoing bundles expectations.
This fix is in preparation for some upcoming register allocator improvements
that may extend the live range of registers beyond a basic block, similar to
LICM. It also provides a nice runtime speedup if you are building with
-mfpmath=387.
llvm-svn: 108529
|
|
|
|
|
|
|
|
|
| |
- Check getBytesToPopOnReturn().
- Eschew ST0 and ST1 for return values.
- Fix the PIC base register initialization so that it doesn't ever
fail to end up the top of the entry block.
llvm-svn: 108039
|
|
|
|
|
|
|
| |
the block before calling the expansion hook. And don't
put EFLAGS in a mbb's live-in list twice.
llvm-svn: 107691
|
|
|
|
| |
llvm-svn: 107668
|
|
|
|
|
|
| |
the pseudo instruction is not at the end of the block.
llvm-svn: 107655
|
|
|
|
|
|
|
|
|
| |
isn't ideal if we want to be able to use another object file format.
Add a createObjectStreamer() factory method so that the correct object
file streamer can be instantiated for a given target triple.
llvm-svn: 104318
|
|
|
|
|
|
|
|
| |
Move EmitTargetCodeForMemcpy, EmitTargetCodeForMemset, and
EmitTargetCodeForMemmove out of TargetLowering and into
SelectionDAGInfo to exercise this.
llvm-svn: 103481
|
|
|
|
|
|
| |
hack the code to turn it off when debugging.
llvm-svn: 103083
|
|
|
|
| |
llvm-svn: 102941
|
|
|
|
| |
llvm-svn: 101978
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
When a frame pointer is not otherwise required, and dynamic stack alignment
is necessary solely due to the spilling of a register with larger alignment
requirements than the default stack alignment, the frame pointer can be both
used as a general purpose register and a frame pointer. That goes poorly, for
obvious reasons. This patch brings back a bit of old logic for identifying
the use of such registers and conservatively reserves the frame pointer
during register allocation in such cases.
For now, implement for X86 only since it's 32-bit linux which is hitting this,
and we want a targeted fix for 2.7. As a follow-on, this will be expanded
to handle other targets, as theoretically the problem could arise elsewhere
as well.
llvm-svn: 100559
|
|
|
|
| |
llvm-svn: 99954
|
|
|
|
|
|
| |
Not running 'make check-all' before committing is a bad idea.
llvm-svn: 99933
|
|
|
|
| |
llvm-svn: 99931
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
crossings.
On Nehalem and newer CPUs there is a 2 cycle latency penalty on using a register
in a different domain than where it was defined. Some instructions have
equvivalents for different domains, like por/orps/orpd.
The SSEDomainFix pass tries to minimize the number of domain crossings by
changing between equvivalent opcodes where possible.
This is a work in progress, in particular the pass doesn't do anything yet. SSE
instructions are tagged with their execution domain in TableGen using the last
two bits of TSFlags. Note that not all instructions are tagged correctly. Life
just isn't that simple.
The SSE execution domain issue is very similar to the ARM NEON/VFP pipeline
issue handled by NEONMoveFixPass. This pass may become target independent to
handle both.
llvm-svn: 99524
|
|
|
|
|
|
|
|
| |
domain crossings."
This reverts commit 99345. It was breaking buildbots.
llvm-svn: 99352
|
|
|
|
|
|
|
|
|
| |
crossings.
This is work in progress. So far, SSE execution domain tables are added to
X86InstrInfo, and a skeleton pass is enabled with -sse-domain-fix.
llvm-svn: 99345
|
|
|
|
| |
llvm-svn: 99097
|
|
|
|
| |
llvm-svn: 96763
|
|
|
|
|
|
| |
Personality / FDE / LSDA / TType encoding depending on target / options (e.g. code model / relocation model) - MCIzation of Dwarf EH printer to use encoding information - Stub generation for ELF target (needed for indirect references) - Some other small changes here and there
llvm-svn: 96285
|
|
|
|
|
|
|
| |
Otherwise AT&T asm printer is used with non-compatible MCAsmInfo and
there is no way to override this behaviour.
llvm-svn: 96165
|
|
|
|
|
|
|
| |
We still have the templated X86 JIT emitter, *and* the
almost-copy in X86InstrInfo for getting instruction sizes.
llvm-svn: 96059
|
|
|
|
|
|
|
|
|
|
| |
only run for x86 with fastisel. I've found it being very effective in
eliminating some obvious dead code as result of formal parameter lowering
especially when tail call optimization eliminated the need for some of the loads
from fixed frame objects. It also shrinks a number of the tests. A couple of
tests no longer make sense and are now eliminated.
llvm-svn: 95493
|
|
|
|
|
|
| |
-enable-new-x86-encoder until its stable.
llvm-svn: 95256
|
|
|
|
| |
llvm-svn: 95254
|
|
|
|
| |
llvm-svn: 95144
|
|
|
|
|
|
|
| |
eliminate random "code emitter" stuff in Alpha, except for
the JIT path. Next up, remove the template cruft.
llvm-svn: 95131
|
|
|
|
|
|
|
|
|
|
|
| |
function can support dynamic stack realignment. That's a much easier question
to answer at instruction selection stage than whether the function actually
will have dynamic alignment prologue. This allows the removal of the
stack alignment heuristic pass, and improves code quality for cases where
the heuristic would result in dynamic alignment code being generated when
it was not strictly necessary.
llvm-svn: 93885
|
|
|
|
| |
llvm-svn: 93841
|
|
|
|
|
|
| |
- Greatly improve the comments to the getLSDAEncoding method.
llvm-svn: 93796
|
|
|
|
| |
llvm-svn: 93755
|
|
|
|
|
|
|
|
| |
idea, but unfortunately necessary.
- Default to using 4-bytes for the LSDA pointer encoding to agree with the
encoded value in the CIE.
llvm-svn: 93753
|
|
|
|
|
|
|
|
| |
The CIE says that the LSDA point in the FDE section is an "sdata4". That's fine,
but we need it to actually be 4-bytes in the FDE for some platforms. Allow
individual platforms to decide for themselves.
llvm-svn: 93616
|
|
|
|
|
|
| |
X86 codegen that were causing circular symbol dependencies.
llvm-svn: 91871
|