Commit Graph

30214 Commits

Author SHA1 Message Date
Evan Cheng
149b0d4cf1 Fix comment.
llvm-svn: 76693
2009-07-21 23:54:22 +00:00
Chris Lattner
4d3b78e0f5 simplify code now that it is inlined.
llvm-svn: 76689
2009-07-21 23:49:55 +00:00
Lang Hames
0e61f87ea3 Exposed PHIElimination pass within CodeGen.
llvm-svn: 76688
2009-07-21 23:47:33 +00:00
Chris Lattner
b9332126cc Now that RelocBehaviour() is never overloaded, it doesn't need to be
virtual.  Just inline it into its two current call sites in preparation
for simplifying the code.

llvm-svn: 76686
2009-07-21 23:47:11 +00:00
Chris Lattner
c1c5dab4c4 this doesn't break any of the 4 ia64 tests.
llvm-svn: 76683
2009-07-21 23:42:24 +00:00
Chris Lattner
5c144a5948 alpha doesn't need to redefine this: it only supports PIC codegen anyway.
llvm-svn: 76682
2009-07-21 23:41:35 +00:00
David Greene
ddaf106a0c Add some support for iterative coalescers to calculate a joined live
range's weight properly.  This is turned off right now in the sense that
you'll get an assert if you get into a situation that can only be caused
by an iterative coalescer.  All other code paths operate exactly as
before so there is no functional change with this patch.  The asserts
should be disabled if/when an iterative coalescer gets added to trunk.

llvm-svn: 76680
2009-07-21 23:36:14 +00:00
Chris Lattner
fb908d7671 no really, I can spell!
llvm-svn: 76679
2009-07-21 23:36:01 +00:00
Chris Lattner
11b49ed2ce add an API so target-independent codegen can determine if a constant
pool entry will require relocations against it.  I implemented this
conservatively for ARM, someone who is knowledgable about it should
see if this can be improved.

llvm-svn: 76678
2009-07-21 23:34:23 +00:00
Dan Gohman
b45091f0f9 Convert instcombine from using using getAnalysis<TargetData> to
getAnalysisIfAvailable<TargetData>.

llvm-svn: 76676
2009-07-21 23:21:54 +00:00
Dan Gohman
8577dd4cca Permit the IntPtrTy argument to isEliminableCastPair to be null,
to help support use when TargetData is not available.

llvm-svn: 76675
2009-07-21 23:19:40 +00:00
Bruno Cardoso Lopes
3483574772 Change ELFCodeEmitter logic to emit the constant pool and jump tables to
their appropriate sections before the code itself. They need to be emitted
before the function because on some targets (x86 but not x86_64) the later
may reference a JT or CP entry address

llvm-svn: 76672
2009-07-21 23:13:26 +00:00
Dan Gohman
190d29cb5c Replace the original ad-hoc code for determining whether (v pred w) implies
(x pred y) with more thorough code that does more complete canonicalization
before resorting to range checks. This helps it find more cases where
the canonicalized expressions match.

llvm-svn: 76671
2009-07-21 23:03:19 +00:00
Chris Lattner
fb3e6ae8b2 remove the last bits of SectionFlagsForGlobal. There is some flag here that
depends on XS1A, but I think the ReadOnlySection is already set up for this
and there is no testcase that this breaks.  If this is really needed, we can
add the appropriate parameterization to TargetAsmInfo in the future to support
this.

llvm-svn: 76667
2009-07-21 22:42:37 +00:00
Chris Lattner
bca235c1d3 don't mask out the small flag and then reapply it later.
llvm-svn: 76666
2009-07-21 22:39:28 +00:00
Chris Lattner
34ba5422cd if Xcore doesn't support TLS, it doesn't have to worry about thread local LLVM IR, it should be rejected by a front-end.
llvm-svn: 76665
2009-07-21 22:37:38 +00:00
Chris Lattner
aa793632ff remove the Xcore implementation of SelectSectionForGlobal. While you have
to twist your brain to see it, I believe it is the same as ELFTargetAsmInfo::SelectSectionForGlobal.

