Commit Graph

30931 Commits

Author SHA1 Message Date
Ted Kremenek
79bb5ad24f Update CMake files.
llvm-svn: 78020
2009-08-03 23:44:01 +00:00
Chris Lattner
628047fd32 eliminate CurrentSection, rename CurrentSection_ -> CurrentSection, make it private,
eliminate IsInTextSection.

llvm-svn: 78017
2009-08-03 23:20:21 +00:00
Chris Lattner
b8fdfbce0a Kill off SwitchToDataSection and SwitchToTextSection, woo.
llvm-svn: 78015
2009-08-03 23:10:34 +00:00
Chris Lattner
263c65d0a2 remove an unneeded section switch.
llvm-svn: 78014
2009-08-03 23:02:45 +00:00
Chris Lattner
53ca934380 switch ppc to using SwitchToSection instead of textual section stuff.
llvm-svn: 78013
2009-08-03 22:52:21 +00:00
Devang Patel
b7c719fbcf Keep track of metadata used by other metadata.
llvm-svn: 78012
2009-08-03 22:51:10 +00:00
Chris Lattner
5247ac71e5 use TLOF to compute the section for a function instead of
replicating the logic manually.

llvm-svn: 78011
2009-08-03 22:32:50 +00:00
Chris Lattner
7d2dd6deac convert macho stub emission to use SwitchToSection instead of
textual sections.

llvm-svn: 78007
2009-08-03 22:18:15 +00:00
Chris Lattner
13b1068b81 hoist some common code out of a switch
llvm-svn: 78006
2009-08-03 22:16:57 +00:00
Dan Gohman
39f93f6443 Add a new Constant::getIntegerValue helper function, and convert a
few places in InstCombine to use it, to fix problems handling pointer
types. This fixes the recent llvm-gcc bootstrap error.

llvm-svn: 78005
2009-08-03 22:07:33 +00:00
Chris Lattner
0c9cdb6a5c this really shouldn't switch sections without telling the asmprinter, but
hey it uses .previous, so it should work :)

llvm-svn: 78004
2009-08-03 21:57:00 +00:00
David Greene
070216fa44 Re-apply LiveInterval index dumping patch, with fixes suggested by Bill
and others.

llvm-svn: 78003
2009-08-03 21:55:09 +00:00
Chris Lattner
505d63fc7f Eliminate textual section switching from the x86 backend, one
more step towards "semantics sections"

llvm-svn: 78002
2009-08-03 21:53:27 +00:00
Bob Wilson
eb3b616a7e Lower CONCAT_VECTOR during legalization instead of matching it during isel.
Add a testcase.

llvm-svn: 77992
2009-08-03 20:36:38 +00:00
Jakob Stoklund Olesen
1b274fd5f0 Fix Bug 4657: register scavenger asserts with subreg lowering
When LowerSubregsInstructionPass::LowerInsert eliminates an INSERT_SUBREG
instriction because it is an identity copy, make sure that the same registers
are alive before and after the elimination.

When the super-register is marked <undef> this requires inserting an
IMPLICIT_DEF instruction to make sure the super register is live.

Fix a related bug where a kill flag on the inserted sub-register was not transferred properly.

Finally, clear the undef flag in MachineInstr::addRegisterKilled. Undef implies dead and kill implies live, so they cant both be valid.

llvm-svn: 77989
2009-08-03 20:08:18 +00:00
Jakob Stoklund Olesen
74b57506dc Minor stylistic cleanups in the Blackfin target.
Thanks Chris.

llvm-svn: 77987
2009-08-03 19:32:30 +00:00
Eli Friedman
af54b9b643 Make SimplifyDemandedUseBits generate vector constants where
appropriate.  Patch per report on llvmdev.  No testcase because the 
original report didn't come with a testcase, and I can't come up with a case
that actually fails.

llvm-svn: 77986
2009-08-03 19:15:42 +00:00
Chris Lattner
a5a1e7b4ed make getObjFileLowering() return a non-const reference.
llvm-svn: 77984
2009-08-03 19:12:26 +00:00
Chris Lattner
e6cb9d1888 remove a dead switch directive, replace it with some
code that I will be using shortly.

llvm-svn: 77983
2009-08-03 19:10:44 +00:00
Bob Wilson
4679285140 Revert 77974. It breaks 3 of the ARM tests.
llvm-svn: 77982
2009-08-03 19:06:29 +00:00
Evan Cheng
d918955fcb Remove neverHasSideEffects on MMX_MOVD64rrv164 since it has a matching pattern.
llvm-svn: 77978
2009-08-03 18:07:19 +00:00
Chris Lattner
e84a0a07a6 eliminate textual section switching from intel asm printer.
This will cause it to enter the ".text" section instead of "_text"
but masm is already broken.

llvm-svn: 77977
2009-08-03 18:06:07 +00:00
Chris Lattner
10f736e467 make SwitchToSection accept null sections for now.
llvm-svn: 77976
2009-08-03 18:04:42 +00:00
Daniel Dunbar
21c4f86d86 Change C, CBE, MSIL to not provide target data via getTargetData().
- The theory is these should never actually be called, since these boil down to
   passes which can access the target data via the standard mechanism.

llvm-svn: 77975
2009-08-03 17:40:25 +00:00
Sanjiv Gupta
ccb9df59bf Allow targets to custom handle softening of results or operands before trying the standard stuff.
llvm-svn: 77974
2009-08-03 17:35:21 +00:00
Benjamin Kramer
7869bad67e llvm_report_error already prints "LLVM ERROR:". So stop reporting errors like "LLVM ERROR: llvm: error:" or "LLVM ERROR: ERROR:".
llvm-svn: 77971
2009-08-03 13:33:33 +00:00
Anton Korobeynikov
7c400c9da8 Unbreak win64 compilation callback.
Since we're generating stubs by hands we don't follow the ABI and don't
create a register spill area.
Don't use this area in compilation callback!

