| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
| |
use byval so we're sure the backend does the right thing. Fixes va_arg with illegal vectors and an obscure ABI mismatch with __m64 vectors.
llvm-svn: 145652
|
|
|
|
|
|
| |
the arguments is an AVX vector.
llvm-svn: 145574
|
|
|
|
|
|
|
|
| |
when they are greater than 128 bits. This was incorrectly coercing things like long3 into a double2.
Add test case.
llvm-svn: 145312
|
|
|
|
| |
llvm-svn: 144972
|
|
|
|
|
|
| |
Use isEmptyRecord for arguments on x86-32; there are structs of size 0 which don't count as empty.
llvm-svn: 144971
|
|
|
|
|
|
| |
Fixes <rdar://problem/10463281>.
llvm-svn: 144966
|
|
|
|
|
|
| |
structures containing an SSE vector.
llvm-svn: 144963
|
|
|
|
|
|
| |
struct layout tests.
llvm-svn: 144961
|
|
|
|
|
|
| |
type for a function returning a struct containing only a pointer. Handle the edge case of a struct containing only a float or double plus some dead padding instead of asserting.
llvm-svn: 144960
|
|
|
|
|
|
| |
tests.
llvm-svn: 144944
|
|
|
|
| |
llvm-svn: 143666
|
|
|
|
|
|
| |
and destructors in the DefaultABIInfo.
llvm-svn: 143601
|
|
|
|
| |
llvm-svn: 143597
|
|
|
|
|
|
| |
fields in order to ease handling of such structures in backend.
llvm-svn: 143596
|
|
|
|
|
|
| |
is N32/64.
llvm-svn: 143589
|
|
|
|
| |
llvm-svn: 143530
|
|
|
|
| |
llvm-svn: 142879
|
|
|
|
|
|
| |
Patch by Pekka Jääskeläinen!
llvm-svn: 141865
|
|
|
|
|
|
|
|
|
|
|
| |
- Remodel Expr::EvaluateAsInt to behave like the other EvaluateAs* functions,
and add Expr::EvaluateKnownConstInt to capture the current fold-or-assert
behaviour.
- Factor out evaluation of bitfield bit widths.
- Fix a few places which would evaluate an expression twice: once to determine
whether it is a constant expression, then again to get the value.
llvm-svn: 141561
|
|
|
|
|
|
| |
obvious memory leak that was reported from LLDB devs. The comment indicates the leak is deliberate, but I have no idea why this needs to be so. Please comment/revert if you know otherwise.
llvm-svn: 141479
|
|
|
|
| |
llvm-svn: 141296
|
|
|
|
| |
llvm-svn: 141193
|
|
|
|
| |
llvm-svn: 140407
|
|
|
|
| |
llvm-svn: 140367
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
if the definition has a non-variadic prototype with compatible
parameters. Therefore, the default rule for such calls must be to
use a non-variadic convention. Achieve this by casting the callee to
the function type with which it is required to be compatible, unless
the target specifically opts out and insists that unprototyped calls
should use the variadic rules. The only case of that I'm aware of is
the x86-64 convention, which passes arguments the same way in both
cases but also sets a small amount of extra information; here we seek
to maintain compatibility with GCC, which does set this when calling
an unprototyped function.
Addresses PR10810 and PR10713.
llvm-svn: 140241
|
|
|
|
|
|
| |
UnwindException structure is 32 for mips64.
llvm-svn: 140165
|
|
|
|
| |
llvm-svn: 140161
|
|
|
|
|
|
|
|
| |
builtin types (When requested). This is another step toward making
ASTUnit build the ASTContext as needed when loading an AST file,
rather than doing so after the fact. No actual functionality change (yet).
llvm-svn: 138985
|
|
|
|
|
|
|
| |
apparent general rule. Just special-case it as appropriate.
PR10789.
llvm-svn: 138792
|
|
|
|
| |
llvm-svn: 137420
|
|
|
|
| |
llvm-svn: 137411
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
A homogeneous aggregate is an aggregate data structure where after flattening
any nesting there are 1 to 4 elements of the same base type that is either a
float, double, or Neon vector. All Neon vectors of the same size, either 64
or 128 bits, are treated as equivalent for this purpose. When using the
AAPCS-VFP ABI, check for homogeneous aggregates and pass them as arguments by
expanding them into a sequence of their base types. This requires extending
the existing support for expanded arguments to handle not only structs, but
also constant arrays and complex types.
llvm-svn: 136767
|
|
|
|
|
|
| |
Patch by Jim (Ningjie) Chen.
llvm-svn: 136734
|
|
|
|
|
|
|
|
|
|
|
| |
This reverts commit 67d097e1232b7d66f58989c16a45b8a11721f76e.
We found a miscompile with ARM byval, which is still being investigated.
In the meantime, this works around the problem by disabling ARM byval.
Conflicts:
lib/CodeGen/TargetInfo.cpp
llvm-svn: 136662
|
|
|
|
|
|
|
|
|
|
| |
without bailing out when va_arg is an aggregate expression. However,
alignment checking needs to be added in isSafeToEliminateVarargsCast in
InstCombineCalls.cpp in order to produce correct mips code (see link below).
http://lists.cs.uiuc.edu/pipermail/llvmdev/2011-July/042047.html
llvm-svn: 136647
|
|
|
|
| |
llvm-svn: 136630
|
|
|
|
|
|
|
|
| |
LLVM.h imports
them into the clang namespace.
llvm-svn: 135852
|
|
|
|
| |
llvm-svn: 135370
|
|
|
|
| |
llvm-svn: 135285
|
|
|
|
|
|
| |
failures.
llvm-svn: 135091
|
|
|
|
| |
llvm-svn: 135004
|
|
|
|
| |
llvm-svn: 134952
|
|
|
|
|
|
| |
passing.
llvm-svn: 134951
|
|
|
|
|
|
| |
which is: { <4 x float>, <4 x float> } should continue to go through memory.
llvm-svn: 134946
|
|
|
|
|
|
| |
add one more testcase.
llvm-svn: 134934
|
|
|
|
| |
llvm-svn: 134893
|
|
|
|
| |
llvm-svn: 134831
|
|
|
|
|
|
|
|
|
|
|
|
| |
should not imply -mno-sse.
Note that because we don't usually touch the MMX registers anyway, all -mno-mmx needs to do is tweak the x86-32 calling convention a little for vectors that look like MMX vectors, and prevent the definition of __MMX__.
clang doesn't actually stop the user from using MMX inline asm operands or MMX builtins in -mno-mmx mode; as a QOI issue, it would be nice to diagnose, but I doubt it really matters much.
<rdar://problem/9694837>
llvm-svn: 134770
|
|
|
|
| |
llvm-svn: 134765
|
|
|
|
| |
llvm-svn: 134754
|