| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Basically, using:
lea symbol(%rip), %rax
is not valid in -static mode, because the current RIP may not be
within 32-bits of "symbol" when an app is built partially pic and
partially static. The fix for this is to compile it to:
lea symbol, %rax
It would be better to codegen this as:
movq $symbol, %rax
but that will come next.
The hard part of fixing this bug was fixing abi-isel, which was actively
testing for the wrong behavior. Also, the RUN lines are completely impossible
to understand what they are testing. To help with this, convert the -static
x86-64 codegen tests to use filecheck. This is much more stable and makes it
more clear what the codegen is expected to be.
llvm-svn: 75382
|
| |
|
|
| |
llvm-svn: 75381
|
| |
|
|
| |
llvm-svn: 75380
|
| |
|
|
|
|
|
|
|
| |
Make llvm_unreachable take an optional string, thus moving the cerr<< out of
line.
LLVM_UNREACHABLE is now a simple wrapper that makes the message go away for
NDEBUG builds.
llvm-svn: 75379
|
| |
|
|
| |
llvm-svn: 75378
|
| |
|
|
| |
llvm-svn: 75376
|
| |
|
|
| |
llvm-svn: 75375
|
| |
|
|
| |
llvm-svn: 75374
|
| |
|
|
|
|
|
|
| |
A full set is a constant range that represents any number. If you take the
umax of that and [5, 10) you end up with [5, INT_MAX] because the values less
than 5 would be umax's against a value which is at least 5.
llvm-svn: 75372
|
| |
|
|
| |
llvm-svn: 75371
|
| |
|
|
|
|
| |
away. This way you can write a space and it matches arbitrary spaces and tabs.
llvm-svn: 75370
|
| |
|
|
|
|
| |
changes.
llvm-svn: 75369
|
| |
|
|
|
|
| |
disclaim: I know nothing about Python, so apologies in advance if I break something
llvm-svn: 75368
|
| |
|
|
| |
llvm-svn: 75367
|
| |
|
|
| |
llvm-svn: 75366
|
| |
|
|
|
|
| |
scope of loop. Rename variable to j.
llvm-svn: 75365
|
| |
|
|
| |
llvm-svn: 75364
|
| |
|
|
|
|
| |
and abort()/exit() -> llvm_report_error().
llvm-svn: 75363
|
| |
|
|
|
|
|
|
| |
testing.
In addition to fixing this, I still need to do some more testing on darwin.
llvm-svn: 75362
|
| |
|
|
| |
llvm-svn: 75361
|
| |
|
|
|
|
| |
feasible.
llvm-svn: 75360
|
| |
|
|
|
|
|
|
| |
modifies CPSR when they are outside the IT blocks, or they can predicated when in Thumb2. Move the implicit def of CPSR to an optional def which defaults CPSR. This allows the 's' bit to be toggled dynamically.
A side-effect of this change is asm printer is now using unified assembly. There are some minor clean ups and fixes as well.
llvm-svn: 75359
|
| |
|
|
| |
llvm-svn: 75358
|
| |
|
|
|
|
|
|
|
|
| |
per icmp predicate out of predsimplify and into ConstantRange.
Add another utility method that determines whether one range is a subset of
another. Combine with the former to determine whether icmp pred range, range
is known to be true or not.
llvm-svn: 75357
|
| |
|
|
|
|
|
|
| |
void* values that are bound
to symbolic regions and then treated like integers.
llvm-svn: 75356
|
| |
|
|
| |
llvm-svn: 75329
|
| |
|
|
|
|
| |
def. I need this to get ready for major Thumb1 surgery.
llvm-svn: 75328
|
| |
|
|
| |
llvm-svn: 75327
|
| |
|
|
|
|
|
| |
MemRegion kinds. This allows the compiler to identify what MemRegions we don't
handle for pointer arithmetic.
llvm-svn: 75326
|
| |
|
|
| |
llvm-svn: 75325
|
| |
|
|
| |
llvm-svn: 75324
|
| |
|
|
|
|
| |
have an initializer. Also, move some tests around to match the C++0x draft better.
llvm-svn: 75322
|
| |
|
|
|
|
|
|
|
| |
warning: ‘OPT’ may be used uninitialized in this function
Now OPT is initialized to NULL. I'm not certain if this is the correct fix;
others please review.
llvm-svn: 75321
|
| |
|
|
| |
llvm-svn: 75320
|
| |
|
|
| |
llvm-svn: 75318
|
| |
|
|
|
|
| |
registers are commuted.
llvm-svn: 75317
|
| |
|
|
| |
llvm-svn: 75316
|
| |
|
|
| |
llvm-svn: 75315
|
| |
|
|
|
|
|
|
|
|
|
|
| |
The idea is to segregate Objective-C "object" pointers from general C pointers (utilizing the recently added ObjCObjectPointerType). The fun starts in Sema::GetTypeForDeclarator(), where "SomeInterface *" is now represented by a single AST node (rather than a PointerType whose Pointee is an ObjCInterfaceType). Since a significant amount of code assumed ObjC object pointers where based on C pointers/structs, this patch is very tedious. It should also explain why it is hard to accomplish this in smaller, self-contained patches.
This patch does most of the "heavy lifting" related to moving from PointerType->ObjCObjectPointerType. It doesn't include all potential "cleanups". The good news is additional cleanups can be done later (some are noted in the code). This patch is so large that I didn't want to include any changes that are purely aesthetic.
By making the ObjC types truly built-in, they are much easier to work with (and require fewer "hacks"). For example, there is no need for ASTContext::isObjCIdStructType() or ASTContext::isObjCClassStructType()! We believe this change (and the follow-up cleanups) will pay dividends over time.
Given the amount of code change, I do expect some fallout from this change (though it does pass all of the clang tests). If you notice any problems, please let us know asap! Thanks.
llvm-svn: 75314
|
| |
|
|
| |
llvm-svn: 75312
|
| |
|
|
|
|
| |
quad registers and the Q4PR class holds sets of 4 quad registers.
llvm-svn: 75309
|
| |
|
|
|
|
|
| |
These are needed to represent ARM Neon struct datatypes containing 2, 3 or 4
separate vectors.
llvm-svn: 75308
|
| |
|
|
|
|
| |
never be generated.
llvm-svn: 75305
|
| |
|
|
|
|
|
| |
over the types of MemRegions. This allows the compiler to warn us which regions
are not handled, and also is a little faster.
llvm-svn: 75304
|
| |
|
|
| |
llvm-svn: 75303
|
| |
|
|
|
|
| |
since names are the same for almost all the types.
llvm-svn: 75302
|
| |
|
|
| |
llvm-svn: 75301
|
| |
|
|
|
|
|
| |
USE_OPROFILE to 0 on some paths through configure, which does the
wrong thing with #if defined().
llvm-svn: 75300
|
| |
|
|
| |
llvm-svn: 75298
|
| |
|
|
| |
llvm-svn: 75297
|