llvm-svn: 77968
2009-08-03 08:43:36 +00:00
Evan Cheng
ff81990e49 Fix a coaelescer bug. If a copy val# is extended to eliminate a non-trivially coalesced copy, and the copy kills its source register. Trim the source register's live range to the last use if possible. This fixes up kill marker to make the scavenger happy.
llvm-svn: 77967
2009-08-03 08:41:59 +00:00
Anton Korobeynikov
e999b85229 Create proper frame index for FP
llvm-svn: 77966
2009-08-03 08:14:30 +00:00
Anton Korobeynikov
b33dbbe7fd Perform bitconvert to proper type
llvm-svn: 77965
2009-08-03 08:14:14 +00:00
Anton Korobeynikov
3a8e354d47 Add 'Indirect' LocInfo class and use to pass __m128 on win64. Also minore fixes here and there (mostly __m64).
llvm-svn: 77964
2009-08-03 08:13:56 +00:00
Anton Korobeynikov
00018fb248 Cleanup Darwin MMX calling conv stuff - make the stuff more generic. This also fixes a subtle bug, when 6th v1i64 argument passed wrongly.
llvm-svn: 77963
2009-08-03 08:13:24 +00:00
Anton Korobeynikov
0bac80c138 Unbreak Win64 CC. Step one: honour register save area, fix some alignment and provide a different set of call-clobberred registers.
llvm-svn: 77962
2009-08-03 08:12:53 +00:00
Devang Patel
b770039c5b Add NamedMDNode destructor.
llvm-svn: 77959
2009-08-03 06:19:01 +00:00
Rafael Espindola
14781bacfe Use movd instead of movq
llvm-svn: 77956
2009-08-03 05:21:05 +00:00
Daniel Dunbar
c5047d9d96 Fix a race condition in getting the process exit code on Win32.
llvm-svn: 77953
2009-08-03 05:02:46 +00:00
Daniel Dunbar
2781e4bd89 Remove now unused arguments from TargetRegistry::lookupTarget.
llvm-svn: 77950
2009-08-03 04:20:57 +00:00
Evan Cheng
600312b878 These are done.
llvm-svn: 77949
2009-08-03 04:08:36 +00:00
Daniel Dunbar
775da1948b Pass target triple string in to TargetMachine constructor.
This is not just a matter of passing in the target triple from the module;
currently backends are making decisions based on the build and host
architecture. The goal is to migrate to making these decisions based off of the
triple (in conjunction with the feature string). Thus most clients pass in the
target triple, or the host triple if that is empty.

This has one important change in the way behavior of the JIT and llc.

For the JIT, it was previously selecting the Target based on the host
(naturally), but it was setting the target machine features based on the triple
from the module. Now it is setting the target machine features based on the
triple of the host.

For LLC, -march was previously only used to select the target, the target
machine features were initialized from the module's triple (which may have been
empty). Now the target triple is taken from the module, or the host's triple is
used if that is empty. Then the triple is adjusted to match -march.

The take away is that -march for llc is now used in conjunction with the host
triple to initialize the subtarget. If users want more deterministic behavior
from llc, they should use -mtriple, or set the triple in the input module.

llvm-svn: 77946
2009-08-03 04:03:51 +00:00
Rafael Espindola
ad3bba6ce2 Fix the instruction encoding.
llvm-svn: 77944
2009-08-03 03:27:05 +00:00
Rafael Espindola
08c8a9e6d5 Remove a bitcast that was a no-op.
Thanks to Eli Friedman for noticing it.

llvm-svn: 77942
2009-08-03 03:00:05 +00:00
Rafael Espindola
daefe7aa54 Use movq to move 64 bits in and out of mmx registers.
Fixes PR4669

llvm-svn: 77940
2009-08-03 02:45:34 +00:00
Evan Cheng
27ee95d344 Use the i12 variant of load / store opcodes if offset is zero. Now we pass all of multisource as well.
llvm-svn: 77939
2009-08-03 02:38:06 +00:00
Eli Friedman
c277c8fe13 Remove -disable-mips-abicall and -enable-mips-absolute-call command-line
options, which don't appear to be useful.  -enable-mips-absolute-call is
completely unused (and unless I'm mistaken, is supposed to have the 
same effect that -relocation-model=dynamic-no-pic should have), 
and -disable-mips-abicall appears to be effectively a 
synonym for -relocation-model=static. Adjust the few users of hasABICall
to checks which seem more appropriate.  Update MipsSubtarget, 
MipsTargetMachine, and MipselTargetMachine to synchronize with recent 
changes.

