Reid Spencer [Sat, 17 Jul 2004 23:30:45 +0000 (23:30 +0000)]
Fix a comment.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14923
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Sat, 17 Jul 2004 23:30:11 +0000 (23:30 +0000)]
bug 122:
We don't need to keep track of CPRs any more.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14922
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Sat, 17 Jul 2004 23:29:46 +0000 (23:29 +0000)]
bug 122:
Now that GlobalVariable is a constant (via derivation from GlobalValue),
override the replaceUsesOfWithOnConstant method.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14921
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Sat, 17 Jul 2004 23:28:28 +0000 (23:28 +0000)]
bug 122:
- derive from Constant
- declare needed overrides from Constant class
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14920
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Sat, 17 Jul 2004 23:26:57 +0000 (23:26 +0000)]
****** ABOLISH ConstantPointerRef *****
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14919
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Sat, 17 Jul 2004 23:26:12 +0000 (23:26 +0000)]
Extend constructor so that it can support GlobalValue's (with names).
Make GlobalValue a "classof" Constant
Fix the classof(Value*) to include GlobalValue's
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14918
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Sat, 17 Jul 2004 23:23:30 +0000 (23:23 +0000)]
Constant value not needed after CPR's disappear.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14917
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sat, 17 Jul 2004 21:51:25 +0000 (21:51 +0000)]
It looks like physref->virtreg joining is working fine. Enable it by default
but make virtreg->virtreg joining stay off by default
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14916
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sat, 17 Jul 2004 20:26:14 +0000 (20:26 +0000)]
Make sure to emit the immediate byte for instructions like:
shrd [mem], reg, imm
This fixes the jit-ls failure on 186.crafty.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14914
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sat, 17 Jul 2004 20:24:05 +0000 (20:24 +0000)]
Reserve the correct amt of space.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14913
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sat, 17 Jul 2004 18:50:19 +0000 (18:50 +0000)]
Hrm, I think we need a "Reid is buggy" bug ;-)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14912
91177308-0d34-0410-b5e6-
96231b3b80d8
Misha Brukman [Sat, 17 Jul 2004 18:37:46 +0000 (18:37 +0000)]
We don't really need to #include IPO.h into this file.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14911
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Sat, 17 Jul 2004 10:04:49 +0000 (10:04 +0000)]
Initial (outline only) draft of the System Library requirements, design
and details documentation.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14910
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Sat, 17 Jul 2004 08:39:53 +0000 (08:39 +0000)]
Added a README to point users to the documentation on the design of this
library which is a prerequisite for maintaining the library.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14909
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sat, 17 Jul 2004 07:40:34 +0000 (07:40 +0000)]
Fix incorrect computation of mod/ref sets. Do not ask for mod/ref information
for objects of size 0.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14908
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sat, 17 Jul 2004 06:43:20 +0000 (06:43 +0000)]
Print modref information in a useful way.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14907
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sat, 17 Jul 2004 06:28:49 +0000 (06:28 +0000)]
Cleanups: fold two loops into one
New features: -print-all-alias-modref-info option, print more info
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14906
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sat, 17 Jul 2004 03:09:12 +0000 (03:09 +0000)]
link.h causes problems on some platforms and is not needed on solaris, where
the comment came from.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14905
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sat, 17 Jul 2004 02:56:48 +0000 (02:56 +0000)]
Remove dead file
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14904
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sat, 17 Jul 2004 02:04:41 +0000 (02:04 +0000)]
Add note about IA64 C++
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14903
91177308-0d34-0410-b5e6-
96231b3b80d8
Brian Gaeke [Fri, 16 Jul 2004 21:40:32 +0000 (21:40 +0000)]
Fix warning on 64-bit machines
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14902
91177308-0d34-0410-b5e6-
96231b3b80d8
Misha Brukman [Fri, 16 Jul 2004 21:06:24 +0000 (21:06 +0000)]
* Use LI(S) to copy constants into registers intead of ADDI(S) as the latter is
a funky way to "use" R0 for a 0-valued operand
* Add IMPLICIT_DEFs for incoming function arguments via registers to help the
register allocator not clobber those registers
* Implement comparisons with longs
* Teach emitSelectOperation() to fold the SetCC operation
Patch contributed by Nate Begeman
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14901
91177308-0d34-0410-b5e6-
96231b3b80d8
Misha Brukman [Fri, 16 Jul 2004 20:55:20 +0000 (20:55 +0000)]
* Store all non-volatile int registers R13-31 on the stack, restore on exit
* Fix comment formatting
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14900
91177308-0d34-0410-b5e6-
96231b3b80d8
Misha Brukman [Fri, 16 Jul 2004 20:54:25 +0000 (20:54 +0000)]
Fix code formatting
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14899
91177308-0d34-0410-b5e6-
96231b3b80d8
Misha Brukman [Fri, 16 Jul 2004 20:51:55 +0000 (20:51 +0000)]
Implement PowerPCInstrInfo::isMoveInstr(), patch by Nate Begeman
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14898
91177308-0d34-0410-b5e6-
96231b3b80d8
Misha Brukman [Fri, 16 Jul 2004 20:50:55 +0000 (20:50 +0000)]
Add prototype for TargetInstrInfo::isMoveInstr()
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14897
91177308-0d34-0410-b5e6-
96231b3b80d8
Misha Brukman [Fri, 16 Jul 2004 20:35:20 +0000 (20:35 +0000)]
* Enable allocation of registers r2-r10
* Allocate registers 13-31 backwards (to be able to store them all at once)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14896
91177308-0d34-0410-b5e6-
96231b3b80d8
Misha Brukman [Fri, 16 Jul 2004 20:33:41 +0000 (20:33 +0000)]
Add IMPLICIT_DEFS pseudo-instruction; patch by: Nate Begeman
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14895
91177308-0d34-0410-b5e6-
96231b3b80d8
Misha Brukman [Fri, 16 Jul 2004 20:31:13 +0000 (20:31 +0000)]
The generated instruction selector isn't (yet) functional
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14894
91177308-0d34-0410-b5e6-
96231b3b80d8
Misha Brukman [Fri, 16 Jul 2004 20:29:04 +0000 (20:29 +0000)]
* Output non-lazy linking stubs for external global variables
* Get rid of dead and #if 0'd code
* Minor for loop speed-up: save end iterator instead of querying every time
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14893
91177308-0d34-0410-b5e6-
96231b3b80d8
Misha Brukman [Fri, 16 Jul 2004 19:45:45 +0000 (19:45 +0000)]
Correctly build shared objects on MacOS X for debugging code generators
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14892
91177308-0d34-0410-b5e6-
96231b3b80d8
Misha Brukman [Fri, 16 Jul 2004 19:32:12 +0000 (19:32 +0000)]
Define double alignment as 8 bytes now that assert(DoubleAlignment == PointerSize)
has been eliminated
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14891
91177308-0d34-0410-b5e6-
96231b3b80d8
Misha Brukman [Fri, 16 Jul 2004 19:01:13 +0000 (19:01 +0000)]
* Add spaces between words and numbers in comments printed out for longs/floats
* Print out IMPLICIT_DEFS as comments in the assembly, patch by Nate Begeman
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14890
91177308-0d34-0410-b5e6-
96231b3b80d8
Misha Brukman [Fri, 16 Jul 2004 17:40:28 +0000 (17:40 +0000)]
Fix grammar.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14888
91177308-0d34-0410-b5e6-
96231b3b80d8
Alkis Evlogimenos [Fri, 16 Jul 2004 12:04:28 +0000 (12:04 +0000)]
Add convinience constructor for function calls with two args.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14885
91177308-0d34-0410-b5e6-
96231b3b80d8
Brian Gaeke [Fri, 16 Jul 2004 10:32:10 +0000 (10:32 +0000)]
Add a class for pseudo-instructions. Use it.
Add IMPLICIT_USE and IMPLICIT_DEF, a la X86.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14884
91177308-0d34-0410-b5e6-
96231b3b80d8
Brian Gaeke [Fri, 16 Jul 2004 10:31:59 +0000 (10:31 +0000)]
Add what will eventually be the TSFlags. Big switch(opcode) statements are bad.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14883
91177308-0d34-0410-b5e6-
96231b3b80d8
Brian Gaeke [Fri, 16 Jul 2004 10:31:47 +0000 (10:31 +0000)]
Add special handling for pseudo-instructions (print them as comments).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14882
91177308-0d34-0410-b5e6-
96231b3b80d8
Brian Gaeke [Fri, 16 Jul 2004 10:31:36 +0000 (10:31 +0000)]
Add to-do list.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14881
91177308-0d34-0410-b5e6-
96231b3b80d8
Brian Gaeke [Fri, 16 Jul 2004 10:31:25 +0000 (10:31 +0000)]
Do IMPLICIT_DEFs on incoming args' hard regs, to avoid confusing the regalloc.
Support single-fp incoming args.
Support single-fp outgoing args ('call' operands).
Support double-fp return values.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14880
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 16 Jul 2004 07:14:34 +0000 (07:14 +0000)]
The powerpc is now gone. However it is now just known as the Skeleton target.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14877
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 16 Jul 2004 07:12:46 +0000 (07:12 +0000)]
Build skeleton target
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14876
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 16 Jul 2004 07:11:53 +0000 (07:11 +0000)]
Build the skeleton target
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14875
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 16 Jul 2004 07:11:15 +0000 (07:11 +0000)]
Initial checkin of the rest of the skeleton target
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14874
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 16 Jul 2004 06:29:19 +0000 (06:29 +0000)]
Initial skeleton tablegen files
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14873
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 16 Jul 2004 06:20:55 +0000 (06:20 +0000)]
Add skeleton makefile
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14872
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 16 Jul 2004 06:12:28 +0000 (06:12 +0000)]
Initial readme
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14871
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 16 Jul 2004 01:18:09 +0000 (01:18 +0000)]
Fix the regressions handling unnamed global variables
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14870
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 16 Jul 2004 00:10:54 +0000 (00:10 +0000)]
For 64-bit platform support, we now use the clEnumValEnd macro to terminate
cl::values lists
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14869
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 16 Jul 2004 00:08:28 +0000 (00:08 +0000)]
IA64 compat
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14867
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 16 Jul 2004 00:06:01 +0000 (00:06 +0000)]
Fix IA64 compatibility
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14866
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 16 Jul 2004 00:04:54 +0000 (00:04 +0000)]
Use new macro
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14865
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 16 Jul 2004 00:04:13 +0000 (00:04 +0000)]
Be compatible with IA64
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14864
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 16 Jul 2004 00:02:21 +0000 (00:02 +0000)]
Passing integer 0 in for a pointer value doesn't work on IA64. Fix this
by using a new macro.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14863
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 16 Jul 2004 00:01:05 +0000 (00:01 +0000)]
Add a new macro to be used for the end of enum lists.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14862
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 15 Jul 2004 23:36:43 +0000 (23:36 +0000)]
This patch was contributed by Daniel Berlin!
Speed up SCCP substantially by processing overdefined values quickly. This
patch speeds up SCCP by about 30-40% on large testcases.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14861
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 15 Jul 2004 08:20:22 +0000 (08:20 +0000)]
Fix PR404 try #2
This version takes about 1s longer than the previous one (down to 2.35s),
but on the positive side, it actually works :)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14856
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 15 Jul 2004 08:18:31 +0000 (08:18 +0000)]
Give SetVector range support
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14855
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 15 Jul 2004 07:44:34 +0000 (07:44 +0000)]
Nuke a clearly bogus assertion
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14854
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 15 Jul 2004 05:36:31 +0000 (05:36 +0000)]
Revert previous patch until I get a bug fixed
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14853
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 15 Jul 2004 04:30:35 +0000 (04:30 +0000)]
QOI issue fixed
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14852
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 15 Jul 2004 04:27:04 +0000 (04:27 +0000)]
Fix PR404: Loop simplify is really slow on 252.eon
This eliminates an N*N*logN algorithm from the loop simplify pass, replacing
it with a much simpler and faster alternative. In a debug build, this reduces
gccas time on eon from 85s to 42s.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14851
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 15 Jul 2004 02:59:24 +0000 (02:59 +0000)]
Bug fixed
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14850
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 15 Jul 2004 02:54:36 +0000 (02:54 +0000)]
Final fix for PR341: eliminate operator<<(ostream, Value*). Clients should
now send references to ostreams instead of pointers. Sending pointers to
ostreams will print their addresses.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14849
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 15 Jul 2004 02:51:32 +0000 (02:51 +0000)]
Fixes for PR341
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14848
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 15 Jul 2004 02:51:31 +0000 (02:51 +0000)]
Fixes for PR341
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14847
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 15 Jul 2004 02:50:38 +0000 (02:50 +0000)]
Fix for PR341
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14846
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 15 Jul 2004 02:40:04 +0000 (02:40 +0000)]
Fix for PR341
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14845
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 15 Jul 2004 02:33:38 +0000 (02:33 +0000)]
Revert stuff that I didn't mean to checkin
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14844
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 15 Jul 2004 02:31:46 +0000 (02:31 +0000)]
Fixes for PR341
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14843
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 15 Jul 2004 02:26:49 +0000 (02:26 +0000)]
Fix for PR341
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14842
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 15 Jul 2004 02:14:30 +0000 (02:14 +0000)]
Patches towards fixing PR341
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14841
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 15 Jul 2004 02:06:12 +0000 (02:06 +0000)]
Progress on PR341
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14840
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 15 Jul 2004 01:50:47 +0000 (01:50 +0000)]
Fixes working towards PR341
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14839
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 15 Jul 2004 01:29:12 +0000 (01:29 +0000)]
Bug fixes for PR341
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14838
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 15 Jul 2004 01:16:59 +0000 (01:16 +0000)]
Implement folding of expressions like 'uint cast (int* getelementptr (int*
null, uint 1) to uint)' to a constant integer. We can only do this with
primitive LLVM types, because other types have target-specific sizes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14837
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 15 Jul 2004 01:15:53 +0000 (01:15 +0000)]
Yeah, how about those 'primative' types huh?
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14836
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 15 Jul 2004 01:08:08 +0000 (01:08 +0000)]
Now that we codegen the portable "sizeof" efficiently, we can use it for
malloc lowering. This means that lowerallocations doesn't need targetdata
anymore. yaay.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14835
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 15 Jul 2004 00:58:53 +0000 (00:58 +0000)]
Improve codegen for the LLVM offsetof/sizeof "operator". Before we compiled
this LLVM function:
int %foo() {
ret int cast (int** getelementptr (int** null, int 1) to int)
}
into:
foo:
mov %EAX, 0
lea %EAX, DWORD PTR [%EAX + 4]
ret
now we compile it into:
foo:
mov %EAX, 4
ret
This sequence is frequently generated by the MSIL front-end, and soon the malloc lowering pass and
Java front-ends as well..
-Chris
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14834
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 14 Jul 2004 23:14:07 +0000 (23:14 +0000)]
You cannot pass functions by value, what does that even mean??
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14833
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 14 Jul 2004 23:12:09 +0000 (23:12 +0000)]
this "feature" is gone
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14832
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 14 Jul 2004 23:07:13 +0000 (23:07 +0000)]
This is logically part of the last patch. Just more really horrible code
that is made unnecessary by it.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14831
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 14 Jul 2004 23:03:46 +0000 (23:03 +0000)]
** Finally DeclareNewGlobalValue is dead!
* Simplify a lot of code because type's cannot be in function symbol tables
* Fix memory leaks in handling of redefined function prototypes
* Don't use SymbolTable directly for stuff that we can go through the Module
for.
* Fix some minor bugs on obscure testcases like:
test/Feature/globalredefinition.ll
* Do not create GlobalVariable objects for forward referenced Functions!
* When forward referencing a function in a constant expression, do not create
a placeholder, add a bunch of references to it, then turn around and
replaceAllUsesOfWith on it with a new global, deleting the placeholder.
Instead, when we find the real definition of the global, just use the
placeholder instead of creating a new object.
This substantially simplifies the asmwriter and should even speed it up on
cases heavy in constantexprs (like C++, Java, MSIL)...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14830
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 14 Jul 2004 22:59:47 +0000 (22:59 +0000)]
New, horrible, testcase
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14829
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 14 Jul 2004 21:44:00 +0000 (21:44 +0000)]
* Fairly substantial change. Instead of creating new globalvariables, then
replaceAllUsesWith'ing any forward references, just use the forward
reference if it exists.
This introduces GetForwardRefForGlobal, which will eventually completely
replace the horrible DeclareNewGlobalValue function.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14828
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 14 Jul 2004 20:42:57 +0000 (20:42 +0000)]
Fold setValueNameMergingDuplicates into ParseGlobalVariable, allowing us
to substantially simplify the result. In particular, we no longer create
GlobalVariables and then immediately destroy them when they are duplciate
definitions.
The real point of this patch though is that it gets us closer to the
DeclareNewGlobalValue calls...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14827
91177308-0d34-0410-b5e6-
96231b3b80d8
Brian Gaeke [Wed, 14 Jul 2004 20:33:13 +0000 (20:33 +0000)]
Actually set the endian/pointersize flags on the module being read in!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14826
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 14 Jul 2004 20:27:12 +0000 (20:27 +0000)]
Simplify logic.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14825
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 14 Jul 2004 20:10:26 +0000 (20:10 +0000)]
Make PATypeHolder and friends return non-const pointers to the types they
hold. Because types are basically immutable anyway, they should not be
referenced as "const Type*" everywhere. Just "Type*" should suffice!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14824
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 14 Jul 2004 19:33:47 +0000 (19:33 +0000)]
Fix a regression from last night. Apparently the CFE is broken and outputs
functions multiple times, expecting them to be merged. This should be fixed
in the CFE, then here.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14823
91177308-0d34-0410-b5e6-
96231b3b80d8
Misha Brukman [Wed, 14 Jul 2004 18:26:31 +0000 (18:26 +0000)]
Make sure MTSPR instruction is inserted into the BasicBlock
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14822
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 14 Jul 2004 18:14:33 +0000 (18:14 +0000)]
Implement new helper methods for creating two-index GEP instructions
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14821
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 14 Jul 2004 18:13:54 +0000 (18:13 +0000)]
* Change code to use a static_cast instead of reinterpret_cast
* Add comments
* Add two new gep ctors for the very common case of creating a two operand
GEP instruction.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14820
91177308-0d34-0410-b5e6-
96231b3b80d8
Misha Brukman [Wed, 14 Jul 2004 17:57:04 +0000 (17:57 +0000)]
Don't define the same register twice when loading a ConstantPointerRef to a reg
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14819
91177308-0d34-0410-b5e6-
96231b3b80d8
Misha Brukman [Wed, 14 Jul 2004 15:29:51 +0000 (15:29 +0000)]
* Fix multiplication by powers of two and otherwise
* Clarify variable name (StoreInst SI instead of LI)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14818
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 14 Jul 2004 08:23:52 +0000 (08:23 +0000)]
Pull out code shared between GV forward-decl and definition processing.
This gives us only a single call site for setValueNameMergingDuplicates.
The next stage is the start merging them together.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14811
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 14 Jul 2004 07:12:48 +0000 (07:12 +0000)]
Simplify code. Do not allow functions to be redefined more than once.
Since the stupid '%X = const int 4' thing is gone, we can now simplify
setValueNameMergingDuplicates a bit more.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14810
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 14 Jul 2004 06:44:56 +0000 (06:44 +0000)]
Remove a gross and crufty "feature" that was never documented and doesn't work.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14809
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 14 Jul 2004 06:39:48 +0000 (06:39 +0000)]
Finegrainify namespacification
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14808
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 14 Jul 2004 06:28:35 +0000 (06:28 +0000)]
Revamp handling of labels. In particular, if we create a forward reference
for a basic block, use it when the block is defined instead of deleting it
and creating a new one. Also, only create at most ONE forward reference
for any block, instead of one for each forward reference.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14807
91177308-0d34-0410-b5e6-
96231b3b80d8