Commit Graph

6852 Commits

Author SHA1 Message Date
John Criswell b65ddad4f4 Repaired the --enable and --disable options.
llvm-svn: 7239
2003-07-22 21:00:24 +00:00
John Criswell 5ec24d8733 Fixed the enable/disable options. The AC_ARG_ENABLE macro does not perform
the *action-if-not-given* code when the --disable option is used.
Rather, the AC_ARG_ENABLE macro sets the $enableval variable, which then needs
to be checked to determine if --enable, --disable, or neither was specified.

llvm-svn: 7238
2003-07-22 20:59:52 +00:00
Brian Gaeke 673ef4d7fb Add documentation for runOnMachineFunction()
llvm-svn: 7237
2003-07-22 20:53:20 +00:00
John Criswell cc0e805844 Made some corrections to the enable-llc_diffs option.
This should keep it from breaking for now.

llvm-svn: 7236
2003-07-22 20:07:49 +00:00
John Criswell c933eeb12b Generated a new configure script.
This script uses files within the new autoconf subdirectory and includes
changes from Brian Gaeke's recent changes to configure.ac.

llvm-svn: 7235
2003-07-22 19:18:09 +00:00
John Criswell 59bd6d6b9f Updated to use files within the autoconf subdirectory.
llvm-svn: 7234
2003-07-22 19:17:35 +00:00
John Criswell 7a3334d518 These are the autoconf files in their new home.
llvm-svn: 7233
2003-07-22 19:13:20 +00:00
John Criswell c0ffad16e0 Moving these files to the llvm/autoconf directory.
llvm-svn: 7232
2003-07-22 19:12:02 +00:00
John Criswell d92168a56f Moved configure.ac to the autoconf directory.
llvm-svn: 7231
2003-07-22 19:10:58 +00:00
Brian Gaeke a0a339af04 turn off DISABLE_LLC_DIFFS for x86.
llvm-svn: 7230
2003-07-22 18:28:17 +00:00
Chris Lattner 4f22f7e7d0 Add new testcase
llvm-svn: 7229
2003-07-22 16:18:09 +00:00
Vikram S. Adve c3c1a9ccdc (1) Pass 'VAR=string' arguments to gmake
(2) Detect LLVMDIR using the LEVEL variable in Makefile.
(3) To perform #2 propertly, use the same Makefile search rules as gmake.

llvm-svn: 7228
2003-07-22 12:35:28 +00:00
Vikram S. Adve eb04c29378 Fix comment.
llvm-svn: 7227
2003-07-22 12:08:58 +00:00
John Criswell ed81b4f310 Updated from the discussion on July 21, 2003.
Expanded upon testing priorities.

llvm-svn: 7225
2003-07-21 22:22:48 +00:00
Misha Brukman 6a6587ab02 Fixed misspelling.
llvm-svn: 7223
2003-07-21 21:58:16 +00:00
Chris Lattner c783297812 Simplify code a bit
llvm-svn: 7217
2003-07-21 19:56:49 +00:00
John Criswell d6dcbc6ce8 Added code that checks to see if a global variable is external before replacing
a load of the global variable with the variable's constant value.

llvm-svn: 7216
2003-07-21 19:42:57 +00:00
John Criswell 57886cb4da Regression test for the Instruction Combining optimizization.
This test helps to see if the optimization correctly handles variables that
are declared constant and external.

