Commit Graph

822 Commits

Author SHA1 Message Date
Vikram S. Adve
8e22ead3b4 Don't try to compute the size of an "array" element if the index is 0:
the size may be unknown, and is not needed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4153 91177308-0d34-0410-b5e6-96231b3b80d8
2002-10-13 21:47:44 +00:00
Chris Lattner
0b16ae209a - Rename Instruction::First*Op to *OpsBegin, and Num*Ops to *OpsEnd to
reflect the fact that it's a range being defined.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4147 91177308-0d34-0410-b5e6-96231b3b80d8
2002-10-13 19:39:16 +00:00
Vikram S. Adve
1632e882f1 Use vectors instead of hash_maps for issueGaps and conflictLists.
These hash lookups were a major sink of time because they happen so often!
Also, add option to disable scheduling.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4138 91177308-0d34-0410-b5e6-96231b3b80d8
2002-10-13 00:40:37 +00:00
Vikram S. Adve
acf0f704f9 Major bug fix: was not adding CD edges for RETURNs!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4137 91177308-0d34-0410-b5e6-96231b3b80d8
2002-10-13 00:39:22 +00:00
Vikram S. Adve
5aefcad35b Use vectors instead of hash_maps for issueGaps and conflictLists.
These hash lookups were a major sink of time because they happen so often!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4136 91177308-0d34-0410-b5e6-96231b3b80d8
2002-10-13 00:37:46 +00:00
Vikram S. Adve
516b26fd86 Run LICM before GCSE!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4135 91177308-0d34-0410-b5e6-96231b3b80d8
2002-10-13 00:34:10 +00:00
Vikram S. Adve
fee76265ff Several major fixes, particularly in emitting constant aggregates:
(1) Padding bytes between structure fields (for alignment) were never
    being emitted into the constant pool so the layout did not match!
(2) In printing constants, structures containing structures or arrays
    were never handled.
(3) Support new model for external/uninitialized/initialized globals.
    Uninitialized globals are no longer emitted since they are external.
    Initialized globals may go either in .bss or in .data.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4134 91177308-0d34-0410-b5e6-96231b3b80d8
2002-10-13 00:32:18 +00:00
Vikram S. Adve
42e90cf4be Don't use %l0 for large operands to a SAVE since it is needed *before* SAVE!
We now use %g1 instead since that is shared and volatile.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4133 91177308-0d34-0410-b5e6-96231b3b80d8
2002-10-13 00:24:06 +00:00
Vikram S. Adve
e0048667dd Don't mark JMPLCALL and JMPLRET as branches.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4132 91177308-0d34-0410-b5e6-96231b3b80d8
2002-10-13 00:22:32 +00:00
Vikram S. Adve
d3e26482ff (1) Try to evaluate constant when multiplying 2 constants.
(2) Use intelligent multiply selection code for array allocas.
(3) Don't use cache padding for alloca'd stack slots!
(4) Bug fix in handling call arguments: was not copying sixth FP arg
    to int reg. when calling a function with no prototype.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4130 91177308-0d34-0410-b5e6-96231b3b80d8
