| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
| |
See: http://en.wikipedia.org/wiki/If_and_only_if Commit 164766
llvm-svn: 164769
|
|
|
|
| |
llvm-svn: 164766
|
|
|
|
| |
llvm-svn: 164374
|
|
|
|
|
|
|
|
|
| |
This patch uses a new ABIInfo implementation specific to the le32
target, rather than falling back to DefaultABIInfo. Its behavior is
basically the same, but it also allows the regparm argument attribute.
It also includes basic tests for argument codegen and attributes.
llvm-svn: 163333
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Most of the code guarded with ANDROIDEABI are not
ARM-specific, and having no relation with arm-eabi.
Thus, it will be more natural to call this
environment "Android" instead of "ANDROIDEABI".
Note: We are not using ANDROID because several projects
are using "-DANDROID" as the conditional compilation
flag.
llvm-svn: 163088
|
|
|
|
|
|
| |
rdar://9877866
llvm-svn: 161790
|
|
|
|
| |
llvm-svn: 161702
|
|
|
|
|
|
|
| |
rdar://9877866
PR://13350
llvm-svn: 161694
|
|
|
|
|
|
| |
from before r159168. PR13562.
llvm-svn: 161554
|
|
|
|
| |
llvm-svn: 161546
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
attribute. It is a variation of the x86_64 ABI:
* A struct returned indirectly uses the first register argument to pass the
pointer.
* Floats, Doubles and structs containing only one of them are not passed in
registers.
* Other structs are split into registers if they fit on the remaining ones.
Otherwise they are passed in memory.
* When a struct doesn't fit it still consumes the registers.
llvm-svn: 161022
|
|
|
|
| |
llvm-svn: 160652
|
|
|
|
| |
llvm-svn: 160648
|
|
|
|
|
|
|
| |
Under AAPCS, long double is the same as double, which means it should be
allowed as part of a homogeneous aggregate.
llvm-svn: 160586
|
|
|
|
|
|
|
|
| |
instead.
No functionality change.
llvm-svn: 159719
|
|
|
|
|
|
|
|
|
|
|
| |
values:
- Return integer vectors in integer registers.
- Pass vector arguments in integer registers.
- Set an upper bound for argument alignment. The largest alignment is 8-byte
for O32 and 16-byte for N32/64.
llvm-svn: 159676
|
|
|
|
|
|
| |
Revert r136662 which disables ARM byval.
llvm-svn: 159168
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
value_type
In addition, I've made the pointer and reference typedef 'void' rather than T*
just so they can't get misused. I would've omitted them entirely but
std::distance likes them to be there even if it doesn't use them.
This rolls back r155808 and r155869.
Review by Doug Gregor incorporating feedback from Chandler Carruth.
llvm-svn: 158104
|
|
|
|
| |
llvm-svn: 158017
|
|
|
|
|
|
| |
NV_CONTRIB
llvm-svn: 157403
|
|
|
|
| |
llvm-svn: 157173
|
|
|
|
|
|
|
| |
register size of the target architecture.
llvm-svn: 156650
|
|
|
|
|
|
|
| |
A vector should be returned via the hidden pointer argument except if its size
is equal to or smaller than 16-bytes and the target ABI is N32 or N64.
llvm-svn: 156642
|
|
|
|
| |
llvm-svn: 156491
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
filter_decl_iterator had a weird mismatch where both op* and op-> returned T*
making it difficult to generalize this filtering behavior into a reusable
library of any kind.
This change errs on the side of value, making op-> return T* and op* return
T&.
(reviewed by Richard Smith)
llvm-svn: 155808
|
|
|
|
|
|
|
| |
- Handle unions
- Handle C++ classes
llvm-svn: 154664
|
|
|
|
|
|
|
|
|
|
| |
(Lex to AST).
The member variable is always "LangOpts" and the member function is always "getLangOpts".
Reviewed by Chris Lattner
llvm-svn: 152536
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- We do this when it is easy to determine that the backend will pass them on
the stack properly by itself.
Currently LLVM codegen is really bad in some cases with byval, for example, on
the test case here (which is derived from Sema code, which likes to pass
SourceLocations around)::
struct s47 { unsigned a; };
void f47(int,int,int,int,int,int,struct s47);
void test47(int a, struct s47 b) { f47(a, a, a, a, a, a, b); }
we used to emit code like this::
...
movl %esi, -8(%rbp)
movl -8(%rbp), %ecx
movl %ecx, (%rsp)
...
to handle moving the struct onto the stack, which is just appalling.
Now we generate::
movl %esi, (%rsp)
which seems better, no?
llvm-svn: 152462
|
|
|
|
|
|
| |
the patch.
llvm-svn: 151122
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
optional argument passed through the variadic ellipsis)
potentially affects how we need to lower it. Propagate
this information down to the various getFunctionInfo(...)
overloads on CodeGenTypes. Furthermore, rename those
overloads to clarify their distinct purposes, and make
sure we're calling the right one in the right place.
This has a nice side-effect of making it easier to construct
a function type, since the 'variadic' bit is no longer
separable.
This shouldn't really change anything for our existing
platforms, with one minor exception --- we should now call
variadic ObjC methods with the ... in the "right place"
(see the test case), which I guess matters for anyone
running GNUStep on MIPS. Mostly it's just a substantial
clean-up.
llvm-svn: 150788
|
|
|
|
|
|
|
| |
Double fields of by-value class objects should be passed in floating point
registers.
llvm-svn: 150200
|
|
|
|
|
|
| |
class objects follow the same rules as those returning struct objects.
llvm-svn: 150196
|
|
|
|
|
|
| |
registers.
llvm-svn: 150035
|
|
|
|
|
|
| |
CodeGenModule.
llvm-svn: 149943
|
|
|
|
|
|
| |
MSVC-compatible way. Patch by Joe Groff.
llvm-svn: 148992
|
|
|
|
|
|
| |
type of pointers.
llvm-svn: 148753
|
|
|
|
| |
llvm-svn: 148744
|
|
|
|
| |
llvm-svn: 148577
|
|
|
|
|
|
| |
argument when Offset is initialized.
llvm-svn: 147986
|
|
|
|
|
|
| |
Remove function MipsABIInfo::GetFloatingPointTy.
llvm-svn: 147985
|
|
|
|
|
|
| |
floating point type.
llvm-svn: 147894
|
|
|
|
|
|
| |
passed in floating point registers.
llvm-svn: 147892
|
|
|
|
| |
llvm-svn: 147889
|
|
|
|
|
|
|
|
|
|
| |
for the arm-linux-androideabi triple in particular.
Also use this to do a better job of selecting soft FP settings.
Patch by Evgeniy Stepanov.
llvm-svn: 147872
|
|
|
|
|
|
| |
passing on i386 and does not use registers.
llvm-svn: 147856
|
|
|
|
| |
llvm-svn: 147791
|
|
|
|
|
|
|
|
| |
is inserted before the real argument. Padding is needed to ensure the backend
reads from or writes to the correct argument slots when the original alignment
of a byval structure is unavailable due to flattening.
llvm-svn: 147699
|
|
|
|
|
|
| |
is either N32 or N64.
llvm-svn: 147520
|
|
|
|
| |
llvm-svn: 146413
|
|
|
|
| |
llvm-svn: 145905
|