1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-25 14:02:52 +02:00
Commit Graph

1318 Commits

Author SHA1 Message Date
Chris Lattner
8d63aab886 Rename ValueMap to ScalarMap
llvm-svn: 4516
2002-11-03 21:27:48 +00:00
Chris Lattner
0ee058644e Rename NewNode flag to HeapNode
llvm-svn: 4515
2002-11-03 21:24:04 +00:00
Chris Lattner
eb49618531 Check in header file that was missing, thus broke the build
llvm-svn: 4513
2002-11-03 19:24:49 +00:00
Misha Brukman
4e272d8fd9 Fixed comment on top of DSNode.h, added note to DSSupport.h as to why
functions were split out from DSNode class.

llvm-svn: 4509
2002-11-02 21:18:53 +00:00
Chris Lattner
702ac95902 Implement the "unknown flag" which mainly consists of aligning printing code
llvm-svn: 4490
2002-11-02 00:36:03 +00:00
Chris Lattner
f76aa218db * Eliminate Scalar node type (renumber other node types)
* Allow DSNodeHandle::mergeWith to work if a node handle isn't pointing to a node yet

llvm-svn: 4487
2002-11-02 00:11:12 +00:00
Chris Lattner
e0a3be0bb7 Eliminate some unneccesary #includes and forward decls
llvm-svn: 4475
2002-10-31 21:24:10 +00:00
Misha Brukman
cd6a3b2f2c Refactored DSGraph.h:
* DSGraph.h   contains DSGraph
* DSNode.h    contains DSNode (soon UDSNode and MDSNode)
* DSSupport.h contains DSCallsite, DSTypeRec, and DSNodeHandler

llvm-svn: 4466
2002-10-31 06:34:18 +00:00
Chris Lattner
317daff9bf This fixes all kinds of problems with array handling. There are still bugs to
be fixed, but we are getting much closer now.

    * Make DSNode::TypeRec a full fledged DSTypeRec type.
    * Add methods used to update and access the typerecords elements
    * Add methods to query if and to cause a node to be completely folded
    * DSGraph construction doesn't use the allocation type for anything at all,
      now nodes get their type information based on how they are used.
    * Fixed a bug with global value handling introduced in the last checkin
    * GEP support is now much better, arrays are handled correctly.  The array
      flag is now updated in type records.  There are still cases that are not
      handled yet (we do not detect pessimizations), but getting much closer.

llvm-svn: 4465
2002-10-31 05:45:02 +00:00
Chris Lattner
2ce9a55285 New isAssociative/isCommutative inspection methods, graciously contributed by
Casey Carter.

llvm-svn: 4459
2002-10-31 04:14:01 +00:00
Chris Lattner
2e98413a27 Add interface to update domfrontier info, thanks to Casey Carter for impl
llvm-svn: 4456
2002-10-31 02:39:48 +00:00
Vikram S. Adve
d44e2577de Bug fix: need to initialize new CallArgsDescriptor pointer.
llvm-svn: 4453
2002-10-30 20:38:49 +00:00
Vikram S. Adve
beba0cd579 Bug fix in setting an implicit ref.
llvm-svn: 4452
2002-10-30 20:38:16 +00:00
Chris Lattner
be221c6013 Allow BuildMI that helps automate construction of SSA information
llvm-svn: 4443
2002-10-30 01:48:41 +00:00
Chris Lattner
19f27845eb * Add new "Target Specific Flags" field to instruction descriptor
* Rename iclass to Flags

