oota-llvm.git
13 years agoTemporarily revert 124765 in an attempt to find the cycle breaking bootstrap.
Eric Christopher [Thu, 3 Feb 2011 05:40:54 +0000 (05:40 +0000)]
Temporarily revert 124765 in an attempt to find the cycle breaking bootstrap.

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

13 years agoPlatform tests for `sys/uio.h' header and `writev' function.
Oscar Fuentes [Thu, 3 Feb 2011 04:23:07 +0000 (04:23 +0000)]
Platform tests for `sys/uio.h' header and `writev' function.

This is the cmake equivalent for r124769.

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

13 years agoAdd -march to fix the bots.
Rafael Espindola [Thu, 3 Feb 2011 04:21:01 +0000 (04:21 +0000)]
Add -march to fix the bots.

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

13 years agoFix PR9127 by reversing the operands even if they have more then one use.
Rafael Espindola [Thu, 3 Feb 2011 03:58:05 +0000 (03:58 +0000)]
Fix PR9127 by reversing the operands even if they have more then one use.
Reversing the operands allows us to fold, but doesn't force us to. Also, at
this point the DAG is still being optimized, so the check for hasOneUse is not
very precise.

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

13 years agoraw_fd_ostream: Add a SetUseAtomicWrites() method (uses writev).
Daniel Dunbar [Thu, 3 Feb 2011 03:32:32 +0000 (03:32 +0000)]
raw_fd_ostream: Add a SetUseAtomicWrites() method (uses writev).

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

13 years agoRegenerate configure.
Daniel Dunbar [Thu, 3 Feb 2011 02:40:02 +0000 (02:40 +0000)]
Regenerate configure.

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

13 years agoconfigure: Add checks for <sys/uio.h> and writev().
Daniel Dunbar [Thu, 3 Feb 2011 02:39:58 +0000 (02:39 +0000)]
configure: Add checks for <sys/uio.h> and writev().

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

13 years agoDefer SplitKit value mapping until all defs are available.
Jakob Stoklund Olesen [Thu, 3 Feb 2011 00:54:23 +0000 (00:54 +0000)]
Defer SplitKit value mapping until all defs are available.

The greedy register allocator revealed some problems with the value mapping in
SplitKit. We would sometimes start mapping values before all defs were known,
and that could change a value from a simple 1-1 mapping to a multi-def mapping
that requires ssa update.

The new approach collects all defs and register assignments first without
filling in any live intervals. Only when finish() is called, do we compute
liveness and mapped values. At this time we know with certainty which values map
to multiple values in a split range.

This also has the advantage that we can compute live ranges based on the
remaining uses after rematerializing at split points.

The current implementation has many opportunities for compile time optimization.

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

13 years agoUpdate docs to match reality.
Devang Patel [Thu, 3 Feb 2011 00:22:17 +0000 (00:22 +0000)]
Update docs to match reality.

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

13 years agoFix typo in comment.
Devang Patel [Thu, 3 Feb 2011 00:13:47 +0000 (00:13 +0000)]
Fix typo in comment.

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

13 years agoAdd support to describe template value parameter in debug info.
Devang Patel [Wed, 2 Feb 2011 22:35:53 +0000 (22:35 +0000)]
Add support to describe template value parameter in debug info.

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

13 years agoAdd support to describe template parameter type in debug info.
Devang Patel [Wed, 2 Feb 2011 21:38:25 +0000 (21:38 +0000)]
Add support to describe template parameter type in debug info.

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

13 years agoReenable the transform "(X*Y)/Y->X" when the multiplication is known not to
Duncan Sands [Wed, 2 Feb 2011 20:52:00 +0000 (20:52 +0000)]
Reenable the transform "(X*Y)/Y->X" when the multiplication is known not to
overflow (nsw flag), which was disabled because it breaks 254.gap.  I have
informed the GAP authors of the mistake in their code, and arranged for the
testsuite to use -fwrapv when compiling this benchmark.

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

13 years agoChanged the TableGen created MatchInstructionImpl() setting of ErrorInfo.
Kevin Enderby [Wed, 2 Feb 2011 18:20:55 +0000 (18:20 +0000)]
Changed the TableGen created MatchInstructionImpl() setting of ErrorInfo.

