Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | Move the static DeclAttrs map into ASTContext. Fixes <rdar://problem/6983177>. | Douglas Gregor | 2009-06-18 | 1 | -5/+6 |
| | | | | llvm-svn: 73702 | ||||
* | Fix PR4372, another case where non-prototyped functions can prevent | Chris Lattner | 2009-06-13 | 1 | -4/+36 |
| | | | | | | always_inline from working. llvm-svn: 73273 | ||||
* | Add new ABIArgInfo kind: Extend. This allows target to implement its own ↵ | Anton Korobeynikov | 2009-06-06 | 1 | -20/+26 |
| | | | | | | | | | argument zero/sign extension logic (consider, e.g. target has only 64 bit registers and thus i32's should be extended as well). llvm-svn: 72998 | ||||
* | Factor out TargetABIInfo stuff into separate file. No functionality change. | Anton Korobeynikov | 2009-06-05 | 1 | -1368/+0 |
| | | | | llvm-svn: 72962 | ||||
* | Set function Attribute::NoImplicitFloat appropriately. | Devang Patel | 2009-06-05 | 1 | -0/+2 |
| | | | | llvm-svn: 72961 | ||||
* | ABI handling: Fix nasty thinko where IRgen could generate an out-of-bounds read | Daniel Dunbar | 2009-06-05 | 1 | -7/+8 |
| | | | | | | | | | | when generating a coercion for ABI handling purposes. - This may only manifest itself when building at -O0, but the practical effect is that other arguments may get clobbered. - <rdar://problem/6930451> [irgen] ABI coercion clobbers other arguments llvm-svn: 72932 | ||||
* | Set function attribute llvm::Attribute::NoRedZone appropriately. | Devang Patel | 2009-06-04 | 1 | -0/+4 |
| | | | | llvm-svn: 72902 | ||||
* | When trying to pass an argument on the stack, assume LLVM will do the right | Daniel Dunbar | 2009-05-26 | 1 | -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 Dunbar | 2009-05-22 | 1 | -0/+5 |
| | | | | | | - PR4242. llvm-svn: 72268 | ||||
* | Set correct calling convention even if there is a bitcast in the way. | Torok Edwin | 2009-05-22 | 1 | -1/+1 |
| | | | | | | This attempts to fix PR4239. llvm-svn: 72251 | ||||
* | Use v.data() instead of &v[0] when SmallVector v might be empty. | Jay Foad | 2009-05-21 | 1 | -2/+2 |
| | | | | llvm-svn: 72210 | ||||
* | Add EmitReferenceBindingToExpr. Have EmitCallArg use it for now. Doesn't ↵ | Anders Carlsson | 2009-05-20 | 1 | -0/+3 |
| | | | | | | support anything but at least we don't crash ;) llvm-svn: 72147 | ||||
* | Pass the destination QualType to EmitStoreOfScalar. No functionality change. | Anders Carlsson | 2009-05-19 | 1 | -3/+3 |
| | | | | llvm-svn: 72118 | ||||
* | Clean up some unnecessary includes. | Eli Friedman | 2009-05-19 | 1 | -2/+0 |
| | | | | llvm-svn: 72101 | ||||
* | Reflow some comments. | Mike Stump | 2009-05-16 | 1 | -52/+45 |
| | | | | llvm-svn: 71937 | ||||
* | ABI handling: Fix invalid assertion, it is possible for a valid | Daniel Dunbar | 2009-05-13 | 1 | -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 Lattner | 2009-05-12 | 1 | -4/+4 |
| | | | | llvm-svn: 71586 | ||||
* | Darwin x86-32 ABI: Now that structure passing is farther along, we | Daniel Dunbar | 2009-05-12 | 1 | -12/+5 |
| | | | | | | don't need special treatment for unions. llvm-svn: 71559 | ||||
* | x86-64 ABI: clang incorrectly passes union { long double, float } in | Daniel Dunbar | 2009-05-12 | 1 | -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 Dunbar | 2009-05-11 | 1 | -9/+12 |
| | | | | | | spotted by Eli! llvm-svn: 71490 | ||||
* | Darwin x86_32: Treat records with unnamed bit-fields as "empty". | Daniel Dunbar | 2009-05-11 | 1 | -19/+27 |
| | | | | llvm-svn: 71461 | ||||
* | Correct for renaming PaddedSize -> AllocSize in | Duncan Sands | 2009-05-09 | 1 | -4/+4 |
| | | | | | | LLVM. llvm-svn: 71350 | ||||
* | x86_64 ABI: Ignore padding bit-fields during classification. | Daniel Dunbar | 2009-05-08 | 1 | -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 sure | Daniel Dunbar | 2009-05-08 | 1 | -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 "single | Daniel Dunbar | 2009-05-08 | 1 | -4/+8 |
| | | | | | | element" structures. llvm-svn: 71266 | ||||
* | Darwin x86_32: Improve bit-field handling for returning records. | Daniel Dunbar | 2009-05-08 | 1 | -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 Dunbar | 2009-05-08 | 1 | -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 Lattner | 2009-04-30 | 1 | -2/+2 |
| | | | | llvm-svn: 70481 | ||||
* | initial support for __[u]int128_t, which should be basically | Chris Lattner | 2009-04-30 | 1 | -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 array | Daniel Dunbar | 2009-04-27 | 1 | -4/+10 |
| | | | | | | | | member. Also, spell bitfield more consistently as bit-field. llvm-svn: 70220 | ||||
* | Remove getIntegerConstantExprValue in favor of using EvaluateAsInt. | Eli Friedman | 2009-04-26 | 1 | -2/+1 |
| | | | | llvm-svn: 70145 | ||||
* | Pass and return aggregate types directly to function calls. | Sanjiv Gupta | 2009-04-21 | 1 | -0/+41 |
| | | | | llvm-svn: 69668 | ||||
* | Make CodeGenFunction::EmitCallArgs a template function that takes a generic ↵ | Anders Carlsson | 2009-04-18 | 1 | -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 Dunbar | 2009-04-13 | 1 | -4/+4 |
| | | | | | | - No functionality change. llvm-svn: 68987 | ||||
* | Don't set both readnone and readonly. | Daniel Dunbar | 2009-04-10 | 1 | -2/+2 |
| | | | | llvm-svn: 68833 | ||||
* | Propagate the ASTContext to various AST traversal and lookup functions. | Douglas Gregor | 2009-04-09 | 1 | -22/+24 |
| | | | | | | No functionality change (really). llvm-svn: 68726 | ||||
* | Add code for emitting call arguments (not used yet). | Anders Carlsson | 2009-04-08 | 1 | -0/+36 |
| | | | | llvm-svn: 68639 | ||||
* | Don't assume that a block always has a FunctionProtoType. Fixes rdar://6768379. | Anders Carlsson | 2009-04-08 | 1 | -13/+0 |
| | | | | llvm-svn: 68583 | ||||
* | Add a getFunctionInfo that takes a BlockPointerType. | Anders Carlsson | 2009-04-06 | 1 | -0/+13 |
| | | | | llvm-svn: 68452 | ||||
* | Basic support for regparm codegen | Anton Korobeynikov | 2009-04-04 | 1 | -3/+22 |
| | | | | llvm-svn: 68414 | ||||
* | Add a getFunctionInfo that takes a CXXMethodDecl. | Anders Carlsson | 2009-04-03 | 1 | -0/+17 |
| | | | | llvm-svn: 68411 | ||||
* | x86-32 Darwin ABI: Handle small structures correctly. | Daniel Dunbar | 2009-04-01 | 1 | -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 "single | Daniel Dunbar | 2009-04-01 | 1 | -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 Dunbar | 2009-04-01 | 1 | -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 Dunbar | 2009-03-31 | 1 | -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 Friedman | 2009-03-29 | 1 | -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 Friedman | 2009-03-23 | 1 | -1/+9 |
| | | | | llvm-svn: 67577 | ||||
* | don't set the name of a call instruction to "call" in release-asserts | Chris Lattner | 2009-03-22 | 1 | -10/+9 |
| | | | | | | build. This shaves another 3% off. llvm-svn: 67460 | ||||
* | PR3835: Interaction with ABI structure passing can inhibit | Daniel Dunbar | 2009-03-18 | 1 | -0/+6 |
| | | | | | | readnone/readonly attributes. llvm-svn: 67224 | ||||
* | x86_32 ABI: Don't try and expand structures with bitfields. | Daniel Dunbar | 2009-03-11 | 1 | -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 |