| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
| |
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
|
|
|
|
| |
llvm-svn: 210045
|
|
|
|
|
|
| |
Patch by Rahul Jain.
llvm-svn: 210040
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Instrumentation passes now use attributes
address_safety/thread_safety/memory_safety which are added by Clang frontend.
Clang parses the blacklist file and adds the attributes accordingly.
Currently blacklist is still used in ASan module pass to disable instrumentation
for certain global variables. We should fix this as well by collecting the
set of globals we're going to instrument in Clang and passing it to ASan
in metadata (as we already do for dynamically-initialized globals and init-order
checking).
This change also removes -tsan-blacklist and -msan-blacklist LLVM commandline
flags in favor of -fsanitize-blacklist= Clang flag.
llvm-svn: 210038
|
|
|
|
| |
llvm-svn: 210034
|
|
|
|
|
|
|
|
|
|
|
| |
When lowering a ISD::BRCOND into a test+branch, make sure that we
always use the correct condition code to emit the test operation.
This fixes PR19858: "i8 checked mul is wrong on x86".
Patch by Keno Fisher!
llvm-svn: 210032
|
|
|
|
|
|
|
| |
We already had a function for checking this, we were just using it only in
specialized cases.
llvm-svn: 210029
|
|
|
|
|
|
| |
MSan is no longer an "early prototype".
llvm-svn: 210023
|
|
|
|
| |
llvm-svn: 210020
|
|
|
|
|
|
|
|
|
|
|
|
| |
PowerOf2 - 1)
This patch can handles following cases from http://nondot.org/sabre/LLVMNotes/InstCombine.txt
"((1 << X) & 7) == 0" ==> "X > 2"
"((1 << X) & 7) != 0" ==> "X < 3".
Differential Revision: http://reviews.llvm.org/D3678
llvm-svn: 210007
|
|
|
|
|
|
|
|
|
|
|
|
| |
if ((x & C) == 0) x |= C becomes x |= C
if ((x & C) != 0) x ^= C becomes x &= ~C
if ((x & C) == 0) x ^= C becomes x |= C
if ((x & C) != 0) x &= ~C becomes x &= ~C
if ((x & C) == 0) x &= ~C becomes nothing
Differential Revision: http://reviews.llvm.org/D3777
llvm-svn: 210006
|
|
|
|
| |
llvm-svn: 210005
|
|
|
|
|
|
|
| |
Amend r210001 to use the classic fallback order behaviour if the requested
graphing program isn't found.
llvm-svn: 210003
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Replace the crufty build-time configure checks for program paths with
equivalent runtime logic.
This lets users install graphing tools as needed without having to reconfigure
and rebuild LLVM, while eliminating a long chain of inappropriate compile
dependencies that included GUI programs and the windowing system.
Additional features:
* Support the OS X 'open' command to view graphs generated by any of the
Graphviz utilities. This is an alternative to the Graphviz OS X UI which is
no longer available on Mountain Lion.
* Produce informative log output upon failure to indicate which programs can
be installed to view graphs.
Ping me if this doesn't work for your particular environment.
llvm-svn: 210001
|
|
|
|
|
|
|
|
| |
of std::equal(op) to appease MSVC Debug build.
MSVC Debug build is confused with (possibly invalid) op_begin(), if op_begin() == op_end().
llvm-svn: 210000
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Introduce the support structures necessary to deal with the Windows ARM EH data.
These definitions are extremely aggressive about assertions to aid future use
for generation of the entries and subsequent decoding.
The names for the various fields are meant to reflect the names used by the
Visual Studio toolchain to aid communication.
Due to the complexity in reading a few of the values, there are a couple of
additional utility functions to decode the information.
In general, there are two ways to encode the unwinding information:
- packed, which places the data inline into the
_IMAGE_ARM_RUNTIME_FUNCTION_ENTRY structure.
- unpacked, which places the data into auxiliary structures placed into the
.xdata section.
The set of structures allow reading of data in either encoding, with the minor
caveat that epilogue scopes need to be decoded manually by constructing the
structure from the data returned by the RuntimeFunction structure.
These definitions are meant for read-only access at the current point as the
first use of them will be to decode the exception information.
llvm-svn: 209998
|
|
|
|
|
|
| |
Reviewed at http://reviews.llvm.org/D3968
llvm-svn: 209990
|
|
|
|
|
|
| |
This patch updates IntelJITEventListener.cpp to account for revision 206654, which removed some methods from DILineInfo.
llvm-svn: 209989
|
|
|
|
| |
llvm-svn: 209988
|