| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
| |
(transforming each in turn) into calls into one central routine
(TransformExprs) that transforms a list of expressions. This
refactoring is preparatory work for pack expansions whose in an
expression-list.
No functionality change.
llvm-svn: 122761
|
|
|
|
|
|
| |
almost-but-not-quite-identical code. No intended functionality change.
llvm-svn: 122760
|
|
|
|
|
|
|
|
|
|
|
| |
that are allowed to have metadata operands are intrinsic calls,
and the only ones that take metadata currently return void.
Just reject all void instructions, which should not be value
numbered anyway. To future proof things, add an assert to the
getHashValue impl for calls to check that metadata operands
aren't present.
llvm-svn: 122759
|
|
|
|
|
|
|
|
|
|
| |
nested values, so they can change and drop to null, which can
change the hash and cause havok.
It turns out that it isn't a good idea to value number stuff
with metadata operands anyway, so... don't.
llvm-svn: 122758
|
|
|
|
|
|
| |
-fobjc-default-synthesize-properties flag.
llvm-svn: 122757
|
|
|
|
|
|
|
|
|
|
| |
reached a thrilling climax when
FunctionDecl::setPure crashed a poor user's code.
Remove the use of this accessor when deserializing, along with several other in the neighborhood. Fixes rdar://8759653.
llvm-svn: 122756
|
|
|
|
|
|
|
|
| |
receives a PPCallback.
Patch by Richard Smith.
llvm-svn: 122755
|
|
|
|
| |
llvm-svn: 122754
|
|
|
|
|
|
|
|
| |
Replace "clang++" with "clang\+\+" because we have to escape regexp
special characters now. This is in preparation for changes to lit to
fix PR8199. Tests will fail until the lit part gets committed.
llvm-svn: 122753
|
|
|
|
| |
llvm-svn: 122752
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
template argument (described by an expression, of course). For
example:
template<int...> struct int_tuple { };
template<int ...Values>
struct square {
typedef int_tuple<(Values*Values)...> type;
};
It also lays the foundation for pack expansions in an initializer-list.
llvm-svn: 122751
|
|
|
|
|
|
|
| |
disabling rtti and exceptions where requested. Remove some unnecessary
code too.
llvm-svn: 122750
|
|
|
|
|
|
| |
the benefit of project-based generators (VS, XCode, etc).
llvm-svn: 122749
|
|
|
|
|
|
| |
file
llvm-svn: 122748
|
|
|
|
|
|
| |
Patch by arrowdodger!
llvm-svn: 122747
|
|
|
|
|
|
|
| |
InstructionSimplify on instructions that didn't change since the
last time round the loop.
llvm-svn: 122745
|
|
|
|
|
|
|
|
|
| |
don't have access to (e.g., fprintf, which needs the library type
FILE), fail with a warning and forget about the builtin
entirely. Previously, we would actually provide an error, which breaks
autoconf's super-lame checks for fprintf, longjmp, etc. Fixes PR8316.
llvm-svn: 122744
|
|
|
|
| |
llvm-svn: 122743
|
|
|
|
|
|
|
|
|
| |
capacity on the Visited SmallPtrSet. On 403.gcc, this is about a 4.5% speedup of
CodeGenPrepare time (which itself is 10% of time spent in the backend).
This is progress towards PR8889.
llvm-svn: 122741
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
improvement in the generated code, and speeds up 'opt -std-compile-opts'
compile time on 176.gcc from 24.84s to 23.2s (about 7%).
This also resolves a specific code quality issue in rdar://7352081 which
was generating poor code for:
int t(int a, int b) {
if (a & b & 1)
return a & b;
return 3;
}
llvm-svn: 122740
|
|
|
|
|
|
|
|
| |
The rationale is that after analyzing a function in the SCC, we may want to
modify it in a way that requires us to update its uses (f.e. to replace the
call with a constant) or its users (f.e. to call it with fewer arguments).
llvm-svn: 122739
|
|
|
|
|
|
|
| |
elimination as well. This deletes 60 stores in 176.gcc
that largely come from bitfield code.
llvm-svn: 122736
|
|
|
|
|
|
| |
a 28% speedup of MachineCSE time on 403.gcc.
llvm-svn: 122735
|
|
|
|
|
|
| |
in their SCC as they already have with the direct callees.
llvm-svn: 122734
|
|
|
|
|
|
| |
speeding earlycse up by 6%.
llvm-svn: 122733
|
|
|
|
|
|
|
| |
store->load forwarding. This allows EarlyCSE to zap 600 more
loads from 176.gcc.
llvm-svn: 122732
|
|
|
|
|
|
| |
by their pointer instead of using MemoryValue to wrap it.
llvm-svn: 122731
|
|
|
|
| |
llvm-svn: 122730
|
|
|
|
| |
llvm-svn: 122729
|
|
|
|
|
|
|
|
|
|
| |
update a callGraph when performing the common operation of splicing the body to
a new function and updating all callers (such as via RAUW).
No users yet, though this is intended for DeadArgumentElimination as part of
PR8887.
llvm-svn: 122728
|
|
|
|
|
|
|
| |
On 176.gcc, this catches 13090 loads and calls, and increases the
number of simple instructions CSE'd from 29658 to 36208.
llvm-svn: 122727
|
|
|
|
| |
llvm-svn: 122726
|
|
|
|
| |
llvm-svn: 122725
|
|
|
|
| |
llvm-svn: 122724
|
|
|
|
|
|
| |
allocator. This speeds up early cse by about 20%
llvm-svn: 122723
|
|
|
|
| |
llvm-svn: 122722
|
|
|
|
| |
llvm-svn: 122721
|
|
|
|
| |
llvm-svn: 122720
|
|
|
|
|
|
|
| |
of instcombine that is currently in the middle of the loop pass pipeline. This
commit only checks in the pass; it will hopefully be enabled by default later.
llvm-svn: 122719
|
|
|
|
| |
llvm-svn: 122718
|
|
|
|
|
|
| |
Teach it to CSE the rest of the non-side-effecting instructions.
llvm-svn: 122716
|
|
|
|
|
|
| |
Add a testcase.
llvm-svn: 122715
|
|
|
|
|
|
| |
so that Dominators.h is *just* domtree. Also prune #includes a bit.
llvm-svn: 122714
|
|
|
|
| |
llvm-svn: 122713
|
|
|
|
|
|
|
|
| |
sure that the loop we're promoting into a memcpy doesn't mutate the input
of the memcpy. Before we were just checking that the dest of the memcpy
wasn't mod/ref'd by the loop.
llvm-svn: 122712
|
|
|
|
|
|
|
| |
mess with it. We'd rather peel/unroll it than convert all of its
stores into memsets.
llvm-svn: 122711
|
|
|
|
|
|
|
|
|
|
| |
This allows us to compile:
void test(char *s, int a) {
__builtin_memset(s, a, 15);
}
into 1 mul + 3 stores instead of 3 muls + 3 stores.
llvm-svn: 122710
|
|
|
|
| |
llvm-svn: 122709
|
|
|
|
| |
llvm-svn: 122708
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
series of shifts and ors.
We could implement a DAGCombine to turn x * 0x0101 back into logic operations
on targets that doesn't support the multiply or it is slow (p4) if someone cares
enough.
Example code:
void test(char *s, int a) {
__builtin_memset(s, a, 4);
}
before:
_test: ## @test
movzbl 8(%esp), %eax
movl %eax, %ecx
shll $8, %ecx
orl %eax, %ecx
movl %ecx, %eax
shll $16, %eax
orl %ecx, %eax
movl 4(%esp), %ecx
movl %eax, 4(%ecx)
movl %eax, (%ecx)
ret
after:
_test: ## @test
movzbl 8(%esp), %eax
imull $16843009, %eax, %eax ## imm = 0x1010101
movl 4(%esp), %ecx
movl %eax, 4(%ecx)
movl %eax, (%ecx)
ret
llvm-svn: 122707
|