26258 Commits

Author SHA1 Message Date
Chris Lattner
0fad1515ee Only call isUse/isDef on register operands
llvm-svn: 30118
2006-09-05 20:19:27 +00:00
Chris Lattner
5c74b99a20 Don't call isDef on non-registers
llvm-svn: 30117
2006-09-05 20:02:51 +00:00
Evan Cheng
f041d2de7e Initialize IsDef of all non-register MachineOperand to false.
llvm-svn: 30116
2006-09-05 18:56:02 +00:00
Chris Lattner
f17002a907 Fix Duraid's changes to work when TLI is null. This fixes the failing
lowerinvoke regtests.

llvm-svn: 30115
2006-09-05 17:48:07 +00:00
Chris Lattner
5f36aaa98f Change the default to 0, which means 'default'.
llvm-svn: 30114
2006-09-05 17:39:15 +00:00
Evan Cheng
24ce2a3b27 Fix a few dejagnu failures. e.g. fast-cc-merge-stack-adj.ll
llvm-svn: 30113
2006-09-05 08:32:49 +00:00
Evan Cheng
8ffe1aa35a JIT encoding bug.
llvm-svn: 30112
2006-09-05 05:59:25 +00:00
Chris Lattner
382ed3f1d9 Fix JIT encoding of two-addr instructions.
llvm-svn: 30111
2006-09-05 03:01:52 +00:00
Chris Lattner
fdd2c97fef Update the X86 JIT to make it work with the new two-addr changes. This also
adds assertions that check to make sure every operand gets emitted.

llvm-svn: 30110
2006-09-05 02:52:35 +00:00
Chris Lattner
9cd4e3429e Completely eliminate def&use operands. Now a register operand is EITHER a
def operand or a use operand.

llvm-svn: 30109
2006-09-05 02:31:13 +00:00
Chris Lattner
59a4d8dfcd Fix a long-standing wart in the code generator: two-address instruction lowering
actually *removes* one of the operands, instead of just assigning both operands
the same register.  This make reasoning about instructions unnecessarily complex,
because you need to know if you are before or after register allocation to match
up operand #'s with the target description file.

Changing this also gets rid of a bunch of hacky code in various places.

This patch also includes changes to fold loads into cmp/test instructions in
the X86 backend, along with a significant simplification to the X86 spill
folding code.

llvm-svn: 30108
2006-09-05 02:12:02 +00:00
Andrew Lenharth
a0e57603f0 jmp_bufs are this big on alpha.
llvm-svn: 30107
2006-09-05 00:22:25 +00:00
Bill Wendling
782d1a8b9b First draft of the "Live Interval Analysis" section. This is the "Live
Variable Analysis" pass.

llvm-svn: 30106
2006-09-04 23:35:52 +00:00
Chris Lattner
40e16d9e51 ADd getImm/setImm methods
llvm-svn: 30105
2006-09-04 23:35:22 +00:00
Chris Lattner
35f1acab3a Add some short-hand accessors
llvm-svn: 30104
2006-09-04 23:05:29 +00:00
Rafael Espindola
de18749e1f add support for returning 64bit values
llvm-svn: 30103
2006-09-04 19:05:01 +00:00
Chris Lattner
53644648df Fix some X86 JIT failures. This should really come from TargetJITInfo.
llvm-svn: 30102
2006-09-04 18:48:41 +00:00
Chris Lattner
5eda609986 lli uses LinkAllCodegenComponents, so it needs this. Thanks to
Rafael Esp?ndola for pointing this out

llvm-svn: 30100
2006-09-04 18:34:16 +00:00
Chris Lattner
b26f7cd68a Correct fix for a crasher on functions with live in values
llvm-svn: 30099
2006-09-04 18:27:40 +00:00
Chris Lattner
ae9537991c Hack around a regression I introduced yesterday
llvm-svn: 30098
2006-09-04 18:20:15 +00:00
Duraid Madina
e1bb6d9ff8 forgot this
llvm-svn: 30097
2006-09-04 07:44:11 +00:00
Chris Lattner
8ecba10feb Fix a build problem
llvm-svn: 30096
2006-09-04 06:39:52 +00:00
Duraid Madina
51396ffd3e add setJumpBufSize() and setJumpBufAlignment() to target-lowering.
Call these from your backend to enjoy setjmp/longjmp goodness, see
lib/Target/IA64/IA64ISelLowering.cpp for an example

llvm-svn: 30095
2006-09-04 06:21:35 +00:00
Chris Lattner
5188877ecc Update this to reflect llvm-config usage
llvm-svn: 30094
2006-09-04 06:12:14 +00:00
Chris Lattner
e160871264 Remove some dead makefilery
llvm-svn: 30093
2006-09-04 06:07:12 +00:00
Chris Lattner
80016b7dd3 Use llvm-config to determine what to link in
llvm-svn: 30092
2006-09-04 06:04:03 +00:00
Chris Lattner
01ecaf7d2d Use llvm-config instead of magic JIT thing to link in libs
llvm-svn: 30091
2006-09-04 06:01:43 +00:00
Chris Lattner
2da81d7d76 Use LINK_COMPONENTS to specify *components* to link against instead of
using USED_LIBS to specify *libraries* to link against.

