| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
|
|
| |
copy.
llvm-svn: 78141
|
| |
|
|
| |
llvm-svn: 78139
|
| |
|
|
| |
llvm-svn: 78138
|
| |
|
|
|
|
|
|
|
|
|
| |
calls were originally put in place because errs() at one time was
not unbuffered, and these print routines are commonly used with errs()
for debugging. However, errs() is now properly unbuffered, so the
flush calls are no longer needed. This significantly reduces the
number of write(2) calls for regular asm printing when there are many
small functions.
llvm-svn: 78137
|
| |
|
|
|
|
|
|
|
| |
Get rid of yesterday's code to fix the register usage during isel.
Select the new DAG nodes to machine instructions. The new pre-alloc pass
to choose adjacent registers for these results is not done, so the
results of this will generally not assemble yet.
llvm-svn: 78136
|
| |
|
|
| |
llvm-svn: 78135
|
| |
|
|
|
|
|
| |
fork call. This eliminates a need for <iostream>. Also remove
needless fsync calls.
llvm-svn: 78131
|
| |
|
|
| |
llvm-svn: 78130
|
| |
|
|
|
|
|
|
|
|
| |
for ELF to work.
2) RIP addressing: Use SIB bytes for absolute relocations where RegBase=0,
IndexReg=0.
3) The JIT can get the real address of cstpools and jmptables during
code emission, fix that for object code emission
llvm-svn: 78129
|
| |
|
|
|
|
| |
Add a comment explaining why.
llvm-svn: 78128
|
| |
|
|
|
|
| |
address from the reverse mapping, and add a test that this works now.
llvm-svn: 78127
|
| |
|
|
| |
llvm-svn: 78126
|
| |
|
|
| |
llvm-svn: 78125
|
| |
|
|
|
|
| |
yet, but there will be in the near future.
llvm-svn: 78122
|
| |
|
|
|
|
|
| |
matches what the comment says, and it avoids spurious BitCast
instructions for Argument values.
llvm-svn: 78121
|
| |
|
|
|
|
| |
and 126 if it is not executable.
llvm-svn: 78120
|
| |
|
|
| |
llvm-svn: 78119
|
| |
|
|
| |
llvm-svn: 78118
|
| |
|
|
| |
llvm-svn: 78116
|
| |
|
|
|
|
|
|
| |
header, to make LLVMContextImpl.h
not hideous. Also, fix some MSVC compile errors.
llvm-svn: 78115
|
| |
|
|
|
|
|
| |
For other VLDn and VSTn operations, we need to list the multiple registers
explicitly anyway, so there's no point in special-casing this one usage.
llvm-svn: 78109
|
| |
|
|
|
|
| |
This fixes PR4528.
llvm-svn: 78107
|
| |
|
|
|
|
|
|
|
| |
scavenger.
Imp-def is *not* allowed to redefine a live register.
Imp-use is *not* allowed to use a dead register.
llvm-svn: 78106
|
| |
|
|
| |
llvm-svn: 78105
|
| |
|
|
| |
llvm-svn: 78104
|
| |
|
|
|
|
|
| |
still get "intel syntax" instructions from llc with
-x86-asm-syntax=intel
llvm-svn: 78103
|
| |
|
|
| |
llvm-svn: 78101
|
| |
|
|
|
|
|
| |
distinguish that the result is errno, so it can't use it to provide more
information about the error (it also exposes the numeric value of errno).
llvm-svn: 78098
|
| |
|
|
| |
llvm-svn: 78097
|
| |
|
|
|
|
|
| |
the masm backend. If anyone cares about masm in the future,
we'll have semantic sections it can hang off of.
llvm-svn: 78096
|
| |
|
|
|
|
|
| |
For an undef operand, MO.getReg() is meaningless and we should not use it.
Undef operands should be skipped entirely.
llvm-svn: 78095
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
of registers.
When LowerExtract eliminates an EXTRACT_SUBREG with a kill flag, it moves the
kill flag to the place where the sub-register is killed. This can accidentally
overlap with the use of a sibling sub-register, and we have trouble.
In the test case we have this code:
Live Ins: %R0 %R1 %R2
%R2L<def> = EXTRACT_SUBREG %R2<kill>, 1
%R2H<def> = LOAD16fi <fi#-1>, 0, Mem:LD(2,4) [FixedStack-1 + 0]
%R1L<def> = EXTRACT_SUBREG %R1<kill>, 1
%R0L<def> = EXTRACT_SUBREG %R0<kill>, 1
%R0H<def> = ADD16 %R2H<kill>, %R2L<kill>, %AZ<imp-def>, %AN<imp-def>, %AC0<imp-def>, %V<imp-def>, %VS<imp-def>
subreg: CONVERTING: %R2L<def> = EXTRACT_SUBREG %R2<kill>, 1
subreg: eliminated!
subreg: killed here: %R0H<def> = ADD16 %R2H, %R2L, %R2<imp-use,kill>, %AZ<imp-def>, %AN<imp-def>, %AC0<imp-def>, %V<imp-def>, %VS<imp-def>
The kill flag on %R2 is moved to the last instruction, and the live range overlaps with the definition of %R2H:
*** Bad machine code: Redefining a live physical register ***
- function: f
- basic block: 0x18358c0 (#0)
- instruction: %R2H<def> = LOAD16fi <fi#-1>, 0, Mem:LD(2,4) [FixedStack-1 + 0]
Register R2H was defined but already live.
The fix is to replace EXTRACT_SUBREG with IMPLICIT_DEF instead of eliminating
it completely:
subreg: CONVERTING: %R2L<def> = EXTRACT_SUBREG %R2<kill>, 1
subreg: replace by: %R2L<def> = IMPLICIT_DEF %R2<kill>
Note that these IMPLICIT_DEF instructions survive to the asm output. It is
necessary to fix the stack-color-with-reg test case because of that.
llvm-svn: 78093
|
| |
|
|
|
|
|
|
|
|
|
| |
Implicit operands no longer get a free pass: Imp-use requires a live register
and imp-def requires a dead register.
There is also no special rule allowing redefinition of a sub-register when the
super-register is live. The super register must have imp-kill+imp-def operands
instead.
llvm-svn: 78090
|
| |
|
|
|
|
| |
The only exception is CC.
llvm-svn: 78089
|
| |
|
|
| |
llvm-svn: 78086
|
| |
|
|
| |
llvm-svn: 78085
|
| |
|
|
| |
llvm-svn: 78082
|
| |
|
|
|
|
| |
to enable. Added patterns for some binary FP operations.
llvm-svn: 78081
|
| |
|
|
|
|
|
|
|
| |
killed by another operand.
There is probably a better fix. Either 1) scavenger can look at other operands, or
2) livevariables can be smarter about kill markers. Patches welcome.
llvm-svn: 78072
|
| |
|
|
| |
llvm-svn: 78070
|
| |
|
|
|
|
| |
__TEXT,__ustring section on darwin.
llvm-svn: 78068
|
| |
|
|
|
|
| |
it is just being used as a prefix, so forward substitute it directly.
llvm-svn: 78067
|
| |
|
|
|
|
| |
section on ELF targets.
llvm-svn: 78066
|
| |
|
|
| |
llvm-svn: 78060
|
| |
|
|
| |
llvm-svn: 78059
|
| |
|
|
|
|
| |
ldm / stm.
llvm-svn: 78057
|
| |
|
|
|
|
| |
This fixes PR4666.
llvm-svn: 78056
|
| |
|
|
|
|
|
|
| |
add new concrete versions for 1/2/4-byte mergable strings.
These are not actually created yet.
llvm-svn: 78055
|
| |
|
|
| |
llvm-svn: 78053
|
| |
|
|
|
|
| |
around in a tree I forgot about.
llvm-svn: 78048
|