| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
llvm-svn: 190367
|
|
|
|
|
|
|
|
| |
This partially reverts r190330. DIScope::getContext now returns DIScopeRef
instead of DIScope. We construct a DIScopeRef from DIScope when we are
dealing with subprogram, lexical block or name space.
llvm-svn: 190362
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Arnold's idea.
I generally try to avoid stateful heuristics because it can make
debugging harder. However, we need a way to prevent the latency
priority from dominating, and it somewhat makes sense to schedule
aggressively for latency only within an issue group.
Swift in particular likes this, and it doesn't hurt anyone else:
| Benchmarks/MiBench/consumer-lame | 10.39% |
| Benchmarks/Misc/himenobmtxpa | 9.63% |
llvm-svn: 190360
|
|
|
|
| |
llvm-svn: 190358
|
|
|
|
|
|
|
|
|
| |
as well as types.
No functional change as they're not emitted unless the option
is true anyhow.
llvm-svn: 190346
|
|
|
|
| |
llvm-svn: 190345
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
frame information.
There are more than one paths to where the frame information is emitted. Place
the call to generateCompactUnwindEncodings() into the method which outputs the
frame information, thus ensuring that the encoding is there for every path. This
involved threading the MCAsmBackend object through to this method.
<rdar://problem/13623355>
llvm-svn: 190335
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
In DIBuilder, the context field of a TAG_member is updated to use the
scope reference. Verifier is updated accordingly.
DebugInfoFinder now needs to generate a type identifier map to have
access to the actual scope. Same applies for BreakpointPrinter.
processModule of DebugInfoFinder is called during initialization phase
of the verifier to make sure the type identifier map is constructed early
enough.
We are now able to unique a simple class as demonstrated by the added
testing case.
llvm-svn: 190334
|
|
|
|
|
|
|
|
|
|
|
|
| |
DIScope::getContext is a wrapper function that calls the specific getContext
method on each subclass. When we switch DIType::getContext to return DIScopeRef
instead of DIScope, DIScope::getContext can no longer return a DIScope without
a type identifier map.
DIScope::getContext is only used by DwarfDebug, so we move it to DwarfDebug
to have easy access to the type identifier map.
llvm-svn: 190330
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The work on this project was left in an unfinished and inconsistent state.
Hopefully someone will eventually get a chance to implement this feature, but
in the meantime, it is better to put things back the way the were. I have
left support in the bitcode reader to handle the case-range bitcode format,
so that we do not lose bitcode compatibility with the llvm 3.3 release.
This reverts the following commits: 155464, 156374, 156377, 156613, 156704,
156757, 156804 156808, 156985, 157046, 157112, 157183, 157315, 157384, 157575,
157576, 157586, 157612, 157810, 157814, 157815, 157880, 157881, 157882, 157884,
157887, 157901, 158979, 157987, 157989, 158986, 158997, 159076, 159101, 159100,
159200, 159201, 159207, 159527, 159532, 159540, 159583, 159618, 159658, 159659,
159660, 159661, 159703, 159704, 160076, 167356, 172025, 186736
llvm-svn: 190328
|
|
|
|
|
|
|
|
|
|
| |
This helper function needs the type identifier map when we switch
DIType::getContext to return DIScopeRef instead of DIScope.
Since isSubprogramContext is used by DwarfDebug only, We move it to DwarfDebug
to have easy access to the map.
llvm-svn: 190325
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
A reference to a scope is more general than a reference to a type since
DIType is a subclass of DIScope.
A reference to a type can be either an identifier for the type or
the DIType itself, while a reference to a scope can be either an
identifier for the type (when the scope is indeed a type) or the
DIScope itself. A reference to a type and a reference to a scope
will be resolved in the same way. The only difference is in the
verifier when a field is a reference to a type (i.e. the containing
type field of a DICompositeType) or a field is a reference to a scope
(i.e. the context field of a DIType).
This is to get ready for switching DIType::getContext to return
DIScopeRef instead of DIScope.
Tighten up isTypeRef and isScopeRef to make sure the identifier is not
empty and the MDNode is DIType for TypeRef and DIScope for ScopeRef.
llvm-svn: 190322
|
|
|
|
| |
llvm-svn: 190317
|
|
|
|
|
|
|
|
|
| |
IT blocks can only be one instruction lonf, and can only contain a subset of
the 16 instructions.
Patch by Artyom Skrobov!
llvm-svn: 190309
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
We used to generate the compact unwind encoding from the machine
instructions. However, this had the problem that if the user used `-save-temps'
or compiled their hand-written `.s' file (with CFI directives), we wouldn't
generate the compact unwind encoding.
Move the algorithm that generates the compact unwind encoding into the
MCAsmBackend. This way we can generate the encoding whether the code is from a
`.ll' or `.s' file.
<rdar://problem/13623355>
llvm-svn: 190290
|
|
|
|
|
|
|
|
| |
a DISubprogram.
Verifier is updated accordingly.
llvm-svn: 190229
|
|
|
|
|
|
|
|
| |
a DICompositeType.
Verifier is updated accordingly.
llvm-svn: 190190
|
|
|
|
| |
llvm-svn: 190181
|
|
|
|
| |
llvm-svn: 190180
|
|
|
|
| |
llvm-svn: 190179
|
|
|
|
| |
llvm-svn: 190178
|
|
|
|
|
|
| |
The latency based scheduling could induce spills in some cases.
llvm-svn: 190177
|
|
|
|
|
|
|
|
| |
Allow subtargets to customize the generic scheduling strategy.
This is convenient for targets that don't need to add new heuristics
by specializing the strategy.
llvm-svn: 190176
|
|
|
|
| |
llvm-svn: 190170
|
|
|
|
| |
llvm-svn: 190169
|
|
|
|
|
|
| |
The if above it ensures the property anyway.
llvm-svn: 190168
|
|
|
|
|
|
| |
There's no 'B3' in the example.
llvm-svn: 190167
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Occasionally DAGCombiner can spot that a SETCC operation is completely
redundant and reduce it to "all true" or "all false". If this happens to a
vector, the value produced has to take account of what a normal comparison
would have produced, which may be an all-1s bitmask.
The fix in SelectionDAG.cpp is tested, however, as far as I can see the code in
TargetLowering.cpp is possibly unreachable and almost certainly irrelevant when
triggered so there are no tests. However, I believe it's still clearly the
right change and may save someone else some hassle if it suddenly becomes
reachable. So I'm doing it anyway.
llvm-svn: 190147
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
ptr_to_member.
We introduce a new class DITypeRef that represents a reference to a DIType.
It wraps around a Value*, which can be either an identifier in MDString
or an actual MDNode. The class has a helper function "resolve" that
finds the actual MDNode for a given DITypeRef.
We specialize getFieldAs to return a field that is a reference to a
DIType. To correctly access the base type field of ptr_to_member,
getClassType now calls getFieldAs<DITypeRef> to return a DITypeRef.
Also add a typedef for DITypeIdentifierMap and a helper
generateDITypeIdentifierMap in DebugInfo.h. In DwarfDebug.cpp, we keep
a DITypeIdentifierMap and call generateDITypeIdentifierMap to actually
populate the map.
Verifier is updated accordingly.
llvm-svn: 190081
|
|
|
|
|
|
|
|
| |
we're proposing it for DWARF5.
No functional change intended.
llvm-svn: 190074
|
|
|
|
| |
llvm-svn: 190064
|
|
|
|
|
|
|
|
|
| |
Fast register pressure tracking currently only takes effect during
bottom up scheduling. Forcing this is a bit faster and simpler for
targets that don't have many scheduling constraints and don't need
top-down scheduling.
llvm-svn: 190014
|
|
|
|
|
|
|
|
| |
without a limiting factor.
Update all testcases accordingly.
llvm-svn: 190002
|
|
|
|
|
|
| |
Needs testcase updates.
llvm-svn: 190000
|
|
|
|
| |
llvm-svn: 189999
|
|
|
|
| |
llvm-svn: 189997
|
|
|
|
| |
llvm-svn: 189995
|
|
|
|
| |
llvm-svn: 189994
|
|
|
|
| |
llvm-svn: 189993
|
|
|
|
| |
llvm-svn: 189992
|
|
|
|
|
|
|
|
|
|
| |
too small.
If the instruction window is < NumRegs/2, pressure tracking is not
likely to be effective. The scheduler has to process a very large
number of tiny blocks. We want this to be fast.
llvm-svn: 189991
|
|
|
|
| |
llvm-svn: 189990
|
|
|
|
| |
llvm-svn: 189989
|
|
|
|
| |
llvm-svn: 189988
|
|
|
|
|
|
|
|
| |
Register pressure tracking is half the complexity of the
scheduler. It's useful to be able to turn it off for compile time and
performance comparisons.
llvm-svn: 189987
|
|
|
|
| |
llvm-svn: 189977
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
dead and the rest of the compatibility should be done on a dwarf-N level.""
This reverts commit r189913.
Talked with Eric on IRC. I am going to XFAIL the failing test since it
is using what Eric described as "the member hack" which was needed on
that old GDB.
Sorry for the noise!
llvm-svn: 189914
|
|
|
|
|
|
|
|
|
|
|
|
| |
the rest of the compatibility should be done on a dwarf-N level."
This reverts commit r189903.
This commit broke the phase 1 buildbot for a while.
http://lab.llvm.org:8013/builders/clang-x86_64-darwin11-nobootstrap-RAincremental/builds/6684
llvm-svn: 189913
|
|
|
|
|
|
| |
the rest of the compatibility should be done on a dwarf-N level.
llvm-svn: 189903
|
|
|
|
|
|
| |
in the module. Add a FIXME with a comment about darwin's ld.
llvm-svn: 189902
|