llvm-svn: 76664
2009-07-21 22:36:53 +00:00
Chris Lattner
8a24ab398f simplify based on the fact that darwin always uses L/l.
llvm-svn: 76662
2009-07-21 22:32:55 +00:00
Chris Lattner
b52c8153f3 make some stuff private.
llvm-svn: 76661
2009-07-21 22:30:39 +00:00
Chris Lattner
0a3a6f2ceb Remove the XCore custom implementation of MergeableConstSection, relying on
the generic ELF version instead.  This will result in its mergable constant
sections getting named ".rodata.cst4" instead of ".cp.const4", but the
linker looks at the section flags, not the name of the section AFAICT.

llvm-svn: 76659
2009-07-21 22:25:52 +00:00
Chris Lattner
8d061f011b inline a trivial method into its only call site and fix indentation of cases
llvm-svn: 76654
2009-07-21 21:29:08 +00:00
Chris Lattner
4815d4919c Remove some overridden functions in XCoreTargetAsmInfo that are
implemented exactly the same way as its ELFTargetAsmInfo subclass 
has them.

llvm-svn: 76653
2009-07-21 21:26:32 +00:00
Chris Lattner
135caf1a2b revert r76602, 76603, and r76615, pending design discussions.
llvm-svn: 76646
2009-07-21 21:12:58 +00:00
Chris Lattner
589a37a068 minor cleanups.
llvm-svn: 76645
2009-07-21 21:09:35 +00:00
Owen Anderson
a8637e9824 Privatize the ConstantArray table.
llvm-svn: 76639
2009-07-21 20:55:28 +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
Owen Anderson
bdcb99324a Privatize the first of the value maps.
llvm-svn: 76634
2009-07-21 20:13:12 +00:00
Eli Friedman
45160af6bd Remove shift amount flavor. It isn't actually complete enough to
be useful, and it's currently unused.  (Some issues: it isn't actually 
rich enough to capture the semantics on many architectures, and
semantics can vary depending on the type being shifted.)

llvm-svn: 76633
2009-07-21 20:12:16 +00:00
Eli Friedman
a62553ec99 Remove a couple of already-implemented notes.
llvm-svn: 76631
2009-07-21 20:05:43 +00:00
David Greene
94bfedaf40 Prefix IR dumps with LiveInterval indices when possible. This turns
this:

	%ESI<def> = MOV32rr %EDI<kill>
	ADJCALLSTACKDOWN64 0, %RSP<imp-def>, %EFLAGS<imp-def,dead>, %RSP<imp-use>
	%reg1027<def> = MOVZX64rr32 %ESI
	%reg1027<def> = ADD64ri8 %reg1027, 15, %EFLAGS<imp-def,dead>
	%reg1027<def> = AND64ri8 %reg1027, -16, %EFLAGS<imp-def,dead>
	%RDI<def> = MOV64rr %RSP
	%RDI<def> = SUB64rr %RDI, %reg1027<kill>, %EFLAGS<imp-def,dead>
	%RSP<def> = MOV64rr %RDI

into this:

4	%reg1024<def> = MOV32rr %EDI<kill>
12	ADJCALLSTACKDOWN64 0, %RSP<imp-def>, %EFLAGS<imp-def,dead>, %RSP<imp-use>
20	%reg1025<def> = MOVZX64rr32 %reg1024
28	%reg1026<def> = MOV64rr %reg1025<kill>
36	%reg1026<def> = ADD64ri8 %reg1026, 15, %EFLAGS<imp-def,dead>
44	%reg1027<def> = MOV64rr %reg1026<kill>
52	%reg1027<def> = AND64ri8 %reg1027, -16, %EFLAGS<imp-def,dead>
60	%reg1028<def> = MOV64rr %RSP
68	%reg1029<def> = MOV64rr %reg1028<kill>
76	%reg1029<def> = SUB64rr %reg1029, %reg1027<kill>, %EFLAGS<imp-def,dead>
84	%RSP<def> = MOV64rr %reg1029

