Commit Graph

49695 Commits

Author SHA1 Message Date
Bill Wendling d35fbe4595 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 31b44e8f6c 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 7dc3b72685 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 133d9105d3 Fix the build for people with oprofile installed.
llvm-svn: 77914
2009-08-02 20:51:44 +00:00
Daniel Dunbar 381b89d3f1 Empty arguments need to be quoted on Win32.
llvm-svn: 77913
2009-08-02 20:41:09 +00:00
Jakob Stoklund Olesen 185eb035e9 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 4bf58b8add One two many newlines at end of file LLVMContextImpl.cpp
llvm-svn: 77911
2009-08-02 20:06:26 +00:00
Daniel Dunbar b3f40651d3 Adjust comment to distinguish between target name and triple target name they
match.

llvm-svn: 77908
2009-08-02 19:41:20 +00:00
Edward O'Callaghan 2dd529c9ef Fix no newline at end of LLVMContextImpl.cpp
llvm-svn: 77907
2009-08-02 19:38:12 +00:00
Jakob Stoklund Olesen c59cd9bcd0 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 5d52bfbbc9 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 2a21149b20 Add some basic blackfin intrinsics.
llvm-svn: 77903
2009-08-02 18:28:11 +00:00
Jakob Stoklund Olesen ddddf2d549 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 b052972a58 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 526e803f6a Build Blackfin target with autoconf and cmake.
Note that configure was edited by hand. Will somebody with the correct version of autoconf please regenerate?

llvm-svn: 77898
2009-08-02 17:32:37 +00:00
Jakob Stoklund Olesen 552d8d6618 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 3f323847bc 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 757eee8a27 Fix indentation.
llvm-svn: 77895
2009-08-02 16:10:52 +00:00
Dan Gohman 73efcaf6e1 Add a comment.
llvm-svn: 77894
2009-08-02 16:10:01 +00:00
Dan Gohman 1ccfa8bdc1 Resync lea32addr and lea64addr.
llvm-svn: 77893
2009-08-02 16:09:17 +00:00
Benjamin Kramer 666cf9d2f2 Remove duplicated colons and spaces.
llvm-svn: 77892
2009-08-02 12:13:02 +00:00
Jakob Stoklund Olesen f70d50419e 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 1472cf5b3f 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 c784feba8e convert EHFrameSection to be managed by TLOF instead of TAI.
llvm-svn: 77888
2009-08-02 06:52:36 +00:00
Chris Lattner bdde99bd42 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 8a0db7516e ARM TAI no longer needs a TM, but createTargetAsmInfo() still does.
llvm-svn: 77878
2009-08-02 05:23:52 +00:00
Chris Lattner e98a3c3ca3 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 0161419259 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 1fe76c385b turn some templated inline functions into static functions.
llvm-svn: 77873
2009-08-02 04:52:00 +00:00
Chris Lattner df672c2bb2 alpha TAI doesn't need TM.
llvm-svn: 77872
2009-08-02 04:46:05 +00:00
Chris Lattner d4c8fd44ee MSP430 TAI doesn't need TM.
llvm-svn: 77871
2009-08-02 04:45:22 +00:00
Chris Lattner d45a7860ec simplify SPULinuxTargetAsmInfo, remove use of TM.
llvm-svn: 77869
2009-08-02 04:44:33 +00:00
Chris Lattner 2be66ce420 xcore TAI doesn't need TM.
llvm-svn: 77868
2009-08-02 04:42:09 +00:00
Chris Lattner 3ea23cff65 PIC16 TAI doesn't need TM
llvm-svn: 77867
2009-08-02 04:41:14 +00:00
Chris Lattner fb53861ee0 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 7ee0246f51 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 d39874e6ec eliminate TargetMAchine argument to sparc TAI
llvm-svn: 77864
2009-08-02 04:30:59 +00:00
Chris Lattner b25afe081c 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 cecdb9e772 remove the x86/ppc impls of getEHGlobalPrefix, which is already dead.
llvm-svn: 77861
2009-08-02 04:13:22 +00:00
Daniel Dunbar 2eaf396c41 Add missing flush().
llvm-svn: 77859
2009-08-02 04:12:28 +00:00
Chris Lattner f526fb7e9a clean up #includes of TargetAsmInfo.cpp
llvm-svn: 77858
2009-08-02 04:09:22 +00:00
Chris Lattner 77f686713f move an enum from TM -> TargetOptions. This makes TargetOptions.h
be self contained, and it isn't used from TM.h

llvm-svn: 77857
2009-08-02 04:08:52 +00:00
Chris Lattner 29c6c43cd0 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 7005cd3fa0 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
Evan Cheng 8e3889f12e Test both darwin and linux.
llvm-svn: 77852
2009-08-02 02:54:34 +00:00
Chris Lattner c16c75ea9b 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 cc5e54e986 Fix a possible crash on delete of an uninitialized variable.
llvm-svn: 77846
2009-08-02 01:25:15 +00:00
Daniel Dunbar 6eca7ab91c Fix an ENABLE_EXPENSIVE_CHECKS error.
llvm-svn: 77845
2009-08-02 01:21:22 +00:00
Dan Gohman 321dc97adf Don't call SectionForGlobal for hasAvailableExternallyLinkage()
variables either.

llvm-svn: 77844
2009-08-02 01:18:44 +00:00
Chris Lattner a17d2e5c21 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