oota-llvm.git
19 years agoThe generated instruction selector isn't (yet) functional
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

19 years ago* Output non-lazy linking stubs for external global variables
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

19 years agoCorrectly build shared objects on MacOS X for debugging code generators
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

19 years agoDefine double alignment as 8 bytes now that assert(DoubleAlignment == PointerSize)
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

19 years ago* Add spaces between words and numbers in comments printed out for longs/floats
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

19 years agoFix grammar.
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

19 years agoAdd convinience constructor for function calls with two args.
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

19 years agoAdd a class for pseudo-instructions. Use it.
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

19 years agoAdd what will eventually be the TSFlags. Big switch(opcode) statements are bad.
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

19 years agoAdd special handling for pseudo-instructions (print them as comments).
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

19 years agoAdd to-do list.
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

19 years agoDo IMPLICIT_DEFs on incoming args' hard regs, to avoid confusing the regalloc.
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

19 years agoThe powerpc is now gone. However it is now just known as the Skeleton target.
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

19 years agoBuild skeleton target
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

19 years agoBuild the skeleton target
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

19 years agoInitial checkin of the rest of the skeleton target
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

19 years agoInitial skeleton tablegen files
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

19 years agoAdd skeleton makefile
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

19 years agoInitial readme
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

19 years agoFix the regressions handling unnamed global variables
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

19 years agoFor 64-bit platform support, we now use the clEnumValEnd macro to terminate
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

19 years agoIA64 compat
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

19 years agoFix IA64 compatibility
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

19 years agoUse new macro
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

19 years agoBe compatible with IA64
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

19 years agoPassing integer 0 in for a pointer value doesn't work on IA64. Fix this
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

19 years agoAdd a new macro to be used for the end of enum lists.
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

19 years agoThis patch was contributed by Daniel Berlin!
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

19 years agoFix PR404 try #2
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

19 years agoGive SetVector range support
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

19 years agoNuke a clearly bogus assertion
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

19 years agoRevert previous patch until I get a bug fixed
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

19 years agoQOI issue fixed
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

19 years agoFix PR404: Loop simplify is really slow on 252.eon
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

19 years agoBug fixed
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

19 years agoFinal fix for PR341: eliminate operator<<(ostream, Value*). Clients should
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

19 years agoFixes for PR341
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

19 years agoFixes for PR341
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

19 years agoFix for PR341
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

19 years agoFix for PR341
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

19 years agoRevert stuff that I didn't mean to checkin
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

19 years agoFixes for PR341
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

19 years agoFix for PR341
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

19 years agoPatches towards fixing PR341
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

19 years agoProgress on PR341
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

19 years agoFixes working towards PR341
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

19 years agoBug fixes for PR341
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

19 years agoImplement folding of expressions like 'uint cast (int* getelementptr (int*
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

19 years agoYeah, how about those 'primative' types huh?
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

19 years agoNow that we codegen the portable "sizeof" efficiently, we can use it for
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

19 years agoImprove codegen for the LLVM offsetof/sizeof "operator". Before we compiled
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

19 years agoYou cannot pass functions by value, what does that even mean??
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

19 years agothis "feature" is gone
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

19 years agoThis is logically part of the last patch. Just more really horrible code
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

19 years ago** Finally DeclareNewGlobalValue is dead!
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

19 years agoNew, horrible, testcase
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

19 years ago* Fairly substantial change. Instead of creating new globalvariables, then
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

19 years agoFold setValueNameMergingDuplicates into ParseGlobalVariable, allowing us
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

19 years agoActually set the endian/pointersize flags on the module being read in!
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

19 years agoSimplify logic.
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

19 years agoMake PATypeHolder and friends return non-const pointers to the types they
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

19 years agoFix a regression from last night. Apparently the CFE is broken and outputs
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

19 years agoMake sure MTSPR instruction is inserted into the BasicBlock
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

19 years agoImplement new helper methods for creating two-index GEP instructions
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

19 years ago* Change code to use a static_cast instead of reinterpret_cast
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

