Commit Graph

8863 Commits

Author SHA1 Message Date
Chris Lattner
7891593359 Fix PR463
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18303 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-28 16:45:45 +00:00
Reid Spencer
8dde18fc50 Compute the firstFileOffset correctly after reading the LLVM symbol table.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18300 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-28 03:13:02 +00:00
Chris Lattner
cc8d524a24 When merging to alias sets, if they are both must alias, the result is not
a must alias set unless all of the pointers in the resultant set are must
aliased together.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18275 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-27 18:37:42 +00:00
Chris Lattner
646641e02c Implement Regression/Transforms/InstCombine/getelementptr_cast.ll, which
occurs many times in crafty


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18273 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-27 17:55:46 +00:00
Nate Begeman
3330e08888 Remove the ISel->AsmPrinter link via the TargetMachine that was put in
place to help bring up the PowerPC back end on Darwin.  This code is no
longer serves any purpose now that the AsmPrinter does the right thing
all the time printing GlobalValues.  --Cruft.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18267 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-27 04:45:11 +00:00
Chris Lattner
07bfa52405 Add a new interface
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18266 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-26 21:36:25 +00:00
Chris Lattner
f3e1d6977e Provide size information when checking to see if we can LICM a load, this
allows us to hoist more loads in some cases.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18265 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-26 21:20:09 +00:00
Chris Lattner
1ed80b66b1 When evaluating an AA, pass in size info
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18264 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-26 21:05:39 +00:00
Chris Lattner
15ee8adb00 There is no reason to store <x,x>, just store <x>.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18263 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-26 20:25:17 +00:00
Chris Lattner
4e61676b56 The trick with globals actually works with allocas and malloc too
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18262 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-26 20:01:48 +00:00
Chris Lattner
0a1ac907c3 A store or load cannot alias a global if the accessed amount is larger then
the global.

This implements Regression/Analysis/BasicAA/global-size.ll


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18261 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-26 19:20:01 +00:00
Reid Spencer
c48c103c33 Add bzip2 subdirectory
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18251 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-25 19:38:28 +00:00
Reid Spencer
f6a0acd64a Remove zlib support in favor of our own bzip2 library
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18250 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-25 19:38:16 +00:00
Reid Spencer
84472d6e3c Adjust to Compressor interface change
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18249 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-25 19:38:05 +00:00
Reid Spencer
bc98a64b2a Revise to LLVM makefile standards.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18246 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-25 16:12:25 +00:00
Reid Spencer
26eda77f1f Initial Version from bzip2 Release 1.0.2.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18245 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-25 16:11:36 +00:00
Reid Spencer
53c4c5672c Implement dependent library linking. It is no longer required that -lstdc++
-lstdsup++ no -lc be passed on the command line to llvm linkers if the
progam being linked was compiled with the C/C++ Front End or Stacker.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18243 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-25 09:32:08 +00:00
Reid Spencer
719012d625 Remove blank comment lines for uniformity.
Make sure lines don't exceed 80 cols.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18242 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-25 09:29:44 +00:00
Nate Begeman
d4c8bea47f Enable optimization suggested by Chris Lattner to not emit reloc stubs for
static global variables whose addresses are taken.  This allows us to
convert the following code for taking the address of a static function foo

        addis r2, r30, ha16(Ll1__2E_foo_2$non_lazy_ptr-"L00001$pb")
        lwz r3, lo16(Ll1__2E_foo_2$non_lazy_ptr-"L00001$pb")(r2)

which also includes linker stub code emitted at the end of the .s file not
shown here, and replace it with this:

        addis r2, r30, ha16(l1__2E_foo_2-"L00001$pb")
        la r3, lo16(l1__2E_foo_2-"L00001$pb")(r2)

which in addition to not needing linker help, also has no load instruction.
For those not up on PowerPC mnemonics, la is shorthand for add immediate.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18239 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-25 07:09:01 +00:00
Chris Lattner
fde839b4ff Fix the build on non ppc machines
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18235 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-25 06:14:45 +00:00
Chris Lattner
2a0c0dff0b The JIT works enough
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18228 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-25 04:14:54 +00:00
Chris Lattner
5cbf3bc202 Fix encoding of fsel, fixing olden/power, McCat/bisort and several others.
All of Olden passes now! :)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18227 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-25 04:11:07 +00:00
Chris Lattner
a1ab451392 Fix encoding of fneg instruction
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18226 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-25 03:53:44 +00:00
Chris Lattner
cd61ec837f Fix encoding of swari, fixing several programs, including Olden/mst
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18225 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-25 03:40:20 +00:00
Chris Lattner
b752a97ca4 There is not a 1-1 mappign between llvm blocks and PPC blocks, do not use
LLVM blocks as the keys for the branch rewriter.  This fixes treeadd and
many other programs with the JIT.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18223 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-25 00:33:57 +00:00
Chris Lattner
5efb75daed * Rename existing relocations to be more specific
* Add relocations for refernces to non-lazy darwin stubs and implement
  them correctly.

With this change, we can correctly references external globals, and now
all but two UnitTests and all but 1 Regression/C tests pass.

More importantly, bugpoint-jit will start giving us useful testcases,
instead of always telling us that references to external globals don't
work :)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18222 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-24 22:30:08 +00:00
Nate Begeman
53e4aa57c6 Add the same optimization that we do loading from fixed alloca slots to
storing to fixed alloca slots.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18221 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-24 21:53:14 +00:00
Chris Lattner
73278080c8 Write CompilationCallback as an explicit assembly stub to avoid getting GCC's
prolog.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18220 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-24 21:01:46 +00:00
Chris Lattner
892afa9556 When rewriting the original call instruction, make sure to rewrite it to
call the right address.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18213 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-24 18:00:02 +00:00
Chris Lattner
fb887e010d Force the intregs ptr into R2 and the FPregs ptr into R3. This fixes a really
obscure problem where we were doing:

lmw     r3,0(r9)

which is undefined on PPC.  Now we do:

lmw     r3,0(r2)

by force, not relying on the GCC register allocator for luck :)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18212 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-24 17:42:55 +00:00
Reid Spencer
5f8448f79c Implement and document prefix options with arbitrary values including an
= sign. This needed to support -DNAME=value options as pass-through in
llvmc.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18203 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-24 06:13:42 +00:00
Brian Gaeke
e4ed742588 Update list of failing benchmarks.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18202 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-24 04:07:42 +00:00
Brian Gaeke
31e575901f Fix bug in emitGEPOperation with large struct-member offsets.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18201 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-24 04:07:33 +00:00
Chris Lattner
69efbdd4f3 Fix a few more tests by encoding the extsb and other XForm11 instructions
correctly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18200 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-24 03:52:02 +00:00
Chris Lattner
2f5091ac2a Fix the encoding of ORi and other DForm4 instructions. This brings us to
36/42 SingleSource/UnitTests passing!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18199 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-24 02:15:41 +00:00
Chris Lattner
00a8c01999 Loads are relocatable too
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18198 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-24 02:03:44 +00:00
Chris Lattner
b765ff1219 Calls do not need a MovPCtoLR instruction
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18197 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-24 02:00:06 +00:00
Chris Lattner
b9f26da5dd Get constant pools working. This fixes even more programs, allowing us to
pass 24/42 in UnitTests (up from 20).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18196 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-24 01:56:12 +00:00
Tanya Lattner
a6ec8f5548 Forced branches to be first to be scheduled.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18195 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-24 01:49:10 +00:00
Chris Lattner
8599d385a2 Rewrite branches more closely to correct. This makes more stuff pass, and
stops the infinite loops!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18194 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-24 01:35:12 +00:00
Chris Lattner
310a752872 Branch instructions explicitly represent CRx in them. bEcause of this, encode
them explicitly as well.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18193 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-24 01:15:19 +00:00
Nate Begeman
3b78e3b6a9 Fix encoding of bctrl, and remove some unused instructions
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18192 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-24 00:16:37 +00:00
Reid Spencer
84b9cedf91 Allow reading of member names that begin with an _ character.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18179 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-23 22:35:39 +00:00
Chris Lattner
6f407893e2 Fix encoding of blr and bctr
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18178 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-23 22:06:24 +00:00
Nate Begeman
65b7f3ed2a Use the correct register class as a constaint to gcc's inline assembly, so
that we don't end up trying to use r0 as a base register.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18176 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-23 21:37:22 +00:00
Nate Begeman
ca6d0f53ff Save/Restore arg regs and nonvolatile regs the compiler might use during
CompilationCallback


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18175 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-23 21:34:18 +00:00
Chris Lattner
5afa9af81b Fix the encoding of OR, AND and many other instructions
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18174 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-23 21:17:35 +00:00
Brian Gaeke
88108b8cfa Support shr long/ulong.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18173 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-23 21:10:50 +00:00
Brian Gaeke
4dd043f090 Support printing ConstantAggregateZeros.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18172 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-23 21:10:49 +00:00
Brian Gaeke
8a0c4fd0c6 Update failing SingleSource test-case list.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18171 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-23 21:10:48 +00:00
Chris Lattner
d162032013 Remove argtype and argcount magic, which was used by the old asmprinter.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18170 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-23 20:41:34 +00:00
Chris Lattner
583e32b653 Get rid of flags that are dead
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18169 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-23 20:37:41 +00:00
Chris Lattner
89d60de90e Fix encoding of rlwinm?
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18165 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-23 19:23:32 +00:00
Chris Lattner
943f45208c Fix encodings
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18164 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-23 19:23:18 +00:00
Chris Lattner
9ba12359e3 Enumerate CR registers
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18162 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-23 18:59:59 +00:00
Chris Lattner
d9d06b3af1 Initial implementation of exiting CompilationCallback
This should save all argument registers on entry and restore on exit, despite
that, simple things seem to work!!!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18161 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-23 18:49:46 +00:00
Chris Lattner
22cd028eef This method is dead
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18160 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-23 18:47:55 +00:00
Chris Lattner
05ad23711e Remove this method.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18159 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-23 18:47:42 +00:00
Chris Lattner
adbcc1025e Squelch a bogus warning
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18157 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-23 15:57:01 +00:00
Chris Lattner
d7fa35c6d2 Squelch a bogus warning.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18156 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-23 15:56:38 +00:00
Nate Begeman
dd30751654 Don't return value from void function. This is only temporary anyway while
the JIT is made to work!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18155 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-23 10:04:49 +00:00
Brian Gaeke
fbe558c993 pseudocode for 64-bit lshr.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18154 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-23 08:14:09 +00:00
Chris Lattner
7598bbac66 Fix a minor bug
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18153 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-23 06:56:31 +00:00
Chris Lattner
c9a6b1f4f6 Be really paranoid about not breaking stuff yet
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18152 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-23 06:56:18 +00:00
Chris Lattner
e61198b323 Implement the first hunk of CompilationCallback. The pieces missing are the
ones noted, which require funny PPC specific inline assembly.