llvm-svn: 7215
2003-07-21 19:41:51 +00:00
Chris Lattner 37dc32a4b2 Remove unneccesary #ifdefs
llvm-svn: 7214
2003-07-21 19:23:31 +00:00
Chris Lattner 4d52e214bb Fix warnings
llvm-svn: 7213
2003-07-21 19:20:44 +00:00
Chris Lattner 361e9c8b97 Remove instloops library
llvm-svn: 7210
2003-07-21 19:07:27 +00:00
Misha Brukman 96c8d59c9c Eliminated dead code.
llvm-svn: 7209
2003-07-21 16:34:35 +00:00
Anand Shukla bd2d0577fb Added special consideration for instrumentation strategy
llvm-svn: 7208
2003-07-20 15:39:30 +00:00
Misha Brukman 63e14b5a4a Initialize the target architecture based on compiler defines, so if compiled on
x86 or Sparc, LLC will automatically default to that platform, no guessing
required. On another platform, it will default to `noarch' and will have to
guess which architecture to compile to.

llvm-svn: 7207
2003-07-18 22:21:40 +00:00
Anand Shukla 1db75a0f7c Added check for inlinable function
llvm-svn: 7206
2003-07-18 20:55:26 +00:00
Brian Gaeke 26bb3c1df6 Please, save your applause^H^H^H^H^H^H^H^Hflames for the end...
Avoid a fall-through in the (stubby) treatment of the longjmp intrinsic
call which causes llc & lli to core-dump.

Add a sort-of treatment of cast double to ulong. I am not really sure
what a user should expect to see upon casting a negative FP value to
unsigned long long. But with what is given here, I was able to write
a program that could cast -123.456 to ulong and back and get -123.0,
which seems like a step in the right direction.  GCC seems to give you
0. I don't know if I'd consider that useful.

These cases were coming up in GNU coreutils-5.0.

llvm-svn: 7205
2003-07-18 20:23:43 +00:00
Misha Brukman 1f6feb7bf4 Cleaned up the code which chooses the appropriate value for the file descriptor
to pass to dlsym() -- Linux/x86 wants 0 while Sparc/Solaris wants RTLD_SELF,
which is not zero. Thanks to Chris for the suggestion.

llvm-svn: 7204
2003-07-18 18:33:38 +00:00
Misha Brukman ba943afa97 Added a DEBUG() guard to a debug information printout.
llvm-svn: 7203
2003-07-18 18:03:45 +00:00
Anand Shukla 6d79113343 Added pass to instrument backedges for lightweight tracing
llvm-svn: 7202
2003-07-18 16:25:40 +00:00
Anand Shukla 89233e1c9a A pass to combine multiple backedges that go to same target
llvm-svn: 7201
2003-07-18 16:08:32 +00:00
Brian Gaeke ac7c5a5241 Use getClassB for load and store; we don't want to abort when we
try to load or store through a bool*.

llvm-svn: 7195
2003-07-17 21:30:06 +00:00
Brian Gaeke c55a920283 Fix typo in call to isUnresolvableFunc, which was breaking the build.
llvm-svn: 7194
2003-07-17 19:07:46 +00:00
John Criswell 0643ceafcf Dinakar and I fixed a bug where we were trying to get the initializer of
an external constant.  Since external constants don't have initializers, we
were failing on an assert() call in llvm/GlobalVariable.h.

llvm-svn: 7193
2003-07-17 19:06:55 +00:00
Brian Gaeke 110f07b5fe Added bits about MachineFunctionPass
llvm-svn: 7192
2003-07-17 18:53:20 +00:00
Vikram S. Adve aa694a6f47 Tests for globals with different kinds of behavior in DS Analysis.
llvm-svn: 7191
2003-07-16 21:48:38 +00:00
Vikram S. Adve d3bf70c006 (1) Added DSGraph::cloneReachableSubgraph and DSGraph::cloneReachableNodes
to clone the subgraph reachable from a set of root nodes, into the
    current graph, merging the global nodes into those in the current graph.
(2) Added DSGraph::updateFromGlobalGraph() to rematerialize nodes from the
    globals graph into the current graph in both BU and TD passes.
(3) Added hash_set<const GlobalValue*> InlinedGlobals: a set of globals to
    track which globals have been inlined into the current graph from
    callers or callees.  In the TD pass, such globals are up-to-date and
    do not need to be rematerialized from the GlobalsGraph.
(4) Added StripIncompleteBit/KeepIncompleteBit to remove incomplete bit
    when cloning nodes into the globals graph.

llvm-svn: 7190
2003-07-16 21:45:15 +00:00
Vikram S. Adve cf01ed5f75 Rematerialize nodes from the globals graph into the current graph
after all callees are inlined into the current graph.

NOTE: There's also a major bug fix for the BU pass in DataStructure.cpp,
which ensures that resolvable indirect calls are not moved out to the
globals graph, so that they are eventually inlined (if possible).

llvm-svn: 7189
2003-07-16 21:42:03 +00:00
Vikram S. Adve 03be4a96f3 (1) Rematerialize nodes from the globals graph into the current graph
after all callers are inlined into the current graph.
(2) Optimize the way a graph is inlined into its callees in the TD phase:
    (a) Use DSGraph::cloneReachableSubgraph to clone only a subgraph at
        each call site, for faster inlining.
    (b) Clone separately for the same callee at different call sites,
        since only the reachable subgraph is being cloned, not the entire
        caller graph.

llvm-svn: 7188
2003-07-16 21:40:28 +00:00
Vikram S. Adve dce6694ff4 Implement 2 important changes: (1) rematerialization from the globals graph,
and (2) faster inlining by cloning only reachable nodes.  In particular:
(1) Added DSGraph::cloneReachableSubgraph and DSGraph::cloneReachableNodes
    to clone the subgraph reachable from a set of root nodes, into the
    current graph, merging the global nodes into thos in the current graph.
    The TD pass now uses this for faster inlining, and so does the
    next function.
(2) Added DSGraph::updateFromGlobalGraph() to rematerialize nodes from the
    globals graph into the current graph in both BU and TD passes.
(3) `I' flags are removed from all nodes in the globals graph, because they
    are difficult to maintain correctly and are not needed anyway.
(4) Aux. function calls are only removed to the globals graph if they
    will never be resovled.  (This is what fixed gap.)  The immediate
    reason is that if we took these out of a function (and moved them to
    the globals graph) we would need to rematerialize these nodes into the
    function graph for every function in the BU pass.  The longer term
    problem is that we would need to find a way to remove them from the
    globals graph iff they have been resolved on all paths through the
    call graph.

llvm-svn: 7187
2003-07-16 21:36:31 +00:00
Vikram S. Adve 6c254f0534 Factor out the test for unresolvable external functions into
isUnresolvableFunc() (I thought I needed this externally.
I don't, but it's still nicer this way.)

llvm-svn: 7186
2003-07-16 21:25:17 +00:00
Misha Brukman e32251b56d Fixed the number translation scheme for the integer condition code registers: it
now works in instructions which require a 2-bit or 3-bit INTcc code.

Incidentally, that means that the representation of INTcc registers is now the
same in both integer and FP instructions. Thus, code became much simpler and
cleaner.

