Chris Lattner
55461787cc
Rip all of the global variable lowering logic out of TargetAsmInfo. Since
...
it is highly specific to the object file that will be generated in the end,
this introduces a new TargetLoweringObjectFile interface that is implemented
for each of ELF/MachO/COFF/Alpha/PIC16 and XCore.
Though still is still a brutal and ugly refactoring, this is a major step
towards goodness.
This patch also:
1. fixes a bunch of dangling pointer problems in the PIC16 backend.
2. disables the TargetLowering copy ctor which PIC16 was accidentally using.
3. gets us closer to xcore having its own crazy target section flags and
pic16 not having to shadow sections with its own objects.
4. fixes wierdness where ELF targets would set CStringSection but not
CStringSection_. Factor the code better.
5. fixes some bugs in string lowering on ELF targets.
llvm-svn: 77294
2009-07-28 03:13:23 +00:00
Owen Anderson
cc287b28c9
Get rid of the Pass+Context magic.
...
llvm-svn: 76702
2009-07-22 00:24:57 +00:00
Eli Friedman
a78b44069b
Missed a piece of the commit to remove the shift flavor.
...
llvm-svn: 76635
2009-07-21 20:15:24 +00:00
Anton Korobeynikov
89f45fb02c
Expand frem
...
llvm-svn: 76315
2009-07-18 13:44:25 +00:00
Anton Korobeynikov
a806bf16c4
Turn abort() into unreachable
...
llvm-svn: 76314
2009-07-18 13:34:59 +00:00
Anton Korobeynikov
b3e0446dbb
Turn few asserts into errors / unreachable's
...
llvm-svn: 76313
2009-07-18 13:33:17 +00:00
Anton Korobeynikov
ff561b2308
Provide expansion for ct* intrinsics
...
llvm-svn: 76311
2009-07-18 12:26:13 +00:00
Anton Korobeynikov
f31ebc380b
Expand sext_inreg for i1
...
llvm-svn: 76310
2009-07-18 12:20:36 +00:00
Anton Korobeynikov
c66cf22284
Unbreak
...
llvm-svn: 76064
2009-07-16 14:36:52 +00:00
Anton Korobeynikov
373515d99e
Expand 32-bit bitconverts via memory
...
llvm-svn: 76050
2009-07-16 14:30:29 +00:00
Anton Korobeynikov
74497b2190
i32 values are passed extended also on stack. Handle this in generic way
...
llvm-svn: 76047
2009-07-16 14:29:05 +00:00
Anton Korobeynikov
319dc4e8d3
We definitely have 1-0 bools
...
llvm-svn: 76046
2009-07-16 14:28:46 +00:00
Anton Korobeynikov
0276bc9176
Out GR128 regclass is not a 'real' i128 one.
...
llvm-svn: 76044
2009-07-16 14:27:53 +00:00
Anton Korobeynikov
4181716247
Handle bitconverts
...
llvm-svn: 76042
2009-07-16 14:27:01 +00:00
Anton Korobeynikov
ff6d84fd85
Expand fp_to_uint too
...
llvm-svn: 76040
2009-07-16 14:26:06 +00:00
Anton Korobeynikov
da480ca78d
We don't have FP truncstores
...
llvm-svn: 76039
2009-07-16 14:25:46 +00:00
Anton Korobeynikov
7ea47e70b3
Expand uint_to_fp
...
llvm-svn: 76038
2009-07-16 14:25:30 +00:00
Anton Korobeynikov
886e977c69
Make FP zero to be legal FP immediate via LOAD ZERO
...
llvm-svn: 76034
2009-07-16 14:24:16 +00:00
Anton Korobeynikov
b90a38d00d
Proper FP extloads
...
llvm-svn: 76028
2009-07-16 14:22:46 +00:00
Anton Korobeynikov
940ec5955b
Add proper PWS impdef's
...
llvm-svn: 76027
2009-07-16 14:22:30 +00:00
Anton Korobeynikov
3f37f337be
Propagate FP select_cc to dag inserters
...
llvm-svn: 76026
2009-07-16 14:22:15 +00:00
Anton Korobeynikov
a73f3ffb1f
We don't have native sine / cosine instructions
...
llvm-svn: 76021
2009-07-16 14:20:56 +00:00
Anton Korobeynikov
32c9954322
We don't have any FP extloads
...
llvm-svn: 76018
2009-07-16 14:20:08 +00:00
Anton Korobeynikov
643215b0d7
Implement all comparisons
...
llvm-svn: 76017
2009-07-16 14:19:54 +00:00
Anton Korobeynikov
488f8c2fd1
Add constpool lowering / printing
...
llvm-svn: 76016
2009-07-16 14:19:35 +00:00
Anton Korobeynikov
4dbabbe3cf
Allow FP arguments pass / return
...
llvm-svn: 76015
2009-07-16 14:19:16 +00:00
Anton Korobeynikov
d4e7c7a373
Register FP regclasses
...
llvm-svn: 76014
2009-07-16 14:19:02 +00:00
Anton Korobeynikov
b3af53a626
Implement 'large' PIC model
...
llvm-svn: 76006
2009-07-16 14:16:05 +00:00
Anton Korobeynikov
2889a28adb
Implement shifts properly (hopefilly - finally!)
...
llvm-svn: 76005
2009-07-16 14:15:24 +00:00
Anton Korobeynikov
f48e88136e
Properly handle divides. As a bonus - implement memory versions of them.
...
llvm-svn: 76003
2009-07-16 14:14:33 +00:00
Anton Korobeynikov
a809635fc8
Emit proper lowering of load from arg stack slot
...
llvm-svn: 75986
2009-07-16 14:08:42 +00:00
Anton Korobeynikov
9013a1ee39
Implement dynamic allocas
...
llvm-svn: 75985
2009-07-16 14:08:15 +00:00
Anton Korobeynikov
ee8ce5b760
Add jump tables
...
llvm-svn: 75984
2009-07-16 14:07:50 +00:00
Anton Korobeynikov
cb3ee3ee90
Exapnd br_jt into indirect branch. Provide pattern for indirect branches.
...
llvm-svn: 75983
2009-07-16 14:07:24 +00:00
Anton Korobeynikov
1e1f1a789b
Proper lower 'small' results
...
llvm-svn: 75962
2009-07-16 13:58:24 +00:00
Anton Korobeynikov
ce2b70586e
Lower addresses of globals
...
llvm-svn: 75960
2009-07-16 13:57:27 +00:00
Anton Korobeynikov
d984dc6c9d
Provide "wide" muls and divs/rems
...
llvm-svn: 75958
2009-07-16 13:56:42 +00:00
Anton Korobeynikov
c42f164135
Preliminary mul lowering
...
llvm-svn: 75951
2009-07-16 13:53:55 +00:00
Anton Korobeynikov
f93f6b0ed3
More extloads
...
llvm-svn: 75950
2009-07-16 13:53:35 +00:00
Anton Korobeynikov
e26fb377c5
SELECT_CC lowering
...
llvm-svn: 75948
2009-07-16 13:52:51 +00:00
Anton Korobeynikov
769a8c2312
Conditional branches and comparisons
...
llvm-svn: 75947
2009-07-16 13:52:31 +00:00
Anton Korobeynikov
3df5bd3b40
Emit correct offset for PseudoSourceValue
...
llvm-svn: 75946
2009-07-16 13:52:10 +00:00
Anton Korobeynikov
57bf9a3426
Provide proper stack offsets for outgoing arguments
...
llvm-svn: 75945
2009-07-16 13:51:53 +00:00
Anton Korobeynikov
4fcadd1a7d
Some preliminary call lowering
...
llvm-svn: 75941
2009-07-16 13:50:21 +00:00
Anton Korobeynikov
47c086cc6b
Add mem-imm stores
...
llvm-svn: 75933
2009-07-16 13:47:14 +00:00
Anton Korobeynikov
f080a4a0bd
Add shifts and reg-imm address matching
...
llvm-svn: 75927
2009-07-16 13:43:18 +00:00
Anton Korobeynikov
de69aad588
Add bunch of 32-bit patterns... Uffff :)
...
llvm-svn: 75926
2009-07-16 13:42:31 +00:00
Anton Korobeynikov
b902c71a90
Add 32 bit subregs
...
llvm-svn: 75923
2009-07-16 13:35:30 +00:00
Anton Korobeynikov
7fe1d9c90e
Minimal lowering for formal_arguments / ret
...
llvm-svn: 75911
2009-07-16 13:28:59 +00:00
Anton Korobeynikov
8155f0cbaa
Let's start another backend :)
...
llvm-svn: 75909
2009-07-16 13:27:25 +00:00