Revision tags: llvmorg-3.3.0-rc1 |
|
#
8e4824f3 |
| 01-May-2013 |
Chad Rosier <mcrosier@apple.com> |
[inline asm] Return an undef SDValue of the expected value type, rather than report a fatal error. This allows us to continue processing the translation unit. Test case to come on the clang side be
[inline asm] Return an undef SDValue of the expected value type, rather than report a fatal error. This allows us to continue processing the translation unit. Test case to come on the clang side because we need an inline asm diagnostics handler in place. rdar://13446483
llvm-svn: 180873
show more ...
|
#
699808ce |
| 30-Apr-2013 |
Stephen Lin <stephenwlin@gmail.com> |
Only pass 'returned' to target-specific lowering code when the value of entire register is guaranteed to be preserved.
llvm-svn: 180825
|
#
a2888e71 |
| 30-Apr-2013 |
Adrian Prantl <aprantl@apple.com> |
Temporarily revert "Change the informal convention of DBG_VALUE so that we can express a" because it breaks some buildbots.
This reverts commit 180816.
llvm-svn: 180819
|
#
9a576644 |
| 30-Apr-2013 |
Adrian Prantl <aprantl@apple.com> |
Change the informal convention of DBG_VALUE so that we can express a register-indirect address with an offset of 0. It used to be that a DBG_VALUE is a register-indirect value if the offset (operand
Change the informal convention of DBG_VALUE so that we can express a register-indirect address with an offset of 0. It used to be that a DBG_VALUE is a register-indirect value if the offset (operand 1) is nonzero. The new convention is that a DBG_VALUE is register-indirect if the first operand is a register and the second operand is an immediate. For plain registers use the combination reg, reg.
rdar://problem/13658587
llvm-svn: 180816
show more ...
|
#
108d5a61 |
| 24-Apr-2013 |
Chad Rosier <mcrosier@apple.com> |
[inline asm] Fix a crasher for an invalid value type/register class. rdar://13731657
llvm-svn: 180226
|
#
b8bd232a |
| 20-Apr-2013 |
Stephen Lin <stephenwlin@gmail.com> |
Add CodeGen support for functions that always return arguments via a new parameter attribute 'returned', which is taken advantage of in target-independent tail call opportunity detection and in ARM c
Add CodeGen support for functions that always return arguments via a new parameter attribute 'returned', which is taken advantage of in target-independent tail call opportunity detection and in ARM call lowering (when placed on an integral first parameter).
llvm-svn: 179925
show more ...
|
#
c81616b0 |
| 23-Mar-2013 |
Owen Anderson <resistor@mac.com> |
Remove the type legality check from the SelectionDAGBuilder when it lowers @llvm.fmuladd to ISD::FMA nodes. Performing this check unilaterally prevented us from generating FMAs when the incoming IR c
Remove the type legality check from the SelectionDAGBuilder when it lowers @llvm.fmuladd to ISD::FMA nodes. Performing this check unilaterally prevented us from generating FMAs when the incoming IR contained illegal vector types which would eventually be legalized to underlying types that *did* support FMA. For example, an @llvm.fmuladd on an OpenCL float16 should become a sequence of float4 FMAs, not float4 fmul+fadd's.
NOTE: Because we still call the target-specific profitability hook, individual targets can reinstate the old behavior, if desired, by simply performing the legality check inside their callback hook. They can also perform more sophisticated legality checks, if, for example, some illegal vector types can be productively implemented as FMAs, but not others. llvm-svn: 177820
show more ...
|
#
2d915e2c |
| 08-Mar-2013 |
Bill Wendling <isanbard@gmail.com> |
Revert r176154 in favor of a better approach.
Code generation makes some basic assumptions about the IR it's been given. In particular, if there is only one 'invoke' in the function, then that invok
Revert r176154 in favor of a better approach.
Code generation makes some basic assumptions about the IR it's been given. In particular, if there is only one 'invoke' in the function, then that invoke won't be going away. However, with the advent of the `llvm.donothing' intrinsic, those invokes may go away. If all of them go away, the landing pad no longer has any users. This confuses the back-end, which asserts.
This happens with SjLj exceptions, because that's the model that modifies the IR based on there being invokes, etc. in the function.
Remove any invokes of `llvm.donothing' during SjLj EH preparation. This will give us a CFG that the back-end won't be confused about. If all of the invokes in a function are removed, then the SjLj EH prepare pass won't insert the bogus code the relies upon the invokes being there. <rdar://problem/13228754&13316637>
llvm-svn: 176677
show more ...
|
#
b3864609 |
| 01-Mar-2013 |
Chad Rosier <mcrosier@apple.com> |
Generate an error message instead of asserting or segfaulting when we can't handle indirect register inputs. rdar://13322011
llvm-svn: 176367
|
#
6af16fc3 |
| 01-Mar-2013 |
Michael Liao <michael.liao@intel.com> |
Fix PR10475
- ISD::SHL/SRL/SRA must have either both scalar or both vector operands but TLI.getShiftAmountTy() so far only return scalar type. As a result, backend logic assuming that breaks. -
Fix PR10475
- ISD::SHL/SRL/SRA must have either both scalar or both vector operands but TLI.getShiftAmountTy() so far only return scalar type. As a result, backend logic assuming that breaks. - Rename the original TLI.getShiftAmountTy() to TLI.getScalarShiftAmountTy() and re-define TLI.getShiftAmountTy() to return target-specificed scalar type or the same vector type as the 1st operand. - Fix most TICG logic assuming TLI.getShiftAmountTy() a simple scalar type.
llvm-svn: 176364
show more ...
|
#
33ebf836 |
| 28-Feb-2013 |
Eli Bendersky <eliben@google.com> |
A small refactoring + adding comments.
SelectionDAGIsel::LowerArguments needs a function, not a basic block. So it makes sense to pass it the function instead of extracting a basic-block from the fu
A small refactoring + adding comments.
SelectionDAGIsel::LowerArguments needs a function, not a basic block. So it makes sense to pass it the function instead of extracting a basic-block from the function and then tossing it. This is also more self-documenting (functions have arguments, BBs don't).
In addition, added comments to a couple of Select* methods.
llvm-svn: 176305
show more ...
|
#
683f59b3 |
| 27-Feb-2013 |
Manman Ren <mren@apple.com> |
SelectionDAG: If llvm.donothing has a landingpad, we should clear CurrentCallSite to avoid an assertion failure: assert(MMI.getCurrentCallSite() == 0 && "Overlapping call sites!");
rdar://problem/13
SelectionDAG: If llvm.donothing has a landingpad, we should clear CurrentCallSite to avoid an assertion failure: assert(MMI.getCurrentCallSite() == 0 && "Overlapping call sites!");
rdar://problem/13228754
llvm-svn: 176154
show more ...
|
#
0e760da5 |
| 25-Feb-2013 |
Matt Beaumont-Gay <matthewbg@google.com> |
'Hexadecimal' has two 'a's and only one 'i'.
llvm-svn: 176031
|
#
05920b18 |
| 25-Feb-2013 |
Chandler Carruth <chandlerc@gmail.com> |
Fix the root cause of PR15348 by correctly handling alignment 0 on memory intrinsics in the SDAG builder.
When alignment is zero, the lang ref says that *no* alignment assumptions can be made. This
Fix the root cause of PR15348 by correctly handling alignment 0 on memory intrinsics in the SDAG builder.
When alignment is zero, the lang ref says that *no* alignment assumptions can be made. This is the exact opposite of the internal API contracts of the DAG where alignment 0 indicates that the alignment can be made to be anything desired.
There is another, more explicit alignment that is better suited for the role of "no alignment at all": an alignment of 1. Map the intrinsic alignment to this early so that we don't end up generating aligned DAGs.
It is really terrifying that we've never seen this before, but we suddenly started generating a large number of alignment 0 memcpys due to the new code to do memcpy-based copying of POD class members. That patch contains a bug that rounds bitfield alignments down when they are the first field. This can in turn produce zero alignments.
This fixes weird crashes I've seen in library users of LLVM on 32-bit hosts, etc.
llvm-svn: 176022
show more ...
|
#
d1c64042 |
| 11-Feb-2013 |
Evan Cheng <evan.cheng@apple.com> |
Remove unnecessary code.
llvm-svn: 174854
|
#
67bbf3aa |
| 08-Feb-2013 |
Bob Wilson <bob.wilson@apple.com> |
Revert 172027 and 174336. Remove diagnostics about over-aligned stack objects.
Aside from the question of whether we report a warning or an error when we can't satisfy a requested stack object align
Revert 172027 and 174336. Remove diagnostics about over-aligned stack objects.
Aside from the question of whether we report a warning or an error when we can't satisfy a requested stack object alignment, the current implementation of this is not good. We're not providing any source location in the diagnostics and the current warning is not connected to any warning group so you can't control it. We could improve the source location somewhat, but we can do a much better job if this check is implemented in the front-end, so let's do that instead. <rdar://problem/13127907>
llvm-svn: 174741
show more ...
|
#
a72b9709 |
| 06-Feb-2013 |
Evan Cheng <evan.cheng@apple.com> |
Tweak check to avoid integer overflow (for insanely large alignments)
llvm-svn: 174482
|
#
f04cbeb3 |
| 01-Feb-2013 |
Nadav Rotem <nrotem@apple.com> |
Fix errant fallthrough in the generation of the lifetime markers. Found by Alexander Kornienko.
llvm-svn: 174207
|
#
29178a34 |
| 22-Jan-2013 |
Tim Northover <Tim.Northover@arm.com> |
Make APFloat constructor require explicit semantics.
Previously we tried to infer it from the bit width size, with an added IsIEEE argument for the PPC/IEEE 128-bit case, which had a default value.
Make APFloat constructor require explicit semantics.
Previously we tried to infer it from the bit width size, with an added IsIEEE argument for the PPC/IEEE 128-bit case, which had a default value. This default value allowed bugs to creep in, where it was inappropriate.
llvm-svn: 173138
show more ...
|
#
4f972ea2 |
| 18-Jan-2013 |
Bill Wendling <isanbard@gmail.com> |
Remove unused parameter. Also use the AttributeSet query methods instead of the Attribute query methods.
llvm-svn: 172852
|
#
0cb6fd93 |
| 11-Jan-2013 |
Eric Christopher <echristo@gmail.com> |
For inline asm:
- recognize string "{memory}" in the MI generation - mark as mayload/maystore when there's a memory clobber constraint.
PR14859.
Patch by Krzysztof Parzyszek
llvm-svn: 172228
|
#
a9286e93 |
| 10-Jan-2013 |
Jakub Staszak <kubastaszak@gmail.com> |
Remove unneeded includes from FunctionLoweringInfo.h.
llvm-svn: 172123
|
#
207bcbac |
| 10-Jan-2013 |
Manman Ren <mren@apple.com> |
Stack Alignment: throw error if we can't satisfy the minimal alignment requirement when creating stack objects in MachineFrameInfo.
Add CreateStackObjectWithMinAlign to throw error when the minimal
Stack Alignment: throw error if we can't satisfy the minimal alignment requirement when creating stack objects in MachineFrameInfo.
Add CreateStackObjectWithMinAlign to throw error when the minimal alignment can't be achieved and to clamp the alignment when the preferred alignment can't be achieved. Same is true for CreateVariableSizedObject. Will not emit error in CreateSpillStackObject or CreateStackObject.
As long as callers of CreateStackObject do not assume the object will be aligned at the requested alignment, we should not have miscompile since later optimizations which look at the object's alignment will have the correct information.
rdar://12713765
llvm-svn: 172027
show more ...
|
#
9fb823bb |
| 02-Jan-2013 |
Chandler Carruth <chandlerc@gmail.com> |
Move all of the header files which are involved in modelling the LLVM IR into their new header subdirectory: include/llvm/IR. This matches the directory structure of lib, and begins to correct a long
Move all of the header files which are involved in modelling the LLVM IR into their new header subdirectory: include/llvm/IR. This matches the directory structure of lib, and begins to correct a long standing point of file layout clutter in LLVM.
There are still more header files to move here, but I wanted to handle them in separate commits to make tracking what files make sense at each layer easier.
The only really questionable files here are the target intrinsic tablegen files. But that's a battle I'd rather not fight today.
I've updated both CMake and Makefile build systems (I think, and my tests think, but I may have missed something).
I've also re-sorted the includes throughout the project. I'll be committing updates to Clang, DragonEgg, and Polly momentarily.
llvm-svn: 171366
show more ...
|
#
74dba875 |
| 30-Dec-2012 |
Bill Wendling <isanbard@gmail.com> |
Remove the Function::getRetAttributes method in favor of using the AttributeSet accessor method.
llvm-svn: 171256
|