llvm-svn: 77938
2009-08-03 02:22:28 +00:00
Andreas Bolka
6fc741e683 Restrict LDA to affine subscripts.
llvm-svn: 77932
2009-08-03 01:03:48 +00:00
Daniel Dunbar
9bbadad09d Fix some comments referring to std::cerr.
llvm-svn: 77931
2009-08-03 01:02:24 +00:00
Bill Wendling
b8e74aab37 - s/DOUT/DEBUG(errs()/g
- Tidy up some headers.

llvm-svn: 77929
2009-08-03 00:11:34 +00:00
Daniel Dunbar
9e079eec0c Move most targets TargetMachine constructor to only taking a target triple.
- The C, C++, MSIL, and Mips backends still need the module.

llvm-svn: 77927
2009-08-02 23:37:13 +00:00
Richard Osborne
179bf3bdc2 Add extra SEXT pattern.
llvm-svn: 77920
2009-08-02 22:45:24 +00:00
Bill Wendling
9f0ff01861 The x86 jit doesn't generate a def_cfa_offset unwind instruction after the
pushes in the function prolog if the function doesn't have any stack space,
i.e. for a prolog like:

0x40011870:     push %r15
0x40011872:     push %r14
0x40011874:     push %rbx

Patch by Zoltan!

llvm-svn: 77919
2009-08-02 22:25:37 +00:00
Daniel Dunbar
0b82c938fe Normalize Subtarget constructors to take a target triple string instead of
Module*.

Also, dropped uses of TargetMachine where unnecessary. The only target which
still takes a TargetMachine& is Mips, I would appreciate it if someone would
normalize this to match other targets.

llvm-svn: 77918
2009-08-02 22:11:08 +00:00
Jakob Stoklund Olesen
0f9cf8a32b Remove unneeded intrinsics from Blackfin backend.
__builtin_bfin_ones does the same as ctpop, so it can be implemented in the front-end.

__builtin_bfin_loadbytes loads from an unaligned pointer with the disalignexcpt instruction. It does the same as loading from a pointer with the low bits masked. It is better if the front-end creates a masked load. We can always instruction select the masked to disalignexcpt+load.

We keep csync/ssync/idle. These intrinsics represent instructions that need workarounds for some silicon revisions. We may even want to convert inline assembler to intrinsics to enable the workarounds.

llvm-svn: 77917
2009-08-02 21:49:05 +00:00
Nick Lewycky
c85cff5067 Fix the build for people with oprofile installed.
llvm-svn: 77914
2009-08-02 20:51:44 +00:00
Daniel Dunbar
70cf813a05 Empty arguments need to be quoted on Win32.
llvm-svn: 77913
2009-08-02 20:41:09 +00:00
Jakob Stoklund Olesen
9e71890531 Fix issue in regscavenger when scavenging a callee-saved register that has not been spilled.
llvm-svn: 77912
2009-08-02 20:29:41 +00:00
Edward O'Callaghan
db24e89295 One two many newlines at end of file LLVMContextImpl.cpp
llvm-svn: 77911
2009-08-02 20:06:26 +00:00
Edward O'Callaghan
51bfa293c8 Fix no newline at end of LLVMContextImpl.cpp
llvm-svn: 77907
2009-08-02 19:38:12 +00:00
Jakob Stoklund Olesen
fe8f36d66b Never add a kill flag to a constrained physical register in a two-addr instruction.
llvm-svn: 77906
2009-08-02 19:13:03 +00:00
Jakob Stoklund Olesen
a726715be6 Scavenger asserts.
Allow imp-def and imp-use of anything in the scavenger asserts, just like the machine code verifier.
Allow redefinition of a sub-register of a live register.

llvm-svn: 77904
2009-08-02 18:28:41 +00:00
Jakob Stoklund Olesen
23ad8d1848 Add some basic blackfin intrinsics.
llvm-svn: 77903
2009-08-02 18:28:11 +00:00
Jakob Stoklund Olesen
4e31b23a32 Add support for CPU features (i.e., bugs) and workarounds.
This is just the framework to identify the needed workarounds. They are not actually implemented.

llvm-svn: 77902
2009-08-02 18:27:36 +00:00
Jakob Stoklund Olesen
5c6e03f669 Inline assembly support for Blackfin.
We use the same constraints as GCC, including those that are slightly insane for inline assembler.

llvm-svn: 77899
2009-08-02 17:39:17 +00:00
Jakob Stoklund Olesen
e7eb74ef39 Analog Devices Blackfin back-end.
Generate code for the Blackfin family of DSPs from Analog Devices:

  http://www.analog.com/en/embedded-processing-dsp/blackfin/processors/index.html
  
We aim to be compatible with the exsisting GNU toolchain found at:

  http://blackfin.uclinux.org/gf/project/toolchain
  
The back-end is experimental.

llvm-svn: 77897
2009-08-02 17:32:10 +00:00
Dan Gohman
a203a80c24 Avoid forming a SELECT_CC in a type that the target doesn't
support. This isn't immediately interesting, because Legalize
ends up lowering SELECT_CC if the target doesn't support it,
but this simplifies the process.

Also, if the SELECT_CC would be expanded in Legalize, it
can potentially end up with two copies of the condition
expression. By leaving it as SELECT+SETCC, the SELECT can be
expanded into two SELECTs that use a single SETCC.

The two comparisons are usually CSE'd, but depending on
when various expressions get legalized, the comparison
expression could involve calls to library functions, such
that the comparison expression may not be able to be CSE'd.
This will be needed by a future patch.

llvm-svn: 77896
2009-08-02 16:19:38 +00:00
Dan Gohman
481da8a541 Fix indentation.
llvm-svn: 77895
2009-08-02 16:10:52 +00:00
Dan Gohman
751baf25e9 Add a comment.
llvm-svn: 77894
2009-08-02 16:10:01 +00:00
Dan Gohman
d36cbd0574 Resync lea32addr and lea64addr.
llvm-svn: 77893
2009-08-02 16:09:17 +00:00
Benjamin Kramer
c2015778ee Remove duplicated colons and spaces.
llvm-svn: 77892
2009-08-02 12:13:02 +00:00
Jakob Stoklund Olesen
8a9d6812a5 Handle <undef> flag in machine code verifier.
Use of an <undef> register is treated like an <imp-use>. It is not an error to use a dead <undef> register.

llvm-svn: 77890
2009-08-02 07:38:21 +00:00
Chris Lattner
738a9ba448 move dwarf debug info section selection stuff from TAI to
TLOF, unifying all the dwarf targets at the same time.

llvm-svn: 77889
2009-08-02 07:24:22 +00:00
Chris Lattner
6f4a366e35 convert EHFrameSection to be managed by TLOF instead of TAI.
llvm-svn: 77888
2009-08-02 06:52:36 +00:00
Chris Lattner
21eb874b6c I need Triple information, 10.6 shouldn't set this, it bloats
object files.

llvm-svn: 77887
2009-08-02 06:51:58 +00:00
Chris Lattner
bbe55a038a ARM TAI no longer needs a TM, but createTargetAsmInfo() still does.
llvm-svn: 77878
2009-08-02 05:23:52 +00:00
Chris Lattner
c388490738 Move the getInlineAsmLength virtual method from TAI to TII, where
the only real caller (GetFunctionSizeInBytes) uses it.

The custom ARM implementation of this is basically reimplementing
an assembler poorly for negligible gain.  It should be removed 
IMNSHO, but I'll leave that to ARMish folks to decide.

llvm-svn: 77877
2009-08-02 05:20:37 +00:00
Chris Lattner
7228c69cb7 move a virtual method body to its .cpp file to avoid a #include
in a header.

llvm-svn: 77874
2009-08-02 04:58:19 +00:00
Chris Lattner
5ee7fa1d02 turn some templated inline functions into static functions.
llvm-svn: 77873
2009-08-02 04:52:00 +00:00
Chris Lattner
91f3b3141a alpha TAI doesn't need TM.
llvm-svn: 77872
2009-08-02 04:46:05 +00:00
Chris Lattner
a871d5d718 MSP430 TAI doesn't need TM.
llvm-svn: 77871
2009-08-02 04:45:22 +00:00
Chris Lattner
41507baf91 simplify SPULinuxTargetAsmInfo, remove use of TM.
llvm-svn: 77869
2009-08-02 04:44:33 +00:00
Chris Lattner
00be9d038e xcore TAI doesn't need TM.
llvm-svn: 77868
2009-08-02 04:42:09 +00:00
Chris Lattner
347434dfea PIC16 TAI doesn't need TM
llvm-svn: 77867
2009-08-02 04:41:14 +00:00
Chris Lattner
f13912f657 remove the dead ELFTargetAsmInfo.h/cpp file. TargetAsmInfo
defaults to being ELF.

llvm-svn: 77866
2009-08-02 04:33:09 +00:00
Chris Lattner
c2297e1bc1 eliminate the TM argument to the TAI class, remove comment about supporting
solaris :)

llvm-svn: 77865
2009-08-02 04:32:07 +00:00
Chris Lattner
65a4fca21d eliminate TargetMAchine argument to sparc TAI
llvm-svn: 77864
2009-08-02 04:30:59 +00:00
Chris Lattner
b5ceb50677 remove TargetAsmInfo::TM, which is now dead. The basic TAI class now
no longer depends on TM!

llvm-svn: 77863
2009-08-02 04:27:24 +00:00
Chris Lattner
e0c440fd9f remove the x86/ppc impls of getEHGlobalPrefix, which is already dead.
llvm-svn: 77861
2009-08-02 04:13:22 +00:00
Daniel Dunbar
0dfedac203 Add missing flush().
llvm-svn: 77859
2009-08-02 04:12:28 +00:00
Chris Lattner
fc452eb48b clean up #includes of TargetAsmInfo.cpp
llvm-svn: 77858
2009-08-02 04:09:22 +00:00
Chris Lattner
d2477587b9 remove the dead PreferredEHDataFormat TAI hook: its now dead
even considering #if 0 code.

llvm-svn: 77856
2009-08-02 04:02:52 +00:00
Chris Lattner
adebb48d1a Fix some fixme's in #if 0'd code by making it dependent on the structural
behavior of the LSDA section instead of on some random target hook that
needs to be kept in synch with other points of truth.

llvm-svn: 77855
2009-08-02 03:59:56 +00:00
Chris Lattner
1c44a63eba move getDwarfExceptionSection from TAI to TLOF and rename it to
getLSDASection() to be more specific.  This makes it pretty obvious
that the ELF LSDA section is being specified wrong in PIC mode.  We're
probably getting a lot of startup-time relocations to a readonly page,
which is expensive and bad.