llvm-svn: 7185
2003-07-16 20:30:40 +00:00
Misha Brukman bc0ecb29c8 The name should really be `simm11' to follow the naming convention, but this has
no change in functionality.

llvm-svn: 7184
2003-07-16 20:27:44 +00:00
John Criswell af4d13026c Marked some of the phony targets are PHONY. This will hopefully speed
up builds a little bit since it will prevent GNU make from matching these
phony targets against implicit rules.

llvm-svn: 7183
2003-07-16 20:26:06 +00:00
Misha Brukman d49975cf29 No need for a second immediate field if the class already inherits one.
llvm-svn: 7182
2003-07-15 21:27:14 +00:00
Misha Brukman 4cf012d845 Encode predict = 1 by default, because the Sparc assembler does this.
llvm-svn: 7181
2003-07-15 21:26:49 +00:00
Misha Brukman c7efa119ac Fixed a bug: outputting name of variable instead of its value.
Also, placed DEBUG() guards around debug information so that the generated file
is much smaller and hence should be faster to preprocess/compile.

llvm-svn: 7180
2003-07-15 21:26:09 +00:00
Misha Brukman 1912eaf0a0 This optimization greatly enhances efficiency of creating new instructions by
masking and shifting operands directly into their place in the instruction,
instead of the old-fashioned way of ORing in each bit separately.

llvm-svn: 7179
2003-07-15 21:00:32 +00:00
Misha Brukman 384cb5dd10 Correctly handle calls to functions which are further away than 2**32 bits will
allow, i.e. make a sequence of instructions to enable an indirect call using
jump-and-link and 2 temporary registers (which we save and ultimately restore).

Warning: if the delay slot of a function call is used to do meaningful work and
not just a NOP, this behavior is incorrect. However, the Sparc backend does not
yet utilize the delay slots effectively, so it is not necessary to make an
overly complicated algorithm for something that's not used.

llvm-svn: 7178
2003-07-15 19:09:43 +00:00
Misha Brukman 528a37621b Clean up my last checkin: code is easier to read and explains the differences in
usage of the special file handle RTLD_SELF on Sparc/Solaris vs. 0 on Linux/x86.

llvm-svn: 7177
2003-07-15 15:58:26 +00:00
Misha Brukman 7225461edf On Sparc/Solaris, the special handle RTLD_SELF is used as a handle referring to
the program's executing image, not 0 as it is on Linux/x86 and possibly other
systems.

llvm-svn: 7176
2003-07-15 15:55:32 +00:00
Misha Brukman b402819ddf * Added support for the %ccr register
* FP double registers are now coded correctly
* Removed function which converted registers based on register types, it was
  broken (because regTypes are broken)

llvm-svn: 7175
2003-07-14 23:26:03 +00:00
Misha Brukman 7b14a19965 The word `separate' only has one `e'.
llvm-svn: 7174
2003-07-14 17:26:34 +00:00
Misha Brukman 7fdaab4f68 The word `separate' only has one `e'.
llvm-svn: 7173
2003-07-14 17:20:40 +00:00
Misha Brukman c8ccfe90af Fixed: </pre</p> => </pre></p>
llvm-svn: 7172
2003-07-14 17:05:20 +00:00
John Criswell ae648fa032 Merged in changes from PRE101 in the prerelease branch.
Specifically, this updates libtool to version 1.5 and adds the following:
	- Added the -only-static option that we added in our previous libtool.
	- Modified the autoconf macros so that libtool uses the -G option when
	  linking on Solaris.  This allows libraries with global variables with
	  constructors to automatically run those constructors when the
	  library is dlopened().

llvm-svn: 7171
2003-07-14 16:52:07 +00:00
Vikram S. Adve 6fa4b79587 Use uint32_t for table index and size: table will never be > 4GB.
Also, make Pointer type depend on architecture.