This helps greatly when debugging register allocation and coalescing
problems.

llvm-svn: 76615
2009-07-21 18:56:32 +00:00
Evan Cheng
66f1d7a0e1 Add fake v7 itineraries for now.
llvm-svn: 76612
2009-07-21 18:54:14 +00:00
Chris Lattner
3d4ab7a231 make AsmPrinter::doFinalization iterate over the global variables
and call PrintGlobalVariable, allowing elimination and simplification
of various targets.

llvm-svn: 76604
2009-07-21 18:38:57 +00:00
David Greene
979d7aa03a Add PrefixPrinter arguments to the dump routines for MachineFunction and
MachineBasicBlock.  We'll use these shortly.

llvm-svn: 76603
2009-07-21 18:27:05 +00:00
Evan Cheng
192fc19379 Do not select tSXTB / tSXTH in thumb2 mode.
llvm-svn: 76600
2009-07-21 18:15:26 +00:00
Owen Anderson
7f61f8dc30 Rename getConstantInt{True|False} to get{True|False} at Chris' behest.
llvm-svn: 76598
2009-07-21 18:03:38 +00:00
Chris Lattner
89785b23b8 reduce indentation by using an early exit.
llvm-svn: 76596
2009-07-21 17:59:36 +00:00
Ted Kremenek
60d0ab4838 Update CMake files.
llvm-svn: 76595
2009-07-21 17:43:20 +00:00
Chris Lattner
ac0f5e081e whitespace cleanups, make the MipsAsmPrinter::doInitialization
chain to the super class instead of initializing mangler directly.
This gives it .file and module level inline asm support among other
things.

llvm-svn: 76593
2009-07-21 17:39:48 +00:00
Chris Lattner
433fbf959a fix Sparc, SystemZ, and MSP430 to not override AsmPrinter::doInitialization.
This eliminates redundancy setting up the mangler and adds support to them
for module-level inline asm and a .file directive.

llvm-svn: 76592
2009-07-21 17:37:35 +00:00
Chris Lattner
0f65fbf095 Rename LessPrivateGlobalPrefix -> LinkerPrivateGlobalPrefix to match the
LLVM IR concept.

llvm-svn: 76590
2009-07-21 17:30:51 +00:00
Chris Lattner
61fcb8d26b fix indentation
llvm-svn: 76587
2009-07-21 17:25:13 +00:00
Chris Lattner
31a9d57bb9 remove an unneeded override.
llvm-svn: 76586
2009-07-21 17:23:41 +00:00
Chris Lattner
2c8fed2c75 more random whitespace cleanup, eliminate #define, avoid copying
vectors needlessly, doxygenify comments, improve constness, etc.

llvm-svn: 76585
2009-07-21 17:20:18 +00:00
Chris Lattner
99a474f026 some simple whitespace cleanup, avoid copying vectors for no reason
as much, etc.

llvm-svn: 76578
2009-07-21 16:44:47 +00:00
Evan Cheng
c142755cec Another rewriter bug exposed by recent coalescer changes. ReuseInfo::GetRegForReload() should make sure the "switched" register is in the desired register class. I'm surprised this hasn't caused more failures in the past.
llvm-svn: 76558
2009-07-21 09:15:00 +00:00
Daniel Dunbar
3447c5ce67 Add missing include.
llvm-svn: 76555
2009-07-21 08:58:44 +00:00
Daniel Dunbar
6f594a00b0 Switch this API to StringRef.
llvm-svn: 76554
2009-07-21 08:57:31 +00:00
Daniel Dunbar
a0a76c174b Simplify / normalize some uses of Value::getName.
llvm-svn: 76553
2009-07-21 08:54:24 +00:00
Daniel Dunbar
1edc7a0eab Remove some unused code.
llvm-svn: 76541
2009-07-21 07:08:59 +00:00
Bruno Cardoso Lopes
2015382398 Support adding relocations for data sections, handling the cases where
global declared symbols are initialized with references from other global
symbols.