2002-10-13 00:18:57 +00:00
Vikram S. Adve
04ef49985b Eliminate duplicate target pointer in SparcRegInfo.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4129 91177308-0d34-0410-b5e6-96231b3b80d8
2002-10-13 00:06:04 +00:00
Vikram S. Adve
c654c784f6 Eliminate duplicate target pointer. Also add a few assertions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4128 91177308-0d34-0410-b5e6-96231b3b80d8
2002-10-13 00:05:30 +00:00
Vikram S. Adve
893cace8e2 Make sure to handle small negative values hiding as large unsigned longs --
this is a common case created by the front-end.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4127 91177308-0d34-0410-b5e6-96231b3b80d8
2002-10-13 00:04:26 +00:00
Vikram S. Adve
d0451a9233 Major fix: extract ConstantExpr nodes and decompose them into symbolic
instructions so that (a) constant folding is done automatically before
code generation, and (b) selection does not have to deal with them.
Also, check for ConstantPointerRefs in additional to GlobalValues
when creating a GEP to load a global address.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4126 91177308-0d34-0410-b5e6-96231b3b80d8
2002-10-13 00:01:57 +00:00
Nick Hildenbrandt
98360a1752 Instead of adding stdlib we just prototype malloc correctly.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4118 91177308-0d34-0410-b5e6-96231b3b80d8
2002-10-11 21:40:44 +00:00
Nick Hildenbrandt
c7140e9bd9 Sun requires you to include stdlib to use malloc
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4117 91177308-0d34-0410-b5e6-96231b3b80d8
2002-10-11 18:41:44 +00:00
Vikram S. Adve
cb202e3de5 Major bug fix: spill code for an instruction in a delay slot was
merrily being inserted before/after the instruction!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4116 91177308-0d34-0410-b5e6-96231b3b80d8
2002-10-11 16:12:40 +00:00
Vikram S. Adve
2a408f06b5 Bug fix: In preventing static global variables from being printed twice,
I also prevented external globals from being printed twice, but they
should (extern declaration and definition).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4043 91177308-0d34-0410-b5e6-96231b3b80d8
2002-10-05 23:43:10 +00:00
Nick Hildenbrandt
d2eb386c16 Add parens around constant calls to getelemptr to properly associate the reference
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4032 91177308-0d34-0410-b5e6-96231b3b80d8
2002-10-03 20:47:24 +00:00
Nick Hildenbrandt
ca626922bc I was wrong on the removing of those references on the last commit.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4023 91177308-0d34-0410-b5e6-96231b3b80d8
2002-10-02 21:14:33 +00:00
Nick Hildenbrandt
51c84d14ab Removed unneeded reference and dereferences.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4016 91177308-0d34-0410-b5e6-96231b3b80d8
2002-10-02 18:34:51 +00:00
Nick Hildenbrandt
275801b2dd Cleaned up my last check-in.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4014 91177308-0d34-0410-b5e6-96231b3b80d8
2002-10-02 18:32:35 +00:00
Nick Hildenbrandt
113ad893b9 No longer include malloc.h. If protoypes are needed for memory functions they will be present in the byte code and the generated c as well.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4013 91177308-0d34-0410-b5e6-96231b3b80d8
2002-10-02 18:20:18 +00:00
Nick Hildenbrandt
c3dd2af428 Fixed to properly escape quotes in strings.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3991 91177308-0d34-0410-b5e6-96231b3b80d8
2002-09-30 21:11:55 +00:00
Vikram S. Adve
aebdbe6988 Bug fix in folding getElementPtr instructions: don't fold one into
a predecessor if it has a non-zero first index and the predecessor
ends with a struct index.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3982 91177308-0d34-0410-b5e6-96231b3b80d8
2002-09-29 22:55:05 +00:00
Vikram S. Adve
1c397aae8e Added a couple of helper methods for live range construction.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3970 91177308-0d34-0410-b5e6-96231b3b80d8
2002-09-28 17:05:43 +00:00
Vikram S. Adve
9d67cd1468 Live ranges for Return value and return address of a Call are now
created here, simply by handling all implicit operands (which should
have been done anyway).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3969 91177308-0d34-0410-b5e6-96231b3b80d8
2002-09-28 17:05:22 +00:00
Vikram S. Adve
f425884e27 Fixed method getReturnValue(): it should return NULL if the
callee does not return a value.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3968 91177308-0d34-0410-b5e6-96231b3b80d8
2002-09-28 17:03:54 +00:00
Vikram S. Adve
ad9c978874 Fixed incorrect assertion: spill code for function ptr should be
handled like normal operands, not like other call arguments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3967 91177308-0d34-0410-b5e6-96231b3b80d8
2002-09-28 17:02:40 +00:00
Vikram S. Adve
ac67006bed Return address register should be marked as "result" for the JMPL instruction
since it is defined by the instruction.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3966 91177308-0d34-0410-b5e6-96231b3b80d8
2002-09-28 17:00:15 +00:00
Vikram S. Adve
87817653fe Live ranges for Return value and return address of a Call are no longer
created here.  Instead they are created in LiveRangeInfo.cpp.  This
simplifies the code here quite a bit.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3965 91177308-0d34-0410-b5e6-96231b3b80d8
2002-09-28 16:59:05 +00:00
Vikram S. Adve
106604ea6d Simplified code that handles call args and rets, so it no longer
needs the RegClass list to be passed in.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3964 91177308-0d34-0410-b5e6-96231b3b80d8
2002-09-28 16:56:59 +00:00
Vikram S. Adve
4a8bb2bf23 Simplify Call translation slightly.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3963 91177308-0d34-0410-b5e6-96231b3b80d8
2002-09-28 16:55:41 +00:00
Vikram S. Adve
94c408104a Overhaul integer conversions to match C++ ISO standard.
Don't allow direct FP-to-uint conversion (must be eliminated by preselection).
Address arithmetic for arrays is now entirely 64-bit so no sign-ext needed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3961 91177308-0d34-0410-b5e6-96231b3b80d8
2002-09-27 14:33:08 +00:00
Vikram S. Adve
5cededee92 Modify operand order for Create{Sign,Zero}ExtensionInstructions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3960 91177308-0d34-0410-b5e6-96231b3b80d8
2002-09-27 14:29:45 +00:00
Vikram S. Adve
7e5167a3e2 Bug fix: some redundant copies were not being deleted after detection :-|.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3959 91177308-0d34-0410-b5e6-96231b3b80d8
2002-09-27 14:27:37 +00:00
Vikram S. Adve
1c10f17552 Sign-extend integer constants from original type size to 64 bits!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3958 91177308-0d34-0410-b5e6-96231b3b80d8
2002-09-27 14:26:20 +00:00
Vikram S. Adve
e9cb735131 Decompose FP-to-UInt casts into FP-to-ULong-toUInt.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3957 91177308-0d34-0410-b5e6-96231b3b80d8
2002-09-27 14:24:45 +00:00
Chris Lattner
aa31ad016a Convert TargetData to be an ImmutablePass
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3927 91177308-0d34-0410-b5e6-96231b3b80d8
2002-09-25 23:46:55 +00:00
Nick Hildenbrandt
e548f009f7 Strings now handled correctly.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3920 91177308-0d34-0410-b5e6-96231b3b80d8
2002-09-25 20:29:26 +00:00
Nick Hildenbrandt
c14ded4858 Parenthesis are now added to casts of type array.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3892 91177308-0d34-0410-b5e6-96231b3b80d8
2002-09-23 21:02:50 +00:00
Vikram S. Adve
1b5710a8fc Put intermediate source files in a subdirectory here instead of with
object files.  Also,


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3884 91177308-0d34-0410-b5e6-96231b3b80d8
2002-09-23 13:12:28 +00:00
Vikram S. Adve
c308aefe92 Disable reassociation pass in LLC until it is fixed.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3883 91177308-0d34-0410-b5e6-96231b3b80d8
2002-09-23 12:55:50 +00:00
Anand Shukla
c078930ee3 Changed codegen to add 2 empty slots at the top of stack using StackSlots pass
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3873 91177308-0d34-0410-b5e6-96231b3b80d8
2002-09-21 05:01:21 +00:00
Anand Shukla
33db9bae15 Initial version: it adds 2 empty slots at the top of stack
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3872 91177308-0d34-0410-b5e6-96231b3b80d8
2002-09-21 04:58:26 +00:00
Chris Lattner
d1cf1b458a Fix cwriter to not output FP constants in ascii, output them in hex instead.
This fixes a number of FP precision problems, making the output of the
power benchmark closer to the right answer.

