aboutsummaryrefslogtreecommitdiff
path: root/lib/CodeGen
AgeCommit message (Collapse)Author
2012-06-15It turns out that implementing the rethrow-on-fallthroughJohn McCall
semantics of a ctor/dtor function-try-block catch handler by pushing a normal cleanup is not just overkill but actually actively wrong when the handler contains an explicit return (which is only legal in a dtor). Just emit the rethrow as ordinary code at the fallthrough point. Fixes PR13102. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158488 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-13More doxygen/documentation cleanups.James Dennett
This reduces the number of warnings generated by Doxygen by about 100 (roughly 10%). Issues addressed: (1) Primarily, backslash-escaped "@foo" and "#bah" in Doxygen comments when they're not supposed to be Doxygen commands or links, and similarly for "<baz>" when it's not intended as as HTML tag; (2) Changed some \t commands (which don't exist) to \c ("to refer to a word of code", as the Doxygen manual says); (3) \precondition becomes \pre; (4) When touching comments, deleted a couple of spurious spaces in them; (5) Changed some \n and \r to \\n and \\r; (6) Fixed one tiny typo: #pragms -> #pragma. This patch touches documentation/comments only. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158422 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-12Remove unused variable.Bill Wendling
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158353 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-11Make CodeGenFunction::EmitMSAsmStmt throw a fatal error as MS-style inlineChad Rosier
assembly is completely untested and unsupported. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158329 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-11Etch out the code path for MS-style inline assembly.Chad Rosier
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158325 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-11Documentation cleanup, fixing Doxygen markup. Mostly this avoids common termsJames Dennett
such as "protocol" and "expression" being implicitly turned into links to mistakenly-generated Doxygen pages: - Escaping @ symbols when Doxygen would otherwise incorrectly interpret them; - Escaping # symbols when they're not intended as explicit Doxygen link requests, such as when discussing preprocessor directives; - In one odd case, unescaping @ in @__experimental_modules_import, because Doxygen wrote '\@' to the output in that case, causing the example in the description of ImportDecl to be wrong; and - Fixing a typo: @breif -> @brief. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158299 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-10PR13064: Store whether an in-class initializer uses direct or copyRichard Smith
initialization, and use that information to produce the right kind of initialization during template instantiation. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158288 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-08[C++11 Compat] Fix breaking change in C++11 pair copyctor.Michael J. Spencer
While this code is valid C++98, it is not valid C++11. The problem can be reduced to: class MDNode; class DIType { operator MDNode*() const {return 0;} }; class WeakVH { WeakVH(MDNode*) {} }; int main() { DIType di; std::pair<void*, WeakVH> p(std::make_pair((void*)0, di))); } This was not detected by any of the bots we have because they either compile C++98 with libstdc++ (which allows it), or C++11 with libc++ (which incorrectly allows it). I ran into the problem when compiling with VS 2012 RC. Thanks to Richard for explaining the issue. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158245 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-07User better API for vla in compund literals.Fariborz Jahanian
// rdar://11485774 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158157 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-07When emitting compund literal of vla pointer elements, make Fariborz Jahanian
sure to emit vla size to prevent an irgen crash. // rdar://11485774 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158153 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-07Plug a long standing memory leak in TemplateArgument.Benjamin Kramer
The integral APSInt value is now stored in a decomposed form and the backing store for large values is allocated via the ASTContext. This way its not leaked as TemplateArguments are never destructed when they are allocated in the ASTContext. Since the integral data is immutable it is now shared between instances, making copying TemplateArguments a trivial operation. Currently getting the integral data out of a TemplateArgument requires creating a new APSInt object. This is cheap when the value is small but can be expensive if it's not. If this turns out to be an issue a more efficient accessor could be added. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158150 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-06reverse r158117.Fariborz Jahanian
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158119 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-06When doing arithmatic on vla pointer, make sureFariborz Jahanian
to emit vla size to prevent an irgen crash. // rdar://11485774 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158117 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-06Revert Decl's iterators back to pointer value_type rather than reference ↵David Blaikie
value_type In addition, I've made the pointer and reference typedef 'void' rather than T* just so they can't get misused. I would've omitted them entirely but std::distance likes them to be there even if it doesn't use them. This rolls back r155808 and r155869. Review by Doug Gregor incorporating feedback from Chandler Carruth. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158104 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-06Remove unused private member variables found by clang's new ↵Benjamin Kramer
-Wunused-private-field. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158086 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-05Fix a bug with va_arg and vectors on Darwin x86-32. <rdar://problem/11592208>.Eli Friedman
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158017 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-05Reapply "Only emit debug information for methods that are user defined, there's"Eric Christopher
As the failing testcase has been fixed. This reverts commit 0637f407e6ee7fdccde17fbf9a5fcc4853187b3e. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158009 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-05Revert "Only emit debug information for methods that are user defined, there's"John McCall
This reverts r157970, which was not passing on clang-x86_64-darwin10-nobootstrap-RA git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@157983 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-05Only emit debug information for methods that are user defined, there'sEric Christopher
not much reason to emit for constructors and destructors that aren't user defined. rdar://11593099 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@157970 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-01Support C++11 enum forward declarations.Eric Christopher
Part of rdar://11570854 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@157787 91177308-0d34-0410-b5e6-96231b3b80d8
2012-05-29objective-c: fix a sema and IRGen crash when propertyFariborz Jahanian
getter result type is safe but does not match with property type resulting in spurious warning followed by crash in IRGen. // rdar://11515196 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@157641 91177308-0d34-0410-b5e6-96231b3b80d8
2012-05-29OpenCL: Fix vector conditional operator CodeGen for the case wherePeter Collingbourne
the operands are vectors of doubles. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@157596 91177308-0d34-0410-b5e6-96231b3b80d8
2012-05-28adjust to mainline llvm API change.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@157557 91177308-0d34-0410-b5e6-96231b3b80d8
2012-05-25fix codegen support for alloc_size attribute for static C++ methodsNuno Lopes
add test case for C++ codegen git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@157500 91177308-0d34-0410-b5e6-96231b3b80d8
2012-05-25add CodeGen support for the alloc_size attributeNuno Lopes
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@157483 91177308-0d34-0410-b5e6-96231b3b80d8
2012-05-24Replace PTX back-end with NVPTX back-end in all places where Clang caresJustin Holewinski
NV_CONTRIB git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@157403 91177308-0d34-0410-b5e6-96231b3b80d8
2012-05-23If the first argument of __builtin_object_size can be folded to a constantRichard Smith
pointer, but such folding encounters side-effects, ignore the side-effects rather than performing them at runtime: CodeGen generates wrong code for __builtin_object_size in that case. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@157310 91177308-0d34-0410-b5e6-96231b3b80d8
2012-05-23Emit C++11 enum class information if it exists.Eric Christopher
Part of rdar://11496790 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@157304 91177308-0d34-0410-b5e6-96231b3b80d8
2012-05-22wire -fbounds-checking to the new LLVM bounds checking passNuno Lopes
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@157262 91177308-0d34-0410-b5e6-96231b3b80d8
2012-05-22revert the usage of the objectsize intrinsic with 3 parameters (to match ↵Nuno Lopes
LLVM r157255) git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@157256 91177308-0d34-0410-b5e6-96231b3b80d8
2012-05-21Revert r115805. An array type is required to have a range type,Eric Christopher
however, the range can be unknown for the upper bound. Testcase to follow. Part of rdar://11457152 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@157212 91177308-0d34-0410-b5e6-96231b3b80d8
2012-05-20Teach Clang about the NVPTX backend.Peter Collingbourne
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@157173 91177308-0d34-0410-b5e6-96231b3b80d8
2012-05-20CUDA: add CodeGen support for global variable address spaces.Peter Collingbourne
Because in CUDA types do not have associated address spaces, globals are declared in their "native" address space, and accessed by bitcasting the pointer to address space 0. This relies on address space 0 being a unified address space. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@157167 91177308-0d34-0410-b5e6-96231b3b80d8
2012-05-20Zap a bogus assert for delegating constructors. PR12890, part 2.Eli Friedman
I'm pretty sure we are in fact doing the right thing here, but someone who knows the standard better should double-check that we are in fact supposed to zero out the member in the given testcase. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@157138 91177308-0d34-0410-b5e6-96231b3b80d8
2012-05-19Update API usage for llvm DIBuilder changes for rvalue referenceEric Christopher
types and ensure we are actually creating the type. rdar://11479676 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@157095 91177308-0d34-0410-b5e6-96231b3b80d8
2012-05-16Remove unnecessary temporary.Eric Christopher
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156953 91177308-0d34-0410-b5e6-96231b3b80d8
2012-05-16Fix code generation of variables reference expressions when mixingDouglas Gregor
blocks and lambdas, based heavily on a patch from Meador Inge. Fixes PR12746 / <rdar://problem/11465120>. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156925 91177308-0d34-0410-b5e6-96231b3b80d8
2012-05-14Implement IRGen for C++11's "T{1, 2, 3}", where T is an aggregate and theRichard Smith
expression is treated as an lvalue. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156781 91177308-0d34-0410-b5e6-96231b3b80d8
2012-05-12Add support for __attribute__((hot)) and __attribute__((cold)).Benjamin Kramer
Currently cold functions are marked with the "optsize" attribute in CodeGen so they are always optimized for size. The hot attribute is just ignored, LLVM doesn't have a way to express hotness at the moment. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156723 91177308-0d34-0410-b5e6-96231b3b80d8
2012-05-11Coerce byval aggregate arguments to integers whose size matches the integerAkira Hatanaka
register size of the target architecture. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156650 91177308-0d34-0410-b5e6-96231b3b80d8
2012-05-11Fix handling of vector return types.Akira Hatanaka
A vector should be returned via the hidden pointer argument except if its size is equal to or smaller than 16-bytes and the target ABI is N32 or N64. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156642 91177308-0d34-0410-b5e6-96231b3b80d8
2012-05-11Hexagon V5 intrinsics support in clang.Sirish Pande
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156630 91177308-0d34-0410-b5e6-96231b3b80d8
2012-05-09Implement PPC64TargetCodeGenInfo.Roman Divacky
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156491 91177308-0d34-0410-b5e6-96231b3b80d8
2012-05-09update calls to objectsize intrinsic to match LLVM r156473Nuno Lopes
add a test for -fbounds-checking code generation git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156474 91177308-0d34-0410-b5e6-96231b3b80d8
2012-05-08add -fbounds-checking option.Nuno Lopes
When enabled, clang generates bounds checks for array and pointers dereferences. Work to follow in LLVM's backend. OK'ed by Chad; thanks for the review. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156431 91177308-0d34-0410-b5e6-96231b3b80d8
2012-05-08The address of a vla is actually complex and requires a dereference.Eric Christopher
Part of rdar://11352000 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156407 91177308-0d34-0410-b5e6-96231b3b80d8
2012-05-08Whitespace.Eric Christopher
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156406 91177308-0d34-0410-b5e6-96231b3b80d8
2012-05-07remove code to add bound checks for simple array accesses, since those are ↵Nuno Lopes
already covered by the check with the objectsize builtin remove the comparison of objectsize with -1. since it's an unsigned comparison, it will always succeed if objectsize returns -1, which is enough to have the check removed git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156311 91177308-0d34-0410-b5e6-96231b3b80d8
2012-05-07Convert AVX non-temporal store builtins to LLVM-native IR. This was ↵Craig Topper
previously done for SSE builtins. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156296 91177308-0d34-0410-b5e6-96231b3b80d8
2012-05-05Make BuiltinType::getName return a StringRef and introduce ↵Argyrios Kyrtzidis
BuiltinType::getNameAsCString to get a const char* if necessary. This avoids unnecessary conversions when we want to use the result of getName as a StringRef. Part of rdar://10796159 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156227 91177308-0d34-0410-b5e6-96231b3b80d8