| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
|
| |
The pass itself works well, but the something in the Machine* infrastructure
does not understand terminators which define registers. Without the ability
to use the block-placement pass, etc. this causes performance regressions (and
so is turned off by default). Turning off the analysis turns off the problems
with the Machine* infrastructure.
llvm-svn: 158206
|
| |
|
|
|
|
|
|
|
| |
The code which tests for an induction operation cannot assume that any
ADDI instruction will have a register operand because the operand could
also be a frame index; for example:
%vreg16<def> = ADDI8 <fi#0>, 0; G8RC:%vreg16
llvm-svn: 158205
|
| |
|
|
|
|
|
|
|
|
| |
CTR-based loop branching code.
This pass is derived from the Hexagon HardwareLoops pass. The only significant enhancement over the Hexagon
pass is that PPCCTRLoops will also attempt to delete the replaced add and compare operations if they are
no longer otherwise used. Also, invalid preheader DebugLoc is not used.
llvm-svn: 158204
|
| |
|
|
| |
llvm-svn: 158202
|
| |
|
|
| |
llvm-svn: 158201
|
| |
|
|
| |
llvm-svn: 158200
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
can move instructions within the instruction list. If the instruction just
happens to be the one the basic block iterator is pointing to, and it is
moved to a different basic block, then we get into an infinite loop due to
the iterator running off the end of the basic block (for some reason this
doesn't fire any assertions). Original commit message:
Grab-bag of reassociate tweaks. Unify handling of dead instructions and
instructions to reoptimize. Exploit this to more systematically eliminate
dead instructions (this isn't very useful in practice but is convenient for
analysing some testcase I am working on). No need for WeakVH any more: use
an AssertingVH instead.
llvm-svn: 158199
|
| |
|
|
| |
llvm-svn: 158198
|
| |
|
|
|
|
|
|
|
|
|
| |
This was previously only done for executables and shared libraries, but not
for modules. As modules are essentially shared libraries (that need to be
dlopened explicitly), threating them the same as shared libraries seems
reasonable. This fixes the LLVM_BUILD_32_BITS build of Polly.
Contributed by: Ondra Hosek <ondra.hosek@gmail.com>
llvm-svn: 158195
|
| |
|
|
|
|
|
|
| |
that does not exist.
rdar://11607033
llvm-svn: 158193
|
| |
|
|
| |
llvm-svn: 158192
|
| |
|
|
| |
llvm-svn: 158191
|
| |
|
|
| |
llvm-svn: 158190
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
AST: For auto-synthesized ivars give them the location of the related
property (previously they had no source location). This allows them
to be indexed by libclang.
libclang: Make sure synthesized ivars are indexed before the methods that
may reference them.
Fixes rdar://11607001.
llvm-svn: 158189
|
| |
|
|
|
|
|
|
|
|
|
| |
a cache of address ranges for child sections,
accelerating lookups. This cache is built during
object file loading, and is then set in stone once
the object files are done loading. (In Debug builds,
we ensure that the cache is never invalidated after
that.)
llvm-svn: 158188
|
| |
|
|
|
|
|
| |
(For the future: It would be more efficient to produce a hash key with
the embedded function info inside the compiler.)
llvm-svn: 158187
|
| |
|
|
|
|
| |
definitions of such members are prohibited, not mere declarations.
llvm-svn: 158186
|
| |
|
|
|
|
| |
feedback from Doug Gregor.
llvm-svn: 158185
|
| |
|
|
|
|
| |
in the presence of type sugar.
llvm-svn: 158184
|
| |
|
|
|
|
| |
complex operand are called out explicitly in the asm string.
llvm-svn: 158183
|
| |
|
|
|
|
| |
Manish Verma!
llvm-svn: 158182
|
| |
|
|
|
|
|
| |
test, but David Sehr is looking at spiffing it up and adding some proper
tests for our alloca codegen.
llvm-svn: 158181
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
CmpRuns.py can be used to compare issues from different analyzer runs.
Since it uses the issue line number to unique 2 issues, adding a new
line to the beginning of a file makes all issues in the file reported as
new.
The hash will be an opaque value which could be used (along with the
function name) by CmpRuns to identify the same issues. This way, we only
fail to identify the same issue from two runs if the function it appears
in changes (not perfect, but much better than nothing).
llvm-svn: 158180
|
| |
|
|
|
|
| |
Thanks, Jordan.
llvm-svn: 158179
|
| |
|
|
|
|
|
| |
nested name specifiers in addition to the function's identifier when the
correction has a different nested name specifier.
llvm-svn: 158178
|
| |
|
|
|
|
| |
correction to use for an invalid function redeclaration.
llvm-svn: 158177
|
| |
|
|
| |
llvm-svn: 158176
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch will generate the following for integer ABS:
movl %edi, %eax
negl %eax
cmovll %edi, %eax
INSTEAD OF
movl %edi, %ecx
sarl $31, %ecx
leal (%rdi,%rcx), %eax
xorl %ecx, %eax
There exists a target-independent DAG combine for integer ABS, which converts
integer ABS to sar+add+xor. For X86, we match this pattern back to neg+cmov.
This is implemented in PerformXorCombine.
rdar://10695237
llvm-svn: 158175
|
| |
|
|
| |
llvm-svn: 158174
|
| |
|
|
|
|
|
|
| |
that controls whether memory is cached. This is off
by default (i.e., memory is cached) because it greatly
improves performance.
llvm-svn: 158173
|
| |
|
|
| |
llvm-svn: 158172
|
| |
|
|
| |
llvm-svn: 158171
|
| |
|
|
|
|
|
| |
Remove /Wall from LLVM_ENABLE_WARNINGS (it's useless) and promote 4239
to a level 1 warning.
llvm-svn: 158170
|
| |
|
|
|
|
|
|
| |
condition operand is a vector of 1-bit predicates.
This may happen on MIC devices.
llvm-svn: 158168
|
| |
|
|
|
|
| |
elements, which may disagree with the select condition type.
llvm-svn: 158166
|
| |
|
|
|
|
|
|
|
| |
I falsely assumed that the memory spaces are equal when we reach this
point, they might not be when memory space of one or more is stack or
Unknown. We don't want a region from Heap space alias something with
another memory space.
llvm-svn: 158165
|
| |
|
|
| |
llvm-svn: 158164
|
| |
|
|
|
|
| |
Match expectations of the new latency API. Cleanup and make the logic consistent.
llvm-svn: 158163
|
| |
|
|
| |
llvm-svn: 158162
|
| |
|
|
| |
llvm-svn: 158161
|
| |
|
|
|
|
| |
It will cause assertion failure later on.
llvm-svn: 158160
|
| |
|
|
| |
llvm-svn: 158159
|
| |
|
|
|
|
| |
Fixes pr13048.
llvm-svn: 158158
|
| |
|
|
|
|
| |
// rdar://11485774
llvm-svn: 158157
|
| |
|
|
| |
llvm-svn: 158156
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
This patch affects docs only, and includes formatting changes only
(though those include some fixes for broken Doxygen markup that caused
some content to be missing from generated pages). It avoids generating
many spurious pages such as
http://clang.llvm.org/doxygen/classRepresents.html, but likely not all
yet.
Patch by James Dennett.
llvm-svn: 158155
|
| |
|
|
|
|
| |
MachineBasicBlock::instr_iterator instead of MBB::iterator
llvm-svn: 158154
|
| |
|
|
|
|
|
| |
sure to emit vla size to prevent an irgen crash.
// rdar://11485774
llvm-svn: 158153
|
| |
|
|
|
|
| |
missed it).
llvm-svn: 158151
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The integral APSInt value is now stored in a decomposed form and the backing
store for large values is allocated via the ASTContext. This way its not
leaked as TemplateArguments are never destructed when they are allocated in
the ASTContext. Since the integral data is immutable it is now shared between
instances, making copying TemplateArguments a trivial operation.
Currently getting the integral data out of a TemplateArgument requires creating
a new APSInt object. This is cheap when the value is small but can be expensive
if it's not. If this turns out to be an issue a more efficient accessor could
be added.
llvm-svn: 158150
|