Vikram S. Adve
ca1f1c58e1
Added support to write out ConstantExpr nodes.
...
Also, avoid asserting out when writing out an invalid tree
since the assembly writer is used when debugging.
llvm-svn: 2902
2002-07-14 23:14:45 +00:00
Vikram S. Adve
d670638ee6
Added subclass ConstantExpr to represent expressions consructed from
...
constants using operators such as cast, getelementptr, add, shl, etc.
Note that a ConstantExpr can be of any type, so classof() in most
other subclasses (that discriminate by type) have to check that it
is also not a ConstantExpr.
llvm-svn: 2901
2002-07-14 23:13:17 +00:00
Vikram S. Adve
846a1514c8
Create a static version of Instruction::getOpcodeName(opCode) that
...
can be invoked with only an opcode (i.e., without an instruction).
Move all opCode->opCodeName translations there.
llvm-svn: 2900
2002-07-14 23:09:40 +00:00
Vikram S. Adve
e182dd58ae
Add support for writing ConstantExpr nodes.
...
llvm-svn: 2899
2002-07-14 23:08:30 +00:00
Vikram S. Adve
155a8ec344
Write out the plane for types first, since values of primitive types
...
may be constructed by expressions of other types (and so the
contents of the primitive type planes must come after all types).
Use a helper function outputConstantsInPlane in outputConstants to
do this.
llvm-svn: 2898
2002-07-14 23:07:51 +00:00
Vikram S. Adve
c5355ed343
Use a helper function outputConstantsInPlane in outputConstants.
...
llvm-svn: 2897
2002-07-14 23:05:53 +00:00
Vikram S. Adve
83551932d4
Add support for reading ConstantExpr nodes.
...
Add class ConstantFwdRefs to resolve forward references to constants
and to globals. (Hmm... this class could be renamed I guess.)
llvm-svn: 2896
2002-07-14 23:05:09 +00:00
Vikram S. Adve
81fee7fa10
Add support for reading ConstantExpr nodes.
...
Add class ConstantFwdRefs to resolve forward references to constants
and to globals (unified old code for globals into this).
llvm-svn: 2895
2002-07-14 23:04:18 +00:00
Vikram S. Adve
01595dd6af
Added support for parsing expressions constructed from constant values.
...
(Major new non-terminal is ConstExpr.)
Add YYERROR_VERBOSE and print additional information on errors.
llvm-svn: 2894
2002-07-14 22:59:28 +00:00
Vikram S. Adve
f2d95b3976
Declare globals llvmAsmtext and llvmAsmleng for use in the parser.
...
llvm-svn: 2893
2002-07-14 22:49:40 +00:00
Anand Shukla
a10f139779
Added EmitFunctions directory
...
llvm-svn: 2883
2002-07-12 20:12:07 +00:00
Anand Shukla
d4dae682bc
Initial makefile
...
llvm-svn: 2882
2002-07-12 20:11:24 +00:00
Anand Shukla
edba9ad8a9
Initial version: adds a function table to output code
...
llvm-svn: 2881
2002-07-12 20:10:50 +00:00
Chris Lattner
f528333ecf
* Pass the DSGraph around instead of the Function to printing fns
...
* Print the globals list in the node
* Print the scalars in the scalar node
* Eliminate Scalar "label" edges in the graph
* Print fake edges lighter instead of dotted
llvm-svn: 2880
2002-07-11 20:33:32 +00:00
Chris Lattner
61d394e66f
* Nodes now keep track of any global variables in them
...
llvm-svn: 2879
2002-07-11 20:32:22 +00:00
Chris Lattner
809bd75ead
* Nodes now keep track of any global variables in them
...
* Only dead-node-eliminate nodes with no flags
* Don't merge scalars, only merge what they point to.
llvm-svn: 2878
2002-07-11 20:32:02 +00:00
Anand Shukla
d70cde528d
added std:: to endl
...
llvm-svn: 2875
2002-07-11 00:17:17 +00:00
Anand Shukla
3d7a9691cc
added std:: to vector
...
llvm-svn: 2874
2002-07-11 00:16:28 +00:00
Chris Lattner
5d62e136c5
New implementation of data structure analysis. Only local analysis has been
...
implemented so far.
llvm-svn: 2871
2002-07-10 22:38:08 +00:00
Chris Lattner
83577a047e
Disable folding g-e-p instructions into loads and stores.
...
llvm-svn: 2870
2002-07-10 22:37:17 +00:00
Chris Lattner
a6842aa353
Disable pool allocation stuff until data structure analysis is sorted back out
...
llvm-svn: 2869
2002-07-10 22:36:47 +00:00
Chris Lattner
d00a93318e
Reimplement data structure analysis
...
llvm-svn: 2868
2002-07-10 22:36:26 +00:00
Vikram S. Adve
cd544ed252
Fix print of BB name in dump().
...
llvm-svn: 2861
2002-07-10 21:45:30 +00:00
Vikram S. Adve
62f569e4ea
Add support for marking each operand as a %hh, %hm, %lm or %lo.
...
Represent previous bools and these ones with flags in a single byte
per operand.
llvm-svn: 2860
2002-07-10 21:45:04 +00:00
Vikram S. Adve
b2fc122acd
Changed interface to insertCallerSavingCode().
...
llvm-svn: 2859
2002-07-10 21:42:42 +00:00
Vikram S. Adve
56ae7788d7
Stop using pseudo-instructions (SETX, SETUW, SETSW)
...
and generate actual machine instruction sequences directly.
llvm-svn: 2858
2002-07-10 21:42:13 +00:00
Vikram S. Adve
268137274b
Add support to print %hh, %hm, %lm, or %lo in an operand field.
...
llvm-svn: 2857
2002-07-10 21:41:21 +00:00
Vikram S. Adve
3df324e6e8
Major overhaul to stop using pseudo-instructions (SETX, SETUW, SETSW)
...
and generate actual machine instruction sequences directly.
Also a couple of bug fixes in code for putting constants into registers:
-- Do *not* sign-extend unsigned constant that is shorter than int reg size
-- Fix handling of address constant (a GlobalValue) vs. constant that
must be loaded.
llvm-svn: 2856
2002-07-10 21:39:50 +00:00
Vikram S. Adve
9d7346bbf9
More important fixes:
...
-- FP argument to a function with no prototype going on stack
was not being copied to the stack in colorCallArgs().
-- Put caller-saving code *before* argument copying code so that
we don't trash a register before saving it!
-- Two other minor fixes.
llvm-svn: 2855
2002-07-10 21:36:00 +00:00
Chris Lattner
c27a459095
*** empty log message ***
...
llvm-svn: 2852
2002-07-10 16:48:17 +00:00
Anand Shukla
33b491bba2
changed mem_fun to std::mem_fun
...
llvm-svn: 2847
2002-07-09 19:18:56 +00:00
Anand Shukla
e2179159e5
Added std:: to mem_fun for 64-bit gcc
...
llvm-svn: 2845
2002-07-09 19:16:59 +00:00
Chris Lattner
128410dd4c
Implementing shift left & shift right on pointers
...
llvm-svn: 2844
2002-07-09 18:42:36 +00:00
Vikram S. Adve
f5760a424d
Added support for printing constant global references to
...
assembly.
llvm-svn: 2842
2002-07-09 12:30:29 +00:00
Vikram S. Adve
c98bc8cd5e
Fix iteration and InsertPos bugs introduced when Chris changed over to ilist.
...
llvm-svn: 2840
2002-07-08 23:37:07 +00:00
Vikram S. Adve
901578090d
Numerous changes in interface to class SparcRegInfo corresponding to
...
changes in class MachineRegInfo (see MachineRegInfo.h for details).
Added {LD,ST}[X]FSR instructions.
llvm-svn: 2839
2002-07-08 23:34:10 +00:00
Vikram S. Adve
35bc4cb020
class MachineCodeForBasicBlock is now an annotation on BasicBlock.
...
llvm-svn: 2838
2002-07-08 23:31:24 +00:00
Vikram S. Adve
8b06b38495
BA no longer has the unused CC operand.
...
llvm-svn: 2837
2002-07-08 23:30:59 +00:00
Vikram S. Adve
a771830ea1
Have to save a boolean (setCC) value whenever use is outside the current
...
basic block.
Mark setCCInstr used as dest. of conditional-move as both a def and a use.
BA instruction no longer has the unused CC argument.
llvm-svn: 2836
2002-07-08 23:30:14 +00:00
Vikram S. Adve
30cc745aec
BA has only one argument.
...
Added LDFSR, LDXFSR, STFSR and STXFSR.
Fixed operands info for RDCCR, WRCCR.
llvm-svn: 2835
2002-07-08 23:25:17 +00:00
Vikram S. Adve
b94ede185c
Significant changes to correctly spill CC registers and to correctly
...
handle conditional move instructions:
-- cpMem<->Reg functions now support CC registers (int and FP) correctly.
Also, cpMem<->Reg functions now return a vector of machine instructions.
-- Scratch registers must be explicitly provided to cpMem<->Reg when
needed, since CC regs need one to be copied to/from memory.
-- CC regs are saved to a scratch register instead of stack.
-- All regs used by a instruction are now recorded in MachineInstr::regsUsed,
since regs used to save values *across* an instruction are not obvious
either from the operands or from the LiveVar sets.
-- An (explicit or implicit) operand may now be both a def and a use.
This is needed for conditional move operations.
So an operand may need spill code both before and after the instruction.
Other changes:
-- Added several get{Class,Type} functions.
-- Added unified-to-local register number conversion.
-- class MachineCodeForBasicBlock is now an annotation on BasicBlock.
-- Suggest/Color methods may modify the MachineInstr (and always did),
so don't make that argument const!
-- Caller-saving code doesn't need its special purpose code for
handling CC registers since cpMem<->Reg handle those correctly now.
llvm-svn: 2834
2002-07-08 23:23:12 +00:00
Vikram S. Adve
0b32273208
Significant changes to correctly spill CC registers and to correctly
...
handle conditional move instructions:
-- cpMem<->Reg functions now support CC registers (int and FP) correctly.
-- Scratch registers must be explicitly provided to cpMem<->Reg when
needed, since CC regs need one to be copied to/from memory.
-- CC regs are saved to a scratch register instead of stack.
-- All regs used by a instruction are now recorded in MachineInstr::regsUsed,
since regs used to save values *across* an instruction are not obvious
either from the operands or from the LiveVar sets.
-- An (explicit or implicit) operand may now be both a def and a use.
This is needed for conditional move operations.
So an operand may need spill code both before and after the instruction.
-- class MachineCodeForBasicBlock is now an annotation on BasicBlock.
llvm-svn: 2833
2002-07-08 23:15:32 +00:00
Vikram S. Adve
a8c7633d5b
MachineInstr* in vector are not const (and never really were)
...
because operands may be modified directly to set register.
Also, class MachineCodeForBasicBlock is now an annotation on BasicBlock.
llvm-svn: 2832
2002-07-08 23:07:26 +00:00
Vikram S. Adve
3e8b72f0e3
Rename static struct Initializer to avoid name conflict with BB.
...
llvm-svn: 2831
2002-07-08 23:04:31 +00:00
Vikram S. Adve
25d81936d2
Fix printing of BB in dump.
...
llvm-svn: 2830
2002-07-08 23:03:54 +00:00
Vikram S. Adve
f6d73e9711
Moved class MachineCodeForBasicBlock to MachineCodeForBasicBlock.h.
...
This class is now an annotation on BasicBlock.
llvm-svn: 2829
2002-07-08 23:03:10 +00:00
Vikram S. Adve
5b4c4a9326
MachineInstr::dump() now takes no arguments.
...
llvm-svn: 2828
2002-07-08 23:01:46 +00:00
Vikram S. Adve
a2381d3998
Implementation of class MachineCodeForBasicBlock.
...
Moved here from MachineInstr.cpp to make it an annotation on BasicBlock.
llvm-svn: 2827
2002-07-08 23:01:11 +00:00
Vikram S. Adve
4efbb9c931
A single MachineInstr operand may now be both a def and a use,
...
so additional dep. edges have to be added.
This was needed to correctly handle conditional move instructions!
MachineCodeForBasicBlock is now an annotation on BasicBlock.
Renamed "earliestForNode" to "earliestReadyTimeForNode".
llvm-svn: 2826
2002-07-08 22:59:23 +00:00
Vikram S. Adve
daf9b38ed9
A single MachineInstr operand may now be both a def and a use.
...
llvm-svn: 2825
2002-07-08 22:56:34 +00:00
Vikram S. Adve
58b597078f
getUsableUniRegAtMI interface simplified slightly.
...
llvm-svn: 2822
2002-07-08 22:39:36 +00:00
Vikram S. Adve
a110ccca19
Moved class MachineCodeForBasicBlock to MachineCodeForBasicBlock.{cpp,h}.
...
An (explicit or implicit) operand may now be both a def and a use.
Also add a set of regs used by each instruction.
dump() no longer takes an optional argument, which doesn't work in gdb.
llvm-svn: 2821
2002-07-08 22:38:45 +00:00
Vikram S. Adve
d82933c6c8
MachineInstr* in vector are not const (and never really were)
...
because operands may be modified directly to set register.
llvm-svn: 2820
2002-07-08 22:34:40 +00:00
Vikram S. Adve
da5e272403
Moved MachineCodeForBB to be an annotation on BasicBlock.
...
llvm-svn: 2818
2002-07-08 22:31:11 +00:00
Anand Shukla
43bbde3f76
changes BBsorting and oredering
...
llvm-svn: 2817
2002-07-08 19:37:06 +00:00
Anand Shukla
9d38b4b511
small corrections
...
llvm-svn: 2816
2002-07-08 19:36:39 +00:00
Anand Shukla
a5c08b7973
changed function numbering
...
llvm-svn: 2815
2002-07-08 19:36:01 +00:00
Chris Lattner
a590093513
*** empty log message ***
...
llvm-svn: 2813
2002-06-30 16:25:25 +00:00
Chris Lattner
63f4011a0c
Clean up anands patch
...
llvm-svn: 2812
2002-06-30 16:25:21 +00:00
Chris Lattner
362a0846af
Remove diff-cluttering tags
...
llvm-svn: 2808
2002-06-30 16:12:03 +00:00
Chris Lattner
5339840831
Remove tag that just clutters diffs
...
llvm-svn: 2807
2002-06-30 16:08:25 +00:00
Chris Lattner
aa9a5b5c15
Fix anands changes
...
llvm-svn: 2806
2002-06-30 16:07:20 +00:00
Chris Lattner
ab88b62968
Convert tabs to spaces
...
llvm-svn: 2805
2002-06-30 16:04:37 +00:00
Chris Lattner
c645efd64c
Fix anand's last checkin
...
llvm-svn: 2804
2002-06-30 16:01:15 +00:00
Anand Shukla
62f8f85b50
changes for 64bit gcc
...
llvm-svn: 2801
2002-06-25 22:07:38 +00:00
Anand Shukla
5dbf11fc92
added include<iostream> for cerr
...
llvm-svn: 2800
2002-06-25 22:04:00 +00:00
Anand Shukla
0de79ee516
added include<iostream> for cerr
...
llvm-svn: 2796
2002-06-25 21:29:10 +00:00
Anand Shukla
3ab9ffd5b1
changes to make it compatible with 64bit gcc
...
llvm-svn: 2795
2002-06-25 21:18:19 +00:00
Anand Shukla
25f890e009
additions and bug fixes
...
llvm-svn: 2794
2002-06-25 21:14:58 +00:00
Anand Shukla
0908af95f6
added include<iostream> for cerr
...
llvm-svn: 2793
2002-06-25 21:12:25 +00:00
Anand Shukla
85065832f1
changes to make it compatible with 64bit gcc
...
llvm-svn: 2792
2002-06-25 21:07:58 +00:00
Anand Shukla
ee7ed50bb4
changes to make it compatible with 64bit gcc
...
llvm-svn: 2791
2002-06-25 20:55:50 +00:00
Anand Shukla
b35aa2b2e7
changes to make it compatible with 64bit gcc
...
llvm-svn: 2790
2002-06-25 20:44:04 +00:00
Anand Shukla
af8556bf5b
changes to make it compatible with 64bit gcc
...
llvm-svn: 2789
2002-06-25 20:35:19 +00:00
Anand Shukla
819239b667
minor change in removing endl
...
llvm-svn: 2788
2002-06-25 20:34:54 +00:00
Chris Lattner
dfd421a7df
MEGAPATCH checkin.
...
For details, See: docs/2002-06-25-MegaPatchInfo.txt
llvm-svn: 2779
2002-06-25 16:13:24 +00:00
Chris Lattner
d7cbd7d5d2
MEGAPATCH checkin.
...
For details, See: docs/2002-06-25-MegaPatchInfo.txt
llvm-svn: 2778
2002-06-25 16:13:21 +00:00
Chris Lattner
cee706572b
*** empty log message ***
...
llvm-svn: 2777
2002-06-25 16:12:52 +00:00
Chris Lattner
390c338968
* Update with MegaPatch
...
* Fix various bugs
llvm-svn: 2774
2002-06-25 15:57:03 +00:00
Chris Lattner
12075bfedd
* Update to work with Megapatch
...
* Add two new checks:
* PHI nodes must be the first thing in a basic block, all grouped together
* All basic blocks should only end with terminator insts, not contain them
llvm-svn: 2773
2002-06-25 15:56:27 +00:00
Chris Lattner
8e1476c302
Remove DynamicConstantMerge pass, because it did not fit in with the Pass
...
system correctly.
llvm-svn: 2772
2002-06-25 15:55:29 +00:00
Chris Lattner
ef6daeb534
Remove "fixers" for problems in GCC generated code that cannot be generated
...
anymore.
llvm-svn: 2771
2002-06-25 15:55:03 +00:00
Anand Shukla
92dcd43312
Relocating Graph.h
...
llvm-svn: 2770
2002-06-25 14:28:55 +00:00
Chris Lattner
d3327b19e0
Fix constness
...
llvm-svn: 2762
2002-06-05 18:11:37 +00:00
Chris Lattner
1a37bd9d7e
Fix Constness problems
...
llvm-svn: 2761
2002-06-05 18:08:26 +00:00
Chris Lattner
593394bb04
Fix constness problem
...
llvm-svn: 2759
2002-06-05 17:49:40 +00:00
Chris Lattner
8556c1936d
Fix constness problems now that the cast operators preserve the constness
...
of their argument
llvm-svn: 2758
2002-06-05 17:38:28 +00:00
Chris Lattner
81e6e7615f
* Be more typesafe: cast<x> now no longer discards constness
...
* The newly installed version of Bison now really likes there to be ;'s
after productions. Add them to avoid tons of warnings.
llvm-svn: 2757
2002-06-04 21:58:56 +00:00
Chris Lattner
3cd6295cb7
Disable debugging output
...
llvm-svn: 2756
2002-06-04 03:09:57 +00:00
Chris Lattner
27a93b1e90
*** empty log message ***
...
llvm-svn: 2755
2002-06-03 22:10:52 +00:00
Chris Lattner
779f966ce5
Avoid deleting individual instructions until AFTER dead blocks have dropped
...
their references. This fixes bug:
test/Regression/Transforms/ADCE/2002-05-28-Crash*.ll
llvm-svn: 2753
2002-05-28 21:38:16 +00:00
Chris Lattner
b95dde758a
Simplify the interface to local DCE and Constant prop
...
llvm-svn: 2749
2002-05-26 20:18:18 +00:00
Chris Lattner
365806ddf7
Support opaque type printing a little bit at least
...
llvm-svn: 2748
2002-05-26 20:17:54 +00:00
Chris Lattner
3611a1e91c
Do not remove type names that contain a .
...
llvm-svn: 2747
2002-05-26 20:17:35 +00:00
Chris Lattner
d98e784be4
Fix "unimplemented features":
...
test/Regression/Transforms/FunctionResolve/retmismatch[12].ll
This makes it much more useful for running benchmarks that are missing
prototypes for some functions.
llvm-svn: 2745
2002-05-24 21:33:26 +00:00
Chris Lattner
5dc1524174
Split the FunctionResolution pass out of CleanGCCOutput.cpp.
...
llvm-svn: 2742
2002-05-24 20:42:13 +00:00
Chris Lattner
4c766269b7
Fix comments to reflect reality
...
llvm-svn: 2741
2002-05-24 20:41:51 +00:00
Chris Lattner
e69803b06f
Support programs that do not #include <malloc.h> or give a full prototype
...
for malloc and free. Lots of crufty benchmarks are using stuff like:
char *malloc();
void free();
to forward declare malloc and free. Now we recognize and raise these forms
llvm-svn: 2740
2002-05-24 20:29:18 +00:00
Chris Lattner
9dde5c9df7
Fold add X, 0 for floating point types as well
...
llvm-svn: 2734
2002-05-23 17:11:38 +00:00
Chris Lattner
2cf3917aae
Fix bug: test/Regression/Transforms/ADCE/2002-05-23-ZeroArgPHITest.ll
...
Which contains a description of why this is neccesary.
llvm-svn: 2733
2002-05-23 16:52:34 +00:00