| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
| |
No functional change.
Part of rdar://9119939
llvm-svn: 134198
|
| |
|
|
|
|
|
|
|
| |
Fix a FIXME and allow predication (in Thumb2) for the T1 register to
register MOV instructions. This allows some better codegen with
if-conversion (as seen in the test updates), plus it lays the groundwork
for pseudo-izing the tMOVCC instructions.
llvm-svn: 134197
|
| |
|
|
| |
llvm-svn: 134196
|
| |
|
|
| |
llvm-svn: 134195
|
| |
|
|
| |
llvm-svn: 134194
|
| |
|
|
| |
llvm-svn: 134193
|
| |
|
|
| |
llvm-svn: 134192
|
| |
|
|
|
|
| |
tables.
llvm-svn: 134191
|
| |
|
|
| |
llvm-svn: 134190
|
| |
|
|
| |
llvm-svn: 134189
|
| |
|
|
|
|
|
| |
Only prevectorize loops that are actually parallel and can
be vectorized. Take the innermost loop that is eligible.
llvm-svn: 134187
|
| |
|
|
|
|
|
| |
We just strip-mine the innermost dimension by the vector width. This does not
take into account if this dimension is parallel nor if it is constant.
llvm-svn: 134186
|
| |
|
|
|
|
| |
This fixes PR10223.
llvm-svn: 134183
|
| |
|
|
|
|
|
|
|
| |
nodes.
Original message:
Let simplify cfg simplify bb with only debug and lifetime intrinsics.
llvm-svn: 134182
|
| |
|
|
|
|
|
|
|
|
|
|
| |
isl introduced a new representation for the schedules it calculates. The new
representation uses a forest of bands and is closer to the structure of the
data as the old interface. Switch to the new interface, as it is nicer to use
and as the old interface will soon be removed from isl.
WARNING: This commit needs a version of isl that is more recent that the one
included in CLooG. See:
http://polly.grosser.es/get_started.html#islTrunk
llvm-svn: 134181
|
| |
|
|
|
|
|
| |
Build Polly without run time type info (rtti), as otherwise Polly cannot be
loaded into a LLVM that is built without rtti.
llvm-svn: 134180
|
| |
|
|
|
| |
Reported-By: Sebastian Pop <sebpop@gmail.com>
llvm-svn: 134179
|
| |
|
|
|
|
|
| |
It's just a call to a special helper function. Get rid of the T2 variant
entirely, as it's identical to the Thumb1 version.
llvm-svn: 134178
|
| |
|
|
|
|
| |
overflow.
llvm-svn: 134177
|
| |
|
|
|
|
| |
Python SWIG, since it cannot hanlde the (uint32_t &count) parameter.
llvm-svn: 134176
|
| |
|
|
|
|
|
|
| |
It's just a t2LDMIA_UPD instruction with extra codegen properties, so it
doesn't need the encoding information. As a side-benefit, we now correctly
recognize for instruction printing as a 'pop' instruction.
llvm-svn: 134173
|
| |
|
|
|
|
|
| |
It's just a tPOP instruction with additional code-gen properties, so it
doesn't need encoding information.
llvm-svn: 134172
|
| |
|
|
| |
llvm-svn: 134171
|
| |
|
|
|
|
| |
and the RHS of .*. Noticed by Enea Zaffanella!
llvm-svn: 134170
|
| |
|
|
| |
llvm-svn: 134169
|
| |
|
|
|
|
|
| |
(SourceManager::createFileID cannot return an invalid file ID).
Also update a comment to reflect this.
llvm-svn: 134168
|
| |
|
|
| |
llvm-svn: 134167
|
| |
|
|
|
|
| |
This fell out when Chandler landed the patch in r134138.
llvm-svn: 134163
|
| |
|
|
| |
llvm-svn: 134158
|
| |
|
|
| |
llvm-svn: 134156
|
| |
|
|
| |
llvm-svn: 134155
|
| |
|
|
| |
llvm-svn: 134153
|
| |
|
|
|
|
|
| |
In some cases it is necessary to use a version of isl that is more recent than
the one included with CLooG. Point out what is needed to get such a version.
llvm-svn: 134152
|
| |
|
|
| |
llvm-svn: 134148
|
| |
|
|
| |
llvm-svn: 134140
|
| |
|
|
| |
llvm-svn: 134139
|
| |
|
|
|
|
|
|
| |
a constructor or destructor.
Patch by Hans Wennborg.
llvm-svn: 134138
|
| |
|
|
|
|
|
|
|
|
|
| |
for a template template parameter.
Uses to follow.
I've also made the uniquing of SubstTemplateTemplateParmPacks
use a ContextualFoldingSet as a minor space efficiency.
llvm-svn: 134137
|
| |
|
|
|
|
|
|
|
|
|
| |
Patch by Caitlin Sadowski.
Unfortunately, this attribute doesn't seem to have a single test. It is
only mentioned in comments in one test, and as a string literal in
a copy of some Clang code checked in as a test for the Indexer. =[ It
dates from 2009 r74280 as part of OpenCL 1.0.
llvm-svn: 134136
|
| |
|
|
|
|
|
|
| |
should make it a little easier to use this as an example of
how to fetch all the different bits of information about
threads.
llvm-svn: 134135
|
| |
|
|
| |
llvm-svn: 134134
|
| |
|
|
|
|
|
|
| |
"struct ", "class ", and "union " from the start of any type names that are
extracted from clang QualType objects. I had to fix test suite cases that
were expecting the struct/union/class prefix to be there.
llvm-svn: 134132
|
| |
|
|
| |
llvm-svn: 134131
|
| |
|
|
|
|
|
| |
tADDrSPi is not predicable, so we can't size-reduce a t2ADDri to it if the
predicate is anything other than "always."
llvm-svn: 134130
|
| |
|
|
| |
llvm-svn: 134129
|
| |
|
|
| |
llvm-svn: 134128
|
| |
|
|
|
|
|
|
|
|
| |
be the first encoded as the first feature. It then uses the CPU name to look up
features / scheduling itineray even though clients know full well the CPU name
being used to query these properties.
The fix is to just have the clients explictly pass the CPU name!
llvm-svn: 134127
|
| |
|
|
| |
llvm-svn: 134126
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch will sometimes choose live range split points next to
interference instead of always splitting next to a register point. That
means spill code can now appear almost anywhere, and it was necessary
to fix code that didn't expect that.
The difficult places were:
- Between a CALL returning a value on the x87 stack and the
corresponding FpPOP_RETVAL (was FpGET_ST0). Probably also near x87
inline assembly, but that didn't actually show up in testing.
- Between a CALL popping arguments off the stack and the corresponding
ADJCALLSTACKUP.
Both are fixed now. The only place spill code can't appear is after
terminators, see SplitAnalysis::getLastSplitPoint.
Original commit message:
Rewrite RAGreedy::splitAroundRegion, now with cool ASCII art.
This function has to deal with a lot of special cases, and the old
version got it wrong sometimes. In particular, it would sometimes leave
multiple uses in the stack interval in a single block. That causes bad
code with multiple reloads in the same basic block.
The new version handles block entry and exit in a single pass. It first
eliminates all the easy cases, and then goes on to create a local
interval for the blocks with difficult interference. Previously, we
would only create the local interval for completely isolated blocks.
It can happen that the stack interval becomes completely empty because
we could allocate a register in all edge bundles, and the new local
intervals deal with the interference. The empty stack interval is
harmless, but we need to remove a SplitKit assertion that checks for
empty intervals.
llvm-svn: 134125
|
| |
|
|
| |
llvm-svn: 134124
|