aboutsummaryrefslogtreecommitdiff
path: root/lib/CodeGen
AgeCommit message (Collapse)Author
2011-09-18PR10304: Do not call destructors for data members from union destructors. ↵Richard Smith
Prior to C++11, this has no effect since any such destructors must be trivial, and in C++11 such destructors must not be called. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139997 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-15Refactor the load of the exception pointer and the exception selector from theirBill Wendling
storage slot into helper functions. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139826 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-15Rewrite this loop to use partial destruction; I'm not sure it'sJohn McCall
possible for that to matter right now, but eventually I think we'll need to unify this better, and then it might. Also, use a more efficient looping structure. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139788 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-15Sorry, that assertion actually already exists.John McCall
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139770 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-15We don't generate null initializer expressions anymore, andJohn McCall
we don't need to. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139769 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-14Emit debug info for c++0x nullptr.Devang Patel
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139752 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-14Formatting.Eric Christopher
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139681 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-14Fix comment.Eli Friedman
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139678 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-13Fix typo.Eric Christopher
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139668 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-13Correctly generate IR for casted "builtin" functions, whereJohn McCall
the builtin is really just a predefined declaration. These are totally valid to cast. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139657 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-13Re-commit r139643.Eli Friedman
Make clang use Acquire loads and Release stores where necessary. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139650 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-13Revert r139643 while I look into it; it's breaking selfhost.Eli Friedman
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139648 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-13Make clang use Acquire loads and Release stores where necessary.Eli Friedman
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139643 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-13Turn off the generation of unaligned atomic load/store; I'm going to ↵Eli Friedman
explicitly error out on such cases in the backend, at least for the moment. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139640 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-13Refactoring, mostly to give ObjCPropertyDecls stronger invariants forJohn McCall
their semantic attributes and then to take advantage of that. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139615 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-13Switch LangOptions over to a .def file that describes header of theDouglas Gregor
language options. Use that .def file to declare the LangOptions class and initialize all of its members, eliminating a source of annoying initialization bugs. AST serialization changes are next up. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139605 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-13Don't use native atomics on ivars whose size is not a power of two,John McCall
even on architectures that support unaligned access (which is the only way this is otherwise legal, given that ivars apparently do not honor alignment attributes). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139590 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-13Handle reference properties correctly in the trivial-getter check.John McCall
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139585 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-13Always emit bitfield properties using expression behavior, even if they'reJohn McCall
atomic. This is probably something we should warn about. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139584 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-13Unify the decision of how to emit property getters and setters into aJohn McCall
single code path. Use atomic loads and stores where necessary. Load and store anything of the appropriate size and alignment with primitive operations instead of going through the call. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139580 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-12Privatize the setter/getter call generation methods, plus some minorJohn McCall
modernization. No functionality change. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139555 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-12By popular demand, enumerate all builtin types!Devang Patel
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139521 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-12Add an assert so that new builtins do not sneak without proper debug info.Devang Patel
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139514 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-12Fix debug info encodings for char16_t and char32_t.Devang Patel
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139502 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-10Modernize and comment; no functionality change.John McCall
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139470 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-10Simplify the generation of Objective-C setters, at least a little.John McCall
Use a more portable heuristic for deciding when to emit a single atomic store; it's possible that I've lost information here, but I'm not sure how much of the logic before was intentionally arch-specific and how much was just not quite consistent. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139468 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-10Rename the ARC cast kinds to start with "ARC".John McCall
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139466 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-10When converting a block pointer to an Objective-C pointer type, extendJohn McCall
the lifetime of the block by copying it to the heap, or else we'll get a dangling reference because the code working with the non-block-typed object will not know it needs to copy. There is some danger here, e.g. with assigning a block literal to an unsafe variable, but, well, it's an unsafe variable. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139451 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-10Emit debug info for wchar_t.Devang Patel
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139443 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-10Clean up our handling of Objective-C definitions in AST files. RatherDouglas Gregor
than having CodeGen check whether a declaration comes from an AST file (which it shouldn't know or care about), make sure that the AST writer and reader pass along "interesting" declarations that CodeGen needs to know about. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139441 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-09Introduce a new predicate Decl::isFromASTFile() to determine whether aDouglas Gregor
declaration was deserialized from an AST file. Use this instead of Decl::getPCHLevel() wherever possible. This is a simple step toward killing off Decl::getPCHLevel(). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139427 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-09Remove trailing } in comment.Julien Lerouge
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139424 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-09Bring llvm.annotation* intrinsics support back to where it was in llvm-gcc: canJulien Lerouge
annotate global, local variables, struct fields, or arbitrary statements (using the __builtin_annotation), rdar://8037476. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139423 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-09Carry the debug information from single exit unified return blockEric Christopher
along with the new insert point. Fixes PR10829 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139416 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-09Treat the weak export of block runtime symbols as a deployment-targetJohn McCall
feature akin to the ARC runtime checks. Removes a terrible hack where IR gen needed to find the declarations of those symbols in the translation unit. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139404 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-09Do a lookup for the blocks runtime globals to see if they were declared,Argyrios Kyrtzidis
instead of codegen waiting to consume such a declaration, which won't happen if that decls are coming from a PCH. Fixes rdar://10028656. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139359 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-09Give conversions of block pointers to ObjC pointers a different cast kindJohn McCall
than conversions of C pointers to ObjC pointers. In order to ensure that we've caught every case, add asserts to CastExpr that strictly determine which cast kind is used for which kind of bit cast. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139352 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-08Formatting.Eric Christopher
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139296 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-07Switch clang over to using fence/atomicrmw/cmpxchg instead of the intrinsics ↵Eli Friedman
(which will go away). LLVM CodeGen does almost exactly the same thing with these and the old intrinsics, so I'm reasonably confident this will not break anything. There are still a few issues which need to be resolved with code generation for atomic load and store, so I'm not converting the places which need those for now. I'm not entirely sure what to do about __builtin_llvm_memory_barrier: the fence instruction doesn't expose all the possibilities which can be expressed by __builtin_llvm_memory_barrier. I would appreciate hearing from anyone who is using this intrinsic. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139216 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-06When extracting the callee declaration from a call expression, be sureDouglas Gregor
to look through SubstNonTypeTemplateParmExprs. Then, update the IR generation of CallExprs to actually use CallExpr::getCalleeDecl() rather than attempting to mimick its behavior (badly). Fixes <rdar://problem/10063539>. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139185 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-06Rearrange code so that we pass the right pointer to delete[] when an ↵Eli Friedman
exception is thrown constructing the array elements in an array new expression. Fixes PR10870. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139158 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-06When performing a derived-to-base cast on the right-hand side of theDouglas Gregor
synthesized move assignment within an implicitly-defined move assignment operator, be sure to treat the derived-to-base cast as an xvalue (rather than an lvalue). Otherwise, we'll end up getting the wrong constructor. Optimize a direct call to a trivial move assignment operator to an aggregate copy, as we do for trivial copy assignment operators, and update the the assertion in CodeGenFunction::EmitAggregateCopy() to cope with this optimization. Fixes PR10860. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139143 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-02blocks: Support capturing complex variable in block.Fariborz Jahanian
// rdar://10033896 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139041 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-02revert patch in r139020Fariborz Jahanian
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139029 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-02blocks: Support capturing complex variable in block.Fariborz Jahanian
// rdar://10033896 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139020 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-02Extend the ASTContext constructor to delay the initialization ofDouglas Gregor
builtin types (When requested). This is another step toward making ASTUnit build the ASTContext as needed when loading an AST file, rather than doing so after the fact. No actual functionality change (yet). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138985 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-01Don't try to emit unsupported templated friend declarations. They're unsupportedNick Lewycky
and may very well be dependent-types, triggering an assertion in debug info codegen. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138970 91177308-0d34-0410-b5e6-96231b3b80d8
2011-08-30Declare and define implicit move constructor and assignment operator.Sebastian Redl
This makes the code duplication of implicit special member handling even worse, but the cleanup will have to come later. For now, this works. Follow-up with tests for explicit defaulting and enabling the __has_feature flag to come. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138821 91177308-0d34-0410-b5e6-96231b3b80d8
2011-08-30The size of struct UnwindException varies by platform with noJohn McCall
apparent general rule. Just special-case it as appropriate. PR10789. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138792 91177308-0d34-0410-b5e6-96231b3b80d8
2011-08-30Be sure to emit lvalue-to-rvalue casts for loads from x-values.John McCall
Doing this happens to disrupt the pattern that ARC was looking for for move optimizations, so we need to fix that simultaneously. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138789 91177308-0d34-0410-b5e6-96231b3b80d8