If some angel felt the desire to help me, I think this is that last bit missing
for JIT support (however, generic code emitter might night work right with
the constant pool yet).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18151 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-23 06:55:05 +00:00
Brian Gaeke
2041d0ca12 Add more known-failing tests.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18149 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-23 06:39:50 +00:00
Brian Gaeke
82a4795850 Add the rest of the logical instructions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18148 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-23 06:39:37 +00:00
Chris Lattner
7c83dc2714 Implement the stub needed to get into compilation callback.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18147 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-23 06:27:02 +00:00
Chris Lattner
64729d064a Simplify code a bit
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18146 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-23 06:05:44 +00:00
Chris Lattner
9b3d989cb7 Initial implementation of the JIT interfaces. Relocation is done and stubs
for external functions work.  CompilationCallback has not been written, and
stubs for internal functions are not generated yet.  This means you can call
printf and exit, and use global variables, but cannot call functions local to
a module yet.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18145 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-23 06:02:06 +00:00
Chris Lattner
e94c517bb5 Emit relocations for the global variable using instructions. This gets us
LA, LOADHiAddr, CALLpcrel, and MovePCtoLR working, though the constant pool
probably is not right.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18144 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-23 05:59:53 +00:00
Chris Lattner
163393732a Implement all of the methods
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18142 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-23 05:57:57 +00:00
Chris Lattner
42edd31209 Initial checkin of the 32-bit PPC relocation types
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18141 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-23 05:57:38 +00:00
Chris Lattner
e4fce6f19c Move JITInfo from PPCTM to PPC32TM
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18140 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-23 05:56:40 +00:00
Chris Lattner
942d7b5a68 Do not provide the non-specialized PowerPCJITInfo object, it is pretty useless.
Instead, let derived classes provide specialized ones.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18139 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-23 05:55:38 +00:00
Chris Lattner
6540c6c344 LA is really addi. Be consistent with operand ordering to avoid confusing the code emitter
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18138 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-23 05:54:25 +00:00
Tanya Lattner
e9cf6b9278 Changed the CreateCodeToLoadConst function to preserve SSA form. This basically means adding extra tmp instructions for intermediate values.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18137 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-23 04:22:29 +00:00
Chris Lattner
f2190b39d0 Remove some dead code
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18136 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-22 23:07:22 +00:00
Chris Lattner
dd99885da3 Comment out a couple of unused instructions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18135 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-22 23:07:01 +00:00
Chris Lattner
90b1b457ef Do not push two return addresses on the stack when we call external functions who have their addresses taken. This fixes test-call.ll
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18134 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-22 22:25:30 +00:00
Chris Lattner
166f2269f5 Rename Emitter.cpp -> JITEmitter.cpp
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18132 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-22 22:00:25 +00:00
Chris Lattner
cf88d324a8 Fix the FIXME, nuke the JIT specific forceCompilationOf method.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18131 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-22 21:54:35 +00:00
Chris Lattner
213c969c92 Disable this.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18130 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-22 21:51:40 +00:00
Chris Lattner
6f71720be3 These methods are obsolete
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18129 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-22 21:48:33 +00:00
Chris Lattner
99b394db15 This chunk of code needs to be rewritten
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18127 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-22 21:45:54 +00:00
Chris Lattner
2eeda6ed8f Remove some dead vars and some useless namespacification
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18126 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-22 21:42:40 +00:00
Chris Lattner
befc374904 Implement a disgusting hack to work around broken machine code emission of
the RDCCR instruction.  This fixes a bunch of programs with the JIT.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18124 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-22 21:25:10 +00:00
Tanya Lattner
e1df212fb3 Fixed a bug where I was trying to ModuloSchedule a loop with no instructions but a terminator.
Fixed a bug in the schedule generation that was always using the start cycle.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18123 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-22 20:41:24 +00:00
Chris Lattner
54a4d6a3cd Remove JIT-specific code from the code emitter.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18122 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-22 20:25:10 +00:00
Chris Lattner
dee0c4b000 New methods implemented
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18121 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-22 20:24:42 +00:00
Chris Lattner
534ac45604 Implement the Sparc JIT interfaces, including relocation support.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18120 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-22 20:24:27 +00:00
Chris Lattner
ddc4860c1d Fix test/Regression/CFrontend/2003-11-01-EmptyStructCrash.c
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18115 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-22 19:15:27 +00:00
Chris Lattner
b9df9b4c88 Do not count debugger intrinsics in size estimation.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18110 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-22 17:23:57 +00:00
Chris Lattner
8db93f18cc Ignore debugger intrinsics when doing inlining size computations.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18109 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-22 17:21:44 +00:00
Chris Lattner
64613ea8c8 Do not consider debug intrinsics in the size computations for loop unrolling.
Patch contributed by Michael McCracken!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18108 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-22 17:18:36 +00:00
Brian Gaeke
9ffcf9fddd Add stub method for long shift codegen.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18100 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-22 08:02:06 +00:00
Brian Gaeke
6f0b77221c Update to-do list.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18099 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-22 08:02:05 +00:00
Chris Lattner
b43dbdcb20 Support targets that require stubs for external functions better
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18098 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-22 07:24:43 +00:00
Reid Spencer
93ee7dc430 Fix a comment to imply the correct semantics.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18097 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-22 02:58:47 +00:00
Chris Lattner
5fd738f0a6 Initial checkin of the V9 relocation types
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18095 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-22 00:40:51 +00:00
Brian Gaeke
c7b4f1033f Implement setcc on longs.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18088 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-21 08:11:28 +00:00
Brian Gaeke
4351857d78 Add all the rest of the ADD and SUB variants, some of which are important for
64-bit support.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18087 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-21 07:13:17 +00:00
Brian Gaeke
5f91de2b38 Support add, sub, mul, div, rem on longs/ulongs (latter 3 by emitting libcalls).
Add a big comment containing my notes on how to do setcc for longs/ulongs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18086 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-21 07:13:16 +00:00
Brian Gaeke
b10fc0343f Update to-do list.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18085 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-21 07:13:15 +00:00
Nate Begeman
486ebfd704 Fix Shootout-C++/wc, which was broken by my recent changes to emit fewer
reg-reg copies.  The necessary conditions for this bug are a GEP that is
used outside the basic block in which it is defined, whose components
other than the pointer are all constant zero, and where the use is
selected before the definition (backwards branch to successsor block).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18084 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-21 05:14:06 +00:00
Chris Lattner
88f9386cfe There is no reason to emit function stubs for direct calls.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18082 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-21 03:46:06 +00:00
Chris Lattner
cb47941556 Clean up DEBUG output
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18081 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-21 03:44:32 +00:00
Chris Lattner
5e22558853 Allow targets to avoid emitting a stub for EVERY lazily resolved call. In
most cases (e.g. direct calls) no stub is needed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18080 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-21 03:37:42 +00:00
Brian Gaeke
79fe833411 Fix extraStack calculation -- I think in fact it might be getting a bit *too*
much stack, but that's better than not enough, which leads to miscompilations.

