summaryrefslogtreecommitdiffstats
path: root/clang/lib/CodeGen
Commit message (Collapse)AuthorAgeFilesLines
...
* lib/CodeGen/TargetInfo.cpp: Fix coding style and erase an obsolete comment.NAKAMURA Takumi2011-01-191-6/+4
| | | | llvm-svn: 123790
* Add unnamed_addr in CreateRuntimeVariable.Rafael Espindola2011-01-182-3/+9
| | | | llvm-svn: 123773
* Add support for explicit constructor calls in Microsoft mode.Francois Pichet2011-01-181-13/+35
| | | | | | | | | | | | | | | | | | | For example: class A{ public: A& operator=(const A& that) { if (this != &that) { this->A::~A(); this->A::A(that); // <=== explicit constructor call. } return *this; } }; More work will be needed to support an explicit call to a template constructor. llvm-svn: 123735
* Replace calls to CharUnits::fromQuantity() with ones to Ken Dyck2011-01-182-4/+4
| | | | | | ASTContext::toCharUnitsFromBits() when converting from bit sizes to char units. llvm-svn: 123720
* Fix warnings found by gcc-4.6, from -Wunused-but-set-variable andJeffrey Yasskin2011-01-184-10/+4
| | | | | | -Wint-to-pointer-cast. llvm-svn: 123719
* lib/CodeGen/TargetInfo.cpp: Add Win64 calling conversion.NAKAMURA Takumi2011-01-171-2/+49
| | | | | | | FIXME: It would be incompatible to Microsoft's in one point. On mingw64-gcc, {i128} is expanded for args and returned as {rax, rdx}. llvm-svn: 123692
* Simplify.Devang Patel2011-01-172-19/+12
| | | | llvm-svn: 123682
* More unnamed_addr.Rafael Espindola2011-01-171-0/+1
| | | | llvm-svn: 123681
* merge strings created byRafael Espindola2011-01-171-0/+1
| | | | | | const NSConstantString *appKey = @"MyApp"; llvm-svn: 123680
* Add unnamed_addr to the special strings created byRafael Espindola2011-01-171-0/+1
| | | | | | | __builtin___CFStringMakeConstantString This fixes PR8993. A darwin expert might want to check that this is safe. llvm-svn: 123658
* Also set unnamed_addr on declarations.Rafael Espindola2011-01-152-3/+2
| | | | llvm-svn: 123531
* Support the zero-initialization of VLAs when that really means a zeroJohn McCall2011-01-141-8/+20
| | | | | | | bit-pattern. Continue punting on zero-initializing VLAs with a nonzero pattern. llvm-svn: 123439
* When simplifying a cleanup's entry by merging it into a single predecessor,John McCall2011-01-141-0/+4
| | | | | | | | replace all uses of the entry with the predecessor. There are no cleanups relying on this right now, but if we ever want a cleanup with a phi inside it, this will be important. llvm-svn: 123438
* Save getObjCGCAttrKind and use it in two placesFariborz Jahanian2011-01-131-2/+3
| | | | | | | for efficiancy (still part of //rdar://8761767). Per John's comment. llvm-svn: 123401
* Generate write-barriers for global objcFariborz Jahanian2011-01-131-1/+9
| | | | | | assigns. // rdar://8761767 llvm-svn: 123391
* Move name mangling support from CodeGen to AST. In thePeter Collingbourne2011-01-1318-4104/+39
| | | | | | | | | | | | | | process, perform a number of refactorings: - Move MiscNameMangler member functions to MangleContext - Remove GlobalDecl dependency from MangleContext - Make MangleContext abstract and move Itanium/Microsoft functionality to their own classes/files - Implement ASTContext::createMangleContext and have CodeGen use it No (intended) functionality change. llvm-svn: 123386
* When your comments and your code are out-of-sync, the test case is wrong.Douglas Gregor2011-01-131-1/+1
| | | | llvm-svn: 123379
* Add tests for name mangling of variadic templates.Douglas Gregor2011-01-131-5/+6
| | | | llvm-svn: 123378
* Ensure an insertion point at the end of a statement-expression.John McCall2011-01-133-6/+9
| | | | | | Fixes PR8967. llvm-svn: 123360
* Only add unnamed_addr to definitions.Rafael Espindola2011-01-132-2/+3
| | | | llvm-svn: 123354
* Add IR generation support for SizeOfPackExpr.Douglas Gregor2011-01-121-0/+5
| | | | llvm-svn: 123332
* Fix a latent bug where, after emitting an expression statement, we wouldJohn McCall2011-01-123-27/+52
| | | | | | | | | | | | | | delete the block we began emitting into if it had no predecessors. We never want to do this, because there are several valid cases during statement emission where an existing block has no known predecessors but will acquire some later. The case in my test case doesn't inherently fall into this category, because we could safely emit the case-range code before the statement body, but there are examples with labels that can't be fallen into that would also demonstrate this bug. rdar://problem/8837067 llvm-svn: 123303
* Set unnamed_addr in every type info.Rafael Espindola2011-01-111-4/+2
| | | | llvm-svn: 123293
* Set unnamed_addr in VTTs.Rafael Espindola2011-01-111-0/+1
| | | | llvm-svn: 123280
* Set unnamed_addr for type infos that we are confortable marking as hidden. IRafael Espindola2011-01-112-1/+6
| | | | | | think it is safe to mark all type infos with unnamed_addr, but I am not sure. llvm-svn: 123275
* Add unnamed_addr to vtables.Rafael Espindola2011-01-111-2/+5
| | | | llvm-svn: 123272
* Remove special handling for opaque Neon vector types.Bob Wilson2011-01-111-9/+0
| | | | | | Clang does not wrap the vectors in structs anymore so this isn't needed. llvm-svn: 123241
* Fix debug info for __block variable referenced outside of block.Devang Patel2011-01-111-1/+30
| | | | llvm-svn: 123199
* Add unnamed_addr to constructors and destructors.Rafael Espindola2011-01-111-0/+3
| | | | llvm-svn: 123197
* Move DefaultABIInfo::classifyReturnType where it belongs. No functional change.Bob Wilson2011-01-101-15/+15
| | | | llvm-svn: 123195
* Add unnamed_addr when creating artificial string globals. For example, inRafael Espindola2011-01-101-3/+6
| | | | | | | | | static const char foo[] = "foo"; static const char *bar = "bar"; the global created to hold "bar" will have it, but foo will not. llvm-svn: 123192
* Make a helper function static.Benjamin Kramer2011-01-091-1/+2
| | | | llvm-svn: 123118
* Renamed CXXBaseOrMemberInitializer to CXXCtorInitializer. This is both shorter,Alexis Hunt2011-01-082-9/+9
| | | | | | | more accurate, and makes it make sense for it to hold a delegating constructor call. llvm-svn: 123084
* Rework a few things about how we emit ObjC's for enumeration statement.John McCall2011-01-071-95/+126
| | | | | | | | | | In particular, the iteration variable (if present) should be created and destroyed in a narrow span around the loop body, and the body should be emitted in a cleanup scope in case it's not a compound statement. Otherwise, rename a few variables and use phis instead of temporary variables for the index and buffer count. llvm-svn: 122988
* Introduce an AttributedType, but don't actually use it anywhere yet.John McCall2011-01-061-0/+3
| | | | | | | | | | The initial TreeTransform is a cop-out, but it's more-or-less equivalent to what we were doing before, or rather what we're doing now and might eventually stop doing in favor of using this type. I am simultaneously intrigued by the possibilities of rebuilding a dependent Attri llvm-svn: 122942
* Replace the representation of template template argument packDouglas Gregor2011-01-051-0/+5
| | | | | | | | | | | | | expansions with something that is easier to use correctly: a new template argment kind, rather than a bit on an existing kind. Update all of the switch statements that deal with template arguments, fixing a few latent bugs in the process. I"m happy with this representation, now. And, oh look! Template instantiation and deduction work for template template argument pack expansions. llvm-svn: 122896
* fix a -Wself-assign warningChris Lattner2011-01-051-1/+1
| | | | llvm-svn: 122894
* Refactor the application of type attributes so that attributes fromJohn McCall2011-01-051-6/+14
| | | | | | | | | | | | | | | | | | | | | | | | | the declaration-specifiers and on the declarator itself are moved to the appropriate declarator chunk. This permits a greatly simplified model for how to apply these attributes, as well as allowing a much more efficient query for the GC attribute. Now all qualifier queries follow the same basic strategy of "local qualifiers, local qualifiers on the canonical type, then look through arrays". This can be easily optimized by changing the canonical qualified-array-type representation. Do not process type attributes as decl attributes on declarations with declarators. When computing the type of a block, synthesize a prototype function declarator chunk if the decl-spec type was not a function. This simplifies the logic for building block signatures. Change the logic which inserts an objc_read_weak on a block literal to only fire if the block has a __weak __block variable, rather than if the return type of the block is __weak qualified, which is not actually a sensible thing to ask. llvm-svn: 122871
* Implement name mangling for sizeof...(pack), to silence the last ofDouglas Gregor2011-01-041-0/+22
| | | | | | | the switch-enum warnings. Test is forthcoming, once I've dealt with some template argument deduction issues. llvm-svn: 122820
* Implement pack expansions whose pattern is a base-specifier.Douglas Gregor2011-01-031-2/+13
| | | | llvm-svn: 122782
* Consider zero-length array of structs whenFariborz Jahanian2011-01-031-1/+1
| | | | | | | computing ivar layouts for objc-gc. Fixes // rdar://8800513 llvm-svn: 122762
* Implement support for pack expansions whose pattern is a non-typeDouglas Gregor2011-01-031-1/+5
| | | | | | | | | | | | | | | | | template argument (described by an expression, of course). For example: template<int...> struct int_tuple { }; template<int ...Values> struct square { typedef int_tuple<(Values*Values)...> type; }; It also lays the foundation for pack expansions in an initializer-list. llvm-svn: 122751
* Add support for passing variables declared to use a xmm register to asmRafael Espindola2011-01-021-1/+2
| | | | | | statements using the "x" constraint. llvm-svn: 122679
* Produce a better error message for invalid register names.Rafael Espindola2011-01-011-4/+1
| | | | llvm-svn: 122670
* Fix typo and add comment.Rafael Espindola2011-01-011-5/+8
| | | | llvm-svn: 122669
* Add support for declaring register contraints in variables. They are only usedRafael Espindola2010-12-302-3/+34
| | | | | | | | | | | | | | in asm statements: register int foo asm("rdi"); asm("..." : ... "r" (foo) ... We also only accept these variables if the constraint in the asm statement is "r". This fixes most of PR3933. llvm-svn: 122643
* Correct function name in comment.Nick Lewycky2010-12-301-1/+1
| | | | llvm-svn: 122640
* Simplify mem{cpy, move, set} creation with IRBuilder.Benjamin Kramer2010-12-308-108/+30
| | | | llvm-svn: 122634
* Add support for GNU runtime property set / get structure functions. Minor ↵David Chisnall2010-12-264-23/+57
| | | | | | refactoring of Mac runtime (returns the same function for both, as the Mac runtimes currently only provide a single entry point for setting and getting struct properties, although this will presumably be fixed at some point). llvm-svn: 122569
* The -fshort-wchar option causes wchar_t to become unsigned, in addition to beingChris Lattner2010-12-254-4/+8
| | | | | | | 16-bits in size. Implement this by splitting WChar into two enums, like we have for char. This fixes a miscompmilation of XULRunner, PR8856. llvm-svn: 122558
OpenPOWER on IntegriCloud