| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
| |
This lets us remove Sema.h's dependency on Expr.h and Decl.h.
llvm-svn: 112156
|
|
|
|
|
|
| |
to the new constants.
llvm-svn: 112047
|
|
|
|
|
|
| |
block's helper function. Fixes radar 7860965.
llvm-svn: 110988
|
|
|
|
| |
llvm-svn: 110239
|
|
|
|
|
|
| |
for objective-c/c++ blocks (NeXt runtime).
llvm-svn: 110213
|
|
|
|
|
|
|
| |
block returns structs. Fies radar 8241648.
Executable test added to llvm test suite.
llvm-svn: 109620
|
|
|
|
| |
llvm-svn: 108481
|
|
|
|
|
|
|
|
| |
whether to use objc_msgSend_fpret; the choice is target dependent, not Obj-C ABI
dependent.
- <rdar://problem/8139758> arm objc _objc_msgSend_fpret bug
llvm-svn: 108379
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
self-host. Hopefully these results hold up on different platforms.
I tried to keep the GNU ObjC runtime happy, but it's hard for me to test.
Reimplement how clang generates IR for exceptions. Instead of creating new
invoke destinations which sequentially chain to the previous destination,
push a more semantic representation of *why* we need the cleanup/catch/filter
behavior, then collect that information into a single landing pad upon request.
Also reorganizes how normal cleanups (i.e. cleanups triggered by non-exceptional
control flow) are generated, since it's actually fairly closely tied in with
the former. Remove the need to track which cleanup scope a block is associated
with.
Document a lot of previously poorly-understood (by me, at least) behavior.
The new framework implements the Horrible Hack (tm), which requires every
landing pad to have a catch-all so that inlining will work. Clang no longer
requires the Horrible Hack just to make exceptions flow correctly within
a function, however. The HH is an unfortunate requirement of LLVM's EH IR.
llvm-svn: 107631
|
|
|
|
|
|
| |
CXXRecordDecl::getDestructor(); no functionality change.
llvm-svn: 107394
|
|
|
|
| |
llvm-svn: 107047
|
|
|
|
|
|
| |
name. Fixes radar 7860965.
llvm-svn: 107044
|
|
|
|
|
|
|
|
| |
have CGF create and make accessible standard int32,int64 and
intptr types. This fixes a ton of 80 column violations
introduced by LLVMContextification and cleans up stuff a lot.
llvm-svn: 106977
|
|
|
|
|
|
|
| |
when block literal is declared inside a ctor/dtor.
Fixes radr 8096995.
llvm-svn: 106700
|
|
|
|
|
|
| |
entry previously constructed via copy constructor.
llvm-svn: 105641
|
|
|
|
|
|
|
|
| |
an existing ir for load of a bock variable. This cannot be
done across basic blocks.
Fixes radar 8064140.
llvm-svn: 105549
|
|
|
|
|
|
| |
class object in blocks and carry it to IRGen.
llvm-svn: 105487
|
|
|
|
|
|
|
|
| |
setting up block's descriptor. This is on going work to
support c++ specific issues in setting up blocks
various APIs.
llvm-svn: 105469
|
|
|
|
|
|
|
| |
types. Executable test will be added to LLVM test suite.
(radar 8041962).
llvm-svn: 105347
|
|
|
|
| |
llvm-svn: 104613
|
|
|
|
|
|
|
|
|
| |
variables within blocks. We loosely follow GCC's mangling, but since
these are always internal symbols the names don't really matter. I
intend to revisit block mangling later, because GCC's mangling is
rather verbose. <rdar://problem/8015719>.
llvm-svn: 104610
|
|
|
|
| |
llvm-svn: 104314
|
|
|
|
|
|
|
|
|
|
| |
'self' variable arising from uses of the 'super' keyword. Also reorganize
some code so that BlockInfo (now CGBlockInfo) can be opaque outside of
CGBlocks.cpp.
Fixes rdar://problem/8010633.
llvm-svn: 104312
|
|
|
|
|
|
| |
(the codegen works here, too, but that's annoying to test without execution)
llvm-svn: 104202
|
|
|
|
| |
llvm-svn: 103484
|
|
|
|
|
|
| |
(radar 7495203).
llvm-svn: 103022
|
|
|
|
|
|
|
|
| |
access. Fixes an assertion.
Fixes rdar://problem/7927811. Too lazy to reduce a test case.
llvm-svn: 102776
|
|
|
|
|
|
|
|
| |
function declaration, since it may end up being changed (e.g.,
"extern" can become "static" if a prior declaration was static). Patch
by Enea Zaffanella and Paolo Bolzoni.
llvm-svn: 101826
|
|
|
|
| |
llvm-svn: 100007
|
|
|
|
|
|
|
|
| |
This introduces FunctionType::ExtInfo to hold the calling convention and the
noreturn attribute. The next patch will extend it to include the regparm
attribute and fix the bug.
llvm-svn: 99920
|
|
|
|
|
|
| |
alternate struct return ABI
llvm-svn: 97775
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
of the block descriptor field. This field is the ObjC style @encode
signature of the implementation function, and was to this point
conditionally provided in the block literal data structure. That
provisional support is removed.
Additionally, eliminate unused enumerations for the block literal flags field.
The first shipping ABI unconditionally set (1<<29) but this bit is unused
by the runtime, so the second ABI will unconditionally have (1<<30) set so
that the runtime can in fact distinguish whether the additional data is
present or not.
llvm-svn: 96989
|
|
|
|
| |
llvm-svn: 96635
|
|
|
|
|
|
|
|
| |
a block without it being used. This causes over release
of objects in certain runtime-senitive apps.
(fixes radar 7581175).
llvm-svn: 96501
|
|
|
|
| |
llvm-svn: 96486
|
|
|
|
| |
llvm-svn: 96484
|
|
|
|
|
|
| |
a __weak block. Fixes radar 7628591.
llvm-svn: 95822
|
|
|
|
|
|
|
|
|
|
|
|
| |
follows (as conservatively as possible) gcc's current behavior: attributes
written on return types that don't apply there are applied to the function
instead, etc. Only parse CC attributes as type attributes, not as decl attributes;
don't accepet noreturn as a decl attribute on ValueDecls, either (it still
needs to apply to other decls, like blocks). Consistently consume CC/noreturn
information throughout codegen; enforce this by removing their default values
in CodeGenTypes::getFunctionInfo().
llvm-svn: 95436
|
|
|
|
|
|
|
| |
now that the "InBytes" part of the name is implied by the return type, rename
it to getDeclAlign().
llvm-svn: 94681
|
|
|
|
| |
llvm-svn: 94571
|
|
|
|
|
|
| |
of LLVM types in character units.
llvm-svn: 94542
|
|
|
|
| |
llvm-svn: 94401
|
|
|
|
| |
llvm-svn: 94175
|
|
|
|
|
|
|
|
|
|
| |
"ASTContext::getTypeSize() / 8". Replace [u]int64_t variables with CharUnits
ones as appropriate.
Also rename RawType, fromRaw(), and getRaw() in CharUnits to QuantityType,
fromQuantity(), and getQuantity() for clarity.
llvm-svn: 93153
|
|
|
|
| |
llvm-svn: 92145
|
|
|
|
| |
llvm-svn: 92138
|
|
|
|
|
|
| |
Template instantiation can re-use DeclRefExprs.
llvm-svn: 90848
|
|
|
|
| |
llvm-svn: 90657
|
|
|
|
| |
llvm-svn: 90098
|
|
|
|
|
|
| |
DeclRefExprs
llvm-svn: 89649
|