oota-llvm.git
15 years agoIn X86DAGToDAGISel::MatchWrapper, if base or index are set, avoid matching
Rafael Espindola [Sun, 12 Apr 2009 23:00:38 +0000 (23:00 +0000)]
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

15 years agoUse a hashtable for TargetRegisterClass::contains.
Owen Anderson [Sun, 12 Apr 2009 22:31:17 +0000 (22:31 +0000)]
Use a hashtable for TargetRegisterClass::contains.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68922 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agorefactor some code into X86DAGToDAGISel::MatchWrapper
Rafael Espindola [Sun, 12 Apr 2009 21:55:03 +0000 (21:55 +0000)]
refactor some code into X86DAGToDAGISel::MatchWrapper

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68915 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoAdd Kaleidoscope to examples/ so that it gets built regularly and we'll notice
Nick Lewycky [Sun, 12 Apr 2009 20:47:23 +0000 (20:47 +0000)]
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

15 years agoFix compile error. Pointed out by mait on #llvm IRC!
Nick Lewycky [Sun, 12 Apr 2009 20:15:44 +0000 (20:15 +0000)]
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

15 years ago"There was a typo in my previous patch which leads to miscompilation of
Chris Lattner [Sun, 12 Apr 2009 18:22:33 +0000 (18:22 +0000)]
"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

15 years agoAdd tests for the parts of X86-64 TLS that are already implemented.
Rafael Espindola [Sun, 12 Apr 2009 10:43:41 +0000 (10:43 +0000)]
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

15 years agofix a cross-block fastisel crash handling overflow intrinsics.
Chris Lattner [Sun, 12 Apr 2009 07:51:14 +0000 (07:51 +0000)]
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

15 years agomake UpdateValueMap handle the possiblity that we could be
Chris Lattner [Sun, 12 Apr 2009 07:46:30 +0000 (07:46 +0000)]
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

15 years agooptimize FastISel::UpdateValueMap to avoid duplicate map lookups,
Chris Lattner [Sun, 12 Apr 2009 07:45:01 +0000 (07:45 +0000)]
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

15 years agosimplify code by using IntrinsicInst.
Chris Lattner [Sun, 12 Apr 2009 07:36:01 +0000 (07:36 +0000)]
simplify code by using IntrinsicInst.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68887 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoAdd new TargetInstrDesc::hasImplicitUseOfPhysReg and
Chris Lattner [Sun, 12 Apr 2009 07:26:51 +0000 (07:26 +0000)]
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

15 years agoadd some optimizations for strncpy/strncat and factor some
Chris Lattner [Sun, 12 Apr 2009 05:06:39 +0000 (05:06 +0000)]
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

15 years agoRevert r68847. It breaks the build on non-Darwin targets, with this message
Dan Gohman [Sat, 11 Apr 2009 15:57:04 +0000 (15:57 +0000)]
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

15 years agoKeep track of inlined functions and their locations. This information is collected...
Devang Patel [Sat, 11 Apr 2009 00:16:47 +0000 (00:16 +0000)]
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

15 years agomove a target-specific test into its directory so it isn't run if you
Chris Lattner [Fri, 10 Apr 2009 23:58:38 +0000 (23:58 +0000)]
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

15 years agoFixed spelling.
Misha Brukman [Fri, 10 Apr 2009 20:48:27 +0000 (20:48 +0000)]
Fixed spelling.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68821 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoDebugLabelFolder ruthlessly deletes redundant labels. However, sometimes the redundan...
Devang Patel [Fri, 10 Apr 2009 18:58:59 +0000 (18:58 +0000)]
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

15 years agoClean up a bunch of whitespace issues and fix a comment typo.
Bob Wilson [Fri, 10 Apr 2009 18:48:47 +0000 (18:48 +0000)]
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

15 years agoDon't install the libLLVMHello.dylib example.
Bill Wendling [Fri, 10 Apr 2009 18:48:38 +0000 (18:48 +0000)]
Don't install the libLLVMHello.dylib example.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68807 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoAdd compatibility_version and current_version flags when creating dylibs.
Bill Wendling [Fri, 10 Apr 2009 18:20:41 +0000 (18:20 +0000)]
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