llvm-svn: 76540
2009-07-21 06:51:32 +00:00
Evan Cheng
d76397061a Add jumps with 8-bit relocation for assembler / disassembler. Patch by Sean Callanan.
llvm-svn: 76536
2009-07-21 06:00:18 +00:00
Evan Cheng
0cf19155ef Fix a dagga combiner bug: avoid creating illegal constant.
Is this really a winning transformation?
fold (shl (srl x, c1), c2) -> (shl (and x, (shl -1, c1)), (sub c2, c1)) or                                                                              
                              (srl (and x, (shl -1, c1)), (sub c1, c2))

llvm-svn: 76535
2009-07-21 05:40:15 +00:00
Owen Anderson
b64eef73cf Move a bit more state over to the LLVMContext.
llvm-svn: 76533
2009-07-21 02:47:59 +00:00
Bill Wendling
50e5f4884a Add the following functions:
- SYSCALL (normal fast system call instruction) [0f 05]
- SYSENTER (system call entry instruction) [0f 34]
- SYSEXIT (system call exit instruction) [0f 35]
- SYSEXIT64 (system call exit instruction to 64-bit user code) [REX.W 0f 35]
- SYSRET (system call return instruction) [0f 07]

Patch by Sean Callanan.

llvm-svn: 76528
2009-07-21 01:07:24 +00:00
Dan Gohman
00fa00fec8 Make the range calculations for addrecs to be more conservative,
as they aren't currently prepared to handle complicated overflow
cases.

llvm-svn: 76524
2009-07-21 00:42:47 +00:00
Dan Gohman
4100aea6ad Whitespace cleanups.
llvm-svn: 76523
2009-07-21 00:38:55 +00:00
Dan Gohman
a37a433693 Minor code simplification.
llvm-svn: 76521
2009-07-21 00:37:45 +00:00
Evan Cheng
949c2404a2 Fix ARM isle code that optimize multiply by constants which are power-of-2 +/- 1.
llvm-svn: 76520
2009-07-21 00:31:12 +00:00
Evan Cheng
443ae1d494 Cross RC coalescing is now on by default.
llvm-svn: 76519
2009-07-21 00:22:59 +00:00
Dale Johannesen
8b0ece80d9 revert 76503 while I figure out what's going on
llvm-svn: 76517
2009-07-21 00:12:29 +00:00
Dan Gohman
47100f32c0 Add a comment to clarify why there isn't any code in this spot.
llvm-svn: 76505
2009-07-20 23:54:43 +00:00
Dan Gohman
857ccb8149 Remove the code that tried to evaluate whether (A pred B) is known
by determining if (B pred (B-A)) is known, as it doesn't handle
overflow correctly.

llvm-svn: 76504
2009-07-20 23:53:35 +00:00
Dale Johannesen
ee3f2d6dc3 Make sure a global matching asm 'i' constraint gets its
flags set properly.  (hasMemory is clearly irrelevant
when matching 'i', I don't understand what this was
supposed to be doing.)
gcc.apple/asm-block-25.c (test passed before by
accident, but generated code was wrong)

llvm-svn: 76503
2009-07-20 23:39:13 +00:00
Dale Johannesen
04c5ef4742 Move stripping of bitcasts in inline asm arguments
to a place where it affects everything.  Occurs
only on calls AFAIK.

