| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
llvm-svn: 160038
|
|
|
|
|
|
|
| |
Load and Store nodes into their own functions.
No functional change.
llvm-svn: 160037
|
|
|
|
|
|
|
|
| |
an MVT::i1, i.e. before type legalization.
This is a speculative fix for a problem on Mips reported by Akira Hatanaka.
llvm-svn: 160036
|
|
|
|
|
|
|
| |
instantiation depends on the template, its arguments and parameters, but not
where it is instantiated.
llvm-svn: 160034
|
|
|
|
|
|
|
|
|
|
| |
there's something going on there. Remove the unconditional line entry
and only add one if we're emitting cleanups (any other statements
would be handled normally).
Fixes rdar://9199234
llvm-svn: 160033
|
|
|
|
| |
llvm-svn: 160032
|
|
|
|
|
|
| |
Patch by Sasa Stankovic.
llvm-svn: 160031
|
|
|
|
|
|
|
|
|
|
| |
This is probably not so useful yet because it is not path-sensitive, though
it does try to show inlining with indentation.
This also adds a dump() method to CallEvent, which should be useful for
debugging.
llvm-svn: 160030
|
|
|
|
|
|
|
|
|
| |
C++ method calls and C function calls both appear as CallExprs in the AST.
This was causing crashes for an object that had a 'free' method.
<rdar://problem/11822244>
llvm-svn: 160029
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Low order register of a double word register operand. Operands
are defined by the name of the variable they are marked with in
the inline assembler code. This is a way to specify that the
operand just refers to the low order register for that variable.
It is the opposite of modifier 'D' which specifies the high order
register.
Example:
main()
{
long long ll_input = 0x1111222233334444LL;
long long ll_val = 3;
int i_result = 0;
__asm__ __volatile__(
"or %0, %L1, %2"
: "=r" (i_result)
: "r" (ll_input), "r" (ll_val));
}
Which results in:
lui $2, %hi(_gp_disp)
addiu $2, $2, %lo(_gp_disp)
addiu $sp, $sp, -8
addu $2, $2, $25
sw $2, 0($sp)
lui $2, 13107
ori $3, $2, 17476 <-- Low 32 bits of ll_input
lui $2, 4369
ori $4, $2, 8738 <-- High 32 bits of ll_input
addiu $5, $zero, 3 <-- Low 32 bits of ll_val
addiu $2, $zero, 0 <-- High 32 bits of ll_val
#APP
or $3, $4, $5 <-- or i_result, high 32 ll_input, low 32 of ll_val
#NO_APP
addiu $sp, $sp, 8
jr $ra
If not direction is done for the long long for 32 bit variables results
in using the low 32 bits as ll_val shows.
There is an existing bug if 'L' or 'D' is used for the destination register
for 32 bit long longs in that the target value will be updated incorrectly
for the non-specified part unless explicitly set within the inline asm code.
llvm-svn: 160028
|
|
|
|
|
|
| |
It will surely be needed by heuristics.
llvm-svn: 160027
|
|
|
|
|
|
|
|
|
|
|
| |
generalizing its implementation sufficiently to support this value
number scenario as well.
This cuts out another significant performance hit in large functions
(over 10k basic blocks, etc), especially those with "natural" CFG
structures.
llvm-svn: 160026
|
|
|
|
|
|
|
|
|
|
|
| |
This ordering allows nested if-conversion without using a work list, and
it makes it possible to update the dominator tree on the fly as well.
Any erased basic blocks will always be dominated by the current
post-order position, so the domtree can be pruned without invalidating
the iterator.
llvm-svn: 160025
|
|
|
|
|
|
|
| |
value-initialization for an array of class type with a trivial default
constructor.
llvm-svn: 160024
|
|
|
|
|
|
|
|
| |
Also contains a number of tweaks to inlining that are necessary
for constructors and destructors. (I have this enabled on a private
branch, but it is very much unstable.)
llvm-svn: 160023
|
|
|
|
|
|
|
|
|
|
| |
In order to accomplish this, we now build the callee's stack frame
as part of the CallEnter node, rather than the subsequent BlockEdge node.
This should not have any effect on perceived behavior or diagnostics.
This makes it safe to re-enable inlining of member overloaded operators.
llvm-svn: 160022
|
|
|
|
|
|
|
| |
These ProgramPoints are used in inlining calls,
and not all calls have associated statements anymore.
llvm-svn: 160021
|
|
|
|
|
|
|
|
| |
While this work is still fairly tentative (destructors are still left out of
the CFG by default), we now handle destructors in the same way as any other
calls, instead of just automatically trying to inline them.
llvm-svn: 160020
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
These are currently unused, but are intended to be used in lieu of PreStmt
and PostStmt when the call is implicit (e.g. an automatic object destructor).
This also modifies the Data1 field of ProgramPoints to allow storing any
pointer-sized value, as opposed to only aligned pointers. This is necessary
to store SourceLocations.
There is currently no BugReporter support for these; they should be skipped
over in any diagnostic output.
This commit also tags checkers that currently rely on function calls only
occurring at StmtPoints.
llvm-svn: 160019
|
|
|
|
| |
llvm-svn: 160018
|
|
|
|
| |
llvm-svn: 160017
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
loop if "memory read" is run with the -t option and
the type name contains a keyword like "struct" that
isn't followed by a space. Now if a keyword isn't
followed by a space we continue searching after it,
instead of at the beginning of the type name.
Also optimized the code to not call strlen() on
a fixed set of statically-declared constant strings.
llvm-svn: 160016
|
|
|
|
|
|
|
|
| |
Reviewers: klimek
Differential Revision: http://ec2-50-18-127-156.us-west-1.compute.amazonaws.com/D2
llvm-svn: 160013
|
|
|
|
|
|
| |
leak. Might need to be turned back into a pointer if it causes issues with the destructor chain.
llvm-svn: 160012
|
|
|
|
|
|
|
| |
X86MachineFunctionInfo as this is currently only used by X86. If this ever
becomes an issue on another arch (e.g., ARM) then we can hoist it back out.
llvm-svn: 160009
|
|
|
|
|
|
| |
concurrently try and initialize Python and cause crashes
llvm-svn: 160008
|
|
|
|
| |
llvm-svn: 160006
|
|
|
|
| |
llvm-svn: 160004
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
X86. Basically, this is a reapplication of r158087 with a few fixes.
Specifically, (1) the stack pointer is restored from the base pointer before
popping callee-saved registers and (2) in obscure cases (see comments in patch)
we must cache the value of the original stack adjustment in the prologue and
apply it in the epilogue.
rdar://11496434
llvm-svn: 160002
|
|
|
|
| |
llvm-svn: 160000
|
|
|
|
|
|
| |
directory and all its parents.
llvm-svn: 159998
|
|
|
|
|
|
| |
Implement UniqueFileContainer::erase(), camelCase, add comment on future optimizations of the cache versus de-optimizations of invalidations.
llvm-svn: 159997
|
|
|
|
|
|
| |
PR13319 Reported by Jozsef Mihalicza.
llvm-svn: 159996
|
|
|
|
|
|
| |
The consumer might see multiple input files (e.g. for cling) and since r159977 the count is maintained across input files.
llvm-svn: 159995
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
back of it.
I don't have anything even remotely close to a test case for this. It
only broke two build bots, both of them doing bootstrap builds, one of
them a dragonegg bootstrap. It doesn't break for me when I bootstrap
either. It doesn't reproduce every time or on many machines during the
bootstrap. Many thanks to Duncan Sands who got the exact command (and
stage of the bootstrap) which failed on the dragonegg bootstrap and
managed to get it to trigger under valgrind with debug symbols. The fix
was then found by inspection.
llvm-svn: 159993
|
|
|
|
| |
llvm-svn: 159992
|
|
|
|
|
|
|
|
|
| |
multiple scalars and insert them into a vector. Next, we shuffle the elements
into the correct places, as before.
Also fix a small dagcombine bug in SimplifyBinOpWithSameOpcodeHands, when the
migration of bitcasts happened too late in the SelectionDAG process.
llvm-svn: 159991
|
|
|
|
|
|
|
|
|
|
| |
from a source file and changes clang-check to make use of this.
This makes clang-check just work on in-tree builds, and allows
easy setup via a symlink per source directory to make clang-check
work without any extra configuration.
llvm-svn: 159990
|
|
|
|
|
|
| |
single-precision resiters) (and do it properly this time!
llvm-svn: 159989
|
|
|
|
| |
llvm-svn: 159988
|
|
|
|
| |
llvm-svn: 159987
|
|
|
|
| |
llvm-svn: 159985
|
|
|
|
| |
llvm-svn: 159983
|
|
|
|
|
|
|
|
|
|
|
| |
quadratic behavior when performing pathological merges. Fixes the core
element of PR12652.
There is only one user of addRangeFrom left: join. I'm hoping to
refactor further in a future patch and have join use this merge
operation as well.
llvm-svn: 159982
|
|
|
|
|
|
|
|
|
|
| |
of the trick merge routines. This adds a layer of testing that was
necessary when implementing more efficient (and complex) merge logic for
this datastructure.
No functionality changed here.
llvm-svn: 159981
|
|
|
|
|
|
|
|
| |
*errors* with fixits on them by following the recovery advised by the
fixit, but if it is a fixit on a warning, then obviously the AST
should be for the code as-written.
llvm-svn: 159980
|
|
|
|
|
|
|
|
|
|
|
| |
void f(); // expected-note 0+ {{previous declaration is here}}
void g(); // expected-note 0-1 {{previous declaration is here}}
The old "+" syntax is still an alias for "1+", and single numbers still work.
Patch by Andy Gibbs!
llvm-svn: 159979
|
|
|
|
|
|
|
|
|
|
|
| |
// expected-warning@10 {{some text}}
The line number may be absolute (as above), or relative to the current
line by prefixing the number with either '+' or '-'.
Patch by Andy Gibbs!
llvm-svn: 159978
|
|
|
|
|
|
| |
Patch by Andy Gibbs!
llvm-svn: 159977
|
|
|
|
|
|
| |
back to regular type printing.
llvm-svn: 159976
|