15 years agoDon't run "dsymutils" on .a files.
Bill Wendling [Fri, 10 Apr 2009 17:45:16 +0000 (17:45 +0000)]
Don't run "dsymutils" on .a files.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68795 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agofix two problems with machine sinking:
Chris Lattner [Fri, 10 Apr 2009 16:38:36 +0000 (16:38 +0000)]
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

15 years agoNow that register classes have names, include the name in debug output.
Dan Gohman [Fri, 10 Apr 2009 15:59:38 +0000 (15:59 +0000)]
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

15 years agofix a broken assertion in ilist_iterator, which caused it to crash in the
Chris Lattner [Fri, 10 Apr 2009 15:47:17 +0000 (15:47 +0000)]
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

15 years agofix typo, patch by Shlomi Fish!
Chris Lattner [Fri, 10 Apr 2009 15:38:51 +0000 (15:38 +0000)]
fix typo, patch by Shlomi Fish!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68784 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoAdded code to handle spilling and reloading of FSRs.
Sanjiv Gupta [Fri, 10 Apr 2009 15:10:14 +0000 (15:10 +0000)]
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

15 years agoDon't fold a load if the other operand is a TLS address.
Rafael Espindola [Fri, 10 Apr 2009 10:09:34 +0000 (10:09 +0000)]
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

15 years agoCleanup. Remove redundant llvm:: , we don't need them since we're inside
Nick Lewycky [Fri, 10 Apr 2009 06:54:06 +0000 (06:54 +0000)]
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

15 years agoAdd a new Type::getPointerTo method, which is shorthand for
Chris Lattner [Fri, 10 Apr 2009 06:42:02 +0000 (06:42 +0000)]
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

15 years agoAdd utility function to IRBuilder that takes the difference between two
Nick Lewycky [Fri, 10 Apr 2009 05:30:48 +0000 (05:30 +0000)]
Add utility function to IRBuilder that takes the difference between two
pointers, taking into account the size of the pointed-to object.
Patch by Jeffrey Yasskin!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68768 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoRegenerate.
Nick Lewycky [Fri, 10 Apr 2009 05:18:27 +0000 (05:18 +0000)]
Regenerate.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68767 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoa few fixes to "addrspace(256) is reference offset of GS segment register".
Chris Lattner [Fri, 10 Apr 2009 00:16:23 +0000 (00:16 +0000)]
a few fixes to "addrspace(256) is reference offset of GS segment register".

It turns out that there are still several problems with this, will file a bugzilla.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68749 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoPass in the std::string parameter instead of returning it by value.
Bill Wendling [Fri, 10 Apr 2009 00:12:49 +0000 (00:12 +0000)]
Pass in the std::string parameter instead of returning it by value.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68747 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoConstify getter methods.
Bill Wendling [Fri, 10 Apr 2009 00:00:25 +0000 (00:00 +0000)]
Constify getter methods.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68745 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoRemove the obsolete SelectionDAG::getNodeValueTypes and simplify
Dan Gohman [Thu, 9 Apr 2009 23:54:40 +0000 (23:54 +0000)]
Remove the obsolete SelectionDAG::getNodeValueTypes and simplify
code that uses it by using SelectionDAG::getVTList instead.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68744 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoChange the NumVTs field from short to int, since there's no
Dan Gohman [Thu, 9 Apr 2009 23:53:31 +0000 (23:53 +0000)]
Change the NumVTs field from short to int, since there's no
real need for it to be short.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68742 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoStringMap<DIE*>::iterator::first() returns a pointer to the first character of
Bill Wendling [Thu, 9 Apr 2009 23:51:31 +0000 (23:51 +0000)]
StringMap<DIE*>::iterator::first() returns a pointer to the first character of
the key. This will cause it to create a new std::string, which isn't
wanted. Instead, pass back the "const char*". Modify the EmitString() method to
take a "const char*".

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68741 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoSilence unused variable warning.
Devang Patel [Thu, 9 Apr 2009 23:45:17 +0000 (23:45 +0000)]
Silence unused variable warning.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68735 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoignore register zero in isRegTiedToUseOperand, following the example of
Chris Lattner [Thu, 9 Apr 2009 23:33:34 +0000 (23:33 +0000)]
ignore register zero in isRegTiedToUseOperand, following the example of
isRegTiedToDefOperand.  Thanks to Bob for pointing this out!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68734 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoGive register alias checking the hash table treatment too.
Owen Anderson [Thu, 9 Apr 2009 22:19:30 +0000 (22:19 +0000)]
Give register alias checking the hash table treatment too.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68730 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoUse a StringMap instead of std::map for storing std::string->DIE* maps. This
Bill Wendling [Thu, 9 Apr 2009 21:49:15 +0000 (21:49 +0000)]
Use a StringMap instead of std::map for storing std::string->DIE* maps. This
gives a micro speedup in the Dwarf writer.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68728 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agollvm.dbg.func_start also defines beginning of function scope.
Devang Patel [Thu, 9 Apr 2009 21:42:11 +0000 (21:42 +0000)]
llvm.dbg.func_start also defines beginning of function scope.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68727 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoRevert r68708. It was causing this failure in the self-hosting buildbot:
Bill Wendling [Thu, 9 Apr 2009 18:26:57 +0000 (18:26 +0000)]
Revert r68708. It was causing this failure in the self-hosting buildbot:

llvm[2]: Compiling lto.cpp for Debug build  (PIC)
make[2]: *** No rule to make target `/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm.sh.build/Debug/lib/libLLVMBitWriter.a', needed by `/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm.sh.build/Release/lib/libLTO.dylib'.  Stop.
make[1]: *** [all] Error 1
make: *** [all] Error 1

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68721 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoFix pr3954. The register scavenger asserts for inline assembly with
Bob Wilson [Thu, 9 Apr 2009 17:16:43 +0000 (17:16 +0000)]
Fix pr3954.  The register scavenger asserts for inline assembly with
register destinations that are tied to source operands.  The
TargetInstrDescr::findTiedToSrcOperand method silently fails for inline
assembly.  The existing MachineInstr::isRegReDefinedByTwoAddr was very
close to doing what is needed, so this revision makes a few changes to
that method and also renames it to isRegTiedToUseOperand (for consistency
with the very similar isRegTiedToDefOperand and because it handles both
two-address instructions and inline assembly with tied registers).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68714 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoThe way we are trying to figure out banksel immediate operand may yield different...
Sanjiv Gupta [Thu, 9 Apr 2009 17:06:24 +0000 (17:06 +0000)]
The way we are trying to figure out banksel immediate operand may yield different results for different type of insns. This will eventually need to be changed but currently let us prevent the crash in cases of incorrect detection of banksel operand.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68713 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoreg0 references are not real registers. This fixes a crash on the
Chris Lattner [Thu, 9 Apr 2009 16:50:43 +0000 (16:50 +0000)]
reg0 references are not real registers.  This fixes a crash on the
attached testcase.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68712 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoMake sure to rebuild dependencies for the `check' and `unittests' targets so
Misha Brukman [Thu, 9 Apr 2009 14:57:00 +0000 (14:57 +0000)]
Make sure to rebuild dependencies for the `check' and `unittests' targets so
we're not testing out-of-date code.  This also makes "make check" and
"make unittests" work out-of-the box right after the configure step, without
requiring the user to run "make tools-only" or "make libs-only".