Someone who cares about ELF C++ should investigate this.

llvm-svn: 77847
2009-08-02 01:34:32 +00:00
Daniel Dunbar
59c4432b7f Fix a possible crash on delete of an uninitialized variable.
llvm-svn: 77846
2009-08-02 01:25:15 +00:00
Dan Gohman
15699ece5b Don't call SectionForGlobal for hasAvailableExternallyLinkage()
variables either.

llvm-svn: 77844
2009-08-02 01:18:44 +00:00
Chris Lattner
18e3729e50 don't call SectionForGlobal on declarations, you can't tell the section a
declaration will end up in.

llvm-svn: 77843
2009-08-02 01:02:43 +00:00
Chris Lattner
06d8ca1f56 convert ctors/dtors section to be in TLOF instead of
TAI.

llvm-svn: 77842
2009-08-02 00:34:36 +00:00
Chris Lattner
e5e68589da don't override the default of this, the only difference is \t instead of ' '.
llvm-svn: 77838
2009-08-02 00:12:20 +00:00
Daniel Dunbar
8a0b05b396 Change MCOperand to use Create style instead of Make style for constructing
operands.

llvm-svn: 77837
2009-08-02 00:09:22 +00:00
Chris Lattner
506b49ffa0 Make SectionKind::get() private.
llvm-svn: 77835
2009-08-02 00:02:44 +00:00
Chris Lattner
05334af883 (re)introduce new simpler apis for creation sectionkinds.
llvm-svn: 77834
2009-08-01 23:57:16 +00:00
Chris Lattner
81229d1bed Remove "JumpTableDataSection" from TAI, instead, have AsmPrinter
compute it based on what it knows.  As part of this, rename getSectionForMergeableConstant
to getSectionForConstant because it works for non-mergable constants also.

The only functionality change from this is that Xcore will start dropping
its jump tables into readonly section instead of data section in -static mode.
This should be fine as the linker resolves the relocations.  If this is a
problem, let me know and we'll come up with another solution.

llvm-svn: 77833
2009-08-01 23:46:12 +00:00
Chris Lattner
8120a93944 give alpha its readonly section. This optimizes alpha, and prevents a
testsuite regression with a coming patch.

llvm-svn: 77832
2009-08-01 23:44:04 +00:00
Chris Lattner
e3d23ea562 .rdata == .rodata on mips.
llvm-svn: 77827
2009-08-01 23:07:29 +00:00
Chris Lattner
52229980ff no need to override the default with the default.
llvm-svn: 77826
2009-08-01 23:05:25 +00:00
Chris Lattner
190b319c4c eXtensible Systems doesn't exist any more and Reid donated this to the
project under the normal license, yay. :)

llvm-svn: 77823
2009-08-01 22:54:17 +00:00
Chris Lattner
82b6045b0b loweringinfo is always non-null.
llvm-svn: 77821
2009-08-01 22:48:40 +00:00
Chris Lattner
4cbb1c0c3f REmove dead fields of TAI.
llvm-svn: 77820
2009-08-01 22:40:22 +00:00
Chris Lattner
e1cc2c27b3 fix a problem Eli noticed where we would compile the attached ptrtoint
to:

.quad X

even on a 32-bit system, where X is not 64-bits.  There isn't much that
we can do here, so we just print:

.quad	((X) & 4294967295)

instead.

llvm-svn: 77818
2009-08-01 22:25:12 +00:00
Chris Lattner
49daade398 update for rename
llvm-svn: 77817
2009-08-01 22:06:53 +00:00
Chris Lattner
0106f7031b fix a fixme by sinking various target-specific directives down into
the appropriate subclasses.

llvm-svn: 77815
2009-08-01 21:56:13 +00:00
Chris Lattner
ac27c8c8d3 coff also doesn't have a ReadOnlySection yet, (!)
llvm-svn: 77814
2009-08-01 21:49:24 +00:00
Chris Lattner
d0f608200c coff doesn't set a .bss seciton, so this is dead.
llvm-svn: 77813
2009-08-01 21:48:25 +00:00
Chris Lattner
2a9d51b703 it turns out that isWeak() was basically dead anyway. Kill off SectionInfo :-/
llvm-svn: 77812
2009-08-01 21:46:23 +00:00
Chris Lattner
cbc6752ac5 don't use isWeak anymore.
llvm-svn: 77810
2009-08-01 21:42:58 +00:00
Dan Gohman
8961d1aaa3 Fix typos in comments.
llvm-svn: 77806
2009-08-01 21:25:00 +00:00
Chris Lattner
79e9585304 Change SectionKind to be a property that is true of a *section*, it
should have no state that is specific to particular globals in the
section.  In this case, it means the removal of the "isWeak" and
"ExplicitSection" bits.  MCSection uses the new form of SectionKind.

To handle isWeak, I introduced a new SectionInfo class, which is
SectionKind + isWeak, and it is used by the part of the code generator
that does classification of a specific global.

The ExplicitSection disappears.  It is moved onto MCSection as a new
"IsDirective" bit.  Since the Name of a section is either a section
or directive, it makes sense to keep this bit in MCSection.  Ultimately
the creator of MCSection should canonicalize (e.g.) .text to whatever
the actual section is.

llvm-svn: 77803
2009-08-01 21:11:14 +00:00
Dan Gohman
abd57d8aec Minor code cleanups.
llvm-svn: 77795
2009-08-01 19:14:37 +00:00
Dan Gohman
bc9ad85a84 Print the target flags as an int instead of a char, as they aren't
actually characters.

llvm-svn: 77794
2009-08-01 19:13:38 +00:00
Nick Lewycky
9dccd7a872 Add newline at end of file to remove gcc warning.
llvm-svn: 77791
2009-08-01 19:09:44 +00:00
Chris Lattner
04ae6629fe All MCSections are now required to have a SectionKind.
llvm-svn: 77787
2009-08-01 18:25:49 +00:00
Evan Cheng
b9b4b9aa15 Workaround a couple of Darwin assembler bugs.
llvm-svn: 77781
2009-08-01 06:13:52 +00:00
Dan Gohman
74b8f449e7 Give MachineFunctionAnalysis a destructor so it can verify that
that it released its allocated memory.

llvm-svn: 77775
2009-08-01 04:19:43 +00:00
Dan Gohman
7ca77f37db Delete a redundant variable.
llvm-svn: 77774
2009-08-01 04:18:29 +00:00
Dan Gohman
c0b1c0e18d Minor code simplifications.
llvm-svn: 77769
2009-08-01 03:51:09 +00:00
Dan Gohman
2e5fd769b6 Minor code simplifications.
llvm-svn: 77768
2009-08-01 03:42:59 +00:00
Evan Cheng
c165700a7f Split t2MOVCCs since some assemblers do not recognize mov shifted register alias with predicate.
llvm-svn: 77764
2009-08-01 01:43:45 +00:00
Dan Gohman
e8685de233 SelectionDAGISel no longer needs to check hasAvailableExternallyLinkage,
as it is now a MachineFunctionPass, and MachineFunctionPass now handles
this.

