Bob Wilson [Fri, 7 Jan 2011 06:44:14 +0000 (06:44 +0000)]
Add testcases for PR8411 (vget_low and vget_high implemented as shuffles).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122997
91177308-0d34-0410-b5e6-
96231b3b80d8
Bob Wilson [Fri, 7 Jan 2011 04:59:04 +0000 (04:59 +0000)]
Add ARM patterns to match EXTRACT_SUBVECTOR nodes.
Also fix an off-by-one in SelectionDAGBuilder that was preventing shuffle
vectors from being translated to EXTRACT_SUBVECTOR.
Patch by Tim Northover.
The test changes are needed to keep those spill-q tests from testing aligned
spills and restores. If the only aligned stack objects are spill slots, we
no longer realign the stack frame. Prior to this patch, an EXTRACT_SUBVECTOR
was legalized by loading from the stack, which created an aligned frame index.
Now, however, there is nothing except the spill slot in the stack frame, so
I added an aligned alloca.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122995
91177308-0d34-0410-b5e6-
96231b3b80d8
Bob Wilson [Fri, 7 Jan 2011 04:58:58 +0000 (04:58 +0000)]
Fix a comment typo.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122994
91177308-0d34-0410-b5e6-
96231b3b80d8
Bob Wilson [Fri, 7 Jan 2011 04:58:56 +0000 (04:58 +0000)]
Change EXTRACT_SUBVECTOR to require a constant index.
We were never generating any of these nodes with variable indices, and there
was one legalizer function asserting on a non-constant index. If we ever have
a need to support variable indices, we can add this back again.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122993
91177308-0d34-0410-b5e6-
96231b3b80d8
Bill Wendling [Fri, 7 Jan 2011 02:54:45 +0000 (02:54 +0000)]
Early exit if we don't have invokes. The 'Unwinds' vector isn't modified unless
we have invokes, so there is no functionality change here.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122990
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan Sands [Thu, 6 Jan 2011 23:45:22 +0000 (23:45 +0000)]
Fix the other problem reported in PR8582. Testcase and patch by
Nadav Rotem.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122983
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan Sands [Thu, 6 Jan 2011 23:04:29 +0000 (23:04 +0000)]
Add a testcase for PR8582, which mysteriously fixed itself, in case the problem
comes back some day.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122982
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Thu, 6 Jan 2011 22:28:56 +0000 (22:28 +0000)]
Add some fairly duplicated code to let type legalization split illegal
typed atomics. This will lower exclusively to libcalls at the moment.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122979
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 6 Jan 2011 22:25:00 +0000 (22:25 +0000)]
With Benjamin's recent amazing patches, we should be able to do even better things :)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122978
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 6 Jan 2011 22:24:29 +0000 (22:24 +0000)]
use isNullValue() to simplify code, add an assert.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122977
91177308-0d34-0410-b5e6-
96231b3b80d8
Devang Patel [Thu, 6 Jan 2011 21:39:25 +0000 (21:39 +0000)]
Emit 128 bit constant.
This fixes PR 8913 crash.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122971
91177308-0d34-0410-b5e6-
96231b3b80d8
Bob Wilson [Thu, 6 Jan 2011 19:24:41 +0000 (19:24 +0000)]
PR8921: LDM/POP do not support interworking prior to v5t.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122970
91177308-0d34-0410-b5e6-
96231b3b80d8
Bob Wilson [Thu, 6 Jan 2011 19:24:36 +0000 (19:24 +0000)]
Remove extra whitespace.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122969
91177308-0d34-0410-b5e6-
96231b3b80d8
Bob Wilson [Thu, 6 Jan 2011 19:24:32 +0000 (19:24 +0000)]
Fix comment typo.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122968
91177308-0d34-0410-b5e6-
96231b3b80d8
Benjamin Kramer [Thu, 6 Jan 2011 17:35:50 +0000 (17:35 +0000)]
Add a note from llvmdev, this time with more info.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122966
91177308-0d34-0410-b5e6-
96231b3b80d8
Abramo Bagnara [Thu, 6 Jan 2011 16:55:14 +0000 (16:55 +0000)]
Fixed parsing of hex floats.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122963
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Thu, 6 Jan 2011 16:48:42 +0000 (16:48 +0000)]
Correctly disassemble truncated asm.
Patch by Richard Simth.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122962
91177308-0d34-0410-b5e6-
96231b3b80d8
Benjamin Kramer [Thu, 6 Jan 2011 14:22:52 +0000 (14:22 +0000)]
InstCombine: Turn _chk functions into the "unsafe" variant if length and max langth are equal.
This happens when we take the (non-constant) length from a malloc.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122961
91177308-0d34-0410-b5e6-
96231b3b80d8
Benjamin Kramer [Thu, 6 Jan 2011 13:19:46 +0000 (13:19 +0000)]
EarlyCSE does this now (and GVN always did it).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122960
91177308-0d34-0410-b5e6-
96231b3b80d8
Benjamin Kramer [Thu, 6 Jan 2011 13:11:05 +0000 (13:11 +0000)]
InstCombine: If we call llvm.objectsize on a malloc call we can replace it with the size passed to malloc.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122959
91177308-0d34-0410-b5e6-
96231b3b80d8
Benjamin Kramer [Thu, 6 Jan 2011 13:07:49 +0000 (13:07 +0000)]
InstCombine: Teach llvm.objectsize folding to look through GEPs.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122958
91177308-0d34-0410-b5e6-
96231b3b80d8
Benjamin Kramer [Thu, 6 Jan 2011 13:01:02 +0000 (13:01 +0000)]
Remove dead code and silence warnings.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122957
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Thu, 6 Jan 2011 07:58:36 +0000 (07:58 +0000)]
Use movups to lower memcpy and memset even if it's not fast (like corei7).
The theory is it's still faster than a pair of movq / a quad of movl. This
will probably hurt older chips like P4 but should run faster on current
and future Intel processors. rdar://
8817010
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122955
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 6 Jan 2011 07:41:22 +0000 (07:41 +0000)]
add a note about object size from drystone, add a poorly optimized loop from 179.art.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122954
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 6 Jan 2011 07:09:23 +0000 (07:09 +0000)]
add a trivial instcombine missed in Dhrystone
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122953
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Thu, 6 Jan 2011 06:52:41 +0000 (06:52 +0000)]
Re-implement r122936 with proper target hooks. Now getMaxStoresPerMemcpy
etc. takes an option OptSize. If OptSize is true, it would return
the inline limit for functions with attribute OptSize.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122952
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 6 Jan 2011 06:19:46 +0000 (06:19 +0000)]
implement constant folding support for an exotic constant expr:
ret i64 ptrtoint (i8* getelementptr ([1000 x i8]* @X, i64 1, i64 sub (i64 0, i64 ptrtoint ([1000 x i8]* @X to i64))) to i64)
to "ret i64 1000". This allows us to correctly compute the trip count
on a loop in PR8883, which occurs with std::fill on a char array. This
allows us to transform it into a memset with a constant size.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122950
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Thu, 6 Jan 2011 06:17:53 +0000 (06:17 +0000)]
Revert r122936. I'll re-implement the change.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122949
91177308-0d34-0410-b5e6-
96231b3b80d8
Michael J. Spencer [Thu, 6 Jan 2011 05:58:02 +0000 (05:58 +0000)]
UnitTests/Path: Add magical tests. This will also test identify_magic.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122948
91177308-0d34-0410-b5e6-
96231b3b80d8
Michael J. Spencer [Thu, 6 Jan 2011 05:57:54 +0000 (05:57 +0000)]
UnitTests/Path: More ASSERT_NO_ERROR cleanup.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122947
91177308-0d34-0410-b5e6-
96231b3b80d8
Cameron Zwarich [Thu, 6 Jan 2011 02:56:42 +0000 (02:56 +0000)]
Add the CallInst optimizations that don't involve expanding inline assembly to
OptimizeInst() so that they can be used on a worklist instruction.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122945
91177308-0d34-0410-b5e6-
96231b3b80d8
Cameron Zwarich [Thu, 6 Jan 2011 02:44:52 +0000 (02:44 +0000)]
Move the GEP handling in CodeGenPrepare to OptimizeInst().
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122944
91177308-0d34-0410-b5e6-
96231b3b80d8
Cameron Zwarich [Thu, 6 Jan 2011 02:37:26 +0000 (02:37 +0000)]
Split the optimizations in CodeGenPrepare that don't manipulate the iterators
into a separate function, so that it can be called from a loop using a worklist
rather than a loop traversing a whole basic block.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122943
91177308-0d34-0410-b5e6-
96231b3b80d8
Jakob Stoklund Olesen [Thu, 6 Jan 2011 01:33:22 +0000 (01:33 +0000)]
Zap the last two -Wself-assign warnings in llvm.
Simplify RALinScan::DowngradeRegister with TRI::getOverlaps while we are there.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122940
91177308-0d34-0410-b5e6-
96231b3b80d8
Jakob Stoklund Olesen [Thu, 6 Jan 2011 01:21:53 +0000 (01:21 +0000)]
Add the SpillPlacement analysis pass.
This pass precomputes CFG block frequency information that can be used by the
register allocator to find optimal spill code placement.
Given an interference pattern, placeSpills() will compute which basic blocks
should have the current variable enter or exit in a register, and which blocks
prefer the stack.
The algorithm is ready to consume block frequencies from profiling data, but for
now it gets by with the static estimates used for spill weights.
This is a work in progress and still not hooked up to RegAllocGreedy.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122938
91177308-0d34-0410-b5e6-
96231b3b80d8
Bill Wendling [Thu, 6 Jan 2011 01:09:35 +0000 (01:09 +0000)]
Fix test to coincide with r122934 change from PR8919.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122937
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Thu, 6 Jan 2011 01:04:47 +0000 (01:04 +0000)]
r105228 reduced the memcpy / memset inline limit to 4 with -Os to avoid blowing
up freebsd bootloader. However, this doesn't make much sense for Darwin, whose
-Os is meant to optimize for size only if it doesn't hurt performance.
rdar://
8821501
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122936
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Thu, 6 Jan 2011 01:02:44 +0000 (01:02 +0000)]
Avoid zero extend bit test operands to pointer type if all the masks fit in
the original type of the switch statement key.
rdar://
8781238
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122935
91177308-0d34-0410-b5e6-
96231b3b80d8
Bill Wendling [Thu, 6 Jan 2011 00:50:34 +0000 (00:50 +0000)]
PR8919 - LLVM incorrectly generates "_alloca" as the stack probing call. That
works only on MinGW32. On 64-bit, the function to call is "__chkstk".
Patch by KS Sreeram!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122934
91177308-0d34-0410-b5e6-
96231b3b80d8
Bill Wendling [Thu, 6 Jan 2011 00:47:10 +0000 (00:47 +0000)]
PR8918 - When used with MinGW64, LLVM generates a "calll __main" at the
beginning of the "main" function. The assembler complains about the invalid
suffix for the 'call' instruction. The right instruction is "callq __main".
Patch by KS Sreeram!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122933
91177308-0d34-0410-b5e6-
96231b3b80d8
Cameron Zwarich [Thu, 6 Jan 2011 00:42:50 +0000 (00:42 +0000)]
Stop reallocating SunkAddrs for each basic block. When we move to an instruction
worklist, the key will need to become std::pair<BasicBlock*, Value*>.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122932
91177308-0d34-0410-b5e6-
96231b3b80d8
Owen Anderson [Wed, 5 Jan 2011 23:26:22 +0000 (23:26 +0000)]
Reorder, rename, and document some members to make this easier to follow.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122929
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Wed, 5 Jan 2011 23:06:49 +0000 (23:06 +0000)]
Optimize:
r1025 = s/zext r1024, 4
r1026 = extract_subreg r1025, 4
to:
r1026 = copy r1024
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122925
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 5 Jan 2011 22:28:46 +0000 (22:28 +0000)]
fix PR8900, a shuffle miscompilation. Patch by Nadav Rotem!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122921
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 5 Jan 2011 22:26:52 +0000 (22:26 +0000)]
silence more self assignment warnings.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122920
91177308-0d34-0410-b5e6-
96231b3b80d8
Jakob Stoklund Olesen [Wed, 5 Jan 2011 21:50:24 +0000 (21:50 +0000)]
Add a hidden command line option to display edge bundle graphs as they are
calculated.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122912
91177308-0d34-0410-b5e6-
96231b3b80d8
Jakob Stoklund Olesen [Wed, 5 Jan 2011 21:50:21 +0000 (21:50 +0000)]
Silence a warning from non-standard warning avoidance code.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122911
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Wed, 5 Jan 2011 21:45:56 +0000 (21:45 +0000)]
80-cols.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122909
91177308-0d34-0410-b5e6-
96231b3b80d8
Owen Anderson [Wed, 5 Jan 2011 21:37:18 +0000 (21:37 +0000)]
When computing the value on an edge, in certain cases LVI would fail to compute the value range
in the predecessor block, leading to an incorrect conclusion for the edge value. Found by inspection.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122908
91177308-0d34-0410-b5e6-
96231b3b80d8
Bob Wilson [Wed, 5 Jan 2011 21:16:50 +0000 (21:16 +0000)]
Revert svn 122743, removing the instcombine pass that was replaced by earlycse.
My i386 llvm-gcc nightly tester found a regression for
SingleSource/Benchmarks/McGill/chomp that a bisect blamed on 122743.
That seems strange but apparently the combination of earlycse and instcombine
did something bad. Chris says he intended to remove the instcombine pass, so
let's go ahead and try that. We'll see if there are any performance losses.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122907
91177308-0d34-0410-b5e6-
96231b3b80d8
Owen Anderson [Wed, 5 Jan 2011 21:15:29 +0000 (21:15 +0000)]
Re-convert several of LazyValueInfo's internal maps to Dense{Map|Set}, and fix the issue in
hasBlockValue() that was causing iterator invalidations. Many thanks to Dimitry Andric for
tracking down those invalidations!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122906
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 5 Jan 2011 18:41:05 +0000 (18:41 +0000)]
fix some -Wself-assign warnings.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122893
91177308-0d34-0410-b5e6-
96231b3b80d8
Cameron Zwarich [Wed, 5 Jan 2011 17:47:38 +0000 (17:47 +0000)]
Add some more statistics to CodeGenPrepare.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122891
91177308-0d34-0410-b5e6-
96231b3b80d8
Wesley Peck [Wed, 5 Jan 2011 17:34:20 +0000 (17:34 +0000)]
Commit 122778 broke DWARF debug output when using the MBlaze backend. Fixed by overriding TargetFrameInfo::getFrameIndexOffset to take into account the new frame index information.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122889
91177308-0d34-0410-b5e6-
96231b3b80d8
Cameron Zwarich [Wed, 5 Jan 2011 17:27:27 +0000 (17:27 +0000)]
Add some stats to CodeGenPrepare to make it easier to speed it up without
regressing code quality.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122887
91177308-0d34-0410-b5e6-
96231b3b80d8
Wesley Peck [Wed, 5 Jan 2011 17:01:57 +0000 (17:01 +0000)]
Fix small bug in setDebugInfoAvailability.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122886
91177308-0d34-0410-b5e6-
96231b3b80d8
Michael J. Spencer [Wed, 5 Jan 2011 16:39:46 +0000 (16:39 +0000)]
UnitTests/Path: Fix typo, add error number, and enable the directory cleanup code.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122885
91177308-0d34-0410-b5e6-
96231b3b80d8
Michael J. Spencer [Wed, 5 Jan 2011 16:39:38 +0000 (16:39 +0000)]
Support/PathV2: Implement remove_all.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122884
91177308-0d34-0410-b5e6-
96231b3b80d8
Michael J. Spencer [Wed, 5 Jan 2011 16:39:30 +0000 (16:39 +0000)]
Support/Windows/PathV2: Make directory iteration ignore . and ..
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122883
91177308-0d34-0410-b5e6-
96231b3b80d8
Michael J. Spencer [Wed, 5 Jan 2011 16:39:22 +0000 (16:39 +0000)]
Support/Windows/PathV2: Fix remove to handle both files and directories.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122882
91177308-0d34-0410-b5e6-
96231b3b80d8
Michael J. Spencer [Wed, 5 Jan 2011 16:39:13 +0000 (16:39 +0000)]
Support/PathV2: Implement directory_entry::status.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122881
91177308-0d34-0410-b5e6-
96231b3b80d8
Michael J. Spencer [Wed, 5 Jan 2011 16:39:05 +0000 (16:39 +0000)]
UnitTests/PathV2: Setup a test fixture to make tracking created file system
entities easier.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122880
91177308-0d34-0410-b5e6-
96231b3b80d8
Michael J. Spencer [Wed, 5 Jan 2011 16:38:57 +0000 (16:38 +0000)]
Support/PathV2: Implement directory iteration on POSIX.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122879
91177308-0d34-0410-b5e6-
96231b3b80d8
Cameron Zwarich [Wed, 5 Jan 2011 16:08:47 +0000 (16:08 +0000)]
Use pop_back_val instead of back followed by pop_back.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122876
91177308-0d34-0410-b5e6-
96231b3b80d8
Frits van Bommel [Wed, 5 Jan 2011 15:10:24 +0000 (15:10 +0000)]
Fix lit for people whose LLVM path contains 'opt', which is a common directory name on Unix-like systems.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122873
91177308-0d34-0410-b5e6-
96231b3b80d8
Cameron Zwarich [Wed, 5 Jan 2011 05:47:47 +0000 (05:47 +0000)]
Use a worklist for later iterations just like ordinary instsimplify. The next
step is to only process instructions in subloops if they have been modified by
an earlier simplification.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122869
91177308-0d34-0410-b5e6-
96231b3b80d8
Cameron Zwarich [Wed, 5 Jan 2011 05:15:53 +0000 (05:15 +0000)]
Change LoopInstSimplify back to a LoopPass. It revisits subloops rather than
skipping them, but it should probably use a worklist and only revisit those
instructions in subloops that have actually changed. It should probably also
use a worklist after the first iteration like instsimplify now does. Regardless,
it's only 0.3% of opt -O2 time on 403.gcc if it replaces the instcombine placed
in the middle of the loop passes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122868
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 5 Jan 2011 01:03:32 +0000 (01:03 +0000)]
Fix PR8906: -fno-builtin should disable loop-idiom recognition.
It forms memset and memcpy's, and will someday form popcount and
other stuff. All of this is bad when compiling the implementation
of memset, memcpy, popcount, etc.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122854
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Tue, 4 Jan 2011 22:31:50 +0000 (22:31 +0000)]
Remove TODO, these appear to be implemented.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122849
91177308-0d34-0410-b5e6-
96231b3b80d8
Owen Anderson [Tue, 4 Jan 2011 22:15:21 +0000 (22:15 +0000)]
Don't bother value numbering instructions with void types in GVN. In theory this should allow us to insert
fewer things into the value numbering maps, but any speedup is beneath the noise threshold on my machine
on 403.gcc.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122844
91177308-0d34-0410-b5e6-
96231b3b80d8
Jakob Stoklund Olesen [Tue, 4 Jan 2011 21:10:11 +0000 (21:10 +0000)]
Use the EdgeBundles analysis in X86FloatingPoint instead of recomputing CFG
bundles in the pass.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122833
91177308-0d34-0410-b5e6-
96231b3b80d8
Jakob Stoklund Olesen [Tue, 4 Jan 2011 21:10:05 +0000 (21:10 +0000)]
Turn the EdgeBundles class into a stand-alone machine CFG analysis pass.
The analysis will be needed by both the greedy register allocator and the
X86FloatingPoint pass. It only needs to be computed once when the CFG doesn't
change.
This pass is very fast, usually showing up as 0.0% wall time.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122832
91177308-0d34-0410-b5e6-
96231b3b80d8
Dale Johannesen [Tue, 4 Jan 2011 19:31:24 +0000 (19:31 +0000)]
Eliminate a warning compiling with llvm-gcc. (IMO the
warning is overzealous but gcc is what it is.)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122829
91177308-0d34-0410-b5e6-
96231b3b80d8
Owen Anderson [Tue, 4 Jan 2011 19:29:46 +0000 (19:29 +0000)]
Complete the NumberTable --> LeaderTable rename.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122828
91177308-0d34-0410-b5e6-
96231b3b80d8
Owen Anderson [Tue, 4 Jan 2011 19:25:18 +0000 (19:25 +0000)]
Fix typo in a comment.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122827
91177308-0d34-0410-b5e6-
96231b3b80d8
Owen Anderson [Tue, 4 Jan 2011 19:24:57 +0000 (19:24 +0000)]
Prune #include's.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122826
91177308-0d34-0410-b5e6-
96231b3b80d8
Owen Anderson [Tue, 4 Jan 2011 19:13:25 +0000 (19:13 +0000)]
Clarify terminology, settling on referring to what was the "number table" as the "leader table", and
rename methods to make it much more clear what they're doing.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122823
91177308-0d34-0410-b5e6-
96231b3b80d8
Owen Anderson [Tue, 4 Jan 2011 19:10:54 +0000 (19:10 +0000)]
When removing a value from GVN's leaders list, don't drop the Next pointer in a corner case.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122822
91177308-0d34-0410-b5e6-
96231b3b80d8
Dale Johannesen [Tue, 4 Jan 2011 19:01:54 +0000 (19:01 +0000)]
Improve the accuracy of the inlining heuristic looking for the
case where a static caller is itself inlined everywhere else, and
thus may go away if it doesn't get too big due to inlining other
things into it. If there are references to the caller other than
calls, it will not be removed; account for this.
This results in same-day completion of the case in PR8853.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122821
91177308-0d34-0410-b5e6-
96231b3b80d8
Owen Anderson [Tue, 4 Jan 2011 18:54:18 +0000 (18:54 +0000)]
Branch instructions don't produce values, so there's no need to generate a value number for them. This
avoids adding them to the various value numbering tables, resulting in a minor (~3%) speedup for GVN
on 40.gcc.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122819
91177308-0d34-0410-b5e6-
96231b3b80d8
Owen Anderson [Tue, 4 Jan 2011 18:22:08 +0000 (18:22 +0000)]
Remove commented out code.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122817
91177308-0d34-0410-b5e6-
96231b3b80d8
Owen Anderson [Tue, 4 Jan 2011 18:21:18 +0000 (18:21 +0000)]
Give MachineFunctionAnalysis a getPassName() implementation to make timing reports prettier.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122816
91177308-0d34-0410-b5e6-
96231b3b80d8
Cameron Zwarich [Tue, 4 Jan 2011 18:19:19 +0000 (18:19 +0000)]
Switch to the new style of asterisk placement.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122815
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 4 Jan 2011 18:19:15 +0000 (18:19 +0000)]
fix an off-by-one bug that caused a crash analyzing
ashr's with huge shift amounts, PR8896
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122814
91177308-0d34-0410-b5e6-
96231b3b80d8
Michael J. Spencer [Tue, 4 Jan 2011 17:00:18 +0000 (17:00 +0000)]
UnitTests/Path: Produce useful diagnostics on error.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122812
91177308-0d34-0410-b5e6-
96231b3b80d8
Cameron Zwarich [Tue, 4 Jan 2011 16:24:51 +0000 (16:24 +0000)]
Switch to path halving from path compression for a small speedup. This also
makes getLeader() nonrecursive.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122811
91177308-0d34-0410-b5e6-
96231b3b80d8
Tobias Grosser [Tue, 4 Jan 2011 16:01:17 +0000 (16:01 +0000)]
Include llvm-gcc dir before llvm_tools_dir
This ensures that always the recently compiled tools are picked for testing.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122810
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan Sands [Tue, 4 Jan 2011 12:52:29 +0000 (12:52 +0000)]
These methods should be "const"; make them so.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122809
91177308-0d34-0410-b5e6-
96231b3b80d8
Francois Pichet [Tue, 4 Jan 2011 10:23:42 +0000 (10:23 +0000)]
Disable r122754 on Windows: was causing all lit tests to fail.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122808
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 4 Jan 2011 07:46:33 +0000 (07:46 +0000)]
Teach loop-idiom to turn a loop containing a memset into a larger memset
when safe.
The testcase is basically this nested loop:
void foo(char *X) {
for (int i = 0; i != 100; ++i)
for (int j = 0; j != 100; ++j)
X[j+i*100] = 0;
}
which gets turned into a single memset now. clang -O3 doesn't optimize
this yet though due to a phase ordering issue I haven't analyzed yet.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122806
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 4 Jan 2011 07:27:30 +0000 (07:27 +0000)]
restructure this a bit. Initialize the WeakVH with "I", the
instruction *after* the store. The store will always be deleted
if the transformation kicks in, so we'd do an N^2 scan of every
loop block. Whoops.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122805
91177308-0d34-0410-b5e6-
96231b3b80d8
Cameron Zwarich [Tue, 4 Jan 2011 06:42:27 +0000 (06:42 +0000)]
Eliminate repeated allocation of a per-BB DenseMap for a 4.6% reduction of time
spent in StrongPHIElimination on 403.gcc.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122803
91177308-0d34-0410-b5e6-
96231b3b80d8
Cameron Zwarich [Tue, 4 Jan 2011 04:43:31 +0000 (04:43 +0000)]
Avoid finding loop back edges when we are not splitting critical edges in
CodeGenPrepare (which is the default behavior).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122801
91177308-0d34-0410-b5e6-
96231b3b80d8
David Greene [Tue, 4 Jan 2011 01:05:30 +0000 (01:05 +0000)]
Don't pattern match "/clang" so we don't mangle directory names. Some
tests use absolute paths to clang.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122796
91177308-0d34-0410-b5e6-
96231b3b80d8
Owen Anderson [Tue, 4 Jan 2011 00:55:21 +0000 (00:55 +0000)]
Clean up a funky pass registration that got passed over when I got rid of static constructors.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122795
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Trick [Tue, 4 Jan 2011 00:32:57 +0000 (00:32 +0000)]
Fix the ARM IIC_iCMPsi itinerary and add an important assert.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122794
91177308-0d34-0410-b5e6-
96231b3b80d8
Cameron Zwarich [Tue, 4 Jan 2011 00:12:46 +0000 (00:12 +0000)]
Address most of Duncan's review comments. Also, make LoopInstSimplify a simple
FunctionPass. It probably doesn't have a reason to be a LoopPass, as it will
probably drop the simple fixed point and either use RPO iteration or Duncan's
approach in instsimplify of only revisiting instructions that have changed.
The next step is to preserve LoopSimplify. This looks like it won't be too hard,
although the pass manager doesn't actually seem to respect when non-loop passes
claim to preserve LCSSA or LoopSimplify. This will have to be fixed.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122791
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 4 Jan 2011 00:06:55 +0000 (00:06 +0000)]
use the very-handy getTruncateOrZeroExtend helper function, and
stop setting NSW: signed overflow is possible. Thanks to Dan
for pointing these out.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122790
91177308-0d34-0410-b5e6-
96231b3b80d8
Bill Wendling [Mon, 3 Jan 2011 23:59:05 +0000 (23:59 +0000)]
Formatting changes. No functionality change.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122789
91177308-0d34-0410-b5e6-
96231b3b80d8
Owen Anderson [Mon, 3 Jan 2011 23:51:56 +0000 (23:51 +0000)]
Fix comment.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122788
91177308-0d34-0410-b5e6-
96231b3b80d8