| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
| |
(TIL that Clang's -Wparentheses ignores 'x || y && "foo"' on purpose. Neat.)
llvm-svn: 169337
|
| |
|
|
|
|
|
| |
class of attributes. This makes it much easier to check for errors and to reuse
the code.
llvm-svn: 169336
|
| |
|
|
|
|
| |
runtime. If we cant prove statically that the pointers are disjoint then we add the runtime check.
llvm-svn: 169334
|
| |
|
|
| |
llvm-svn: 169331
|
| |
|
|
| |
llvm-svn: 169325
|
| |
|
|
|
|
|
| |
reduction variable is not used outside the loop then we ran into an
endless loop. This change checks if we found the original PHI.
llvm-svn: 169324
|
| |
|
|
|
|
|
| |
Allow the central functions to be inlined, and use the argumentless
isHint() function when possible.
llvm-svn: 169319
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This change attempts to simplify (X^Y) -> X or Y in the user's context if we know that
only bits from X or Y are demanded.
A minimized case is provided bellow. This change will simplify "t>>16" into "var1 >>16".
=============================================================
unsigned foo (unsigned val1, unsigned val2) {
unsigned t = val1 ^ 1234;
return (t >> 16) | t; // NOTE: t is used more than once.
}
=============================================================
Note that if the "t" were used only once, the expression would be finally optimized as well.
However, with with this change, the optimization will take place earlier.
Reviewed by Nadav, Thanks a lot!
llvm-svn: 169317
|
| |
|
|
| |
llvm-svn: 169315
|
| |
|
|
|
|
| |
using multiclass.
llvm-svn: 169314
|
| |
|
|
|
|
|
|
|
| |
The count attribute is more accurate with regards to the size of an array. It
also obviates the upper bound attribute in the subrange. We can also better
handle an unbound array by setting the count to -1 instead of the lower bound to
1 and upper bound to 0.
llvm-svn: 169312
|
| |
|
|
| |
llvm-svn: 169309
|
| |
|
|
| |
llvm-svn: 169308
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This reapplies the fix for PR13303 now with more justification. Based on my
execution of the GDB 7.5 test suite this results in:
expected passes: 16101 -> 20890 (+30%)
unexpected failures: 4826 -> 637 (-77%)
There are 23 checks that used to pass and now fail. They are all in
gdb.reverse. Investigating a few looks like they were accidentally passing
due to extra breakpoints being set by this bug. They're generally due to the
difference in end location between gcc and clang, the test suite is trying to
set breakpoints on the closing '}' that clang doesn't associate with any
instructions.
llvm-svn: 169304
|
| |
|
|
| |
llvm-svn: 169293
|
| |
|
|
|
|
|
|
|
| |
textually as NativeClient. Also added a link to the native client project for
readers unfamiliar with it.
A Clang patch will follow shortly.
llvm-svn: 169291
|
| |
|
|
| |
llvm-svn: 169288
|
| |
|
|
|
|
|
|
| |
trailing/leading zeros)
instructions.
llvm-svn: 169287
|
| |
|
|
| |
llvm-svn: 169284
|
| |
|
|
|
|
| |
include .ll files. Fix that.
llvm-svn: 169283
|
| |
|
|
| |
llvm-svn: 169282
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
on 64-bit PowerPC ELF.
The patch includes code to handle external assembly and MC output with the
integrated assembler. It intentionally does not support the "old" JIT.
For the initial-exec TLS model, the ABI requires the following to calculate
the address of external thread-local variable x:
Code sequence Relocation Symbol
ld 9,x@got@tprel(2) R_PPC64_GOT_TPREL16_DS x
add 9,9,x@tls R_PPC64_TLS x
The register 9 is arbitrary here. The linker will replace x@got@tprel
with the offset relative to the thread pointer to the generated GOT
entry for symbol x. It will replace x@tls with the thread-pointer
register (13).
The two test cases verify correct assembly output and relocation output
as just described.
PowerPC-specific selection node variants are added for the two
instructions above: LD_GOT_TPREL and ADD_TLS. These are inserted
when an initial-exec global variable is encountered by
PPCTargetLowering::LowerGlobalTLSAddress(), and later lowered to
machine instructions LDgotTPREL and ADD8TLS. LDgotTPREL is a pseudo
that uses the same LDrs support added for medium code model's LDtocL,
with a different relocation type.
The rest of the processing is straightforward.
llvm-svn: 169281
|
| |
|
|
| |
llvm-svn: 169280
|
| |
|
|
|
|
| |
of grep in favor of FileCheck, and other cleanups.
llvm-svn: 169269
|
| |
|
|
|
|
| |
think it adds much and keeping it up-to-date is (obviously) a chore.
llvm-svn: 169263
|
| |
|
|
| |
llvm-svn: 169256
|
| |
|
|
| |
llvm-svn: 169255
|
| |
|
|
| |
llvm-svn: 169253
|
| |
|
|
|
|
|
|
| |
Again, tools are trickier to pick the main module header for than
library source files. I've started to follow the pattern of using
LLVMContext.h when it is included as a stub for program source files.
llvm-svn: 169252
|
| |
|
|
|
|
|
| |
I've tried to find main moudle headers where possible, but the TableGen
stuff may warrant someone else looking at it.
llvm-svn: 169251
|
| |
|
|
| |
llvm-svn: 169250
|
| |
|
|
| |
llvm-svn: 169249
|
| |
|
|
|
|
|
|
| |
doesn't look like it will have C++ code in it.
Suggestions on a better heuristic are welcome.
llvm-svn: 169248
|
| |
|
|
|
|
|
| |
trees. This allows running the input sorter on the entire clang
repository cleanly now.
llvm-svn: 169247
|
| |
|
|
|
|
| |
the system headers.
llvm-svn: 169242
|
| |
|
|
|
|
|
| |
in class template.
FIXME: I have not checked whether to be compiled on msvc11.
llvm-svn: 169225
|
| |
|
|
|
|
|
|
|
|
| |
missed in the first pass because the script didn't yet handle include
guards.
Note that the script is now able to handle all of these headers without
manual edits. =]
llvm-svn: 169224
|
| |
|
|
|
|
| |
executed due to CF.
llvm-svn: 169223
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
1) Teach it to handle files with #include on the first line -- these do
actually exist in LLVM.
2) Support llvm-c and clang-c include projects.
3) Nuke some stail imports.
4) Switch to using os.path to split the file extension off.
5) Remove debugging leftovers.
6) Add docstring (a really puny one) for the sort function.
I'm continuing te avoid stripping the whitespace on the RHS to preserve
whatever newline characters happen to be in the original file.
llvm-svn: 169222
|
| |
|
|
|
|
|
| |
This comment has the dual effect of blocking reorderings with the
sort_include script.
llvm-svn: 169221
|
| |
|
|
|
|
|
|
|
| |
The count field is necessary because there isn't a difference between the 'lo'
and 'hi' attributes for a one-element array and a zero-element array. When the
count is '0', we know that this is a zero-element array. When it's >=1, then
it's a normal constant sized array. When it's -1, then the array is unbounded.
llvm-svn: 169218
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Added the code that actually performs the if-conversion during vectorization.
We can now vectorize this code:
for (int i=0; i<n; ++i) {
unsigned k = 0;
if (a[i] > b[i]) <------ IF inside the loop.
k = k * 5 + 3;
a[i] = k; <---- K is a phi node that becomes vector-select.
}
llvm-svn: 169217
|
| |
|
|
|
|
| |
does not change the current behavior)
llvm-svn: 169216
|
| |
|
|
| |
llvm-svn: 169215
|
| |
|
|
| |
llvm-svn: 169214
|
| |
|
|
| |
llvm-svn: 169213
|
| |
|
|
| |
llvm-svn: 169212
|
| |
|
|
| |
llvm-svn: 169211
|
| |
|
|
|
|
|
| |
Apparently Dinkumware are no longer hosting their nice reference
manuals. Thankfully, `cppreference.com` can fill that role well.
llvm-svn: 169210
|
| |
|
|
|
|
|
| |
The type of shirt-right (logical or arithemetic) should remain unchanged
when transforming "X << C1 >> C2" into "X << (C1-C2)"
llvm-svn: 169209
|