The algorithm for identifying which operand is invalid will now always point to
some operand and not the mnemonic sometimes.  The change is now that ErrorInfo
is the index of the highest operand that does not match for any of the matching
mnemonics records.  And no longer the ~0U value when the mnemonic matches and
not every record with a matching mnemonic has the same mismatching operand
index.

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

13 years agoUpdate comment to match my recent change.
Bob Wilson [Wed, 2 Feb 2011 17:29:40 +0000 (17:29 +0000)]
Update comment to match my recent change.

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

13 years agoSimplifyCFG: Turn switches into sub+icmp+branch if possible.
Benjamin Kramer [Wed, 2 Feb 2011 15:56:22 +0000 (15:56 +0000)]
SimplifyCFG: Turn switches into sub+icmp+branch if possible.

This makes the job of the later optzn passes easier, allowing the vast amount of
icmp transforms to chew on it.

We transform 840 switches in gcc.c, leading to a 16k byte shrink of the resulting
binary on i386-linux.

The testcase from README.txt now compiles into
  decl  %edi
  cmpl  $3, %edi
  sbbl  %eax, %eax
  andl  $1, %eax
  ret

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

13 years agoAdd support for trampolines on the XCore.
Richard Osborne [Wed, 2 Feb 2011 14:57:41 +0000 (14:57 +0000)]
Add support for trampolines on the XCore.

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

13 years agoRemove NoVendor and NoOS, added in commit 123990, from Triple. While it
Duncan Sands [Wed, 2 Feb 2011 10:08:38 +0000 (10:08 +0000)]
Remove NoVendor and NoOS, added in commit 123990, from Triple.  While it
may be useful to understand "none", this is not the place for it.  Tweak
the fix to Normalize while there: the fix added in 123990 works correctly,
but I like this way better.  Finally, now that Triple understands some
non-trivial environment values, teach the unittests about them.

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

13 years agoRemove wasteful caching. This isn't needed for correctness because any function
Nick Lewycky [Wed, 2 Feb 2011 05:31:01 +0000 (05:31 +0000)]
Remove wasteful caching. This isn't needed for correctness because any function
that might have changed been affected by a merge elsewhere will have been
removed from the function set, and it isn't needed for performance because we
call grow() ahead of time to prevent reallocations.

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

13 years agoConservatively, clear optional flags, such as nsw, when performing
Dan Gohman [Wed, 2 Feb 2011 02:05:46 +0000 (02:05 +0000)]
Conservatively, clear optional flags, such as nsw, when performing
reassociation. No testcase, because I wasn't able to create a testcase
which actually demonstrates a problem.

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

13 years agoFix reassociate to clear optional flags, such as nsw.
Dan Gohman [Wed, 2 Feb 2011 02:02:34 +0000 (02:02 +0000)]
Fix reassociate to clear optional flags, such as nsw.

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

13 years agoFixed a bug in the disassembler where the mandatory 0x66
Sean Callanan [Wed, 2 Feb 2011 01:09:02 +0000 (01:09 +0000)]
Fixed a bug in the disassembler where the mandatory 0x66
prefix would be misinterpreted in some cases on 32-bit
x86 platforms.  Thanks to Olivier Meurant for identifying
the bug.

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

13 years agoGiven a pair of floating point load and store, if there are no other uses of
Evan Cheng [Wed, 2 Feb 2011 01:06:55 +0000 (01:06 +0000)]
Given a pair of floating point load and store, if there are no other uses of
the load, then it may be legal to transform the load and store to integer
load and store of the same width.

This is done if the target specified the transformation as profitable. e.g.
On arm, this can transform:
vldr.32 s0, []
vstr.32 s0, []

to

ldr r12, []
str r12, []

rdar://8944252

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

13 years agoFix comment typo.
Bob Wilson [Wed, 2 Feb 2011 00:46:09 +0000 (00:46 +0000)]
Fix comment typo.

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

13 years agoPR9081: Split up LDM instruction with deprecated use of both LR and PC.
Bob Wilson [Tue, 1 Feb 2011 22:30:51 +0000 (22:30 +0000)]
PR9081: Split up LDM instruction with deprecated use of both LR and PC.
This is completely untested but pretty straightforward, so hopefully I
got it right.

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