Unfortunately, this only addresses FP constants used directly in functions.
Constants referred to by global constants (such as an array of FP values)
aren't helped by this.  Until this happens power won't work.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3871 91177308-0d34-0410-b5e6-96231b3b80d8
2002-09-20 23:26:33 +00:00
Chris Lattner
1f8c4a17c1 Fix bug: 2002-09-20-VarArgPrototypes.ll
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3870 91177308-0d34-0410-b5e6-96231b3b80d8
2002-09-20 22:32:30 +00:00
Chris Lattner
270d78a8d6 Fix output of typedefs to avoid syntax errors.
* We now can correctly Cify the Olden-power benchmark


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3860 91177308-0d34-0410-b5e6-96231b3b80d8
2002-09-20 15:20:24 +00:00
Chris Lattner
58d04d4e35 * Add a couple of comments to the output c code
* _FIX_ infinite recursion problem, due to typedefs of a structure being
  printed before the structure.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3859 91177308-0d34-0410-b5e6-96231b3b80d8
2002-09-20 15:18:30 +00:00
Chris Lattner
2db41cd5de Another change that doesn't affect functionality. Since we are only looking
at types in the symbol table, only traverse the type plane, saving a loop nest.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3858 91177308-0d34-0410-b5e6-96231b3b80d8
2002-09-20 15:12:13 +00:00
Chris Lattner
2c601a7be1 Make the StructPrinted set only take memory when it's being used.
rename parseStruct to printContainedStructs


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3857 91177308-0d34-0410-b5e6-96231b3b80d8
2002-09-20 15:05:40 +00:00
Chris Lattner
a4c047ec27 No functionality changes, primarily just changing tab indentation to space
indentation


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3856 91177308-0d34-0410-b5e6-96231b3b80d8
2002-09-20 14:56:54 +00:00
Vikram S. Adve
0efb50761d Add method IGNode::getCombinedDegree to count the sum of the degrees
of two nodes, excluding duplicates.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3848 91177308-0d34-0410-b5e6-96231b3b80d8
2002-09-20 00:55:04 +00:00
Vikram S. Adve
e5b2565a02 Add peephole optimization pass at the end of code generation.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3846 91177308-0d34-0410-b5e6-96231b3b80d8
2002-09-20 00:52:43 +00:00
Vikram S. Adve
d55697cf13 Added class MachineOptInfo as interface to target-specific
routines supporting machine code optimization.
Also added method MachineInstrInfo::getNOPOpCode().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3845 91177308-0d34-0410-b5e6-96231b3b80d8
2002-09-20 00:52:09 +00:00
Vikram S. Adve
32f81a3469 Allow copy coalescing in more cases: if sum of node degrees is more than
than #available regs, compute the sum excluding duplicates and if that
is less than #regs, go ahead and coalesce.
Add method IGNode::getCombinedDegree to count excluding duplicates.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3842 91177308-0d34-0410-b5e6-96231b3b80d8
2002-09-20 00:45:47 +00:00
Vikram S. Adve
25d80cdcc6 Peephole optimization pass on final machine code.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3840 91177308-0d34-0410-b5e6-96231b3b80d8
2002-09-20 00:42:11 +00:00
Vikram S. Adve
abf055c698 Moving these files from Code/PreSelection to here.
Original logs for PreSelection.cpp:

  revision 1.2
  date: 2002/09/17 23:50:32;  author: lattner;  state: Exp;  lines: +1 -3
  Don't put default parameter values into .cpp files, it breaks 3.x compilers

  revision 1.1
  date: 2002/09/16 15:31:13;  author: vadve;  state: Exp;
  New preselection pass that specializes LLVM code for a target machine,
  while remaining in legal portable LLVM form and preserving type
  information and type safety.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3838 91177308-0d34-0410-b5e6-96231b3b80d8