llvm-svn: 76502
2009-07-20 23:27:39 +00:00
Dan Gohman
b92b14f20b Minor code simplification.
llvm-svn: 76496
2009-07-20 22:41:51 +00:00
Dan Gohman
74a435e9f1 The upper argument of ConstantRange is exclusive, not inclusive.
llvm-svn: 76492
2009-07-20 22:34:18 +00:00
Chris Lattner
27a2e74e58 clean up some formatting, indent by 2 instead of 4.
llvm-svn: 76490
2009-07-20 22:23:48 +00:00
David Goodwin
c5ee8fbaa7 CMP and TST define CPSR, not use it.
llvm-svn: 76489
2009-07-20 22:13:31 +00:00
David Greene
1ac6d4ac0e Re-apply 75490, 75806 and 76177 with fixes and tests. Efficiency comes
next.

llvm-svn: 76486
2009-07-20 22:02:59 +00:00
Bill Wendling
ca94e95735 Simplify the code in DarwinTargetAsmInfo::emitUsedDirectiveFor so that humans can understand it.
llvm-svn: 76480
2009-07-20 21:38:26 +00:00
Bill Wendling
16a69eeaeb Pass in the unfortunately named "LessPrivatePrefix" for the
"LinkerPrivatePrefix". It seems to have been used in only one place before I
started this "linker_private" business. I'm thinking that a rename is in
order...

llvm-svn: 76479
2009-07-20 21:30:28 +00:00
Dan Gohman
d2ad3e183b Assembly and Bitcode support for unsigned/signed overflow flags and
exact sdiv flags.

llvm-svn: 76475
2009-07-20 21:19:07 +00:00
Evan Cheng
2bac9b0d83 Use TII->findCommutedOpIndices to find the commute operands (rather than guessing).
llvm-svn: 76472
2009-07-20 21:16:08 +00:00
Bill Wendling
ad2cf8c030 Change the casting of linkage types into a map. This makes this much more robust
as it no longer depends upon two different enums being kept in sync with each
other.

llvm-svn: 76465
2009-07-20 20:34:46 +00:00
Kevin Enderby
f1c0daa6a7 Removed the DumpSymbolsandMacros and LoadSymbolsandMacros MCStreamer API as
the parsing of the .dump and .load should be done in the assembly parser and
not have any need for an MCStreamer API.  Changed the code for now so these
just produce an error saying these specific directives are not yet implemented
since they are likely no longer used and may never need to be implemented.

llvm-svn: 76462
2009-07-20 20:25:37 +00:00
Daniel Dunbar
2e4aeceacd Add MCAsmLexer interface.
- This provides the AsmLexer interface to the target specific assembly parsers.

llvm-svn: 76460
2009-07-20 20:01:54 +00:00
Evan Cheng
0048e876c3 Fix some sub-reg coalescing bugs where the coalescer wasn't updating the resulting interval's register class.
llvm-svn: 76458
2009-07-20 19:47:55 +00:00
Bill Wendling
0407ebb4f7 Rename Mangler linkage enums to something less gross.
llvm-svn: 76456
2009-07-20 19:41:27 +00:00
Devang Patel
25ea06491e Refactor metadata parsing routines into separate functions.
llvm-svn: 76455
2009-07-20 19:00:08 +00:00
Daniel Dunbar
fca75cd98e Add MCAsmParser interface.
- This provides the AsmParser interface to the target specific assembly
   parsers.

llvm-svn: 76453
2009-07-20 18:55:04 +00:00
Chris Lattner
1f82d9a94c remove TargetAsmInfo::ExpandInlineAsm
llvm-svn: 76445
2009-07-20 17:59:32 +00:00
Chris Lattner
31022c9412 use ExpandInlineAsm on TargetLowering instead of TargetAsmInfo.
llvm-svn: 76442
2009-07-20 17:52:52 +00:00
Chris Lattner
72b24cbbf6 Copy ExpandInlineAsm to TargetLowering from TargetAsmInfo.
llvm-svn: 76441
2009-07-20 17:51:36 +00:00
Dan Gohman
721e006395 Update this comment.
llvm-svn: 76438
2009-07-20 17:44:17 +00:00
Dan Gohman
00b05492f1 Revert the addition of hasNoPointerOverflow to GEPOperator.
Getelementptrs that are defined to wrap are virtually useless to
optimization, and getelementptrs that are undefined on any kind
of overflow are too restrictive -- it's difficult to ensure that
all intermediate addresses are within bounds. I'm going to take
a different approach.

