| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
|
|
|
|
| |
target hook.
This patch teaches the compiler that:
dX = VMOVDRR rY, rZ
is the same as:
dX = REG_SEQUENCE rY, ssub_0, rZ, ssub_1
<rdar://problem/12702965>
llvm-svn: 215404
|
| |
|
|
|
|
| |
as suggested by dblaikie in a comment on r215384.
llvm-svn: 215403
|
| |
|
|
| |
llvm-svn: 215402
|
| |
|
|
|
|
| |
Have the comments match the actual parameter names. Found via clang-tidy.
llvm-svn: 215401
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
What follows bellow is a correctness proof of the transform using CVC3.
$ < t.cvc
A, B : BITVECTOR(32);
QUERY BVPLUS(32, A & B, A | B) = BVPLUS(32, A, B);
$ cvc3 < t.cvc
Valid.
llvm-svn: 215400
|
| |
|
|
|
|
|
| |
This saves us from having to copy a 64-bit 0 value into VGPRs for
BUFFER_* instruction which only have a 12-bit immediate offset.
llvm-svn: 215399
|
| |
|
|
| |
llvm-svn: 215398
|
| |
|
|
|
|
|
|
| |
This bit was left uninitialized, which was causing some random failures
of piglit tests.
NOTE: This is a candidate for the 3.5 branch.
llvm-svn: 215396
|
| |
|
|
|
|
|
|
|
|
|
| |
This patch adds a new property: isRegSequence and the related target hooks:
TargetIntrInfo::getRegSequenceInputs and
TargetInstrInfo::getRegSequenceLikeInputs to specify that a target specific
instruction is a (kind of) REG_SEQUENCE.
<rdar://problem/12702965>
llvm-svn: 215394
|
| |
|
|
|
|
|
|
| |
pre/post-index load and store.
Patch by Steven Wu <stevenwu@apple.com>
llvm-svn: 215390
|
| |
|
|
| |
llvm-svn: 215387
|
| |
|
|
|
|
| |
only has to sort/unique values once per batch.
llvm-svn: 215386
|
| |
|
|
|
|
| |
getting rid of the redundant DIVariable in the OpenRanges pair.
llvm-svn: 215385
|
| |
|
|
|
|
|
| |
into buildLocationList(). By keeping the list of Values sorted,
DebugLocEntry::Merge can also merge multi-piece entries.
llvm-svn: 215384
|
| |
|
|
|
|
|
|
|
|
|
|
| |
buildLocationLists easier to read.
The previous implementation conflated the merging of individual pieces
and the merging of entire DebugLocEntries.
By splitting this functionality into two separate functions the intention
of the code should be clearer.
llvm-svn: 215383
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
For many Thumb-1 register register instructions, setting the CPSR is not
permitted inside an IT block. We would not correctly flag those instructions.
The previous change to identify this scenario was insufficient as it did not
actually catch all the instances. The current list is formed by manual
inspection of the ARMv6M ARM.
The change to the Thumb2 IT block test is due to the fact that the new more
stringent checking of the MIs results in the If Conversion pass being prevented
from executing (since not all the instructions in the BB are predicable). This
results in code gen changes.
Thanks to Tim Northover for pointing out that the previous patch was
insufficient and hinting that the use of the v6M ARM would be much easier to use
than the v7 or v8!
llvm-svn: 215382
|
| |
|
|
|
|
|
| |
This can easily arise when trying to assemble and ELF style .section
directive for a COFF object file.
llvm-svn: 215373
|
| |
|
|
|
|
|
| |
* libaries => libraries
* avaiable => available
llvm-svn: 215366
|
| |
|
|
|
|
|
| |
Fixes linking bitcode files that use the new style comdats for constructors
with ones that don't.
llvm-svn: 215364
|
| |
|
|
| |
llvm-svn: 215363
|
| |
|
|
|
|
|
|
| |
assembler directives
It seems to cause an lld test (elf/Mips/hilo16-3.test) to fail. Reverted while we investigate.
llvm-svn: 215361
|
| |
|
|
|
|
|
|
| |
Patch by Matheus Almeida and Toma Tabacu
Differential Revision: http://reviews.llvm.org/D4179
llvm-svn: 215359
|
| |
|
|
|
|
|
| |
This makes the function type independent of the in-line size
of LocalMIs.
llvm-svn: 215356
|
| |
|
|
| |
llvm-svn: 215355
|
| |
|
|
|
|
|
|
|
| |
LLD needs them, and it's good to be able to print them properly when
our object dumpers encounter them.
Patch by Daniel Stewart.
llvm-svn: 215352
|
| |
|
|
| |
llvm-svn: 215351
|
| |
|
|
|
|
|
|
|
|
|
|
| |
convention
By default, LLVM uses the "C" calling convention for all runtime
library functions. The half-precision FP conversion functions use the
soft-float calling convention, and are needed for some targets which
use the hard-float convention by default, so must have their calling
convention explicitly set.
llvm-svn: 215348
|
| |
|
|
|
|
|
|
| |
be propagated to all its users, and this propagation could increase the
probability of finding common subexpressions. If the COPY has only one user,
the COPY itself can be removed.
llvm-svn: 215344
|
| |
|
|
|
|
|
|
|
| |
and the lattice will be updated to be a state other than "undefined". This
limiation could miss some opportunities of lowering "overdefined" to be an
even accurate value. So this patch ask the algorithm to try to lower the
lattice value again even if the value has been lowered to be "overdefined".
llvm-svn: 215343
|
| |
|
|
|
|
|
|
|
| |
(r215340)
This time, also update the function that receives a reference to the SmallPtrSet as
a parameter.
llvm-svn: 215342
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
That broke the build:
/data/buildslave/clang-amd64-freebsd/src-llvm/lib/CodeGen/PeepholeOptimizer.cpp:729:46: error: non-const lvalue reference to type 'SmallPtrSet<[...], 8>' cannot bind to a value of unrelated type 'SmallPtrSet<[...], 16>'
Changed |= optimizeExtInstr(MI, MBB, LocalMIs);
^~~~~~~~
/data/buildslave/clang-amd64-freebsd/src-llvm/lib/CodeGen/PeepholeOptimizer.cpp:265:49: note: passing argument to parameter 'LocalMIs' here
SmallPtrSet<MachineInstr*, 8> &LocalMIs) {
^
llvm-svn: 215341
|
| |
|
|
|
|
| |
During a Clang build, the median size of this was 9
llvm-svn: 215340
|
| |
|
|
|
|
| |
because some subtarget feature strings have three components.
llvm-svn: 215339
|
| |
|
|
|
|
| |
This SmallVector's median size during a Clang build was 7.
llvm-svn: 215338
|
| |
|
|
|
|
| |
In a Clang bootstrap, their sizes were always 12, 16 and 16, respectively.
llvm-svn: 215336
|
| |
|
|
|
|
| |
In a Clang bootstrap, the size of this vector was always 6.
llvm-svn: 215335
|
| |
|
|
|
|
| |
During a Clang bootstrap, it seems this SmallVector always contains 3 elements.
llvm-svn: 215334
|
| |
|
|
|
|
|
|
|
| |
Follow up to r214266. Add missing case in ScalarizeVectorResult() for
cttz_zero_undef.
Differential Revision: http://reviews.llvm.org/D4813
llvm-svn: 215330
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The ARM ARM states that CPSR may not be updated by a MUL in thumb mode. Due to
an ordering of Thumb 2 Size Reduction and If Conversion, we would end up
generating a THUMB MULS inside an IT block.
The If Conversion pass uses the TTI isPredicable method to ensure that it can
transform a Basic Block. However, because we only check for IT handling on
Thumb2 functions, we may miss some cases. Even then, it only validates that the
CPSR is not *live* rather than it is not accessed. This corrects the handling
for that particular case since the same restriction does not hold on the vast
majority of the instructions.
This does prevent the IfConversion optimization from kicking in in certain
cases, but generating correct code is more valuable. Addresses PR20555.
llvm-svn: 215328
|
| |
|
|
|
|
|
| |
For ori, they are unsigned, for addi, signed. Create a new target
expression type to handle this and evaluate Fixups accordingly.
llvm-svn: 215315
|
| |
|
|
| |
llvm-svn: 215311
|
| |
|
|
|
|
|
| |
At least on PowerPC, the interpretation of certain modifiers depends on
the context they appear in.
llvm-svn: 215310
|
| |
|
|
|
|
|
|
|
|
|
| |
Remove the MinGW32 and Cygwin types from the OSType enumeration. These values
are represented via environments of Windows. It is a source of confusion and
needlessly clutters the code. The cost of doing this is that we must sink the
check for them into the normalization code path along with the spelling.
Addresses PR20592.
llvm-svn: 215303
|
| |
|
|
| |
llvm-svn: 215299
|
| |
|
|
|
|
| |
No functional changes intended.
llvm-svn: 215293
|
| |
|
|
|
|
|
|
| |
This removes the duplicate definition of GetXDataSection. This function is
available as a static method and is identical to the previous implementation.
This just cleans up the unnecessary duplication.
llvm-svn: 215289
|
| |
|
|
|
|
| |
Cleanup Win64EH header inclusion. NFC.
llvm-svn: 215288
|
| |
|
|
|
|
| |
Use a range based for loop instead of manual iteration. NFC.
llvm-svn: 215287
|
| |
|
|
| |
llvm-svn: 215286
|
| |
|
|
|
|
|
| |
since the operands are actually used on those cores. Provide aliases for
the only documented case in the newer Power ISA speec.
llvm-svn: 215282
|