13 years agoTake Bill Wendling's suggestion for structuring a couple of asserts.
Matt Beaumont-Gay [Tue, 1 Feb 2011 22:12:50 +0000 (22:12 +0000)]
Take Bill Wendling's suggestion for structuring a couple of asserts.

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

13 years agoUpdate to match changes in lldb interface.
Devang Patel [Tue, 1 Feb 2011 21:47:35 +0000 (21:47 +0000)]
Update to match changes in lldb interface.

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

13 years agoFix imm printing for logical instructions.
Anton Korobeynikov [Tue, 1 Feb 2011 20:22:53 +0000 (20:22 +0000)]
Fix imm printing for logical instructions.
Patch by Brian G. Lucas!

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

13 years agoDocument the LLVM GIT mirror
Anton Korobeynikov [Tue, 1 Feb 2011 20:08:28 +0000 (20:08 +0000)]
Document the LLVM GIT mirror

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

13 years ago[AVX] Implement EnforceSmallerThan for mixed int/fp type lists. This
David Greene [Tue, 1 Feb 2011 19:12:32 +0000 (19:12 +0000)]
[AVX] Implement EnforceSmallerThan for mixed int/fp type lists.  This
makes type checking for extract_subvector and insert_subvector more
robust and will allow stricter typechecking of more patterns in the
future.

This change handles int and fp as disjoint sets so that it will
enforce integer types to be smaller than the largest integer type and
fp types to be smaller than the largest fp type.  There is no attempt
to check type sizes across the int/fp sets.

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

13 years agoRemove stale references of obsolete @llvm.dbg.variable.
Devang Patel [Tue, 1 Feb 2011 17:22:12 +0000 (17:22 +0000)]
Remove stale references of obsolete @llvm.dbg.variable.

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

13 years agoMake SwitchInst::removeCase() more efficient.
Jay Foad [Tue, 1 Feb 2011 09:22:34 +0000 (09:22 +0000)]
Make SwitchInst::removeCase() more efficient.

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

13 years agoAdd a m_Undef pattern for convenience. This is so that code that uses
Duncan Sands [Tue, 1 Feb 2011 09:06:20 +0000 (09:06 +0000)]
Add a m_Undef pattern for convenience.  This is so that code that uses
pattern matching can also pattern match undef, creating a more uniform
style.

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

13 years agoAdd a m_SignBit pattern for convenience.
Duncan Sands [Tue, 1 Feb 2011 08:50:33 +0000 (08:50 +0000)]
Add a m_SignBit pattern for convenience.

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

13 years agoHave m_One also match constant vectors for which every element is 1.
Duncan Sands [Tue, 1 Feb 2011 08:39:12 +0000 (08:39 +0000)]
Have m_One also match constant vectors for which every element is 1.

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

13 years agoTest commit - fix a double 'should' in a comment.
Carl Norum [Tue, 1 Feb 2011 07:38:42 +0000 (07:38 +0000)]
Test commit - fix a double 'should' in a comment.

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

13 years agoCorrectly merge available_externally and regular definitions when they have
Rafael Espindola [Tue, 1 Feb 2011 05:33:52 +0000 (05:33 +0000)]
Correctly merge available_externally and regular definitions when they have
different visibilities.

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

13 years agoFix bogus assert condition noticed by Csaba Raduly.
Evan Cheng [Tue, 1 Feb 2011 01:50:49 +0000 (01:50 +0000)]
Fix bogus assert condition noticed by Csaba Raduly.

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

13 years agoReapply 124275 since the Dragonegg failure was unreproducible.
Eric Christopher [Tue, 1 Feb 2011 01:16:32 +0000 (01:16 +0000)]
Reapply 124275 since the Dragonegg failure was unreproducible.

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

13 years agoFix test for non-darwin targets.
Evan Cheng [Tue, 1 Feb 2011 01:16:18 +0000 (01:16 +0000)]
Fix test for non-darwin targets.

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

13 years agoPatches to build EFI with Clang/LLVM. By Carl Norum.
Evan Cheng [Tue, 1 Feb 2011 01:14:13 +0000 (01:14 +0000)]
Patches to build EFI with Clang/LLVM. By Carl Norum.

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

13 years agoRemove stale test that has never worked, afaik.
Devang Patel [Tue, 1 Feb 2011 00:47:16 +0000 (00:47 +0000)]
Remove stale test that has never worked, afaik.

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