Fix FP vaarg.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18079 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-21 03:35:22 +00:00
Brian Gaeke
e1e2899e96 Update list of failing benchmarks & to-do list.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18078 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-21 03:35:21 +00:00
Chris Lattner
7fc3824835 ignore generated files
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18073 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-21 00:01:54 +00:00
Chris Lattner
cdc79e3763 ignore generated files.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18072 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-21 00:00:54 +00:00
Chris Lattner
5426652c25 Implement relocation support by adding a target independent resolver interface.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18069 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-20 23:57:07 +00:00
Chris Lattner
e72e445ed5 Remove all JIT specific code and switch the code generator over to emitting
relocations for global references.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18068 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-20 23:55:15 +00:00
Chris Lattner
7ddde32ead Implement the X86 JIT interfaces
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18067 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-20 23:54:33 +00:00
Chris Lattner
8dad013038 Describe the X86 target-specific relocations.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18066 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-20 23:54:19 +00:00
Chris Lattner
89d64e262c We implement these interfaces
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18065 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-20 23:53:56 +00:00
Chris Lattner
3bf285a676 Adjust to changed interfaces
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18064 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-20 23:53:26 +00:00
Chris Lattner
3c600c8346 This method does not exist any longer.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18061 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-20 23:51:03 +00:00
Tanya Lattner
c4ae8e903c Fixed assertion from triggering. We need to check if the commandline map is empty before checking if an arg exists.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18057 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-20 23:35:20 +00:00
Reid Spencer
7a4538941a Cast the void* handle data member to HMODULE* to keep the VC++ compiler
happy. Thanks to Henrik Bach for pointing this out.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18056 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-20 23:30:55 +00:00
Brian Gaeke
b95cbee930 Support most cases of vaarg (except double).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18055 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-20 22:50:42 +00:00
Brian Gaeke
087f0858ef Update failing test cases & to-do list.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18054 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-20 22:50:41 +00:00
Reid Spencer
9a29db43a7 Distinguish between BSD4.4 and SVR4 symbol tables
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18044 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-20 07:29:40 +00:00
Chris Lattner
f6f0989754 This method was never implemented
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18039 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-20 04:19:47 +00:00
Chris Lattner
1deb74d7ee Remove this method, it's not clear how it could be implemented indep of 32 or 64-bit mode
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18038 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-20 04:17:17 +00:00
Chris Lattner
b443bc0da7 getJITStubForFunction is optional and unimplemented, just remove it for now.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18037 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-20 04:15:38 +00:00
Chris Lattner
a8b0fa5172 getJITStubForFunction is optional and unimplemented, just remove it.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18036 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-20 04:14:44 +00:00
Chris Lattner
5be478f360 Add getCurrentPCOffset() and addRelocation() methods.
Add stub support for relocations to finishFunction


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18035 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-20 03:46:14 +00:00
Chris Lattner
47012c0c71 Add getCurrentPCOffset() and addRelocation() methods.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18034 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-20 03:44:39 +00:00
Brian Gaeke
e6e7e3aadd Implement vacopy and vanext.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18031 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-20 03:32:12 +00:00
Chris Lattner
890b4bd3c0 Add accessor
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18030 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-20 03:11:07 +00:00
Misha Brukman
e74c73cf46 Allow constructor parameter to override aggregating args; fix spacing
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18028 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-20 02:20:27 +00:00
Misha Brukman
1dc555c0d3 Revert the patch that adds Function* for each 64-bit libc div/mul/rem that we
want to do; instead, we can use MachineInstr::addExternalSymbol(char*, bool) and
thus we don't have to modify the Module as we are code generating for it


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18025 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-20 00:10:20 +00:00
Tanya Lattner
def5745314 Made modsched hidden and changed so it matches the style of other options.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18024 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-19 23:34:33 +00:00
Misha Brukman
d42b167e61 Fix grammar
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18023 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-19 23:09:40 +00:00
Misha Brukman
d159aafc26 Add protoypes for 64-bit long/ulong div, mul, and rem functions
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18019 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-19 22:14:35 +00:00
Misha Brukman
c29e6a4f16 Fix file comment header
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18018 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-19 22:09:21 +00:00
Misha Brukman
c11c44f55b Handle GhostLinkage case for completeness (should not be seen by the asm writer)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18015 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-19 21:49:19 +00:00
Brian Gaeke
b6c409a13d Add VANext and VAArg stubs.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18012 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-19 21:08:18 +00:00
Brian Gaeke
d90282db12 Implement va_start.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18011 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-19 20:57:24 +00:00
Chris Lattner
3104db054a Dont' forget to switch back to decimal output
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18010 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-19 20:57:07 +00:00
Chris Lattner
45730d71b6 Match change in MachineCodeEmitter prototype.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18009 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-19 20:56:46 +00:00
Brian Gaeke
4e459c465e First part of varargs support: getting all varargs which could possibly
be in registers into memory.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18006 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-19 20:31:08 +00:00
Brian Gaeke
2f95ed65e0 va_end can safely be codegen'd to nothing on v8.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18004 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-19 19:21:34 +00:00
Brian Gaeke
9e672a2d1b A very sorry stub implementation of varargs intrinsics...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18003 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-19 18:53:59 +00:00
Brian Gaeke
507bc71820 Update list of expected test failures.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18002 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-19 18:48:29 +00:00
Brian Gaeke
a54df2503b Fix bug in casting to long/ulong.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18001 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-19 18:48:10 +00:00
Chris Lattner
9945826d50 Fix memory leaks, patch contributed by Morten Ofstad!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17999 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-19 17:09:48 +00:00
Chris Lattner
c540ebbc1b Patches to avoid "leaking" memory on process exit. Patch contributed by
Morten Ofstad!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17998 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-19 17:08:15 +00:00
Reid Spencer
6405c9ec9f Correct the computation of when to add the padding. It is not based on the
member's size. It is based on the oddness/evenness of the file pointer.
This fixes a bug with llvm-ar not being able to read archives produced by
llvm-ranlib when there are members with odd long file name lengths.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17997 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-19 17:08:00 +00:00
Chris Lattner
7b73a663bc Fix the exposed prototype for the lower packed pass, thanks to
Morten Ofstad.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17996 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-19 16:49:34 +00:00
Chris Lattner
8a7ad2d2c5 Add hooks to free all memory allocated by the singleton factories in these
files.  Patch contributed by Morten Ofstad!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17995 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-19 16:39:44 +00:00
Chris Lattner
4a389b697c CPR is dead.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17992 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-19 16:24:57 +00:00
Chris Lattner
638c381ef7 Add note that this is for old bytecode files.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17991 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-19 16:24:05 +00:00
Chris Lattner
3fb2045c7c Mission accomplished!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17990 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-19 16:22:24 +00:00
Reid Spencer
ebf2bda8cd Allow this to compile even on machines that HAVE the bzlib library but do
NOT have the bzlib.h header file. Go figure.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17989 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-19 15:56:28 +00:00
Chris Lattner
a98c5453b2 This is a horrible hack to work around libstdc++ bugs :(
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17988 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-19 08:44:07 +00:00
Nate Begeman
bc3a5378d0 Eliminate another 6k register copies that the register allocator would just
coalesce out of hbd.  Speeds up compilation by 2% (0.6s)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17987 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-19 08:01:16 +00:00
Reid Spencer
6475b8d178 Undo last change as its unnecessary.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17985 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-19 04:59:07 +00:00
Reid Spencer
57646ec44e Don't save an iterator, just use post-increment.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17981 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-19 03:44:10 +00:00
Reid Spencer
b9371ce552 Eliminate unsightly ;;
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17979 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-19 03:27:05 +00:00
Reid Spencer
170eb10083 Make a cast explicit.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17977 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-19 03:20:09 +00:00
Reid Spencer
7783e8ad69 Make findModulesDefiningSymbols modify its symbols argument so we can \
eliminate symbols defined by the archive efficiently


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17976 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-19 03:18:22 +00:00
Reid Spencer
3cf2c32202 Reduce the amount of work in LinkInArchive by not searching the archive for
symbols it has already identified as not defining.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17975 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-19 03:13:25 +00:00
Nate Begeman
8531f6f42a Generate fewer reg-reg copies for the register allocator to deal with.
This eliminates over 2000 in hbd alone.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17973 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-19 02:06:40 +00:00
Chris Lattner
954f66a8cd Delete stoppoints that occur for the same source line.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17970 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-18 21:41:39 +00:00
Tanya Lattner
a9aa809935 Fixed to fit in 80 columns.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17961 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-18 18:47:29 +00:00
Tanya Lattner
75e8419e48 Adding option to llc for ModuloScheduling. By default it is turned off.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17959 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-18 18:38:01 +00:00
Chris Lattner
18e6c22f05 These methods are inlined
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17958 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-18 17:47:13 +00:00
Chris Lattner
56de0363e3 Check in hook that I forgot
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17956 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-18 17:24:20 +00:00
Brian Gaeke
7c0afe04ab Rewrite LoadArgumentsToVirtualRegs, making it match almost exactly how
visitCallInst works.  Support cast of byte/short/int to long.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17949 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-18 07:43:33 +00:00
Brian Gaeke
7ba2a43866 Update current expected failures list - expand it to include all of
SingleSource. Update to-do list (open-coding refers to binary operations on
longs, not to passing them into functions, which we already support.)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17948 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-18 07:43:32 +00:00
Nate Begeman
db869aad8c Eliminate another common source of moves that the register allocator
shouldn't be forced to coalesce for us: folded GEP operations.  This too
fires thousands of times across the testsuite.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17947 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-18 07:22:46 +00:00
Nate Begeman
1f5308e5b5 When accessing the base register for global variables, use the register
directly rather than making a copy for the register allocator to coalesce.
This kills thousands of live intervals across the testsuite.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17946 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-18 06:51:29 +00:00
Chris Lattner
c8b9f33ac0 * There is no reason for SpillWeights to be an instance var
* Do not put fixed registers into the unhandled set.  This means they will
  never find their way into the inactive, active, or handled sets, so we
  can simplify a bunch of code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17945 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-18 06:01:45 +00:00
Chris Lattner
9fddc12c9b There is no need to check to see if j overflowed in this loop as we're only
incrementing i.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17944 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-18 05:28:21 +00:00
Chris Lattner
1e409bfd2a Moderate head scratching reveals that this conditional is not needed. If
i->start == j->start, then certainly i->end > j->start.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17943 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-18 05:19:02 +00:00
Nate Begeman
0113638073 Clean up and fix cast codegen by removing cases that are handled elsewhere,
and properly emitting signed short to unsigned int.  This fixes the last
regression vs. the CBE, MultiSource/Applications/hbd.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17942 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-18 04:56:53 +00:00
Reid Spencer
0de02a6ba9 Dynamic Library abstraction. This makes the abstraction of a single dynamic
library (shared library/shared object) whose symbols can be looked up
dynamically. Used for plug-ins.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17940 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-18 04:33:39 +00:00
Chris Lattner
f348e3abfc Fix a couple of bugs where we considered physregs past their range as possibly
intersecting an interval.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17939 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-18 04:33:31 +00:00
Chris Lattner
1a3a487763 Fix typeo
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17938 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-18 04:31:10 +00:00
Chris Lattner
365b95fbbc Start using the iterators in the fixed_ intervals to avoid having to binary
search physreg intervals every time we access it.  This takes another
half second off of linscan.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17937 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-18 04:13:02 +00:00
Chris Lattner
8c68b6a226 Take another .7 seconds off of linear scan time.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17936 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-18 04:02:11 +00:00
Chris Lattner
19828d46f6 Add a counter for the number of times linscan has to backtrack. Start using
the iterator hints we have to speed up overlaps().  This speeds linscan up
by about .2s (out of 8.7) on 175.vpr for PPC.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17935 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-18 03:49:30 +00:00
Chris Lattner
bae74d9192 Add ability to give hints to the overlaps routines.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17934 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-18 03:47:34 +00:00
Chris Lattner
cbb5625cec * Improve comments/documentation substantially
* Eliminate the releaseMemory method, this is not an analysis
* Change the fixed, active, and inactive lists of intervals to maintain an
  iterator for the current position in the interval.  This allows us to do
  constant time increments of the iterator instead of having to do a binary
  search to find our liverange in our liveinterval all of the time, which
  substantially speeds up cases where LiveIntervals have many LiveRanges
  - which is very common for physical registers.  On targets with many
  physregs, this can make a noticable difference.

  With a release build of LLC for PPC, this halves the time in
  processInactiveIntervals and processActiveIntervals, from 1.5s to .75s.

  This also lays the ground for more to come.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17933 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-18 02:42:27 +00:00
Chris Lattner
743ef6d70e Add new advanceTo method
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17932 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-18 02:37:31 +00:00
Chris Lattner
8d8d513d4d Fix a minor bug in expiredAt. endNumber() is the first number that is not valid.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17931 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-18 01:34:44 +00:00
Chris Lattner
23b71c1e1e Rename some methods, use 'begin' instead of 'start', add new LiveInterval
iterator/begin/end members.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17930 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-18 01:29:39 +00:00
Brian Gaeke
4b92ed6d58 Allocate fewer registers and tighten up alignment restrictions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17929 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-18 00:25:20 +00:00
Brian Gaeke
c935cf111c Update to-do list.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17927 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-17 22:33:55 +00:00
Brian Gaeke
b662963d3b Update list of failing SingleSource Benchmarks
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17926 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-17 22:33:28 +00:00
Brian Gaeke
b3e0017763 We were (somehow) getting the wrong branch opcode for setcc float instrs.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17925 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-17 22:06:56 +00:00
Alkis Evlogimenos
859804f529 Make ReturnInst accept a value of type void as the return value. The
ReturnInst constructed is the same as if NULL was passed instead of
the void value.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17923 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-17 21:02:25 +00:00
Reid Spencer
d4543da9b0 Fix some things for Mac OSX archives:
* ensure trailing spaces are eliminated so they don't factor into the
  length of a member's name.
* make sure all the bytes of a name are written even if the name ends in
  multiple null characters (bug in OSX ar)
* make sure we provide the full member name when searching for symbols so
  the module name is not accidentally duplicated.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17918 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-17 18:28:29 +00:00
Reid Spencer
6ab7a4f9ef Make sure we parse bytecode with a module identifier that reflects the full
name of the module: "Archive.a(object.o)"


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17917 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-17 18:25:21 +00:00
Chris Lattner
1b9fe1cbbe Generalize this code to turn any cast-to-first-element-of into a gep constexpr
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17914 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-17 17:59:35 +00:00
Chris Lattner
bc2a99b480 Simplify conditional and fix LICM/2004-11-17-UndefIndexCrash.ll
by saying what we mean


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17913 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-17 17:39:39 +00:00
Reid Spencer
96ce335f4e Adjust long file name writing to match BSD 4.4 and Mac OSX style archives.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17910 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-17 16:14:21 +00:00
Reid Spencer
dd95e8d71e Despite documentation to the contrary, Mac OSX and BSD 4.4 archive formats
*do* include the length of the long file in the length of the member and
they are *not* null terminated.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17909 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-17 16:13:11 +00:00
Tanya Lattner
ced8222405 Added my own defMap. Only saving values that are not loop invariant. Fixed a couple of assertions that were triggered due to registers not being allocated. These both had to do with PHINodes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17907 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-16 21:31:37 +00:00
Chris Lattner
bcb31d645d Minor cleanup and speedup. This reduces link-time for 252.eon from 35.5s
to 34.7s with a profile build.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17906 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-16 20:39:04 +00:00
Chris Lattner
8511c351dc Make this function work with non-abstract types.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17905 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-16 20:30:53 +00:00
Chris Lattner
a63acbfeab Don't increment a dead iterator
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17904 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-16 19:04:40 +00:00
Chris Lattner
39a83dc37c Fix a major bug in the signed shr code, which apparently only breaks 134.perl!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17902 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-16 18:40:52 +00:00
Reid Spencer
be31d2ad78 * Use low-level unix I/O interface since we're on Unix.
* Don't use variable length arrays (replaced with alloca)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17901 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-16 17:14:08 +00:00
Chris Lattner
0033baf94e Simplify the remapper by only needing one map, since the body of the functions
being linked do not need to be remapped any longer.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17900 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-16 17:12:38 +00:00
Chris Lattner
73559b1f4c Do not delete dead invoke instructions!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17897 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-16 16:32:28 +00:00
Misha Brukman
e5525438b0 Erase non-applicable Unix comment, this is Win32
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17896 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-16 07:35:32 +00:00
Brian Gaeke
4cda591341 Update list of failing benchmarks
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17895 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-16 07:32:58 +00:00
Brian Gaeke
b354b7148e Correct the implicit-defs information for indirect and direct calls.
You can't have implicit defs that overlap explicit defs, or implicit
defs that alias one another.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17894 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-16 07:32:09 +00:00
Chris Lattner
4bbfbff119 Take advantage of the fact that we are allowed to clobber the input module
by splicing function bodies from the src module to the destination module.

This speeds up linking quite a bit, e.g. gccld time on 176.gcc from 26s -> 20s
when forming the .rbc file, with a profile build.  One of the really strange
but cool effects of this patch is that it speeds up the optimizers as well,
from 12s -> 10.7s, presumably because of better locality???

In any case, this is just a first step.  We can trivially get rid of the
LocalMap now and do other simplifications.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17893 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-16 07:31:51 +00:00
Reid Spencer
30e4056a5d Fix typeo in comment.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17892 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-16 07:05:16 +00:00
Reid Spencer
56d3cdbd21 Remove useless #include.
Patch contributed by Jeff Cohen.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17891 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-16 07:00:23 +00:00
Reid Spencer
9860121890 Simplify code.
Patch contributed by Jeff Cohen.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17890 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-16 06:59:53 +00:00
Reid Spencer
e26057a376 Standardize on 'class' instead of 'struct'. Gets rid of warnings in VC++
Patch contributed by Jeff Cohen.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17889 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-16 06:58:55 +00:00
Brian Gaeke
8311befb69 Give a better message for a common assertion failure.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17887 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-16 06:52:35 +00:00
Reid Spencer
5cc498f116 Add a comment to some code that at first glance just doesn't look right.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17886 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-16 06:50:36 +00:00
Reid Spencer
99d3604acf Per code review:\
* Adjust indentation\
* Ensure memory do not leak if exceptions happen (std::auto_ptr use)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17885 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-16 06:47:41 +00:00
Reid Spencer
87f90729d6 Per code review:\
* Make the numVbrBytes function more efficient and better documented \
* Fix a bug in name truncation \
* Add comments before functions \
* Get rid of functions that are now inlined into the header \
* Do not have Archive doing symbol table printing \
* Put assert comments into the assert so they print out \
* Make sure foreign symbol tables are written


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17884 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-16 06:47:30 +00:00
Reid Spencer
4a980d1813 Per code review:\
* Make sure we write out the foreign symbol table if we read one \
* Make the padding calculation more efficiently and avoid Solaris warnings


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17883 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-16 06:47:19 +00:00
Reid Spencer
1f465809cd Per code review:\
* Make sure all members are initialized upon construction


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17882 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-16 06:47:07 +00:00
Chris Lattner
242e525edc The second arg may be clobbered by this function
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17880 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-16 06:41:36 +00:00
Reid Spencer
5a88578249 Per code review:\
* Get rid of memory leaks on exception \
* Provide better comments of how the memory handling works


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17876 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-16 06:41:05 +00:00
Chris Lattner
a4d0c6fb94 use an autoptr
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17875 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-16 06:40:54 +00:00
Reid Spencer
8bf7fba10b Per code review:
* get rid of (void) construct in function declarations
* make toString a const member
* add a default implementation of toString for Win32


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17873 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-16 06:22:17 +00:00
Reid Spencer
b608a81a18 Per code review:
* Clean up the StatusInfo constructor to construct all members and give
  them reasonable values.
* Get rid of the Vector typedef and make the interface to
  getDirectoryContent use a std::set instead of a std::vector so the dir
  content is sorted.
* Make the getStatusInfo method const and not return a useless boolean.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17872 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-16 06:15:19 +00:00
Reid Spencer
9bbba09139 Per code review:
*Implement/Document the cl::extrahelp feature instead of the MoreHelp ptr.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17871 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-16 06:11:52 +00:00
Chris Lattner
eea9b134fc Simplify namespaces
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17870 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-16 04:47:33 +00:00
Chris Lattner
8f1ac9f90d Remove a dead function, which died when we got GAS emission working (phwew,
hold your nose!)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17869 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-16 04:34:29 +00:00
Chris Lattner
f2d552eca6 Implement a simple FIXME: if we are emitting a basic block address that has
already been emitted, we don't have to remember it and deal with it later,
just emit it directly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17868 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-16 04:30:51 +00:00
Chris Lattner
16fe6f5f24 * Merge some win32 ifdefs together
* Get rid of "emitMaybePCRelativeValue", either we want to emit a PC relative
  value or not: drop the maybe BS.  As it turns out, the only places where
  the bool was a variable coming in, the bool was a dynamic constant.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17867 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-16 04:21:18 +00:00
Chris Lattner
02376e3f29 Now that we have ghost linkage, we can force resolution of external symbols
immediately instead of lazily.

In this program, for example:

int main() {
  printf("hello world\n");
  printf("hello world\n");
  printf("hello world\n");
  printf("hello world\n");
}

We used to have to go through compilation callback 4 times (once for each
call to printf), now we don't go to it at all.

Thanks to Misha for noticing this, and for adding the initial ghost linkage
patches.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17864 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-15 23:20:04 +00:00
Chris Lattner
0050ef8319 There is no reason to try to materialize the function from bytecode if it
already has been.  This may be a small speedup.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17863 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-15 23:18:09 +00:00
Chris Lattner
5aa3ed92de Add debug-only=jit printout, so we see when lazily resolved symbols are
set up.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17862 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-15 23:16:55 +00:00
Chris Lattner
36c625d3a5 Simplify and rearrange long shift code
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17861 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-15 23:16:34 +00:00
Chris Lattner
d6e431f45e Do not emit FunctionBlock blocks for external functions. This shrinks
bytecode files by about 8 bytes per external function


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17859 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-15 22:39:49 +00:00
Chris Lattner
97fbc500a7 Use a per-function flag bit to indicate whether or not there is a function
body for the function.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17858 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-15 22:38:52 +00:00
Chris Lattner
fd7f8fea65 Disable this change, it was premature
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17857 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-15 21:56:33 +00:00
Chris Lattner
3bdad6923e Make *SURE* to null out the pointer before throwing an exception, otherwise
the dtor for the BytecodeReader class will try to free it again!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17856 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-15 21:55:33 +00:00
Chris Lattner
1992522abd Cleanups. Null out pointer after freeing it for paranoia
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17855 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-15 21:55:06 +00:00
Chris Lattner
86c9365761 If a function is external, do not output a FunctionBlock for the function
AT ALL.  This saves 11 bytes per external function from the bytecode file,
and is also required to make GhostLinkage work.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17854 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-15 21:46:40 +00:00
Chris Lattner
18549c25d6 Make functions default to having external linkage if they have no
FunctionBlock.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17853 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-15 21:43:03 +00:00
Misha Brukman
145a5a3746 Add BCTR and LWZU instruction opcodes
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17851 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-15 21:20:09 +00:00
Misha Brukman
f771bea740 Remove extra space char
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17834 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-15 19:30:05 +00:00
Reid Spencer
96326f9d31 Remove unused variable for compilation by VC++.
Patch contributed by Morten Ofstad.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17830 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-15 17:29:41 +00:00
Reid Spencer
6b09db550f Provide the ThrowErrno utility.
Patch contributed by Morten Ofstad


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17827 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-15 17:21:57 +00:00
Reid Spencer
abc8650fc0 Adjust implementation to match new interface.
Patch provided by Morten Ofstad


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17826 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-15 17:20:28 +00:00
Chris Lattner
14051812ff Minor cleanups. There is no reason for SCCP to derive from instvisitor anymore.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17825 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-15 07:15:04 +00:00
Chris Lattner
b77d5d8d50 Count more accurately
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17824 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-15 07:02:42 +00:00
Brian Gaeke
766d6f3b59 Update list of failing Benchmarks.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17823 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-15 05:57:26 +00:00
Brian Gaeke
f28688e527 Expand Defs to encompass all the possibly-call-clobbered regs.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17822 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-15 05:56:53 +00:00
Chris Lattner
50e60c7026 Quiet warnings on the persephone tester
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17821 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-15 05:54:07 +00:00
Chris Lattner
7e529e4b3c Two minor improvements:
1. Speedup getValueState by having it not consider Arguments.  It's better
    to just add them before we start SCCP'ing.
 2. SCCP can delete the contents of dead blocks.  No really, it's ok!  This
    reduces the size of the IR for subsequent passes, even though
    simplifycfg would do the same job.  In practice, simplifycfg does not
    run until much later than sccp in gccas


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17820 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-15 05:45:33 +00:00
Chris Lattner
ef36dfd31a rename InstValue to LatticeValue, as it holds for more than instructions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17818 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-15 05:03:30 +00:00
Reid Spencer
a79a99a1dc Actually get the #include correct so it compiles .. duh.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17817 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-15 04:47:22 +00:00
Chris Lattner
82bec2cff0 Substantially refactor the SCCP class into an SCCP pass and an SCCPSolver
class.  The only changes are minor:

 * Do not try to SCCP instructions that return void in the rewrite loop.
   This is silly and fool hardy, wasting a map lookup and adding an entry
   to the map which is never used.
 * If we decide something has an undefined value, rewrite it to undef,
   potentially leading to further simplications.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17816 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-15 04:44:20 +00:00
Reid Spencer
2e83ea5211 Make it actually compile on Solaris.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17815 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-15 04:42:44 +00:00
Reid Spencer
00b5df427f Consolidate the implementation of TimeValue::now() for Unix to use the
seemingly ubiquitous gettimeofday(3) call.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17813 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-15 04:36:35 +00:00
Reid Spencer
b323113b93 * Make sure the string table gets read even if there isn't a foreign
symbol table.
* Make sure we update the file pointer for each member when rebuilding the
  symbol table.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17812 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-15 01:40:20 +00:00
Reid Spencer
766b793143 Changes necessary to enable linking of archives without LLVM symbol tables.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17811 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-15 01:20:11 +00:00
Reid Spencer
6238a85e4f Remove a forgotten debug output line.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17810 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-14 23:49:55 +00:00
Reid Spencer
2fbf978cb7 Implement functionality suggested from code review: getStatusInfo should
returnn false if the file doesn't exist rather than throw ane exception.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17809 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-14 23:30:38 +00:00
Reid Spencer
7cc371a795 Linker.h moved to include/llvm from include/llvm/Support.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17807 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-14 23:27:04 +00:00
Reid Spencer
a2a62210f2 Make sure IdentifyFileType is in the sys namespace.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17806 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-14 23:26:18 +00:00
Reid Spencer
605b9e2c5b Linker.h has a new home.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17801 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-14 23:00:08 +00:00
Reid Spencer
ce2bc2b28f Moved to lib/Bytecode/Archive.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17800 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-14 22:38:32 +00:00
Alkis Evlogimenos
98bc8ed49b Add missing include.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17799 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-14 22:37:42 +00:00
Reid Spencer
5e081fb74a Moved to lib/Linker
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17786 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-14 22:15:31 +00:00
Reid Spencer
64a10ce9ad Forget strerror_r, it causes problems. Fix later when threading matters
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17783 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-14 22:10:54 +00:00
Reid Spencer
d351871d9b Implement the toString method
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17782 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-14 22:10:08 +00:00
Reid Spencer
944655922e Update for prototype changes
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17781 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-14 22:09:22 +00:00
Reid Spencer
eaf181550a * Implement getDirectoryContents * Implement getStatusInfo * Implement setStatusInfo * Implement renameFile
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17780 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-14 22:08:36 +00:00
Reid Spencer
083507cd3f Fix bugs in class invariant
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17779 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-14 22:07:50 +00:00
Reid Spencer
fb9aac85cd Include the correct implementation file
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17778 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-14 22:07:04 +00:00
Reid Spencer
44cbf36c38 Don't exceed 80 columns.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17777 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-14 22:06:18 +00:00
Reid Spencer
f37ce99c0a Implement IdentifyFileType function
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17776 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-14 22:05:32 +00:00
Reid Spencer
e3c6ad7e76 Implement the high level interface to make (de)compression easier.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17775 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-14 22:04:46 +00:00
Reid Spencer
ad0846bd8b Implement the MoreHelp utility that calls a function to printmore help information if the MoreHelp global is not null.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17774 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-14 22:04:00 +00:00
Reid Spencer
a455cca62f Don't bother with a re-linked library, ensure archive library is built.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17773 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-14 22:03:14 +00:00
Reid Spencer
8bbb17abe6 *Adjust prototypes for public interface. *Rewrite LinkInArchive to use symbol tables.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17772 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-14 22:02:27 +00:00
Reid Spencer
a70d84d40a Simplify compression code by using the high level interface to the Compressor
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17771 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-14 22:01:41 +00:00
Reid Spencer
565ff3d448 Add wrappers to get defined symbols from bytecode
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17770 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-14 22:00:48 +00:00
Reid Spencer
d3539b8a5e Simplify handling of decompression
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17769 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-14 22:00:09 +00:00
Reid Spencer
61aaf2e0af Simplify decompression code by using the high level interface to the Compressor
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17768 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-14 21:59:21 +00:00
Reid Spencer
f9d7a51c44 Completely rewritten to allow reading of archives and symbol table lookup in a more efficient manner.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17767 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-14 21:58:33 +00:00
Reid Spencer
bc9fc845a0 Implementation declarations for Archive
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17766 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-14 21:57:46 +00:00
Reid Spencer
cf6afc6239 First working version
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17765 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-14 21:56:59 +00:00
Reid Spencer
5544b5e50b Add the Archive library
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17764 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-14 21:55:27 +00:00
Reid Spencer
9d969b8328 Add the Linker library
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17763 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-14 21:54:41 +00:00
Misha Brukman
3c8f2c66e5 GhostLinkage not allowed in LLVM AsmWriter, either
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17751 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-14 21:04:34 +00:00
Misha Brukman
d2691fdf18 GhostLinkage should not reach asm printing stage
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17750 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-14 21:03:49 +00:00
Misha Brukman
3a8a42a9b4 Handle GhostLinkage (should not ever reach the assembly printing stage!)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17749 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-14 21:03:30 +00:00
Misha Brukman
a3e6ad62f3 Mark an unmaterialized function as having GhostLinkage
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17748 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-14 21:02:55 +00:00
Chris Lattner
bd38edfe23 If a global is just loaded and restored, realize that it is not changing
value.  This allows us to turn more globals into constants and eliminate them.
This patch implements GlobalOpt/load-store-global.llx.

Note that this patch speeds up 255.vortex from:

Output/255.vortex.out-cbe.time:program 7.640000
Output/255.vortex.out-llc.time:program 9.810000

to:

Output/255.vortex.out-cbe.time:program 7.250000
Output/255.vortex.out-llc.time:program 9.490000

Which isn't bad at all!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17746 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-14 20:50:30 +00:00
Misha Brukman
fc256599b3 Fix build on Linux/PowerPC64 using SuSE GCC (#undef PPC)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17744 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-14 20:34:01 +00:00
Reid Spencer
9577667822 Moved to lib/Bytecode/Archive in preparation for re-write.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17742 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-14 19:59:40 +00:00
Chris Lattner
b58934484b This optimization makes MANY phi nodes that all have the same incoming value.
If this happens, detect it early instead of relying on instcombine to notice
it later.  This can be a big speedup, because PHI nodes can have many
incoming values.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17741 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-14 19:29:34 +00:00
Chris Lattner
bac32866a7 Implement instcombine/phi.ll:test6 - pulling operations through PHI nodes.
This exposes subsequent optimization possiblities and reduces code size.
This triggers 1423 times in spec.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17740 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-14 19:13:23 +00:00
Chris Lattner
711b3402aa Transform this:
%X = alloca ...
  %Y = alloca ...
    X == Y

into false.  This allows us to simplify some stuff in eon (and probably
many other C++ programs) where operator= was checking for self assignment.
Folding this allows us to SROA several additional structs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17735 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-14 07:33:16 +00:00
Chris Lattner
6739eae7ea Remove note to self
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17734 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-14 06:57:47 +00:00
Brian Gaeke
da9b3668c2 Fix problem with insertion point for ADJCALLSTACKDOWN.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17733 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-14 06:32:08 +00:00
Brian Gaeke
5179e41d6e Update lists of failing unit tests.
Exclude bigfib, so that we effectively exclude all C++ benchmarks.
Update to-do list: mention va_start.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17732 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-14 06:32:07 +00:00
Chris Lattner
a990d94330 If a function always returns a constant, replace all calls sites with that
constant value.  This makes the return value dead and allows for
simplification in the caller.

This implements IPConstantProp/return-constant.ll

This triggers several dozen times throughout SPEC.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17730 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-14 06:10:11 +00:00
Brian Gaeke
04fe7477b1 Fix NotTest - round up extraStack to the nearest doubleword, if it is
not zero.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17728 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-14 05:19:00 +00:00
Chris Lattner
d878ecd904 Teach SROA how to promote an array index that is variable, if the dimension
of the array is just two.  This occurs 8 times in gcc, 6 times in crafty, and
12 times in 099.go.

This implements ScalarRepl/sroa_two.ll


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17727 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-14 05:00:19 +00:00
Brian Gaeke
b31a828533 Update failing Benchmarks; point out that I'm skipping Shootout-C++.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17725 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-14 04:43:12 +00:00
Chris Lattner
f5990edc87 Rearrange some code, no functionality changes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17724 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-14 04:24:28 +00:00
Brian Gaeke
1c745818ff Update expected UnitTests failures.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17723 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-14 03:22:08 +00:00
Brian Gaeke
24b90c3647 Rewrite outgoing arg handling to handle more weird corner cases.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17722 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-14 03:22:07 +00:00
Brian Gaeke
54799c2a51 Support UndefValue emission.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17721 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-14 03:22:05 +00:00
Chris Lattner
4c989b6bd7 Remove debugging code
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17719 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-13 23:32:53 +00:00
Chris Lattner
11a3d7b7dd Argument promotion transforms functions to unconditionally load their
argument pointers.  This is only valid to do if the function already
unconditionally loaded an argument or if the pointer passed in is known
to be valid.  Make sure to do the required checks.

This fixed ArgumentPromotion/control-flow.ll and the Burg program.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17718 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-13 23:31:34 +00:00
Chris Lattner
4b2c09fa22 Don't print unneeded labels
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17714 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-13 23:27:11 +00:00
Chris Lattner
4394d51467 Hack around stupidity in GCC, fixing Burg with the CBE and
CBackend/2004-11-13-FunctionPointerCast.llx


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17710 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-13 22:21:56 +00:00
Chris Lattner
ce7cafa960 shld is a very high latency operation. Instead of emitting it for shifts of
two or three, open code the equivalent operation which is faster on athlon
and P4 (by a substantial margin).

For example, instead of compiling this:

long long X2(long long Y) { return Y << 2; }

to:

X3_2:
        movl 4(%esp), %eax
        movl 8(%esp), %edx
        shldl $2, %eax, %edx
        shll $2, %eax
        ret

Compile it to:

X2:
        movl 4(%esp), %eax
        movl 8(%esp), %ecx
        movl %eax, %edx
        shrl $30, %edx
        leal (%edx,%ecx,4), %edx
        shll $2, %eax
        ret

Likewise, for << 3, compile to:

X3:
        movl 4(%esp), %eax
        movl 8(%esp), %ecx
        movl %eax, %edx
        shrl $29, %edx
        leal (%edx,%ecx,8), %edx
        shll $3, %eax
        ret

This matches icc, except that icc open codes the shifts as adds on the P4.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17707 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-13 20:48:57 +00:00
Chris Lattner
62f5a9402c Add missing check
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17706 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-13 20:04:38 +00:00
Chris Lattner
44205cadba Compile:
long long X3_2(long long Y) { return Y+Y; }
int X(int Y) { return Y+Y; }

into:

X3_2:
        movl 4(%esp), %eax
        movl 8(%esp), %edx
        addl %eax, %eax
        adcl %edx, %edx
        ret
X:
        movl 4(%esp), %eax
        addl %eax, %eax
        ret

instead of:

X3_2:
        movl 4(%esp), %eax
        movl 8(%esp), %edx
        shldl $1, %eax, %edx
        shll $1, %eax
        ret

X:
        movl 4(%esp), %eax
        shll $1, %eax
        ret


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17705 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-13 20:03:48 +00:00
Chris Lattner
50af16a97b Simplify handling of shifts to be the same as we do for adds. Add support
for (X * C1) + (X * C2) (where * can be mul or shl), allowing us to fold:

   Y+Y+Y+Y+Y+Y+Y+Y

into
         %tmp.8 = shl long %Y, ubyte 3           ; <long> [#uses=1]

instead of

        %tmp.4 = shl long %Y, ubyte 2           ; <long> [#uses=1]
        %tmp.12 = shl long %Y, ubyte 2          ; <long> [#uses=1]
        %tmp.8 = add long %tmp.4, %tmp.12               ; <long> [#uses=1]

This implements add.ll:test25

Also add support for (X*C1)-(X*C2) -> X*(C1-C2), implementing sub.ll:test18


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17704 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-13 19:50:12 +00:00
Chris Lattner
65aedc1a4e Fold:
(X + (X << C2)) --> X * ((1 << C2) + 1)
   ((X << C2) + X) --> X * ((1 << C2) + 1)

This means that we now canonicalize "Y+Y+Y" into:

        %tmp.2 = mul long %Y, 3         ; <long> [#uses=1]

instead of:

        %tmp.10 = shl long %Y, ubyte 1          ; <long> [#uses=1]
        %tmp.6 = add long %Y, %tmp.10               ; <long> [#uses=1]


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17701 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-13 19:31:40 +00:00
Chris Lattner
0c3b390a54 Lazily create the abort message, so only translation units that use unwind
will actually get it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17700 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-13 19:07:32 +00:00
Chris Lattner
9ecc046184 Fix: CodeExtractor/2004-11-12-InvokeExtract.ll
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17699 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-13 00:06:45 +00:00
Chris Lattner
68c311aac6 Fix a bug where the code extractor would get a bit confused handling invoke
instructions, setting DefBlock to a block it did not have dom info for.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17697 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-12 23:50:44 +00:00
Chris Lattner
44c94b9671 Simplify handling of constant initializers
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17696 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-12 22:42:57 +00:00
Reid Spencer
5c911ab6f1 Makefile for lib/Linker
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17695 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-12 20:38:45 +00:00
Reid Spencer
7f49602e5a This file originated in lib/VMCore/Linker.cpp but now lives in
lib/Linker/LinkModules.cpp


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17694 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-12 20:37:43 +00:00
Reid Spencer
c408c45900 This file originated in tools/gccld/Linker.cpp but now lives in
lib/Linker/LinkArchives.cpp


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17693 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-12 20:34:32 +00:00
Chris Lattner
04252fed78 Make this build in release mode
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17684 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-11 22:11:17 +00:00
Chris Lattner
d79c7b43f4 Actually, leave the check in. This prevents us from counting dead arguments
as IPCP opportunities.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17680 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-11 07:47:54 +00:00
Chris Lattner
3e062eacab Fix bug: IPConstantProp/deadarg.ll
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17679 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-11 07:46:29 +00:00
Chris Lattner
ff1529b6cf Make IP Constant prop more aggressive about handling self recursive calls.
This implements IPConstantProp/recursion.ll


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17666 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-10 19:43:59 +00:00
John Criswell
546faca4ef Correct the name of stosd for the AT&T syntax:
It's stosl (l for long == 32 bit).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17658 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-10 04:48:15 +00:00
Chris Lattner
c890bfe1da Do not let dead constant expressions hanging off of functions prevent IPCP.
This allows to elimination of a bunch of global pool descriptor args from
programs being pool allocated (and is also generally useful!)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17657 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-09 20:47:30 +00:00
Reid Spencer
4b82681c65 Fix isBytecodeFile to correctly recognized compressed bytecode too.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17655 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-09 20:27:23 +00:00
Reid Spencer
9195f37c5f * Implement getStatusInfo for getting stat(2) like information
* Implement createTemporaryFile for mkstemp(3) functionality
* Fix isBytecodeFile to accept llvc magic # (compressed) as bytecode.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17654 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-09 20:26:31 +00:00
John Criswell
b5810282ee Recognize compressed LLVM bytecode files.
This should fix the problem of not being able to link compressed LLVM
bytecode files from LLVM libraries.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17648 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-09 19:37:07 +00:00
Reid Spencer
580a1164d8 Tune compression:
bzip2: block size 9 -> 5, reduces memory by 400Kbytes, doesn't affect speed
       or compression ratio on all but the largest bytecode files (>1MB)
zip:   level 9 -> 6, this speeds up compression time by ~30% but only
       degrades the compressed size by a few bytes per megabyte. Those few
       bytes aren't worth the effort.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17647 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-09 17:58:09 +00:00
Chris Lattner
a8e475093a Change this back so that I get stable numbers to reflect the change from the
nightly testers


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17646 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-09 08:05:23 +00:00
Chris Lattner
52f20f8308 Fix bug: 2004-11-08-FreeUseCrash.ll
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17642 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-09 05:10:56 +00:00
Misha Brukman
710d1ce4f0 * Convert tabs to spaces
* Order #includes according to style guide
* Remove extraneous blank lines


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17639 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-09 04:27:19 +00:00
Misha Brukman
669b524399 Output the program name (in this case, gccld) with warning about invalid files
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17638 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-09 04:24:59 +00:00
Nate Begeman
a591457857 Allow hbd to be bugpointable on darwin by fixing common and linkonce codegen
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17637 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-09 04:01:18 +00:00
Misha Brukman
336e56e67d Handle headers for compressed bytecode files
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17634 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-08 22:03:32 +00:00
Misha Brukman
eda20f933b Don't silently ignore invalid files: tell the user!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17633 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-08 22:03:10 +00:00
Chris Lattner
ac6d4854e1 Fix a bug that was preventing povray and namd from pool allocating correctly.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17632 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-08 21:08:46 +00:00
Chris Lattner
beacefae61 Handle assert_fail special
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17631 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-08 21:08:28 +00:00
Reid Spencer
01a42e40ed Fix a typo: isvalid -> isValid
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17621 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-08 08:27:51 +00:00
Nate Begeman
676dee6ae9 Put int the getReg cast optimization from x86 so that we generate fewer
move instructions for the register allocator to coalesce.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17608 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-08 02:25:40 +00:00
Misha Brukman
895eddfad4 Implement ExecutionEngine::freeMachineCodeForFunction()
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17601 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-07 23:58:46 +00:00
Chris Lattner
ae18963a70 VERY large functions that are only called from one place are not really
exciting to inline.  Only inline medium or small sized functions with a
single call site.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17588 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-07 21:46:47 +00:00
Nate Begeman
075cdc655e Disable bogus cast elimination when the cast is used by a setcc instruction.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17583 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-07 20:23:42 +00:00
Reid Spencer
f0c977cbac * Comments & cleanup per CL code review.
* Accept 'llvc' as signature for compressed bytecode


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17579 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-07 18:20:55 +00:00
Reid Spencer
36eea80616 Add comments per CL code review.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17578 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-07 18:19:00 +00:00
Reid Spencer
83296f5496 * Add comments and cleanup per CL code review
* Make signature for compressed bytecode llvc instead of unreadable
* Make the CompressionContext have a constructor and destructor.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17576 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-07 18:17:38 +00:00
Misha Brukman
fb4863ac55 Replace uses of llvm.org with llvm.cs.uiuc.edu
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17549 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-07 00:58:38 +00:00
Misha Brukman
d8b8912861 Consistently use llvm.cs.uiuc.edu instead of llvm.org
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17548 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-07 00:58:20 +00:00
Chris Lattner
26818012e3 Decompose* is V9 specific, make it internal
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17547 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-07 00:43:24 +00:00
Chris Lattner
00a4fe48ac This is V9 specific, move it there.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17545 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-07 00:39:26 +00:00
Chris Lattner
64a26c7bf8 Move this file from lib/Transforms/Scalar
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17544 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-07 00:39:09 +00:00
Reid Spencer
17f52c5c46 Add support for compressed bytecode
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17535 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-06 23:17:23 +00:00
Reid Spencer
2bcfcbe795 Implement the GetBytecodeSymbols interface function to extract just the
externally visible defined symbols from a bytecode file.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17503 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-06 08:56:40 +00:00
Reid Spencer
cdb21a9e49 Makefile for the LLVMArchive library.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17500 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-06 08:52:36 +00:00
Reid Spencer
362cbf0d74 First kinda/sorta working version of the Archive library. Reading is not
yet supported but writing works. Way too early to review this. More to come


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17499 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-06 08:51:45 +00:00
Reid Spencer
07adb2836b Stop propagating method names that violate the coding standard
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17498 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-05 22:15:36 +00:00
John Criswell
e5cda8e727 Fix compilation problem; make the cast and the LHS be the same type.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17488 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-05 16:17:06 +00:00
Chris Lattner
53fe2beb01 Remove dead var
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17485 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-05 04:52:08 +00:00
Chris Lattner
141e3fd81d Quiet VC++ warnings
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17484 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-05 04:50:59 +00:00
Chris Lattner
41ffe4b531 Do not make i have bigger scope that we need
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17483 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-05 04:47:37 +00:00
Chris Lattner
183f2eb860 Remove dead vars
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17482 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-05 04:46:22 +00:00
Chris Lattner
f158092801 Fix some warnings on VC++
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17481 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-05 04:45:43 +00:00
Nate Begeman
28dd2fc240 Thanks to sabre for pointing out that we were incorrectly codegen'ing
int test(int x) { return 32768 - x; }

Fixed by teaching the function that checks a constant's validity to be used
as an immediate argument about subtract-from instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17476 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-04 19:43:18 +00:00
Brian Gaeke
6931fd61c0 Handle "call" operands of type long/ulong passed in registers.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17464 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-04 00:27:04 +00:00
Chris Lattner
82962de3b9 Don't call Constant::getNullValue when the argument could be VoidTy
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17457 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-03 18:51:26 +00:00
Chris Lattner
da6122f61d Fix this function to not say that longs have 8-byte alignment on X86/PPC.
This method is really a gross hack, but at least we can make it work on
the targets we support right now.

This bug fix stops a crash in a testcase reduced from 176.gcc


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17443 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-02 22:18:18 +00:00
Tanya Lattner
80f085500f Added gross hacks such as creating my own def-use map, and picking on Instruction that I can add all my TmpInstructions to its MCFI.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17441 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-02 21:04:56 +00:00
Chris Lattner
f1de30acce Graphs that are part of equivalence sets can be multi-function SCC's
themselves.  Make sure to update DSInfo correctly.  This fixes a testcase
reduced from Prolangs-C++/objects


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17439 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-02 20:31:06 +00:00
Chris Lattner
caa35bc0b6 Correctly handle new SCC's found as a result of merging EQ graphs do to
function pointer equivalences.  This fixes many problems, including a testcase
reduced Prolangs-C++/objects.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17437 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-02 19:29:59 +00:00
Chris Lattner
033a7d5389 Substantially cleanup/speedup the eq graphs pass by walking the callgraph
a DSGraph at a time instead of a function at a time.  This is also more
correct, though it doesn't seem to fix any programs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17435 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-02 17:51:11 +00:00
Chris Lattner
a62869b064 Fix a warning
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17431 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-02 15:27:57 +00:00
Chris Lattner
983baf472f Minor cleanups
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17428 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-02 06:38:58 +00:00
Chris Lattner
d308f8a87f * Rearrange code slightly
* Disable broken transforms for simplifying (setcc (cast X to larger), CI)
  where CC is not != or ==


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17422 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-02 03:50:32 +00:00
Chris Lattner
4457f7ea46 Remove more dead methods
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17413 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-01 21:07:05 +00:00
Chris Lattner
fcb7d950bc Rename FoldedGraph -> DSInfo to be consistent with other passes
delete some dead methods


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17410 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-01 21:02:23 +00:00
Chris Lattner
77408b8987 Get rid of the EquivClassGraphArgsInfo class, and the map that held it.
We only need one instance of the vector that it contains at a time.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17407 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-01 20:37:00 +00:00
Chris Lattner
7cc372bfc3 Add placeholder variable to make Win32 work, applied for Morten Ofstad
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17406 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-01 20:10:20 +00:00
Chris Lattner
68f9658fcb Eliminate the cloneGraph method
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17405 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-01 19:54:06 +00:00
Chris Lattner
7e54a01ddb Speed up the tail duplication pass on the testcase below from 68.2s to 1.23s:
#define CL0(a) case a: f(); goto c;
 #define CL1(a) CL0(a##0) CL0(a##1) CL0(a##2) CL0(a##3) CL0(a##4) CL0(a##5) \
 CL0(a##6) CL0(a##7) CL0(a##8) CL0(a##9)
 #define CL2(a) CL1(a##0) CL1(a##1) CL1(a##2) CL1(a##3) CL1(a##4) CL1(a##5) \
 CL1(a##6) CL1(a##7) CL1(a##8) CL1(a##9)
 #define CL3(a) CL2(a##0) CL2(a##1) CL2(a##2) CL2(a##3) CL2(a##4) CL2(a##5) \
 CL2(a##6) CL2(a##7) CL2(a##8) CL2(a##9)
 #define CL4(a) CL3(a##0) CL3(a##1) CL3(a##2) CL3(a##3) CL3(a##4) CL3(a##5) \
 CL3(a##6) CL3(a##7) CL3(a##8) CL3(a##9)

 void f();

 void a() {
     int b;
  c: switch (b) {
         CL4(1)
     }
 }

This comes from GCC PR 15524


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17390 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-01 07:05:07 +00:00
Chris Lattner
bfd3e52701 Do not compute the predecessor list for a block unless we need it.
This speeds up simplifycfg on this program, from 44.87s to 0.29s (with
a profiled build):

 #define CL0(a) case a: goto c;
 #define CL1(a) CL0(a##0) CL0(a##1) CL0(a##2) CL0(a##3) CL0(a##4) CL0(a##5) \
 CL0(a##6) CL0(a##7) CL0(a##8) CL0(a##9)
 #define CL2(a) CL1(a##0) CL1(a##1) CL1(a##2) CL1(a##3) CL1(a##4) CL1(a##5) \
 CL1(a##6) CL1(a##7) CL1(a##8) CL1(a##9)
 #define CL3(a) CL2(a##0) CL2(a##1) CL2(a##2) CL2(a##3) CL2(a##4) CL2(a##5) \
 CL2(a##6) CL2(a##7) CL2(a##8) CL2(a##9)
 #define CL4(a) CL3(a##0) CL3(a##1) CL3(a##2) CL3(a##3) CL3(a##4) CL3(a##5) \
 CL3(a##6) CL3(a##7) CL3(a##8) CL3(a##9)

 void f();

 void a() {
     int b;
  c: switch (b) {
         CL4(1)
     }
 }

This testcase is contrived to expose N^2 behavior, but this patch should speedup
simplifycfg on any programs that use large switch statements.  This testcase
comes from GCC PR17895.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17389 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-01 06:53:58 +00:00
Chris Lattner
31d3f671be * Do not refer to ActualCallees in CBU, when we can do it locally.
* *DO NOT* print CBU graphs when asked to print our own.  This is just
  FREAKING confusing and misleading: it's better to not print anything.
* Simplify and clean up some code
* Add some more paranoia assertion checking code that I found to track
  down this bug:
* Fix a nasty bug that was causing us to crash on Prolangs-C++/objects,
  where we were missing processing some graphs.  This hunk is the bugfix:

-    if (!I->isExternal() && !FoldedGraphsMap.count(I))
+    if (!I->isExternal() && !ValMap.count(I))

  urg!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17386 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-31 23:41:26 +00:00
Chris Lattner
4bbf3dfbe6 Simplify graph traversal, improve grammar
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17383 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-31 23:01:34 +00:00
Chris Lattner
ab8544aa75 Do not do horrible things to the CBU graphs. In particular, we do NOT own
the CBU graphs, copy them instead of hacking on the CBU graphs.

Also, instead of forwarding request from ECGraphs clients to the CBU graphs
clients, service them ourselves.

Finally, remove a broken "optimization"


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17378 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-31 21:56:11 +00:00
Chris Lattner
3b7b81b814 Fix comment
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17377 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-31 21:54:51 +00:00
Chris Lattner
e84c23e0c1 Improve comment
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17375 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-31 19:57:43 +00:00
Chris Lattner
f498568240 Fix another bug in Prolangs-C++/objects
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17372 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-31 18:13:19 +00:00
Chris Lattner
113cde8685 Only call getNodeForValue on pointer arguments! this fixes a problem running
on Prolangs-C++/objects


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17368 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-31 17:47:48 +00:00
Chris Lattner
7d8d4711d9 Add more paranoid assertions :)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17367 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-31 17:45:40 +00:00
Reid Spencer
cc2d1e25f3 Internalize variable names to prevent recursive assignment. Cleanup docs.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17359 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-30 09:19:36 +00:00
Chris Lattner
f1bd4b4215 Fix some more problems where we called getOffset before getNode()
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17358 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-30 07:21:19 +00:00
Chris Lattner
857eb0697f Fix three bugs:
1. Calls to external global VARIABLES should not be treated as a call to an
    external function
 2. Efficiently deleting an element from a vector by using std::swap with
    the back, then pop_back is NOT a good way to keep the vector sorted.
 3. Our hope of having stuff get deleted by making them redundant just won't
    work.  In particular, if we have three calls in sequence that should be
    merged: A, B, C   first we unify B into A.  To be sure that they appeared
    identical (so B would be erased) we set B = A.  On the next step, we
    unified C into A and set C = A.  Unfortunately, this is no guarantee that
    C = B, so we would fail to delete the dead call.  Switch to a more
    explicit scheme.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17357 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-30 05:41:23 +00:00