Remove a few optimizations that depended on this flag.

llvm-svn: 76437
2009-07-20 17:43:30 +00:00
Chris Lattner
19134c0748 rename TargetAsmInfo::getASDirective -> getDataASDirective
llvm-svn: 76431
2009-07-20 17:12:46 +00:00
David Greene
5144b046cc Hide the DOUT static variable behind a function interface.
llvm-svn: 76425
2009-07-20 16:16:06 +00:00
David Goodwin
d5865e6c60 Use t2LDRri12 for frame index loads.
llvm-svn: 76424
2009-07-20 15:55:39 +00:00
Bruno Cardoso Lopes
b47b093de2 For PC relative relocations where symbols are defined in the same section they
are referenced, ignore the relocation entry and patch the relocatable field with
the computed symbol offset directly

llvm-svn: 76414
2009-07-20 08:52:02 +00:00
Evan Cheng
2125e12632 Fix PR4567. Thumb1 target was using the wrong instruction to handle sp = sub fp, #c.
llvm-svn: 76401
2009-07-20 06:59:32 +00:00
Chris Lattner
eac40b1473 implement a new magic global "llvm.compiler.used" which is like llvm.used, but
doesn't cause ".no_dead_strip" to be emitted on darwin.

llvm-svn: 76399
2009-07-20 06:14:25 +00:00
Chris Lattner
cbd8366755 use stripPointerCasts to simplify some code.
llvm-svn: 76397
2009-07-20 06:05:50 +00:00
Evan Cheng
2f6b299d6f Model fpscr to prevent fcmped / fcmpezs etc from being deleted.
llvm-svn: 76390
2009-07-20 02:12:31 +00:00
Bill Wendling
1a10a060cb Add plumbing for the `linker_private' linkage type. This type is meant for
"private" symbols which the assember shouldn't strip, but which the linker may
remove after evaluation. This is mostly useful for Objective-C metadata.

This is plumbing, so we don't have a use of it yet. More to come, etc.

llvm-svn: 76385
2009-07-20 01:03:30 +00:00
Daniel Dunbar
e1a18819f7 CMake support for SystemZ.
llvm-svn: 76384
2009-07-20 00:24:17 +00:00
Eli Friedman
5208843938 Don't override LowerArguments in the SPARC backend. In addition to
being more consistent with other backends, this makes the SPARC backend 
deal with functions with arguments with illegal types correctly, which 
fixes some tests in test/CodeGen/Generic.

llvm-svn: 76375
2009-07-19 19:53:46 +00:00
Evan Cheng
fd384e9493 Fix a regression from 76124. Thumb1 instructions default to S bit being true.
llvm-svn: 76374
2009-07-19 19:16:46 +00:00
Jakob Stoklund Olesen
96f9a917c8 Fix http://llvm.org/bugs/show_bug.cgi?id=4583
Inline asm instructions may have additional <imp-def,kill> register operands.
These operands are not marked with a flag like the normal asm operands, so we
must not assert that there is a flag.

llvm-svn: 76373
2009-07-19 19:09:59 +00:00
Nick Lewycky
3b459607de Fix ConstantRange::unionWith. Also make it work a little hard in some cases to
return the smallest union of two ranges instead of just any range that happens
to contain the union.

llvm-svn: 76360
2009-07-19 03:44:35 +00:00
Daniel Dunbar
8be4e61a2d Fix some minor MSVC compiler warnings.
llvm-svn: 76356
2009-07-19 01:38:38 +00:00