| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
| |
llvm-svn: 95512
|
|
|
|
| |
llvm-svn: 95430
|
|
|
|
|
|
|
|
| |
need to deal with aggregates specially; this is consistent with the rest of IRgen.
Also, simplify EmitParmDecl and don't worry about using Decl::getNameAsString.
llvm-svn: 95393
|
|
|
|
|
|
| |
for the reference binding bug that is preventing self-hosting.
llvm-svn: 95223
|
|
|
|
|
|
| |
references.
llvm-svn: 94964
|
|
|
|
|
|
|
| |
now that the "InBytes" part of the name is implied by the return type, rename
it to getDeclAlign().
llvm-svn: 94681
|
|
|
|
|
|
| |
of LLVM types in character units.
llvm-svn: 94542
|
|
|
|
|
|
| |
C++ initializer.
llvm-svn: 94504
|
|
|
|
|
|
|
|
|
|
| |
"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: 92138
|
|
|
|
|
|
| |
avoid #including CharUnits.h in ASTContext.h.
llvm-svn: 91903
|
|
|
|
|
|
|
| |
new opaque value type, CharUnits. This will help us avoid accidentally mixing
quantities that are in bit and character units.
llvm-svn: 91689
|
|
|
|
|
|
|
| |
and getTypeSizeInChars() to reflect their basis in character type units, not
that of a possibly independent architecture-specific byte.
llvm-svn: 91688
|
|
|
|
| |
llvm-svn: 90940
|
|
|
|
| |
llvm-svn: 90856
|
|
|
|
| |
llvm-svn: 90854
|
|
|
|
|
|
| |
to a memset or a memcpy from a global when possible.
llvm-svn: 90658
|
|
|
|
| |
llvm-svn: 90652
|
|
|
|
| |
llvm-svn: 90461
|
|
|
|
|
|
| |
code, but to track this down was laborious.
llvm-svn: 90356
|
|
|
|
| |
llvm-svn: 90098
|
|
|
|
| |
llvm-svn: 89769
|
|
|
|
| |
llvm-svn: 89633
|
|
|
|
| |
llvm-svn: 89219
|
|
|
|
|
|
| |
This resolves the layering violation where CodeGen depended on Frontend.
llvm-svn: 86998
|
|
|
|
|
|
|
| |
ArrayType>()) does not instantiate. Update all callers that used this
unsafe feature to use the appropriate ASTContext::getAs*ArrayType method.
llvm-svn: 86596
|
|
|
|
|
|
| |
of array objects on block exit. Patch is by Anders Calrsson.
llvm-svn: 86032
|
|
|
|
|
|
| |
arrays and structs that are constant and their initializer is constant. It is on by default but can be disable with the flag -fno-merge-all-constants.
llvm-svn: 85991
|
|
|
|
|
|
|
| |
type to look at the volatile specifier. I found these all from just
hand auditing the code.
llvm-svn: 85967
|