| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
| |
llvm-svn: 141840
|
| |
|
|
|
|
|
|
|
|
| |
Now that MI->getRegClassConstraint() can also handle inline assembly,
don't bail when recomputing the register class of a virtual register
used by inline asm.
This fixes PR11078.
llvm-svn: 141836
|
| |
|
|
|
|
|
|
|
| |
Most instructions have some requirements for their register operands.
Usually, this is expressed as register class constraints in the
MCInstrDesc, but for inline assembly the constraints are encoded in the
flag words.
llvm-svn: 141835
|
| |
|
|
| |
llvm-svn: 141834
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
The inline asm operand constraint is initially encoded in the virtual
register for the operand, but that register class may change during
coalescing, and the original constraint is lost.
Encode the original register class as part of the flag word for each
inline asm operand. This makes it possible to recover the actual
constraint required by inline asm, just like we can for normal
instructions.
llvm-svn: 141833
|
| |
|
|
| |
llvm-svn: 141831
|
| |
|
|
|
|
|
|
|
|
| |
our current machine instruction defines a register with the same register class
as what's being replaced. This showed up in the SPEC 403.gcc benchmark, where it
would ICE because a tail call was expecting one register class but was given
another. (The machine instruction verifier catches this situation.)
<rdar://problem/10270968>
llvm-svn: 141830
|
| |
|
|
|
|
| |
behavior. Based on patch by Ahmed Charles.
llvm-svn: 141829
|
| |
|
|
|
|
| |
not offsets from the section.
llvm-svn: 141828
|
| |
|
|
|
|
| |
behavior for large signed integers. Based on patch by Ahmed Charles.
llvm-svn: 141827
|
| |
|
|
|
|
| |
match the required format.
llvm-svn: 141825
|
| |
|
|
| |
llvm-svn: 141824
|
| |
|
|
|
|
| |
to properly account for files with segment load commands that contain no sections.
llvm-svn: 141822
|
| |
|
|
|
|
| |
Based on patch by Ahmed Charles.
llvm-svn: 141820
|
| |
|
|
|
|
|
| |
The disassembler needs to use the AM5 factory methods instead of just
building up the immediate directly.
llvm-svn: 141819
|
| |
|
|
|
|
| |
behavior. Patch from Ahmed Charles.
llvm-svn: 141818
|
| |
|
|
|
|
| |
Found by accident while reviewing a patch to nearby code.
llvm-svn: 141816
|
| |
|
|
| |
llvm-svn: 141815
|
| |
|
|
|
|
|
|
| |
for cpp pre-processed assembly we give correct filename and line numbers when
reporting errors in assembly files when using clang and -integrated-as on .s
files. rdar://8998895
llvm-svn: 141814
|
| |
|
|
|
|
| |
to investigate the regressions.
llvm-svn: 141813
|
| |
|
|
|
|
|
|
|
|
|
| |
rather than the previous index. If a block has a single instruction, the
previous index may be in a different basic block.
I have no clue how this used to work on all of test-suite, because now this
failure is seen quite often when trying to compile code with -strong-phi-elim.
This fixes PR10252.
llvm-svn: 141812
|
| |
|
|
| |
llvm-svn: 141811
|
| |
|
|
| |
llvm-svn: 141807
|
| |
|
|
| |
llvm-svn: 141794
|
| |
|
|
| |
llvm-svn: 141787
|
| |
|
|
| |
llvm-svn: 141786
|
| |
|
|
| |
llvm-svn: 141781
|
| |
|
|
| |
llvm-svn: 141780
|
| |
|
|
|
|
| |
intended, but only by accident.
llvm-svn: 141779
|
| |
|
|
|
|
|
|
| |
MC/ELF/many-section.s not to fail (on msvc).
DenseMap::lookup(k) would return "default constructor value" when k was not met. It would be useless when value type were POD.
llvm-svn: 141774
|
| |
|
|
|
|
|
| |
containing loop's header to see if that's a landing pad. If it is, then we don't
want to hoist instructions out of the loop and above the header.
llvm-svn: 141767
|
| |
|
|
| |
llvm-svn: 141763
|
| |
|
|
| |
llvm-svn: 141761
|
| |
|
|
|
|
| |
Remove unused classes.
llvm-svn: 141757
|
| |
|
|
| |
llvm-svn: 141752
|
| |
|
|
| |
llvm-svn: 141750
|
| |
|
|
| |
llvm-svn: 141749
|
| |
|
|
|
|
|
|
|
| |
1. The speculation check may not have been performed if the BB hasn't had a load
LICM candidate.
2. If the candidate would be CSE'ed, then go ahead and speculatively LICM the
instruction even if it's in high register pressure situation.
llvm-svn: 141747
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
When widening a copy, we are reading a larger register that may not be
live. Use an <undef> flag to tell the register scavenger and machine
code verifier that we know the value isn't defined.
We now widen:
%S6<def> = COPY %S4<kill>, %D3<imp-def>
into:
%D3<def> = VMOVD %D2<undef>, pred:14, pred:%noreg, %S4<imp-use,kill>
This also keeps the <kill> flag on %S4 so we don't inadvertently kill a
live value in %S5.
Finally, ensure that ARMBaseInstrInfo::setExecutionDomain() preserves
the <undef> flag when converting VMOVD to VORR.
llvm-svn: 141746
|
| |
|
|
|
|
| |
Also teach MachineLICM to avoid "speculation" when register pressure is high.
llvm-svn: 141744
|
| |
|
|
| |
llvm-svn: 141743
|
| |
|
|
|
|
| |
instructions with two register operands derive from it.
llvm-svn: 141742
|
| |
|
|
| |
llvm-svn: 141741
|
| |
|
|
| |
llvm-svn: 141739
|
| |
|
|
| |
llvm-svn: 141737
|
| |
|
|
|
|
|
| |
arithmetic and logical instructions with three register operands derive from
them. Fix instruction encoding too.
llvm-svn: 141736
|
| |
|
|
| |
llvm-svn: 141734
|
| |
|
|
| |
llvm-svn: 141733
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
file. Since it should only be used when necessary propagate it through
the backend code generation and tweak testcases accordingly.
This helps with code like in clang's test/CodeGen/debug-info-line.c where
we have multiple #line directives within a single lexical block and want
to generate only a single block that contains each file change.
Part of rdar://10246360
llvm-svn: 141729
|
| |
|
|
| |
llvm-svn: 141728
|