1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-24 19:52:54 +01:00
Commit Graph

10971 Commits

Author SHA1 Message Date
Alkis Evlogimenos
a13672fd71 Check if printing of implicit uses is required for all types of shift
instructions.

llvm-svn: 12258
2004-03-09 06:10:15 +00:00
Brian Gaeke
b50d7fc23c b00g fixed
llvm-svn: 12257
2004-03-09 05:43:59 +00:00
Brian Gaeke
acf93be258 Address PR274 - '[JIT] Programs cannot resolve the fstat function'
by trying to get the compiler to generate an undefined reference for it
and related functions which live in libc_nonshared.a on Linux.

Linkers... sigh.

llvm-svn: 12256
2004-03-09 05:22:10 +00:00
Brian Gaeke
de0239b2a6 Hmm, who left this sitting around in my tree
llvm-svn: 12255
2004-03-09 04:49:13 +00:00
Alkis Evlogimenos
7c0224327e Differentiate between extended precision floats (80-bit) and double precision floats (64-bit)
llvm-svn: 12254
2004-03-09 03:37:54 +00:00
Alkis Evlogimenos
f86d2df13d Use newly added API to emit bytes for instructions that gas misassembles
llvm-svn: 12253
2004-03-09 03:35:34 +00:00
Alkis Evlogimenos
085957be0b Add emitInstruction() API so that we can get the bytes of a simple instruction
llvm-svn: 12252
2004-03-09 03:34:53 +00:00
Alkis Evlogimenos
813daf05c3 Constify things a bit
llvm-svn: 12251
2004-03-09 03:30:12 +00:00
Chris Lattner
0653b478a4 Bug fixed
llvm-svn: 12250
2004-03-09 00:59:15 +00:00
Chris Lattner
bae65cdb6d Checkin testcase for PR261
llvm-svn: 12249
2004-03-09 00:55:58 +00:00
Chris Lattner
75301571e5 John fixed this bug
llvm-svn: 12248
2004-03-09 00:40:49 +00:00
Brian Gaeke
57269b0c32 Change PhyRegAlloc::saveStateForValue()'s arg type to deal with
AllocInfo.Instruction becoming an int.

llvm-svn: 12247
2004-03-08 23:22:03 +00:00
Brian Gaeke
ed741b87c2 Save argument list alloc state by recording it as the operands of Instruction
#-1. Other minor changes to deal with AllocInfo.Instruction becoming an int.