13 years agoDon't tell the linker about available_externally definitions. If we do, it will
Rafael Espindola [Tue, 1 Feb 2011 00:41:51 +0000 (00:41 +0000)]
Don't tell the linker about available_externally definitions. If we do, it will
complain about duplicated definitions.

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

13 years agoKeep track of incoming argument's location while emitting LiveIns.
Devang Patel [Mon, 31 Jan 2011 21:38:14 +0000 (21:38 +0000)]
Keep track of incoming argument's location while emitting LiveIns.

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

13 years agoWhile printing "interesting" breakpoint locations for debug info quality test harness...
Devang Patel [Mon, 31 Jan 2011 21:36:24 +0000 (21:36 +0000)]
While printing "interesting" breakpoint locations for debug info quality test harness, focus only on entry block's terminator for now.

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

13 years agoEnumerate .code16/32/64 instead of checking .code prefix. This
Roman Divacky [Mon, 31 Jan 2011 21:19:43 +0000 (21:19 +0000)]
Enumerate .code16/32/64 instead of checking .code prefix. This
unbreaks some ARM tests.

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

13 years agoTidy up.
Devang Patel [Mon, 31 Jan 2011 21:16:37 +0000 (21:16 +0000)]
Tidy up.

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

13 years agoFocus on arguments for now.
Devang Patel [Mon, 31 Jan 2011 21:15:39 +0000 (21:15 +0000)]
Focus on arguments for now.

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

13 years agoError on all .code* directives instead of just .code16 as they
Roman Divacky [Mon, 31 Jan 2011 20:56:49 +0000 (20:56 +0000)]
Error on all .code* directives instead of just .code16 as they
all lead to a silent miscompilation of code.

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

13 years agoFix vector sign extend to put the source and destination types in the
David Greene [Mon, 31 Jan 2011 20:39:01 +0000 (20:39 +0000)]
Fix vector sign extend to put the source and destination types in the
correct places.

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

13 years agoadd a note, progress unblocked by PR8575 being fixed.
Chris Lattner [Mon, 31 Jan 2011 20:23:28 +0000 (20:23 +0000)]
add a note, progress unblocked by PR8575 being fixed.

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

13 years agoAdds some platform checks to cmake/config-ix.cmake and fixes checking
Oscar Fuentes [Mon, 31 Jan 2011 18:25:25 +0000 (18:25 +0000)]
Adds some platform checks to cmake/config-ix.cmake and fixes checking
for dlopen/dlerror.

Patch by arrowdodger!

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

13 years agoFix bug where ReduceLoadWidth was creating illegal ZEXTLOAD instructions.
Richard Osborne [Mon, 31 Jan 2011 17:41:44 +0000 (17:41 +0000)]
Fix bug where ReduceLoadWidth was creating illegal ZEXTLOAD instructions.

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

13 years agoCMake: Fix a few definition to suppress warnings.
NAKAMURA Takumi [Mon, 31 Jan 2011 09:41:20 +0000 (09:41 +0000)]
CMake: Fix a few definition to suppress warnings.

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

13 years agoSave a mapping between original and cloned constpool entries.
Anton Korobeynikov [Sun, 30 Jan 2011 22:07:39 +0000 (22:07 +0000)]
Save a mapping between original and cloned constpool entries.

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

13 years agoClarify the LSDASection NULL check
Anton Korobeynikov [Sun, 30 Jan 2011 22:07:31 +0000 (22:07 +0000)]
Clarify the LSDASection NULL check

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

13 years agoRecognize and simplify
Anders Carlsson [Sun, 30 Jan 2011 22:01:13 +0000 (22:01 +0000)]
Recognize and simplify

(A+B) == A  ->  B == 0
A == (A+B)  ->  B == 0

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

13 years agoRespect the -tail-dup-size command line option even when optimizing for size.
Jakob Stoklund Olesen [Sun, 30 Jan 2011 20:38:12 +0000 (20:38 +0000)]
Respect the -tail-dup-size command line option even when optimizing for size.

This is similar to the -unroll-threshold option. There should be no change in
behavior when -tail-dup-size is not explicit on the llc command line.

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

13 years agoCommit 124487 broke 254.gap. See if disabling the part that might be triggered
Duncan Sands [Sun, 30 Jan 2011 18:24:20 +0000 (18:24 +0000)]
Commit 124487 broke 254.gap.  See if disabling the part that might be triggered
by PR9088 fixes things.

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

