| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
| |
vectors that are the same size. Fix up testcases accordingly and add a new one
to make sure we still error if lax vector conversions are disabled.
Fixes rdar://8328190
llvm-svn: 112122
|
| |
|
|
|
|
|
| |
into the clients", because the C standard library sucks. Where's my
stable sort, huh?
llvm-svn: 112121
|
| |
|
|
|
|
|
|
| |
This works courtesy of the new SmallVector<..., 0> specialization that
doesn't require a complete type. Note that you'll need to pull at least
SmallVector.h from LLVM to compile successfully.
llvm-svn: 112114
|
| |
|
|
| |
llvm-svn: 112112
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
as a double in the x86-64 ABI. This allows us to generate much better
code for certain things, e.g.:
_Complex float f32(_Complex float A, _Complex float B) {
return A+B;
}
Used to compile into (look at the integer silliness!):
_f32: ## @f32
## BB#0: ## %entry
movd %xmm1, %rax
movd %eax, %xmm1
movd %xmm0, %rcx
movd %ecx, %xmm0
addss %xmm1, %xmm0
movd %xmm0, %edx
shrq $32, %rax
movd %eax, %xmm0
shrq $32, %rcx
movd %ecx, %xmm1
addss %xmm0, %xmm1
movd %xmm1, %eax
shlq $32, %rax
addq %rdx, %rax
movd %rax, %xmm0
ret
Now we get:
_f32: ## @f32
movdqa %xmm0, %xmm2
addss %xmm1, %xmm2
pshufd $16, %xmm2, %xmm2
pshufd $1, %xmm1, %xmm1
pshufd $1, %xmm0, %xmm0
addss %xmm1, %xmm0
pshufd $16, %xmm0, %xmm1
movdqa %xmm2, %xmm0
unpcklps %xmm1, %xmm0
ret
and compile stuff like:
extern float _Complex ccoshf( float _Complex ) ;
float _Complex ccosf ( float _Complex z ) {
float _Complex iz;
(__real__ iz) = -(__imag__ z);
(__imag__ iz) = (__real__ z);
return ccoshf(iz);
}
into:
_ccosf: ## @ccosf
## BB#0: ## %entry
pshufd $1, %xmm0, %xmm1
xorps LCPI4_0(%rip), %xmm1
unpcklps %xmm0, %xmm1
movaps %xmm1, %xmm0
jmp _ccoshf ## TAILCALL
instead of:
_ccosf: ## @ccosf
## BB#0: ## %entry
movd %xmm0, %rax
movq %rax, %rcx
shlq $32, %rcx
shrq $32, %rax
xorl $-2147483648, %eax ## imm = 0xFFFFFFFF80000000
addq %rcx, %rax
movd %rax, %xmm0
jmp _ccoshf ## TAILCALL
There is still "stuff to be done" here for the struct case,
but this resolves rdar://6379669 - [x86-64 ABI] Pass and return
_Complex float / double efficiently
llvm-svn: 112111
|
| |
|
|
|
|
| |
called for arrays with more than 1 dimension.
llvm-svn: 112107
|
| |
|
|
| |
llvm-svn: 112100
|
| |
|
|
|
|
|
|
|
|
| |
- Removed the assumption that __block vars are all non-constant
- Simplified some repetitive code in RunAnalysis
- Added block walking support
- Code/comments cleanup
- Separated out test for block pseudoconstants
llvm-svn: 112098
|
| |
|
|
|
|
|
| |
into the clients, e.g., the printing code-completion consumer and
c-index-test. Clients may want to re-sort the results anyway.
llvm-svn: 112095
|
| |
|
|
|
|
|
| |
Clients of Sema don't need to know (for example) the list of diagnostics we
support.
llvm-svn: 112093
|
| |
|
|
|
|
|
|
| |
code-completion results cached by ASTUnit, sort the resulting result
set. This makes testing far, far easier, so this commit also includes
tests for the previous few fixes.
llvm-svn: 112070
|
| |
|
|
| |
llvm-svn: 112067
|
| |
|
|
|
|
|
| |
token. The first token might be something that ends up triggering code
completion, which in turn requires a valid Scope. Test case forthcoming.
llvm-svn: 112066
|
| |
|
|
| |
llvm-svn: 112065
|
| |
|
|
|
|
|
| |
code completion. We were allowing the preamble to include the line
that we're code-completing on. Again, testcase is forthcoming.
llvm-svn: 112064
|
| |
|
|
|
|
|
| |
ASTUnit match those produced directly by code completion. Test case is
forthcoming.
llvm-svn: 112063
|
| |
|
|
|
|
| |
that ASTUnit knows not to try to provide completions there.
llvm-svn: 112057
|
| |
|
|
|
|
|
| |
expect "natural" language and should not provide any completions,
e.g., comments, string literals, #error.
llvm-svn: 112054
|
| |
|
|
|
|
| |
to the new constants.
llvm-svn: 112047
|
| |
|
|
|
|
| |
http://llvm.org/PR7923.
llvm-svn: 112045
|
| |
|
|
| |
llvm-svn: 112044
|
| |
|
|
| |
llvm-svn: 112043
|
| |
|
|
|
|
| |
functionality changed.
llvm-svn: 112040
|
| |
|
|
| |
llvm-svn: 112038
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
templates when only the declaration is in scope. This requires deferring the
instantiation to be lazy, and ensuring the definition is required for that
translation unit. We re-use the existing pending instantiation queue,
previously only used to track implicit instantiations which were required to be
lazy. Fixes PR7979.
A subsequent change will rename *PendingImplicitInstantiations to
*PendingInstatiations for clarity given its broader role.
llvm-svn: 112037
|
| |
|
|
| |
llvm-svn: 112032
|
| |
|
|
| |
llvm-svn: 112030
|
| |
|
|
| |
llvm-svn: 112028
|
| |
|
|
| |
llvm-svn: 112027
|
| |
|
|
| |
llvm-svn: 112026
|
| |
|
|
|
|
| |
as a truncation not a comparison to null.
llvm-svn: 112021
|
| |
|
|
|
|
|
|
| |
but not in C++, so don't emit aggregate loads of volatile references
in null context in C++. Happens to have been caught by an assertion.
We do not get the scalar case right. Volatiles are really broken.
llvm-svn: 112019
|
| |
|
|
| |
llvm-svn: 112018
|
| |
|
|
|
|
|
| |
(e.g., for message sends or method declaration/definition
completions), adjust methods that come from a base class.
llvm-svn: 112013
|
| |
|
|
| |
llvm-svn: 112006
|
| |
|
|
| |
llvm-svn: 112005
|
| |
|
|
|
|
|
| |
has its own getter and setter methods declared.
Fixed 8349319 (nonfragile-abi2).
llvm-svn: 112003
|
| |
|
|
| |
llvm-svn: 112002
|
| |
|
|
|
|
|
| |
performing code completion at the statement level (rather than in an
arbitrary expression).
llvm-svn: 112001
|
| |
|
|
| |
llvm-svn: 111999
|
| |
|
|
| |
llvm-svn: 111997
|
| |
|
|
|
|
|
|
| |
only form pointers-to-member if the expression has the appropriate
form. This avoids assertions later on on invalid code, but also
allows us to properly resolve mixed-staticity overloads.
llvm-svn: 111987
|
| |
|
|
|
|
| |
the chain. This ought to finish C++ chained PCH support.
llvm-svn: 111986
|
| |
|
|
|
|
| |
the chain.
llvm-svn: 111985
|
| |
|
|
|
|
|
| |
- I didn't implement the GCC "multiple include guard" detection parts, because
it doesn't seem useful or obvious.
llvm-svn: 111983
|
| |
|
|
|
|
|
| |
some bugs in setting allowsRegister on the ones there.
8348447.
llvm-svn: 111980
|
| |
|
|
|
|
| |
-iwithsysroot flag should do that. This fixes rdar://8345942
llvm-svn: 111979
|
| |
|
|
|
|
| |
compatible argument). Fixes PR 7981.
llvm-svn: 111978
|
| |
|
|
|
|
| |
register variable (c++03 7.1.1P3). radar 8108252.
llvm-svn: 111977
|
| |
|
|
|
|
| |
arguments.
llvm-svn: 111976
|