summaryrefslogtreecommitdiffstats
path: root/clang/lib/CodeGen
Commit message (Collapse)AuthorAgeFilesLines
* 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
* Start using DIBuilder. It provides cleaner interface.Devang Patel2010-12-082-350/+244
| | | | llvm-svn: 121302
* Stop using builtins for the "_lane" variants of saturating multiply intrinsics.Bob Wilson2010-12-082-35/+17
| | | | | | | Remove the "splat" parameter from the EmitNeonCall function, since it is no longer needed. llvm-svn: 121300
* Remove the TypesCompatibleExprClass AST node. Merge its functionality into ↵Francois Pichet2010-12-082-7/+1
| | | | | | BinaryTypeTraitExpr. llvm-svn: 121298
* Stop using clang builtins for Neon vabdl and vabal intrinsics.Bob Wilson2010-12-081-17/+0
| | | | llvm-svn: 121288
* Stop using clang builtins for Neon vaba intrinsics.Bob Wilson2010-12-081-10/+0
| | | | llvm-svn: 121277
* Silence an unused variable warning.Chandler Carruth2010-12-081-0/+1
| | | | llvm-svn: 121221
* Stop using clang builtins for Neon vadd[lw] and vsub[lw] intrinsics.Bob Wilson2010-12-081-46/+0
| | | | llvm-svn: 121214
* Stop using clang builtins for Neon vmlal{_n,_lane} and vmlsl{_n,_lane}.Bob Wilson2010-12-071-40/+0
| | | | llvm-svn: 121210
* Stop using a clang builtin for Neon vdup_lane intrinsics.Bob Wilson2010-12-072-11/+2
| | | | llvm-svn: 121191
* Stop using a clang builtin for Neon vmull_lane intrinsic.Bob Wilson2010-12-071-21/+4
| | | | llvm-svn: 121189
* Add a missing parameter, without which clang crashes for vqshlu_n intrinsics.Bob Wilson2010-12-071-1/+1
| | | | llvm-svn: 121188
* PR5207: Change APInt methods trunc(), sext(), zext(), sextOrTrunc() andJay Foad2010-12-072-20/+15
| | | | | | | | zextOrTrunc(), and APSInt methods extend(), extOrTrunc() and new method trunc(), to be const and to return a new value instead of modifying the object in place. llvm-svn: 121121
* Type traits intrinsic implementation: __is_base_of(T, U)Francois Pichet2010-12-072-0/+5
| | | | | | New AST node introduced: BinaryTypeTraitExpr; to be reused for more intrinsics. llvm-svn: 121074
* Rename CXXExprWithTemporaries -> ExprWithCleanups; there's no theoreticalJohn McCall2010-12-069-21/+20
| | | | | | reason this is limited to C++, and it's certainly not limited to temporaries. llvm-svn: 120996
* __block variables require us to evaluate the RHS of an assignment beforeJohn McCall2010-12-063-4/+6
| | | | | | | | | | the LHS, or else the pointer might be invalid. This is kindof dumb, but go ahead and make sure we're doing that for l-value scalar assignment, which fixes a miscompile of obj-c++.dg/block-seq.mm. Leave a FIXME for how to solve this problem for agg __blocks. llvm-svn: 120992
* Fix a bug in the emission of __real/__imag l-values on scalar operands.John McCall2010-12-057-38/+71
| | | | | | | | | Fix a bug in the emission of complex compound assignment l-values. Introduce a method to emit an expression whose value isn't relevant. Make that method evaluate its operand as an l-value if it is one. Fixes our volatile compliance in C++. llvm-svn: 120931
* Add a LayoutBase member function. No functionality change.Anders Carlsson2010-12-041-15/+22
| | | | llvm-svn: 120924
* Replace calls to AppendBytes with calls to AppendPadding when the bytes ↵Anders Carlsson2010-12-041-11/+6
| | | | | | appended are padding. llvm-svn: 120922
* Silly special case: never load when dereferencing void*.John McCall2010-12-041-1/+5
| | | | llvm-svn: 120905
* More anonymous struct/union redesign. This one deals with anonymous field ↵Francois Pichet2010-12-044-24/+14
| | | | | | | | | | | | | | | | used in a constructor initializer list: struct X { X() : au_i1(123) {} union { int au_i1; float au_f1; }; }; clang will now deal with au_i1 explicitly as an IndirectFieldDecl. llvm-svn: 120900
* Remove some defensive calls to EmitLoadOfPropertyRefLValue that shouldn'tJohn McCall2010-12-043-80/+27
| | | | | | | be required, and then fix up some missing loads on overloaded-operator paths which that exposed. llvm-svn: 120896
* Although we currently have explicit lvalue-to-rvalue conversions, they'reJohn McCall2010-12-044-10/+55
| | | | | | | | | | | | | | | | | | | not actually frequently used, because ImpCastExprToType only creates a node if the types differ. So explicitly create an ICE in the lvalue-to-rvalue conversion code in DefaultFunctionArrayLvalueConversion() as well as several other new places, and consistently deal with the consequences throughout the compiler. In addition, introduce a new cast kind for loading an ObjCProperty l-value, and make sure we emit those nodes whenever an ObjCProperty l-value appears that's not on the LHS of an assignment operator. This breaks a couple of rewriter tests, which I've x-failed until future development occurs on the rewriter. Ted Kremenek kindly contributed the analyzer workarounds in this patch. llvm-svn: 120890
OpenPOWER on IntegriCloud