Tested on Linux/x86_64 and Darwin/x86.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68708 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoArguments to indirect calls were being passed incorrectly. They are not fixed to...
Sanjiv Gupta [Thu, 9 Apr 2009 10:29:32 +0000 (10:29 +0000)]
Arguments to indirect calls were being passed incorrectly. They are not fixed to start after return value.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68705 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoFix code size computation on x86-64, patch by Zoltan Varga!
Chris Lattner [Thu, 9 Apr 2009 06:10:51 +0000 (06:10 +0000)]
Fix code size computation on x86-64, patch by Zoltan Varga!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68690 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoadd an accessor method, patch by John McCall!
Chris Lattner [Thu, 9 Apr 2009 05:56:58 +0000 (05:56 +0000)]
add an accessor method, patch by John McCall!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68684 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agor68576 unconverd a bug in PIC16 port (Thanks to Dan Gohman) where we were custom...
Sanjiv Gupta [Thu, 9 Apr 2009 04:03:43 +0000 (04:03 +0000)]
r68576 unconverd a bug in PIC16 port (Thanks to Dan Gohman) where we were custom lowering an ADD to ADDC.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68671 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoGeneralize ExtendUsesToFormExtLoad to be usable for ANY_EXTEND,
Dan Gohman [Thu, 9 Apr 2009 03:51:29 +0000 (03:51 +0000)]
Generalize ExtendUsesToFormExtLoad to be usable for ANY_EXTEND,
in addition to ZERO_EXTEND and SIGN_EXTEND. Fix a bug in the
way it checked for live-out values, and simplify the way it
find users by using SDNode::use_iterator's (relatively) new
features. Also, make it slightly more permissive on targets
with free truncates.

In SelectionDAGBuild, avoid creating ANY_EXTEND nodes that are
larger than necessary. If the target's SwitchAmountTy has
enough bits, use it. This exposes the truncate to optimization
early, enabling more optimizations.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68670 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoConvert TargetRegisterInfo's super-register checking to use a pre-computed hash table...
Owen Anderson [Thu, 9 Apr 2009 03:50:16 +0000 (03:50 +0000)]
Convert TargetRegisterInfo's super-register checking to use a pre-computed hash table just like subregister checking does.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68669 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoFix pointer casting problem.
Nick Lewycky [Thu, 9 Apr 2009 03:10:03 +0000 (03:10 +0000)]
Fix pointer casting problem.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68668 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoDon't copy the operand of a SwitchInst into virtual registers as
Dan Gohman [Thu, 9 Apr 2009 02:33:36 +0000 (02:33 +0000)]
Don't copy the operand of a SwitchInst into virtual registers as
eagerly. This helps avoid CopyToReg nodes in some cases where they
aren't needed, and also helps subsequent optimizer heuristics
in cases where the extra nodes would cause the node to appear
to have multiple results. This doesn't have a significant impact
currently; it'll help an upcoming change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68667 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoFix grammaros in comments.
Dan Gohman [Thu, 9 Apr 2009 02:06:09 +0000 (02:06 +0000)]
Fix grammaros in comments.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68666 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoFixed compiler warning.
Misha Brukman [Thu, 9 Apr 2009 00:42:37 +0000 (00:42 +0000)]
Fixed compiler warning.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68664 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoAdd sys::Path::makeAbsolute().
Daniel Dunbar [Thu, 9 Apr 2009 00:33:08 +0000 (00:33 +0000)]
Add sys::Path::makeAbsolute().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68663 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoFix BitstreamReader's GetCurrentBitNo to return the correct bit number, and stop...
Douglas Gregor [Wed, 8 Apr 2009 22:26:47 +0000 (22:26 +0000)]
Fix BitstreamReader's GetCurrentBitNo to return the correct bit number, and stop JumpToBit from covering up its mistakes

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68648 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoIf subprogram type is not tagged as DW_TAG_subroutine_type then use it directly as...
Devang Patel [Wed, 8 Apr 2009 22:18:45 +0000 (22:18 +0000)]
If subprogram type is not tagged as DW_TAG_subroutine_type then use it directly as a return value type.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68647 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoRe-apply 68552.
Rafael Espindola [Wed, 8 Apr 2009 21:14:34 +0000 (21:14 +0000)]
Re-apply 68552.
Tested by bootstrapping llvm-gcc and using that to build llvm.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68645 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoAdd testcase for PR3795.
Bob Wilson [Wed, 8 Apr 2009 18:00:55 +0000 (18:00 +0000)]
Add testcase for PR3795.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68620 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoFix PR3795: Apply Dan's suggested fix for
Bob Wilson [Wed, 8 Apr 2009 17:55:28 +0000 (17:55 +0000)]
Fix PR3795: Apply Dan's suggested fix for
ARMTargetLowering::isLegalAddressingMode.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68619 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoAccommodate empty string for build type. This was previously causing an error
Ted Kremenek [Wed, 8 Apr 2009 17:28:16 +0000 (17:28 +0000)]
Accommodate empty string for build type. This was previously causing an error
when generating an Xcode project using the CMake files (thanks to Doug Gregor
for identifying the issue).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68618 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoUse 8 instead of CHAR_BIT
Douglas Gregor [Wed, 8 Apr 2009 16:57:40 +0000 (16:57 +0000)]
Use 8 instead of CHAR_BIT

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68616 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoSoft float support for FREM.
Duncan Sands [Wed, 8 Apr 2009 16:20:57 +0000 (16:20 +0000)]
Soft float support for FREM.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68614 91177308-0d34-0410-b5e6-96231b3b80d8

