| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This change removes the DefaultConstructible
and CopyAssignable constraints on the template
parameter T (the first one).
The second template parameter (R) is defaulted to be
identical to the first and controls the result type.
By specifying it to be (const T&) additionally the
CopyConstructible constraint on T can be removed.
This allows to use StringSwitch e.g. for llvm::Constant
instances.
Regarding the other review feedback regarding performance
because of taking pointers, this class should be completely
optimizable like before, since all methods are inline and
the pointer dereferencing and result value caching should be
possible behind the scenes by the "as-if" rule.
llvm-svn: 91123
|
| |
|
|
|
|
| |
build bots.
llvm-svn: 91113
|
| |
|
|
|
|
| |
has the 'nest' attribute.
llvm-svn: 91109
|
| |
|
|
| |
llvm-svn: 91105
|
| |
|
|
| |
llvm-svn: 91104
|
| |
|
|
| |
llvm-svn: 91103
|
| |
|
|
|
|
|
|
| |
- Loosen the restrictions when checking of it branches to a landing pad.
- Make the loop more efficient by checking the '.insert' return value.
- Do cheaper checks first.
llvm-svn: 91101
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
more than one successor. Normally, these extra successors are dead. However,
some of them may branch to exception handling landing pads. If we remove those
successors, then the landing pads could go away if all predecessors to it are
removed. Before, it was checking if the direct successor was the landing
pad. But it could be the result of jumping through multiple basic blocks to get
to it. If we were to only check for the existence of an EH_LABEL in the basic
block and not remove successors if it's in there, then it could stop actually
dead basic blocks from being removed.
llvm-svn: 91092
|
| |
|
|
|
|
| |
progress.
llvm-svn: 91090
|
| |
|
|
| |
llvm-svn: 91087
|
| |
|
|
|
|
| |
do not try to use the variable die.
llvm-svn: 91077
|
| |
|
|
| |
llvm-svn: 91062
|
| |
|
|
|
|
|
|
| |
subregister indices. e.g.:
%reg16404:1<def> = MOV8rr %reg16412:2<kill>
llvm-svn: 91061
|
| |
|
|
| |
llvm-svn: 91058
|
| |
|
|
|
|
| |
Create global variable DIEs after creating subprogram DIEs. This allows function level static variable's to find their context at the time of DIE creation.
llvm-svn: 91055
|
| |
|
|
| |
llvm-svn: 91053
|
| |
|
|
| |
llvm-svn: 91051
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The coalescer is supposed to clean these up, but when setting up parameters
for a function call, there may be copies to physregs. If the defining
instruction has been LICM'ed far away, the coalescer won't touch it.
The register allocation hint does not always work - when the register
allocator is backtracking, it clears the hints.
This patch is more conservative than r90502, and does not break
483.xalancbmk/i686. It still breaks the PowerPC bootstrap, so it is disabled
by default, and can be enabled with the -trivial-coalesce-ends option.
llvm-svn: 91049
|
| |
|
|
|
|
|
| |
This code was crashing always with oprofile enabled, since it tried to create a StringRef
out of NULL, which run strlen on NULL.
llvm-svn: 91046
|
| |
|
|
|
|
|
| |
of the loop. We could get to this condition via indirect
branches.
llvm-svn: 91009
|
| |
|
|
|
|
|
|
| |
value size. This only manifested when memdep inprecisely returns clobber,
which is do to a caching issue in the PR5744 testcase. We can 'efficiently
emulate' this by using '-no-aa'
llvm-svn: 91004
|
| |
|
|
|
|
| |
atomic operations intrinsics.
llvm-svn: 91003
|
| |
|
|
| |
llvm-svn: 90999
|
| |
|
|
| |
llvm-svn: 90990
|
| |
|
|
| |
llvm-svn: 90988
|
| |
|
|
|
|
|
|
|
|
|
|
| |
legal. e.g.
vector_shuffle (scalar_to_vector (i32 load (ptr + 4))), undef, <0, 0, 0, 0>
=>
vector_shuffle (v4i32 load ptr), undef, <1, 1, 1, 1>
iff ptr is 16-byte aligned (or can be made into 16-byte aligned).
llvm-svn: 90984
|
| |
|
|
|
|
| |
currently somewhat convenient for them to have the same value.
llvm-svn: 90980
|
| |
|
|
| |
llvm-svn: 90979
|
| |
|
|
|
|
|
| |
clobbers to forward pieces of large stores to small loads, we need to consider
the properly phi translated pointer in the store block.
llvm-svn: 90978
|
| |
|
|
|
|
| |
implicitly constant folds.
llvm-svn: 90977
|
| |
|
|
| |
llvm-svn: 90975
|
| |
|
|
|
|
|
|
|
|
| |
add, there is no need to scan the world to find the same add again.
This invalidates the previous testcase, which wasn't wonderful anyway,
because it needed a run of instcombine to permute the use-lists in
just the right way to before GVN was run (so it was really fragile).
Not a big loss.
llvm-svn: 90973
|
| |
|
|
|
|
| |
Patch by Gregory Petrosyan!
llvm-svn: 90972
|
| |
|
|
|
|
| |
binary operator that wasn't an add. In this case, a xor. Whoops.
llvm-svn: 90971
|
| |
|
|
|
|
| |
the target.
llvm-svn: 90970
|
| |
|
|
| |
llvm-svn: 90969
|
| |
|
|
| |
llvm-svn: 90962
|
| |
|
|
|
|
| |
to require the load ty/ptr to be passed in, no functionality change.
llvm-svn: 90960
|
| |
|
|
|
|
| |
and pointer instead of the load. No functionality change.
llvm-svn: 90959
|
| |
|
|
|
|
| |
of the query.
llvm-svn: 90958
|
| |
|
|
| |
llvm-svn: 90957
|
| |
|
|
|
|
| |
own small class. No functionality change.
llvm-svn: 90956
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
When a call is placed to spill an interval this spiller will first try to
break the interval up into its component values. Single value intervals and
intervals which have already been split (or are the result of previous splits)
are spilled by the default spiller.
Splitting intervals as described above may improve the performance of generated
code in some circumstances. This work is experimental however, and it still
miscompiles many benchmarks. It's not recommended for general use yet.
llvm-svn: 90951
|
| |
|
|
| |
llvm-svn: 90937
|
| |
|
|
| |
llvm-svn: 90934
|
| |
|
|
|
|
|
|
| |
stores is not phi translating, thus it miscompiles really
crazy testcases. This is from inspection, I haven't seen
this in the wild.
llvm-svn: 90930
|
| |
|
|
| |
llvm-svn: 90929
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
phi translation of complex expressions like &A[i+1]. This has the
following benefits:
1. The phi translation logic is all contained in its own class with
a strong interface and verification that it is self consistent.
2. The logic is more correct than before. Previously, if intermediate
expressions got PHI translated, we'd miss the update and scan for
the wrong pointers in predecessor blocks. @phi_trans2 is a testcase
for this.
3. We have a lot less code in memdep.
We can handle phi translation across blocks of things like @phi_trans3,
which is pretty insane :).
This patch should fix the miscompiles of 255.vortex, and I tested it
with a bootstrap of llvm-gcc, llvm-test and dejagnu of course.
llvm-svn: 90926
|
| |
|
|
|
|
| |
isl lowering code.
llvm-svn: 90925
|
| |
|
|
|
|
| |
original bugfixes anymore. These tests were inserted to check bug fixes in code that handled debug info intrinsics. These intrinsics are no longer used and now llvm parser simply ignores old .dbg intrinsics from these dead tests.
llvm-svn: 90923
|