| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
| |
emits one directive instead of N. Not doing this would be a
significant regression on the # bytes generated by .fill.
llvm-svn: 93889
|
|
|
|
|
|
| |
Evans!
llvm-svn: 93884
|
|
|
|
| |
llvm-svn: 93869
|
|
|
|
| |
llvm-svn: 93866
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
doing global variable classification anymore) and hookized, sink almost
all target targets global variable emission code into AsmPrinter and out
of each target.
Some notes:
1. PIC16 does completely custom and crazy stuff, so it is not changed.
2. XCore has some custom handling for extra directives. I'll look at it next.
3. This switches linux/ppc to use .globl instead of .global. If .globl is
actually wrong, let me know and I'll fix it.
4. This makes linux/ppc get a lot of random cases right which were obviously
wrong before, it is probably now a bit healthier.
5. Blackfin will probably start getting .comm and other things that it didn't
before. If this is undesirable, it should explicitly opt out of these
things by clearing the relevant fields of MCAsmInfo.
This leads to a nice diffstat:
14 files changed, 127 insertions(+), 830 deletions(-)
llvm-svn: 93858
|
|
|
|
|
|
|
|
|
| |
are the same. I had already fixed a similar problem where the source and
destination were different bitcasts derived from the same alloca, but the
previous fix still did not handle the case where both operands are exactly
the same value. Radar 7552893.
llvm-svn: 93848
|
|
|
|
|
|
|
|
| |
GCC would put weak zero initialized mutable data in the .bss section,
we would put it into a crasy '.gnu.linkonce.b.test,"aw",@nobits'
section. Fixing this will allow simplifications next up.
llvm-svn: 93844
|
|
|
|
| |
llvm-svn: 93842
|
|
|
|
| |
llvm-svn: 93824
|
|
|
|
| |
llvm-svn: 93819
|
|
|
|
|
|
|
|
|
| |
comments (fast isel, X86). This doesn't seem
to break any functionality, but will introduce
cases where -g affects the generated code. I'll
be fixing that.
llvm-svn: 93811
|
|
|
|
|
|
|
|
| |
aggressive changed the canonical form from sext(trunc(x)) to ashr(lshr(x)),
make sure to transform a couple more things into that canonical form,
and catch a case where we missed turning zext/shl/ashr into a single sext.
llvm-svn: 93787
|
|
|
|
| |
llvm-svn: 93776
|
|
|
|
| |
llvm-svn: 93775
|
|
|
|
| |
llvm-svn: 93774
|
|
|
|
|
|
|
|
|
|
| |
Instcombine does this but apparently there are situations where this pattern will escape the optimizer and / or created by isel. Here is a case that's seen in JavaScriptCore:
%t1 = sub i32 0, %a
%t2 = add i32 %t1, -1
The dag combiner pattern: ((c1-A)+c2) -> (c1+c2)-A
will fold it to -1 - %a.
llvm-svn: 93773
|
|
|
|
|
|
| |
because it points to an alloca instruction through metadata.
llvm-svn: 93757
|
|
|
|
|
|
|
|
|
| |
PASS: LLVM::FrontendC/pr5406.c (3463 of 5030)
and on X86 I get
XFAIL: LLVM::FrontendC/pr5406.c (3465 of 5030
llvm-svn: 93689
|
|
|
|
|
|
| |
will tell me something more useful.
llvm-svn: 93688
|
|
|
|
|
|
|
|
| |
adding an "i" to the suffix, indicating that the elements are integers, is
accepted but not part of the standard syntax. This helps us pass a few more
of the Neon tests from gcc.
llvm-svn: 93677
|
|
|
|
| |
llvm-svn: 93672
|
|
|
|
| |
llvm-svn: 93671
|
|
|
|
|
|
| |
fsub.ll and FileCheckify it.
llvm-svn: 93669
|
|
|
|
|
|
| |
the return value of an sret-demoted call, it needs to use possibly illegal types that match the declared Type of the callee.
llvm-svn: 93667
|
|
|
|
|
|
|
|
| |
Nodes that had children outside of the post dominator tree (infinite loops)
where removed from the post dominator tree. This seems to be wrong. Leave them
in the tree.
llvm-svn: 93633
|
|
|
|
|
|
| |
about this, they should file a bug, it's not doing any good as an xfail.
llvm-svn: 93604
|
|
|
|
|
|
|
| |
the -pre-regalloc-taildup command-line option, and add a new
-disable-early-taildup option.
llvm-svn: 93597
|
|
|
|
| |
llvm-svn: 93591
|
|
|
|
|
|
| |
has more than one use.
llvm-svn: 93576
|
|
|
|
| |
llvm-svn: 93567
|
|
|
|
| |
llvm-svn: 93555
|
|
|
|
|
|
|
|
|
| |
its first argument, via function-local metadata (instead of via a bitcast).
This patch also cleans up code that expects there to be a bitcast in the first argument and testcases that call llvm.dbg.declare.
It also strips old llvm.dbg.declare intrinsics that did not pass metadata as the first argument.
llvm-svn: 93531
|
|
|
|
|
|
| |
auto-upgraded
llvm-svn: 93515
|
|
|
|
| |
llvm-svn: 93511
|
|
|
|
|
|
|
|
| |
its first argument, via function-local metadata (instead of via a bitcast).
This patch also cleans up code that expects there to be a bitcast in the first argument and testcases that call llvm.dbg.declare.
llvm-svn: 93504
|
|
|
|
| |
llvm-svn: 93501
|
|
|
|
| |
llvm-svn: 93494
|
|
|
|
| |
llvm-svn: 93486
|
|
|
|
| |
llvm-svn: 93468
|
|
|
|
| |
llvm-svn: 93417
|
|
|
|
| |
llvm-svn: 93410
|
|
|
|
| |
llvm-svn: 93408
|
|
|
|
|
|
| |
support function-local metadata, test it.
llvm-svn: 93406
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
added to the FSub version. However, the original version of this xform guarded
against doing this for floating point (!Op0->getType()->isFPOrFPVector()).
This is causing LLVM to perform incorrect xforms for code like:
void func(double *rhi, double *rlo, double xh, double xl, double yh, double yl){
double mh, ml;
double c = 134217729.0;
double up, u1, u2, vp, v1, v2;
up = xh*c;
u1 = (xh - up) + up;
u2 = xh - u1;
vp = yh*c;
v1 = (yh - vp) + vp;
v2 = yh - v1;
mh = xh*yh;
ml = (((u1*v1 - mh) + (u1*v2)) + (u2*v1)) + (u2*v2);
ml += xh*yl + xl*yh;
*rhi = mh + ml;
*rlo = (mh - (*rhi)) + ml;
}
The last line was optimized away, but rl is intended to be the difference
between the infinitely precise result of mh + ml and after it has been rounded
to double precision.
llvm-svn: 93369
|
|
|
|
| |
llvm-svn: 93360
|
|
|
|
|
|
|
|
| |
code. Avoid change use of PHI instructions because it's not legal to insert any instructions before them.
This fixes PR6027.
llvm-svn: 93335
|
|
|
|
| |
llvm-svn: 93313
|
|
|
|
|
|
|
|
|
| |
different BlockAddress labels, but nothing semantically important.
Add a FIXME that BlockAddress codegen is broken if the LLVM BB has
an empty name (e.g. strip was run).
llvm-svn: 93303
|
|
|
|
| |
llvm-svn: 93286
|
|
|
|
|
|
| |
flag doesn't exist there, and this is an x86 test.
llvm-svn: 93279
|