| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
|
|
|
|
| |
of -fexceptions to disably C++ exceptions. The correct code was in the
ObjC branch, this just mirrors that logic on the C++ side of things.
Thanks to John Wiegley for pointing this out.
llvm-svn: 126640
|
| |
|
|
|
|
| |
compound stmt containing the decl is skipped.
llvm-svn: 126639
|
| |
|
|
| |
llvm-svn: 126638
|
| |
|
|
|
|
|
|
| |
The previous name was inaccurate as this token in fact appears at
the end of every preprocessing directive, not just macro definitions.
No functionality change, except for a diagnostic tweak.
llvm-svn: 126631
|
| |
|
|
|
|
|
|
|
|
| |
C++ exceptions, even when exceptions have been turned off using -fno-exceptions.
Make the -fobjc-exceptions flag do the same thing, but for Objective-C exceptions.
C++ and Objective-C exceptions can also be disabled using -fno-cxx-excptions and
-fno-objc-exceptions.
llvm-svn: 126630
|
| |
|
|
| |
llvm-svn: 126629
|
| |
|
|
|
|
|
|
| |
they are known to be exact multiples of the width of the char type. Add a
test case to CodeGen/union.c that would have caught the problem with the
previous attempt. No change in functionality intended.
llvm-svn: 126628
|
| |
|
|
| |
llvm-svn: 126627
|
| |
|
|
| |
llvm-svn: 126626
|
| |
|
|
| |
llvm-svn: 126625
|
| |
|
|
| |
llvm-svn: 126624
|
| |
|
|
| |
llvm-svn: 126623
|
| |
|
|
| |
llvm-svn: 126622
|
| |
|
|
| |
llvm-svn: 126621
|
| |
|
|
| |
llvm-svn: 126620
|
| |
|
|
| |
llvm-svn: 126619
|
| |
|
|
| |
llvm-svn: 126618
|
| |
|
|
| |
llvm-svn: 126617
|
| |
|
|
| |
llvm-svn: 126616
|
| |
|
|
| |
llvm-svn: 126615
|
| |
|
|
| |
llvm-svn: 126614
|
| |
|
|
| |
llvm-svn: 126613
|
| |
|
|
|
|
|
| |
-Now it gets enabled with '-analyzer-checker=DeadStores'.
-The driver passes the above flag by default.
llvm-svn: 126612
|
| |
|
|
| |
llvm-svn: 126611
|
| |
|
|
| |
llvm-svn: 126610
|
| |
|
|
|
|
| |
Turns -analyzer-check-buffer-overflows into -analyzer-checker=core.experimental.Overflow
llvm-svn: 126609
|
| |
|
|
| |
llvm-svn: 126608
|
| |
|
|
| |
llvm-svn: 126607
|
| |
|
|
| |
llvm-svn: 126606
|
| |
|
|
| |
llvm-svn: 126603
|
| |
|
|
|
|
|
| |
compound statements and break statements. This implements enough to
handle PR9322 and rdar://6970405.
llvm-svn: 126602
|
| |
|
|
|
|
| |
shouldUseExceptionTablesForObjCExceptions.
llvm-svn: 126601
|
| |
|
|
| |
llvm-svn: 126600
|
| |
|
|
| |
llvm-svn: 126598
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
emitting the
live case of a switch statement when switching on a constant. This is terribly
limited, but enough to handle the trivial example included. Before we would
emit:
define void @test1(i32 %i) nounwind {
entry:
%i.addr = alloca i32, align 4
store i32 %i, i32* %i.addr, align 4
switch i32 1, label %sw.epilog [
i32 1, label %sw.bb
]
sw.bb: ; preds = %entry
%tmp = load i32* %i.addr, align 4
%inc = add nsw i32 %tmp, 1
store i32 %inc, i32* %i.addr, align 4
br label %sw.epilog
sw.epilog: ; preds = %sw.bb, %entry
switch i32 0, label %sw.epilog3 [
i32 1, label %sw.bb1
]
sw.bb1: ; preds = %sw.epilog
%tmp2 = load i32* %i.addr, align 4
%add = add nsw i32 %tmp2, 2
store i32 %add, i32* %i.addr, align 4
br label %sw.epilog3
sw.epilog3: ; preds = %sw.bb1, %sw.epilog
ret void
}
now we emit:
define void @test1(i32 %i) nounwind {
entry:
%i.addr = alloca i32, align 4
store i32 %i, i32* %i.addr, align 4
%tmp = load i32* %i.addr, align 4
%inc = add nsw i32 %tmp, 1
store i32 %inc, i32* %i.addr, align 4
ret void
}
This improves -O0 compile time (less IR to generate and shove through the code
generator) and the clever linux kernel people found a way to fail to build if we
don't do this optimization. This step isn't enough to handle the kernel case
though.
llvm-svn: 126597
|
| |
|
|
| |
llvm-svn: 126596
|
| |
|
|
| |
llvm-svn: 126595
|
| |
|
|
|
|
|
|
|
|
|
|
| |
nested-name-specifier, e.g.,
T::template apply<U>::
represent the dependent template name specialization as a
DependentTemplateSpecializationType, rather than a
TemplateSpecializationType with a dependent TemplateName.
llvm-svn: 126593
|
| |
|
|
|
|
| |
a bool + success into one tri-state integer, simplifying things.
llvm-svn: 126592
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
specifiers such as
typename T::template apply<U>
Previously, we would turn T::template apply<U> into a
TemplateSpecializationType. Then, we'd reprocess that
TemplateSpecializationType and turn it into either a
TemplateSpecializationType wrapped in an ElaboratedType (when we could
resolve "apply" to a template declaration) or a
DependentTemplateSpecializationType. We now produce the same ASTs but
without generating the intermediate TemplateSpecializationType.
The end goal here is to avoid generating TemplateSpecializationTypes
with dependent template-names, ever. We're not there yet.
llvm-svn: 126589
|
| |
|
|
| |
llvm-svn: 126572
|
| |
|
|
|
|
|
|
|
|
|
| |
This successfully performs constructor lookup and verifies that a
delegating initializer is the only initializer present.
This does not perform loop detection in the initialization, but it also
doesn't codegen delegating constructors at all, so this won't cause
runtime infinite loops yet.
llvm-svn: 126552
|
| |
|
|
|
|
| |
to give us a non-null return slot.
llvm-svn: 126544
|
| |
|
|
|
|
| |
send before making the call. Fixes rdar://problem/7854674
llvm-svn: 126543
|
| |
|
|
|
|
| |
char-width agnostic.
llvm-svn: 126542
|
| |
|
|
| |
llvm-svn: 126541
|
| |
|
|
|
|
|
| |
loading references as part of that. Use 'char' TBAA when accessing
(immediate!) fields of a may_alias struct; fixes PR9307.
llvm-svn: 126540
|
| |
|
|
|
|
|
| |
don't let calls to such functions go down the normal type-checking path.
Test this out with __builtin_classify_type and __builtin_constant_p.
llvm-svn: 126539
|
| |
|
|
|
|
| |
// rdar://9056351
llvm-svn: 126536
|
| |
|
|
|
|
| |
block. // rdar://9055596
llvm-svn: 126535
|