| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
|
|
| |
Patch by Dimitry Andric!
llvm-svn: 103727
|
| |
|
|
|
|
| |
use of it in MachineCSE.
llvm-svn: 103726
|
| |
|
|
|
|
| |
basic block.
llvm-svn: 103725
|
| |
|
|
| |
llvm-svn: 103724
|
| |
|
|
| |
llvm-svn: 103715
|
| |
|
|
|
|
| |
get assigned ordinals properly.
llvm-svn: 103711
|
| |
|
|
|
|
| |
simplifies layout.
llvm-svn: 103710
|
| |
|
|
| |
llvm-svn: 103709
|
| |
|
|
| |
llvm-svn: 103702
|
| |
|
|
| |
llvm-svn: 103700
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
vector<>::push_back() in:
int foo(vector<int> &a, vector<unsigned> &b) {
a.push_back(10);
b.push_back(11);
}
to two calls to the same push_back function, or fold away the two copies of
push_back() in:
struct T { int; };
struct S { char; };
vector<T*> t;
vector<S*> s;
void f(T *x) { t.push_back(x); }
void g(S *x) { s.push_back(x); }
but leave f() and g() separate, since they refer to two different global
variables.
llvm-svn: 103698
|
| |
|
|
| |
llvm-svn: 103697
|
| |
|
|
|
|
| |
utility functions.
llvm-svn: 103695
|
| |
|
|
| |
llvm-svn: 103694
|
| |
|
|
|
|
|
|
| |
of manually doing padding/editing layout in LayoutSection().
- This probably seems like six-of-one and half-dozen of another, but there
is a method to my madness.
llvm-svn: 103693
|
| |
|
|
|
|
| |
registers. This allows folding loads and stores into VMOVQ.
llvm-svn: 103692
|
| |
|
|
|
|
| |
says the align fragment shouldn't contribute to the logical section size, it is will be used for cleaning up the code to handle section alignment.
llvm-svn: 103690
|
| |
|
|
|
|
| |
consumed by the section. This can differ from both the section logical size, and the section size on disk (although the current code handles this without making an explicit distinction).
llvm-svn: 103689
|
| |
|
|
|
|
| |
This causes way more identity copies to be generated, ripe for coalescing.
llvm-svn: 103686
|
| |
|
|
| |
llvm-svn: 103685
|
| |
|
|
| |
llvm-svn: 103684
|
| |
|
|
| |
llvm-svn: 103683
|
| |
|
|
|
|
|
|
| |
ParseDirectiveDarwinZerofill instead of hard coding the
check for identifier. This allows quoted symbol names to
be used.
llvm-svn: 103682
|
| |
|
|
|
|
| |
after testing before committing.
llvm-svn: 103681
|
| |
|
|
|
|
| |
information when a copy is introduced.
llvm-svn: 103680
|
| |
|
|
|
|
| |
do not match.
llvm-svn: 103679
|
| |
|
|
| |
llvm-svn: 103677
|
| |
|
|
|
|
|
|
| |
lower them to the correct x86-64 instructions since we
don't have a clean way to handle this in td files yet.
rdar://7947184
llvm-svn: 103668
|
| |
|
|
|
|
| |
implicit operands and memoperands. Also, expand instructions even if their defs are "dead" since they may have implicit kill operands.
llvm-svn: 103667
|
| |
|
|
| |
llvm-svn: 103665
|
| |
|
|
| |
llvm-svn: 103664
|
| |
|
|
| |
llvm-svn: 103663
|
| |
|
|
|
|
| |
This allows using ValueSize==0 to represent a virtual fill.
llvm-svn: 103662
|
| |
|
|
|
|
| |
MCAlignFragments for this.
llvm-svn: 103661
|
| |
|
|
|
|
| |
part first. rdar://7947184
llvm-svn: 103660
|
| |
|
|
|
|
|
|
|
|
| |
on RAUW of functions, this is a correctness issue instead of a mere memory
usage problem.
No testcase until the new MergeFunctions can land.
llvm-svn: 103653
|
| |
|
|
| |
llvm-svn: 103651
|
| |
|
|
| |
llvm-svn: 103649
|
| |
|
|
| |
llvm-svn: 103648
|
| |
|
|
| |
llvm-svn: 103642
|
| |
|
|
|
|
| |
The X86 floating point stack pass and others depend on good kill flags.
llvm-svn: 103635
|
| |
|
|
| |
llvm-svn: 103627
|
| |
|
|
| |
llvm-svn: 103616
|
| |
|
|
|
|
| |
Made a stylistic changed to the code/comments related to the unsupported COMDAT selection type IMAGE_COMDAT_SELECT_LARGEST based on from Anton Korobeynikov.
llvm-svn: 103590
|
| |
|
|
| |
llvm-svn: 103586
|
| |
|
|
| |
llvm-svn: 103576
|
| |
|
|
|
|
| |
Now, the .linkonce directive is emitted as part of MCSectionCOFF::PrintSwitchToSection instead of AsmPrinter::EmitLinkage since it is an attribute of the section the symbol was placed into not the symbol itself.
llvm-svn: 103568
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
v1024 = REG_SEQUENCE ...
v1025 = EXTRACT_SUBREG v1024, 5
v1026 = EXTRACR_SUBREG v1024, 6
= VSTxx <addr>, v1025, v1026
The REG_SEQUENCE ensures the sources that feed into the VST instruction
are getting the right register allocation so they form a large super-
register. The extract_subreg will be coalesced away all would just work:
v1024 = REG_SEQUENCE ...
= VSTxx <addr>, v1024:5, v1024:6
The problem is if the coalescer isn't run, the extract_subreg instructions
would stick around and there is no assurance v1025 and v1026 will get the
right registers.
As a short term workaround, teach the NEON pre-allocation pass to transfer
the sub-register indices over. An alternative would be do it 2addr pass
when reg_sequence's are eliminated. But that *seems* wrong and require
updating liveness information.
Another alternative is to do this in the scheduler when the instructions are
created. But that would mean somehow the scheduler this has to be done for
correctness reason. That's yucky as well. So for now, we are leaving this
in the target specific pass.
llvm-svn: 103540
|
| |
|
|
| |
llvm-svn: 103539
|
| |
|
|
| |
llvm-svn: 103538
|