15 years ago* Fixed calls to APInt ctor to work for negative values on Darwin/x86
Misha Brukman [Wed, 8 Apr 2009 16:17:23 +0000 (16:17 +0000)]
* Fixed calls to APInt ctor to work for negative values on Darwin/x86
* Converted C-style casts to C++-style casts

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68613 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoAdd BitstreamWriter::GetCurrentBitNo, to report where we are in the output bitstream
Douglas Gregor [Wed, 8 Apr 2009 15:18:21 +0000 (15:18 +0000)]
Add BitstreamWriter::GetCurrentBitNo, to report where we are in the output bitstream

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68610 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoSoft float support for undef. Reported by Xerxes Rånby.
Duncan Sands [Wed, 8 Apr 2009 13:33:37 +0000 (13:33 +0000)]
Soft float support for undef.  Reported by Xerxes Rånby.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68607 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoAvoid a hard coded constant.
Rafael Espindola [Wed, 8 Apr 2009 08:09:33 +0000 (08:09 +0000)]
Avoid a hard coded constant.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68603 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoEmit .line debug directives for stoppoints. The debug location is retrieved by the...
Sanjiv Gupta [Wed, 8 Apr 2009 06:24:04 +0000 (06:24 +0000)]
Emit .line debug directives for stoppoints. The debug location is retrieved by the MachineInstr itself, rather than by custom handling the DBG_STOPPOINT nodes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68602 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoInstcombine should not promote whole computation trees to "strange"
Chris Lattner [Wed, 8 Apr 2009 05:41:03 +0000 (05:41 +0000)]
Instcombine should not promote whole computation trees to "strange"
integer types, unless they are already strange.  This prevents it from
turning the code produced by SROA into crazy libcalls and stuff that
the code generator can't handle.  In the attached example, the result
was an i96 multiply that caused the x86 backend to assert.

Note that if TargetData had an idea of what the legal types are for
a target that this could be used to stop instcombine from introducing
i64 muls, as Scott wanted.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68598 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoHandle indirect function calls.
Sanjiv Gupta [Wed, 8 Apr 2009 05:38:48 +0000 (05:38 +0000)]
Handle indirect function calls.
Every function has the address of its frame in the beginning of code section.
The frame address is retrieved and used to pass arguments.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68597 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agodisable this code for now, re-breaking PR2975, but fixing
Chris Lattner [Wed, 8 Apr 2009 04:36:59 +0000 (04:36 +0000)]
disable this code for now, re-breaking PR2975, but fixing
a testcase I'm about to attach to that pr.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68592 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoRemove AllowInverse: it leaks memory and is not the right
Chris Lattner [Wed, 8 Apr 2009 03:43:51 +0000 (03:43 +0000)]
Remove AllowInverse: it leaks memory and is not the right
abstraction for CommandLine.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68588 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoFully escape the grep string for this test.
Dan Gohman [Wed, 8 Apr 2009 00:54:40 +0000 (00:54 +0000)]
Fully escape the grep string for this test.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68580 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoUpdate this test for recent codegen improvements. CodeGen is now
Dan Gohman [Wed, 8 Apr 2009 00:51:11 +0000 (00:51 +0000)]
Update this test for recent codegen improvements. CodeGen is now
using an lea in place of a mov and an add for this test.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68579 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agochange printStringChar to emit characters as unsigned char instead of char,
Chris Lattner [Wed, 8 Apr 2009 00:28:38 +0000 (00:28 +0000)]
change printStringChar to emit characters as unsigned char instead of char,
avoiding sign extension for the top octet.  For "negative" chars, we'd print
stuff like:

.asciz "\702...
now we print:
.asciz "\302...

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68577 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoImplement support for using modeling implicit-zero-extension on x86-64
Dan Gohman [Wed, 8 Apr 2009 00:15:30 +0000 (00:15 +0000)]
Implement support for using modeling implicit-zero-extension on x86-64
with SUBREG_TO_REG, teach SimpleRegisterCoalescing to coalesce
SUBREG_TO_REG instructions (which are similar to INSERT_SUBREG
instructions), and teach the DAGCombiner to take advantage of this on
targets which support it. This eliminates many redundant
zero-extension operations on x86-64.

This adds a new TargetLowering hook, isZExtFree. It's similar to
isTruncateFree, except it only applies to actual definitions, and not
no-op truncates which may not zero the high bits.

Also, this adds a new optimization to SimplifyDemandedBits: transform
operations like x+y into (zext (add (trunc x), (trunc y))) on targets
where all the casts are no-ops. In contexts where the high part of the
add is explicitly masked off, this allows the mask operation to be
eliminated. Fix the DAGCombiner to avoid undoing these transformations
to eliminate casts on targets where the casts are no-ops.

Also, this adds a new two-address lowering heuristic. Since
two-address lowering runs before coalescing, it helps to be able to
look through copies when deciding whether commuting and/or
three-address conversion are profitable.

Also, fix a bug in LiveInterval::MergeInClobberRanges. It didn't handle
the case that a clobber range extended both before and beyond an
existing live range. In that case, multiple live ranges need to be
added. This was exposed by the new subreg coalescing code.

Remove 2008-05-06-SpillerBug.ll. It was bugpoint-reduced, and the
spiller behavior it was looking for no longer occurrs with the new
instruction selection.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68576 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoRevert prev. patch for now.
Devang Patel [Tue, 7 Apr 2009 23:00:04 +0000 (23:00 +0000)]
Revert prev. patch for now.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68569 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoTemporarily revert r68552. This was causing a failure in the self-hosting LLVM
Bill Wendling [Tue, 7 Apr 2009 22:35:25 +0000 (22:35 +0000)]
Temporarily revert r68552. This was causing a failure in the self-hosting LLVM
builds.

--- Reverse-merging (from foreign repository) r68552 into '.':
U    test/CodeGen/X86/tls8.ll
U    test/CodeGen/X86/tls10.ll
U    test/CodeGen/X86/tls2.ll
U    test/CodeGen/X86/tls6.ll
U    lib/Target/X86/X86Instr64bit.td
U    lib/Target/X86/X86InstrSSE.td
U    lib/Target/X86/X86InstrInfo.td
U    lib/Target/X86/X86RegisterInfo.cpp
U    lib/Target/X86/X86ISelLowering.cpp
U    lib/Target/X86/X86CodeEmitter.cpp
U    lib/Target/X86/X86FastISel.cpp
U    lib/Target/X86/X86InstrInfo.h
U    lib/Target/X86/X86ISelDAGToDAG.cpp
U    lib/Target/X86/AsmPrinter/X86ATTAsmPrinter.cpp
U    lib/Target/X86/AsmPrinter/X86IntelAsmPrinter.cpp
U    lib/Target/X86/AsmPrinter/X86ATTAsmPrinter.h
U    lib/Target/X86/AsmPrinter/X86IntelAsmPrinter.h
U    lib/Target/X86/X86ISelLowering.h
U    lib/Target/X86/X86InstrInfo.cpp
U    lib/Target/X86/X86InstrBuilder.h
U    lib/Target/X86/X86RegisterInfo.td

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68560 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoRight now DBG_LABEL are required for llvm.dbg.region_start and llvm.dbg.region_end...
Devang Patel [Tue, 7 Apr 2009 22:27:56 +0000 (22:27 +0000)]
Right now DBG_LABEL are required for llvm.dbg.region_start and llvm.dbg.region_end in non-fast mode also.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68559 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoReduce code duplication on the TLS implementation.
Rafael Espindola [Tue, 7 Apr 2009 21:37:46 +0000 (21:37 +0000)]
Reduce code duplication on the TLS implementation.
This introduces a small regression on the generated code
quality in the case we are just computing addresses, not
loading values.

