summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
...
* Dale and Evan suggested putting the "check for setjmp" much earlier in theBill Wendling2010-05-263-38/+53
| | | | | | machine code generation. That's a good idea, so I made it so. llvm-svn: 104655
* Replace the SubRegSet tablegen class with a less error-prone mechanism.Jakob Stoklund Olesen2010-05-2611-326/+187
| | | | | | | | | | | | | | | | A Register with subregisters must also provide SubRegIndices for adressing the subregisters. TableGen automatically inherits indices for sub-subregisters to minimize typing. CompositeIndices may be specified for the weirder cases such as the XMM sub_sd index that returns the same register, and ARM NEON Q registers where both D subregs have ssub_0 and ssub_1 sub-subregs. It is now required that all subregisters are named by an index, and a future patch will also require inherited subregisters to be named. This is necessary to allow composite subregister indices to be reduced to a single index. llvm-svn: 104654
* Adding the missing implementation of Bitfield's "clear" and "insert".Shih-wei Liao2010-05-261-4/+9
| | | | | | Fixing http://llvm.org/bugs/show_bug.cgi?id=7222. llvm-svn: 104653
* To handle s* registers in emitVFPLoadStoreMultipleInstruction().Shih-wei Liao2010-05-261-7/+12
| | | | | | Fixing http://llvm.org/bugs/show_bug.cgi?id=7221. llvm-svn: 104652
* Start adding mach-o tls reloc support.Eric Christopher2010-05-263-3/+12
| | | | llvm-svn: 104651
* Drop the SuperregHashTable. It is essentially the same as SubregHashTable.Jakob Stoklund Olesen2010-05-253-103/+6
| | | | llvm-svn: 104650
* First cut at supporting .debug_loc section. Devang Patel2010-05-254-87/+492
| | | | | | This is used to track variable information. llvm-svn: 104649
* Properly promote operands when optimizing a single-character memcmp.Benjamin Kramer2010-05-252-4/+19
| | | | llvm-svn: 104648
* Constify function.Bill Wendling2010-05-251-2/+2
| | | | llvm-svn: 104646
* Do one map lookup instead of two.Dan Gohman2010-05-251-2/+3
| | | | llvm-svn: 104645
* Fix a missing newline in debug output.Dan Gohman2010-05-251-1/+1
| | | | llvm-svn: 104644
* Move the verbose asm output up a bit so it can be used in the special casesEric Christopher2010-05-251-5/+6
| | | | | | as well. llvm-svn: 104642
* Okay, bear with me here...Bill Wendling2010-05-251-0/+41
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If you have a setjmp/longjmp situation, it's possible for stack slot coloring to reuse a stack slot before it's really dead. For instance, if we have something like this: 1: y = g; x = sigsetjmp(env, 0); switch (x) { case 1: /* ... */ goto run; case 0: run: do_run(); /* marked as "no return" */ break; case 3: if (...) { /* ... */ goto run; } /* ... */ break; } 2: g = y; "y" may be put onto the stack, so the expression "g = y" is relying upon the fact that the stack slot containing "y" isn't modified between (1) and (2). But it can be, because of the "no return" calls in there. A longjmp might come back with 3, modify the stack slot, and then go to case 0. And it's perfectly acceptable to reuse the stack slot there because there's no CFG flow from case 3 to (2). The fix is to disable certain optimizations in these situations. Ideally, we'd disable them for all "returns twice" functions. But we don't support that attribute. Check for "setjmp" and "sigsetjmp" instead. llvm-svn: 104640
* Only enable code patterns (e.g., try { statements } catch (...) {Douglas Gregor2010-05-2514-235/+298
| | | | | | statements }) in the code-completion results if explicitly requested. llvm-svn: 104637
* Add support for initialized global data for darwin tls. Update commentsEric Christopher2010-05-253-94/+144
| | | | | | and testcases accordingly. llvm-svn: 104635
* Changed the encoding of X86 floating point stack operations where both operandsKevin Enderby2010-05-252-0/+36
| | | | | | | | | | | | | | | | | | | | | | | | are st(0). These can be encoded using an opcode for storing in st(0) or using an opcode for storing in st(i), where i can also be 0. To allow testing with the darwin assembler and get a matching binary the opcode for storing in st(0) is now used. To do this the same logical trick is use from the darwin assembler in converting things like this: fmul %st(0), %st into this: fmul %st(0) by looking for the second operand being X86::ST0 for specific floating point mnemonics then removing the second X86::ST0 operand. This also has the add benefit to allow things like: fmul %st(1), %st that llvm-mc did not assemble. llvm-svn: 104634
* Allocate the contents of TemplateArgumentList using ASTContext's allocator. ↵Ted Kremenek2010-05-252-5/+14
| | | | | | | | | | | This fixes a massive memory leak when using a BumpPtrAllocator in ASTContext. Added a FIXME, as the Destroy method for TemplateArgumentList isn't getting called. This means we will instead leak when using the MallocAllocator. llvm-svn: 104633
* Removing test; Chris thinks it's better to have theDale Johannesen2010-05-251-2718/+0
| | | | | | bug go untested than have a testcase this large. So be it. llvm-svn: 104632
* Add Redeclarable boilerplate to TypedefDecl, from Peter Collingbourne!Douglas Gregor2010-05-251-0/+12
| | | | llvm-svn: 104631
* IRgen: Add a stub class for generating ABI-specific C++ code.Charles Davis2010-05-256-4/+110
| | | | | | | | This class only supports name mangling (which is apparently used during C/ObjC codegen). For now only the Itanium C++ ABI is supported. Patches to add a second C++ ABI are forthcoming. llvm-svn: 104630
* Separate unrelated cases that once shared a numeric valueJakob Stoklund Olesen2010-05-251-9/+12
| | | | llvm-svn: 104629
* Print symbolic SubRegIndex names on machine operands.Jakob Stoklund Olesen2010-05-254-4/+30
| | | | llvm-svn: 104628
* Remove NumberHack entirely.Jakob Stoklund Olesen2010-05-258-52/+45
| | | | | | | SubRegIndex instances are now numbered uniquely the same way Register instances are - in lexicographical order by name. llvm-svn: 104627
* MC/X86: Add a hack to allow recognizing 'cmpltps' and friends.Daniel Dunbar2010-05-252-1/+70
| | | | llvm-svn: 104626
* Fix another variant of PR 7191. Also add a testcaseDale Johannesen2010-05-252-1/+2723
| | | | | | | | Mon Ping provided; unfortunately bugpoint failed to reduce it, but I think it's important to have a test for this in the suite. 8023512. llvm-svn: 104624
* Driver/Frontend: Add -emit-codegen-only, for running irgen + codegen but not theDaniel Dunbar2010-05-256-1/+21
| | | | | | .s printer or .o writer. llvm-svn: 104623
* MC/X86: Define explicit immediate forms of cmp{ss,sd,ps,pd}.Daniel Dunbar2010-05-252-0/+67
| | | | llvm-svn: 104622
* The BT64ri8 record in X86Instr64bit.td was missing a REX_W which is requiredKevin Enderby2010-05-252-1/+7
| | | | | | for the 64-bit version of the Bit Test instruction. llvm-svn: 104621
* make -ast-dump print something like this for declstmts:Chris Lattner2010-05-251-1/+1
| | | | | | | | | | | | (DeclStmt 0x3405550 <line:3:4, col:11> 0x34053a0 "int x") instead of: (DeclStmt 0x3405550 <line:3:4, col:11> 0x34053a0 "int x" which has unbalanced parens (PR7228) llvm-svn: 104620
* Fix PR 7191. I have been unable to create a .ll file that fails, sorry.Dale Johannesen2010-05-251-2/+10
| | | | | | | (oye, a word which should be better known to people writing tree traversals, means grandchild.) llvm-svn: 104619
* Fix testsuite for blocks mangling changeDouglas Gregor2010-05-253-2/+52
| | | | llvm-svn: 104618
* Make sure aeskeygenassist uses an unsigned immediate field.Eric Christopher2010-05-253-37/+41
| | | | | | Fixes rdar://8017638 llvm-svn: 104617
* For compiling on FreeBSDHoward Hinnant2010-05-251-0/+1
| | | | llvm-svn: 104616
* Ignore NumberHack and give each SubRegIndex instance a unique enum value ↵Jakob Stoklund Olesen2010-05-253-6/+9
| | | | | | | | | | | instead. This passes lit tests, but I'll give it a go through the buildbots to smoke out any remaining places that depend on the old SubRegIndex numbering. Then I'll remove NumberHack entirely. llvm-svn: 104615
* Refactoring of block-pointer type rewrite.Fariborz Jahanian2010-05-251-37/+25
| | | | llvm-svn: 104614
* Fix compilation failureDouglas Gregor2010-05-251-2/+2
| | | | llvm-svn: 104613
* Use enums instead of literals for SystemZ subregistersJakob Stoklund Olesen2010-05-251-11/+11
| | | | llvm-svn: 104612
* Use enums instead of literals for X86 subregisters.Jakob Stoklund Olesen2010-05-252-11/+10
| | | | | | | The cases in getMatchingSuperRegClass cannot be broken up until the enums have unique values. llvm-svn: 104611
* Improve name mangling for blocks and support mangling of static localDouglas Gregor2010-05-256-5/+67
| | | | | | | | | variables within blocks. We loosely follow GCC's mangling, but since these are always internal symbols the names don't really matter. I intend to revisit block mangling later, because GCC's mangling is rather verbose. <rdar://problem/8015719>. llvm-svn: 104610
* Patch to rewrite block pointers as arguments toFariborz Jahanian2010-05-252-2/+90
| | | | | | methods. (Radar 7987817). llvm-svn: 104608
* Make sure to strip off top-level cv-qualifiers as part of aDouglas Gregor2010-05-252-1/+17
| | | | | | derived-to-base conversion on a pointer. Fixes PR7224. llvm-svn: 104607
* Put -Wvla into the -Wgnu warning groupDouglas Gregor2010-05-251-1/+1
| | | | llvm-svn: 104606
* Add missing implementation to the materialization of VFP misc. instructions ↵Zonr Chang2010-05-251-0/+43
| | | | | | (vmrs, vmsr and vmov (immediate)) llvm-svn: 104588
* Add support to MOVimm32 using movt/movw for ARM JITZonr Chang2010-05-253-2/+113
| | | | llvm-svn: 104587
* Turn vertical spacing into horizontal spacing in code-completion resultsDouglas Gregor2010-05-251-1/+4
| | | | llvm-svn: 104586
* Improve code completion in failure cases in two ways:Douglas Gregor2010-05-2513-68/+121
| | | | | | | | | | | 1) Suppress diagnostics as soon as we form the code-completion token, so we don't get any error/warning spew from the early end-of-file. 2) If we consume a code-completion token when we weren't expecting one, go into a code-completion recovery path that produces the best results it can based on the context that the parser is in. llvm-svn: 104585
* CastSizeChecker checks when casting a malloc'ed symbolic region to type T,Zhongxing Xu2010-05-257-16/+122
| | | | | | | whether the size of the symbolic region is a multiple of the size of T. Fixes PR6123 and PR7217. llvm-svn: 104584
* Allow t2MOVsrl_flag and t2MOVsra_flag instructions to be predicated.Bob Wilson2010-05-251-6/+6
| | | | | | | I don't know of any particular reason why that would be important, but neither can I see any reason to disallow it. llvm-svn: 104583
* Fix up instruction classes for Thumb2 RSB instructions to be consistent withBob Wilson2010-05-251-15/+15
| | | | | | | Thumb2 ADD and SUB instructions: allow RSB instructions be changed to set the condition codes, and allow RSBS instructions to be predicated. llvm-svn: 104582
* If a function definition has any sort of weak linkage, its static localJohn McCall2010-05-256-12/+29
| | | | | | | | | | | | variables should have that linkage. Otherwise, its static local variables should have internal linkage. To avoid computing this excessively, set a function's linkage before we emit code for it. Previously we were assigning weak linkage to the static variables of static inline functions in C++, with predictably terrible results. This fixes that and also gives better linkage than 'weak' when merging is required. llvm-svn: 104581
OpenPOWER on IntegriCloud