19 years agoDon't define the same register twice when loading a ConstantPointerRef to a reg
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

19 years ago* Fix multiplication by powers of two and otherwise
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

19 years agoPull out code shared between GV forward-decl and definition processing.
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

19 years agoSimplify code. Do not allow functions to be redefined more than once.
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

19 years agoRemove a gross and crufty "feature" that was never documented and doesn't work.
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

19 years agoFinegrainify namespacification
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

19 years agoRevamp handling of labels. In particular, if we create a forward reference
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

19 years agoAdd Machine-CFG edges to SparcV9 MachineBasicBlocks.
Brian Gaeke [Wed, 14 Jul 2004 05:40:50 +0000 (05:40 +0000)]
Add Machine-CFG edges to SparcV9 MachineBasicBlocks.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14806 91177308-0d34-0410-b5e6-96231b3b80d8

19 years agoSplit the basic block handling case out of getVal into getBBVal.
Chris Lattner [Wed, 14 Jul 2004 01:33:11 +0000 (01:33 +0000)]
Split the basic block handling case out of getVal into getBBVal.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14805 91177308-0d34-0410-b5e6-96231b3b80d8

19 years agoMake Argument::print more resilient to non-verifiable IR
Chris Lattner [Tue, 13 Jul 2004 23:14:34 +0000 (23:14 +0000)]
Make Argument::print more resilient to non-verifiable IR

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14801 91177308-0d34-0410-b5e6-96231b3b80d8

19 years agoCatch aggregates passed by value sooner rather than later.
Chris Lattner [Tue, 13 Jul 2004 20:09:51 +0000 (20:09 +0000)]
Catch aggregates passed by value sooner rather than later.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14800 91177308-0d34-0410-b5e6-96231b3b80d8

19 years ago* Specify that FP arith options have 3 operands
Misha Brukman [Tue, 13 Jul 2004 15:35:45 +0000 (15:35 +0000)]
* Specify that FP arith options have 3 operands
* Correctly load FP constants from the constant pool, should be refactored

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14799 91177308-0d34-0410-b5e6-96231b3b80d8

19 years agoActually, use an exception to stop verification. This gives us much better
Chris Lattner [Tue, 13 Jul 2004 08:48:04 +0000 (08:48 +0000)]
Actually, use an exception to stop verification.  This gives us much better
error messages because verification stops at the first error.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14794 91177308-0d34-0410-b5e6-96231b3b80d8

19 years agoThere is no reason to abort and print a stack trace if there is a verification
Chris Lattner [Tue, 13 Jul 2004 08:45:41 +0000 (08:45 +0000)]
There is no reason to abort and print a stack trace if there is a verification
error.  Just print the message like a good little tool.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14793 91177308-0d34-0410-b5e6-96231b3b80d8

19 years agoFine-grainify namespacification, prune #include
Chris Lattner [Tue, 13 Jul 2004 08:42:12 +0000 (08:42 +0000)]
Fine-grainify namespacification, prune #include

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14792 91177308-0d34-0410-b5e6-96231b3b80d8

19 years agoFix typeo and refactor bb productions to make it possible for us to reuse any
Chris Lattner [Tue, 13 Jul 2004 08:39:15 +0000 (08:39 +0000)]
Fix typeo and refactor bb productions to make it possible for us to reuse any
forward reference blocks if they have been created (instead of creating a new
block, replaceAllUsesOfWith, then nuking the placeholder).   This is not yet
implemented.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14791 91177308-0d34-0410-b5e6-96231b3b80d8

19 years agoEliminate some mega-cruft here. There is no reason to DERIVE FROM IR CLASSES
Chris Lattner [Tue, 13 Jul 2004 08:28:21 +0000 (08:28 +0000)]
Eliminate some mega-cruft here.  There is no reason to DERIVE FROM IR CLASSES
just to keep track of some per-object state!  Gaah!  Whoever wrote this stuff...
oh wait, that would be me.  Never mind.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14790 91177308-0d34-0410-b5e6-96231b3b80d8