Will work on it and on X86-64 support.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68552 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoDon't attempt to handle aggregate argument values in FastISel; let
Dan Gohman [Tue, 7 Apr 2009 20:40:11 +0000 (20:40 +0000)]
Don't attempt to handle aggregate argument values in FastISel; let
SelectionDAG do those. This fixes PR3955.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68546 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoPR2985 / <rdar://problem/6584986>
Jim Grosbach [Tue, 7 Apr 2009 20:34:09 +0000 (20:34 +0000)]
PR2985 / <rdar://problem/6584986>

When compiling in Thumb mode, only the low (R0-R7) registers are available
for most instructions. Breaking the low registers into a new register class
handles this. Uses of R12, SP, etc, are handled explicitly where needed
with copies inserted to move results into low registers where the rest of
the code generator can deal with them.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68545 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoRemove ccc now. Radar 6737767
Mike Stump [Tue, 7 Apr 2009 20:29:25 +0000 (20:29 +0000)]
Remove ccc now.  Radar 6737767

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68544 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agofix style.
Torok Edwin [Tue, 7 Apr 2009 19:45:59 +0000 (19:45 +0000)]
fix style.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68542 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoUse 'name' instead of 'href'.
Bill Wendling [Tue, 7 Apr 2009 18:54:06 +0000 (18:54 +0000)]
Use 'name' instead of 'href'.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68534 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoFix verification failure.
Bill Wendling [Tue, 7 Apr 2009 18:52:30 +0000 (18:52 +0000)]
Fix verification failure.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68531 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoOffer an explanation of why building LLVM-GCC with objdir == srcdir doesn't
Bill Wendling [Tue, 7 Apr 2009 18:51:13 +0000 (18:51 +0000)]
Offer an explanation of why building LLVM-GCC with objdir == srcdir doesn't
work.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68530 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoAnother reformatting. No change in docs.
Bill Wendling [Tue, 7 Apr 2009 18:40:56 +0000 (18:40 +0000)]
Another reformatting. No change in docs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68528 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoAnother attempt at fixing PR2975.
Torok Edwin [Tue, 7 Apr 2009 17:23:02 +0000 (17:23 +0000)]
Another attempt at fixing PR2975.
Types can have references to eachother, so we can't just call destroy on them.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68523 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agofix comment to reflect the implementation I ended up settling on.
Chris Lattner [Tue, 7 Apr 2009 16:30:31 +0000 (16:30 +0000)]
fix comment to reflect the implementation I ended up settling on.
Thanks to Duncan for noticing this

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68518 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agofix rdar://6762290, a crash compiling cxx filt with clang.
Chris Lattner [Tue, 7 Apr 2009 05:03:34 +0000 (05:03 +0000)]
fix rdar://6762290, a crash compiling cxx filt with clang.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68500 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoAdd an API for the bitstream reader to read blobs and return
Chris Lattner [Tue, 7 Apr 2009 02:56:46 +0000 (02:56 +0000)]
Add an API for the bitstream reader to read blobs and return
them by reference, instead of packing each byte into a
smallvector.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68486 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoremove empty section
Chris Lattner [Tue, 7 Apr 2009 02:55:53 +0000 (02:55 +0000)]
remove empty section

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68485 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoAdd svn:ignore properties.
Dan Gohman [Tue, 7 Apr 2009 00:26:29 +0000 (00:26 +0000)]
Add svn:ignore properties.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68479 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agostub out code for reading record with blobs as blobs. Not active yet.
Chris Lattner [Mon, 6 Apr 2009 22:44:40 +0000 (22:44 +0000)]
stub out code for reading record with blobs as blobs.  Not active yet.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68472 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoallow clients to look up abbrev id's
Chris Lattner [Mon, 6 Apr 2009 22:43:46 +0000 (22:43 +0000)]
allow clients to look up abbrev id's

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68471 91177308-0d34-0410-b5e6-96231b3b80d8