Chris Lattner
b29996eb23
go through PIC16TargetObjectFile to make sections instead of
...
creating them directly in the pic16 asmprinter.
llvm-svn: 78317
2009-08-06 16:27:28 +00:00
Chris Lattner
a7e2662770
reduce testcase.
...
llvm-svn: 78315
2009-08-06 16:14:33 +00:00
Devang Patel
9ef866f95f
Fix comment.
...
llvm-svn: 78313
2009-08-06 15:39:34 +00:00
Dan Gohman
695d811ad5
Add assertion checks after the calls to LowerFormalArguments, LowerCall,
...
and LowerReturn, to verify that the targets' hooks have respected some
of their postconditions.
llvm-svn: 78312
2009-08-06 15:37:27 +00:00
Dan Gohman
ee902509a8
Remove an over-aggressive assert. Functions with empty struct return
...
types don't have any return values, from CodeGen's perspective.
This fixes PR4688.
llvm-svn: 78311
2009-08-06 15:07:58 +00:00
Anton Korobeynikov
d4f00616cf
Add note about msys perl needed for windows/mingw32 builds.
...
Patch by John Thompson!
llvm-svn: 78304
2009-08-06 12:54:58 +00:00
Anton Korobeynikov
644caa0cdb
Add tests for X86-64 code model handling. Small and kernel for now.
...
llvm-svn: 78300
2009-08-06 12:25:20 +00:00
Anton Korobeynikov
d0439d0638
We need to sext global addresses in kernel code model, not zext
...
llvm-svn: 78299
2009-08-06 11:23:24 +00:00
Dan Gohman
130e2c7aed
Fix a bug in x86's PreprocessForRMW logic that was exposed
...
by aggressive chain operand optimization. UpdateNodeOperands
does not modify the node in place if it would result in
a node identical to an existing node.
llvm-svn: 78297
2009-08-06 09:22:57 +00:00
Dan Gohman
5758e1e92a
Fix a few places in DAGCombiner that were creating all-ones-bits
...
and high-bits values in ways that weren't correct for integer
types wider than 64 bits. This fixes a miscompile in
PPMacroExpansion.cpp in clang on x86-64.
llvm-svn: 78295
2009-08-06 09:18:59 +00:00
Anton Korobeynikov
82db9891fa
Missed part of recent kernel codemodel tweaks
...
llvm-svn: 78293
2009-08-06 09:11:19 +00:00
Chris Lattner
5ccb3af0aa
add a testcase for my llvm-gcc hack.
...
llvm-svn: 78289
2009-08-06 06:18:52 +00:00
Daniel Dunbar
84f399103b
Don't search the entire type table just to delete a type by name.
...
- This also fixes the ENABLE_EXPENSIVE_CHECKS failure on vmcore.ml.
llvm-svn: 78287
2009-08-06 06:04:35 +00:00
Sanjiv Gupta
bdaaacad9a
llvm-ld has a new option called -b to specify the name of bitcode output file, use that.
...
llvm-svn: 78282
2009-08-06 04:09:26 +00:00
Chris Lattner
87754848ab
this passes.
...
llvm-svn: 78281
2009-08-06 03:55:49 +00:00
Andreas Bolka
3c7b95d9aa
Simplify the ZIV tester to the max.
...
As suggested by Nick Lewycky.
llvm-svn: 78277
2009-08-06 03:10:33 +00:00
Sanjiv Gupta
aee88e46c1
XFAIL it while it is being worked on.
...
llvm-svn: 78275
2009-08-06 02:19:20 +00:00
Bob Wilson
3389c2f7d0
Add tests for new NEON vld instructions.
...
llvm-svn: 78264
2009-08-06 00:38:31 +00:00
Bob Wilson
488db94e7b
Neon does not actually have VLD{234}.64 instructions.
...
These operations will have to be synthesized from other instructions.
llvm-svn: 78263
2009-08-06 00:24:27 +00:00
Bob Wilson
dd611f44cb
Convert more Neon tests to FileCheck.
...
llvm-svn: 78261
2009-08-05 23:51:20 +00:00
Owen Anderson
ad3f916596
Update unit test.
...
llvm-svn: 78260
2009-08-05 23:28:57 +00:00
Owen Anderson
03cb69fbd1
Privatize the StructType table, which unfortunately involves routing contexts through a number of APIs.
...
llvm-svn: 78258
2009-08-05 23:16:16 +00:00
Bob Wilson
e148ceaf65
Add a new pre-allocation pass to assign adjacent registers for Neon instructions
...
that have that constraint. This is currently just assigning a fixed set of
registers, and it only handles VLDn for n=2,3,4 with DPR registers.
I'm going to expand it to handle more operations next; we can make it smarter
once everything is working correctly.
llvm-svn: 78256
2009-08-05 23:12:45 +00:00
Anton Korobeynikov
741ea0d7fd
Better handle kernel code model. Also, generalize the things and fix one
...
subtle bug with small code model.
llvm-svn: 78255
2009-08-05 23:01:26 +00:00
Dale Johannesen
dc3416b7b3
Adjust test for llvm-gcc checkin 78249.
...
llvm-svn: 78251
2009-08-05 22:18:47 +00:00
Dan Gohman
77f33b71c7
Use GR32 for copies between GR32_NOSP and GR32_NOREX, as neither
...
is a subset of the other, but both are subsets of GR32.
llvm-svn: 78250
2009-08-05 22:18:26 +00:00
Daniel Dunbar
4f6f6d080f
Make block and function count available via ProfileInfo.
...
- Part of optimal static profiling patch sequence by Andreas Neustifter.
llvm-svn: 78247
2009-08-05 21:51:16 +00:00
Daniel Dunbar
1efb6b0391
Suppress compiler warning.
...
llvm-svn: 78246
2009-08-05 21:42:40 +00:00
Dan Gohman
198f5e84c6
Use (void *)(intptr_t) to cast function addresses to void*
...
for use with sys::Path::GetMainExecutable, to avoid warnings
with -pedantic.
llvm-svn: 78245
2009-08-05 21:03:39 +00:00
David Goodwin
e5b5d8fbb3
When using NEON for single-precision FP, the NEON result must be placed in D0-D15 as these are the only D registers with S subregs. Introduce a new regclass to represent D0-D15 and use it in the NEON single-precision FP patterns.
...
llvm-svn: 78244
2009-08-05 21:02:22 +00:00
David Greene
fdd2519eb5
Fix some column padding bugs, reorganize things as suggested by Chris
...
and eliminate complexity. Yay!
llvm-svn: 78243
2009-08-05 21:00:52 +00:00
Chris Lattner
39fb546b9e
remove the 'DataSectionStartSuffix' and 'TextSectionStartSuffix' knobs.
...
llvm-svn: 78242
2009-08-05 20:49:52 +00:00
Dan Gohman
46ffffa750
Fix FindExecutable to use sys::Path::GetMainExecutable instead of
...
just argv[0]. And remove the code for searching the current
working directory and for searching PATH; the point of FindExecutable
is not to find whatever version of the executable can be found by
searching around, but to find an executable that accompanies the
current executable.
Update the tools to use sys::Program::FindProgramByName when they
want PATH searching.
llvm-svn: 78240
2009-08-05 20:21:17 +00:00
Dan Gohman
798ae47b59
Minor code simplification.
...
llvm-svn: 78239
2009-08-05 20:16:55 +00:00
Anton Korobeynikov
ef98dbe3de
Remove redundand checks: the only way to have, e.g. f32 RegVT is exactly
...
hardfloat case.
llvm-svn: 78237
2009-08-05 20:15:19 +00:00
Dan Gohman
87cc2c2dce
hasSuperClass tests for a strict superset relation, rather than
...
a superset relation. This code wants to test the regular superset
relation.
llvm-svn: 78236
2009-08-05 20:13:45 +00:00
Anton Korobeynikov
ef42862ef5
Unbreak the stuff, this is ugly, but we cannot do better for now with 'plain' C calling conv.
...
llvm-svn: 78232
2009-08-05 19:40:16 +00:00
Dale Johannesen
1de1897bf0
Test for llvm-gcc checkin 78223.
...
llvm-svn: 78229
2009-08-05 19:10:41 +00:00
Anton Korobeynikov
22ef75155e
Missed pieces for ARM HardFP ABI.
...
Patch by Sandeep Patel!
llvm-svn: 78225
2009-08-05 19:04:42 +00:00
Owen Anderson
4b5c761af2
Privatize the FunctionType table.
...
llvm-svn: 78221
2009-08-05 18:13:27 +00:00
Andrew Lenharth
13937d8236
Use elf Object File directly
...
llvm-svn: 78220
2009-08-05 18:13:04 +00:00
Daniel Dunbar
4cc1feff4f
Remove some dead code.
...
llvm-svn: 78219
2009-08-05 18:12:37 +00:00
Dan Gohman
df7ea32af7
Enable the new no-SP register classes by default. This is to address
...
PR4572. A few tests have some minor code regressions due to different
coalescing.
llvm-svn: 78217
2009-08-05 17:40:24 +00:00
Bob Wilson
9ede773c4e
Remove a redundant declaration.
...
llvm-svn: 78216
2009-08-05 17:39:44 +00:00
Dan Gohman
4cf97dddea
Update a comment to reflect the current code.
...
llvm-svn: 78215
2009-08-05 17:32:39 +00:00
Anton Korobeynikov
f6e25b3039
Add testcases for reg-mem arithemtics added recently
...
llvm-svn: 78214
2009-08-05 17:04:32 +00:00
Anton Korobeynikov
be47ccffef
Convert bswap test to filecheck, add more test entries & convert stuff to filecheck
...
llvm-svn: 78212
2009-08-05 16:50:53 +00:00
Dan Gohman
477fd55c9a
Fix a bug in the PIC16 backend.
...
llvm-svn: 78211
2009-08-05 16:46:43 +00:00
David Goodwin
21788bef7c
Disable NEON single-precision FP support for Cortex-A8, for now...
...
llvm-svn: 78209
2009-08-05 16:40:57 +00:00
Dan Gohman
12b7b1cd83
Add an explicit keyword.
...
llvm-svn: 78208
2009-08-05 16:40:32 +00:00
Devang Patel
44c4417812
Remove dead code. MDNode and MDString are not Constant anymore.
...
llvm-svn: 78207
2009-08-05 16:40:02 +00:00
Dan Gohman
cd8287549d
Delete an obsolete sentance from a comment.
...
llvm-svn: 78206
2009-08-05 16:39:42 +00:00
Dan Gohman
a97540f396
Add new function attribute keywords to the vim syntax.
...
llvm-svn: 78205
2009-08-05 16:38:48 +00:00
Dan Gohman
2bebfc38af
Change these tests to use function attributes rather than special llc
...
command-line options.
llvm-svn: 78204
2009-08-05 16:37:27 +00:00
Anton Korobeynikov
2e627cb37f
Add memory versions of some instructions.
...
Patch by Neale Ferguson!
llvm-svn: 78203
2009-08-05 16:16:11 +00:00
Benjamin Kramer
d06eaca66f
Rename a variable to make MSVC happy.
...
llvm-svn: 78202
2009-08-05 16:08:58 +00:00
Chris Lattner
abde7f9d27
checking in broken testcases is not such a good idea.
...
llvm-svn: 78201
2009-08-05 16:04:18 +00:00
David Goodwin
a307edbdd5
By default, for cortex-a8 use NEON for single-precision FP.
...
llvm-svn: 78200
2009-08-05 16:01:19 +00:00
Daniel Dunbar
b6fec38426
Remove unnecessary ProfileInfoLoader methods.
...
- Part of optimal static profiling patch sequence by Andreas Neustifter.
llvm-svn: 78199
2009-08-05 15:55:56 +00:00
Sanjiv Gupta
63c5ede173
Quite a few tests crashed in llc after 78142. This is just one of them. I hope to add a few more.
...
llvm-svn: 78198
2009-08-05 15:52:14 +00:00
Daniel Dunbar
6e1fb1e06a
Add StringRef::endswith
...
llvm-svn: 78197
2009-08-05 15:48:26 +00:00
Benjamin Kramer
eaccdd34a3
Documentation: fix HTML validation errors.
...
llvm-svn: 78196
2009-08-05 15:42:44 +00:00
Andrew Lenharth
7d6a183eb8
only point to dest labels if the graph has them
...
llvm-svn: 78192
2009-08-05 15:04:22 +00:00
Anton Korobeynikov
cb781cfe81
Special constants as destinations does not work as expected - drop the patterns.
...
llvm-svn: 78191
2009-08-05 14:42:00 +00:00
Andrew Lenharth
ba3a342c89
Alpha: Get section directives right
...
llvm-svn: 78189
2009-08-05 13:59:57 +00:00
Benjamin Kramer
9b8364da0e
Remove unused forward decls.
...
llvm-svn: 78187
2009-08-05 11:33:27 +00:00
Anton Korobeynikov
1bb812e86b
Add executable suffix for the tool. This is needed e.g. for 'make install' on mingw32.
...
llvm-svn: 78185
2009-08-05 09:37:43 +00:00
Anton Korobeynikov
0c3f8d5f53
Pass user only if it's non-empty. Patch by Sandeep.
...
llvm-svn: 78184
2009-08-05 09:32:53 +00:00
Anton Korobeynikov
7cbff91e62
Add save-temps option to bugpoint to keep temporary stuff.
...
Patch by Sandeep Patel
llvm-svn: 78183
2009-08-05 09:32:10 +00:00
Anton Korobeynikov
de8b1b2e7d
Cleanup in dbg_stoppoint handling in CBE. Patch by Sandeep Patel.
...
llvm-svn: 78182
2009-08-05 09:31:40 +00:00
Anton Korobeynikov
68d8634871
Minor arm CBE fixes. Patch by Sandeep.
...
llvm-svn: 78181
2009-08-05 09:31:07 +00:00
Anton Korobeynikov
fe4ce2ae7a
Emit module-level inline asm for CBE.
...
Patch by Sandeep Patel
llvm-svn: 78180
2009-08-05 09:29:56 +00:00
Evan Cheng
ea2b82b8fc
Disable stack coloring with register for now. It's not able to set kill markers.
...
llvm-svn: 78179
2009-08-05 07:26:17 +00:00
Evan Cheng
a2ce665f60
Another nasty coalescer bug (is there another kind):
...
After coalescing reg1027's def and kill are both at the same point:
%reg1027,0.000000e+00 = [56,814:0) 0@70-(814)
bb5:
60 %reg1027<def> = t2MOVr %reg1027, 14, %reg0, %reg0
68 %reg1027<def> = t2LDRi12 %reg1027<kill>, 8, 14, %reg0
76 t2CMPzri %reg1038<kill,undef>, 0, 14, %reg0, %CPSR<imp-def>
84 %reg1027<def> = t2MOVr %reg1027, 14, %reg0, %reg0
96 t2Bcc mbb<bb5,0x2030910>, 1, %CPSR<kill>
Do not remove the kill marker on t2LDRi12.
llvm-svn: 78178
2009-08-05 07:05:41 +00:00
Bruno Cardoso Lopes
98fcfdbf9d
Remove accidental commited comment
...
llvm-svn: 78177
2009-08-05 07:00:43 +00:00
Bruno Cardoso Lopes
2b1dc9a783
- Remove custom handling of jumptables by the elf writter (this was
...
a dirty hack and isn't need anymore since the last x86 code emitter patch)
- Add a target-dependent modifier to addend calculation
- Use R_X86_64_32S relocation for X86::reloc_absolute_word_sext
- Use getELFSectionFlags whenever possible
- fix getTextSection to use TLOF and emit the right text section
- Handle global emission for static ctors, dtors and Type::PointerTyID
- Some minor fixes
llvm-svn: 78176
2009-08-05 06:57:03 +00:00
Evan Cheng
e219be7346
80 col violations.
...
llvm-svn: 78175
2009-08-05 06:41:25 +00:00
Chris Lattner
0aff0b2b58
common globals may also not be marked constant.
...
llvm-svn: 78169
2009-08-05 05:41:44 +00:00
Dan Gohman
e32c0fe584
Revert changes accidentally committed along with r78163.
...
llvm-svn: 78165
2009-08-05 05:38:13 +00:00
Dan Gohman
8c79569853
Teach X86FastISel how to handle CCValAssign::BCvt, which is used for
...
MMX arguments. This fixes PR4684.
llvm-svn: 78163
2009-08-05 05:33:42 +00:00
Chris Lattner
d055488c72
Clarify common linkage and the requirements on it. Enforce
...
them in the verifier.
llvm-svn: 78160
2009-08-05 05:21:07 +00:00
Andreas Bolka
13b860992a
ZIV tester for LDA.
...
llvm-svn: 78157
2009-08-05 04:26:05 +00:00
Chris Lattner
cbc7b26542
expose SectionKindForGlobal to curious clients, named as
...
getKindForGlobal.
llvm-svn: 78156
2009-08-05 04:25:40 +00:00
Andreas Bolka
d3a44b52c6
Restrict LDA to GEPs with the same pointer offset.
...
We can not simply apply ZIV testing to the pointer offsets, as this
would incorrectly return independence for e.g. (GEP x,0,i; GEP x,1,-i).
llvm-svn: 78155
2009-08-05 04:13:41 +00:00
Chris Lattner
3e5b272361
add a temporary hook to allow reuse of the asmprinter from the disassembler.
...
llvm-svn: 78154
2009-08-05 04:09:18 +00:00
Andreas Bolka
2979eb8f35
Fix LDA testcases.
...
llvm-svn: 78153
2009-08-05 04:03:29 +00:00
Evan Cheng
379429200e
Turn some insert_subreg, extract_subreg, subreg_to_reg into implicit_defs.
...
llvm-svn: 78151
2009-08-05 03:53:14 +00:00
Bob Wilson
85f60cc5a8
Oops. I didn't mean to commit this piece yet.
...
llvm-svn: 78146
2009-08-05 02:47:13 +00:00
Evan Cheng
1f7b549c79
One more. Transfer kill of the larger register when lowering an EXTRACT_SUBREG.
...
llvm-svn: 78145
2009-08-05 02:25:11 +00:00
Evan Cheng
6376367356
One more place where subreg lowering forgot to transfer undefness.
...
llvm-svn: 78144
2009-08-05 01:57:22 +00:00
Dan Gohman
f9bbcd1afd
Major calling convention code refactoring.
...
Instead of awkwardly encoding calling-convention information with ISD::CALL,
ISD::FORMAL_ARGUMENTS, ISD::RET, and ISD::ARG_FLAGS nodes, TargetLowering
provides three virtual functions for targets to override:
LowerFormalArguments, LowerCall, and LowerRet, which replace the custom
lowering done on the special nodes. They provide the same information, but
in a more immediately usable format.
This also reworks much of the target-independent tail call logic. The
decision of whether or not to perform a tail call is now cleanly split
between target-independent portions, and the target dependent portion
in IsEligibleForTailCallOptimization.
This also synchronizes all in-tree targets, to help enable future
refactoring and feature work.
llvm-svn: 78142
2009-08-05 01:29:28 +00:00
Evan Cheng
cdb125ce66
If the insert_subreg source is <undef>, insert an implicit_def instead of a copy.
...
llvm-svn: 78141
2009-08-05 01:29:24 +00:00
Dan Gohman
5d79a2c62c
Various comment fixes.
...
llvm-svn: 78139
2009-08-05 01:19:01 +00:00
Dan Gohman
cbf1e16ad9
Remove an unnecessary flush in the CppBackend's output.
...
llvm-svn: 78138
2009-08-05 01:06:38 +00:00
Dan Gohman
c6b5e8a5c5
Don't flush the raw_ostream between each MachineFunction. These flush
...
calls were originally put in place because errs() at one time was
not unbuffered, and these print routines are commonly used with errs()
for debugging. However, errs() is now properly unbuffered, so the
flush calls are no longer needed. This significantly reduces the
number of write(2) calls for regular asm printing when there are many
small functions.
llvm-svn: 78137
2009-08-05 00:49:25 +00:00
Bob Wilson
20f79e321e
Change DAG nodes for Neon VLD2/3/4 operations to return multiple results.
...
Get rid of yesterday's code to fix the register usage during isel.
Select the new DAG nodes to machine instructions. The new pre-alloc pass
to choose adjacent registers for these results is not done, so the
results of this will generally not assemble yet.
llvm-svn: 78136
2009-08-05 00:49:09 +00:00
Dan Gohman
400cd1a87a
cerr isn't buffered so it doesn't need to be flushed.
...
llvm-svn: 78135
2009-08-05 00:44:01 +00:00
Dan Gohman
b880939834
lli doesn't need <iostream> anymore.
...
llvm-svn: 78133
2009-08-05 00:28:59 +00:00
Dan Gohman
7ce1fe2d04
Remove needless uses of std::flush in the parent process after a
...
fork call. This eliminates a need for <iostream>. Also remove
needless fsync calls.
llvm-svn: 78131
2009-08-05 00:17:00 +00:00
Owen Anderson
e565995c65
Privatize the PointerType factory.
...
llvm-svn: 78130
2009-08-05 00:15:12 +00:00
Bruno Cardoso Lopes
1b02ceeb41
1) Proper emit displacements for x86, using absolute relocations where necessary
...
for ELF to work.
2) RIP addressing: Use SIB bytes for absolute relocations where RegBase=0,
IndexReg=0.
3) The JIT can get the real address of cstpools and jmptables during
code emission, fix that for object code emission
llvm-svn: 78129
2009-08-05 00:11:21 +00:00
Dan Gohman
23a419f361
Use _exit rather than exit in the child process after a failed exec.
...
Add a comment explaining why.
llvm-svn: 78128
2009-08-05 00:09:12 +00:00
Jeffrey Yasskin
337b124a24
Make ExecutionEngine::updateGlobalMapping(GV, NULL) properly remove GV's old
...
address from the reverse mapping, and add a test that this works now.
llvm-svn: 78127
2009-08-04 23:53:16 +00:00
Evan Cheng
7cc6aca1e6
Fix part 1 of pr4682. PICADD is a 16-bit instruction even in thumb2 mode.
...
llvm-svn: 78126
2009-08-04 23:47:55 +00:00
Owen Anderson
d918649d5f
Privatize the VectorType uniquing.
...
llvm-svn: 78125
2009-08-04 23:47:44 +00:00
Owen Anderson
542cffc3eb
Begin the process of privatizing the type uniquing tables. No API changes yet, but there will be in the near future.
...
llvm-svn: 78122
2009-08-04 23:33:01 +00:00
Dan Gohman
298bce2aa9
Check for !isa<Constant> instead of isa<Instruction>. This
...
matches what the comment says, and it avoids spurious BitCast
instructions for Argument values.
llvm-svn: 78121
2009-08-04 23:23:56 +00:00
Dan Gohman
6faa1d2f8f
Follow Unix behavior and return 127 if the command is not found,
...
and 126 if it is not executable.
llvm-svn: 78120
2009-08-04 23:15:49 +00:00
Chris Lattner
694285ca6d
revert r78048, it isn't worth using assertingvh here.
...
llvm-svn: 78119
2009-08-04 23:07:12 +00:00
Benjamin Kramer
83c917a627
Update CMakeLists.
...
llvm-svn: 78118
2009-08-04 23:02:53 +00:00
Owen Anderson
9b67698574
It helps if I remember to actually add the file...
...
llvm-svn: 78116
2009-08-04 22:55:26 +00:00
Owen Anderson
afd0c4cd56
Factor some of the constants+context related code out into a separate header, to make LLVMContextImpl.h
...
not hideous. Also, fix some MSVC compile errors.
llvm-svn: 78115
2009-08-04 22:41:48 +00:00
Evan Cheng
28c2d9809d
Fix test.
...
llvm-svn: 78113
2009-08-04 22:22:58 +00:00
Bob Wilson
6092c8d231
Convert more Neon tests to use FileCheck.
...
llvm-svn: 78111
2009-08-04 22:01:41 +00:00
Bob Wilson
a8720101b5
Replace dregsingle operand modifier with explicit escaped curly brackets.
...
For other VLDn and VSTn operations, we need to list the multiple registers
explicitly anyway, so there's no point in special-casing this one usage.
llvm-svn: 78109
2009-08-04 21:39:33 +00:00
Bob Wilson
2b60721464
Convert a few Neon tests to use FileCheck.
...
llvm-svn: 78108
2009-08-04 21:33:22 +00:00
Jakob Stoklund Olesen
0e0b5405f5
Clean up the handling of two-address operands in RegScavenger.
...
This fixes PR4528.
llvm-svn: 78107
2009-08-04 21:30:30 +00:00
Jakob Stoklund Olesen
86cdcdc3d2
Don't give implicit machine operands special treatment in the register scavenger.
...
Imp-def is *not* allowed to redefine a live register.
Imp-use is *not* allowed to use a dead register.
llvm-svn: 78106
2009-08-04 21:29:11 +00:00
Mike Stump
f2dbd2e205
Restlyize to match other targets, fixes cmake build to boot.
...
llvm-svn: 78105
2009-08-04 21:27:06 +00:00
Evan Cheng
783b65b546
Enable load / store multiple pass for Thumb2. It's not using ldrd / strd yet.
...
llvm-svn: 78104
2009-08-04 21:12:13 +00:00
Chris Lattner
cd450bbbe5
remove a random reference to subtarget. Even without this, we
...
still get "intel syntax" instructions from llc with
-x86-asm-syntax=intel
llvm-svn: 78103
2009-08-04 21:12:08 +00:00
David Goodwin
30bf625ac2
Add NEON single-precision FP support for fabs and fneg.
...
llvm-svn: 78101
2009-08-04 20:39:05 +00:00
Daniel Dunbar
f30f4a5887
TableGen / AsmMatcher: Tweaks to avoid generating completely bogus match
...
functions.
- Fix variant flattening when the variant embeds an operand reference.
- Ignore instructions which reference an operand multiple times (e.g., "xorb
$dst, $dst"), and operands which have extra flags (e.g., "$dst:subreg32").
llvm-svn: 78099
2009-08-04 20:36:45 +00:00
Daniel Dunbar
8b6be17777
When exec() fails, return 127 instead of errno; the parent process has no way to
...
distinguish that the result is errno, so it can't use it to provide more
information about the error (it also exposes the numeric value of errno).
llvm-svn: 78098
2009-08-04 20:32:25 +00:00
Owen Anderson
1584a29536
Privatize the last bit of Constant-creation state.
...
llvm-svn: 78097
2009-08-04 20:25:11 +00:00
Chris Lattner
16dc0cd8a2
rip out SectionEndDirectiveSuffix support, only uses by
...
the masm backend. If anyone cares about masm in the future,
we'll have semantic sections it can hang off of.
llvm-svn: 78096
2009-08-04 20:09:41 +00:00
Jakob Stoklund Olesen
f465f06aa4
Don't tamper with <undef> operands in MachineInstr::addRegisterKilled.
...
For an undef operand, MO.getReg() is meaningless and we should not use it.
Undef operands should be skipped entirely.
llvm-svn: 78095
2009-08-04 20:09:25 +00:00
Jakob Stoklund Olesen
6304369c4e
LowerSubregsInstructionPass::LowerExtract should not extend the live range of registers.
...
When LowerExtract eliminates an EXTRACT_SUBREG with a kill flag, it moves the
kill flag to the place where the sub-register is killed. This can accidentally
overlap with the use of a sibling sub-register, and we have trouble.
In the test case we have this code:
Live Ins: %R0 %R1 %R2
%R2L<def> = EXTRACT_SUBREG %R2<kill>, 1
%R2H<def> = LOAD16fi <fi#-1>, 0, Mem:LD(2,4) [FixedStack-1 + 0]
%R1L<def> = EXTRACT_SUBREG %R1<kill>, 1
%R0L<def> = EXTRACT_SUBREG %R0<kill>, 1
%R0H<def> = ADD16 %R2H<kill>, %R2L<kill>, %AZ<imp-def>, %AN<imp-def>, %AC0<imp-def>, %V<imp-def>, %VS<imp-def>
subreg: CONVERTING: %R2L<def> = EXTRACT_SUBREG %R2<kill>, 1
subreg: eliminated!
subreg: killed here: %R0H<def> = ADD16 %R2H, %R2L, %R2<imp-use,kill>, %AZ<imp-def>, %AN<imp-def>, %AC0<imp-def>, %V<imp-def>, %VS<imp-def>
The kill flag on %R2 is moved to the last instruction, and the live range overlaps with the definition of %R2H:
*** Bad machine code: Redefining a live physical register ***
- function: f
- basic block: 0x18358c0 (#0 )
- instruction: %R2H<def> = LOAD16fi <fi#-1>, 0, Mem:LD(2,4) [FixedStack-1 + 0]
Register R2H was defined but already live.
The fix is to replace EXTRACT_SUBREG with IMPLICIT_DEF instead of eliminating
it completely:
subreg: CONVERTING: %R2L<def> = EXTRACT_SUBREG %R2<kill>, 1
subreg: replace by: %R2L<def> = IMPLICIT_DEF %R2<kill>
Note that these IMPLICIT_DEF instructions survive to the asm output. It is
necessary to fix the stack-color-with-reg test case because of that.
llvm-svn: 78093
2009-08-04 20:01:11 +00:00
Jakob Stoklund Olesen
3c2a1dea71
Enforce stricter rules in machine code verifier.
...
Implicit operands no longer get a free pass: Imp-use requires a live register
and imp-def requires a dead register.
There is also no special rule allowing redefinition of a sub-register when the
super-register is live. The super register must have imp-kill+imp-def operands
instead.
llvm-svn: 78090
2009-08-04 19:18:01 +00:00
Jakob Stoklund Olesen
d302ab9961
Most flags are reserved registers on Blackfin.
...
The only exception is CC.
llvm-svn: 78089
2009-08-04 19:16:55 +00:00
Evan Cheng
a3abe2a7ce
In thumb mode, r7 is used as frame register. This fixes pr4681.
...
llvm-svn: 78086
2009-08-04 18:46:17 +00:00
David Goodwin
a3839bc6c0
Match common pattern for FNMAC. Add NEON SP support.
...
llvm-svn: 78085
2009-08-04 18:44:29 +00:00
David Goodwin
a2824d5700
Improve tests.
...
llvm-svn: 78083
2009-08-04 18:11:59 +00:00
Sanjiv Gupta
b4c28d23e1
Legalize i64 store operations generated by inst-combine.
...
llvm-svn: 78082
2009-08-04 17:59:16 +00:00
David Goodwin
3b9c52c5c1
Initial support for single-precision FP using NEON. Added "neonfp" attribute to enable. Added patterns for some binary FP operations.
...
llvm-svn: 78081
2009-08-04 17:53:06 +00:00
Douglas Gregor
465396b5b8
Add some type traits that are used for Clang's statically-checked
...
canonical types.
llvm-svn: 78076
2009-08-04 17:04:52 +00:00
Evan Cheng
206ee96bd6
Fix PR4528. This scavenger assertion is too strict. The two-address value is
...
killed by another operand.
There is probably a better fix. Either 1) scavenger can look at other operands, or
2) livevariables can be smarter about kill markers. Patches welcome.
llvm-svn: 78072
2009-08-04 16:52:44 +00:00
Daniel Dunbar
ed65bf420d
Avoid compiler warning (in -Asserts mode)
...
llvm-svn: 78070
2009-08-04 16:46:12 +00:00
Chris Lattner
f222054df7
enhance codegen to put 16-bit character strings into the
...
__TEXT,__ustring section on darwin.
llvm-svn: 78068
2009-08-04 16:27:13 +00:00
Chris Lattner
eee9df0e97
fix a fixme: don't create an explicit "CStringSection" for ELF,
...
it is just being used as a prefix, so forward substitute it directly.
llvm-svn: 78067
2009-08-04 16:19:50 +00:00
Chris Lattner
81bbf443fe
Add support emiting for 2/4 byte mergable strings to the ".rodata.str*"
...
section on ELF targets.
llvm-svn: 78066
2009-08-04 16:13:09 +00:00
Misha Brukman
bbabd39cce
* Use "svn export" instead of "svn co" and avoid cleaning up .svn dirs
...
* Use "svn info" to get last revision in repo, will get matching tarballs
* Now run "svn -q" since "svn info" tells us the revision number
llvm-svn: 78065
2009-08-04 15:47:18 +00:00
Anton Korobeynikov
d0a53d380a
Ooops, I was too fast to commit the wrong fix :(
...
llvm-svn: 78060
2009-08-04 11:18:31 +00:00
Anton Korobeynikov
3c5b68e2a7
Fix a typo - this unbreaks llvm-gcc build on arm
...
llvm-svn: 78059
2009-08-04 11:12:51 +00:00
Evan Cheng
3870fbb561
Thumb2 does not have ib (increment before) and da (decrement after) forms of ldm / stm.
...
llvm-svn: 78057
2009-08-04 08:34:18 +00:00
Devang Patel
05eb617da5
Use separate ValueList for metadata.
...
This fixes PR4666.
llvm-svn: 78056
2009-08-04 06:00:18 +00:00
Chris Lattner
b58dc1c667
make MergeableCString be a SectionKind "abstract class", and
...
add new concrete versions for 1/2/4-byte mergable strings.
These are not actually created yet.
llvm-svn: 78055
2009-08-04 05:35:56 +00:00
Edward O'Callaghan
ab8a04c6a8
Minor www site formating improvements.
...
llvm-svn: 78054
2009-08-04 05:24:28 +00:00
Devang Patel
8cca7b4abe
Revert recent bitcode writer patches.
...
llvm-svn: 78053
2009-08-04 05:01:35 +00:00
Bill Wendling
fd5d735e2b
llvm-gcc checks the static asm variable is valid in ValidateRegisterVariable. Make this work for PPC.
...
llvm-svn: 78051
2009-08-04 04:48:31 +00:00