llvm-svn: 12246
2004-03-08 23:22:02 +00:00
Brian Gaeke
b9b20ad428 Make AllocInfo's Instruction an int, so that we can overload it for arguments.
(Instruction #-1's operands = argument list).

llvm-svn: 12245
2004-03-08 23:22:01 +00:00
Misha Brukman
cf102d7d5b Fix some spelling and grammar.
llvm-svn: 12244
2004-03-08 23:06:46 +00:00
Chris Lattner
e0bb2a521c Update the profiling section
llvm-svn: 12243
2004-03-08 22:29:35 +00:00
Chris Lattner
9414c55663 Switch to using edge profiling information as the basic source of profile info
from using basic block counts.

llvm-svn: 12242
2004-03-08 22:04:08 +00:00
Chris Lattner
bf888377d5 Switch over to using edge profile information as the basic profiling representation,
from basic block counts.

llvm-svn: 12241
2004-03-08 22:03:45 +00:00
Chris Lattner
83c62c84d6 Refactor implementations
llvm-svn: 12240
2004-03-08 21:30:35 +00:00
Chris Lattner
3b0551752b We don't want to make this a pure interface, as it makes all implementors
bear the burden of implementing what will be all exactly the same methods.
They just want to provide the information in differing ways.

llvm-svn: 12239
2004-03-08 21:30:18 +00:00
Chris Lattner
09255cd709 Rearrange some methods, implement the dominates method
llvm-svn: 12237
2004-03-08 21:07:12 +00:00
Chris Lattner
91ea0d3176 Import the trace class from the reoptimizer
llvm-svn: 12236
2004-03-08 20:57:27 +00:00
Chris Lattner
3d278501c4 Default to using edge counts
llvm-svn: 12234
2004-03-08 20:04:46 +00:00
Chris Lattner
d07c6d9c03 Annotate functions with edge counts as well, if they are available.
llvm-svn: 12233
2004-03-08 20:04:32 +00:00
Chris Lattner
de661f7219 If we have edge counts, we can produce block counts. I've verified that
using an edge profile to produce block counts gives the exact same numbers
as using a block count directly.

llvm-svn: 12232
2004-03-08 20:03:52 +00:00
Chris Lattner
94d2b3a524 Adjust to new interface
llvm-svn: 12231
2004-03-08 18:51:45 +00:00
Chris Lattner
529e3b261d Add the ability to put an annotation at the end of a basic block as well.
llvm-svn: 12230
2004-03-08 18:51:05 +00:00
Chris Lattner
f3a838662e Add initial support for reading edge counts. This will be improved to enable
translation of edge counts into block/function counts when possible.

llvm-svn: 12229
2004-03-08 18:20:18 +00:00
Chris Lattner
525635b764 Add support for representing edge counts
llvm-svn: 12228
2004-03-08 18:19:37 +00:00
Chris Lattner
6183fae972 Add edge profiling support to the runtime library
llvm-svn: 12227
2004-03-08 18:04:31 +00:00
Misha Brukman
abfc80d0fa Fix link to license: point to current version in CVS.
llvm-svn: 12226
2004-03-08 17:59:31 +00:00
Chris Lattner
01062fb636 Initial support for edge profiling
llvm-svn: 12225
2004-03-08 17:54:34 +00:00
Chris Lattner
d40842737b Split utility functions out of BlockProfiling.cpp
llvm-svn: 12224
2004-03-08 17:06:13 +00:00
Chris Lattner
28d0798a68 Remove the comment "Constants must always have an initial value.", which
is incorrect.  Fix some formatting nastiness.

llvm-svn: 12223
2004-03-08 16:49:10 +00:00
Chris Lattner
41c4dc98a7 finegrainify namespacification
llvm-svn: 12221
2004-03-08 16:45:53 +00:00
Chris Lattner
e44cc1372e Insert functions into the module promptly, not lazily. This fixes a bug
I introduced last night.  Note to self: test the *correct* tree...

llvm-svn: 12220
2004-03-08 16:14:19 +00:00
Chris Lattner
38c2e1d1df Implement test/Regression/Assembler/2004-03-07-FunctionAddressAlignment.llx
llvm-svn: 12218
2004-03-08 06:17:35 +00:00
Chris Lattner
cf72011426 New testcase for folding in some important situations. The first two
come up a lot in the code generated by the C++ front-end for pointers
to member functions.  See PR166.

llvm-svn: 12217
2004-03-08 06:17:15 +00:00
Chris Lattner
23980d3a7c Remove Module::mutateConstantPointerRef, which is now thankfully dead!
This is one small step towards the complete obliteration of
ConstantPointerRef's entirely!! Woot!

llvm-svn: 12216
2004-03-08 06:16:10 +00:00
Chris Lattner
164ebd3be3 Remove Module::mutateConstantPointerRef, which is now thankfully dead!
llvm-svn: 12215
2004-03-08 06:15:33 +00:00
Chris Lattner
aa5d8cb72f Eliminate nightmarish API
llvm-svn: 12214
2004-03-08 06:11:10 +00:00
Chris Lattner
db6e86b1ed remove *THANKFULLY* dead method
llvm-svn: 12213
2004-03-08 06:10:32 +00:00
Chris Lattner
df5ebdc8b1 Eliminate a REALLY HORRIBLE API: mutateReferences, which is gross gross gross.
llvm-svn: 12212
2004-03-08 06:09:57 +00:00
Chris Lattner
1ecf76aab7 New testcase for PR269
llvm-svn: 12211
2004-03-08 05:35:12 +00:00
Chris Lattner
74d74316fe Bug fixed
llvm-svn: 12210
2004-03-08 04:55:45 +00:00
Chris Lattner
66f3cfa109 Testcase that crashes the C front-end.
llvm-svn: 12209
2004-03-08 04:41:32 +00:00
Chris Lattner
1ae4150e31 Fix a bug handling globals that are constants, but are still external
llvm-svn: 12208
2004-03-08 03:52:24 +00:00
Chris Lattner
a7180252e6 Avoid allocating special registers a bit more robustly
llvm-svn: 12207
2004-03-08 03:48:07 +00:00
Chris Lattner
8cd89d333c New code-quality testcase.
llvm-svn: 12205
2004-03-08 02:12:36 +00:00
Chris Lattner
a55628694a Implement folding explicit load instructions into binary operations. For a
testcase like this:

int %test(int* %P, int %A) {
        %Pv = load int* %P
        %B = add int %A, %Pv
        ret int %B
}

We now generate:
test:
        mov %ECX, DWORD PTR [%ESP + 4]
        mov %EAX, DWORD PTR [%ESP + 8]
        add %EAX, DWORD PTR [%ECX]
        ret

Instead of:
test:
        mov %EAX, DWORD PTR [%ESP + 4]
        mov %ECX, DWORD PTR [%ESP + 8]
        mov %EAX, DWORD PTR [%EAX]
        add %EAX, %ECX
        ret

... saving one instruction, and often a register.  Note that there are a lot
of other instructions that could use this, but they aren't handled.  I'm not
really interested in adding them, but mul/div and all of the FP instructions
could be supported as well if someone wanted to add them.

llvm-svn: 12204
2004-03-08 01:58:35 +00:00