llvm-svn: 77760
2009-08-01 00:42:23 +00:00
Dan Gohman
c1dc8ac240 Make UnreachableMachineBlockElim preserve MachineDominatorTree and
MachineLoopInfo.

llc now runs MachineLoopInfo and MachineDominatorTree only twice, instead
of three times.

llvm-svn: 77759
2009-08-01 00:34:30 +00:00
Dan Gohman
e05a157134 The X86 maximal stack alignment calculator preserves the CFG. Also,
be more careful about the return value of runOnMachineFunction.

llvm-svn: 77758
2009-08-01 00:31:02 +00:00
Dan Gohman
db8c4b62b4 X86 floating-point passes don't modify the CFG.
llvm-svn: 77757
2009-08-01 00:26:16 +00:00
Evan Cheng
5ef6928dff Fix Thumb2 function call isel. Thumb1 and Thumb2 should share the same
instructions for calls since BL and BLX are always 32-bit long and BX is always
16-bit long.

Also, we should be using BLX to call external function stubs.

llvm-svn: 77756
2009-08-01 00:16:10 +00:00
Dan Gohman
bbd7d54b39 Use setPreservesAll in X86CodeEmitter.
llvm-svn: 77755
2009-07-31 23:44:16 +00:00
Dan Gohman
4529d71681 Use setPreservesAll and setPreservesCFG in CodeGen passes.
llvm-svn: 77754
2009-07-31 23:37:33 +00:00
Dan Gohman
8dbc245f9b SelectionDAGISel does not "preserve all", since it makes lots of changes
to the MachineFunction.

llvm-svn: 77753
2009-07-31 23:36:22 +00:00
Dan Gohman
76ed822935 Use a range insert instead of an explicit loop.
llvm-svn: 77752
2009-07-31 23:36:06 +00:00
Daniel Dunbar
a848745eb4 llvm-mc: Fix .s output to quote section & symbol names when necessary.
llvm-svn: 77749
2009-07-31 23:04:32 +00:00
Owen Anderson
5370346117 Privatize all but one of the remaining constant tables.
llvm-svn: 77748
2009-07-31 22:45:43 +00:00
Bob Wilson
7634460f6a Allow target intrinsics that return multiple values, i.e., struct types,
in SelectionDAGLowering::visitTargetIntrinsic.

This removes a bit of special-case code for vector types.  After staring
at it for a while, I managed to convince myself that it is not necessary.
The only case where TLI.getValueType() differs from MVT::getMVT is for iPTR,
so this code could potentially make a difference for a vector of pointers.
But, it looks like that is not supported.  Calling TLI.getValueType() on
a vector of pointers leads to the following sequence of calls:

TargetLowering::getValueType
MVT::getMVT
MVT::getVectorVT(iPTR, num elements)
MVT::getExtendedVectorVT
MVT::getTypeForMVT for iPTR
assertion fails "Type is not extended!"

So, unless I'm really missing something, this bit of code is irrelevant to
the current version of LLVM, which is consistent with the fact that I don't
see this code in other similar places.

llvm-svn: 77747
2009-07-31 22:41:21 +00:00
Daniel Dunbar
99d279978e llvm-mc: A few more parsing / match tweaks.
- Operands which are just a label should be parsed as immediates, not memory
   operands (from the assembler perspective).

 - Match a few more flavors of immediates.

 - Distinguish match functions for memory operands which don't take a segment
   register.

 - We match the .s for "hello world" now!

llvm-svn: 77745
2009-07-31 22:22:54 +00:00
Evan Cheng
cb1704f904 t2BR_JT is mov pc, it's 2 byte long, not 4.
llvm-svn: 77744
2009-07-31 22:22:22 +00:00
Evan Cheng
88a27caaaf Thumb2 movcc need .w suffix.
llvm-svn: 77743
2009-07-31 22:21:55 +00:00
Chris Lattner
e84531b18d add some comments on how this is *supposed* to work. We don't
need the PreferredEHDataFormat hook, but I have yet-more refactoring to
do before I can zap it.

llvm-svn: 77742
2009-07-31 22:18:14 +00:00
Chris Lattner
907f114dd3 rearrange a conditional. Even if this weren't #if 0'd out, this would
have no functionality change.

llvm-svn: 77741
2009-07-31 22:03:47 +00:00
David Greene
543296ed84 Simplify operand padding by keying off tabs in the asm stream. If
padding is disabled, tabs get replaced by spaces except in the case of
the first operand, where the tab is output to line up the operands after
the mnemonics.

Add some better comments and eliminate redundant code.

Fix some testcases to not assume tabs.

llvm-svn: 77740
2009-07-31 21:57:10 +00:00
Chris Lattner
882b1208e1 PreferredEHDataFormat is always call with data and global, but this whole
thing is #if0'd out anyway.  Just simplify the code by reducing the interface.
Not deleting this is essential for Bill's continuing happiness.

llvm-svn: 77736
2009-07-31 21:39:55 +00:00
Owen Anderson
034ab4f8b1 Move the metadata constructors back to 2.5 syntax.
llvm-svn: 77733
2009-07-31 21:35:40 +00:00
Dan Gohman
40e39492e8 LibCallAliasAnalysis doesn't use TargetData.
llvm-svn: 77729
2009-07-31 20:56:29 +00:00
Daniel Dunbar
3c72ed6449 llvm-mc/X86: Sketch match functions for immediates and memory operands.
Also, change scale value to always be 1 when unspecified to machine MachineInst
encoding.

llvm-svn: 77728
2009-07-31 20:53:16 +00:00
Dan Gohman
5e41986999 Make TargetData optional in MemoryDependenceAnalysis.
llvm-svn: 77727
2009-07-31 20:53:12 +00:00
Chris Lattner
48bdeff884 move emitUsedDirectiveFor to TargetLoweringObjectFile and rename it to
indicate that it is a predicate, not an emitter.  This eliminates TAI
dependencies on Mangler and GlobalValue.

llvm-svn: 77726
2009-07-31 20:52:39 +00:00
Dan Gohman
9c6c4d57be Remove an unnecessary header.
llvm-svn: 77725
2009-07-31 20:47:45 +00:00
Chris Lattner
70c133d1d9 remove the PPCLinuxTargetAsmInfo implementation of PreferredEHDataFormat,
because it just calls the default impl.

Remove the PPCDarwinTargetAsmInfo version of PreferredEHDataFormat because
it just returns DW_EH_PE_absptr unless on 10.6.  However, 10.6 doesn't support
PPC, so the default impl is just fine.

llvm-svn: 77724
2009-07-31 20:43:26 +00:00
Chris Lattner
4bf345e8e2 remove a pointless override.
llvm-svn: 77723
2009-07-31 20:36:15 +00:00
Owen Anderson
1dc40e205b Move a few more APIs back to 2.5 forms. The only remaining ones left to change back are
metadata related, which I'm waiting on to avoid conflicting with Devang.

