| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
| |
llvm-svn: 155363
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Original commit message:
Defer some shl transforms to DAGCombine.
The shl instruction is used to represent multiplication by a constant
power of two as well as bitwise left shifts. Some InstCombine
transformations would turn an shl instruction into a bit mask operation,
making it difficult for later analysis passes to recognize the
constsnt multiplication.
Disable those shl transformations, deferring them to DAGCombine time.
An 'shl X, C' instruction is now treated mostly the same was as 'mul X, C'.
These transformations are deferred:
(X >>? C) << C --> X & (-1 << C) (When X >> C has multiple uses)
(X >>? C1) << C2 --> X << (C2-C1) & (-1 << C2) (When C2 > C1)
(X >>? C1) << C2 --> X >>? (C1-C2) & (-1 << C2) (When C1 > C2)
The corresponding exact transformations are preserved, just like
div-exact + mul:
(X >>?,exact C) << C --> X
(X >>?,exact C1) << C2 --> X << (C2-C1)
(X >>?,exact C1) << C2 --> X >>?,exact (C1-C2)
The disabled transformations could also prevent the instruction selector
from recognizing rotate patterns in hash functions and cryptographic
primitives. I have a test case for that, but it is too fragile.
llvm-svn: 155362
|
| |
|
|
|
|
| |
interpreter.
llvm-svn: 155360
|
| |
|
|
|
|
| |
existentially quantified lock expressions.
llvm-svn: 155357
|
| |
|
|
|
|
| |
<rdar://problem/11284902>.
llvm-svn: 155356
|
| |
|
|
| |
llvm-svn: 155355
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
The problem is that the struct file_status on UNIX systems has two
members called st_dev and st_ino; those are also members of the
struct stat, and they are reserved identifiers which can also be
provided as #define (and this is the case for st_dev on Hurd).
The solution (attached) is to rename them, for example adding a
"fs_" prefix (= file status) to them.
Patch by Pino Toscano
llvm-svn: 155354
|
| |
|
|
| |
llvm-svn: 155353
|
| |
|
|
| |
llvm-svn: 155352
|
| |
|
|
| |
llvm-svn: 155351
|
| |
|
|
| |
llvm-svn: 155350
|
| |
|
|
|
|
|
|
| |
'createLoop' by
reference, so that we do not need to type an extra '&' operator when calling the function.
llvm-svn: 155349
|
| |
|
|
|
|
| |
2. Include the helper function and the helper class in the LoopGenerator.h into the polly namespace.
llvm-svn: 155348
|
| |
|
|
|
|
| |
the compiled source file.
llvm-svn: 155346
|
| |
|
|
| |
llvm-svn: 155345
|
| |
|
|
| |
llvm-svn: 155344
|
| |
|
|
| |
llvm-svn: 155343
|
| |
|
|
|
|
|
|
| |
provide the types directly.
This should fix PR12628
llvm-svn: 155342
|
| |
|
|
| |
llvm-svn: 155341
|
| |
|
|
| |
llvm-svn: 155340
|
| |
|
|
|
|
| |
just the switch. Saves a little bit of binary size.
llvm-svn: 155339
|
| |
|
|
| |
llvm-svn: 155338
|
| |
|
|
|
|
| |
128-bit versus 256-bit vectors. Be explicit about both sizes and use llvm_unreachable. Similar changes to getLegalSplat.
llvm-svn: 155337
|
| |
|
|
| |
llvm-svn: 155336
|
| |
|
|
|
|
| |
shuffle operand has a different type than the the shuffle result since it can never happen.
llvm-svn: 155333
|
| |
|
|
| |
llvm-svn: 155332
|
| |
|
|
| |
llvm-svn: 155331
|
| |
|
|
| |
llvm-svn: 155330
|
| |
|
|
|
|
| |
fixes an assert reading "1239123123123123" when the result is already 64-bit.
llvm-svn: 155329
|
| |
|
|
| |
llvm-svn: 155328
|
| |
|
|
|
|
|
| |
intructions are processed. So there's no need to look at them if they're used as
operands of other instructions.
llvm-svn: 155327
|
| |
|
|
|
|
|
| |
by a chrome build on OS X. Thanks to Nico Weber for testing a patch and
providing the .ii file.
llvm-svn: 155326
|
| |
|
|
|
|
| |
an ConstantNode SDValue. getConstant was almost always called just before only to have the functions take it apart and build a new ConstantSDNode.
llvm-svn: 155325
|
| |
|
|
|
|
| |
Found by valgrind.
llvm-svn: 155324
|
| |
|
|
|
|
|
|
| |
uninitialized memory if the input wasn't 0-terminated.
Found by valgrind.
llvm-svn: 155323
|
| |
|
|
| |
llvm-svn: 155321
|
| |
|
|
|
|
| |
getUNDEF instead of requerying. Use &Mask[0] instead of Mask.data().
llvm-svn: 155320
|
| |
|
|
| |
llvm-svn: 155319
|
| |
|
|
|
|
| |
128-bit vectors to use either CONCAT_VECTORS or a helper function. CONCAT_VECTORS will itself be lowered to the same pattern as before. The helper function is needed for concats of BUILD_VECTORs since getNode(CONCAT_VECTORS) will just return a large BUILD_VECTOR and we may be trying to lower large BUILD_VECTORS when this occurs.
llvm-svn: 155318
|
| |
|
|
| |
llvm-svn: 155317
|
| |
|
|
|
|
|
|
|
|
|
| |
the tempale arguments in deciding the visibility.
This agrees with gcc 4.7.
Found by trying to build chrome with component=shared_library with 155314
reverted.
llvm-svn: 155316
|
| |
|
|
| |
llvm-svn: 155315
|
| |
|
|
|
|
| |
components build.
llvm-svn: 155314
|
| |
|
|
|
|
| |
Found by valgrind.
llvm-svn: 155313
|
| |
|
|
| |
llvm-svn: 155312
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
1) Make the checked assertions a bit more precise. We really want the
canonical forms coming out of reassociate to be exactly what is
expected.
2) Remove other passes, and switch the test to actually directly check
that reassociate makes the important transforms and
canonicalizations.
3) Fold in a related test case now that we're using FileCheck. Make the
same tidying changes to it.
llvm-svn: 155311
|
| |
|
|
| |
llvm-svn: 155310
|
| |
|
|
| |
llvm-svn: 155309
|
| |
|
|
| |
llvm-svn: 155307
|
| |
|
|
|
|
|
| |
type llvm::ArrayType -- sometimes we emit them as packed structs. Don't assert
if such a global array has an element type with a non-trivial destructor.
llvm-svn: 155305
|