Dan Gohman
8a17870da4
Generalize getRegisterClassForRegister to handle registers
...
in multiple classes in the case that the classes are all
in subset/superset relations. This function is used by the
fast-isel emitter, which always wants the super-most set.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68957 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-13 15:24:11 +00:00
Dan Gohman
70f2f65aac
Don't abort on an aliasing physical register that does not have
...
a live interval. This is needed for some upcoming subreg changes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68956 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-13 15:22:29 +00:00
Dan Gohman
9a77a92859
When assigning a physical register to a MachineOperand, set
...
the subreg field to 0, since the subreg field is only used
for virtual register subregs. This doesn't change
current functionality; it just eliminates bogus noise from
debug output.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68955 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-13 15:21:32 +00:00
Dan Gohman
ee30047386
List the l registers before h registers, for consistency.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68954 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-13 15:18:42 +00:00
Dan Gohman
6ed0e20eb2
Add an assertion to verify that a copy was actually emitted.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68953 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-13 15:16:56 +00:00
Dan Gohman
3cd0aa3260
Use X86::SUBREG_8BIT instead of hard-coding the equivalent constant.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68951 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-13 15:14:03 +00:00
Dan Gohman
04d19f0241
Add a comment about MOVSX64rr8.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68950 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-13 15:13:28 +00:00
Dan Gohman
73099b1058
Add comments to INSERT_SUBREG, EXTRACT_SURBEG, SUBREG_TO_REG,
...
and IMPLICIT_DEF.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68949 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-13 15:12:29 +00:00
Dan Gohman
8cc632f705
Fix another hard-coded constant to use X86AddrNumOperands.
...
This unbreaks the JIT on x86-64.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68948 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-13 15:04:25 +00:00
Rafael Espindola
7ff5bff45e
X86-64 TLS support for local exec and initial exec.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68947 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-13 13:02:49 +00:00
Sanjiv Gupta
12f23a86e2
While passing arg of types larger than char only one byte at lower end was getting passed. We couldn't catch this as we did not have tests that were passing an int value larger than 256.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68946 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-13 09:38:38 +00:00
Nick Lewycky
14b9ed13e7
Fix ocaml bindings; add "available_externally" linkage type.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68945 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-13 07:02:32 +00:00
Nick Lewycky
55f64dbb39
Fix warning in .ll parser, detect and reject available_externally on function
...
declarations.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68944 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-13 07:02:02 +00:00
Chris Lattner
db1afd499e
add AvailableExternally linkage to C bindings.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68942 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-13 06:25:37 +00:00
Chris Lattner
266c7bbbbc
Add a new "available_externally" linkage type. This is intended
...
to support C99 inline, GNU extern inline, etc. Related bugzilla's
include PR3517, PR3100, & PR2933. Nothing uses this yet, but it
appears to work.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68940 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-13 05:44:34 +00:00
Chris Lattner
2c71b8f64f
eliminate unneeded parens.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68939 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-13 05:38:23 +00:00
Nick Lewycky
267fddbedd
Regenerate.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68938 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-13 04:26:27 +00:00
Nick Lewycky
93f70fc291
Link against libffi if available, fall back to "no external calls from
...
interpreter mode" when it's not.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68937 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-13 04:26:06 +00:00
Nick Lewycky
ef5facd90d
Add paragraph tags.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68934 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-13 02:03:40 +00:00
Chris Lattner
b7253150ab
fix PR3965:SIGINT handler not restored after calling ParseAST(),
...
patch by Alexei Svitkine!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68929 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-12 23:33:13 +00:00
Rafael Espindola
b215776fa1
In X86DAGToDAGISel::MatchWrapper, if base or index are set, avoid matching
...
only if symbolic addresses are RIP relatives.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68924 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-12 23:00:38 +00:00
Owen Anderson
ddeed50d76
Use a hashtable for TargetRegisterClass::contains.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68922 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-12 22:31:17 +00:00
Rafael Espindola
49a168daae
refactor some code into X86DAGToDAGISel::MatchWrapper
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68915 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-12 21:55:03 +00:00
Nick Lewycky
9f85634bd2
Add Kaleidoscope to examples/ so that it gets built regularly and we'll notice
...
if an API change causes it to be out of date. The code is copied out of
LangImpl7.html.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68912 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-12 20:47:23 +00:00
Nick Lewycky
de9b4c4a7f
Fix compile error. Pointed out by mait on #llvm IRC!
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68910 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-12 20:15:44 +00:00
Chris Lattner
5db4cdfc56
"There was a typo in my previous patch which leads to miscompilation of
...
strncat :(
strncat(foo, "bar", 99)
would be optimized to
memcpy(foo+strlen(foo), "bar", 100, 1)
instead of
memcpy(foo+strlen(foo), "bar", 4, 1)"
Patch by Benjamin Kramer!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68905 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-12 18:22:33 +00:00
Rafael Espindola
1cefb74190
Add tests for the parts of X86-64 TLS that are already implemented.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68901 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-12 10:43:41 +00:00
Chris Lattner
8d57b778b5
fix a cross-block fastisel crash handling overflow intrinsics.
...
See comment for details. This fixes rdar://6772169
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68890 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-12 07:51:14 +00:00
Chris Lattner
36e3946ac2
make UpdateValueMap handle the possiblity that we could be
...
copying into the right register, avoiding a copy.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68889 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-12 07:46:30 +00:00
Chris Lattner
c5040ab606
optimize FastISel::UpdateValueMap to avoid duplicate map lookups,
...
and make it return the assigned register.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68888 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-12 07:45:01 +00:00
Chris Lattner
a9a42259ed
simplify code by using IntrinsicInst.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68887 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-12 07:36:01 +00:00
Chris Lattner
0461c0a8f5
Add new TargetInstrDesc::hasImplicitUseOfPhysReg and
...
hasImplicitDefOfPhysReg methods. Use them to remove a
look in X86 fast isel.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68886 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-12 07:26:51 +00:00
Chris Lattner
f5b6bc7f0e
add some optimizations for strncpy/strncat and factor some
...
code. Patch by Benjamin Kramer!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68885 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-12 05:06:39 +00:00
Dan Gohman
c6fa3ff0bd
Revert r68847. It breaks the build on non-Darwin targets, with this message
...
from the assembler:
Error: unknown pseudo-op: `.debug_inlined'
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68863 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-11 15:57:04 +00:00
Devang Patel
2057532679
Keep track of inlined functions and their locations. This information is collected when nested llvm.dbg.func.start intrinsics are seen. (Right now, inliner removes nested llvm.dbg.func.start intrinisics during inlining.)
...
Create debug_inlined dwarf section using these information. This info is used by gdb, at least on Darwin, to enable better experience debugging inlined functions. See DwarfWriter.cpp for more information on structure of debug_inlined section.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68847 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-11 00:16:47 +00:00
Chris Lattner
dbf1e2b08b
move a target-specific test into its directory so it isn't run if you
...
don't configure the ARM target in.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68843 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-10 23:58:38 +00:00
Misha Brukman
7e0fc8a10c
Fixed spelling.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68821 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-10 20:48:27 +00:00
Devang Patel
03f0a2fba0
DebugLabelFolder ruthlessly deletes redundant labels. However, sometimes the redundant labels is referenced by debug info somewhere else. This patch provies a way so that dwarf writer can mark labels as used.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68813 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-10 18:58:59 +00:00
Bob Wilson
ec15bbfd2f
Clean up a bunch of whitespace issues and fix a comment typo.
...
No functional changes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68808 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-10 18:48:47 +00:00
Bill Wendling
6818985032
Don't install the libLLVMHello.dylib example.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68807 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-10 18:48:38 +00:00
Bill Wendling
fa72236d29
Add compatibility_version and current_version flags when creating dylibs.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68801 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-10 18:20:41 +00:00
Bill Wendling
82934f2355
Don't run "dsymutils" on .a files.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68795 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-10 17:45:16 +00:00
Chris Lattner
296185c264
fix two problems with machine sinking:
...
1. Sinking would crash when the first instruction of a block was
sunk due to iterator problems.
2. Instructions could be sunk to their current block, causing an
infinite loop.
This fixes PR3968
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68787 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-10 16:38:36 +00:00
Dan Gohman
0355862f71
Now that register classes have names, include the name in debug output.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68786 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-10 15:59:38 +00:00
Chris Lattner
5c5f5a2ec2
fix a broken assertion in ilist_iterator, which caused it to crash in the
...
bad case instead of actually assert. Bug pointed out by Jakob Stoklund
Olesen!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68785 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-10 15:47:17 +00:00
Chris Lattner
b357f0484b
fix typo, patch by Shlomi Fish!
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68784 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-10 15:38:51 +00:00
Sanjiv Gupta
a3613be963
Added code to handle spilling and reloading of FSRs.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68783 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-10 15:10:14 +00:00
Rafael Espindola
dbcfb3080a
Don't fold a load if the other operand is a TLS address.
...
With this we generate
movl %gs:0, %eax
leal i@NTPOFF(%eax), %eax
instead of
movl $i@NTPOFF, %eax
addl %gs:0, %eax
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68778 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-10 10:09:34 +00:00
Nick Lewycky
cb8c4778d3
Cleanup. Remove redundant llvm:: , we don't need them since we're inside
...
namespace llvm already.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68774 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-10 06:54:06 +00:00
Chris Lattner
3584a47588
Add a new Type::getPointerTo method, which is shorthand for
...
llvm::PointerType::get(). Patch by Anders Johnsen!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68772 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-10 06:42:02 +00:00