summaryrefslogtreecommitdiffstats
path: root/clang/lib/CodeGen/CGCall.cpp
Commit message (Collapse)AuthorAgeFilesLines
...
* When trying to pass an argument on the stack, assume LLVM will do the rightDaniel Dunbar2009-05-261-3/+19
| | | | | | | | | | | | | thing for non-aggregate types. - Otherwise we unnecessarily pin values to the stack and currently end up triggering a backend bug in one case. - This loose cooperation with LLVM to implement the ABI is pretty ugly. - <rdar://problem/6918722> [irgen] clang miscompile of many pointer varargs on x86-64 llvm-svn: 72419
* x86_64 ABI: Account for sret parameters consuming an integer register.Daniel Dunbar2009-05-221-0/+5
| | | | | | - PR4242. llvm-svn: 72268
* Set correct calling convention even if there is a bitcast in the way.Torok Edwin2009-05-221-1/+1
| | | | | | This attempts to fix PR4239. llvm-svn: 72251
* Use v.data() instead of &v[0] when SmallVector v might be empty.Jay Foad2009-05-211-2/+2
| | | | llvm-svn: 72210
* Add EmitReferenceBindingToExpr. Have EmitCallArg use it for now. Doesn't ↵Anders Carlsson2009-05-201-0/+3
| | | | | | support anything but at least we don't crash ;) llvm-svn: 72147
* Pass the destination QualType to EmitStoreOfScalar. No functionality change.Anders Carlsson2009-05-191-3/+3
| | | | llvm-svn: 72118
* Clean up some unnecessary includes.Eli Friedman2009-05-191-2/+0
| | | | llvm-svn: 72101
* Reflow some comments.Mike Stump2009-05-161-52/+45
| | | | llvm-svn: 71937
* ABI handling: Fix invalid assertion, it is possible for a validDaniel Dunbar2009-05-131-6/+16
| | | | | | | | coercion to be specified which truncates padding bits. It would be nice to still have the assert, but we don't have any API call for the unpadding size of a type yet. llvm-svn: 71695
* static methods don't get this pointers.Chris Lattner2009-05-121-4/+4
| | | | llvm-svn: 71586
* Darwin x86-32 ABI: Now that structure passing is farther along, weDaniel Dunbar2009-05-121-12/+5
| | | | | | don't need special treatment for unions. llvm-svn: 71559
* x86-64 ABI: clang incorrectly passes union { long double, float } inDaniel Dunbar2009-05-121-1/+2
| | | | | | | register. - Merge algorithm was returning MEMORY as it should. llvm-svn: 71556
* Darwin x86-32: Multi-dimensional arrays were not handled correctly,Daniel Dunbar2009-05-111-9/+12
| | | | | | spotted by Eli! llvm-svn: 71490
* Darwin x86_32: Treat records with unnamed bit-fields as "empty".Daniel Dunbar2009-05-111-19/+27
| | | | llvm-svn: 71461
* Correct for renaming PaddedSize -> AllocSize inDuncan Sands2009-05-091-4/+4
| | | | | | LLVM. llvm-svn: 71350
* x86_64 ABI: Ignore padding bit-fields during classification.Daniel Dunbar2009-05-081-2/+5
| | | | | | | - {return-types,single-args}-{32,64} pass the first 1k ABI tests with bit-fields enabled. llvm-svn: 71272
* Darwin x86_32: When coercing a "single element" structure, make sureDaniel Dunbar2009-05-081-4/+8
| | | | | | | | | to use a wide enough type. This might be wider than the "single element"'s type in the presence of padding bit-fields. - Darwin x86_32 now passes the first 1k ABI tests with bit-field generation enabled. llvm-svn: 71270
* Darwin x86_32: Ignore padding bit-fields when looking for "singleDaniel Dunbar2009-05-081-4/+8
| | | | | | element" structures. llvm-svn: 71266
* Darwin x86_32: Improve bit-field handling for returning records.Daniel Dunbar2009-05-081-4/+0
| | | | | | | - This turns out to be a no-op now that most of the handling for everything else is in place. llvm-svn: 71261
* Darwin x86_32: Ignore arrays of empty structures inside records.Daniel Dunbar2009-05-081-0/+7
| | | | | | | - This eliminates 5/1000 failures on return-types-32, on the current ABITest config. llvm-svn: 71250
* fix i128 to return in 2 64-bit registers (rax/rdx on x86-64)Chris Lattner2009-04-301-2/+2
| | | | llvm-svn: 70481
* initial support for __[u]int128_t, which should be basicallyChris Lattner2009-04-301-1/+3
| | | | | | | | compatible with VC++ and GCC. The codegen/mangling angle hasn't been fully ironed out yet. Note that we accept int128_t even in 32-bit mode, unlike gcc. llvm-svn: 70464
* x86-32 ABI: Fix crash on return of structure with flexible arrayDaniel Dunbar2009-04-271-4/+10
| | | | | | | | member. Also, spell bitfield more consistently as bit-field. llvm-svn: 70220
* Remove getIntegerConstantExprValue in favor of using EvaluateAsInt.Eli Friedman2009-04-261-2/+1
| | | | llvm-svn: 70145
* Pass and return aggregate types directly to function calls.Sanjiv Gupta2009-04-211-0/+41
| | | | llvm-svn: 69668
* Make CodeGenFunction::EmitCallArgs a template function that takes a generic ↵Anders Carlsson2009-04-181-32/+0
| | | | | | "Type Info" parameter. The type info parameter knows how to iterate over its arguments. llvm-svn: 69469
* Update to use hasAttr() instead of getAttr().Daniel Dunbar2009-04-131-4/+4
| | | | | | - No functionality change. llvm-svn: 68987
* Don't set both readnone and readonly.Daniel Dunbar2009-04-101-2/+2
| | | | llvm-svn: 68833
* Propagate the ASTContext to various AST traversal and lookup functions.Douglas Gregor2009-04-091-22/+24
| | | | | | No functionality change (really). llvm-svn: 68726
* Add code for emitting call arguments (not used yet).Anders Carlsson2009-04-081-0/+36
| | | | llvm-svn: 68639
* Don't assume that a block always has a FunctionProtoType. Fixes rdar://6768379.Anders Carlsson2009-04-081-13/+0
| | | | llvm-svn: 68583
* Add a getFunctionInfo that takes a BlockPointerType.Anders Carlsson2009-04-061-0/+13
| | | | llvm-svn: 68452
* Basic support for regparm codegenAnton Korobeynikov2009-04-041-3/+22
| | | | llvm-svn: 68414
* Add a getFunctionInfo that takes a CXXMethodDecl.Anders Carlsson2009-04-031-0/+17
| | | | llvm-svn: 68411
* x86-32 Darwin ABI: Handle small structures correctly.Daniel Dunbar2009-04-011-2/+68
| | | | | | | | | | | | | | - Small structures are returned in a register if: 1. They fit nicely in a register. 2. All fields fit nicely in a register. (more or less) - We now pass the first 5000 ABITests if unions are disabled. - <rdar://problem/6497882> [irgen] x86-32 ABI compatibility with small structs llvm-svn: 68197
* x86-32 Darwin ABI: Single element arrays can be part of "singleDaniel Dunbar2009-04-011-18/+26
| | | | | | | | | | element structures", which have different ABI rules. - Current return-arguments-32 status is: 1 out of 1000 failures (-7) - Also, vectors inside "single element structs" require special handling. llvm-svn: 68196
* x86-32 Darwin ABI: Handle direct return of vectors.Daniel Dunbar2009-04-011-0/+22
| | | | | | - Current return-arguments-32 status is: 8 out of 1000 failures (-7) llvm-svn: 68192
* x86_32 Darwin ABI: Treat empty unions like empty structures.Daniel Dunbar2009-03-311-5/+5
| | | | | | - Current return-arguments-32 status: 15/1000 failures llvm-svn: 68132
* Initial implementation of ARM ABI. Mostly untested. Note that I'm not Eli Friedman2009-03-291-0/+88
| | | | | | | | really intending to take ownership of this; I wrote this mostly because I was curious about how the ARM ABI works. It should be a decent start, though. llvm-svn: 67969
* Fix the ABI convention for struct returns on x86 outside of Darwin.Eli Friedman2009-03-231-1/+9
| | | | llvm-svn: 67577
* don't set the name of a call instruction to "call" in release-asserts Chris Lattner2009-03-221-10/+9
| | | | | | build. This shaves another 3% off. llvm-svn: 67460
* PR3835: Interaction with ABI structure passing can inhibitDaniel Dunbar2009-03-181-0/+6
| | | | | | readnone/readonly attributes. llvm-svn: 67224
* x86_32 ABI: Don't try and expand structures with bitfields.Daniel Dunbar2009-03-111-7/+7
| | | | | | | | | | - This is an ABI incompatiblity, but this is not likely to be a huge deal in practice. For now we at least generate self consistent code instead of crashing. - <rdar://problem/6657601> x86-32 ABI: Bitfields in small structures are not passed correctly llvm-svn: 66713
* Remove some now-unneeded calls to llvm::errs().flush().Daniel Dunbar2009-03-101-2/+0
| | | | llvm-svn: 66555
* x86_64 ABI: Handle long double in union when upper eightbyte resultsDaniel Dunbar2009-03-061-8/+16
| | | | | | | in a lone X87 class. - PR3735. llvm-svn: 66277
* Cleanup handling of function attributes in calls.Daniel Dunbar2009-03-021-35/+27
| | | | | | - No intended functionality change. llvm-svn: 65805
* Create a new TypeNodes.def file that enumerates all of the types,Douglas Gregor2009-02-261-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | | giving them rough classifications (normal types, never-canonical types, always-dependent types, abstract type representations) and making it far easier to make sure that we've hit all of the cases when decoding types. Switched some switch() statements on the type class over to using this mechanism, and filtering out those things we don't care about. For example, CodeGen should never see always-dependent or non-canonical types, while debug info generation should never see always-dependent types. More switch() statements on the type class need to be moved over to using this approach, so that we'll get warnings when we add a new type then fail to account for it somewhere in the compiler. As part of this, some types have been renamed: TypeOfExpr -> TypeOfExprType FunctionTypeProto -> FunctionProtoType FunctionTypeNoProto -> FunctionNoProtoType There shouldn't be any functionality change... llvm-svn: 65591
* Add Type::hasPointerRepresentation predicate.Daniel Dunbar2009-02-261-3/+1
| | | | | | | | | - For types whose native representation is a pointer. - Use to replace ExprConstant.cpp:HasPointerEvalType, CodeGenFunction::isObjCPointerType. llvm-svn: 65569
* Drop uses of isPointerLikeType.Daniel Dunbar2009-02-261-2/+2
| | | | | | - No functionality change. llvm-svn: 65560
* Classify enum types correctlyAnders Carlsson2009-02-261-0/+3
| | | | llvm-svn: 65533
OpenPOWER on IntegriCloud