summaryrefslogtreecommitdiffstats
path: root/clang/lib/CodeGen
Commit message (Collapse)AuthorAgeFilesLines
...
* 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
* Introduce a new type, PackExpansionType, to capture types that areDouglas Gregor2010-12-202-0/+10
| | | | | | | | | | | | | | | | | | | | pack expansions, e.g. given template<typename... Types> struct tuple; template<typename... Types> struct tuple_of_refs { typedef tuple<Types&...> types; }; the type of the "types" typedef is a PackExpansionType whose pattern is Types&. This commit introduces support for creating pack expansions for template type arguments, as above, but not for any other kind of pack expansion, nor for any form of instantiation. llvm-svn: 122223
* 1. Add some ABI information for the Microblaze.Wesley Peck2010-12-191-0/+113
| | | | | | 2. Add attibutes "interrupt_handler" and "save_volatiles" for the Microblaze target. llvm-svn: 122184
* Give hidden visibility to RTTI for derived types. This is kindof a hackyJohn McCall2010-12-171-3/+5
| | | | | | way to do this, but it fixes rdar://problem/8778973 llvm-svn: 122033
* Implement builtins for Neon half-precision float conversions.Bob Wilson2010-12-151-1/+10
| | | | | | | Also tweak the VCVT_F32_F16 entry in arm_neon.td to be more consistent with the other floating-point conversion builtins. Radar 8068427. llvm-svn: 121916
* Set the "implicitly inline" bit on a method as soon as we see a definitionJohn McCall2010-12-151-23/+24
| | | | | | | | within the class. Teach IR gen to look for function definitions in record lexical contexts when deciding whether to emit a function whose address was taken. Fixes PR8789. llvm-svn: 121833
* Restore r121752 without modification.John McCall2010-12-141-5/+6
| | | | llvm-svn: 121763
* Pull out r121752 in case it's causing the selfhost breakage.John McCall2010-12-141-6/+5
| | | | llvm-svn: 121759
* Factor out most of the extra state in a FunctionProtoType into a separateJohn McCall2010-12-141-5/+6
| | | | | | | class to be passed around. The line between argument and return types and everything else is kindof vague, but I think it's justifiable. llvm-svn: 121752
* Implement CodeGen support for the may_alias attribute.Dan Gohman2010-12-131-0/+21
| | | | llvm-svn: 121734
* Add missing switch case for the quad-register version of the Neon vmul builtin.Bob Wilson2010-12-101-0/+1
| | | | llvm-svn: 121595
* Fix clang crashes on Neon vld[234]_dup intrinsics with 64-bit element types.Bob Wilson2010-12-101-0/+21
| | | | | | The 64-bit element vectors need to be handled as a special case. llvm-svn: 121592
* Added ParenType type node.Abramo Bagnara2010-12-102-0/+9
| | | | llvm-svn: 121488
* It's kindof silly that ExtQuals has an ASTContext&, and we can use thatJohn McCall2010-12-101-1/+1
| | | | | | | | | | space better. Remove this reference. To make that work, change some APIs (most importantly, getDesugaredType()) to take an ASTContext& if they need to return a QualType. Simultaneously, diminish the need to return a QualType by introducing some useful APIs on SplitQualType, which is just a std::pair<const Type *, Qualifiers>. llvm-svn: 121478
* Add missing switch case to handle builtin for Neon vqnegq.Bob Wilson2010-12-101-0/+1
| | | | llvm-svn: 121468
* LLVM's intrinsics for vpaddl and vpadal have 2 overloaded types.Bob Wilson2010-12-101-4/+18
| | | | | | Clang was only specifying the overloaded result type. PR8483. llvm-svn: 121464
* Neon compare absolute LLVM intrinsics are not overloaded. PR8484.Bob Wilson2010-12-101-4/+4
| | | | llvm-svn: 121447
* Fix another obscure corner layout case.Argyrios Kyrtzidis2010-12-101-9/+13
| | | | llvm-svn: 121436
* Remove unused parameter. getContextDescriptor() and getOrCreateNameSpace().Devang Patel2010-12-092-19/+15
| | | | llvm-svn: 121333
* Remove unused parameter.Devang Patel2010-12-092-4/+3
| | | | llvm-svn: 121326
OpenPOWER on IntegriCloud