| Commit message (Collapse) | Author | Age | Files | Lines | 
| | 
| 
| 
| 
| 
| 
|  | 
because assembler/linker can't cope with weak absolutes.
PR 1880.
llvm-svn: 45811
 | 
| | 
| 
| 
| 
| 
|  | 
Otherwise we can end up with something like ADD32ri %esp, x which two-address pass won't like.
llvm-svn: 45798
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
than hardware supported type will be scalarized, so we
can infer their alignment from that info.
We now codegen pr1845 into:
_boolVectorSelect:
	lbz r2, 0(r3)
	stb r2, -16(r1)
	blr 
llvm-svn: 45796
 | 
| | 
| 
| 
|  | 
llvm-svn: 45792
 | 
| | 
| 
| 
|  | 
llvm-svn: 45768
 | 
| | 
| 
| 
|  | 
llvm-svn: 45766
 | 
| | 
| 
| 
| 
| 
| 
| 
|  | 
on 64-bit builds.  Analysis and original patch
by Török Edwin.  Code audit found another place
with the same problem, also fixed here.
llvm-svn: 45746
 | 
| | 
| 
| 
| 
| 
| 
| 
|  | 
the code generated is not wonderful.  This turns a miscompilation into
a code quality bug (noted in the ppc readme).  This fixes PR642, which
is over 2 years old (!).  Nate, please review this.
llvm-svn: 45742
 | 
| | 
| 
| 
|  | 
llvm-svn: 45734
 | 
| | 
| 
| 
|  | 
llvm-svn: 45733
 | 
| | 
| 
| 
|  | 
llvm-svn: 45731
 | 
| | 
| 
| 
| 
| 
|  | 
isSimpleLoad = 1.
llvm-svn: 45727
 | 
| | 
| 
| 
|  | 
llvm-svn: 45726
 | 
| | 
| 
| 
|  | 
llvm-svn: 45725
 | 
| | 
| 
| 
|  | 
llvm-svn: 45723
 | 
| | 
| 
| 
|  | 
llvm-svn: 45720
 | 
| | 
| 
| 
|  | 
llvm-svn: 45712
 | 
| | 
| 
| 
|  | 
llvm-svn: 45703
 | 
| | 
| 
| 
|  | 
llvm-svn: 45701
 | 
| | 
| 
| 
|  | 
llvm-svn: 45699
 | 
| | 
| 
| 
|  | 
llvm-svn: 45698
 | 
| | 
| 
| 
| 
| 
| 
|  | 
Make MachineInstr::getDesc return a reference instead
of a pointer, since it can never be null.
llvm-svn: 45695
 | 
| | 
| 
| 
| 
| 
| 
| 
|  | 
all clients over to using predicates instead of these flags directly.
These are now private values which are only to be used to statically
initialize the tables.
llvm-svn: 45692
 | 
| | 
| 
| 
|  | 
llvm-svn: 45691
 | 
| | 
| 
| 
| 
| 
| 
|  | 
Evan, please review the comments I added to getNumDefs to make sure
that they are accurate, thx.
llvm-svn: 45687
 | 
| | 
| 
| 
|  | 
llvm-svn: 45685
 | 
| | 
| 
| 
|  | 
llvm-svn: 45683
 | 
| | 
| 
| 
|  | 
llvm-svn: 45680
 | 
| | 
| 
| 
|  | 
llvm-svn: 45679
 | 
| | 
| 
| 
| 
| 
| 
|  | 
over to using them, instead of diddling Flags directly.  Change the
various flags from const variables to enums.
llvm-svn: 45677
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
that it is cheap and efficient to get.
Move a variety of predicates from TargetInstrInfo into 
TargetInstrDescriptor, which makes it much easier to query a predicate
when you don't have TII around.  Now you can use MI->getDesc()->isBranch()
instead of going through TII, and this is much more efficient anyway. Not
all of the predicates have been moved over yet.
Update old code that used MI->getInstrDescriptor()->Flags to use the
new predicates in many places.
llvm-svn: 45674
 | 
| | 
| 
| 
| 
| 
|  | 
Some day I'll get it all moved over...
llvm-svn: 45672
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
|  | 
up to the various compiler pipelines.
This doesn't actually add support for any GC algorithms, which means it 
temporarily breaks a few tests. To be fixed shortly.
llvm-svn: 45669
 | 
| | 
| 
| 
|  | 
llvm-svn: 45668
 | 
| | 
| 
| 
|  | 
llvm-svn: 45667
 | 
| | 
| 
| 
|  | 
llvm-svn: 45656
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
instead of "ISD::STORE".  This allows us to mark target-specific dag
nodes as storing (such as ppc byteswap stores).  This allows us to remove
more explicit isStore flags from the .td files.
Finally, add a warning for when a .td file contains an explicit 
isStore and tblgen is able to infer it.
llvm-svn: 45654
 | 
| | 
| 
| 
|  | 
llvm-svn: 45653
 | 
| | 
| 
| 
|  | 
llvm-svn: 45652
 | 
| | 
| 
| 
|  | 
llvm-svn: 45638
 | 
| | 
| 
| 
| 
| 
|  | 
the target independent legalizer.
llvm-svn: 45631
 | 
| | 
| 
| 
| 
| 
| 
| 
|  | 
unifying the copied algorithms and saving over 500 LOC. There should
be no functionality change, but please test on your favorite x86
target.
llvm-svn: 45627
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
checking that there was a from a global instead of a load from the stub
for a global, which is the one that's safe to hoist.
Consider this program:
volatile char G[100];
int B(char *F, int N) {
  for (; N > 0; --N)
    F[N] = G[N];
}
In static mode, we shouldn't be hoisting the load from G:
$ llc -relocation-model=static -o - a.bc -march=x86 -machine-licm
LBB1_1: # bb.preheader
        leal    -1(%eax), %edx
        testl   %edx, %edx
        movl    $1, %edx
        cmovns  %eax, %edx
        xorl    %esi, %esi
LBB1_2: # bb
        movb    _G(%eax), %bl
        movb    %bl, (%ecx,%eax)
llvm-svn: 45626
 | 
| | 
| 
| 
| 
| 
| 
| 
|  | 
this
for remat, but can't due to an RA bug.
llvm-svn: 45623
 | 
| | 
| 
| 
|  | 
llvm-svn: 45622
 | 
| | 
| 
| 
|  | 
llvm-svn: 45621
 | 
| | 
| 
| 
| 
| 
| 
|  | 
isReallySideEffectFree and isReallyTriviallyReMaterializable.  Why is a load from
a global considered side-effect-free but not rematable?
llvm-svn: 45620
 | 
| | 
| 
| 
|  | 
llvm-svn: 45618
 | 
| | 
| 
| 
|  | 
llvm-svn: 45616
 | 
| | 
| 
| 
| 
| 
|  | 
moved if needed.
llvm-svn: 45605
 |