| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
| |
llvm-svn: 210265
|
| |
|
|
|
|
|
|
| |
When not optimizing, do not run the IfConverter pass, this makes
debugging more difficult (and causes a testsuite failure in
DebugInfo/unconditional-branch.ll).
llvm-svn: 210263
|
| |
|
|
|
|
|
|
|
| |
* Move the instruction that changes sp outside of the branch delay slot.
* Bundle-align the target of indirect branch.
Differential Revision: http://llvm-reviews.chandlerc.com/D3928
llvm-svn: 210262
|
| |
|
|
| |
llvm-svn: 210261
|
| |
|
|
|
|
| |
the commit from r206671, as requested by David Blaikie.
llvm-svn: 210239
|
| |
|
|
|
|
|
|
| |
self-hosting LLVM with libc++.
Test case coming, once I reduce it.
llvm-svn: 210236
|
| |
|
|
|
|
|
|
|
| |
rather than looking it up through the DebugLoc.
No functional change intended, just streamlines the abstract variable
lookup/construction to use a common entry point.
llvm-svn: 210234
|
| |
|
|
|
|
|
|
| |
arguments are correctly handled in all cases.
No functional change intended.
llvm-svn: 210233
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Unused arguments were not being added to the argument list, but instead
treated as arbitrary scope variables. This meant they weren't carefully
added in the original argument order.
In this particular example, though, it turns out the argument is only
/mostly/ unused (well, actually it's entirely used, but in a specific
way). It's a struct that, due to ABI reasons, is decomposed into chunks
(exactly one chunk, since it has one member) and then passed. Since only
one of those chunks is used (SROA, etc, kill the original reconstitution
code) we don't have a location to describe the whole variable.
In this particular case, since the struct consists of just the one int,
once we have partial location information, this should have a location
that describes the entire variable (since the piece is the entirety of
the object).
And at some point we'll need to describe the location of even /entirely/
unused arguments so that they can at least be printed on function entry.
llvm-svn: 210231
|
| |
|
|
|
|
| |
Christopher's post-commit review feedback.
llvm-svn: 210228
|
| |
|
|
|
|
| |
use it here too.
llvm-svn: 210227
|
| |
|
|
| |
llvm-svn: 210226
|
| |
|
|
| |
llvm-svn: 210224
|
| |
|
|
| |
llvm-svn: 210223
|
| |
|
|
| |
llvm-svn: 210222
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
DbgVariables have DIEs.
Abstract variables within abstract scopes that are entirely optimized
away in their first inlining are omitted because their scope is not
present so the variable is never created. Instead, we should ensure the
scope is created so the variable can be added, even if it's been
optimized away in its first inlining.
This fixes the incorrect debug info in missing-abstract-variable.ll
(added in r210143) and passes an asserts self-hosting build, so
hopefully there's not more of these issues left behind... *fingers
crossed*.
llvm-svn: 210221
|
| |
|
|
|
|
| |
file emission.
llvm-svn: 210218
|
| |
|
|
|
|
|
|
|
|
|
|
| |
We would previously assert here when trying to figure out the section
for the global.
This makes us handle the situation more gracefully since the IR isn't
malformed.
Differential Revision: http://reviews.llvm.org/D4022
llvm-svn: 210215
|
| |
|
|
|
|
| |
Thanks to rnk for the suggestion.
llvm-svn: 210205
|
| |
|
|
| |
llvm-svn: 210203
|
| |
|
|
|
|
|
|
|
|
| |
When JITting a large project such as Boost it's quite hard to figure out the problematic inline asm without debug location. This patch provides debug location printout before the JIT aborts due to inline asm. printDebugLoc() was exposed from MachineInstr.cpp and reused here.
If the JIT run with debug info, don't bomb on DBG_VALUE but ignore them.
http://reviews.llvm.org/D3416
llvm-svn: 210201
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch implements two things:
1. If we know one number is positive and another is negative, we return true as
signed addition of two opposite signed numbers will never overflow.
2. Implemented TODO : If one of the operands only has one non-zero bit, and if
the other operand has a known-zero bit in a more significant place than it
(not including the sign bit) the ripple may go up to and fill the zero, but
won't change the sign. e.x - (x & ~4) + 1
We make sure that we are ignoring 0 at MSB.
Patch by Suyog Sarda.
llvm-svn: 210186
|
| |
|
|
|
|
| |
No change in functionality.
llvm-svn: 210182
|
| |
|
|
|
|
|
|
| |
Variable names should start with an upper case letter.
No change in functionality.
llvm-svn: 210181
|
| |
|
|
| |
llvm-svn: 210178
|
| |
|
|
|
|
| |
and read when ShouldUpdateCC || IsSwapped, and ShouldUpdateCC is independent. Fixes PR19932, but no test since I wasn't able to get any symptoms to appear, not even with valgrind and the testcase from the PR. It's clear what happened from inspection of the code.
llvm-svn: 210168
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
As requested by AArch64 subtargets.
Note that this will have no effect until the
AArch64 target actually enables the pass like this:
substitutePass(&PostRASchedulerID, &PostMachineSchedulerID);
As soon as armv7 switches over, PostMachineScheduler will become the
default postRA scheduler, so this won't be necessary any more.
Targets using the old postRA schedule would then do:
substitutePass(&PostMachineSchedulerID, &PostRASchedulerID);
llvm-svn: 210167
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
These were not exposed previously because I didn't want out-of-tree
targets to be too dependent on their internals. They can be reused for
a very wide variety of processors with casual scheduling needs without
exposing the classes by instead using hooks defined in
MachineSchedPolicy (we can add more if needed). When targets are more
aggressively tuned or want to provide custom heuristics, they can
define their own MachineSchedStrategy. I tend to think this is better
once you start customizing heuristics because you can copy over only
what you need. I don't think that layering heuristics generally works
well.
However, Arch64 targets now want to reuse the Generic scheduling logic
but also provide extensions. I don't see much harm in exposing the
Generic scheduling classes with a major caveat: these scheduling
strategies may change in the future without validating performance on
less mainstream processors. If you want to be immune from changes,
just define your own MachineSchedStrategy.
llvm-svn: 210166
|
| |
|
|
|
|
|
|
|
| |
Avoid changing behaviour for everyone who's used to the traditional ghostview
UI, especially since it knows how to stay in the foreground unlike xdg-open.
Amendment to r210147.
llvm-svn: 210148
|
| |
|
|
|
|
|
| |
This runs a suitable viewer on Unix desktop environments specified by
Freedesktop.org (GNOME, KDE, Linux distributions etc.)
llvm-svn: 210147
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
DbgVariables do not have associated DIEs.
Along with a test case to demonstrate that due to inlining order there
are cases where abstract variable DIEs are not constructed since the
abstract subprogram was built due to a previous inlining that optimized
away those variables. This produces incorrect debug info (the 'missing'
abstract variable causes the inlined instance of that variable to be
emitted with a full description (name, line, file) rather than
referencing the abstract origin), but this commit at least ensures that
it doesn't crash...
llvm-svn: 210143
|
| |
|
|
| |
llvm-svn: 210135
|
| |
|
|
|
|
|
|
| |
This gets us closer to being able to remove LiveVariables entirely which is where dead instructions are currently tagged as such.
Reviewed by Jakob Olesen
llvm-svn: 210132
|
| |
|
|
|
|
| |
we know next time this happens.
llvm-svn: 210127
|
| |
|
|
| |
llvm-svn: 210126
|
| |
|
|
| |
llvm-svn: 210125
|
| |
|
|
|
|
|
|
|
|
|
|
| |
It was able to parse
hidden dllexport global i32 42
but not
dllexport global i32 42
llvm-svn: 210121
|
| |
|
|
| |
llvm-svn: 210120
|
| |
|
|
| |
llvm-svn: 210119
|
| |
|
|
| |
llvm-svn: 210114
|
| |
|
|
| |
llvm-svn: 210103
|
| |
|
|
|
|
|
|
|
| |
This means the output of LowerFormalArguments returns a lowered
SDValue with the correct type (expected in SelectionDAGBuilder).
Without this, an assertion under a DEBUG macro triggers when those
types are passed on the stack.
llvm-svn: 210102
|
| |
|
|
| |
llvm-svn: 210078
|
| |
|
|
|
|
| |
Might also fix the windows build.
llvm-svn: 210077
|
| |
|
|
|
|
| |
aren't emitting line number zero, the .gcno format uses this to indicate that the next field is a filename.
llvm-svn: 210068
|
| |
|
|
| |
llvm-svn: 210067
|
| |
|
|
|
|
|
| |
This could have generated non-random output under error conditions in release
builds.
llvm-svn: 210065
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch changes GlobalAlias to point to an arbitrary ConstantExpr and it is
up to MC (or the system assembler) to decide if that expression is valid or not.
This reduces our ability to diagnose invalid uses and how early we can spot
them, but it also lets us do things like
@test5 = alias inttoptr(i32 sub (i32 ptrtoint (i32* @test2 to i32),
i32 ptrtoint (i32* @bar to i32)) to i32*)
An important implication of this patch is that the notion of aliased global
doesn't exist any more. The alias has to encode the information needed to
access it in its metadata (linkage, visibility, type, etc).
Another consequence to notice is that getSection has to return a "const char *".
It could return a NullTerminatedStringRef if there was such a thing, but when
that was proposed the decision was to just uses "const char*" for that.
llvm-svn: 210062
|
| |
|
|
|
|
|
|
| |
The code was actually correct. Sorry for the confusion. I have expanded the
comment saying why the analysis is valid to avoid me misunderstaning it
again in the future.
llvm-svn: 210052
|
| |
|
|
|
|
|
|
|
| |
This reverts commit r210029.
It was not correctly handling cases where LHS and RHS had multiple but different
sign bits.
llvm-svn: 210048
|