Nate Begeman [Tue, 12 Jul 2005 03:04:49 +0000 (03:04 +0000)]
Clean up and add comments to the newly implemented subtarget code.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22396
91177308-0d34-0410-b5e6-
96231b3b80d8
Jeff Cohen [Tue, 12 Jul 2005 03:00:20 +0000 (03:00 +0000)]
Add new files to Visual Studio projects.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22395
91177308-0d34-0410-b5e6-
96231b3b80d8
Jeff Cohen [Tue, 12 Jul 2005 02:59:38 +0000 (02:59 +0000)]
I don't know how this ever compiled with gcc, but VC++ correctly rejects it.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22394
91177308-0d34-0410-b5e6-
96231b3b80d8
Jeff Cohen [Tue, 12 Jul 2005 02:53:33 +0000 (02:53 +0000)]
VC++ demands that the function returns a value
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22393
91177308-0d34-0410-b5e6-
96231b3b80d8
Nate Begeman [Tue, 12 Jul 2005 02:41:19 +0000 (02:41 +0000)]
Clean up the TargetSubtarget class a bit, removing an unnecessary argument
to the constructor.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22392
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 12 Jul 2005 02:36:10 +0000 (02:36 +0000)]
Minor changes to improve comments and fix the build on _WIN32 systems.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22391
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 12 Jul 2005 02:35:36 +0000 (02:35 +0000)]
Add a note
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22390
91177308-0d34-0410-b5e6-
96231b3b80d8
Nate Begeman [Tue, 12 Jul 2005 01:41:54 +0000 (01:41 +0000)]
Implement Subtarget support
Implement the X86 Subtarget.
This consolidates the checks for target triple, and setting options based
on target triple into one place. This allows us to convert the asm printer
and isel over from being littered with "forDarwin", "forCygwin", etc. into
just having the appropriate flags for each subtarget feature controlling
the code for that feature.
This patch also implements indirect external and weak references in the
X86 pattern isel, for darwin. Next up is to convert over the asm printers
to use this new interface.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22389
91177308-0d34-0410-b5e6-
96231b3b80d8
Nate Begeman [Tue, 12 Jul 2005 01:37:28 +0000 (01:37 +0000)]
Commit some pending darwin changes before subtarget support.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22388
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 12 Jul 2005 01:00:32 +0000 (01:00 +0000)]
Fix PR576.
Instead of emitting a JIT stub that looks like this:
internal void %l1_main_entry_2E_ce_wrapper(int) {
header:
%resolver = call sbyte* %getPointerToNamedFunction( sbyte* getelementptr ([20 x sbyte]* %l1_main_entry_2E_ce_name, int 0, int 0) ) ; <sbyte*> [#uses=1]
%resolverCast = cast sbyte* %resolver to void (int)* ; <void (int)*> [#uses=1]
call void %resolverCast( int %0 )
ret void
}
Emit one that looks like this:
internal void %l1_main_entry_2E_ce_wrapper(int) {
Entry:
%fpcache = load void (int)** %l1_main_entry_2E_ce.fpcache ; <void (int)*> [#uses=2]
%isNull = seteq void (int)* %fpcache, null ; <bool> [#uses=1]
br bool %isNull, label %lookupfp, label %usecache
usecache: ; preds = %lookupfp, %Entry
%fp = phi void (int)* [ %resolverCast, %lookupfp ], [ %fpcache, %Entry ] ; <void (int)*> [#uses=1]
call void %fp( int %0 )
ret void
lookupfp: ; preds = %Entry
%resolver = call sbyte* %getPointerToNamedFunction( sbyte* getelementptr ([20 x sbyte]* %l1_main_entry_2E_ce_name, int 0, int 0) ) ; <sbyte*> [#uses=1]
%resolverCast = cast sbyte* %resolver to void (int)* ; <void (int)*> [#uses=2]
store void (int)* %resolverCast, void (int)** %l1_main_entry_2E_ce.fpcache
br label %usecache
}
This makes the JIT debugger *MUCH* faster on large programs, as
getPointerToNamedFunction takes time linear with the size of the program, and
before we would call it every time a function in the text module was called from
the safe module (ouch!).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22387
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 12 Jul 2005 00:20:49 +0000 (00:20 +0000)]
add a note so I can remember the common t-t's
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22386
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 11 Jul 2005 22:46:18 +0000 (22:46 +0000)]
fix a warning
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22385
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Lenharth [Mon, 11 Jul 2005 20:35:20 +0000 (20:35 +0000)]
Remove glibc specific functions, and mark a couple as C99
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22384
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Lenharth [Mon, 11 Jul 2005 17:41:12 +0000 (17:41 +0000)]
because on alpha:
# define errno (*__errno_location ())
*shakes head
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22383
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 11 Jul 2005 06:34:30 +0000 (06:34 +0000)]
Clean up code, no functionality changes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22382
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 11 Jul 2005 06:29:14 +0000 (06:29 +0000)]
Output .size directives to tell the assembler the size of each function.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22381
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 11 Jul 2005 06:25:47 +0000 (06:25 +0000)]
Fix crazy indentation
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22380
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 11 Jul 2005 06:25:34 +0000 (06:25 +0000)]
convert dos newlines to unix. No other changes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22379
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 11 Jul 2005 06:17:35 +0000 (06:17 +0000)]
Emit a symbol table entry for each function we output to the ELF file. This
allows objdump to know which function we are emitting to:
00000000 <foo>: <----
0: b8 01 00 00 00 mov $0x1,%eax
5: 03 44 24 04 add 0x4(%esp,1),%eax
9: c3 ret
... and allows .o files to be useful for linking :)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22378
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 11 Jul 2005 06:16:24 +0000 (06:16 +0000)]
The symbol table just needs a const GlobalValue*, not a non-const one.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22377
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 11 Jul 2005 05:17:48 +0000 (05:17 +0000)]
Refactor things a bit to allow the ELF code emitter to run the X86 machine code emitter
after itself.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22376
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 11 Jul 2005 05:17:18 +0000 (05:17 +0000)]
add code to emit the .text section to the section header.
Add a *VERY INITIAL* machine code emitter class. This is enough to take
this C function:
int foo(int X) { return X +1; }
and make objdump produce the following:
$ objdump -d t-llvm.o
t-llvm.o: file format elf32-i386
Disassembly of section .text:
00000000 <.text>:
0: b8 01 00 00 00 mov $0x1,%eax
5: 03 44 24 04 add 0x4(%esp,1),%eax
9: c3 ret
Anything using branches or refering to the constant pool or requiring
relocations will not work yet.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22375
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 11 Jul 2005 05:15:32 +0000 (05:15 +0000)]
expose a new code emitter object
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22374
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 11 Jul 2005 04:49:33 +0000 (04:49 +0000)]
add a helper method
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22373
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 11 Jul 2005 04:20:55 +0000 (04:20 +0000)]
Remove prototype for non-existant function
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22372
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 11 Jul 2005 03:11:47 +0000 (03:11 +0000)]
Use a name mangler object to uniquify names and remove nonstandard
characters from them.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22371
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 11 Jul 2005 03:11:10 +0000 (03:11 +0000)]
add a name mangler object
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22370
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 11 Jul 2005 02:49:16 +0000 (02:49 +0000)]
fix long lines
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22369
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 10 Jul 2005 01:56:13 +0000 (01:56 +0000)]
Change *EXTLOAD to use an VTSDNode operand instead of being an MVTSDNode.
This is the last MVTSDNode.
This allows us to eliminate a bunch of special case code for handling
MVTSDNodes.
Also, remove some uses of dyn_cast that should really be cast (which is
cheaper in a release build).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22368
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 10 Jul 2005 01:55:33 +0000 (01:55 +0000)]
Change *EXTLOAD to use an VTSDNode operand instead of being an MVTSDNode.
This is the last MVTSDNode.
This allows us to eliminate a bunch of special case code for handling
MVTSDNodes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22367
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 10 Jul 2005 00:29:18 +0000 (00:29 +0000)]
Change TRUNCSTORE to use a VTSDNode operand instead of being an MVTSTDNode
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22366
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 10 Jul 2005 00:28:25 +0000 (00:28 +0000)]
Move TRUNCSTORE to using a VTSDNode operand instead of being a MVTSDNode.
Also update some comments that Andrew forgot to update when he changed
loads/stores.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22365
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 10 Jul 2005 00:07:11 +0000 (00:07 +0000)]
Introduce a new VTSDNode class with the ultimate goal of eliminating the
MVTSDNode class. This class is used to provide an operand to operators
that require an extra type. We start by converting FP_ROUND_INREG and
SIGN_EXTEND_INREG over to using it.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22364
91177308-0d34-0410-b5e6-
96231b3b80d8
Jeff Cohen [Sat, 9 Jul 2005 18:42:49 +0000 (18:42 +0000)]
Fix bugs also fixed in Unix version, plus other general cleanup.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22363
91177308-0d34-0410-b5e6-
96231b3b80d8
Jeff Cohen [Sat, 9 Jul 2005 18:42:02 +0000 (18:42 +0000)]
1. Fix bug in getBaseName where it mishandles suffixes
2. Fix bug in eraseSuffix where it allows /path/.suffix to become /path/
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22362
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Fri, 8 Jul 2005 17:46:10 +0000 (17:46 +0000)]
Ensure that functions like isDirectory don't fail if the file doesn't
exist but just return false instead.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22361
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Fri, 8 Jul 2005 16:48:52 +0000 (16:48 +0000)]
Make sure we don't error out if an invalid path is used, just simply
exit from isBytecodeLPath with "false".
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22360
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Fri, 8 Jul 2005 06:53:26 +0000 (06:53 +0000)]
Two changes:
1. Use isValid() to check validity of the resulting path name in the
eraseSuffix even though we can't think of a case where eraseSuffix could
possibly cause an invalid path name.
2. Rewrite isValid() to not use the deprecated realpath function any more.
It now just uses isascii to make sure all the characters are legit.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22359
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 8 Jul 2005 05:47:00 +0000 (05:47 +0000)]
Add support for emitting a .data section and .bss section.
Add support for emitting external and .bss symbols.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22358
91177308-0d34-0410-b5e6-
96231b3b80d8
Jeff Cohen [Fri, 8 Jul 2005 05:02:13 +0000 (05:02 +0000)]
Stamp out tabs
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22357
91177308-0d34-0410-b5e6-
96231b3b80d8
Jeff Cohen [Fri, 8 Jul 2005 04:50:08 +0000 (04:50 +0000)]
Make Win32 implementation conform to new paradigm
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22356
91177308-0d34-0410-b5e6-
96231b3b80d8
Jeff Cohen [Fri, 8 Jul 2005 04:49:16 +0000 (04:49 +0000)]
Fix eraseSuffix()
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22355
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Fri, 8 Jul 2005 03:08:58 +0000 (03:08 +0000)]
Final Changes For PR495:
This chagne just renames some sys::Path methods to ensure they are not
misused. The Path documentation now divides methods into two dimensions:
Path/Disk and accessor/mutator. Path accessors and mutators only operate
on the Path object itself without making any disk accesses. Disk accessors
and mutators will also access or modify the file system. Because of the
potentially destructive nature of disk mutators, it was decided that all
such methods should end in the work "Disk" to ensure the user recognizes
that the change will occur on the file system. This patch makes that
change. The method name changes are:
makeReadable -> makeReadableOnDisk
makeWriteable -> makeWriteableOnDisk
makeExecutable -> makeExecutableOnDisk
setStatusInfo -> setStatusInfoOnDisk
createDirectory -> createDirectoryOnDisk
createFile -> createFileOnDisk
createTemporaryFile -> createTemporaryFileOnDisk
destroy -> eraseFromDisk
rename -> renamePathOnDisk
These changes pass the Linux Deja Gnu tests.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22354
91177308-0d34-0410-b5e6-
96231b3b80d8
Jeff Cohen [Fri, 8 Jul 2005 02:48:42 +0000 (02:48 +0000)]
Fix VC++ breakage
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22353
91177308-0d34-0410-b5e6-
96231b3b80d8
Jeff Cohen [Fri, 8 Jul 2005 02:48:04 +0000 (02:48 +0000)]
fix typo
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22352
91177308-0d34-0410-b5e6-
96231b3b80d8
Nate Begeman [Fri, 8 Jul 2005 00:23:26 +0000 (00:23 +0000)]
Add support for assembling .s files on mac os x for intel
Add support for running bugpoint on mac os x for intel
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22351
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Thu, 7 Jul 2005 23:35:23 +0000 (23:35 +0000)]
Changes to mimic those in Unix/Path.inc in support of PR495. This hasn't
been compiled or tested.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22350
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Thu, 7 Jul 2005 23:21:43 +0000 (23:21 +0000)]
For PR495:
Get rid of the difference between file paths and directory paths. The Path
class now simply stores a path that can refer to either a file or a
directory. This required various changes in the implementation and interface
of the class with the corresponding impact to its users. Doxygen comments were
also updated to reflect these changes. Interface changes are:
appendDirectory -> appendComponent
appendFile -> appendComponent
elideDirectory -> eraseComponent
elideFile -> eraseComponent
elideSuffix -> eraseSuffix
renameFile -> rename
setDirectory -> set
setFile -> set
Changes pass Dejagnu and llvm-test/SingleSource tests.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22349
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 7 Jul 2005 20:40:38 +0000 (20:40 +0000)]
Fix a problem that instcombine would hit when dealing with unreachable code.
Because the instcombine has to scan the entire function when it starts up
to begin with, we might as well do it in DFO so we can nuke unreachable code.
This fixes: Transforms/InstCombine/2005-07-07-DeadPHILoop.ll
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22348
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 7 Jul 2005 20:39:45 +0000 (20:39 +0000)]
New testcase distilled from a large chunk of code Misha sent me.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22347
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Lenharth [Thu, 7 Jul 2005 19:52:58 +0000 (19:52 +0000)]
clean up prolouge and epilouge
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22346
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Thu, 7 Jul 2005 18:21:42 +0000 (18:21 +0000)]
For PR495:
Change interface to Path class:
readable -> canRead
writable -> canWrite
executable -> canExecute
More (incremental) changes coming to close 495.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22345
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 7 Jul 2005 17:12:53 +0000 (17:12 +0000)]
Restore some code that was accidentally removed by Nate's patch yesterday.
This fixes the regressions from last night.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22344
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 7 Jul 2005 07:02:20 +0000 (07:02 +0000)]
Add support for emitting the symbol table (and its string table) of the
module to the ELF file. Test it by adding support for emitting common
symbols. This allows us to compile this:
%X = weak global int 0
%Y = weak global int 0
%Z = weak global int 0
to an elf file that 'readelf's this:
Symbol table '.symtab' contains 4 entries:
Num: Value Size Type Bind Vis Ndx Name
0:
00000000 0 NOTYPE LOCAL DEFAULT UND
1:
00000004 4 OBJECT GLOBAL DEFAULT COM X
2:
00000004 4 OBJECT GLOBAL DEFAULT COM Y
3:
00000004 4 OBJECT GLOBAL DEFAULT COM Z
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22343
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 7 Jul 2005 07:00:37 +0000 (07:00 +0000)]
Add support for building/representing the symbol table, add some enum constants
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22342
91177308-0d34-0410-b5e6-
96231b3b80d8
Nate Begeman [Thu, 7 Jul 2005 06:32:01 +0000 (06:32 +0000)]
Fix a typo in my checkin today that caused regressions. Oops!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22341
91177308-0d34-0410-b5e6-
96231b3b80d8
Nate Begeman [Wed, 6 Jul 2005 18:59:04 +0000 (18:59 +0000)]
First round of support for doing scalar FP using the SSE2 ISA extension and
XMM registers. There are many known deficiencies and fixmes, which will be
addressed ASAP. The major benefit of this work is that it will allow the
LLVM register allocator to allocate FP registers across basic blocks.
The x86 backend will still default to x87 style FP. To enable this work,
you must pass -enable-sse-scalar-fp and either -sse2 or -sse3 to llc.
An example before and after would be for:
double foo(double *P) { double Sum = 0; int i; for (i = 0; i < 1000; ++i)
Sum += P[i]; return Sum; }
The inner loop looks like the following:
x87:
.LBB_foo_1: # no_exit
fldl (%esp)
faddl (%eax,%ecx,8)
fstpl (%esp)
incl %ecx
cmpl $1000, %ecx
#FP_REG_KILL
jne .LBB_foo_1 # no_exit
SSE2:
addsd (%eax,%ecx,8), %xmm0
incl %ecx
cmpl $1000, %ecx
#FP_REG_KILL
jne .LBB_foo_1 # no_exit
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22340
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 5 Jul 2005 19:58:54 +0000 (19:58 +0000)]
Make several cleanups to Andrews varargs change:
1. Pass Value*'s into lowering methods so that the proper pointers can be
added to load/stores from the valist
2. Intrinsics that return void should only return a token chain, not a token
chain/retval pair.
3. Rename LowerVAArgNext -> LowerVAArg, because VANext is long gone.
4. Now that we have Value*'s available in the lowering methods, pass them
into any load/stores from the valist that are emitted
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22339
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 5 Jul 2005 19:57:53 +0000 (19:57 +0000)]
Make several cleanups to Andrews varargs change:
1. Pass Value*'s into lowering methods so that the proper pointers can be
added to load/stores from the valist
2. Intrinsics that return void should only return a token chain, not a token
chain/retval pair.
3. Rename LowerVAArgNext -> LowerVAArg, because VANext is long gone.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22338
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Lenharth [Tue, 5 Jul 2005 19:52:39 +0000 (19:52 +0000)]
2 fixes:
1: Legalize operand in UINT_TO_FP expanision
2: SRA x, const i8 was not promoting the constant to shift amount type.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22337
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 5 Jul 2005 17:50:16 +0000 (17:50 +0000)]
Fit to 80 columns
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22336
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 5 Jul 2005 17:48:31 +0000 (17:48 +0000)]
Fix PowerPC varargs
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22335
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Lenharth [Tue, 5 Jul 2005 16:36:18 +0000 (16:36 +0000)]
oops
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22334
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Lenharth [Tue, 5 Jul 2005 15:18:33 +0000 (15:18 +0000)]
updates
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22333
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Lenharth [Mon, 4 Jul 2005 20:07:21 +0000 (20:07 +0000)]
check the correct VT
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22332
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Lenharth [Sun, 3 Jul 2005 20:06:13 +0000 (20:06 +0000)]
fix loading address of fp symbols
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22331
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 3 Jul 2005 17:34:39 +0000 (17:34 +0000)]
Percolate the call up to the right superclass
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22330
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Lenharth [Sat, 2 Jul 2005 20:58:53 +0000 (20:58 +0000)]
I really didn't think this was necessary. But, Legalize wasn't running again
and legalizing the extload. Strange. Should fix most alpha regressions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22329
91177308-0d34-0410-b5e6-
96231b3b80d8
Jeff Cohen [Sat, 2 Jul 2005 02:04:26 +0000 (02:04 +0000)]
Adding new files to Visual Studio projects.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22328
91177308-0d34-0410-b5e6-
96231b3b80d8
Nate Begeman [Fri, 1 Jul 2005 23:56:38 +0000 (23:56 +0000)]
The statistic needs to be in the correct namespace.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22327
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 1 Jul 2005 23:11:56 +0000 (23:11 +0000)]
Varargs is apparently currently broken on PPC. This hacks it so that it
is at least overloading the right virtual methods. The implementations
are currently wrong though. This fixes Ptrdist/bc, but not other programs
(e.g. siod).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22326
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 1 Jul 2005 22:44:09 +0000 (22:44 +0000)]
Refactor X86AsmPrinter.cpp into multiple files. Patch contributed
by Aaron Gray, cleaned up by me.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22324
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Lenharth [Fri, 1 Jul 2005 19:14:02 +0000 (19:14 +0000)]
simplify call code, remove pseudo ops for div and rem, track more loads and stores
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22323
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Lenharth [Fri, 1 Jul 2005 19:12:13 +0000 (19:12 +0000)]
simplify call code, remove pseudo ops for div and rem, track more loads and stores
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22322
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 1 Jul 2005 06:40:58 +0000 (06:40 +0000)]
remove some debugging code
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22321
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Lenharth [Thu, 30 Jun 2005 19:32:57 +0000 (19:32 +0000)]
oops
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22320
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Lenharth [Thu, 30 Jun 2005 19:22:37 +0000 (19:22 +0000)]
FP EXTLOAD is not support on all archs, expand to LOAD and FP_EXTEND
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22319
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 30 Jun 2005 07:29:44 +0000 (07:29 +0000)]
Fix PR590 and Transforms/Mem2Reg/2005-06-30-ReadBeforeWrite.ll.
The optimization for locally used allocas was not safe for allocas that
were read before they were written. This change disables that optimization
in that case.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22318
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 30 Jun 2005 07:28:54 +0000 (07:28 +0000)]
new testcase for PR590
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22317
91177308-0d34-0410-b5e6-
96231b3b80d8
Nate Begeman [Thu, 30 Jun 2005 00:53:20 +0000 (00:53 +0000)]
Make the x86 asm printer darwin-aware. This mostly entails doing the same
thing as cygwin most of the time, and printing our alignments in log2
rather than number of bytes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22316
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Lenharth [Wed, 29 Jun 2005 18:54:02 +0000 (18:54 +0000)]
restore old srcValueNode behavior and try to to work around it
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22315
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 29 Jun 2005 17:41:25 +0000 (17:41 +0000)]
Don't crash on a query where the block is not in any loop. Thanks to
Sameer D. Sahasrabuddhe for pointing this out!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22314
91177308-0d34-0410-b5e6-
96231b3b80d8
John Criswell [Wed, 29 Jun 2005 16:22:34 +0000 (16:22 +0000)]
Bug fixed.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22313
91177308-0d34-0410-b5e6-
96231b3b80d8
John Criswell [Wed, 29 Jun 2005 15:57:50 +0000 (15:57 +0000)]
Doh! Forgot to LLVMify the style.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22312
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Lenharth [Wed, 29 Jun 2005 15:57:19 +0000 (15:57 +0000)]
tracking the instructions causing loads and stores provides more information than just the pointer being loaded or stored
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22311
91177308-0d34-0410-b5e6-
96231b3b80d8
John Criswell [Wed, 29 Jun 2005 15:03:18 +0000 (15:03 +0000)]
Basic fix for PR#591; don't convert an fprintf() to an fwrite() if there
is a mismatch in their character type pointers (i.e. fprintf() prints an
array of ubytes while fwrite() takes an array of sbytes).
We can probably do better than this (such as casting the ubyte to an
sbyte).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22310
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Lenharth [Wed, 29 Jun 2005 13:35:05 +0000 (13:35 +0000)]
thinko
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22309
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Lenharth [Wed, 29 Jun 2005 12:49:51 +0000 (12:49 +0000)]
unify SelectExpr and SelectFP
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22308
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Lenharth [Wed, 29 Jun 2005 12:23:34 +0000 (12:23 +0000)]
fix most regressions
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22307
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Lenharth [Wed, 29 Jun 2005 00:39:17 +0000 (00:39 +0000)]
support more relocations for stores also
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22306
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Lenharth [Wed, 29 Jun 2005 00:31:08 +0000 (00:31 +0000)]
Get rid of all symbolic loads. I now do gernate all relocations sequences
rather than relying on the assembler. Only a few more pseudo instructions
left. Also merge load code paths.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22305
91177308-0d34-0410-b5e6-
96231b3b80d8
Jeff Cohen [Tue, 28 Jun 2005 02:43:03 +0000 (02:43 +0000)]
Add ElfWriter stuff to Visual Studio
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22304
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Lenharth [Mon, 27 Jun 2005 23:59:51 +0000 (23:59 +0000)]
some call work
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22303
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Lenharth [Mon, 27 Jun 2005 23:28:32 +0000 (23:28 +0000)]
Adapt the code for handling uint -> fp conversion for the 32 bit case to
handling it in the 64 bit case. The two code paths should probably be merged.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22302
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Lenharth [Mon, 27 Jun 2005 23:24:11 +0000 (23:24 +0000)]
So, it turns out I forgot that one valid way of restoring GP after a call
is to use RA, which assumes the called function uses RA for the register
holding the return address when it issues a ret.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22301
91177308-0d34-0410-b5e6-
96231b3b80d8
Nate Begeman [Mon, 27 Jun 2005 21:20:31 +0000 (21:20 +0000)]
Initial set of .td file changes necessary to get scalar fp in xmm registers
working. The instruction selector changes will hopefully be coming later
this week once they are debugged. This is necessary to support the darwin
x86 FP model, and is recommended by intel as the replacement for x87. As
a bonus, the register allocator knows how to deal with these registers
across basic blocks, unliky the FP stackifier. This leads to significantly
better codegen in several cases.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22300
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Lenharth [Mon, 27 Jun 2005 21:11:40 +0000 (21:11 +0000)]
get rid of another pseudo op
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22299
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Lenharth [Mon, 27 Jun 2005 21:02:56 +0000 (21:02 +0000)]
generate address of constant pool entries
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22298
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Lenharth [Mon, 27 Jun 2005 17:39:17 +0000 (17:39 +0000)]
Misha happification patch
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22297
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Lenharth [Mon, 27 Jun 2005 17:15:36 +0000 (17:15 +0000)]
Reduce use of pseudo ops
Namely, output the rellocation flags explicitly when loading constants.
Added benifit: save a load when loading from the constant pool.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22296
91177308-0d34-0410-b5e6-
96231b3b80d8