llvm-svn: 77721
2009-07-31 20:28:14 +00:00
Dan Gohman
0831bdef1d Fix GVN's debug output, now that operator<< on Value* doesn't print
a trailing newline.

llvm-svn: 77719
2009-07-31 20:24:18 +00:00
Eric Christopher
ad07d18432 Whitespace and 80-col cleanup.
llvm-svn: 77718
2009-07-31 20:07:27 +00:00
Bill Wendling
6920c80ab6 - Convert the rest of the DOUTs to DEBUG+errs().
- One formatting change.

No intended functionality change.

llvm-svn: 77717
2009-07-31 19:52:24 +00:00
Eli Friedman
7bb0485237 PR4662: Fix a crash introduced by the recent LLVMContext changes.
llvm-svn: 77716
2009-07-31 19:36:47 +00:00
Ted Kremenek
3b2c07bc88 Update CMake files.
llvm-svn: 77709
2009-07-31 18:50:22 +00:00
Chris Lattner
75b7692e66 switch off of 'Section' onto MCSection. We're not properly using
MCSection subclasses yet, but this is a step in the right direction.

llvm-svn: 77708
2009-07-31 18:48:30 +00:00
Dan Gohman
c4f0d838a9 Remove Annotation.h, which is no longer used in the LLVM tree.
llvm-svn: 77706
2009-07-31 18:36:25 +00:00
Evan Cheng
0c9705feed Until we have a "ALIGN" pseudo instruction, have asm printer emitted a .align
to ensure the instruction that follows a TBB (when the number of table entries
is odd) is 2-byte aligned.
Patch by Sandeep Patel.

llvm-svn: 77705
2009-07-31 18:35:56 +00:00
Dan Gohman
dcc00a2e5c MachineFunction no longer needs Annotation.
llvm-svn: 77704
2009-07-31 18:35:51 +00:00
Evan Cheng
038a564156 - Teach TBB / TBH offset limits are 510 and 131070 respectively since the offset
is scaled by two.
- Teach GetInstSizeInBytes about TBB and TBH.

llvm-svn: 77701
2009-07-31 18:28:05 +00:00
Dan Gohman
6bec53e39d Fix printing of Alloca instructions with null operands.
llvm-svn: 77697
2009-07-31 18:23:24 +00:00
Dan Gohman
173cfdc02f Fix some problems with ASTCallbackVH in its use as a DenseMap key.
llvm-svn: 77696
2009-07-31 18:21:48 +00:00
Devang Patel
34cec19943 Process DbgDeclareInst.
llvm-svn: 77694
2009-07-31 18:18:52 +00:00
Daniel Dunbar
23baa6b4ad Normalize target registration code.
llvm-svn: 77692
2009-07-31 18:16:53 +00:00
Dan Gohman
f28b3bb262 Reapply r77654 with a fix: MachineFunctionPass's getAnalysisUsage
shouldn't do AU.setPreservesCFG(), because even though CodeGen passes
don't modify the LLVM IR CFG, they may modify the MachineFunction CFG,
and passes like MachineLoop are registered with isCFGOnly set to true.

llvm-svn: 77691
2009-07-31 18:16:33 +00:00
Chris Lattner
c156a00641 refactor section construction in TLOF to be through an explicit
initialize method, which can be called when an MCContext is available.

llvm-svn: 77687
2009-07-31 17:42:42 +00:00
Owen Anderson
d0e6352c97 Move getTrue() and getFalse() to 2.5-like APIs.
llvm-svn: 77685
2009-07-31 17:39:07 +00:00
Chris Lattner
a682cb61e7 split MCSection stuff out to its own .cpp file, add a new
MCSectionWithKind subclass of MCSection.

llvm-svn: 77684
2009-07-31 17:02:00 +00:00
Chris Lattner
610dfdece7 create sections with MCSection::Create instead of Context->getOrCreateSection.
This is needed to allow polymorphic sections.

llvm-svn: 77680
2009-07-31 16:43:49 +00:00
Chris Lattner
85a3632c7a fix PR4650: we only track sizes for certain objects, so only put something
into the mergable section if it is one of our special cases.  This could
obviously be improved, but this is the minimal fix and restores us to the
previous behavior.

llvm-svn: 77679
2009-07-31 16:17:13 +00:00
Benjamin Kramer
162dc26fb9 Work around a dangling pointer dereference when enumerating NamedMDNodes.
llvm-svn: 77675
2009-07-31 14:22:13 +00:00
Benjamin Kramer
83e2ae8eee Fix a struct/class mismatch, to silence a MSVC warning.
llvm-svn: 77673
2009-07-31 11:35:26 +00:00
Sanjiv Gupta
059b94e803 define target names for std libcalls.
llvm-svn: 77667
2009-07-31 07:35:57 +00:00
Daniel Dunbar
60d71a790c Revert r77654, it appears to be causing llvm-gcc bootstrap failures, and many
failures when building assorted projects with clang.

--- Reverse-merging r77654 into '.':
U    include/llvm/CodeGen/Passes.h
U    include/llvm/CodeGen/MachineFunctionPass.h
U    include/llvm/CodeGen/MachineFunction.h
U    include/llvm/CodeGen/LazyLiveness.h
U    include/llvm/CodeGen/SelectionDAGISel.h
D    include/llvm/CodeGen/MachineFunctionAnalysis.h
U    include/llvm/Function.h
U    lib/Target/CellSPU/SPUISelDAGToDAG.cpp
U    lib/Target/PowerPC/PPCISelDAGToDAG.cpp
U    lib/CodeGen/LLVMTargetMachine.cpp
U    lib/CodeGen/MachineVerifier.cpp
U    lib/CodeGen/MachineFunction.cpp
U    lib/CodeGen/PrologEpilogInserter.cpp
U    lib/CodeGen/MachineLoopInfo.cpp
U    lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp
D    lib/CodeGen/MachineFunctionAnalysis.cpp
D    lib/CodeGen/MachineFunctionPass.cpp
U    lib/CodeGen/LiveVariables.cpp

llvm-svn: 77661
2009-07-31 03:02:41 +00:00
Daniel Dunbar
41639473ed llvm-mc: Match a few X86 instructions.
- This is "experimental" code, I am feeling my way around and working out the
   best way to do things (and learning tblgen in the process). Comments welcome,
   but keep in mind this stuff will change radically.

 - This is enough to match "subb" and friends, but not much else. The next step is to
   automatically generate the matchers for individual operands.

llvm-svn: 77657
2009-07-31 02:32:59 +00:00
Dan Gohman
645f1122c0 Manage MachineFunctions with an analysis Pass instead of the Annotable
mechanism. To support this, make MachineFunctionPass a little more
complete.

