summaryrefslogtreecommitdiffstats
path: root/clang/CodeGen/CodeGenFunction.h
Commit message (Collapse)AuthorAgeFilesLines
* Add EmitShuffleVector helper method.Anders Carlsson2007-12-101-0/+2
| | | | llvm-svn: 44806
* Move target specific builtin IDs to TargetBuiltins.h so that they can be ↵Anders Carlsson2007-12-091-0/+3
| | | | | | used by CGBuiltin.cpp llvm-svn: 44748
* convert the rest of the stderr users in codegen to use diagnostics.Chris Lattner2007-12-021-1/+1
| | | | llvm-svn: 44503
* move unsupported warning into a centralized place.Chris Lattner2007-12-021-0/+4
| | | | llvm-svn: 44502
* Rename classes and collections that maintain record layout information.Devang Patel2007-11-011-3/+3
| | | | | | | Now, at AST level record info is maintained by ASTRecordLayout class. Now, at code gen level record info is maintained by CGRecordLayout class. llvm-svn: 43619
* Constify methods and reuse RecordOrganizer object.Devang Patel2007-10-241-1/+1
| | | | llvm-svn: 43284
* Begin struct layout work.Devang Patel2007-10-231-2/+7
| | | | llvm-svn: 43236
* Updated VC++ build system.Hartmut Kaiser2007-10-171-1/+1
| | | | | | | | Silenced some VC++ warnings. Had to rephrase a partial specialization of the IntrospectionTrait struct in SerializationTest.cpp, please review. Added a compiler specific workaround in IdentifierTable.h. Is that the way to fix this kind of issues? llvm-svn: 43074
* Generate code for static variables that don't have initializers. Also, ↵Anders Carlsson2007-10-171-0/+1
| | | | | | report an error if a static initializer is not constant. llvm-svn: 43058
* Use LLVMFoldingBuilderDevang Patel2007-10-091-1/+1
| | | | llvm-svn: 42807
* Fix comment. Describe what it is, instead of how it is used.Devang Patel2007-10-091-4/+4
| | | | llvm-svn: 42791
* Code gen case statement ranges.Devang Patel2007-10-081-2/+7
| | | | llvm-svn: 42766
* switch statement code gen.Devang Patel2007-10-041-2/+16
| | | | llvm-svn: 42616
* Do not codegen dummy block.Devang Patel2007-09-281-1/+5
| | | | | | Dummy block is an empty block with no predecessors. llvm-svn: 42451
* Generalize RValue to handle complex better, generalize EmitCompoundStmt toChris Lattner2007-08-311-17/+47
| | | | | | support any sort of expr, add a new EmitAnyExpr routine. llvm-svn: 41660
* implement code generation for scalar stmt expressions.Chris Lattner2007-08-311-1/+1
| | | | llvm-svn: 41656
* Implement codegen support for lowering "library builtins" like __builtin_isinf Chris Lattner2007-08-311-1/+1
| | | | | | | to their corresponding library routines (e.g. isinf). This allows us to handle all the stuff in macos math.h, and other stuff as it's added to *Builtins.def. llvm-svn: 41634
* add the ability to get the llvm function corresponding to a library builtin.Chris Lattner2007-08-311-0/+1
| | | | llvm-svn: 41633
* move EmitAggregateCopy into AggExprEmitterChris Lattner2007-08-261-5/+5
| | | | llvm-svn: 41472
* remove dead codeChris Lattner2007-08-261-1/+0
| | | | llvm-svn: 41470
* remove dead protosChris Lattner2007-08-261-5/+0
| | | | llvm-svn: 41469
* eliminate EmitAnyExpr, inlining it and simplifying it into its only caller.Chris Lattner2007-08-261-6/+1
| | | | llvm-svn: 41468
* remove ConvertScalarValueToBool.Chris Lattner2007-08-261-8/+0
| | | | llvm-svn: 41447
* refactor some code to expose compex->scalar conversion to CGFChris Lattner2007-08-261-0/+6
| | | | llvm-svn: 41445
* be slightly more volatile correctChris Lattner2007-08-261-1/+2
| | | | llvm-svn: 41444
* Omit EmitConversionChris Lattner2007-08-261-4/+0
| | | | llvm-svn: 41438
* refactor scalar conversions out into CGExprScalar.cppChris Lattner2007-08-261-0/+6
| | | | llvm-svn: 41433
* remove a bunch of dead codeChris Lattner2007-08-261-35/+0
| | | | llvm-svn: 41418
* completely refactor codegen of scalar expressions out into its own ↵Chris Lattner2007-08-241-22/+10
| | | | | | | | | CGExprScalar.cpp file. This patch temporarily breaks compound assignment operators, but greatly simplifies many things. llvm-svn: 41355
* implement passing of complex and aggregates through call args.Chris Lattner2007-08-231-1/+10
| | | | llvm-svn: 41344
* Implement parsing and code generation of Objective-C string literals.Anders Carlsson2007-08-211-0/+3
| | | | llvm-svn: 41238
* move EmitLoadOfComplex/EmitStoreOfComplex into ComplexExprEmitter.Chris Lattner2007-08-211-10/+0
| | | | llvm-svn: 41236
* reimplement support for complex comparisons, add support for integer complex ↵Chris Lattner2007-08-211-1/+2
| | | | | | compares. llvm-svn: 41231
* Split complex arithmetic codegen out from aggregate codegen.Chris Lattner2007-08-211-0/+4
| | | | | | | | | | | | | | | | This means that we get rid of tons of intermediate allocas. For example: void foo(double _Complex a, double _Complex b) { a = b+a+a; } this used to have 4 temporary allocas, now it has zero of them. This also simplifies the individual visitor methods because they now can all operate on real/imag pairs instead of having to load/store all over the place. llvm-svn: 41217
* reimplement addition of complex numbers.Chris Lattner2007-08-211-1/+2
| | | | llvm-svn: 41215
* switch aggregate expr codegen to use a visitor to localize most of the nasty Chris Lattner2007-08-211-18/+2
| | | | | | details in its own file. llvm-svn: 41213
* Fix array->pointer decay. This unbreaks test/CodeGen/array.cChris Lattner2007-08-201-0/+2
| | | | llvm-svn: 41202
* Add support for code generation of builtins.Anders Carlsson2007-08-201-0/+1
| | | | llvm-svn: 41188
* start splitting out aggregate value computation from EmitExpr into EmitAggExpr.Chris Lattner2007-08-111-2/+31
| | | | | | | | aggregate value and scalar expression computation are very different, this gets them away from each other. This causes a temporary regression on some complex number examples. llvm-svn: 41014
* now that implicit conversions are explicit, we can eliminate Chris Lattner2007-08-081-3/+0
| | | | | | EmitUsualArithmeticConversions. llvm-svn: 40931
* now that implicit conversions are explicit, we can eliminateChris Lattner2007-08-081-2/+0
| | | | | | EmitExprWithUsualUnaryConversions. llvm-svn: 40929
* Implement codegen for __builtin_choose_expr. For example:Chris Lattner2007-08-041-0/+2
| | | | | | | | | | | | | | | | | | | struct X { int A; }; void foo() { struct X s; int i; i = __builtin_choose_expr(0, s, i); } compiles to: %tmp = load i32* %i ; <i32> [#uses=1] store i32 %tmp, i32* %i wow :) llvm-svn: 40801
* implement codegen support for __builtin_types_compatible_pChris Lattner2007-08-031-0/+3
| | | | llvm-svn: 40788
* Rename AddrLabel and OCUVectorComponent -> AddrLabelExpr and ↵Chris Lattner2007-08-031-14/+14
| | | | | | OCUVectorElementExpr respectively. This is for consistency with other expr nodes end with *Expr. llvm-svn: 40785
* add codegen support for storing into a single-element ocu lvalue, such as:Chris Lattner2007-08-031-0/+1
| | | | | | vec2.x = f; llvm-svn: 40781
* refactor handling of ocuvector lvalue->rvalue codegen into its own method.Chris Lattner2007-08-031-0/+2
| | | | llvm-svn: 40780
* implement lvalue to rvalue conversion for ocuvector components. We can now ↵Chris Lattner2007-08-031-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | compile stuff like this: typedef __attribute__(( ocu_vector_type(4) )) float float4; float4 test1(float4 V) { return V.wzyx+V; } to: _test1: pshufd $27, %xmm0, %xmm1 addps %xmm0, %xmm1 movaps %xmm1, %xmm0 ret and: _test1: mfspr r2, 256 oris r3, r2, 4096 mtspr 256, r3 li r3, lo16(LCPI1_0) lis r4, ha16(LCPI1_0) lvx v3, r4, r3 vperm v3, v2, v2, v3 vaddfp v2, v3, v2 mtspr 256, r2 blr llvm-svn: 40771
* add support for codegen of an OCUVectorComponent as an lvalue.Chris Lattner2007-08-021-4/+22
| | | | | | | | | | We can now codegen: vec4.xy; as nothing! llvm-svn: 40769
* Implement code generation for __func__, __FUNCTION__ and __PRETTY_FUNCTION__Anders Carlsson2007-07-211-0/+2
| | | | llvm-svn: 40162
* implement codegen support for sizeof/alignofChris Lattner2007-07-181-1/+1
| | | | llvm-svn: 40009
OpenPOWER on IntegriCloud