summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Reapply 68847.Devang Patel2009-04-137-7/+190
| | | | | | Now debug_inlined section is covered by TAI->doesDwarfUsesInlineInfoSection(), which is false by default. llvm-svn: 68964
* Include the SourceManager's line table in the PCH file. We can nowDouglas Gregor2009-04-139-14/+159
| | | | | | properly cope with #line directives in PCH files. llvm-svn: 68963
* Implement x86 h-register extract support.Dan Gohman2009-04-1312-100/+540
| | | | | | | | | | | | | | | | | | | | | | | | - Add patterns for h-register extract, which avoids a shift and mask, and in some cases a temporary register. - Add address-mode matching for turning (X>>(8-n))&(255<<n), where n is a valid address-mode scale value, into an h-register extract and a scaled-offset address. - Replace X86's MOV32to32_ and related instructions with the new target-independent COPY_TO_SUBREG instruction. On x86-64 there are complicated constraints on h registers, and CodeGen doesn't currently provide a high-level way to express all of them, so they are handled with a bunch of special code. This code currently only supports extracts where the result is used by a zero-extend or a store, though these are fairly common. These transformations are not always beneficial; since there are only 4 h registers, they sometimes require extra move instructions, and this sometimes increases register pressure because it can force out values that would otherwise be in one of those registers. However, this appears to be relatively uncommon. llvm-svn: 68962
* Add a new TargetInstrInfo MachineInstr opcode, COPY_TO_SUBCLASS.Dan Gohman2009-04-1311-93/+337
| | | | | | | | | | | | | | | | This will be used to replace things like X86's MOV32to32_. Enhance ScheduleDAGSDNodesEmit to be more flexible and robust in the presense of subregister superclasses and subclasses. It can now cope with the definition of a virtual register being in a subclass of a use. Re-introduce the code for recording register superreg classes and subreg classes. This is needed because when subreg extracts and inserts get coalesced away, the virtual registers are left in the correct subclass. llvm-svn: 68961
* Factor the internals of SourceManager (specially, LineTableInfo) into a ↵Douglas Gregor2009-04-132-96/+121
| | | | | | separate Internals header. No functionality change llvm-svn: 68960
* Remove x86's special-case handling for ISD::TRUNCATE andDan Gohman2009-04-131-85/+0
| | | | | | | | ISD::SIGN_EXTEND_INREG. Tablegen-generated code can handle these cases, and the scheduling issues observed earlier appear to be resolved now. llvm-svn: 68959
* Fix copy+pastos in comments.Dan Gohman2009-04-131-2/+2
| | | | llvm-svn: 68958
* Generalize getRegisterClassForRegister to handle registersDan Gohman2009-04-131-4/+40
| | | | | | | | in multiple classes in the case that the classes are all in subset/superset relations. This function is used by the fast-isel emitter, which always wants the super-most set. llvm-svn: 68957
* Don't abort on an aliasing physical register that does not haveDan Gohman2009-04-131-1/+1
| | | | | | a live interval. This is needed for some upcoming subreg changes. llvm-svn: 68956
* When assigning a physical register to a MachineOperand, setDan Gohman2009-04-131-1/+10
| | | | | | | | | the subreg field to 0, since the subreg field is only used for virtual register subregs. This doesn't change current functionality; it just eliminates bogus noise from debug output. llvm-svn: 68955
* List the l registers before h registers, for consistency.Dan Gohman2009-04-131-4/+4
| | | | llvm-svn: 68954
* Add an assertion to verify that a copy was actually emitted.Dan Gohman2009-04-131-1/+2
| | | | llvm-svn: 68953
* Make the selection of type declarations in Sema::getTypeNameDouglas Gregor2009-04-132-7/+6
| | | | | | | deterministic when faced with an ambiguity. This eliminates the annoying test/SemaCXX/using-directive.cpp failure. llvm-svn: 68952
* Use X86::SUBREG_8BIT instead of hard-coding the equivalent constant.Dan Gohman2009-04-131-3/+3
| | | | llvm-svn: 68951
* Add a comment about MOVSX64rr8.Dan Gohman2009-04-131-0/+4
| | | | llvm-svn: 68950
* Add comments to INSERT_SUBREG, EXTRACT_SURBEG, SUBREG_TO_REG,Dan Gohman2009-04-131-0/+20
| | | | | | and IMPLICIT_DEF. llvm-svn: 68949
* Fix another hard-coded constant to use X86AddrNumOperands.Dan Gohman2009-04-131-1/+1
| | | | | | This unbreaks the JIT on x86-64. llvm-svn: 68948
* X86-64 TLS support for local exec and initial exec.Rafael Espindola2009-04-1318-10/+63
| | | | llvm-svn: 68947
* While passing arg of types larger than char only one byte at lower end was ↵Sanjiv Gupta2009-04-131-1/+1
| | | | | | getting passed. We couldn't catch this as we did not have tests that were passing an int value larger than 256. llvm-svn: 68946
* Fix ocaml bindings; add "available_externally" linkage type.Nick Lewycky2009-04-132-0/+2
| | | | llvm-svn: 68945
* Fix warning in .ll parser, detect and reject available_externally on functionNick Lewycky2009-04-131-0/+1
| | | | | | declarations. llvm-svn: 68944
* the driver caught up. This makes -msse3 correctly set __SSE3__ etc.Chris Lattner2009-04-131-3/+1
| | | | llvm-svn: 68943
* add AvailableExternally linkage to C bindings.Chris Lattner2009-04-131-0/+1
| | | | llvm-svn: 68942
* fix rdar://6774906, a crash handling implicit conversions between pointersChris Lattner2009-04-132-6/+12
| | | | | | in different address spaces. llvm-svn: 68941
* Add a new "available_externally" linkage type. This is intendedChris Lattner2009-04-1319-29/+120
| | | | | | | | to support C99 inline, GNU extern inline, etc. Related bugzilla's include PR3517, PR3100, & PR2933. Nothing uses this yet, but it appears to work. llvm-svn: 68940
* eliminate unneeded parens.Chris Lattner2009-04-131-2/+2
| | | | llvm-svn: 68939
* Regenerate.Nick Lewycky2009-04-132-44/+64
| | | | llvm-svn: 68938
* Link against libffi if available, fall back to "no external calls fromNick Lewycky2009-04-133-17/+13
| | | | | | interpreter mode" when it's not. llvm-svn: 68937
* Enable debug info generation while optimizing.Devang Patel2009-04-131-6/+0
| | | | llvm-svn: 68936
* mention the non-standard builtin macros we support.Chris Lattner2009-04-131-0/+7
| | | | llvm-svn: 68935
* Add paragraph tags.Nick Lewycky2009-04-131-2/+2
| | | | llvm-svn: 68934
* implement the microsoft/gnu "__COUNTER__" macro: rdar://4329310Chris Lattner2009-04-1310-8/+63
| | | | llvm-svn: 68933
* Improve error recovery for calls, fixing:Chris Lattner2009-04-132-4/+16
| | | | | | PR3972: Poor diagnostic with missing ')' llvm-svn: 68932
* fix PR3932: [ObjC]Type defined as 'id' is not recognized as a valid object type.Chris Lattner2009-04-122-12/+27
| | | | | | by making ASTContext::isObjCObjectPointerType accept typedefs of id. llvm-svn: 68931
* rename testChris Lattner2009-04-121-0/+0
| | | | llvm-svn: 68930
* fix PR3965:SIGINT handler not restored after calling ParseAST(),Chris Lattner2009-04-121-1/+2
| | | | | | patch by Alexei Svitkine! llvm-svn: 68929
* add some more coverage.Chris Lattner2009-04-121-1/+6
| | | | llvm-svn: 68928
* clean up test.Chris Lattner2009-04-121-2/+1
| | | | llvm-svn: 68927
* rename testChris Lattner2009-04-121-0/+0
| | | | llvm-svn: 68926
* if we already know that a decl is invalid in an @catch, don't verify its type.Chris Lattner2009-04-122-3/+6
| | | | llvm-svn: 68925
* In X86DAGToDAGISel::MatchWrapper, if base or index are set, avoid matchingRafael Espindola2009-04-123-7/+25
| | | | | | only if symbolic addresses are RIP relatives. llvm-svn: 68924
* fix some out of date comments pointed out by SebastianChris Lattner2009-04-122-4/+2
| | | | llvm-svn: 68923
* Use a hashtable for TargetRegisterClass::contains.Owen Anderson2009-04-121-4/+7
| | | | llvm-svn: 68922
* fix a comment typo Sebastian noticed.Chris Lattner2009-04-121-1/+1
| | | | llvm-svn: 68921
* add support for handling C++'0x unified initializer syntaxChris Lattner2009-04-121-2/+2
| | | | | | to isValidAfterIdentifierInDeclarator, as suggested by Sebastian. llvm-svn: 68920
* Fix some C++ error recovery problems in init declarator parsingChris Lattner2009-04-123-7/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | that I noticed working on other things. Instead of emitting: t2.cc:1:8: error: use of undeclared identifier 'g' int x(*g); ^ t2.cc:1:10: error: expected ')' int x(*g); ^ t2.cc:1:6: note: to match this '(' int x(*g); ^ We now only emit: t2.cc:1:7: warning: type specifier missing, defaults to 'int' int x(*g); ^ Note that the example in SemaCXX/nested-name-spec.cpp:f4 is still not great, we now produce both of: void f4(undef::C); // expected-error {{use of undeclared identifier 'undef'}} \ expected-error {{variable has incomplete type 'void'}} The second diagnostic should be silenced by something getting marked invalid. I don't plan to fix this though. llvm-svn: 68919
* fix another case that assumed that GetTypeForDeclarator would never return null.Chris Lattner2009-04-122-5/+5
| | | | llvm-svn: 68918
* mark the declspec as invalid when we recover instead of forcing to int,Chris Lattner2009-04-122-5/+7
| | | | | | this allows downstream diags to be properly silenced. llvm-svn: 68917
* fix code that incorrectly assumed that GetTypeForDeclarator cannotChris Lattner2009-04-121-2/+4
| | | | | | return null. llvm-svn: 68916
* refactor some code into X86DAGToDAGISel::MatchWrapperRafael Espindola2009-04-121-44/+51
| | | | llvm-svn: 68915
OpenPOWER on IntegriCloud