llvm-6502/include/llvm
Chris Lattner f768bba43f Allow the live interval analysis pass to be a bit more aggressive about
numbering values in live ranges for physical registers.

The alpha backend currently generates code that looks like this:

  vreg = preg
...
  preg = vreg
  use preg
...
  preg = vreg
  use preg

etc.  Because vreg contains the value of preg coming in, each of the
copies back into preg contain that initial value as well.

In the case of the Alpha, this allows this testcase:

void "foo"(int %blah) {
        store int 5, int *%MyVar
        store int 12, int* %MyVar2
        ret void
}

to compile to:

foo:
        ldgp $29, 0($27)
        ldiq $0,5
        stl $0,MyVar
        ldiq $0,12
        stl $0,MyVar2
        ret $31,($26),1

instead of:

foo:
        ldgp $29, 0($27)
        bis $29,$29,$0
        ldiq $1,5
        bis $0,$0,$29
        stl $1,MyVar
        ldiq $1,12
        bis $0,$0,$29
        stl $1,MyVar2
        ret $31,($26),1

This does not seem to have any noticable effect on X86 code.

This fixes PR535.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20536 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-09 23:05:19 +00:00
..
ADT remove some more dead templates and a dead macro. 2005-02-22 23:36:37 +00:00
Analysis export two methods 2005-03-09 05:34:23 +00:00
Assembly Add llvm-as project to Visual Studio 2005-01-01 20:51:41 +00:00
Bytecode Implement an isBytecodeArchive method to determine if an archive contains 2005-02-26 22:00:32 +00:00
CodeGen Allow the live interval analysis pass to be a bit more aggressive about 2005-03-09 23:05:19 +00:00
Config Change __MINGW to __MINGW32__. Patch submitted by Henrik Bach. 2005-02-19 03:01:13 +00:00
Debugger For PR351: \ 2004-12-13 17:01:53 +00:00
ExecutionEngine Add a convenience function for clearing the two global areas. 2004-12-13 16:22:32 +00:00
Support Use static_cast and #include Instructions.h 2005-03-09 05:35:16 +00:00
System Do not clean up if the MappedFile was never used or if the client already 2005-01-28 16:08:23 +00:00
Target Add a new method, described in the comment. 2005-01-19 06:53:02 +00:00
Transforms Add support for not strength reducing GEPs where the element size is a small 2005-03-04 04:04:26 +00:00
AbstractTypeUser.h Convert 'struct' to 'class' in various places to adhere to the coding standards 2004-10-27 16:14:51 +00:00
Argument.h remove all of the various setName implementations, consolidating them into 2005-03-05 19:51:50 +00:00
BasicBlock.h remove all of the various setName implementations, consolidating them into 2005-03-05 19:51:50 +00:00
CallGraphSCCPass.h 'Pass' should now not be derived from by clients. Instead, they should derive 2004-09-20 04:48:05 +00:00
Constant.h remove all of the various setName implementations, consolidating them into 2005-03-05 19:51:50 +00:00
Constants.h Eliminate the explicit opcode field in ConstantExpr, using the SubclassData 2005-02-05 02:00:12 +00:00
DerivedTypes.h Fix VC++ compilation error 2005-01-08 22:44:06 +00:00
Function.h remove all of the various setName implementations, consolidating them into 2005-03-05 19:51:50 +00:00
GlobalValue.h Adjust to changes in the User class. 2005-01-29 00:33:00 +00:00
GlobalVariable.h remove all of the various setName implementations, consolidating them into 2005-03-05 19:51:50 +00:00
InstrTypes.h Adjust to changes in the User class. Introduce a new UnaryInstruction 2005-01-29 00:32:51 +00:00
Instruction.def Add new unreachable instruction 2004-10-16 18:05:37 +00:00
Instruction.h Fix problems compiling with G++ 4.x.x with -pedantic. Thanks to 2005-03-07 20:35:45 +00:00
Instructions.h switch instructions only allow constantints for their values, be more specific. 2005-02-24 05:32:09 +00:00
IntrinsicInst.h Fix bountiful sources of VC++ 'possible loss of data' warnings 2005-01-01 18:58:23 +00:00
Intrinsics.h Add a prefetch intrinsic, patch contributed by Justin Wick! 2005-02-28 19:25:57 +00:00
Linker.h Completely rewrite the interface to be class based 2004-12-13 02:58:05 +00:00
Module.h Do not replace ostream << Module*, only ostream << Module&. 2005-02-13 19:15:01 +00:00
ModuleProvider.h Add comments 2004-02-01 00:32:48 +00:00
Pass.h For PR387:\ 2004-12-07 08:11:11 +00:00
PassAnalysisSupport.h Add AnalysisUsage::addRequiredTransitive() to keep analysis info alive for 2004-03-12 06:13:15 +00:00
PassManager.h 'Pass' should now not be derived from by clients. Instead, they should derive 2004-09-20 04:48:05 +00:00
PassSupport.h Fix more warnings 2004-06-04 20:39:05 +00:00
SymbolTable.h move some method declarations around to make it clear that users should 2005-03-06 06:03:44 +00:00
SymbolTableListTraits.h Put all LLVM code into the llvm namespace, as per bug 109. 2003-11-11 22:41:34 +00:00
Type.def Packed types, brought to you by Brad Jones 2004-08-20 06:00:58 +00:00
Type.h Fix problems compiling with G++ 4.x.x with -pedantic. Thanks to 2005-03-07 20:35:45 +00:00
Use.h Switch from using an ilist for uses to using a custom doubly linked list. 2005-02-01 01:22:06 +00:00
User.h Fix spelling, patch contributed by Gabor Greif 2005-02-27 06:15:51 +00:00
Value.h Add a new method, allow symtab to poke name. 2005-03-06 02:10:40 +00:00