13 years agoTransform (X/Y)*Y into X if the division is exact. Instcombine already knows how
Duncan Sands [Sun, 30 Jan 2011 18:03:50 +0000 (18:03 +0000)]
Transform (X/Y)*Y into X if the division is exact.  Instcombine already knows how
to do this and more, but would only do it if X/Y had only one use.  Spotted as the
most common missed simplification in SPEC by my auto-simplifier, now that it knows
about nuw/nsw/exact flags.  This removes a bunch of multiplications from 447.dealII
and 483.xalancbmk.  It also removes a lot from tramp3d-v4, which results in much
more inlining.

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

13 years agoTeach DAGCombine to fold fold (sra (trunc (sr x, c1)), c2) -> (trunc (sra x, c1+c2...
Benjamin Kramer [Sun, 30 Jan 2011 16:38:43 +0000 (16:38 +0000)]
Teach DAGCombine to fold fold (sra (trunc (sr x, c1)), c2) -> (trunc (sra x, c1+c2) when c1 equals the amount of bits that are truncated off.

This happens all the time when a smul is promoted to a larger type.

On x86-64 we now compile "int test(int x) { return x/10; }" into
  movslq  %edi, %rax
  imulq $1717986919, %rax, %rax
  movq  %rax, %rcx
  shrq  $63, %rcx
  sarq  $34, %rax <- used to be "shrq $32, %rax; sarl $2, %eax"
  addl  %ecx, %eax

This fires 96 times in gcc.c on x86-64.

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

13 years agoFix 'fcmp one' constant folding. Noticed by inspection.
Nick Lewycky [Sun, 30 Jan 2011 01:49:58 +0000 (01:49 +0000)]
Fix 'fcmp one' constant folding. Noticed by inspection.

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

13 years agoFix some formatting and upgrade comments from llvm 1.x to 2.x syntax.
Nick Lewycky [Sun, 30 Jan 2011 01:48:50 +0000 (01:48 +0000)]
Fix some formatting and upgrade comments from llvm 1.x to 2.x syntax.

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

13 years agoThis is #included by .c files. Remove C++-style comments.
Bill Wendling [Sat, 29 Jan 2011 21:54:26 +0000 (21:54 +0000)]
This is #included by .c files. Remove C++-style comments.

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

13 years agoAdd the select optimization recently added to instcombine to constant folding.
Nick Lewycky [Sat, 29 Jan 2011 20:35:06 +0000 (20:35 +0000)]
Add the select optimization recently added to instcombine to constant folding.
This is the one where one of the branches of the select is another select on
the same condition.

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

13 years agoUnbreak the MSVC build.
Francois Pichet [Sat, 29 Jan 2011 20:06:16 +0000 (20:06 +0000)]
Unbreak the MSVC build.

The DEBUG() call at line 606 demands to see raw_ostream's definition. I have no idea why this seems to only break MSVC.

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

13 years agoFix comment.
Nick Lewycky [Sat, 29 Jan 2011 19:55:23 +0000 (19:55 +0000)]
Fix comment.

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

13 years agoCall SimplifyFDivInst() in InstCombiner::visitFDiv().
Frits van Bommel [Sat, 29 Jan 2011 17:50:27 +0000 (17:50 +0000)]
Call SimplifyFDivInst() in InstCombiner::visitFDiv().

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

13 years agoMove InstCombine's knowledge of fdiv to SimplifyInstruction().
Frits van Bommel [Sat, 29 Jan 2011 15:26:31 +0000 (15:26 +0000)]
Move InstCombine's knowledge of fdiv to SimplifyInstruction().

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

13 years agoFix typo: should have been testing that X was odd, not V.
Duncan Sands [Sat, 29 Jan 2011 13:27:00 +0000 (13:27 +0000)]
Fix typo: should have been testing that X was odd, not V.

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

13 years agoAdd the missing sub identity "A-(A-B) -> B" to DAGCombine.
Benjamin Kramer [Sat, 29 Jan 2011 12:34:05 +0000 (12:34 +0000)]
Add the missing sub identity "A-(A-B) -> B" to DAGCombine.

This happens e.g. for code like "X - X%10" where we lower the modulo operation
to a series of multiplies and shifts that are then subtracted from X, leading to
this missed optimization.

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

13 years agoAdd a test for TCE return duplication.
Evan Cheng [Sat, 29 Jan 2011 04:53:35 +0000 (04:53 +0000)]
Add a test for TCE return duplication.

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

13 years agoRe-apply r124518 with fix. Watch out for invalidated iterator.
Evan Cheng [Sat, 29 Jan 2011 04:46:23 +0000 (04:46 +0000)]
Re-apply r124518 with fix. Watch out for invalidated iterator.

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

13 years agoRevert r124518. It broke Linux self-host.
Evan Cheng [Sat, 29 Jan 2011 02:43:04 +0000 (02:43 +0000)]
Revert r124518. It broke Linux self-host.

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

13 years agoRe-commit r124462 with fixes. Tail recursion elim will now dup ret into unconditional...
Evan Cheng [Sat, 29 Jan 2011 01:29:26 +0000 (01:29 +0000)]
Re-commit r124462 with fixes. Tail recursion elim will now dup ret into unconditional predecessor to enable TCE on demand.

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

13 years agoImplementation of path profiling.
Andrew Trick [Sat, 29 Jan 2011 01:09:53 +0000 (01:09 +0000)]
Implementation of path profiling.
Modified patch by Adam Preuss.

This builds on the existing framework for block tracing, edge profiling and optimal edge profiling.
See -help-hidden for new flags.
For documentation, see the technical report "Implementation of Path Profiling..." in llvm.org/pubs.

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

13 years agoMost browsers eliminate whitespace between anchor tags. Force whitespace with
Nick Lewycky [Sat, 29 Jan 2011 01:09:53 +0000 (01:09 +0000)]
Most browsers eliminate whitespace between anchor tags. Force whitespace with
&nbsp; so that the code reads properly.

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

13 years agoError on .code16 instead of producing wrong (32bit) code.
Roman Divacky [Fri, 28 Jan 2011 19:29:48 +0000 (19:29 +0000)]
Error on .code16 instead of producing wrong (32bit) code.

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

13 years agoThis dyn_cast should be a cast. Pointed out by Frits van Bommel.
Duncan Sands [Fri, 28 Jan 2011 18:53:08 +0000 (18:53 +0000)]
This dyn_cast should be a cast.  Pointed out by Frits van Bommel.

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

13 years agoThread divisions over selects and phis. This doesn't fire much and has basically
Duncan Sands [Fri, 28 Jan 2011 18:50:50 +0000 (18:50 +0000)]
Thread divisions over selects and phis.  This doesn't fire much and has basically
zero effect on the testsuite (it improves two Ada testcases).

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

13 years agoPR9030: Fix disassembly of ARM "mov pc, lr" instruction.
Bob Wilson [Fri, 28 Jan 2011 17:50:30 +0000 (17:50 +0000)]
PR9030: Fix disassembly of ARM "mov pc, lr" instruction.
Patch by Jyun-Yan You.

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

13 years agoMy auto-simplifier noticed that ((X/Y)*Y)/Y occurs several times in SPEC
Duncan Sands [Fri, 28 Jan 2011 16:51:11 +0000 (16:51 +0000)]
My auto-simplifier noticed that ((X/Y)*Y)/Y occurs several times in SPEC
benchmarks, and that it can be simplified to X/Y.  (In general you can only
simplify (Z*Y)/Y to Z if the multiplication did not overflow; if Z has the
form "X/Y" then this is the case).  This patch implements that transform and
moves some Div logic out of instcombine and into InstructionSimplify.
Unfortunately instcombine gets in the way somewhat, since it likes to change
(X/Y)*Y into X-(X rem Y), so I had to teach instcombine about this too.
Finally, thanks to the NSW/NUW flags, sometimes we know directly that "Z*Y"
does not overflow, because the flag says so, so I added that logic too.  This
eliminates a bunch of divisions and subtractions in 447.dealII, and has good
effects on some other benchmarks too.  It seems to have quite an effect on
tramp3d-v4 but it's hard to say if it's good or bad because inlining decisions
changed, resulting in massive changes all over.

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

13 years agoFix libffi usage when it is on a custom path.
Oscar Fuentes [Fri, 28 Jan 2011 16:49:05 +0000 (16:49 +0000)]
Fix libffi usage when it is on a custom path.

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

13 years agoAdd support for parsing .float
Roman Divacky [Fri, 28 Jan 2011 14:20:32 +0000 (14:20 +0000)]
Add support for parsing .float

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

13 years agoRename functions to follow coding standard. Also rejiggers comments. No
Nick Lewycky [Fri, 28 Jan 2011 08:43:14 +0000 (08:43 +0000)]
Rename functions to follow coding standard. Also rejiggers comments. No
functionality change.

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

13 years agoAdd a doxygen comment for this class.
Nick Lewycky [Fri, 28 Jan 2011 08:19:00 +0000 (08:19 +0000)]
Add a doxygen comment for this class.

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

13 years agoReorder for readability. (Chris, is this what you meant?)
Nick Lewycky [Fri, 28 Jan 2011 07:36:21 +0000 (07:36 +0000)]
Reorder for readability. (Chris, is this what you meant?)

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

13 years agoRevert r124462. There are a few big regressions that I need to fix first.
Evan Cheng [Fri, 28 Jan 2011 07:12:38 +0000 (07:12 +0000)]
Revert r124462. There are a few big regressions that I need to fix first.

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

13 years agoReduce the number of functions we look at in the first pass, and preallocate
Nick Lewycky [Fri, 28 Jan 2011 05:48:15 +0000 (05:48 +0000)]
Reduce the number of functions we look at in the first pass, and preallocate
the function equality set.

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

13 years agoClean up the tests a little, make sure we match an instruction in the right
Nick Lewycky [Fri, 28 Jan 2011 05:13:17 +0000 (05:13 +0000)]
Clean up the tests a little, make sure we match an instruction in the right
test.

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

13 years agoFix build with stdcxx by using llvm::next. Patch by Joerg Sonnenberger!
Nick Lewycky [Fri, 28 Jan 2011 04:00:15 +0000 (04:00 +0000)]
Fix build with stdcxx by using llvm::next. Patch by Joerg Sonnenberger!

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

13 years agoAdd a triple.
Rafael Espindola [Fri, 28 Jan 2011 03:57:55 +0000 (03:57 +0000)]
Add a triple.

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

13 years agoAdd missing include for ptrdiff_t. Patch by Joerg Sonnenberger!
Nick Lewycky [Fri, 28 Jan 2011 03:52:25 +0000 (03:52 +0000)]
Add missing include for ptrdiff_t. Patch by Joerg Sonnenberger!

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

13 years agoFold select + select where both selects are on the same condition.
Nick Lewycky [Fri, 28 Jan 2011 03:28:10 +0000 (03:28 +0000)]
Fold select + select where both selects are on the same condition.

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

13 years agoPrint the visibility of declarations.
Rafael Espindola [Fri, 28 Jan 2011 03:20:10 +0000 (03:20 +0000)]
Print the visibility of declarations.

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

13 years agoPR8951: Support for .equiv in integrated assembler, patch by Jörg Sonnenberger!
Nico Weber [Fri, 28 Jan 2011 03:04:41 +0000 (03:04 +0000)]
PR8951: Support for .equiv in integrated assembler, patch by Jörg Sonnenberger!

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

13 years ago- Stop simplifycfg from duplicating "ret" instructions into unconditional
Evan Cheng [Fri, 28 Jan 2011 02:19:21 +0000 (02:19 +0000)]
- Stop simplifycfg from duplicating "ret" instructions into unconditional
  branches. PR8575, rdar://5134905, rdar://8911460.
- Allow codegen tail duplication to dup small return blocks after register
  allocation is done.

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

13 years agoFix PLD encoding.
Evan Cheng [Thu, 27 Jan 2011 23:48:34 +0000 (23:48 +0000)]
Fix PLD encoding.

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

13 years agoChanged llvm-mc arm target to give an error if .syntax divided is used. Since
Kevin Enderby [Thu, 27 Jan 2011 23:22:36 +0000 (23:22 +0000)]
Changed llvm-mc arm target to give an error if .syntax divided is used.  Since
only .syntax unified is supported.

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

13 years agoFix a comment typo.
Bob Wilson [Thu, 27 Jan 2011 23:08:52 +0000 (23:08 +0000)]
Fix a comment typo.

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