| Commit message (Collapse) | Author | Age | Files | Lines | 
| | 
| 
| 
| 
| 
| 
| 
|  | 
The most important part here is that we should actuall emit the stubs we refer
to in the exception table, but as a side issue this uses more sensible & GCC
compatible representations for some of the bits of information.
llvm-svn: 206380
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
If we know that a particular 64-bit constant has all high bits zero, then we
can rely on the fact that 32-bit ARM64 instructions automatically zero out the
high bits of an x-register. This gives the expansion logic less constraints to
satisfy and so sometimes allows it to pick better sequences.
Came up while porting test/CodeGen/AArch64/movw-consts.ll: this will allow a
32-bit MOVN to be used in @test8 soon.
llvm-svn: 206379
 | 
| | 
| 
| 
|  | 
llvm-svn: 206378
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
if not in micromips mode.
The test (elf_st_other.ll) was renamed as the name and description didn't
make sense as the test wasn't checking any symbol table entry.
Differential Revision: http://reviews.llvm.org/D3346
llvm-svn: 206377
 | 
| | 
| 
| 
| 
| 
|  | 
range-based for loop is confused by the DEBUG macro expansion unless a compound statement is used.
llvm-svn: 206376
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
|  | 
It doesn't work. I'm still cleaning up all the places where I blindly
followed this pattern. There are more to come in this code too.
As a benefit, this lets the default copy and move operations Just Work.
llvm-svn: 206375
 | 
| | 
| 
| 
| 
| 
|  | 
semantics) to appease MSVC.
llvm-svn: 206374
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
preventing me from seeing it initially). GCC doesn't use the unused
attribute on members for anything, so while it works to suppress Clang's
warning for an unused private member, it adds a GCC warning for the
attribute. =/ Silence Clang's warning with a void cast in the
constructor instead which doesn't trigger any complaints from GCC.
llvm-svn: 206373
 | 
| | 
| 
| 
|  | 
llvm-svn: 206372
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
Summary: Depends on D3339
Reviewers: matheusalmeida, vmedic
Reviewed By: matheusalmeida
Differential Revision: http://reviews.llvm.org/D3340
llvm-svn: 206371
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
Summary:
I had difficulty finding tests for the N32 and N64 ABI so I've added a
collection of calling convention tests based on the document MIPS ABIs
Described (MD00305), the MIPSpro N32 Handbook, and the SYSV ABI. Where the
documents/implementations disagree, I've used GCC to resolve the conflict.
A few interesting details:
* For N32, LLVM uses 64-bit pointers when saving $ra despite pointers being
  32-bit. I've yet to find a supporting statement in the ABI documentation but
  the current behaviour matches GCC.
* For O32, the non-variable portion of a varargs argument list is also subject
  to the rule that floating-point is passed via GPR's (on N32/N64 only the
  variable portion is subject to this rule). This agrees with GCC's behaviour
  and the SYSV ABI but contradicts part of the MIPSpro N32 Handbook which talks about O32's behaviour.
* The N32 implementation has the wrong callee-saved register list.
  (I already have a fix for this but will commit it as a follow-up).
I've left RUN-TODO lines in for O32 on MIPS64. I don't plan to support this case
for now but we should revisit it.
Reviewers: matheusalmeida, vmedic
Reviewed By: matheusalmeida
Differential Revision: http://reviews.llvm.org/D3339
llvm-svn: 206370
 | 
| | 
| 
| 
| 
| 
|  | 
here (obviously).
llvm-svn: 206369
 | 
| | 
| 
| 
|  | 
llvm-svn: 206368
 | 
| | 
| 
| 
| 
| 
|  | 
test still); update the comment in a test.
llvm-svn: 206367
 | 
| | 
| 
| 
| 
| 
| 
| 
|  | 
The second half of a split i128 was ending up in x7, which is not a good thing.
This is another part of PR19432.
llvm-svn: 206366
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
This particular DAG combine is designed to kick in when both ConstantFPs will
end up being loaded via a litpool, however those nodes have a semi-legal
status, dictated by isFPImmLegal so in some cases there wouldn't have been a
litpool in the first place. Don't try to be clever in those circumstances.
Picked up while merging some AArch64 tests.
llvm-svn: 206365
 | 
| | 
| 
| 
| 
| 
|  | 
No behavioural change intended.
llvm-svn: 206364
 | 
| | 
| 
| 
|  | 
llvm-svn: 206363
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
|  | 
This is a partial revert of 183015.
By not recognizing things like _setjmp we lose (returns_twice) attribute on
them, which leads to incorrect code generation.
Fixes PR16138.
llvm-svn: 206362
 | 
| | 
| 
| 
|  | 
llvm-svn: 206361
 | 
