| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
|
|
|
| |
arithmetic. This is part of PR9256, it would be great if someone else
wired up -fno-strict-overflow in the driver to -fwrapv.
llvm-svn: 126718
|
| |
|
|
|
|
| |
debug info.
llvm-svn: 126691
|
| |
|
|
| |
llvm-svn: 126685
|
| |
|
|
|
|
|
|
|
|
| |
The prototype for objc_msgSend() is technically variadic -
`id objc_msgSend(id, SEL, ...)`.
But all method calls should use a prototype that matches the method,
not the prototype for objc_msgSend itself().
// rdar://9048030
llvm-svn: 126678
|
| |
|
|
|
|
| |
compound stmt containing the decl is skipped.
llvm-svn: 126639
|
| |
|
|
| |
llvm-svn: 126638
|
| |
|
|
|
|
|
|
|
|
| |
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: 126603
|
| |
|
|
|
|
|
| |
compound statements and break statements. This implements enough to
handle PR9322 and rdar://6970405.
llvm-svn: 126602
|
| |
|
|
| |
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
|
| |
|
|
|
|
| |
a bool + success into one tri-state integer, simplifying things.
llvm-svn: 126592
|
| |
|
|
|
|
| |
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
|
| |
|
|
|
|
|
| |
loading references as part of that. Use 'char' TBAA when accessing
(immediate!) fields of a may_alias struct; fixes PR9307.
llvm-svn: 126540
|
| |
|
|
|
|
|
|
| |
necessarily enclose the innermost normal cleanup depth, because
the top of the jump scope stack might be an EH cleanup or EH scope.
Fixes PR9303.
llvm-svn: 126472
|
| |
|
|
|
|
| |
in PR9301.
llvm-svn: 126422
|
| |
|
|
|
|
| |
the one CGObjC was calling. Fixes bug r9294.
llvm-svn: 126312
|
| |
|
|
|
|
|
|
|
|
| |
invocation function into the debug info. Rather than faking up a class,
which is tricky because of the custom layout we do, we just emit a struct
directly from the layout information we've already got.
Also, don't emit an unnecessarily parameter alloca for this "variable".
llvm-svn: 126255
|
| |
|
|
|
|
| |
-flimit-debug-info is enabled.
llvm-svn: 126246
|
| |
|
|
| |
llvm-svn: 126232
|
| |
|
|
|
|
|
| |
emitting the collection expression. Fixes some really, really broken
code.
llvm-svn: 126193
|
| |
|
|
| |
llvm-svn: 126189
|
| |
|
|
|
|
| |
mingw-w64's i128 tweak should be done with x86_64-mingw32.
llvm-svn: 126186
|
| |
|
|
|
|
| |
not, in fact, 0, even for very small classes. (GNU runtime)
llvm-svn: 126161
|
| |
|
|
|
|
| |
for ?: on record types.
llvm-svn: 126113
|
| |
|
|
|
|
| |
This fixes PR 8738, 9060 and 9132.
llvm-svn: 126069
|
| |
|
|
| |
llvm-svn: 126062
|
| |
|
|
| |
llvm-svn: 126060
|
| |
|
|
|
|
|
| |
attribute, we also care about those with the "constructor"
attribute. Fixes PR6521.
llvm-svn: 126055
|
| |
|
|
| |
llvm-svn: 126050
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
without defining them. This should be an error, but I'm paranoid about
"uses" that end up not actually requiring a definition. I'll revisit later.
Also, teach IR generation to not set internal linkage on variable
declarations, just for safety's sake. Doing so produces an invalid module
if the variable is not ultimately defined.
Also, fix several places in the test suite where we were using internal
functions without definitions.
llvm-svn: 126016
|
| |
|
|
| |
llvm-svn: 125990
|
| |
|
|
|
|
| |
turn off all builtin optimizations.
llvm-svn: 125979
|
| |
|
|
|
|
|
| |
target triple. This would be a decent place to add -fno-builtin
info for example.
llvm-svn: 125971
|
| |
|
|
|
|
| |
scalar types. // rdar://7761305
llvm-svn: 125946
|
| |
|
|
|
|
|
|
|
|
|
|
| |
_Block_object_* flags; it's just BLOCK_HAS_COPY_DISPOSE or not.
Also, we don't need to chase forwarding pointers prior to calling
_Block_object_dispose; _Block_object_dispose in fact already does
this.
rdar://problem/9006315
llvm-svn: 125823
|
| |
|
|
|
|
|
|
|
| |
This removes the final dependency edge from any lib outside of CodeGen
to core. As a result we can, and do, trim the dependency on core
from libclang, PrintFunctionNames, the unit tests and c-index-test.
While at it, review and trim other unneeded dependencies.
llvm-svn: 125820
|
| |
|
|
| |
llvm-svn: 125819
|
| |
|
|
|
|
|
|
|
| |
bugs from other clients that don't expect to see a LabelDecl in a DeclStmt,
but if so they should be easy to fix.
This implements most of PR3429 and rdar://8287027
llvm-svn: 125817
|
| |
|
|
|
|
| |
by Heikki Kultala!
llvm-svn: 125784
|
| |
|
|
| |
llvm-svn: 125761
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
class and to bind the shared value using OpaqueValueExpr. This fixes an
unnoticed problem with deserialization of these expressions where the
deserialized form would lose the vital pointer-equality trait; or rather,
it fixes it because this patch also does the right thing for deserializing
OVEs.
Change OVEs to not be a "temporary object" in the sense that copy elision is
permitted.
This new representation is not totally unawkward to work with, but I think
that's really part and parcel with the semantics we're modelling here. In
particular, it's much easier to fix things like the copy elision bug and to
make the CFG look right.
I've tried to update the analyzer to deal with this in at least some
obvious cases, and I think we get a much better CFG out, but the printing
of OpaqueValueExprs probably needs some work.
llvm-svn: 125744
|
| |
|
|
|
|
| |
No one uses *-mingw64. mingw-w64 is represented as {i686|x86_64}-w64-mingw32.
llvm-svn: 125742
|
| |
|
|
| |
llvm-svn: 125741
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
LabelDecl and LabelStmt. There is a 1-1 correspondence between the
two, but this simplifies a bunch of code by itself. This is because
labels are the only place where we previously had references to random
other statements, causing grief for AST serialization and other stuff.
This does cause one regression (attr(unused) doesn't silence unused
label warnings) which I'll address next.
This does fix some minor bugs:
1. "The only valid attribute " diagnostic was capitalized.
2. Various diagnostics printed as ''labelname'' instead of 'labelname'
3. This reduces duplication of label checking between functions and blocks.
Review appreciated, particularly for the cindex and template bits.
llvm-svn: 125733
|
| |
|
|
| |
llvm-svn: 125694
|