llvm-svn: 30090
2006-09-04 05:59:09 +00:00
Chris Lattner
e7ff5ce21d Allow things like --libs CBackend
llvm-svn: 30089
2006-09-04 05:35:23 +00:00
Chris Lattner
6a94a2cda7 Switch to using llvm-config to build
llvm-svn: 30088
2006-09-04 05:24:16 +00:00
Chris Lattner
ef62912925 Bugfix for llvm-config support
llvm-svn: 30087
2006-09-04 05:23:20 +00:00
Chris Lattner
04697c6d6f Make LINK_COMPONENTS interact well with make clean
llvm-svn: 30086
2006-09-04 04:50:10 +00:00
Chris Lattner
e49d06b5a1 Switch to using llvm-config to select components to link in.
llvm-svn: 30085
2006-09-04 04:47:49 +00:00
Chris Lattner
465fd1af4f Add a new make option (LINK_COMPONENTS) which tools can use to specify what
libraries they need.  This uses llvm-config to link the tools.

llvm-svn: 30084
2006-09-04 04:47:21 +00:00
Chris Lattner
544535c0a4 Document build order dependencies. Make sure that llvm-config is built before
tools.

llvm-svn: 30083
2006-09-04 04:27:07 +00:00
Chris Lattner
93ed29cb5d new file
llvm-svn: 30082
2006-09-04 04:16:09 +00:00
Chris Lattner
33c9ddc91d Completely rearchitect the interface between targets and the pass manager.
This pass:

1. Splits TargetMachine into TargetMachine (generic targets, can be implemented
any way, like the CBE) and LLVMTargetMachine (subclass of TM that is used by
things using libcodegen and other support).
2. Instead of having each target fully populate the passmgr for file or JIT
   output, move all this to common code, and give targets hooks they can
   implement.
3. Commonalize the target population stuff between file emission and JIT
   emission.
4. All (native code) codegen stuff now happens in a FunctionPassManager, which
   paves the way for "fast -O0" stuff in the CFE later, and now LLC could
   lazily stream .bc files from disk to use less memory.
5. There are now many fewer #includes and the targets don't depend on the
   scalar xforms or libanalysis anymore (but codegen does).
6. Changing common code generator pass ordering stuff no longer requires
   touching all targets.
7. The JIT now has the option of "-fast" codegen or normal optimized codegen,
   which is now orthogonal to the fact that JIT'ing is being done.

llvm-svn: 30081
2006-09-04 04:14:57 +00:00
Chris Lattner
2ca7348818 Add accessor
llvm-svn: 30080
2006-09-04 04:08:58 +00:00
Chris Lattner
50f76d4c5d Add explicit doInitialization/doFinalization methods instead of making
the FunctionPassManager redo this for each function.

llvm-svn: 30079
2006-09-04 04:07:39 +00:00
Chris Lattner
98ee856576 remove #include
llvm-svn: 30078
2006-09-04 04:06:01 +00:00
Chris Lattner
2e68159303 rearrange targets to satisfy dependencies. Too bad we aren't using llvm-config.
llvm-svn: 30077
2006-09-04 04:04:41 +00:00
Chris Lattner
6e04d9f5a2 If a cycle exists, don't succeed building the second time around.
llvm-svn: 30076
2006-09-04 01:49:10 +00:00
Chris Lattner
7e892d8930 remove message
llvm-svn: 30075
2006-09-04 01:48:32 +00:00
Chris Lattner
8eb46f18d6 Rearrange library linkage order.
llvm-svn: 30074
2006-09-04 01:02:25 +00:00
Chris Lattner
2024543fb2 Eliminate target name.
llvm-svn: 30071
2006-09-03 18:44:26 +00:00
Chris Lattner
fb12884be6 Simplify target construction.
llvm-svn: 30070
2006-09-03 18:44:02 +00:00
Chris Lattner
2ad6ff3f77 Remove use of target::getName()
llvm-svn: 30069
2006-09-03 18:38:30 +00:00
Chris Lattner
e501184a05 eliminate use of TM.getName()
llvm-svn: 30068
2006-09-03 18:37:12 +00:00
Rafael Espindola
65007fc49c add the SETULT condition code
llvm-svn: 30067
2006-09-03 13:19:16 +00:00
Chris Lattner
b590a41f7b Avoid beating on the mi2i map when we know the answer already.
llvm-svn: 30066
2006-09-03 08:07:11 +00:00