| | 
| 
| 
| 
| 
| 
| 
|  | 
implicit casts in C++.
Fixes <rdar://problem/16631033>.
llvm-svn: 206360
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
Adjust the tests to validate the number of auxiliary entries used to store the
filename.
Thanks to majnemer's sharp eye for catching the missing - 1 in the round up
calculation.
llvm-svn: 206359
 | 
| | 
| 
| 
|  | 
llvm-svn: 206358
 | 
| | 
| 
| 
|  | 
llvm-svn: 206357
 | 
| | 
| 
| 
| 
| 
|  | 
instead of comparing to nullptr.
llvm-svn: 206356
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
Add support for emitting .file records.  This is mostly a quality of
implementation change (more complete support for COFF file emission) that was
noticed while working on COFF file emission for Windows on ARM.
A .file record is emitted as a symbol with storage class FILE (103) and the name
".file".  A series of auxiliary format 4 records follow which contain the file
name.  The filename is stored as an ANSI string and is padded with NULL if the
length is not a multiple of COFF::SymbolSize (18).
llvm-svn: 206355
 | 
| | 
| 
| 
| 
| 
|  | 
All auxiliary records are consumed when accessing a File record.
llvm-svn: 206354
 | 
| | 
| 
| 
|  | 
llvm-svn: 206353
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
At one point, -fexceptions was a synonym for -fcxx-exceptions. While
the driver options still enables cxx-exceptions by default, the cc1
flag is purely about exception tables and this doesn't account for
objective C exceptions. Because of this, checking for the
cxx_exceptions feature in objective C++ often gives the wrong answer.
The cxx_exceptions feature should be based on the -fcxx-exceptions cc1
flag, not -fexceptions. Furthermore, at some point the tests were
changed to use cc1 even though they were testing the driver behaviour.
We're better off testing both the driver and cc1 here.
llvm-svn: 206352
 | 
| | 
| 
| 
|  | 
llvm-svn: 206351
 | 
| | 
| 
| 
| 
| 
|  | 
interrupt.  Do both of those.
llvm-svn: 206350
 | 
| | 
| 
| 
| 
| 
|  | 
Patch by: Jan Vesely <jan.vesely@rutgers.edu>
llvm-svn: 206349
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
Setting vector types to expand will result in scalarization on pre SI hw,
as those gpus don't have vector shifts either.
Expand also i32 vectors, this helps llvm make the correct decision
about scalarizing the vector ops.
v2: move setOperation() calls to R600ISelLowering.cpp.
    cleanup the SI code to make it obvious that this patch does is nop for SI
Patch by: Jan Vesely <jan.vesely@rutgers.edu>
llvm-svn: 206348
 | 
| | 
| 
| 
| 
| 
|  | 
unavailable. Use default constructor instead.
llvm-svn: 206347
 | 
| | 
| 
| 
|  | 
llvm-svn: 206346
 | 
| | 
| 
| 
| 
| 
|  | 
missing functionality of msc17.
llvm-svn: 206345
 | 
| | 
| 
| 
| 
| 
|  | 
No functional change.
llvm-svn: 206344
 | 
| | 
| 
| 
| 
| 
|  | 
Missed in previous commit.
llvm-svn: 206343
 | 
| | 
| 
| 
| 
| 
|  | 
relative to the module.map file.
llvm-svn: 206342
 | 
| | 
| 
| 
|  | 
llvm-svn: 206341
 | 
| | 
| 
| 
| 
| 
| 
| 
|  | 
Warn on std::abs() with unsigned argument.
Suggest std::abs as replacement for the C absolute value functions.
Suggest C++ headers if the specific std::abs overload is not found.
llvm-svn: 206340
 | 
| | 
| 
| 
|  | 
llvm-svn: 206339
 | 
| | 
| 
| 
| 
| 
| 
|  | 
traversal system.  The new pass is still undergoing testing; no change in
functionality.
llvm-svn: 206338
 | 
| | 
| 
| 
| 
| 
| 
| 
|  | 
Range'ify a bunch of loops, mainly. As a result, we have a variety
of objects via reference rather than by pointer, so propogate that
through the various helper functions where it makes sense.
llvm-svn: 206337
 | 
| | 
| 
| 
|  | 
llvm-svn: 206336
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
|  | 
Print in decimal for inline immediates, and hex otherwise. Use hex
always for offsets in addressing offsets.
This approximately matches what the shader compiler does.
llvm-svn: 206335
 | 
| | 
| 
| 
| 
| 
|  | 
Try to figure out the class and number of subregisters.
llvm-svn: 206334
 | 
| | 
| 
| 
|  | 
llvm-svn: 206333
 | 
| | 
| 
| 
| 
|  | 
Contributed-by: Johannes Doerfert <doerfert@cs.uni-saarland.de>
llvm-svn: 206332
 | 
| | 
| 
| 
| 
| 
|  | 
includes the string 'add'.
llvm-svn: 206331
 |