| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
| |
visibility of their function.
llvm-svn: 118065
|
|
|
|
|
|
| |
ambiguous context.
llvm-svn: 116567
|
|
|
|
|
|
| |
deal with the consequences. Fixes rdar://problem/8224178.
llvm-svn: 115816
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
slot. The easiest way to do that was to bundle up the information
we care about for aggregate slots into a new structure which demands
that its creators at least consider the question.
I could probably be convinced that the ObjC 'needs GC' bit should
be rolled into this structure.
Implement generalized copy elision. The main obstacle here is that
IR-generation must be much more careful about making sure that exactly
llvm-svn: 113962
|
|
|
|
|
|
| |
Itanium guards and use a slightly different compiled-in API.
llvm-svn: 113330
|
|
|
|
|
|
|
|
| |
block-literal initializer expression causes IRgen to crash.
This patch fixes by saving it in StaticLocalDecl map
already used for such purposes. (radar 8390455).
llvm-svn: 113307
|
|
|
|
|
|
|
| |
value is used. This matches with non-block variable
use of bool type. (Fixes radar 8390062).
llvm-svn: 113027
|
|
|
|
|
|
|
| |
initializing; it at best matches the element type of the variable
it's initializing. Fixes PR8073.
llvm-svn: 112992
|
|
|
|
|
|
| |
projects.
llvm-svn: 112922
|
|
|
|
|
|
| |
a 'bool' byref variable in memory. Fixes radar 8382559.
llvm-svn: 112835
|
|
|
|
|
|
| |
This lets us remove Sema.h's dependency on Expr.h and Decl.h.
llvm-svn: 112156
|
|
|
|
|
|
|
|
| |
update callers as best I can.
- This is a work in progress, our alignment handling is very horrible / sketchy -- I am just aiming for monotonic improvement.
- Serious review appreciated.
llvm-svn: 111707
|
|
|
|
| |
llvm-svn: 111705
|
|
|
|
|
|
| |
initializations now.
llvm-svn: 110063
|
|
|
|
|
|
| |
failures. There's a radar tracking this.
llvm-svn: 109170
|
|
|
|
|
|
| |
commits.
llvm-svn: 109000
|
|
|
|
|
|
|
| |
the block-release unwind cleanup: we're never going to test it if we don't turn
it on.
llvm-svn: 108992
|
|
|
|
|
|
|
| |
the order they appeared in the translation unit. If they get emitted, put them
in their proper order. Fixes rdar://problem/7458115
llvm-svn: 108477
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
mostly in avoiding unnecessary work at compile time but also in producing more
sensible block orderings.
Move the destructor cleanups for local variables over to use lazy cleanups.
Eventually all cleanups will do this; for now we have some awkward code
duplication.
Tell IR generation just to never produce landing pads in -fno-exceptions.
This is a much more comprehensive solution to a problem which previously was
half-solved by checks in most cleanup-generation spots.
llvm-svn: 108270
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
| |
llvm-svn: 106949
|
|
|
|
| |
llvm-svn: 106549
|
|
|
|
|
|
| |
dependency edge was reversed such that CodeGen depends on Frontend.
llvm-svn: 106065
|
|
|
|
| |
llvm-svn: 105525
|
|
|
|
|
|
|
|
| |
The macros required for DeclNodes use have changed to match the use of
StmtNodes. The FooFirst enumerator constants have been named firstFoo
to match usage elsewhere.
llvm-svn: 105165
|
|
|
|
| |
llvm-svn: 104916
|
|
|
|
|
|
| |
variable in a local function. Fixes pr7101.
llvm-svn: 104743
|
|
|
|
|
|
|
|
|
|
|
|
| |
variables should have that linkage. Otherwise, its static local
variables should have internal linkage. To avoid computing this excessively,
set a function's linkage before we emit code for it.
Previously we were assigning weak linkage to the static variables of
static inline functions in C++, with predictably terrible results. This
fixes that and also gives better linkage than 'weak' when merging is required.
llvm-svn: 104581
|
|
|
|
|
|
|
| |
function does not return. Thanks to Eli for pointing out this corner
case.
llvm-svn: 103941
|
|
|
|
|
|
|
| |
destroy the variable along the exceptional edge; it's only during
normal execution that we avoid destroying this variable.
llvm-svn: 103872
|
|
|
|
|
|
|
|
|
| |
return statements. We perform NRVO only when all of the return
statements in the function return the same variable. Fixes some link
failures in Boost.Interprocess (which is relying on NRVO), and
probably improves performance for some C++ applications.
llvm-svn: 103867
|
|
|
|
|
|
|
|
| |
they're unreachable. This matters because (if they're POD, or if this is C)
the scope containing the variable might be reachable even if the variable
isn't. Fixes PR7044.
llvm-svn: 103052
|
|
|
|
|
|
|
| |
variabe. Blocks and their construction/destruction is
wip though.
llvm-svn: 102985
|
|
|
|
|
|
| |
variable. Surprisingly, this does seem to be the right way to solve this.
llvm-svn: 102961
|
|
|
|
| |
llvm-svn: 102882
|
|
|
|
| |
llvm-svn: 102160
|
|
|
|
|
|
| |
(related to PR6769).
llvm-svn: 101794
|
|
|
|
|
|
|
| |
as they are accessible in static methods in a class
local to the same function. Fixes PR6769.
llvm-svn: 101756
|
|
|
|
|
|
| |
field to memcpy, memmove, and memset.
llvm-svn: 100305
|
|
|
|
| |
llvm-svn: 100200
|
|
|
|
|
|
| |
field to memcpy, memmove, and memset.
llvm-svn: 100193
|
|
|
|
| |
llvm-svn: 99949
|
|
|
|
|
|
| |
memmove, and memset
llvm-svn: 99930
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
shadowing it in the GlobalDeclMap. Eliminates the string-uniquing
requirement for mangled names, which should help C++ codegen times a little.
Forces us to do string lookups instead of pointer lookups, which might hurt
codegen times a little across the board. We'll see how it plays out.
Removing the string-uniquing requirement implicitly fixes any bugs like
PR6635 which arose from the fact that we had multiple uniquing tables for
different kinds of identifiers.
llvm-svn: 99012
|
|
|
|
|
|
|
|
|
|
|
| |
when initialized variable is a byref block variable and is referenced recursively
in the initializer (you guessed it, it is block implementation of
fibonacci number). Fix, on the other hand is trvial, by generating the
API for byref variable before API for its initializer. We will have this
test added to our internal test suite as a clang-style test is not possible
due to very convoluted IR sequence. Fixes radar 7745514.
llvm-svn: 98393
|
|
|
|
| |
llvm-svn: 98204
|
|
|
|
|
|
|
|
|
|
| |
particular type, and flood fill. - CreateMemTemp sets the alignment on the alloca correctly, which fixes a great many places in IRgen where we were doing the wrong thing.
- This fixes many many more places than the test case, but my feeling is we need to audit alignment systematically so I'm not inclined to try hard to test the individual fixes in this patch. If this bothers you, patches welcome!
PR6240.
llvm-svn: 95648
|
|
|
|
|
|
| |
element type always matched the converted LLVM type for ExprType.
llvm-svn: 95596
|