| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
|
| |
The local ranges created get to stay in the RS_New stage, just like for
local and region splitting.
This gives tryLocalSplit a bit more freedom the first time it sees one
of these new local ranges.
llvm-svn: 137001
|
| |
|
|
| |
llvm-svn: 137000
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
that detects what context the current expression is
meant to execute in. LLDB now properly consults
the method declaration in the debug information
rather than trying to hunt down the "this" or "self"
pointer by name, which can be misleading.
Other fixes include:
- LLDB now properly detects that it is inside
an inlined C++ member function.
- LLDB now allows access to non-const members when
in const code.
- The functions in SymbolFile that locate the
DeclContext containing a DIE have been renamed
to reflect what they actually do. I have added
new functions that find the DeclContext for the
DIE itself.
I have also introduced testcases for C++ and
Objective-C.
llvm-svn: 136999
|
| |
|
|
| |
llvm-svn: 136998
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
case situations with the unary operators & and *. Also extend the array bounds
checking to work with pointer arithmetic; the pointer arithemtic checking can
be turned on using -Warray-bounds-pointer-arithmetic.
The changes to where CheckArrayAccess gets called is based on some trial &
error and a bunch of digging through source code and gdb backtraces in order
to have the check performed under as many situations as possible (such as for
variable initializers, arguments to function calls, and within conditional in
addition to the simpler cases of the operands to binary and unary operator)
while not being called--and triggering warnings--more than once for a given
ArraySubscriptExpr.
llvm-svn: 136997
|
| |
|
|
| |
llvm-svn: 136996
|
| |
|
|
|
|
| |
ReadAST multiple times does not immediately throw an error.
llvm-svn: 136995
|
| |
|
|
|
|
| |
No functional change.
llvm-svn: 136994
|
| |
|
|
|
|
|
| |
These functions are no longer used, and they are easily replaced with a
loop calling shouldSplitSingleBlock and splitSingleBlock.
llvm-svn: 136993
|
| |
|
|
|
|
|
| |
Drop the use of SplitAnalysis::getMultiUseBlocks, there is no need to go
through a SmallPtrSet any more.
llvm-svn: 136992
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This fixes cases where the anonymous bitfield is followed by a bitfield member.
E.g.,
struct t4
{
char foo;
long : 0;
char bar : 1;
};
rdar://9859156
llvm-svn: 136991
|
| |
|
|
|
|
|
|
| |
to SBSymbolContextList and SBValueList.
Modify the test suite accordingly.
llvm-svn: 136990
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
Normally, we don't create a live range for a single instruction in a
basic block, the spiller does that anyway. However, when splitting a
live range that belongs to a proper register sub-class, inserting these
extra COPY instructions completely remove the constraints from the
remainder interval, and it may be allocated from the larger super-class.
The spiller will mop up these small live ranges if we end up spilling
anyway. It calls them snippets.
llvm-svn: 136989
|
| |
|
|
| |
llvm-svn: 136987
|
| |
|
|
|
|
| |
Parsing and encoding for shifted index operands for load instructions.
llvm-svn: 136986
|
| |
|
|
|
|
|
|
| |
SBTypeList does not have IsValid() method defined. It's always valid in a sense.
So the Python's truth value testing in turn delegates to __len__() method, which
is defined for SBTypeList, and returns 0.
llvm-svn: 136985
|
| |
|
|
|
|
| |
mark it XFAIL. This is a stop gap until the output of the test is deterministic.
llvm-svn: 136984
|
| |
|
|
|
|
| |
Add docstring for SBType, too.
llvm-svn: 136983
|
| |
|
|
|
|
|
| |
More parsing support for indexed loads. Fix pre-indexed with writeback
parsing for register offsets and handle basic post-indexed offsets.
llvm-svn: 136982
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Some instructions require restricted register classes, but most of the
time that doesn't affect register allocation. For example, some
instructions don't work with the stack pointer, but that is a reserved
register anyway.
Sometimes it matters, GR32_ABCD only has 4 allocatable registers. For
such a proper sub-class, the register allocator should try to enable
register class inflation since that makes more registers available for
allocation.
Make sure only legal super-classes are considered. For example, tGPR is
not a proper sub-class in Thumb mode, but in ARM mode it is.
llvm-svn: 136981
|
| |
|
|
|
|
|
|
|
| |
a native architecture that doesn't match the universal
slice that is being used for all executables, we weren't
correctly descending through the platform architectures
and resolving the binaries.
llvm-svn: 136980
|
| |
|
|
| |
llvm-svn: 136979
|
| |
|
|
|
|
|
|
|
|
| |
Refactor STR[B] pre and post indexed instructions to use addressing modes for
memory operands, which is necessary for assembly parsing and is more consistent
with the rest of the memory instruction definitions. Make some incremental
progress on refactoring away the mega-operand addrmode2 along the way, which
is nice.
llvm-svn: 136978
|
| |
|
|
| |
llvm-svn: 136977
|
| |
|
|
|
|
| |
SWIG doesn't care about the private section of class SBTypeList.
llvm-svn: 136976
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Add the rich comparison methods (__eq__, __ne__) to SBType, too.
o lldbtest.py:
Add debug utility method TestBase.DebugSBType().
o test/python_api/type:
Add tests for exercising SBType/SBTypeList API, including the SBTarget.FindTypes(type_name)
API which returns a SBTypeList matching the type_name.
llvm-svn: 136975
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The old code would look at kills and defs in one pass over the
instruction operands, causing problems with this code:
%R0<def>, %CPSR<def,dead> = tLSLri %R5<kill>, 2, pred:14, pred:%noreg
%R0<def>, %CPSR<def,dead> = tADDrr %R4<kill>, %R0<kill>, pred:14, %pred:%noreg
The last instruction kills and redefines %R0, so it is still live after
the instruction.
This caused a register scavenger crash when compiling 483.xalancbmk for
armv6. I am not including a test case because it requires too much bad
luck to expose this old bug.
First you need to convince the register allocator to use %R0 twice on
the tADDrr instruction, then you have to convince BranchFolding to do
something that causes it to run the register scavenger on he bad block.
<rdar://problem/9898200>
llvm-svn: 136973
|
| |
|
|
| |
llvm-svn: 136971
|
| |
|
|
|
|
|
| |
The immediate portion of the operand is just a boolean (the 'U' bit indicating
add vs. subtract). Treat it as such.
llvm-svn: 136969
|
| |
|
|
| |
llvm-svn: 136968
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
arrays. This now suppresses the warning only in the case of
a one-element array as the last field in a struct where the array size
is a literal '1' rather than any macro expansion or template parameter.
This doesn't distinguish between the language standard in use to allow
code which dates from C89 era to compile without the warning even in C99
and C++ builds. We could add a separate warning (under a different flag)
with fixit hints to switch to a flexible array, but its not clear that
this would be desirable. Much of the code using this idiom is striving
for maximum portability.
Tests were also fleshed out a bit, and the diagnostic itself tweaked to
be more pretty w.r.t. single elment arrays. This is more ugly than
I would like due to APInt's not being supported by the diagnostic
rendering engine.
A pseudo-patch for this was proposed by Nicola Gigante, but I reworked
it both for several correctness issues and for code style.
Sorry this was so long in coming.
llvm-svn: 136965
|
| |
|
|
|
|
|
|
|
| |
1-element character arrays which are serving as flexible arrays. This is
the initial step, which is to restrict the 1-element array whitelist to
arrays that are member declarations. I'll refine it from here based on
the proposed patch.
llvm-svn: 136964
|
| |
|
|
| |
llvm-svn: 136963
|
| |
|
|
|
|
| |
<rdar://problem/9878189>
llvm-svn: 136962
|
| |
|
|
|
|
|
|
| |
~or~
Paint the bikeshed green.
llvm-svn: 136959
|
| |
|
|
|
|
|
| |
This patch takes some time because the old Python constructor pattern was not a valid one,
and breaks with SBTypeList's __init__ signature. Oops.
llvm-svn: 136958
|
| |
|
|
|
|
|
| |
- Added a test case in python-synth
Minor code improvements in categories, making them ready for adding new element types
llvm-svn: 136957
|
| |
|
|
| |
llvm-svn: 136956
|
| |
|
|
| |
llvm-svn: 136955
|
| |
|
|
|
|
| |
fixups to be added
llvm-svn: 136954
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
inlined variable, based on the discussion in PR10542.
This explodes the runtime of several passes down the pipeline due to
a large number of "copies" remaining live across a large function. This
only shows up with both debug and opt, but when it does it creates
a many-minute compile when self-hosting LLVM+Clang. There are several
other cases that show these types of regressions.
All of this is tracked in PR10542, and progress is being made on fixing
the issue. Once its addressed, the re-instated, but until then this
restores the performance for self-hosting and other opt+debug builds.
Devang, let me know if this causes any trouble, or impedes fixing it in
any way, and thanks for working on this!
llvm-svn: 136953
|
| |
|
|
|
|
| |
getAsPointeeMemoryRegion so that it could be reused.
llvm-svn: 136952
|
| |
|
|
| |
llvm-svn: 136951
|
| |
|
|
| |
llvm-svn: 136950
|
| |
|
|
|
|
| |
releasing the collection.
llvm-svn: 136949
|
| |
|
|
|
|
| |
functions when performing function overload resolution.
llvm-svn: 136948
|
| |
|
|
|
|
|
|
|
| |
empty constructor after the recent changes.
And remove expectedFailure decorator for test_SBTypeMember, which no longer exists after the recent changes, replace
it with test_SBTypeList.
llvm-svn: 136947
|
| |
|
|
|
|
| |
argument to bool. // rdar://9899834
llvm-svn: 136946
|
| |
|
|
|
|
| |
algorithm
llvm-svn: 136945
|
| |
|
|
| |
llvm-svn: 136944
|