2002-09-20 00:29:28 +00:00
Anand Shukla
b379470b90 Removed debug info printing
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3778 91177308-0d34-0410-b5e6-96231b3b80d8
2002-09-17 20:24:46 +00:00
Chris Lattner
82f05d8610 Add support for GCC 2.96
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3777 91177308-0d34-0410-b5e6-96231b3b80d8
2002-09-17 17:23:09 +00:00
Vikram S. Adve
913bfbc2e4 Don't print global variable definitions twice! Sun's pathetic compiler
never complained about this.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3774 91177308-0d34-0410-b5e6-96231b3b80d8
2002-09-17 11:50:38 +00:00
Vikram S. Adve
e102a64beb Use ulong instead of uint for size expressions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3744 91177308-0d34-0410-b5e6-96231b3b80d8
2002-09-16 15:56:45 +00:00
Vikram S. Adve
4900116ab0 Add methods to query about the representation of LLVM quantities (e.g.,
constants).  Useful for target-dependent LLVM transformations like
Preselection.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3743 91177308-0d34-0410-b5e6-96231b3b80d8
2002-09-16 15:56:01 +00:00
Vikram S. Adve
13f1d71c80 Don't print out global names unnecesssarily. Also, expose pass
constructors so passes can be inserted by TargetMachine.cpp.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3742 91177308-0d34-0410-b5e6-96231b3b80d8
2002-09-16 15:54:02 +00:00
Vikram S. Adve
e1f7280bf8 Move all the code that creates code generation passes from Sparc.cpp to
TargetMachine.cpp, since it is entirely machine-independent.
Also, add options to disable optional back-end passes (preselection and
instr. scheduling).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3740 91177308-0d34-0410-b5e6-96231b3b80d8
2002-09-16 15:39:26 +00:00
Vikram S. Adve
fd0ec80197 Add a version of ChooseRegOrImmed to handle numerical constants
introduced by InstrSelection.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3735 91177308-0d34-0410-b5e6-96231b3b80d8
2002-09-16 15:15:57 +00:00
Vikram S. Adve
9d6f13f34b No longer need to sign-extend array indices to 64 bits since they
are now longs and not unsigned ints.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3731 91177308-0d34-0410-b5e6-96231b3b80d8
2002-09-15 21:51:04 +00:00
Vikram S. Adve
993243e599 Fix typos in previous checkin.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3726 91177308-0d34-0410-b5e6-96231b3b80d8
2002-09-15 15:33:48 +00:00
Chris Lattner
4bc2348008 RegAllocCommon no longer includes CommandLine.h so we have to include it
here.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3725 91177308-0d34-0410-b5e6-96231b3b80d8
2002-09-15 07:07:55 +00:00
Vikram S. Adve
39c94e105f Break RA_DEBUG option into several levels to get better control over
debug output.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3724 91177308-0d34-0410-b5e6-96231b3b80d8
2002-09-14 23:05:33 +00:00
Vikram S. Adve
521758fb79 Remove unnecessary include.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3723 91177308-0d34-0410-b5e6-96231b3b80d8
2002-09-14 23:04:52 +00:00
Vikram S. Adve
7e914a967d Break RA_DEBUG option into several levels to get better output.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3722 91177308-0d34-0410-b5e6-96231b3b80d8
2002-09-14 22:18:37 +00:00
Nick Hildenbrandt
67aa2e235d Fixed problem with printing struct definitions in the correct order.
This allows for the Regression/Transforms/ScalarReplacement/scalarize.c to run correctly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3721 91177308-0d34-0410-b5e6-96231b3b80d8
2002-09-14 21:36:24 +00:00
Vikram S. Adve
7c26898401 Moving to lib/CodeGen/RegAlloc.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3718 91177308-0d34-0410-b5e6-96231b3b80d8
2002-09-14 11:57:17 +00:00
Misha Brukman
3f93eeedbd Again, including Module makes Function unnecessary.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3714 91177308-0d34-0410-b5e6-96231b3b80d8
2002-09-14 02:07:43 +00:00
Chris Lattner
59afbf3999 Fix a bug introduced by the Getelementptr change
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3695 91177308-0d34-0410-b5e6-96231b3b80d8
2002-09-12 20:34:47 +00:00
Chris Lattner
597f81fea2 Fix a bug I introduced into the code generator. :(
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3694 91177308-0d34-0410-b5e6-96231b3b80d8
2002-09-12 20:27:10 +00:00
Chris Lattner
0374b8de2b - Change getelementptr instruction to use long indexes instead of uint
indexes for sequential types.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3683 91177308-0d34-0410-b5e6-96231b3b80d8
2002-09-11 01:21:35 +00:00
Chris Lattner
3cac88ac9e - Change getelementptr instruction to use long indexes instead of uint
indexes for sequential types.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3682 91177308-0d34-0410-b5e6-96231b3b80d8
2002-09-11 01:21:33 +00:00
Chris Lattner
106ff4551c - Change getelementptr instruction to use long indexes instead of uint
indexes for sequential types.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3681 91177308-0d34-0410-b5e6-96231b3b80d8
2002-09-11 01:21:29 +00:00
Vikram S. Adve
ec7f482d90 Silly bug fix: Machine code vector could be empty for a no-op cast instruction,
e.g., cast double to double.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3633 91177308-0d34-0410-b5e6-96231b3b80d8
2002-09-09 14:54:21 +00:00
Chris Lattner
823c4abb58 Make sure the leakdetector is told about temporary Phi nodes also, so it doesn't
erroneously report them as leaks


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3624 91177308-0d34-0410-b5e6-96231b3b80d8
2002-09-08 21:19:29 +00:00
Chris Lattner
a175ed4194 Inform the memory leak detector that TmpInstruction objects should not be
subject to memory leak checking.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3623 91177308-0d34-0410-b5e6-96231b3b80d8
2002-09-08 21:08:43 +00:00
Vikram S. Adve
f36f06bb60 Add new function UltraSparcInstrInfo::CreateZeroExtensionInstructions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3581 91177308-0d34-0410-b5e6-96231b3b80d8
2002-09-05 18:34:31 +00:00
Vikram S. Adve
84c0fcbde4 Bug fixes in casting between floats and ints smaller than 64 bits.
Add UltraSparcInstrInfo::CreateZeroExtensionInstructions to help with that.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3580 91177308-0d34-0410-b5e6-96231b3b80d8
2002-09-05 18:33:59 +00:00
Vikram S. Adve
babc0fab19 -- Use size of pointer element type instead of pointer type in array offsets!
-- A few bug fixes in casting between floats and ints.
-- Use SRL reg, 0 instead of AND reg, 0xffffffff to clear high 32 bits.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3579 91177308-0d34-0410-b5e6-96231b3b80d8
2002-09-05 18:32:13 +00:00
Vikram S. Adve
537a877998 -- Bug fix: use byte offsets not typed offsets in output assembly!
-- Add support for ConstantExpr constants (only cast and add operators so far)
-- Avoid generating label Bbss.bss, which sometimes came out twice.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3578 91177308-0d34-0410-b5e6-96231b3b80d8
2002-09-05 18:28:10 +00:00
Chris Lattner
0c4e886dbf - Renamed Type::isIntegral() to Type::isInteger()
- Added new method Type::isIntegral() that is the same as isInteger, but
    also accepts bool.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3574 91177308-0d34-0410-b5e6-96231b3b80d8
2002-09-03 01:08:28 +00:00
Chris Lattner
0e9f93ea37 - Fix bug: test/Regression/CBackend/2002-08-20-RecursiveTypes.ll
- Converted CWriter to be an LLVM pass.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3558 91177308-0d34-0410-b5e6-96231b3b80d8
2002-08-31 00:29:16 +00:00
Anand Shukla
b85d265b16 moved this file from lib/Reoptimizer/Mapping
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3519 91177308-0d34-0410-b5e6-96231b3b80d8
2002-08-27 22:47:33 +00:00
Anand Shukla
5993829fbd Added getFunctionInfo and MappingInfoForFunction pass, and fixed the earlier error in compiling
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3513 91177308-0d34-0410-b5e6-96231b3b80d8
2002-08-27 16:45:17 +00:00
Chris Lattner
fabc8803a3 Fix bug: test/Regression/CBackend/2002-08-26-IndirectCallTest.ll
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3511 91177308-0d34-0410-b5e6-96231b3b80d8
2002-08-26 20:50:09 +00:00
Vikram S. Adve
969c4ad65d Fix the way parens are printed around "*ptrName" so that
no parens are printed around  *, **, ... alone, except if
it is a pointer type for which no name should be printed,
as in the result of a cast.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3506 91177308-0d34-0410-b5e6-96231b3b80d8
2002-08-25 20:00:08 +00:00
Vikram S. Adve
74c83e44fa Use newly-added type inspection support in InstTreeNode subclasses.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3501 91177308-0d34-0410-b5e6-96231b3b80d8
2002-08-24 21:02:09 +00:00
Vikram S. Adve
685133382d Moved code here to extract memory instruction indices and to check
whether FoldGetElemNodes should be called.  This is machine-independent
but was in the Sparc directory.  This is in a new function: GetMemInstArgs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3500 91177308-0d34-0410-b5e6-96231b3b80d8
2002-08-24 21:00:08 +00:00
Vikram S. Adve
f28d9d643e LoadIdx non-terminal no longer needed.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3499 91177308-0d34-0410-b5e6-96231b3b80d8
2002-08-24 20:58:04 +00:00
Vikram S. Adve
8cfffd3a3e Sign-extend values used to index arrays (and Simplify
SetOperandsForMemInstr significantly).  Load and Store
no longer have any indices.  Eliminate spurious sign-extension
on a cast to float/double.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3498 91177308-0d34-0410-b5e6-96231b3b80d8
2002-08-24 20:56:53 +00:00
Vikram S. Adve
f519b999a6 Fix sign-extension: it needs to happen *after* multiplying by type size.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3497 91177308-0d34-0410-b5e6-96231b3b80d8
2002-08-24 14:44:58 +00:00
Vikram S. Adve
42eb2bae8e Sign-extend array index expressions to work correctly on non-32 bit machines.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3496 91177308-0d34-0410-b5e6-96231b3b80d8
2002-08-24 14:44:23 +00:00
Anand Shukla
ed0f1c5285 Changed default value of 3rd parameter in function definition
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3492 91177308-0d34-0410-b5e6-96231b3b80d8
2002-08-23 10:55:49 +00:00
Anand Shukla
6656c43ac7 Added #include <alloca.h>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3491 91177308-0d34-0410-b5e6-96231b3b80d8
2002-08-23 10:54:26 +00:00
Vikram S. Adve
cfa4f4a102 Simplify previous hack slightly.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3490 91177308-0d34-0410-b5e6-96231b3b80d8
2002-08-23 03:21:01 +00:00
Vikram S. Adve
69f3b72594 Force sign-extension for uint array indexes from 32-bit to 64-bits
since uint is not normally sign-extended when casting to uint64_t.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3489 91177308-0d34-0410-b5e6-96231b3b80d8
2002-08-23 02:55:51 +00:00
Chris Lattner
3bb8ad27a8 Eliminated the MemAccessInst class, folding contents into GEP class.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3488 91177308-0d34-0410-b5e6-96231b3b80d8
2002-08-22 23:37:24 +00:00
Chris Lattner
cc63f1c674 Eliminated the MemAccessInst class, folding contents into GEP class.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3487 91177308-0d34-0410-b5e6-96231b3b80d8
2002-08-22 23:37:20 +00:00
Chris Lattner
5dfe767b87 Load & StoreInst no longer derive from MemAccessInst, so we don't have
to handle indexing anymore


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3484 91177308-0d34-0410-b5e6-96231b3b80d8
2002-08-22 22:48:55 +00:00
Chris Lattner
abfb0b5e70 Change code to not use the copyOperands method added to User. It's now
more efficient to boot.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3453 91177308-0d34-0410-b5e6-96231b3b80d8
2002-08-22 15:57:58 +00:00
Vikram S. Adve
da920aa55b dumpNode() does not need to print MachineInstrs.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3444 91177308-0d34-0410-b5e6-96231b3b80d8
2002-08-22 02:59:46 +00:00
Vikram S. Adve
10472cec5e Fix two resource names.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3443 91177308-0d34-0410-b5e6-96231b3b80d8
2002-08-22 02:58:57 +00:00
Vikram S. Adve
e99941a931 Add AsmPrinter::ConstantExprToString, which writes out a ConstantExpr
as an expression.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3442 91177308-0d34-0410-b5e6-96231b3b80d8
2002-08-22 02:58:36 +00:00
Vikram S. Adve
30a6f49f09 Eliminate bool, boolreg and boolconst nonterminals, and just use
reg and Constant instead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3441 91177308-0d34-0410-b5e6-96231b3b80d8
2002-08-22 02:56:10 +00:00
Vikram S. Adve
ccc13a49bd Change rules for Not, since it is now implemented as Xor(reg,11..1).
Eliminate bool, boolreg and boolconst nonterminals, and just use
reg and Constant instead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3440 91177308-0d34-0410-b5e6-96231b3b80d8
2002-08-22 02:55:21 +00:00
Chris Lattner
044f908791 - Do not expose ::ID from any of the analyses anymore.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3416 91177308-0d34-0410-b5e6-96231b3b80d8
2002-08-21 17:09:45 +00:00
Chris Lattner
5a905e20b7 This case JUST handles constantpointer nulls, not all pointers.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3402 91177308-0d34-0410-b5e6-96231b3b80d8
2002-08-20 17:02:48 +00:00
Chris Lattner
4cda83568e Fix bug: 2002-08-20-UnnamedArgument.c
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3401 91177308-0d34-0410-b5e6-96231b3b80d8
2002-08-20 16:55:48 +00:00
Chris Lattner
df35a1cb4b Implement ConstantExprs in CWriter
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3394 91177308-0d34-0410-b5e6-96231b3b80d8
2002-08-19 23:09:46 +00:00
Chris Lattner
83c577566e Incorporate calcTypeNameVar into CWriter class, fixing
test/Regression/CBackend/2002-08-19-FunctionPointer.c in the process


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3392 91177308-0d34-0410-b5e6-96231b3b80d8
2002-08-19 22:17:53 +00:00
Chris Lattner
a4d4a855d8 Output forward definitions of global vars to handle recursive intializers correctly.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3391 91177308-0d34-0410-b5e6-96231b3b80d8
2002-08-19 21:48:40 +00:00
Chris Lattner
6d49292003 - Change constant printing to be better integrated with the rest of the
CWriter class.  Write directly to stream instead of building a big
      string, then writing it out.
    - Implement printing of ConstantPointerRefs


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3389 91177308-0d34-0410-b5e6-96231b3b80d8
2002-08-19 21:32:41 +00:00
Vikram S. Adve
85af131d9e Unary Not (boolean and bitwise) is no longer a separate LLVM instruction
but is instead implemented with XOR.  Note that the InstrForest opLabels
for Not and BNot remain the same, i.e., the XOR is recognized and
represented as a (boolean or bitwise) Not when building the instruction
trees.  But these tree nodes are now binary, not unary.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3343 91177308-0d34-0410-b5e6-96231b3b80d8
2002-08-15 14:19:22 +00:00
Vikram S. Adve
ce08e1dd3e Revise code generation for unary Not (boolean and bitwise), which is
no longer a separate instruction but is instead implemented with XOR.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3342 91177308-0d34-0410-b5e6-96231b3b80d8
2002-08-15 14:17:37 +00:00
Chris Lattner
20e8e01c5d Remove support for NOT instruction
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3320 91177308-0d34-0410-b5e6-96231b3b80d8
2002-08-14 18:00:52 +00:00
Vikram S. Adve
ca710e9cc5 Bug fix in TargetData::getIndexedOffset: We were using the pointer
type instead of the element type for the element size for arrays.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3302 91177308-0d34-0410-b5e6-96231b3b80d8
2002-08-13 18:17:56 +00:00
Vikram S. Adve
6c0c3010da Several bug fixes in casting to signed int values.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3301 91177308-0d34-0410-b5e6-96231b3b80d8
2002-08-13 18:04:08 +00:00
Vikram S. Adve
65a2deef8c Handle small unsigned results correctly by clearing high bits.
Bug fixes in casting to signed int values.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3297 91177308-0d34-0410-b5e6-96231b3b80d8
2002-08-13 17:40:54 +00:00
Brian Ensink
7b0925f4d3 Build correctly in the face of /shared.
-Chris


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3296 91177308-0d34-0410-b5e6-96231b3b80d8
2002-08-12 22:09:44 +00:00
Chris Lattner
9568568b75 - Clean up interface to Sparc register handling a bit:
- Eliminate Sparc*Order classes, moving contents to Sparc*Class classes
   - get register name methods now return const char * const pointers instead
     of std::string's.
   - Added file header comments to SparcRegClassInfo.(cpp|h)
   - Moved BIG constant arrays out of SparcRegClassInfo.h, into
     SparcRegInfo.cpp.  This should allow a LOT of std::string constructors to
     not have to be called.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3295 91177308-0d34-0410-b5e6-96231b3b80d8
2002-08-12 21:25:05 +00:00
Chris Lattner
035dfbe7f2 * Removed extraneous #includes
* Fixed file headers to be consistent with the rest of LLVM
* Other minor fixes


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3278 91177308-0d34-0410-b5e6-96231b3b80d8
2002-08-09 20:08:06 +00:00
Chris Lattner
179cdfb5c8 * Removed extraneous #includes
* Fixed file headers to be consistent with the rest of LLVM
* Other minor fixes


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3277 91177308-0d34-0410-b5e6-96231b3b80d8
2002-08-09 20:08:03 +00:00
Chris Lattner
b91b31c12d We are using std::vector, so remove extraneous namespace prefixes
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3275 91177308-0d34-0410-b5e6-96231b3b80d8
2002-08-09 20:05:34 +00:00
Chris Lattner
919c4f8a44 Change machinecode for instruction to not inherit from vector.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3274 91177308-0d34-0410-b5e6-96231b3b80d8
2002-08-09 20:04:28 +00:00
Chris Lattner
b0cfa6dfec Very minor cleanups
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3271 91177308-0d34-0410-b5e6-96231b3b80d8
2002-08-09 18:55:18 +00:00
Chris Lattner
5f0eb8da62 - Cleaned up the interface to AnalysisUsage to take analysis class names
instead of ::ID's.
 - Pass::getAnalysis<> now no longer takes an optional argument


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3265 91177308-0d34-0410-b5e6-96231b3b80d8
2002-08-08 19:01:30 +00:00
Chris Lattner
dd5b495129 - Cleaned up the interface to AnalysisUsage to take analysis class names
instead of ::ID's.
 - Pass::getAnalysis<> now no longer takes an optional argument


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3264 91177308-0d34-0410-b5e6-96231b3b80d8
2002-08-08 19:01:28 +00:00
Chris Lattner
637ed869e6 Merge three loops into one.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3259 91177308-0d34-0410-b5e6-96231b3b80d8
2002-08-07 21:39:48 +00:00
Chris Lattner
075f028b77 Fix breakage in the build
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3258 91177308-0d34-0410-b5e6-96231b3b80d8
2002-08-07 21:39:39 +00:00
Mehwish Nagda
5acd166ff5 added Mapping and Function Pass
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3251 91177308-0d34-0410-b5e6-96231b3b80d8
2002-08-05 23:23:19 +00:00
Vikram S. Adve
a40cbb3b7e Bug fix in CreateCodeToLoadConst(): use sign of dest, not operand,
in choosing how to create int-set instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3248 91177308-0d34-0410-b5e6-96231b3b80d8
2002-08-04 20:55:37 +00:00
Vikram S. Adve
ed0030e2bc Bug fix in TargetData::getIndexedOffset(): handle struct offset
after array offset correctly.  The type was not being updated for
array offsets!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3246 91177308-0d34-0410-b5e6-96231b3b80d8
2002-08-04 20:52:39 +00:00
Vikram S. Adve
99d4a38c77 Bug fix in SetOperandsForMemInstr: handle leading zeros correctly
when folding or not folding GEPs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3245 91177308-0d34-0410-b5e6-96231b3b80d8
2002-08-04 20:51:05 +00:00
Vikram S. Adve
1b51b1b4f9 Add function GetConstantValueAsUnsignedInt.
Fix 2 bugs in FoldGetElemChain so index vector is not modified
when no GEPs are folded in, and so a hasLeadingZero is computed
only for the last folded GEP, not the one after that if any.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3244 91177308-0d34-0410-b5e6-96231b3b80d8
2002-08-04 20:49:49 +00:00
Chris Lattner
75ac4e511a Fix compilation problem. IsIndexZero doesn't exist, use IsZero instead.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3243 91177308-0d34-0410-b5e6-96231b3b80d8
2002-08-03 20:57:38 +00:00
Vikram S. Adve
ed3fefb34c Simplified handling of array indexes in SetMemOperands_Internal.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3236 91177308-0d34-0410-b5e6-96231b3b80d8
2002-08-03 13:48:21 +00:00
Vikram S. Adve
a4704045e8 Bug fix: incorrect SAVE instruction when using register for stack size.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3198 91177308-0d34-0410-b5e6-96231b3b80d8
2002-08-01 14:26:11 +00:00
Vikram S. Adve
c190c01a9f Just improved comments and assertions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3191 91177308-0d34-0410-b5e6-96231b3b80d8
2002-07-31 21:13:31 +00:00
Vikram S. Adve
1e60669d3b Add a missing case: converting float/double to unsigned integer types.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3188 91177308-0d34-0410-b5e6-96231b3b80d8
2002-07-31 21:01:34 +00:00
Chris Lattner
2e1749bbf8 * Move InstructionSelection Pass here instead of living in Sparc.cpp. It
is platform independant afterall.
* Object orientize the functions, cleanup code a bit.  Instead of static
  global functions, the helpers for instruction selection are now part of
  the InstructionSelection Pass class.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3147 91177308-0d34-0410-b5e6-96231b3b80d8
2002-07-30 03:57:36 +00:00
Chris Lattner
057430d207 * Move InstructionSelection pass to lib/CodeGen/InstrSelection so it is
shared by backends.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3146 91177308-0d34-0410-b5e6-96231b3b80d8
2002-07-30 03:56:16 +00:00
Chris Lattner
67fcce2b19 Remove unused vector
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3143 91177308-0d34-0410-b5e6-96231b3b80d8
2002-07-30 02:52:40 +00:00
Chris Lattner
97f51a3024 * Standardize how analysis results/passes as printed with the print() virtual
methods
* Eliminate AnalysisID:  Now it is just a typedef for const PassInfo*
* Simplify how AnalysisID's are initialized
* Eliminate Analysis/Writer.cpp/.h: incorporate printing functionality into
  the analyses themselves.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3115 91177308-0d34-0410-b5e6-96231b3b80d8
2002-07-27 01:12:15 +00:00