llvm-svn: 77654
2009-07-31 01:52:50 +00:00
Benjamin Kramer
67e2ff4df1 Fix cmake build.
llvm-svn: 77649
2009-07-31 00:35:23 +00:00
Devang Patel
343bc16228 Add getOrInsertNamedMetadata().
llvm-svn: 77646
2009-07-30 23:59:04 +00:00
Evan Cheng
c9f31ae969 When fp is not eliminated, instructions with T2_i12 modes will be changed to T2_i8 ones. Take that into consideration when determining stack size limit for reserving register scavenging slot.
llvm-svn: 77642
2009-07-30 23:29:25 +00:00
Lang Hames
bf6e087067 Removed the BigBlock register allocator.
llvm-svn: 77640
2009-07-30 23:18:43 +00:00
Devang Patel
c3f4aa73cc Do not use abbrev while writing NamedMDNode name.
llvm-svn: 77637
2009-07-30 23:06:35 +00:00
Devang Patel
da86d84743 Enumerate NamedMDNode elements first.
llvm-svn: 77636
2009-07-30 23:03:43 +00:00
Owen Anderson
93ccaf5c60 Move more code back to 2.5 APIs.
llvm-svn: 77635
2009-07-30 23:03:37 +00:00
David Goodwin
ef70179502 Remove redundant match for frame index from imm8 addrmode, it is handled by the imm12 addrmode.
llvm-svn: 77632
2009-07-30 22:45:52 +00:00
David Goodwin
62efc71b9f Darwin assembler now recognizes "orn", so remove workaround.
llvm-svn: 77627
2009-07-30 21:51:41 +00:00
David Goodwin
d29f81da16 Darwin assembler now supports "rrx", so remove workaround.
llvm-svn: 77625
2009-07-30 21:38:40 +00:00
Daniel Dunbar
298e11de31 Twine: Directly support int, long, and long long types.
- This should resolve Cygwin gcc ambiguities.

llvm-svn: 77624
2009-07-30 21:15:14 +00:00
Dan Gohman
30dfed41b8 Use CallbackVH in AliasSetTracker to avoid getting stuck with
dangling Value*s.

llvm-svn: 77623
2009-07-30 20:21:41 +00:00
David Goodwin
2eaffa79af Cleanup and include code selection for some frame index cases.
llvm-svn: 77622
2009-07-30 18:56:48 +00:00
Devang Patel
9b0dea089b Start using DebugInfoFinder.
llvm-svn: 77621
2009-07-30 18:56:46 +00:00
Devang Patel
788d39ffd4 Do not use getNamedValue() to lookup NamedMDNode. NamedMDNode is not a GlobalValue.
Thanks Benjamin Kramer!

llvm-svn: 77619
2009-07-30 18:46:29 +00:00
Daniel Dunbar
edd0313a36 Twine: Use raw_ostream::write_hex, remove unused itohexstr method.
llvm-svn: 77617
2009-07-30 18:30:19 +00:00
Devang Patel
ab56b759af s/DebugInfoEnumerator/DebugInfoFinder/g
llvm-svn: 77615
2009-07-30 18:25:15 +00:00
Daniel Dunbar
79e9ed1d26 Add raw_ostream::write_hex
llvm-svn: 77614
2009-07-30 18:21:23 +00:00
David Goodwin
30429aef93 Add missing D* register clobbers for Thumb-2 call.
llvm-svn: 77611
2009-07-30 18:01:09 +00:00
Daniel Dunbar
81f704c26a Twines: Don't allow implicit conversion from integers, this is too tricky.
llvm-svn: 77605
2009-07-30 17:37:43 +00:00
Devang Patel
751490b934 walk DbgRegionStartInst and DbgRegionEndInst
llvm-svn: 77604
2009-07-30 17:30:23 +00:00
Dan Gohman
0caa78bc21 Minor whitespace tidiness.
llvm-svn: 77602
2009-07-30 17:04:07 +00:00
Dan Gohman
0a16a3ee84 Rename GRAD to GR32_AD, to follow the naming convention of other
classes. And define its SubRegClassList.

llvm-svn: 77601
2009-07-30 17:02:08 +00:00
Chris Lattner
edb8650e80 add a random codegen deficiency.
llvm-svn: 77598
2009-07-30 16:08:58 +00:00
Benjamin Kramer
85fa67c3c5 fix a unitialized pointer in NamedMDNode (and reenable unittest)
llvm-svn: 77597
2009-07-30 15:35:55 +00:00
Sanjiv Gupta
b2aad805e0 Allow targets to define libcall names for mem(cpy,set,move) intrinsics, rather than hardcoding them in DAG lowering.
llvm-svn: 77586
2009-07-30 09:12:56 +00:00
Evan Cheng
20a1862b23 Add a note.
llvm-svn: 77584
2009-07-30 08:56:19 +00:00
Evan Cheng
148032a1a2 Optimize some common usage patterns of atomic built-ins __sync_add_and_fetch() and __sync_sub_and_fetch.
When the return value is not used (i.e. only care about the value in the memory), x86 does not have to use add to implement these. Instead, it can use add, sub, inc, dec instructions with the "lock" prefix.

This is currently implemented using a bit of instruction selection trick. The issue is the target independent pattern produces one output and a chain and we want to map it into one that just output a chain. The current trick is to select it into a merge_values with the first definition being an implicit_def. The proper solution is to add new ISD opcodes for the no-output variant. DAG combiner can then transform the node before it gets to target node selection.

Problem #2 is we are adding a whole bunch of x86 atomic instructions when in fact these instructions are identical to the non-lock versions. We need a way to add target specific information to target nodes and have this information carried over to machine instructions. Asm printer (or JIT) can use this information to add the "lock" prefix.

llvm-svn: 77582
2009-07-30 08:33:02 +00:00
Daniel Dunbar
4d07efb3c4 Switch obvious clients to Twine instead of utostr (when they were already using
a Twine, e.g., for names).
 - I am a little ambivalent about this; we don't want the string conversion of
   utostr, but using overload '+' mixed with string and integer arguments is
   sketchy. On the other hand, this particular usage is something of an idiom.

llvm-svn: 77579
2009-07-30 04:20:37 +00:00
Sanjiv Gupta
6692c2401b Keep track of references to mem(cpy,move,set) and then print only one extern
declaration for them.

llvm-svn: 77578
2009-07-30 04:15:15 +00:00
Daniel Dunbar
4d8b1776b4 Twine: Provide [u]int{32,64} conversions via implicit constructors instead of
explicitly.

llvm-svn: 77576
2009-07-30 03:47:15 +00:00
Andreas Bolka
56d7bc03dd Equal SCEVs of a subscript give rise to dependence.
llvm-svn: 77570
2009-07-30 02:26:01 +00:00
Nate Begeman
72315231bc Typo
llvm-svn: 77568
2009-07-30 02:00:06 +00:00
Dan Gohman
3c7e8160f6 Add a new register class to describe operands that can't be SP,
due to x86 encoding restrictions. This is currently off by default
because it may cause code quality regressions. This is for PR4572.