llvm-svn: 7170
2003-07-11 22:02:28 +00:00
Vikram S. Adve ac83df769b Trace loads and stores as they happen (stores were being
remembered in valuesStoredInFunction, but never traced at function return,
and that's too late to be finding the error anyway).
Stores trace both the value and the address being stored to,
but after some experience I think only values should be traced.
The pointer hash table just fills up far too quickly if every
store address were traced.

llvm-svn: 7169
2003-07-11 21:57:43 +00:00
Brian Gaeke b99d684839 If we have a constant pointer reference to a function, we were printing
out the entire llvm disassembly for the function at global constant-output
time, which caused the assembler to barf in 164.gzip. This fixes that
particular problem (though 164.gzip has other problems with X86 llc.)

llvm-svn: 7168
2003-07-11 21:57:01 +00:00
Brian Gaeke 5b04987a4c Fix some serious floating-point bugs (fixes test cases such as Oscar,
Fhourstones, McCat-vor, and many others...)

Printer.cpp: Print implicit uses for AddRegFrm instructions.  Break gas
bug workarounds up into separate stanzas of code for each bug.  Add new
workarounds for fild and fistp.

X86InstrInfo.def: Add O_ST0 implicit uses for more FP instrs where they
obviously apply. Also add PrintImplUses flags for FP instrs where they
are necessary for gas to understand the output.

llvm-svn: 7165
2003-07-11 18:18:35 +00:00
Anand Shukla b3d794a2c9 Added functionality to instrmentation pass
llvm-svn: 7161
2003-07-10 21:55:57 +00:00
Misha Brukman 5258e59908 Fixed grammatical error.
llvm-svn: 7160
2003-07-10 21:38:28 +00:00
Vikram S. Adve 4f420ce3a3 Several important bug fixes:
(1) Cannot use ANDN(ot), ORN, and XORN for boolean ops, only bitwise ops.

(2) Conditional move instructions must distinguish signed and unsigned
    condition codes, e.g., MOVLE vs. MOVLEU.

(3) Conditional-move-on-register was using the cond-move-on-cc opcodes,
    which produces a valid-looking instruction with bogus registers!

(4) Here's a really cute one: dividing-by-2^k for negative numbers needs to
    add 2^k-1 before shifting, not add 1 after shifting.  Sadly, these
    are the same when k=0 so our poor test case worked fine.

(5) Casting between signed and unsigned values was not correct:
    completely reimplemented.

(6) Zero-extension on unsigned values was bogus: I was only doing the
    SRL and not the SLLX before it.  Don't know WHAT I was thinking!

(7) And the most important class of changes: Sign-extensions on signed values.
    Signed values are not sign-extended after ordinary operations,
    so they must be sign-extended before the following cases:
	-- passing to an external or unknown function
	-- returning from a function
	-- using as operand 2 of DIV or REM
	-- using as either operand of condition-code setting operation
           (currently only SUBCC), with smaller than 32-bit operands


Also, a couple of improvements:

(1) Fold cast-to-bool into Not(bool).  Need to do this for And, Or, XOR also.

(2) Convert SetCC-Const into a conditional-move-on-register (case 41)
    if the constant is 0.  This was only being done for branch-on-SetCC-Const
    when the branch is folded with the SetCC-Const.

llvm-svn: 7159
2003-07-10 20:07:54 +00:00
Vikram S. Adve 8ea738a9ff Bug fix in creating constants: need 1U << 31, not 1 << 31.
llvm-svn: 7158
2003-07-10 19:48:19 +00:00
Vikram S. Adve 2f90c823a2 Fold cast-to-bool into not. Later, this should also be folded into other
boolean operations: AND, OR, XOR.

llvm-svn: 7157
2003-07-10 19:47:42 +00:00
Vikram S. Adve e2e50f2880 Values stored in CallArgsDescriptor cannot be const.
llvm-svn: 7156
2003-07-10 19:46:15 +00:00
Vikram S. Adve abf331db03 isMarkedForSpill() should be const.
llvm-svn: 7155
2003-07-10 19:45:28 +00:00
Vikram S. Adve 689adb19b0 Change interface to MachineInstr::substituteValue to specify more precisely
which args can be substituted: defsOnly, defsAndUses or usesOnly.

llvm-svn: 7154
2003-07-10 19:45:07 +00:00
Vikram S. Adve 39587d6264 Print out all neighbors in interference graph, not just higher-numbered ones.
llvm-svn: 7153
2003-07-10 19:43:33 +00:00
Vikram S. Adve 5224b19deb Several fixes to handling of int CC register:
(1) An int CC live range must be spilled if there are any interferences,
    even if no other "neighbour" in the interf. graph has been allocated
    that reg. yet.  This is actually true of any class with only one reg!

(2) SparcIntCCRegClass::colorIGNode sets the color even if the LR must
    be spilled so that the machine-independent spill code doesn't have to
    make the machine-dependent decision of which CC name to use based on
    operand type: %xcc or %icc.  (These are two halves of the same
register.)

(3) LR->isMarkedForSpill() is no longer the same as LR->hasColor().
    These should never have been the same, and this is necessary now for #2.

(4) All RDCCR and WRCCR instructions are directly generated with the
    phony number for %ccr so that EmitAssembly/EmitBinary doesn't have to
    deal with this.

llvm-svn: 7152
2003-07-10 19:42:55 +00:00
Vikram S. Adve 6528067646 Several fixes to handling of int CC register:
(1) An int CC live range must be spilled if there are any interferences,
    even if no other "neighbour" in the interf. graph has been allocated
    that reg. yet.  This is actually true of any class with only one reg!

(2) SparcIntCCRegClass::colorIGNode sets the color even if the LR must
    be spilled so that the machine-independent spill code doesn't have to
    make the machine-dependent decision of which CC name to use based on
    operand type: %xcc or %icc.  (These are two halves of the same register.)

(3) LR->isMarkedForSpill() is no longer the same as LR->hasColor().
    These should never have been the same, and this is necessary now for #2.

(4) All RDCCR and WRCCR instructions are directly generated with the
    phony number for %ccr so that EmitAssembly/EmitBinary doesn't have to
    deal with this.

llvm-svn: 7151
2003-07-10 19:42:11 +00:00
Vikram S. Adve fc329cd57b *** empty log message ***
llvm-svn: 7150
2003-07-10 19:32:38 +00:00
Vikram S. Adve f8c303d344 Just documentation.
llvm-svn: 7149
2003-07-10 19:31:26 +00:00
Vikram S. Adve 5fc4aee04e Add phony target "bytecode" to ensure that it works in recursive makes.
llvm-svn: 7147
2003-07-10 19:25:29 +00:00
Misha Brukman c18333ac0a Lowercase versions of `occurrence' need to be spelled correctly, too.
llvm-svn: 7142
2003-07-10 17:05:26 +00:00
Misha Brukman fd3e0afe65 Move the space separator to where it really belongs: in the print statement, not
in a variable assignment.

llvm-svn: 7141
2003-07-10 16:52:41 +00:00
Misha Brukman 069e6b5be0 `Occurrence' has no `a' and the `r' is doubled.
llvm-svn: 7140
2003-07-10 16:49:51 +00:00
Misha Brukman ecfc0d2d3c Converted tabs to spaces.
llvm-svn: 7139
2003-07-10 16:35:17 +00:00
Misha Brukman 1194d54975 Some beautification changes (tabs to spaces, removed extra blank lines);
no functionality changed.

llvm-svn: 7138
2003-07-09 17:33:50 +00:00
Vikram S. Adve fa6ede03b1 Simplified DOTRACING flag.
llvm-svn: 7135
2003-07-08 23:40:48 +00:00
John Criswell 71139f24d0 Corrected the Table of Contents.
Corrected capitalization of subheadings.
Created a new subsection for compiling the C front end and moved all references
to it there.
Updated the disk space requirements to reflect the need for the binary C front
end and the optional C front end source.
Added information on unpacking the distribution to the summary section.
Moved autoconf environment variables to the autoconf section.
Changed make to gmake.
Removed some of the precise directions for unpacking the archives.
Fixed some formatting inconsistencies (headings that were not centered).

llvm-svn: 7132
2003-07-08 20:35:59 +00:00
Vikram S. Adve 3b7c2a4db7 Pointer hash table reallocation code seems never to have been tested!
Unfortunately, reallocation also means that the pointer numbering will
change, so increase table size to try to avoid it.

llvm-svn: 7130
2003-07-08 18:42:44 +00:00
Vikram S. Adve b09caca804 Native libraries (libinstr*.a) should not have been taken out when
taking out the rule for compiling the test driver.
We need the native libraries for libinstr because they are directly
linked into the native CBE or LLC code.  That is the only practical
way to debug them!

llvm-svn: 7129
2003-07-08 18:40:58 +00:00
Vikram S. Adve eb44eb1e08 Use libinstr.$(ARCH).a instead of libinstr64.a
Also, $(RM) needs -f flag.

llvm-svn: 7128
2003-07-08 18:39:51 +00:00
Vikram S. Adve 6c9dc89ba5 *** empty log message ***
llvm-svn: 7126
2003-07-08 15:39:02 +00:00
John Criswell b99b317cba Removed size_t from the parameter list of the malloc() prototype in generated C
code.  This prevents a compiler warning on Sparc that causes the tests to fail.

llvm-svn: 7125
2003-07-08 14:52:09 +00:00
Misha Brukman 222639708e Stop using the `Offset' variable, as we are cycling through the bits of a field
initializer and the loop index variable already carries the offset information
that we need.

llvm-svn: 7123
2003-07-07 22:30:44 +00:00
Misha Brukman f75934fe93 Fixed indentation.
llvm-svn: 7122
2003-07-07 22:28:42 +00:00
Misha Brukman 6d1871c28b Removed an extra slash that appears in the path name when these variables are
combined with a '/' separating them.

llvm-svn: 7121
2003-07-07 22:27:05 +00:00
Misha Brukman ea6e7a5d72 Elaborated assembly syntax of instructions in the comments.
llvm-svn: 7120
2003-07-07 22:18:42 +00:00
Misha Brukman 25a49f0cf1 Removed unnecessary assignment (it was taken care by a superclass) and clarified
some comments.

llvm-svn: 7119
2003-07-07 22:18:06 +00:00
Misha Brukman 6aa98680fb * Made $Template refer to a path relative to the checked-out tree
* Made error messages print out what directory failed chdir()
* Put quotes around search arguments to grep
* Use `egrep' instead of `grep -e' because they are equivalent but `grep' does
  not have the `-e' option on Sparc/Solaris
* Added `--enable-jit' to the ./configure command because both X86 and Sparc
  have JITs and we want them to be tested
* Fixed the regular expressions parsing the changes in CVS which were causing
  the script to die

llvm-svn: 7118
2003-07-07 21:27:40 +00:00
John Criswell ed9fc328cc Fixed the directions for building the C front end.
llvm-svn: 7117
2003-07-07 19:29:20 +00:00
John Criswell c2ca0c44c8 Added information about how to unpack the distribution for those who do not
have access to CVS.

llvm-svn: 7116
2003-07-07 19:27:35 +00:00
Brian Gaeke c48e3fdffd Insert workaround for GAS bug in assembling FLD/FSTP XWORD PTR [...]
instructions, by outputting them as bytes.

llvm-svn: 7115
2003-07-07 18:34:20 +00:00
Misha Brukman c1db0fdd7e Moved RegClassIDs enum to be next to the RegTypes enum.
llvm-svn: 7114
2003-07-07 16:52:39 +00:00
Vikram S. Adve 55c8e21073 Correction to last fix: Pointer types do not return true in Type::IsIntegral().
llvm-svn: 7113
2003-07-06 22:50:31 +00:00
Vikram S. Adve 3bb921e8df Choose register instead of immediate for ConstantExpr in ChooseRegOrImmed.
llvm-svn: 7112
2003-07-06 20:33:21 +00:00
Vikram S. Adve d09c4c34c0 Major bug fix though it happened rarely (only on a compare after an
integer overflow):
We need to use %icc and not %xcc for comparisons on 32-bit or smaller
integer values.

llvm-svn: 7111
2003-07-06 20:13:59 +00:00
Vikram S. Adve 95b36820bb Regression test for bug in reg. allocation that was using %xcc instead
of %icc even for 32-bit and smaller comparisons.

llvm-svn: 7110
2003-07-06 20:12:18 +00:00
Vikram S. Adve c4499d6cb1 Make the RegClassID values public -- there is no other way to get them.
llvm-svn: 7109
2003-07-06 19:53:59 +00:00
Brian Gaeke d5676e8607 Add -d option to trust the disassembler.
llvm-svn: 7105
2003-07-03 21:44:32 +00:00
Brian Gaeke 5b343a4ba1 here little scriptie, nice scriptie...
llvm-svn: 7104
2003-07-03 21:15:02 +00:00
Misha Brukman bb95605448 Apparently, the "regType" and "regClass" used in the Sparc backend are not both
correct: empirically, "regType" is wrong for a number of registers. Thus, one
can only rely on the "regClass" to figure out what kind of register one is
dealing with.

This change switches to using only "regClass" and adds a few extra DEBUG() print
statements and a few clean-ups in comments and code, mostly minor.

llvm-svn: 7103
2003-07-03 18:36:47 +00:00
Sumant Kowshik 2b30ecdb77 Added support for poolallocarray and poolmakeunfreeable. The latter is used by the SAFECode project
llvm-svn: 7102
2003-07-03 17:55:47 +00:00
John Criswell 9558399227 Fixed an error in the pathname to LLVMGCCDIR for the pre-built binaries (forgot
that <> denotes a tag).

llvm-svn: 7100
2003-07-03 16:49:40 +00:00
John Criswell 6e0f34d4c2 Added information on software requirements for unpacking the archives that we
will eventually distribute.

llvm-svn: 7099
2003-07-03 16:43:01 +00:00
Misha Brukman 3aac8e11de * Reworded a bit about JITs (I don't like acronyms followed by 's)
* Added JIT capability to the LLI description section
* LLC is quasi-x86-capable

llvm-svn: 7098
2003-07-03 16:29:36 +00:00
John Criswell 4f0dde59cd Added another remark on how building the C front end is optional.
llvm-svn: 7097
2003-07-03 16:03:39 +00:00
John Criswell c5eb46092c Performed a major update for the pre-release.
Attempted to better structure and order the document.
Added more information about autoconf, the build system, and how to build LLVM.
Added directions on how to build the C front end.
Added a section on common problems and their solutions.

llvm-svn: 7096
2003-07-03 16:01:38 +00:00
John Criswell 163110df31 Adding a web page on how to start a new LLVM Project.
llvm-svn: 7095
2003-07-03 15:37:52 +00:00
Chris Lattner cedbb88d05 Reuse the values if they are constants: this is important so that we index into the right structure field
This fixes bug: BasicAA/2003-07-03-BasicAACrash.ll

llvm-svn: 7093
2003-07-03 06:42:38 +00:00
Chris Lattner 1646906d18 New testcase
llvm-svn: 7092
2003-07-03 06:29:15 +00:00
Chris Lattner 117da20334 Remove globals more aggressively from graphs.
Fix a bug where we removed nodes that were marked U.

llvm-svn: 7090
2003-07-03 02:03:53 +00:00
Chris Lattner 79c2e891c0 INCLUDE_PARENT_GRAPH is required
llvm-svn: 7089
2003-07-02 23:57:21 +00:00
Chris Lattner c812e5f44e INCLUDE_PARENT_GRAPH is required!
llvm-svn: 7088
2003-07-02 23:57:05 +00:00
Chris Lattner 9a75369b74 Disable incorrect mustalias code
llvm-svn: 7087
2003-07-02 23:56:51 +00:00
Chris Lattner 959177fb96 Remove space at end of line
llvm-svn: 7084
2003-07-02 23:44:15 +00:00
Chris Lattner 10bcbf402a Remove dead method
llvm-svn: 7083
2003-07-02 23:43:06 +00:00
Chris Lattner 7fd198806a Fix how we are handling unreachable functions. This DRAMATICALLY improves efficiency
llvm-svn: 7082
2003-07-02 23:42:48 +00:00
John Criswell 68c49640b7 Updated prior to the pre-release.
Removed items which are done (or near completion).
Added new items so that we don't forget them.

llvm-svn: 7081
2003-07-02 23:03:18 +00:00
Misha Brukman 97d3ce313b The word `open' was really intended to be `option'.
llvm-svn: 7080
2003-07-02 21:20:04 +00:00
John Criswell e59e2fdbc8 Removed the --enable-profiling option.
llvm-svn: 7079
2003-07-02 21:16:06 +00:00
John Criswell 61471078af Removed the --enable-profiling option (again).
llvm-svn: 7078
2003-07-02 20:49:38 +00:00
Chris Lattner cd7482b354 Keep track of how many inlinings are performed
llvm-svn: 7076
2003-07-02 20:24:42 +00:00
Chris Lattner d3d5c5c98e Try using trivially dead deletion
llvm-svn: 7075
2003-07-02 19:49:11 +00:00
Misha Brukman 20d93ca01d * Force all "don't care" bits to 0 so that there are absolutely no unset bits in
the TableGen descriptions; all unset bits are thus errors.
* As a result, found and fixed instructions where some operands were not
  actually assigned into the right portion of the instruction.

llvm-svn: 7074
2003-07-02 19:37:48 +00:00
Misha Brukman eccc0dac91 The classes F4_3 and F4_4 have an `rd' operand that needs to be set.
llvm-svn: 7073
2003-07-02 18:27:47 +00:00
Misha Brukman 81951e1142 Properly fix instruction syntax in comments, using `imm' for instructions that
use an immediate value instead of a register.

llvm-svn: 7072
2003-07-02 18:15:43 +00:00
Misha Brukman 6f9caec57f Fixed instruction syntax in the comments (specifies how instr is used).
llvm-svn: 7071
2003-07-02 18:02:58 +00:00
Misha Brukman 7dee443c1c * If compiling on X86 or Sparc, automagically enable the JIT for that arch
* Setting ENABLE_X86_JIT or ENABLE_SPARC_JIT on the `make' command-line will
  force the inclusion of that JIT on a different architecture
* If neither JIT is enabled (e.g., compiling on a different architecture), the
  -march option will not be available to LLI.
* As a side effect of the $ARCH variable, the Sparc LLI can now link just a bit
  faster by not including the x86 library.

llvm-svn: 7070
2003-07-02 17:53:19 +00:00
John Criswell 7ace0c39c8 Removed the CPPFLAGS and CFLAGS variables since the -DHAVE_CONFIG_H messes
up the test suite.  Since all the LLVM software assumes that config.h exists,
we can just do away with it for now.

llvm-svn: 7069
2003-07-02 16:53:44 +00:00
Vikram S. Adve 7a4abf89fa Force fixed-size but large alloca objects to the dynamically allocated
area to avoid using up precious stack space within the 4095 offset limit
from %fp.  Such objects that would themselves live at a large offset
were being put there already so this is a simple change.

llvm-svn: 7066
2003-07-02 06:59:22 +00:00
Chris Lattner ad7b9c1810 Remove dead Nodes list
llvm-svn: 7065
2003-07-02 06:06:34 +00:00
Chris Lattner 116f68a990 Complete rewrite of td pass
llvm-svn: 7064
2003-07-02 04:39:44 +00:00
Chris Lattner 049d558988 Print collapsed to match the paper
llvm-svn: 7063
2003-07-02 04:39:27 +00:00
Chris Lattner 0b61cdd191 Reduce amount of work we do calculating mustaliases if the arg is a global
llvm-svn: 7062
2003-07-02 04:39:13 +00:00
Chris Lattner 03f3cb1af7 Add support for ParentGraph only when building in debug mode
Minor cleanups, reenable folding of call nodes to external functions

llvm-svn: 7061
2003-07-02 04:38:49 +00:00
Chris Lattner db6e0ac800 Add some functions to the blacklist
llvm-svn: 7060
2003-07-02 04:38:00 +00:00
Chris Lattner 5a3d63d5aa Make the BU closure keep track of which actual calls happen
Minor cleanups

llvm-svn: 7059
2003-07-02 04:37:48 +00:00
Chris Lattner 3ff99e3731 Make local pass print out its progress
llvm-svn: 7058
2003-07-02 04:37:26 +00:00
Chris Lattner 60321c2c49 Add new methods
llvm-svn: 7057
2003-07-02 04:37:00 +00:00
Chris Lattner b10e385c01 Disable the parent graph code when not compiled in DEBUG mode
llvm-svn: 7056
2003-07-02 04:33:55 +00:00
Vikram S. Adve 9a8f8e3e95 Leak fix: delete old objects before reallocation in an assignment operator!
llvm-svn: 7055
2003-07-02 01:25:44 +00:00
Vikram S. Adve 1fce4cfa95 Minor beautification: fold a couple of lines of code.
llvm-svn: 7054
2003-07-02 01:24:00 +00:00
Vikram S. Adve cf952cb504 (1) Major bug fix: DecomposeArrayRef() replaces its argument instr. and
deletes it, but we were merrily trying to fix the operands of that
    instruction anyway!  Instead, fix the replacement instruction.

(2) An Improvement: Check for and extract global values in all operands,
    not just in known pointer operands.  For example, they can occur in
    call arguments, and probably other unforeseeable places as well.
    This also eliminates the special-case handling of Load and Store.

llvm-svn: 7053
2003-07-02 01:23:15 +00:00
Vikram S. Adve fa1dde06aa A def. operand of a machine instruction may be an ordinary Value*,
not just an Instruction*, at least in one unfortunate case:
the first operand to the va_arg instruction.
Modify ValueToDefVecMap to map from Value*, not Instruction*.

llvm-svn: 7052
2003-07-02 01:16:01 +00:00
Vikram S. Adve b5f8ada255 Bug/case fixes:
(1) select: Ok to convert a pointer to a float or double.
(2) regalloc: Some MachineInstr* for caller-saving code before a call
    were being inserted before and after the call!
(3) Don't insert the caller-saving instructions in the
    MachineCodeForInstruction for the Call instruction.
    *All* instructions generated by register allocation need to be
    recorded in those maps, but it needs to be done uniformly.

llvm-svn: 7051
2003-07-02 01:13:57 +00:00
John Criswell 29eafac9ff Added the ARCH variable so that some of the Makefiles can perform actions based
upon the target hardware architecture (as opposed to always checking the OS).

llvm-svn: 7050
2003-07-01 22:07:39 +00:00
John Criswell 10d05e2a53 Fixed a broken hyperlink.
Moved commas outside of hyperlinks in the contributors list.

llvm-svn: 7049
2003-07-01 21:55:57 +00:00
Chris Lattner afede5d65b TD pass keeps track of which functions have complete arguments
llvm-svn: 7048
2003-07-01 21:12:10 +00:00
Chris Lattner 931978ab2b Add new operator= impl
llvm-svn: 7047
2003-07-01 21:11:59 +00:00
Chris Lattner 8309574e8d Fix bug: Regression/Other/2002-03-11-ExprAssertion.ll
llvm-svn: 7046
2003-07-01 21:08:52 +00:00
Chris Lattner c5703edeb6 Fix testcase failing because of change of output
llvm-svn: 7045
2003-07-01 21:03:30 +00:00
John Criswell 57c57a1bbf Updated the name of the LLVM disassembler so that the test does not fail.
llvm-svn: 7044
2003-07-01 20:31:45 +00:00
Chris Lattner a4f746d536 new testcase
llvm-svn: 7043
2003-07-01 18:52:01 +00:00
Chris Lattner b6e3fb6350 Move to test/programs/LLvmsource
llvm-svn: 7037
2003-07-01 17:50:11 +00:00
Chris Lattner 972e76f00d Ok, I'm a moron. Fixed now
llvm-svn: 7035
2003-07-01 17:15:11 +00:00
Chris Lattner 31f1db746b Fix major problem that was causing all kinds of nasty foldings
llvm-svn: 7034
2003-07-01 17:10:50 +00:00
Chris Lattner 09711cc547 Make testcase a bit more interesting
llvm-svn: 7033
2003-07-01 16:28:32 +00:00
Chris Lattner b7d4e63b23 New testcase
llvm-svn: 7032
2003-07-01 16:28:20 +00:00
Chris Lattner 23428214e9 Rework TD pass to work with the precise call graph constructed by the BU phase
llvm-svn: 7031
2003-07-01 16:28:11 +00:00
Chris Lattner e809e3afd8 Do not treat global variables as functions! (and assert failing)
llvm-svn: 7030
2003-07-01 16:27:53 +00:00
Chris Lattner 8a30ad6d89 Dont' print scalar nodes for ConstantPointerRefs
llvm-svn: 7029
2003-07-01 16:27:32 +00:00
Chris Lattner 0c770cd936 Add new methods to BUDS for keeping track of a precise call graph
llvm-svn: 7028
2003-07-01 16:27:15 +00:00
Chris Lattner 269467d216 Minor cleanups
llvm-svn: 7027
2003-07-01 16:04:18 +00:00
Chris Lattner f5410e8237 Update to configure the tree before building it.
llvm-svn: 7026
2003-07-01 16:02:00 +00:00
John Criswell 33ba19f8f7 The Makefile now adds autoconf information to the compiler and linker flag
variables instead of overwriting those variables.  This makes it more flexible
and keeps some of the test Makefiles from breaking.

llvm-svn: 7025
2003-07-01 15:02:59 +00:00
John Criswell 7320d2fd32 Renamed all of the LObj* variables (which represent libtool objects) to Obj*.
One of the test Makefiles uses the same variable names for something else,
and this was probably interfering with it.

llvm-svn: 7024
2003-07-01 14:52:28 +00:00
Chris Lattner 40c4f1357b Fix verbose support bug
llvm-svn: 7023
2003-06-30 22:41:22 +00:00
John Criswell 45654a1cbe Removed the LIBS environment variable as it interferes with the tests and
is currently unused.

llvm-svn: 7022
2003-06-30 22:33:53 +00:00
John Criswell 3a821176f1 Added John Criswell to the contributors list.
llvm-svn: 7021
2003-06-30 22:20:46 +00:00
John Criswell c7418da8c1 Removed the --enable-profiling and --enable-verbose options.
llvm-svn: 7020
2003-06-30 22:17:28 +00:00
John Criswell 61efc69ce3 Removed the --enable-verbose option.
llvm-svn: 7019
2003-06-30 22:16:39 +00:00
John Criswell e17afeb1b4 Adding in sample project tree.
llvm-svn: 7018
2003-06-30 22:13:48 +00:00
John Criswell 568d13cf93 Adding in projects subtree.
llvm-svn: 7017
2003-06-30 22:12:19 +00:00
Chris Lattner c0822444fd This causes an assert in the assembler. :(
llvm-svn: 7016
2003-06-30 22:03:21 +00:00
John Criswell 0f929780d2 Removed these files as they are replaced by autoconf.
llvm-svn: 7015
2003-06-30 22:01:54 +00:00
John Criswell 3ef61afb76 Merged in autoconf branch. This provides configuration via the autoconf
system.

llvm-svn: 7014
2003-06-30 21:59:07 +00:00
Chris Lattner 53426e6526 Setjmp should always return zero if we don't implement longjmp. This avoids
leaving trash in the register, fixing anagram

llvm-svn: 7013
2003-06-30 19:35:54 +00:00
Brian Gaeke eba22eb59d Get rid of the duplicate '0x' in debug mode.
llvm-svn: 7012
2003-06-30 18:06:20 +00:00
Misha Brukman 2202c5a688 Spell `apparently' with an `e'.
llvm-svn: 7011
2003-06-30 15:33:47 +00:00
Chris Lattner 31514c1c92 New testcase
llvm-svn: 7010
2003-06-30 15:17:39 +00:00
Chris Lattner d9b889c4df Add dependency on analyze
llvm-svn: 7009
2003-06-30 15:17:36 +00:00
Chris Lattner 70923c688d Use the getFunctionNames method
llvm-svn: 7008
2003-06-30 05:57:39 +00:00
Chris Lattner bfce1115e3 Add new method
llvm-svn: 7007
2003-06-30 05:57:30 +00:00
Chris Lattner f8865a4389 Split CallSiteIterator out into DSCallSiteIterator.h, and generalize it a bit
llvm-svn: 7006
2003-06-30 05:27:53 +00:00
Chris Lattner fa52af4fb0 Be more const-correct
llvm-svn: 7005
2003-06-30 05:27:18 +00:00
Chris Lattner 53f4dd7f22 Be more const correct
llvm-svn: 7004
2003-06-30 05:27:05 +00:00
Chris Lattner 0929c5ef68 Fix bug in last checkin
llvm-svn: 7003
2003-06-30 05:18:26 +00:00
Chris Lattner a7630bdc06 Constness changes
llvm-svn: 7002
2003-06-30 05:10:09 +00:00
Chris Lattner 4ffb4e0e03 Reimplement the BU closure to collapse all SCC graphs into a single graph.
Look at all of the code that gets deleted!

llvm-svn: 7001
2003-06-30 05:09:58 +00:00
Chris Lattner 348d93c8c2 Handle the case where OldNodeMap == &ScalarMap correctly
llvm-svn: 7000
2003-06-30 05:09:29 +00:00
Chris Lattner 312783f0d2 Remove dead method
llvm-svn: 6999
2003-06-30 04:53:39 +00:00
Chris Lattner 01877f5224 Do not delete the same graph multiple times when freeing memory if graphs are sharing
llvm-svn: 6998
2003-06-30 04:53:27 +00:00
Chris Lattner 7695128217 Do not multiply delete graphs if functions are sharing graphs
llvm-svn: 6997
2003-06-30 04:53:08 +00:00
Chris Lattner 6d187fdc5a Move usages of explicit hash_* datastructures to use typedefs
llvm-svn: 6996
2003-06-30 03:36:09 +00:00
Chris Lattner 88cd849788 New testcase
llvm-svn: 6995
2003-06-30 03:25:53 +00:00
Chris Lattner 63aeacfe3d Revamp DSGraphs so that they can support multiple functions in the same
DSGraph at one time

llvm-svn: 6994
2003-06-30 03:15:25 +00:00
Chris Lattner 151576413e Adjust for new DSGraph API
llvm-svn: 6993
2003-06-30 03:14:54 +00:00
Chris Lattner 6e69c28229 Eliminate using declarations, adjust for new DSGraph API
llvm-svn: 6992
2003-06-30 03:14:44 +00:00