oota-llvm.git
15 years agoFix PR3934 part 2. findOnlyInterestingUse() was not setting IsCopy and IsDstPhys...
Evan Cheng [Tue, 14 Apr 2009 00:32:25 +0000 (00:32 +0000)]
Fix PR3934 part 2. findOnlyInterestingUse() was not setting IsCopy and IsDstPhys which are returned by value and used by callee. This happened to work on the earlier test cases because of a logic error in the caller side.

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

15 years agoMake these errors more noticable in build logs.
Daniel Dunbar [Mon, 13 Apr 2009 22:26:09 +0000 (22:26 +0000)]
Make these errors more noticable in build logs.

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

15 years agoChange SelectionDAG type legalization to allow BUILD_VECTOR operands to be
Bob Wilson [Mon, 13 Apr 2009 22:05:19 +0000 (22:05 +0000)]
Change SelectionDAG type legalization to allow BUILD_VECTOR operands to be
promoted to legal types without changing the type of the vector.  This is
following a suggestion from Duncan
(http://lists.cs.uiuc.edu/pipermail/llvmdev/2009-February/019923.html).
The transformation that used to be done during type legalization is now
postponed to DAG legalization.  This allows the BUILD_VECTORs to be optimized
and potentially handled specially by target-specific code.

It turns out that this is also consistent with an optimization done by the
DAG combiner: a BUILD_VECTOR and INSERT_VECTOR_ELT may be combined by
replacing one of the BUILD_VECTOR operands with the newly inserted element;
but INSERT_VECTOR_ELT allows its scalar operand to be larger than the
element type, with any extra high bits being implicitly truncated.  The
result is a BUILD_VECTOR where one of the operands has a type larger the
the vector element type.

Any code that operates on BUILD_VECTORs may now need to be aware of the
potential type discrepancy between the vector element type and the
BUILD_VECTOR operands.  This patch updates all of the places that I could
find to handle that case.

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

15 years agoRename COPY_TO_SUBCLASS to COPY_TO_REGCLASS, and generalize
Dan Gohman [Mon, 13 Apr 2009 21:06:25 +0000 (21:06 +0000)]
Rename COPY_TO_SUBCLASS to COPY_TO_REGCLASS, and generalize
it accordingly. Thanks to Jakob Stoklund Olesen for pointing
out how this might be useful.

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

15 years agoRefactor some code in SelectionDAGLegalize::ExpandBUILD_VECTOR.
Bob Wilson [Mon, 13 Apr 2009 20:20:30 +0000 (20:20 +0000)]
Refactor some code in SelectionDAGLegalize::ExpandBUILD_VECTOR.

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

15 years agoPR3934: Fix a bogus two-address pass assertion.
Evan Cheng [Mon, 13 Apr 2009 20:04:24 +0000 (20:04 +0000)]
PR3934: Fix a bogus two-address pass assertion.

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

15 years agoGet rid of some compile warnings.
Bill Wendling [Mon, 13 Apr 2009 19:45:05 +0000 (19:45 +0000)]
Get rid of some compile warnings.

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

15 years agoAdd a static APInt::getNumWords
Douglas Gregor [Mon, 13 Apr 2009 19:43:10 +0000 (19:43 +0000)]
Add a static APInt::getNumWords

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

15 years agoRight now, Debugging information to encode scopes (DW_TAG_lexical_block) relies on...
Devang Patel [Mon, 13 Apr 2009 18:13:16 +0000 (18:13 +0000)]
Right now, Debugging information to encode scopes (DW_TAG_lexical_block) relies on DBG_LABEL. Unfortunately this intefers with the quality of optimized code.
This patch updates dwarf writer to encode scoping information in DWARF only in FastISel mode.

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

15 years agoReapply 68847.
Devang Patel [Mon, 13 Apr 2009 17:02:03 +0000 (17:02 +0000)]
Reapply 68847.
Now debug_inlined section is covered by TAI->doesDwarfUsesInlineInfoSection(), which is false by default.

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

15 years agoImplement x86 h-register extract support.
Dan Gohman [Mon, 13 Apr 2009 16:09:41 +0000 (16:09 +0000)]
Implement x86 h-register extract support.
 - Add patterns for h-register extract, which avoids a shift and mask,
   and in some cases a temporary register.
 - Add address-mode matching for turning (X>>(8-n))&(255<<n), where
   n is a valid address-mode scale value, into an h-register extract
   and a scaled-offset address.
 - Replace X86's MOV32to32_ and related instructions with the new
   target-independent COPY_TO_SUBREG instruction.

On x86-64 there are complicated constraints on h registers, and
CodeGen doesn't currently provide a high-level way to express all of them,
so they are handled with a bunch of special code. This code currently only
supports extracts where the result is used by a zero-extend or a store,
though these are fairly common.

These transformations are not always beneficial; since there are only
4 h registers, they sometimes require extra move instructions, and
this sometimes increases register pressure because it can force out
values that would otherwise be in one of those registers. However,
this appears to be relatively uncommon.

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

15 years agoAdd a new TargetInstrInfo MachineInstr opcode, COPY_TO_SUBCLASS.
Dan Gohman [Mon, 13 Apr 2009 15:38:05 +0000 (15:38 +0000)]
Add a new TargetInstrInfo MachineInstr opcode, COPY_TO_SUBCLASS.
This will be used to replace things like X86's MOV32to32_.

Enhance ScheduleDAGSDNodesEmit to be more flexible and robust
in the presense of subregister superclasses and subclasses. It
can now cope with the definition of a virtual register being in
a subclass of a use.

Re-introduce the code for recording register superreg classes and
subreg classes. This is needed because when subreg extracts and
inserts get coalesced away, the virtual registers are left in
the correct subclass.

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

15 years agoRemove x86's special-case handling for ISD::TRUNCATE and
Dan Gohman [Mon, 13 Apr 2009 15:29:31 +0000 (15:29 +0000)]
Remove x86's special-case handling for ISD::TRUNCATE and
ISD::SIGN_EXTEND_INREG. Tablegen-generated code can handle
these cases, and the scheduling issues observed earlier
appear to be resolved now.

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

15 years agoFix copy+pastos in comments.
Dan Gohman [Mon, 13 Apr 2009 15:28:29 +0000 (15:28 +0000)]
Fix copy+pastos in comments.

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

15 years agoGeneralize getRegisterClassForRegister to handle registers
Dan Gohman [Mon, 13 Apr 2009 15:24:11 +0000 (15:24 +0000)]
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

15 years agoDon't abort on an aliasing physical register that does not have
Dan Gohman [Mon, 13 Apr 2009 15:22:29 +0000 (15:22 +0000)]
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

15 years agoWhen assigning a physical register to a MachineOperand, set
Dan Gohman [Mon, 13 Apr 2009 15:21:32 +0000 (15:21 +0000)]
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

15 years agoList the l registers before h registers, for consistency.
Dan Gohman [Mon, 13 Apr 2009 15:18:42 +0000 (15:18 +0000)]
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

15 years agoAdd an assertion to verify that a copy was actually emitted.
Dan Gohman [Mon, 13 Apr 2009 15:16:56 +0000 (15:16 +0000)]
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

15 years agoUse X86::SUBREG_8BIT instead of hard-coding the equivalent constant.
Dan Gohman [Mon, 13 Apr 2009 15:14:03 +0000 (15:14 +0000)]
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

15 years agoAdd a comment about MOVSX64rr8.
Dan Gohman [Mon, 13 Apr 2009 15:13:28 +0000 (15:13 +0000)]
Add a comment about MOVSX64rr8.

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

15 years agoAdd comments to INSERT_SUBREG, EXTRACT_SURBEG, SUBREG_TO_REG,
Dan Gohman [Mon, 13 Apr 2009 15:12:29 +0000 (15:12 +0000)]
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

15 years agoFix another hard-coded constant to use X86AddrNumOperands.
Dan Gohman [Mon, 13 Apr 2009 15:04:25 +0000 (15:04 +0000)]
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

15 years agoX86-64 TLS support for local exec and initial exec.
Rafael Espindola [Mon, 13 Apr 2009 13:02:49 +0000 (13:02 +0000)]
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

15 years agoWhile passing arg of types larger than char only one byte at lower end was getting...
Sanjiv Gupta [Mon, 13 Apr 2009 09:38:38 +0000 (09:38 +0000)]
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

15 years agoFix ocaml bindings; add "available_externally" linkage type.
Nick Lewycky [Mon, 13 Apr 2009 07:02:32 +0000 (07:02 +0000)]
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

15 years agoFix warning in .ll parser, detect and reject available_externally on function
Nick Lewycky [Mon, 13 Apr 2009 07:02:02 +0000 (07:02 +0000)]
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

15 years agoadd AvailableExternally linkage to C bindings.
Chris Lattner [Mon, 13 Apr 2009 06:25:37 +0000 (06:25 +0000)]
add AvailableExternally linkage to C bindings.

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

15 years agoAdd a new "available_externally" linkage type. This is intended
Chris Lattner [Mon, 13 Apr 2009 05:44:34 +0000 (05:44 +0000)]
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

15 years agoeliminate unneeded parens.
Chris Lattner [Mon, 13 Apr 2009 05:38:23 +0000 (05:38 +0000)]
eliminate unneeded parens.

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

15 years agoRegenerate.
Nick Lewycky [Mon, 13 Apr 2009 04:26:27 +0000 (04:26 +0000)]
Regenerate.

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

15 years agoLink against libffi if available, fall back to "no external calls from
Nick Lewycky [Mon, 13 Apr 2009 04:26:06 +0000 (04:26 +0000)]
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

15 years agoAdd paragraph tags.
Nick Lewycky [Mon, 13 Apr 2009 02:03:40 +0000 (02:03 +0000)]
Add paragraph tags.

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

15 years agofix PR3965:SIGINT handler not restored after calling ParseAST(),
Chris Lattner [Sun, 12 Apr 2009 23:33:13 +0000 (23:33 +0000)]
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

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