llvm-svn: 77565
2009-07-30 01:56:29 +00:00
Devang Patel
efd06c46c7 Check null NameMDNode elements.
llvm-svn: 77559
2009-07-30 01:02:04 +00:00
Dan Gohman
179f1e8a27 Eliminate a bunch of redundant tables.
llvm-svn: 77558
2009-07-30 00:40:42 +00:00
Bob Wilson
8624e45518 Lower a 128-bit BUILD_VECTOR with 2 elements to a pair of INSERT_VECTOR_ELTs.
llvm-svn: 77557
2009-07-30 00:31:25 +00:00
Dan Gohman
79565c910c Use array_endof instead of doing it manually.
llvm-svn: 77553
2009-07-30 00:10:18 +00:00
Devang Patel
ee25ed96f5 print single NamedMDNode.
llvm-svn: 77549
2009-07-30 00:02:57 +00:00
Evan Cheng
31ac181755 tbb / tbh instructions only branch forward, not backwards.
llvm-svn: 77522
2009-07-29 23:20:20 +00:00
Evan Cheng
fabbd6219a Add VFP3 D registers to the DPR register class.
llvm-svn: 77521
2009-07-29 23:03:41 +00:00
Nicolas Geoffray
1583f76c9a In TrimAllocationToSize, if a block is below the minimum allocation size,
there is no new block added to the free list. Therefore on the next
startFunctionBody call, a new slab must be allocated.

llvm-svn: 77520
2009-07-29 22:55:02 +00:00
Douglas Gregor
8c9b60cabc Eliminate a few unused-variable warnings
llvm-svn: 77519
2009-07-29 22:41:10 +00:00
Devang Patel
d5b7c64109 Read and write NamedMDNode.
llvm-svn: 77517
2009-07-29 22:34:41 +00:00
Owen Anderson
881d928f9b Move types back to the 2.5 API.
llvm-svn: 77516
2009-07-29 22:17:13 +00:00
Devang Patel
d788af24ac Print named metadata.
llvm-svn: 77513
2009-07-29 22:04:47 +00:00
Daniel Dunbar
89cb72a6bc Fix PR4645 which was fallout from the fix for PR4641.
- Call RAUW to delete all instructions (this is a patch from Nick Lewycky).

llvm-svn: 77512
2009-07-29 22:00:43 +00:00
Devang Patel
c8dfc60e5e There is no need to keep name ref in NamedMDNode.
llvm-svn: 77511
2009-07-29 21:58:56 +00:00
Chris Lattner
613f031b68 inline the global 'getInstrOperandRegClass' function into its callers
now that TargetOperandInfo does the heavy lifting.

llvm-svn: 77508
2009-07-29 21:36:49 +00:00
Evan Cheng
90a1ca6e17 Make sure Thumb2 uses the right call instructions.
llvm-svn: 77507
2009-07-29 21:26:42 +00:00
Bill Wendling
67495ad58d Forgot to output the base offset.
llvm-svn: 77505
2009-07-29 21:19:44 +00:00
Chris Lattner
6c284cc8cd 1. Introduce a new TargetOperandInfo::getRegClass() helper method
and convert code to using it, instead of having lots of things
   poke the isLookupPtrRegClass() method directly.

2. Make PointerLikeRegClass contain a 'kind' int, and store it in
   the existing regclass field of TargetOperandInfo when the
   isLookupPtrRegClass() predicate is set.  Make getRegClass pass
   this into TargetRegisterInfo::getPointerRegClass(), allowing
   targets to have multiple ptr_rc things.

llvm-svn: 77504
2009-07-29 21:10:12 +00:00
Chris Lattner
18af1b233a Give getPointerRegClass() a "kind" value so that targets can
support multiple different pointer register classes.

llvm-svn: 77501
2009-07-29 20:31:52 +00:00
Evan Cheng
c8d3891c87 - Fix an obvious copy and paste error.
- Darwin Thumb2 call clobbers r9.

llvm-svn: 77500
2009-07-29 20:10:36 +00:00
Benjamin Kramer
da986c3fc9 Remove now unused Context variables.
llvm-svn: 77495
2009-07-29 19:14:17 +00:00
Owen Anderson
0ce2151b36 Move ConstantExpr to 2.5 API.
llvm-svn: 77494
2009-07-29 18:55:55 +00:00
Devang Patel
57fbaa252c Refactor. Fix indentation.
llvm-svn: 77482
2009-07-29 18:15:02 +00:00
Eric Christopher
c9c896290e Add llvm_unreachable for ... unreachable code!
llvm-svn: 77480
2009-07-29 18:14:04 +00:00
Daniel Dunbar
d2bf575100 Perform simplification noticed by Reid.
llvm-svn: 77477
2009-07-29 17:29:36 +00:00
Devang Patel
6bc0c66630 Keep track of named mdnodes in a Module using an ilist.
llvm-svn: 77476
2009-07-29 17:16:17 +00:00
Bob Wilson
355e0b70e0 Change Neon VLDn intrinsics to return multiple values instead of really
wide vectors.  Likewise, change VSTn intrinsics to take separate arguments
for each vector in a multi-vector struct.  Adjust tests accordingly.

llvm-svn: 77468
2009-07-29 16:39:22 +00:00
Bob Wilson
2f023d87ee Fix an assumption that there is a single return value when verifying
overloaded types for intrinsic parameters.

llvm-svn: 77466
2009-07-29 16:25:56 +00:00
David Greene
04545750d9 Re-apply previous changes and improve column padding performance some more.
llvm-svn: 77461
2009-07-29 16:08:27 +00:00
Dan Gohman
a3af79a5c3 Minor code simplification.
llvm-svn: 77459
2009-07-29 15:58:36 +00:00
Daniel Dunbar
d13fcdaae5 Twines: Support numeric conversion directly (uitostr, etc).
- Provides static constructors for doing number to string conversions without
   using temporaries.

 - There are several ways to do this, I think given the Twine constraints this
   is the simplest one.

 - One FIXME for fast number -> hex conversion.

 - Added another comment on one last major bit of perf work Twines need, which
   is to make raw_svector_ostream more efficient.

llvm-svn: 77445
2009-07-29 07:08:44 +00:00
Daniel Dunbar
1589195975 raw_ostream: Follow the 32-bit path when printing "small" decimal numbers.
llvm-svn: 77444
2009-07-29 06:45:14 +00:00
Chris Lattner
c9d366b0c9 more syntactic cleanups.
llvm-svn: 77442
2009-07-29 06:33:53 +00:00
Chris Lattner
b53809dfe8 minor smallvector cleanups
llvm-svn: 77441
2009-07-29 06:29:53 +00:00
Chris Lattner
a54286efc5 whitespace cleanup.
llvm-svn: 77438
2009-07-29 05:48:09 +00:00
Andreas Bolka
eb2d2f79b8 Skeleton for pairwise subscript testing.
llvm-svn: 77437
2009-07-29 05:35:53 +00:00
Chris Lattner
12483f0bd7 mingw uses .data and .text, not _data and _text.
llvm-svn: 77435
2009-07-29 05:25:42 +00:00