| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
|
|
|
| |
Sema::CreateUnaryExprOrTypeTraitExpr() rather than recursing in some
cases. Fixes <rdar://problem/9659191>.
llvm-svn: 133663
|
| |
|
|
|
|
| |
implicit move tests.
llvm-svn: 133655
|
| |
|
|
|
|
| |
declared variable and ignore it. // rdar://9538608
llvm-svn: 133654
|
| |
|
|
|
|
| |
in Darwin's fragile abi mode. // rdar://8940528
llvm-svn: 133639
|
| |
|
|
|
|
|
| |
Removes dead code found in the process.
Adds a test to verify that ParenListExprs do not have NULL types.
llvm-svn: 133637
|
| |
|
|
| |
llvm-svn: 133633
|
| |
|
|
|
|
|
| |
issues between a bitwise operator and a comparison operator. Fixes
<rdar://problem/9637759>.
llvm-svn: 133630
|
| |
|
|
|
|
|
| |
via a typedef of a function, make sure to synthesize parameter
declarations. Fixes PR9654 / <rdar://problem/9257497>.
llvm-svn: 133628
|
| |
|
|
|
|
| |
rdar://8939557
llvm-svn: 133627
|
| |
|
|
|
|
| |
Patch by Jean-Daniel Dupas!
llvm-svn: 133624
|
| |
|
|
| |
llvm-svn: 133623
|
| |
|
|
|
|
|
| |
integral as it is not transferring ownership..
// rdar://9619861
llvm-svn: 133622
|
| |
|
|
|
|
|
|
| |
objects, so that we steal the retain count of a temporary __strong
pointer (zeroing out that temporary), eliding a retain/release
pair. Addresses <rdar://problem/9364932>.
llvm-svn: 133621
|
| |
|
|
|
|
|
|
|
| |
retain/release the temporary object appropriately. Previously, we
would only perform the retain/release operations when the reference
would extend the lifetime of the temporary, but this does the wrong
thing across calls.
llvm-svn: 133620
|
| |
|
|
|
|
| |
to, including cv-qualifications.
llvm-svn: 133618
|
| |
|
|
|
|
| |
that takes an ArrayRef.
llvm-svn: 133615
|
| |
|
|
|
|
|
|
|
|
| |
resources that, while their
lifetime is well-known and restricted, cleaning them up manually is easy to miss and cause a leak.
Use it to plug the leaking of TemplateIdAnnotation objects. rdar://9634138.
llvm-svn: 133610
|
| |
|
|
| |
llvm-svn: 133604
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
existence by always threading an edge from the catchall. Not doing
this was previously causing a crash in the very extreme case where
neither the normal cleanup nor the EH catchall was actually reachable:
we would delete the catchall entry block, which would cause us to
delete the entry block of the finally cleanup as well because the
cleanup logic would merge the blocks, which in turn triggered an assert
because later blocks in the finally would still be using values from the
entry. Laziness turns out to be the most elegant solution to the problem.
llvm-svn: 133601
|
| |
|
|
|
|
|
|
|
| |
FunctionTemplateDecl. I'm not quite sure what else it could be, though,
and would appreciate some insight.
This ought to fix the broken builds
llvm-svn: 133600
|
| |
|
|
|
|
| |
are also present.
llvm-svn: 133593
|
| |
|
|
|
|
|
| |
respect that when deciding whether -objc-exceptions implies the
-fexceptions -cc1 option.
llvm-svn: 133590
|
| |
|
|
|
|
|
| |
lookup. Previously, it was breaking self-host, but it's been a week and
a half and I can't reproduce, so I need to see if it's still failing.
llvm-svn: 133581
|
| |
|
|
|
|
| |
template definition and each instantiation.
llvm-svn: 133580
|
| |
|
|
| |
llvm-svn: 133577
|
| |
|
|
|
|
| |
statement is implicitly used by that statement.
llvm-svn: 133572
|
| |
|
|
| |
llvm-svn: 133571
|
| |
|
|
|
|
|
| |
operators. There is a consistent design of having the "silence the
warning" option first.
llvm-svn: 133570
|
| |
|
|
| |
llvm-svn: 133557
|
| |
|
|
|
|
| |
use the unresolved-name production correctly.
llvm-svn: 133554
|
| |
|
|
|
|
|
|
| |
use an "IgnoreSysRoot" argument. HeaderSearchOptions had been using the
opposite form with "IsSysRootRelative", which made for much confusion when
looking at true/false values in calls in AddPath. No functional change.
llvm-svn: 133550
|
| |
|
|
| |
llvm-svn: 133548
|
| |
|
|
|
|
|
|
|
| |
The -cxx-isystem path is not prefixed with the sysroot directory, so it's
not a good way for the driver to set the system default C++ search path.
Instead, add -stdlib as a cc1 option and teach the frontend how to find the
headers. The driver can then just pass -stdlib through to "cc1".
llvm-svn: 133547
|
| |
|
|
|
|
|
|
|
| |
that the linker has a place to put the temporary object file and can leave it
around (for the driver to clean up). This is important so that the object file
references in the debug info are preserved for possible use by dsymutil.
- <rdar://problem/8294279> executable has no debug symbols when compiled with LTO
llvm-svn: 133543
|
| |
|
|
| |
llvm-svn: 133542
|
| |
|
|
|
|
|
|
| |
cut down on one compilation
pass and increase migration speed.
llvm-svn: 133540
|
| |
|
|
| |
llvm-svn: 133539
|
| |
|
|
|
|
|
|
| |
__builtin___CFStringMakeConstantString and CF typed function calls
with explicit cf_returns_retained/cf_returns_not_retained attributes.
// rdar://9544832
llvm-svn: 133535
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Changes bit-field access policy to try to use (aligned) register sized accesses.
The idea here is that by using larger accesses we expose more coalescing
potential to the backend when we have situations like adjacent bit-fields in the
same structure (which is common), and that the backend should be smart enough to
narrow the accesses down when no coalescing is done or when it is shown not to
be profitable.
--
$ clang -m32 -O3 -S -o - t.c
_f0: ## @f0
pushl %ebp
movl %esp, %ebp
movl 8(%ebp), %eax
movb (%eax), %cl
andb $-128, %cl
orb $1, %cl
movb %cl, (%eax)
movb 1(%eax), %cl
andb $-128, %cl
orb $1, %cl
movb %cl, 1(%eax)
movb 2(%eax), %cl
andb $-128, %cl
orb $1, %cl
movb %cl, 2(%eax)
movb 3(%eax), %cl
andb $-128, %cl
orb $1, %cl
movb %cl, 3(%eax)
popl %ebp
ret
$ clang -m32 -O3 -S -o - t.c -Xclang -fuse-register-sized-bitfield-access
_f0: ## @f0
pushl %ebp
movl %esp, %ebp
movl 8(%ebp), %eax
movl $-2139062144, %ecx ## imm = 0xFFFFFFFF80808080
andl (%eax), %ecx
orl $16843009, %ecx ## imm = 0x1010101
movl %ecx, (%eax)
popl %ebp
ret
--
llvm-svn: 133532
|
| |
|
|
| |
llvm-svn: 133530
|
| |
|
|
| |
llvm-svn: 133529
|
| |
|
|
| |
llvm-svn: 133528
|
| |
|
|
|
|
| |
Expr value not getting changed by this call.
llvm-svn: 133527
|
| |
|
|
|
|
|
|
| |
of: a + b ? x : y. In our testing of this flag we've yet to hit a single
case where the existing precedence was correct, so we should suggest
grouping the ?: first.
llvm-svn: 133526
|
| |
|
|
|
|
| |
// rdar://9474349
llvm-svn: 133525
|
| |
|
|
|
|
|
| |
expression of '?:'. Add a test case for this pattern, and also test the
code that led to the crash in a "working" case as well.
llvm-svn: 133523
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
MaterializeTemporaryExpr captures a reference binding to a temporary
value, making explicit that the temporary value (a prvalue) needs to
be materialized into memory so that its address can be used. The
intended AST invariant here is that a reference will always bind to a
glvalue, and MaterializeTemporaryExpr will be used to convert prvalues
into glvalues for that binding to happen. For example, given
const int& r = 1.0;
The initializer of "r" will be a MaterializeTemporaryExpr whose
subexpression is an implicit conversion from the double literal "1.0"
to an integer value.
IR generation benefits most from this new node, since it was
previously guessing (badly) when to materialize temporaries for the
purposes of reference binding. There are likely more refactoring and
cleanups we could perform there, but the introduction of
MaterializeTemporaryExpr fixes PR9565, a case where IR generation
would effectively bind a const reference directly to a bitfield in a
struct. Addresses <rdar://problem/9552231>.
llvm-svn: 133521
|
| |
|
|
|
|
| |
use the deprecated forms of llvm::StringMap::GetOrCreateValue().
llvm-svn: 133515
|
| |
|
|
| |
llvm-svn: 133511
|
| |
|
|
| |
llvm-svn: 133501
|