llvm-svn: 4439
2002-10-30 01:06:53 +00:00
Chris Lattner
c7854f4c8f Add new optional getRegisterInfo to TargetMachine
llvm-svn: 4436
2002-10-30 00:53:02 +00:00
Chris Lattner
55da33fe73 Add support for structured printing
llvm-svn: 4432
2002-10-30 00:46:48 +00:00
Chris Lattner
4430feb9b5 Improve comments, add methods for structured printing
llvm-svn: 4431
2002-10-30 00:46:31 +00:00
Chris Lattner
e78186b693 Add method
llvm-svn: 4428
2002-10-29 23:40:30 +00:00
Chris Lattner
82a3299cf1 Add capability to have machine instruction autoinsert when it is created
llvm-svn: 4424
2002-10-29 23:18:23 +00:00
Misha Brukman
453ccb15f5 Fixed spelling of `propagation'.
llvm-svn: 4422
2002-10-29 22:55:11 +00:00
Chris Lattner
87eb530014 Eliminate virtual methods that are sparc specific
llvm-svn: 4419
2002-10-29 22:01:26 +00:00
Chris Lattner
5d798b7887 * Privatize the TargetName
* Move optSizeForSubWordData to TargetData
* Remove unused fields

llvm-svn: 4417
2002-10-29 21:48:17 +00:00
Chris Lattner
eec571dce8 Allow TargetMachine to refuse static code gen
llvm-svn: 4415
2002-10-29 21:12:46 +00:00
Chris Lattner
cc026ad4fc Rename Sparc.h to TargetMachineImpls.h. Add hook for X86 target
llvm-svn: 4412
2002-10-29 20:51:29 +00:00
Chris Lattner
8d372a1161 Add hook for JIT compiler
llvm-svn: 4411
2002-10-29 20:51:10 +00:00
Chris Lattner
16081ceef1 Move to TargetMachineImpls.h
llvm-svn: 4405
2002-10-29 20:44:18 +00:00
Chris Lattner
fc88414ffd Merge with sparc backend
llvm-svn: 4403
2002-10-29 20:10:58 +00:00
Chris Lattner
2859640d1c Merge to MachineInstrInfo.h
llvm-svn: 4402
2002-10-29 20:10:19 +00:00
Chris Lattner
fdbc0f40ce X86 merge complete, eliminate dead code
llvm-svn: 4401
2002-10-29 20:07:50 +00:00
Chris Lattner
0ac25d509c X86 merge is complete, eliminate unused code
llvm-svn: 4400
2002-10-29 20:07:16 +00:00
Vikram S. Adve
4acb69b4ea Remove separate vector of implicit refs from MachineInstr, and
instead record them as extra operands in the operands[] vector.
Also, move CallArgsDescriptor into this class instead of making it an
annotation on the machine instruction.

llvm-svn: 4399
2002-10-29 19:41:18 +00:00
Vikram S. Adve
1730a958ea Move CallArgsDescriptor into this class instead of making it an
annotation on the machine instruction.

llvm-svn: 4398
2002-10-29 19:38:46 +00:00
Chris Lattner
b49e35e745 Move TargetInstrDescriptors extern to the one .cpp file that refers to it:
MachineInstr.cpp

llvm-svn: 4392
2002-10-29 17:40:30 +00:00
Chris Lattner
4c00b1bb14 Rename opCodeString to Name, add new getName() method
llvm-svn: 4388
2002-10-29 17:35:09 +00:00
Chris Lattner
4cb6ebc9a1 Rename MachineInstrInfo::getDescriptor to MachineInstrInfo::get
llvm-svn: 4387
2002-10-29 17:26:26 +00:00
Chris Lattner
b4ee80190b Remove old entrypoint
llvm-svn: 4385
2002-10-29 17:15:01 +00:00
Chris Lattner
8feac53561 Remove unneeded #include
llvm-svn: 4384
2002-10-29 17:14:10 +00:00
Chris Lattner
0493b81eef De-inline methods
llvm-svn: 4379
2002-10-29 16:50:33 +00:00
Chris Lattner
4aba455989 Remove unneeded #include
llvm-svn: 4377
2002-10-29 16:50:06 +00:00
Chris Lattner
0cff6f7e16 Make assertIGNode be private to the InterferenceGraph.cpp file
llvm-svn: 4375
2002-10-29 16:42:34 +00:00
Chris Lattner
54eff4bcba Remove unneccesary #include
llvm-svn: 4374
2002-10-29 16:34:12 +00:00
Chris Lattner
0a2b3a9a7b Delete unused header file
llvm-svn: 4373
2002-10-29 16:32:08 +00:00
Chris Lattner
8869c9be36 MachineInstrInfo doesn't need a TargetMachine member
llvm-svn: 4371
2002-10-29 15:44:40 +00:00
Chris Lattner
d5faf681bb Minor cleanups, remove noncopyable so dot doesn't cluster unrelated stuff
llvm-svn: 4365
2002-10-28 23:54:23 +00:00
Chris Lattner
dce27e5927 Strip a bunch of #includes from the file, move some virtual functions to
.cpp file

llvm-svn: 4364
2002-10-28 23:53:56 +00:00
Chris Lattner
d5953f5c63 Inline some code from the cpp file
llvm-svn: 4363
2002-10-28 23:53:32 +00:00
Chris Lattner
be89ca4b5a Minor comment updates
llvm-svn: 4361
2002-10-28 21:43:42 +00:00
Chris Lattner
8727a8f2d1 Initial checkin of MachineInstrBuilder class
llvm-svn: 4360
2002-10-28 21:31:48 +00:00
Chris Lattner
566b2147f9 Remove all traces of the "Opcode Mask" field in the MachineInstr class
llvm-svn: 4359
2002-10-28 21:17:20 +00:00
Chris Lattner
11f52470a0 Remove more default arguments that are never used
llvm-svn: 4358
2002-10-28 21:02:40 +00:00
Chris Lattner
990e074c2e Remove default operands that are never used
llvm-svn: 4357
2002-10-28 20:59:49 +00:00
Chris Lattner
de6ac9b0ff * Make MachineOperand ctors private, so MachineOperand can only be created
by MachineInstr.
* Add a bunch of new methods to allow incremental addition of operands to the
  machine instr instance.

llvm-svn: 4356
2002-10-28 20:48:39 +00:00
Misha Brukman
0daac26c02 Iterator functions now line up together.
llvm-svn: 4350
2002-10-28 19:58:38 +00:00
Chris Lattner
74f9160190 Remove two arguments that are never specified
llvm-svn: 4348
2002-10-28 19:46:59 +00:00
Chris Lattner
f2cd0a8266 s/method/function
llvm-svn: 4338
2002-10-28 05:58:46 +00:00
Chris Lattner
7cdc2977f0 Change MachineBasicBlock's to not be Annotations, instead they are kept as
part of a linked list tracked by MachineFunction.  MachineBasicBlock::get
is now linear time instead of constant time, and thus is deprecated!

llvm-svn: 4337
2002-10-28 05:30:46 +00:00
Chris Lattner
c32337fb08 * s/unsigned int/unsigned
* Make MachineInstrDescriptor only keep a const char * instead of a string
  for the opcode name.

llvm-svn: 4335
2002-10-28 04:55:56 +00:00
Chris Lattner
ec393ff469 Make scheduling class variables be 'unsigned' instead of 'int'
llvm-svn: 4334
2002-10-28 04:53:18 +00:00
Chris Lattner
a215fe71ce Remove typedef that is unneccesary
llvm-svn: 4332
2002-10-28 04:50:01 +00:00
Chris Lattner
e309cdbc95 Rename the redundant MachineOperand::getOperandType() to MachineOperand::getType()
llvm-svn: 4331
2002-10-28 04:45:29 +00:00
Chris Lattner
a7cfe8ccb5 Add new getOperandType(i) method to MachineInstr
llvm-svn: 4330
2002-10-28 04:30:20 +00:00
Chris Lattner
7000bbb63f Fairly major overhaul of MachineInstr & Operand classes
- Inline methods that are mostly a single line anyway
  - Eliminate several methods that were never called
  - Group methods a bit more consistently

llvm-svn: 4329
2002-10-28 04:24:49 +00:00
Chris Lattner
824d112715 Make MachineInstr.h not #include MachineInstrInfo.h
llvm-svn: 4328
2002-10-28 02:29:46 +00:00
Chris Lattner
10a01c1620 Remvoe a bunch of unneeded forward decls
llvm-svn: 4326
2002-10-28 02:27:07 +00:00
Chris Lattner
a7e9d3e90f Don't #include <Support/*>, #include "Support/*"
llvm-svn: 4325
2002-10-28 02:11:53 +00:00
Chris Lattner
daf162b45a Add BasicBlock list to MchineFunction that will eventually be the only
way to access MachineBasicBlocks.  For now, it is never filled.

llvm-svn: 4324
2002-10-28 02:08:43 +00:00
Chris Lattner
2b2fbdf33c MachineFunction.h now includes MachineBasicBlock.h in preparation for
list changes.

llvm-svn: 4321
2002-10-28 02:01:06 +00:00
Chris Lattner
85e7d46739 Remvoe dead fixme and typedef
llvm-svn: 4320
2002-10-28 01:55:26 +00:00
Chris Lattner
46509e42f8 MachineBasicBlock doesn't need basicblock.h, it needs Annotation.h
llvm-svn: 4319
2002-10-28 01:53:00 +00:00
Chris Lattner
cd476842d3 Rename file to MachineBasicBlock.h
llvm-svn: 4316
2002-10-28 01:39:21 +00:00
Chris Lattner
384e13e39c Add note about state that should be removed when time permits
llvm-svn: 4315
2002-10-28 01:27:51 +00:00
Chris Lattner
310d9124e3 Fixes to previous checkin
llvm-svn: 4314
2002-10-28 01:27:30 +00:00
Chris Lattner
4f2c612b21 Inline some methods from .cpp files into .h files, minor cleanups
llvm-svn: 4313
2002-10-28 01:21:55 +00:00
Chris Lattner
d711c00823 Add prototypes for creation/destruction passes
llvm-svn: 4309
2002-10-28 01:11:58 +00:00
Chris Lattner
8e5f672533 * Doxygenify comments
* Move addPassesToEmitAssembly back to Sparc.cpp because it really is
  sparc specific

llvm-svn: 4306
2002-10-28 01:02:24 +00:00
Chris Lattner
ecbd9d640d This header is renamed to MachineFunction.h
llvm-svn: 4304
2002-10-28 00:45:06 +00:00
Chris Lattner
778ffa3786 We don't need the forwarding typedef
llvm-svn: 4303
2002-10-28 00:44:09 +00:00
Misha Brukman
142795fd17 Changed MachineCodeForMethod' to MachineFunction'.
llvm-svn: 4301
2002-10-28 00:28:31 +00:00
Chris Lattner
e9a1ab1e0a Add support or other operand types
llvm-svn: 4298
2002-10-27 21:17:45 +00:00
Chris Lattner
2bc0fd8115 Prune #includes
llvm-svn: 4295
2002-10-27 20:49:47 +00:00
Chris Lattner
8f38efd9dd Add #include
llvm-svn: 4291
2002-10-27 19:08:03 +00:00
Chris Lattner
4eae2fc3ad Initial checkin of target support for X86 backend.
llvm-svn: 4287
2002-10-25 23:00:40 +00:00
Chris Lattner
65c82a0310 Initial checkin of Machine Code representation for X86 backend. This will
eventually be merged with the sparc backend.

llvm-svn: 4286
2002-10-25 23:00:13 +00:00
Chris Lattner
7a26bbcc83 Fix typo
llvm-svn: 4281
2002-10-25 22:53:56 +00:00
Chris Lattner
5ae74dd3ef * Remove unneccesary #includes
* Fix typeo in the (unused) MachineInstrInfo::isArith method

llvm-svn: 4275
2002-10-24 22:34:41 +00:00
Chris Lattner
e68a9a15dd Minor cleanups
llvm-svn: 4267
2002-10-23 01:11:51 +00:00
Chris Lattner
dfc8fbf16b - Two minor improvements to the MachineInstr class to reduce footprint and
overhead: Merge 3 parallel vectors into 1, change regsUsed hash_set to be a
    bitvector.  Sped up LLC a little less than 10% in a debug build!

llvm-svn: 4261
2002-10-22 23:16:21 +00:00
Chris Lattner
58781838b7 We need to know the call sites each function hosts
llvm-svn: 4258
2002-10-22 15:58:23 +00:00
Chris Lattner
535d54ef22 Allow modification of callee
llvm-svn: 4257
2002-10-22 15:57:58 +00:00
Chris Lattner
1fb6129889 Small space optimization: Make MachineOperands take 16 bytes instead of
20 on intel or 24 on sparc

llvm-svn: 4256
2002-10-22 00:15:13 +00:00
Chris Lattner
b565d3ac5b - Rename AnalysisUsage::preservesAll to getPreservesAll & preservesCFG to
setPreservesCFG to be less confusing.

llvm-svn: 4255
2002-10-21 20:00:28 +00:00
Chris Lattner
1157e5dafb Delete unused arguments to DSGraph::cloneInto method
llvm-svn: 4253
2002-10-21 19:50:29 +00:00
Chris Lattner
4410178282 - Add "ResolvingCaller" to the CallSite record. This keeps track of which
function was finally able to resolve the function call.  Adding this allows
    the TD pass to actually work right!
  - Temporarily disable dead node pruning.  This will be reenabled soon.

llvm-svn: 4252
2002-10-21 19:47:18 +00:00
Chris Lattner
7588e35aa8 Add another copy ctor form
llvm-svn: 4251
2002-10-21 15:32:34 +00:00
Chris Lattner
1276c50e7b As it turns out, we don't need a fully generic mapping copy ctor, we just need
something that maps through a std::map.  Since this simplified the client and
implementation code, do so now.

llvm-svn: 4250
2002-10-21 15:04:18 +00:00
Chris Lattner
f8b59c1c75 Make sure to initialize isArray member
llvm-svn: 4247
2002-10-21 13:38:07 +00:00
Chris Lattner
eed53d4b81 Remove a 'using' directives from a header file. Using directives cause
global changes, so aren't good for headers.

llvm-svn: 4245
2002-10-21 13:24:50 +00:00
Chris Lattner
cd13b5e27f Add a missing std:: qualifier
llvm-svn: 4244
2002-10-21 13:23:42 +00:00
Chris Lattner
ca982e6b42 Two callsites are equivalent even if they are from two completely different
call instructions

llvm-svn: 4241
2002-10-21 02:09:03 +00:00
Chris Lattner
2914391ab6 - Make DSCallSite not inherit from std::vector. Renamed methods slightly.
Make copy ctor have two versions to avoid dealing with conditional template
    argument.  DSCallSite ctor now takes all arguments instead of taking one
    and being populated later.

llvm-svn: 4240
2002-10-21 02:08:03 +00:00
Vikram S. Adve
85a358583f Remove spurious caller pointer in DSCallSite.
Also add functions to access pointer argument nodes cleanly.

llvm-svn: 4235
2002-10-20 21:41:02 +00:00
Chris Lattner
9c264543b5 Add isArray flag
llvm-svn: 4230
2002-10-20 20:28:35 +00:00
Vikram S. Adve
32689f8214 Added a first-class representation for each call site that can be
used in the DS graphs in DSGraph.h.  With that, the special-purpose
class BUDataStructure::CallSite is no longer needed here.

llvm-svn: 4229
2002-10-20 18:08:55 +00:00
Vikram S. Adve
2a6ec82970 Added a first-class representation for each call site that can be used
in the DS graphs.

llvm-svn: 4227
2002-10-20 18:04:43 +00:00
Chris Lattner
efc251af3d Convert typerec to be a structure instead of a pair
llvm-svn: 4226
2002-10-18 18:22:46 +00:00
Chris Lattner
d9b76794a0 Add interface for mod/ref info to be captures by dsgraphs
llvm-svn: 4222
2002-10-17 21:03:49 +00:00
Chris Lattner
68ac171c62 * Add data structures to BU pass to keep track of call sites for functions
* Reenable the TD analysis

llvm-svn: 4212
2002-10-17 04:23:05 +00:00
Chris Lattner
bb28060fb4 * Remove a lot of obsolete #if 0'd code
* Add a simple getNodeForValue method to access the ValueMap.

llvm-svn: 4211
2002-10-17 04:22:16 +00:00
Chris Lattner
80332e579c Use the forward declaration for GraphTraits instead of #including
the header

llvm-svn: 4210
2002-10-17 01:36:08 +00:00
Chris Lattner
df9733a0a1 Be const correct. Handle both DSGraph* and const DSGraph*'s
llvm-svn: 4208
2002-10-17 01:01:06 +00:00
Joel Stanley
128e78631f Added partial specialization of GraphTraits for the DominatorTree class.
llvm-svn: 4205
2002-10-16 23:26:00 +00:00
Chris Lattner
3702063ff3 The second element of the iterator is really an offset, not a link
llvm-svn: 4196
2002-10-16 01:43:11 +00:00
Chris Lattner
d135a2b550 Allow direct access to mergemap for printing
llvm-svn: 4191
2002-10-16 01:17:16 +00:00
Chris Lattner
7be670ef4b - Eliminate SymbolTable::ParentSymTab, ST::localLookup, and
Function::ParentSymTab.  These aren't needed at all.

llvm-svn: 4186
2002-10-15 21:26:29 +00:00
Chris Lattner
294eae6735 - Add an endianness field to the TargetData datastructure
llvm-svn: 4174
2002-10-14 22:41:13 +00:00
Vikram S. Adve
3cb2d3379d Removed misleading const keyword.
llvm-svn: 4169
2002-10-14 16:32:24 +00:00
Chris Lattner
5b41b28fb6 - Dramatically simplify the Constant::mutateReferences implementation,
allowing it to be called on all constant types (structures/arrays)

llvm-svn: 4160
2002-10-14 03:30:23 +00:00
Chris Lattner
fdf2ca9468 - Rename Instruction::First*Op to *OpsBegin, and Num*Ops to *OpsEnd to
reflect the fact that it's a range being defined.

llvm-svn: 4147
2002-10-13 19:39:16 +00:00
Chris Lattner
54905ed38c First crack at reimplementing graph traits for DSGraphs
llvm-svn: 4145
2002-10-13 19:31:34 +00:00
Vikram S. Adve
7387d96d6a Use vectors instead of hash_maps for issueGaps and conflictLists.
These hash lookups were a major sink of time because they happen so often!

llvm-svn: 4136
2002-10-13 00:37:46 +00:00
Misha Brukman
b4940744de Added capability to get execution count of a loop if it is a predictable
number of iterations.

llvm-svn: 4113
2002-10-11 05:34:32 +00:00
Misha Brukman
d55cfa6b94 Added helper functions in LoopInfo: isLoopExit and numBackEdges.
llvm-svn: 4112
2002-10-11 05:31:10 +00:00
Chris Lattner
0df2058775 Expose API to graph library to allow iteration over all nodes, even unreachable ones
llvm-svn: 4111
2002-10-10 22:31:31 +00:00
Chris Lattner
cbfb5d1eca Change reference
llvm-svn: 4110
2002-10-10 22:31:02 +00:00
Chris Lattner
2fd0924282 Rename DataStructureGraph.h to DSGraphTraits.h
llvm-svn: 4107
2002-10-10 20:36:37 +00:00
Chris Lattner
0acdba0025 - Add new Constant::replaceUsesOfWithOnConstant which has an end result
similar to User::replaceUsesOfWith but actually does the right thing for
    constants.

llvm-svn: 4102
2002-10-09 23:12:25 +00:00
Chris Lattner
7c1989dead Make isExtern() be a virtual function inherited from GlobalValue
llvm-svn: 4101
2002-10-09 23:11:33 +00:00
Chris Lattner
f4a42d7fb9 - Detemplatize UseTy<> in Value.h, because it's only instantiated for one
type!

llvm-svn: 4093
2002-10-09 00:42:03 +00:00
Chris Lattner
bdb409390d - Remove Value::use_push_back & Value::use_remove
llvm-svn: 4089
2002-10-09 00:25:01 +00:00
Chris Lattner
aa8b6d047c By default PHINode::removeIncomingValue will delete the phi node if the last
incoming value is deleted!

llvm-svn: 4076
2002-10-08 21:31:56 +00:00
Chris Lattner
3cf20c3f14 Expose isCriticalEdge & SplitCriticalEdge methods from crit-edges pass
llvm-svn: 4075
2002-10-08 21:06:27 +00:00
Chris Lattner
b9f59f1533 Expose new "recalculate" method from dominatorset
llvm-svn: 4074
2002-10-08 19:12:08 +00:00
Chris Lattner
a79cd8735c Fix bug in last checkin
llvm-svn: 4058
2002-10-07 17:13:22 +00:00
Chris Lattner
a186714d74 Implement operator= for SuccIterators
llvm-svn: 4055
2002-10-07 16:53:22 +00:00
Chris Lattner
3deb0bdf6c - Add new isExternal() method to GlobalVariable to mirror Function.
- doxygenize comments and add new comments

llvm-svn: 4046
2002-10-06 22:29:58 +00:00
Chris Lattner
bcb0197fe3 Remove commented out stuff
DataStructure.h doesn't include DSGraph.h now

llvm-svn: 4028
2002-10-02 22:14:17 +00:00
Chris Lattner
668457ea05 Move GlobalDSGraph class defn to the end of the file
llvm-svn: 4027
2002-10-02 21:55:52 +00:00
Chris Lattner
801fcdd060 This file doesn't need Pass.h
llvm-svn: 4026
2002-10-02 21:55:24 +00:00
Chris Lattner
858642be4c * Implement fully general merging of array subscripts on demand! This
does not handle the initial pointer index case yet though.

llvm-svn: 4011
2002-10-02 06:24:29 +00:00
Chris Lattner
0851fb32b7 Checkin the "meat" of the Data structure graph itself. I forgot to check
this in before.  :(

llvm-svn: 4009
2002-10-02 04:58:12 +00:00
Chris Lattner
5ee67379d9 - Remove the User::eraseOperand method which is never used, really
dangerous, and not something we want to expose.

llvm-svn: 4007
2002-10-01 23:41:17 +00:00
Chris Lattner
7f0db9917a Check in DataStructure rewrite so far.
llvm-svn: 3998
2002-10-01 22:34:45 +00:00
Vikram S. Adve
dddfcdc478 Added several more helper functions for construction MachineInstrs.
llvm-svn: 3983
2002-09-29 22:55:45 +00:00
Vikram S. Adve
0ab2587056 Minor change to interface for Create{Zero,Sign}ExtensionsInstructions.
llvm-svn: 3979
2002-09-29 21:53:31 +00:00
Chris Lattner
5c3fdd02af Simplify code a bit, add an assertion
llvm-svn: 3974
2002-09-29 21:37:08 +00:00
Vikram S. Adve
7e39b876eb Fixed method getReturnValue(): it should return NULL if the
callee does not return a value.

llvm-svn: 3968
2002-09-28 17:03:54 +00:00
Vikram S. Adve
1aed35b2e5 Simplified code that handles call args and rets, so it no longer
needs the RegClass list to be passed in.

llvm-svn: 3964
2002-09-28 16:56:59 +00:00
Chris Lattner
a9bc408104 First try at implementing the AliasSetTracker class. I'm sure it will need
revision as I start to use it though.

llvm-svn: 3954
2002-09-26 21:49:07 +00:00
Chris Lattner
9a954d1bc1 Checkin new loop-preheader insertion pass.
llvm-svn: 3943
2002-09-26 16:17:33 +00:00
Chris Lattner
51dd965704 - Fix bug in LoopInfo causing ParentLoop to be garbage
llvm-svn: 3940
2002-09-26 16:15:19 +00:00
Chris Lattner
dee21da2c0 - Add methods to ImmediateDominators & DominatorTree to allow updates
- Make DominatorTree::Node not inherit from std::vector

llvm-svn: 3938
2002-09-26 16:14:37 +00:00
Chris Lattner
aebc47d30a Add a new "DominatorSet::addDominator" method to allow updates
llvm-svn: 3937
2002-09-26 05:42:47 +00:00
Chris Lattner
4dddc16c8c - Add new methods to LoopInfo: getLoopPreheader, addBasicBlockToLoop.
These allow extra information to be easily gathered, and loopinfo to be
    updated.

llvm-svn: 3935
2002-09-26 05:32:43 +00:00
Chris Lattner
06076d8d3e - Add new ctor to BasicBlock to allow insertion before any BB, not just at
the end of the function.

llvm-svn: 3933
2002-09-26 05:03:17 +00:00
Chris Lattner
cbdfa73706 Converted SimpleStructMutation to take TargetData as a required pass.
llvm-svn: 3931
2002-09-26 00:17:18 +00:00
Chris Lattner
4b838cd6b5 Change LowerAllocations pass to 'require' TargetData instead of it being
passed in.

llvm-svn: 3930
2002-09-25 23:47:49 +00:00
Chris Lattner
8cbeb6c60a Convert TargetData to be an ImmutablePass
llvm-svn: 3928
2002-09-25 23:46:56 +00:00
Chris Lattner
941c5c9a70 ImmutablePass's don't need a runOnFunction, nor do they need to explicitly say
that they preserve all xforms

llvm-svn: 3925
2002-09-25 22:27:54 +00:00
Chris Lattner
8c104c3afa Convert BasicAA to be an immutable pass instead of a FunctionPass
llvm-svn: 3922
2002-09-25 22:00:18 +00:00
Chris Lattner
e7d8ee84e7 Add support for ImmutablePasses, which are not run, and cannot be
invalidated.

llvm-svn: 3921
2002-09-25 21:59:11 +00:00
Chris Lattner
59bfff25cb Checkin stub for Misha to implement
llvm-svn: 3919
2002-09-25 19:10:06 +00:00
Chris Lattner
442d220996 - Do not expose Critical Edge breaking mechanics outside the BCE pass, thus
removing it from Transforms/Local.h and from Transforms/Utils/*

llvm-svn: 3909
2002-09-24 15:51:54 +00:00
Chris Lattner
63940ae296 Expose passinfo from BreakCriticalEdges pass so that it may be "Required" by
other passes

llvm-svn: 3906
2002-09-24 15:42:27 +00:00
Chris Lattner
cd247490cd Add new BreakCriticalEdges pass
llvm-svn: 3902
2002-09-24 00:08:37 +00:00
Chris Lattner
c424fd7af2 There are no implicit gep forms of load and store anymore
llvm-svn: 3901
2002-09-24 00:08:01 +00:00
Chris Lattner
fba5394cf3 Make users of FindUsedTypes not have problems with linkage. This fixes
cwriter.

llvm-svn: 3899
2002-09-24 00:07:17 +00:00
Chris Lattner
8e66cea1a7 Group #includes better
llvm-svn: 3887
2002-09-23 17:45:52 +00:00
Anand Shukla
508121e5d9 Initial version: it adds 2 empty slots at the top of stack
llvm-svn: 3872
2002-09-21 04:58:26 +00:00
Vikram S. Adve
43881f46b0 Peephole optimization pass on final machine code.
llvm-svn: 3863
2002-09-20 16:33:03 +00:00
Vikram S. Adve
248e623726 Add erase() method for a single element.
llvm-svn: 3849
2002-09-20 00:55:57 +00:00
Vikram S. Adve
ed466a713a Added class MachineOptInfo as interface to target-specific
routines supporting machine code optimization.
Also added method MachineInstrInfo::getNOPOpCode().

llvm-svn: 3845
2002-09-20 00:52:09 +00:00
Vikram S. Adve
8d0bcb9568 Interface to target-specific routines that support machine code optimization.
llvm-svn: 3844
2002-09-20 00:49:21 +00:00
Vikram S. Adve
47303cde2d Add method MachineInstr::replace to rewrite a machine instruction in place.
llvm-svn: 3843
2002-09-20 00:47:49 +00:00
Chris Lattner
31516613bd Workaround for bug in GCC 3.1.1 iostreams library on sparc. It apprarently
isn't flushing an ostream when it is deleted.

llvm-svn: 3834
2002-09-19 20:49:25 +00:00
Chris Lattner
2cef6041d2 Fix namespace correctness bug
llvm-svn: 3798
2002-09-17 23:48:02 +00:00
Chris Lattner
ccf0fe57bc Remove extra #include
llvm-svn: 3776
2002-09-17 17:18:12 +00:00
Vikram S. Adve
da78de96b2 Fix typo in comment.
llvm-svn: 3773
2002-09-17 11:09:59 +00:00
Chris Lattner
45298a4ef3 Fix compile problem on linux. Noone should ever #include <inttypes.h>
directly.  Instead, include Support/DataTypes.h

llvm-svn: 3766
2002-09-16 20:44:19 +00:00
Vikram S. Adve
feebe5999b 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.

llvm-svn: 3759
2002-09-16 18:08:17 +00:00
Vikram S. Adve
5a92d517b0 Allow transformation DecomposeArrayRef(GetElementPtrInst* GEP) to
be invoked on a single instruction at a time, for use in other passes.

llvm-svn: 3751
2002-09-16 16:07:19 +00:00
Vikram S. Adve
9226baa6bc Add routines to update or erase operands (and to do so without external
assumptions about which operand number stores what operand).

llvm-svn: 3750
2002-09-16 16:06:12 +00:00
Vikram S. Adve
4045ba355d *** empty log message ***
llvm-svn: 3749
2002-09-16 16:01:41 +00:00
Vikram S. Adve
359bfe3943 Add support for passes that use a TargetMachine object.
llvm-svn: 3748
2002-09-16 16:01:39 +00:00
Vikram S. Adve
37d1a733b1 Add method MachineOperand::hasAllocatedReg().
llvm-svn: 3747
2002-09-16 15:58:54 +00:00
Vikram S. Adve
ef1f7d3e42 Add a version of ChooseRegOrImmed to handle numerical constants
introduced by InstrSelection.

llvm-svn: 3746
2002-09-16 15:58:34 +00:00
Vikram S. Adve
4aad6090ae Add method adjustAlignment so that stack slot alignments can be computed
in a target-dependent manner (because of the dang OFFSET in Sparc v9).

llvm-svn: 3745
2002-09-16 15:57:43 +00:00
Vikram S. Adve
59b3b6c07b Add methods to query about the representation of LLVM quantities (e.g.,
constants).  Useful for target-dependent LLVM transformations like
Preselection.

llvm-svn: 3743
2002-09-16 15:56:01 +00:00
Vikram S. Adve
354fc692dc *** empty log message ***
llvm-svn: 3741
2002-09-16 15:39:35 +00:00
Vikram S. Adve
8d2a9260ef Remove unnecessary include.
llvm-svn: 3723
2002-09-14 23:04:52 +00:00
Vikram S. Adve
263de0387d Break RA_DEBUG option into several levels to get better output.
llvm-svn: 3722
2002-09-14 22:18:37 +00:00
Vikram S. Adve
7cad54b354 Moving to lib/CodeGen/RegAlloc.
llvm-svn: 3718
2002-09-14 11:57:17 +00:00
Chris Lattner
547be87c13 Change the MallocInst & AllocaInst ctors to take the allocated type, not the
pointer type returned.

llvm-svn: 3711
2002-09-13 22:28:50 +00:00
Chris Lattner
b270065c97 Add a new BasicBlockPass::doInitialization/Finalization(Function &) pair of
methods that may be useful for BasicBlockPasses.

llvm-svn: 3689
2002-09-12 17:06:43 +00:00
Chris Lattner
2d1e19f9e2 Convert index type for getelementptr instruction from uint to long
llvm-svn: 3678
2002-09-11 01:16:19 +00:00
Chris Lattner
67487b291c Add convenience ctor to BranchInst
llvm-svn: 3675
2002-09-10 23:54:56 +00:00
Chris Lattner
7636598d94 Implement support for inserting an instruction into a basic block right when it
is created.

llvm-svn: 3651
2002-09-10 15:36:11 +00:00
Chris Lattner
9cf88346b6 Eliminate the GenericBinaryInst class
llvm-svn: 3649
2002-09-10 15:35:23 +00:00
Chris Lattner
01faec5813 * Eliminate GenericBinaryInst class
* Allow specifying where to insert a newly created SetCondInst

llvm-svn: 3648
2002-09-10 15:34:41 +00:00
Chris Lattner
303a74440f Eliminate the GenericBinaryInst class.
llvm-svn: 3647
2002-09-10 15:27:31 +00:00
Chris Lattner
9146e3b8e4 Eliminate setType method
Now the only way to set the type of a value is in the ctor for an object

llvm-svn: 3646
2002-09-10 15:26:27 +00:00
Chris Lattner
2550723883 Move TmpInstruction ctor to InstrSelection.cpp file
llvm-svn: 3622
2002-09-08 21:07:51 +00:00
Chris Lattner
85cf7de5b9 * Clean up some comments
* Move code out of header file to .cpp files, to make future changes easier
* Add arguments to classes so that they can be automatically inserted into their
  parent structure upon creation.

llvm-svn: 3604
2002-09-06 21:31:57 +00:00
Chris Lattner
1de93e0830 * Clean up indentation a bit
* Fix broken comments (copy and pasto)
* Remove irrelevant comment
* Add extra argument to function that causes it to get inserted into a module
  automatically.

llvm-svn: 3601
2002-09-06 20:47:31 +00:00
Chris Lattner
1cf6da5815 Include stub for correlated expression elimination pass
llvm-svn: 3597
2002-09-06 18:39:29 +00:00
Chris Lattner
c8554b6352 - Rename BreakCriticalEdge to the slightly more standard SplitCriticalEdge
llvm-svn: 3587
2002-09-06 02:35:11 +00:00
Chris Lattner
66c5dd4050 * Doxygenize API
* Add new functions for identifying and breaking critical edges

llvm-svn: 3586
2002-09-06 02:19:25 +00:00
Chris Lattner
d8e9501bf5 - Doxygenize comments
- Add new method to dominatorset: properlyDominates
- Add synonmys for operator[] to classes so that pointers to dominator
  information can be used more easily.
- Add API's to update dominator information

llvm-svn: 3585
2002-09-06 02:16:27 +00:00
Chris Lattner
205af87264 Make getAnalysisToUpdate<AnalysisType>() public so that transformation APIs
can update analysis information.

llvm-svn: 3584
2002-09-06 02:14:47 +00:00
Vikram S. Adve
055207a945 Add new function MachineInstrInfo::CreateZeroExtensionInstructions.
llvm-svn: 3582
2002-09-05 18:36:41 +00:00
Chris Lattner
e4bba98678 - Renamed Type::isIntegral() to Type::isInteger()
- Added new method Type::isIntegral() that is the same as isInteger, but
    also accepts bool.
SCVS: ----------------------------------------------------------------------

llvm-svn: 3572
2002-09-03 01:05:48 +00:00
Chris Lattner
9fc380645d Implement operator== and != for ranges
llvm-svn: 3571
2002-09-03 01:05:31 +00:00
Chris Lattner
88a7f572fb Remove duplicate #include
llvm-svn: 3567
2002-09-02 04:04:11 +00:00
Chris Lattner
b7f7350ba6 Add printing support to ConstantRange class
llvm-svn: 3566
2002-09-02 00:18:26 +00:00
Chris Lattner
0c4ea48b54 Initial implementation of ConstantRange support
llvm-svn: 3564
2002-09-01 23:53:39 +00:00
Chris Lattner
7c0515febe - Exposed SetCondInst::getInverseCondition & ::getSwappedCondition better
- Doxygenized iOperators.h

llvm-svn: 3561
2002-09-01 19:46:36 +00:00
Chris Lattner
0a487fa68e Convert cwriter to be a pass.
llvm-svn: 3557
2002-08-31 00:28:25 +00:00
Chris Lattner
838248b35a - Eliminate the last traces of the 'analysis' namespace
llvm-svn: 3550
2002-08-30 22:53:53 +00:00
Chris Lattner
39d3e99afe Update comments
llvm-svn: 3547
2002-08-30 22:51:21 +00:00
Chris Lattner
168cdaea1a Fix comments.
llvm-svn: 3546
2002-08-30 22:51:08 +00:00
Chris Lattner
bfffa18d20 Merged into ValueNumbering.cpp
llvm-svn: 3545
2002-08-30 22:30:51 +00:00
Chris Lattner
47f9a4a06a Initial implementation of basic value numbering
This file will probably go away at some point

llvm-svn: 3542
2002-08-30 20:30:03 +00:00
Chris Lattner
2b8ae06774 Initial version of LoadValueNumbering interface
llvm-svn: 3539
2002-08-30 20:27:48 +00:00
Chris Lattner
a9d7ed8985 Initial version of ValueNumbering interface
llvm-svn: 3538
2002-08-30 20:27:15 +00:00
Chris Lattner
4253b850c0 - PassInfo class keeps track of AnalysisGroups implemented by the Pass.
- Doxygenize comments

llvm-svn: 3532
2002-08-30 20:20:39 +00:00
Chris Lattner
3baff38916 - Pass now has AnalysisImpls class to implement getAnalysis() so that it is
correct even when called back by another passes run method.

llvm-svn: 3531
2002-08-30 20:19:49 +00:00
Chris Lattner
5545ec0631 Fix comments
llvm-svn: 3523
2002-08-29 20:08:39 +00:00
Chris Lattner
30a25af88c Make the getAnalyss<> members const. Using them does NOT modify the Pass object.
llvm-svn: 3522
2002-08-29 20:07:59 +00:00
Chris Lattner
cc9d7e01c9 Add support for turning an array of characters into a string.
llvm-svn: 3509
2002-08-26 17:53:56 +00:00
Anand Shukla
1e105cdb7c Changed so it gets linked properly
llvm-svn: 3508
2002-08-26 16:45:19 +00:00
Chris Lattner
69f833618d Convert comments to Doxygen style
llvm-svn: 3507
2002-08-25 22:54:55 +00:00
Vikram S. Adve
f699596601 Added function GetMemInstArgs and made FoldGetElemChain private.
llvm-svn: 3503
2002-08-24 21:03:10 +00:00
Vikram S. Adve
6fe717b03b Added support for type inquiry in subclasses of InstTreeNode.
llvm-svn: 3502
2002-08-24 21:02:42 +00:00
Chris Lattner
cb3870e441 Implement classof for SetCondInst so that instcombine doesn't break on dyn_cast<SetCondInst>
llvm-svn: 3493
2002-08-23 18:30:58 +00:00
Chris Lattner
9f18db8156 Eliminated the MemAccessInst class, folding contents into GEP class.
llvm-svn: 3488
2002-08-22 23:37:24 +00:00
Chris Lattner
20b85d96e4 Eliminated the MemAccessInst class, folding contents into GEP class.
llvm-svn: 3487
2002-08-22 23:37:20 +00:00
Chris Lattner
3fbdcb699a Load & Store Inst now no longer derive from MemAccessInst
llvm-svn: 3486
2002-08-22 22:54:10 +00:00
Chris Lattner
d123fc1e41 Load and Store now no longer derive from MemAccessInst. Indexing a load or
store is not possible anymore.

llvm-svn: 3482
2002-08-22 22:47:47 +00:00
Chris Lattner
48278223df doxygenize comments in header
llvm-svn: 3480
2002-08-22 22:46:20 +00:00
Chris Lattner
01ed913adb Add doxygen comments to AliasAnalysis class
llvm-svn: 3475
2002-08-22 21:22:25 +00:00
Chris Lattner
5d3710be84 Fix bug: test/Regression/Assembler/2002-08-22-DominanceProblem.ll
llvm-svn: 3473
2002-08-22 20:39:27 +00:00
Chris Lattner
04c9a37306 Checkin new alias analysis infrastructure
llvm-svn: 3464
2002-08-22 18:25:20 +00:00
Chris Lattner
2522ebee1b Remove unneccesary method
llvm-svn: 3452
2002-08-22 15:57:37 +00:00
Vikram S. Adve
3567460977 Just some extra comments.
llvm-svn: 3446
2002-08-22 03:03:10 +00:00
Vikram S. Adve
dba9c85e36 Add method copyOperands().
llvm-svn: 3445
2002-08-22 03:01:44 +00:00
Chris Lattner
78cb7cd03d Add a class that is useful for hacking around linking problem due to
pass implementations not being linked in when they are used if the
implementation is in a .a file.

  - Fighting with linking problem due to removing the ::ID elements.  Now the
    implementation .cpp files for analyses are not being included into gccas
    and friends because it is linking to the .a file and there is no explicit
    symbol reference to bring in the .o file.  The new IncludeFile hack is the
    result.

llvm-svn: 3434
2002-08-21 23:48:55 +00:00
Chris Lattner
c4bd846e84 - Split Dominators.h into Dominators.h & PostDominators.h
llvm-svn: 3432
2002-08-21 23:43:50 +00:00
Chris Lattner
c5c1d9ad89 - Implement the new AnalysisGroup feature, neccesary for Value#ing and pointer analysis
llvm-svn: 3425
2002-08-21 22:16:59 +00:00
Chris Lattner
bf3e8bf210 Add assertion checks to nail bugs early.
llvm-svn: 3424
2002-08-21 22:14:28 +00:00
Chris Lattner
48cb6df26f - Make Pass::lookupPassInfo a public member
- Fix Pass::getAnalysis<AnalysisType>() to use dynamic_cast instead of a
    static cast to handle the case where the cast from & two classes are not
    related via inheritance.

llvm-svn: 3423
2002-08-21 22:13:33 +00:00
Chris Lattner
6c83ee57c1 - Do not expose ::ID from any of the analyses anymore.
llvm-svn: 3417
2002-08-21 17:09:49 +00:00
Chris Lattner
b90f78e2b3 - Do not expose ::ID from any of the analyses anymore.
llvm-svn: 3416
2002-08-21 17:09:45 +00:00
Chris Lattner
a63cce4e99 - Eliminate the need for analyses to expose an ::ID member.
llvm-svn: 3414
2002-08-21 17:08:37 +00:00
Chris Lattner
417aa6666c Add missing forward decl
llvm-svn: 3413
2002-08-21 15:38:45 +00:00
Chris Lattner
edea38063b Add new SetCondInst::getInverseCondition() method.
llvm-svn: 3404
2002-08-20 18:17:09 +00:00
Chris Lattner
8f4f2153e5 - ConstantPointerRefs are now automatically removed from the module table
when they are destroyed, which makes Constant::destroyConstant an actually
    useful external interface.  Expose these methods publicly.
  - Implement destroyConstant on ConstPointerNull so that destroyConstant can
    be used on any derived type constant safely.

llvm-svn: 3378
2002-08-18 00:39:59 +00:00
Chris Lattner
9f776d426f Module's do not subclass from Value, so this code caused a segfault.
llvm-svn: 3376
2002-08-18 00:37:14 +00:00
Chris Lattner
30c534c3e1 Add Module::dump() method
llvm-svn: 3374
2002-08-17 23:32:42 +00:00
Chris Lattner
aac33658b1 Remove the last traces of the NOT instruction
llvm-svn: 3346
2002-08-15 16:14:49 +00:00
Vikram S. Adve
227bd369e5 Change opLabel numbers for Not and BNot.
Also, these tree nodes are now binary, not unary.

llvm-svn: 3344
2002-08-15 14:20:45 +00:00
Vikram S. Adve
c66b996e40 Added more helper functions for binary instructions emulating
unary Neg and Not: isNeg, isNot, getNegArgument, and getNotArgument.

llvm-svn: 3341
2002-08-15 14:15:48 +00:00
Chris Lattner
6a9d88347a Remove support for Not ConstantExpr. This simplifies the unary case to only
have to support the cast instruction, so the function is renamed to getCast.

llvm-svn: 3328
2002-08-14 18:24:09 +00:00
Chris Lattner
d909e03b2e Remove support for unary operators.
llvm-svn: 3326
2002-08-14 18:19:46 +00:00
Chris Lattner
7a018a27b2 Remove reference to GenericUnaryInst class
llvm-svn: 3325
2002-08-14 18:18:50 +00:00
Chris Lattner
0e17a44326 Remove support for unary instructions
llvm-svn: 3324
2002-08-14 18:18:28 +00:00
Chris Lattner
9a0912fb14 Remove constant propogation support for NOT instruction
llvm-svn: 3321
2002-08-14 18:17:07 +00:00
Chris Lattner
1783814b9f Expose two new static methods from BinaryOperator: createNeg, createNot
llvm-svn: 3314
2002-08-14 17:51:29 +00:00
Vikram S. Adve
afb9cae44d Add method MachineInstr::substituteValue() which substitutes
one Value with another one in all operands and implicit references
of the machine instruction.

Also add method MachineOperand::getVRegValueOrNull().

llvm-svn: 3307
2002-08-14 16:54:11 +00:00
Chris Lattner
3e63ddad5b - Rename ConstantGenericIntegral -> ConstantIntegral
- Add new methods to ConstantIntegral: getMaxValue, getMinValue,
   getAllOnesValue

llvm-svn: 3298
2002-08-13 17:50:18 +00:00
Chris Lattner
050aa81931 Return const char * const instead of std::string from get register name method
llvm-svn: 3294
2002-08-12 21:24:55 +00:00
Chris Lattner
4fbca59155 - Added a new superclass of ConstantBool/ConstantInt: ConstantGenericIntegral
- Moved InstCombine: isMaxValue, isMinValue, isAllOnesValue to Constants.h

llvm-svn: 3293
2002-08-12 21:21:21 +00:00
Chris Lattner
3575b5733a * IntervalPartition no longer derives from vector
llvm-svn: 3281
2002-08-09 22:52:06 +00:00
Chris Lattner
9bcfec701d Do not add an extra vtable to EVERY machineinstr created.
llvm-svn: 3280
2002-08-09 21:49:21 +00:00
Chris Lattner
d2d8928f1b UnaryOperator::create should take a name just like BinaryOperator::create
llvm-svn: 3279
2002-08-09 21:39:38 +00:00
Chris Lattner
8a4787495a * Removed extraneous #includes
* Fixed file headers to be consistent with the rest of LLVM
* Other minor fixes

llvm-svn: 3278
2002-08-09 20:08:06 +00:00
Chris Lattner
4d9fadc44a * Removed extraneous #includes
* Fixed file headers to be consistent with the rest of LLVM
* Other minor fixes

llvm-svn: 3277
2002-08-09 20:08:03 +00:00
Chris Lattner
eeb7564269 Change machinecode for instruction to not inherit from vector.
llvm-svn: 3274
2002-08-09 20:04:28 +00:00
Chris Lattner
98c71e5666 The second parameter of hash_set is the default, remove it.
llvm-svn: 3273
2002-08-09 19:40:42 +00:00
Chris Lattner
a21e315db4 - Cleaned up the interface to AnalysisUsage to take analysis class names
instead of ::ID's.
 - Pass::getAnalysis<> now no longer takes an optional argument

llvm-svn: 3265
2002-08-08 19:01:30 +00:00
Chris Lattner
50900b8381 - Cleaned up the interface to AnalysisUsage to take analysis class names
instead of ::ID's.
 - Pass::getAnalysis<> now no longer takes an optional argument

llvm-svn: 3263
2002-08-08 19:01:11 +00:00
Vikram S. Adve
34c7fef2d6 Add function GetConstantValueAsUnsignedInt.
llvm-svn: 3249
2002-08-04 20:55:59 +00:00
Vikram S. Adve
8159deecc3 Add MemAccessInst::getNumIndices().
llvm-svn: 3234
2002-08-03 13:22:36 +00:00
Chris Lattner
fd41c5e71b Changes to be GCC 3.1 friendly
llvm-svn: 3184
2002-07-31 19:31:59 +00:00
Chris Lattner
53d5b3111d Remove obsolete, confusing, method
llvm-svn: 3175
2002-07-31 01:45:02 +00:00
Vikram S. Adve
8491cdb932 Add GlobalDSGraph -- a common graph that holds externally visible nodes.
llvm-svn: 3169
2002-07-30 22:02:04 +00:00
Chris Lattner
372599ed03 Add hooks to get information out of concrete pass manager implementations
llvm-svn: 3164
2002-07-30 19:49:39 +00:00
Chris Lattner
12b9a2a7e6 Cleanup ConstantExpr handling:
* Correctly delete TypeHandles in AsmParser.  In addition to not leaking
   memory, this prevents a bug that could have occurred when a type got
   resolved that the constexpr was using
 * Check for errors in the AsmParser instead of hitting assertion failures
   deep in the code
 * Simplify the interface to the ConstantExpr class, removing unneccesary
   parameters to the ::get* methods.
 * Rename the 'getelementptr' version of ConstantExpr::get to
   ConstantExpr::getGetElementPtr

llvm-svn: 3160
2002-07-30 18:54:22 +00:00
Chris Lattner
c197551e58 * Implement stuff so that code can declare that they only depend on the CFG of
a function, not on anything else.  This speeds up GCCAS a lot.

llvm-svn: 3156
2002-07-30 16:27:32 +00:00
Chris Lattner
a4fb4b46c2 Implement constant propogation of logical (and, or, xor) expressions.
Fixes testcase: test/Regression/Transforms/ConstProp/logicaltest.ll

llvm-svn: 3153
2002-07-30 16:24:25 +00:00
Chris Lattner
4b68cd0c61 Expose instruction selection as a pass instead of a global function
llvm-svn: 3145
2002-07-30 03:55:29 +00:00
Chris Lattner
77cd530591 Add rough support for LLC passes
llvm-svn: 3144
2002-07-30 03:55:01 +00:00
Chris Lattner
dedfc5ccb3 Implement a new RemoveSuccessor function
llvm-svn: 3130
2002-07-29 22:32:06 +00:00
Chris Lattner
ef6729c9ca * Eliminate the Provided set. All Passes now finally just automatically
provide themselves.

llvm-svn: 3125
2002-07-29 21:03:38 +00:00
Chris Lattner
b202b77aab * Eliminate the Provided set. All Passes now finally just automatically
provide themselves.

llvm-svn: 3124
2002-07-29 21:03:33 +00:00
Chris Lattner
27795f655b * Fix comment descriptions
* Remove defaulted argument to ctor that is never used anyway
* Prevent copying and assignment

llvm-svn: 3122
2002-07-29 21:01:19 +00:00
Chris Lattner
ec2780457d * 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.

llvm-svn: 3116
2002-07-27 01:12:17 +00:00
Chris Lattner
3f47f1065b * 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.

llvm-svn: 3115
2002-07-27 01:12:15 +00:00
Chris Lattner
b934722f1b * Add support for different "PassType's"
* Add new RegisterOpt/RegisterAnalysis templates for registering passes that
  are to show up in opt or analyze
* Register Analyses now
* Change optimizations to use RegisterOpt instead of RegisterPass
* Add support for different "PassType's"
* Add new RegisterOpt/RegisterAnalysis templates for registering passes that
  are to show up in opt or analyze
* Register Analyses now
* Change optimizations to use RegisterOpt instead of RegisterPass
* Remove getPassName implementations from various subclasses

llvm-svn: 3112
2002-07-26 21:12:44 +00:00
Chris Lattner
ea9fb2a20a *** empty log message ***
llvm-svn: 3111
2002-07-26 21:11:42 +00:00
Chris Lattner
ac27223c6a * Add support for different "PassType's"
* Add new RegisterOpt/RegisterAnalysis templates for registering passes that
  are to show up in opt or analyze
* Register Analyses now
* Change optimizations to use RegisterOpt instead of RegisterPass
* Remove getPassName implementations from various subclasses

llvm-svn: 3110
2002-07-26 21:11:38 +00:00