19 years agoInline the now trivial setValueNameInternal function into both callers
Chris Lattner [Tue, 13 Jul 2004 08:12:39 +0000 (08:12 +0000)]
Inline the now trivial setValueNameInternal function into both callers

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14789 91177308-0d34-0410-b5e6-96231b3b80d8

19 years agoNow that basic blocks are eagerly inserted into the Function, we can use
Chris Lattner [Tue, 13 Jul 2004 08:10:10 +0000 (08:10 +0000)]
Now that basic blocks are eagerly inserted into the Function, we can use
the funciton symbol table to check for conflicts instead of having to
keep a shadow named LocalSymtab.  Totally eliminate LocalSymtab.  Verified
that this did not cause a regression on the testcase for PR107.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14788 91177308-0d34-0410-b5e6-96231b3b80d8

19 years agoA couple of substantial cleanup fixes:
Chris Lattner [Tue, 13 Jul 2004 07:59:27 +0000 (07:59 +0000)]
A couple of substantial cleanup fixes:
  1. Split setValueName into two separate functions, one that is only used
     at function scope and doesn't have to deal with duplicates, and one
     that can be used either at global or function scope but that does deal
     with conflicts.  Conflicts were only in there because of the crappy old
     CFE and probably should be entirely eliminated.
  2. Insert BasicBlock's into the parent functions when they are created
     instead of when they are complete.  This effects name lookup (for the
     better), which will be exploited in the next patch.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14787 91177308-0d34-0410-b5e6-96231b3b80d8

19 years agoFix warning on SparcV9, where sizeof (int) != sizeof (void *).
Brian Gaeke [Tue, 13 Jul 2004 07:37:43 +0000 (07:37 +0000)]
Fix warning on SparcV9, where sizeof (int) != sizeof (void *).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14786 91177308-0d34-0410-b5e6-96231b3b80d8

19 years agoReplace a bunch of complex ConstantPointerRef referring code with simple
Chris Lattner [Tue, 13 Jul 2004 06:58:07 +0000 (06:58 +0000)]
Replace a bunch of complex ConstantPointerRef referring code with simple
code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14785 91177308-0d34-0410-b5e6-96231b3b80d8

19 years agoMake tblgen not try to be smart. This is better handled in makefiles if
Chris Lattner [Tue, 13 Jul 2004 06:11:46 +0000 (06:11 +0000)]
Make tblgen not try to be smart.  This is better handled in makefiles if
at all.  Patch contributed by Vladimir Prus!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14784 91177308-0d34-0410-b5e6-96231b3b80d8

19 years agoFactor some code to handle "load (constantexpr cast foo)" just like
Chris Lattner [Tue, 13 Jul 2004 01:49:43 +0000 (01:49 +0000)]
Factor some code to handle "load (constantexpr cast foo)" just like
"load (cast foo)".  This allows us to compile C++ code like this:

class Bclass {
  public: virtual int operator()() { return 666; }
};

class Dclass: public Bclass {
  public: virtual int operator()() { return 667; }
} ;

int main(int argc, char** argv) {
  Dclass x;
  return x();
}

Into this:

int %main(int %argc, sbyte** %argv) {
entry:
        call void %__main( )
        ret int 667
}

Instead of this:

int %main(int %argc, sbyte** %argv) {
entry:
        %x = alloca "struct.std::bad_typeid"            ; <"struct.std::bad_typeid"*> [#uses=3]
        call void %__main( )
        %tmp.1.i.i = getelementptr "struct.std::bad_typeid"* %x, uint 0, uint 0, uint 0         ; <int (...)***> [#uses=1]
        store int (...)** getelementptr ([3 x int (...)*]*  %vtable for Bclass, int 0, long 2), int (...)*** %tmp.1.i.i
        %tmp.3.i = getelementptr "struct.std::bad_typeid"* %x, int 0, uint 0, uint 0            ; <int (...)***> [#uses=1]
        store int (...)** getelementptr ([3 x int (...)*]*  %vtable for Dclass, int 0, long 2), int (...)*** %tmp.3.i
        %tmp.5 = load int ("struct.std::bad_typeid"*)** cast (int (...)** getelementptr ([3 x int (...)*]*  %vtable for Dclass, int 0, long 2) to int
("struct.std::bad_typeid"*)**)          ; <int ("struct.std::bad_typeid"*)*> [#uses=1]
        %tmp.6 = call int %tmp.5( "struct.std::bad_typeid"* %x )                ; <int> [#uses=1]
ret int %tmp.6
        ret int 0
}

In order words, we now resolve the virtual function call.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14783 91177308-0d34-0410-b5e6-96231b3b80d8

19 years agoCorrectly load FP constants out of the constant pool.
Misha Brukman [Mon, 12 Jul 2004 23:49:47 +0000 (23:49 +0000)]
Correctly load FP constants out of the constant pool.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14782 91177308-0d34-0410-b5e6-96231b3b80d8

19 years agoApple's MacOS X is another OS which does not provide alloca() via <alloca.h>
Misha Brukman [Mon, 12 Jul 2004 23:37:18 +0000 (23:37 +0000)]
Apple's MacOS X is another OS which does not provide alloca() via <alloca.h>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14781 91177308-0d34-0410-b5e6-96231b3b80d8

19 years agoImplement getModuleMatchQuality and getJITMatchQuality() for PowerPC
Misha Brukman [Mon, 12 Jul 2004 23:36:12 +0000 (23:36 +0000)]
Implement getModuleMatchQuality and getJITMatchQuality() for PowerPC

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14780 91177308-0d34-0410-b5e6-96231b3b80d8

19 years ago* Tabs to spaces
Misha Brukman [Mon, 12 Jul 2004 22:58:07 +0000 (22:58 +0000)]
* Tabs to spaces
* Delete extra blank lines

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14779 91177308-0d34-0410-b5e6-96231b3b80d8

19 years agoNew open proj: C/C++ compiler in C++, with link to Ed Willink's C++ yacc grammar
Misha Brukman [Mon, 12 Jul 2004 21:10:47 +0000 (21:10 +0000)]
New open proj: C/C++ compiler in C++, with link to Ed Willink's C++ yacc grammar

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14778 91177308-0d34-0410-b5e6-96231b3b80d8

19 years agoAdd a helper method. The StructType element is completely redundant in most
Chris Lattner [Mon, 12 Jul 2004 20:36:08 +0000 (20:36 +0000)]
Add a helper method.  The StructType element is completely redundant in most
cases

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14777 91177308-0d34-0410-b5e6-96231b3b80d8

19 years agoimplement new helper method
Chris Lattner [Mon, 12 Jul 2004 20:35:11 +0000 (20:35 +0000)]
implement new helper method

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14776 91177308-0d34-0410-b5e6-96231b3b80d8

19 years agoFix unused var warning
Chris Lattner [Mon, 12 Jul 2004 20:29:52 +0000 (20:29 +0000)]
Fix unused var warning

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14775 91177308-0d34-0410-b5e6-96231b3b80d8

19 years agoFix a really nasty logic error that VC noticed.
Chris Lattner [Mon, 12 Jul 2004 20:27:31 +0000 (20:27 +0000)]
Fix a really nasty logic error that VC noticed.
Reid, this might matter to you :)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14774 91177308-0d34-0410-b5e6-96231b3b80d8

19 years agoAdd a missing #include
Chris Lattner [Mon, 12 Jul 2004 20:25:33 +0000 (20:25 +0000)]
Add a missing #include

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14773 91177308-0d34-0410-b5e6-96231b3b80d8

19 years agoFix warning compiling with VC++
Chris Lattner [Mon, 12 Jul 2004 20:25:04 +0000 (20:25 +0000)]
Fix warning compiling with VC++

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14772 91177308-0d34-0410-b5e6-96231b3b80d8