Chris Lattner [Tue, 1 Apr 2008 00:35:55 +0000 (00:35 +0000)]
remove DEFINING_FILE_FOR for MappedFile.h
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49008
91177308-0d34-0410-b5e6-
96231b3b80d8
Dale Johannesen [Mon, 31 Mar 2008 23:40:23 +0000 (23:40 +0000)]
Emit exception handling info for functions which are
not marked nounwind, or for all functions when -enable-eh
is set, provided the target supports Dwarf EH.
llvm-gcc generates nounwind in the right places; other FEs
will need to do so also. Given such a FE, -enable-eh should
no longer be needed.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49006
91177308-0d34-0410-b5e6-
96231b3b80d8
Dale Johannesen [Mon, 31 Mar 2008 23:20:09 +0000 (23:20 +0000)]
Mark functions in some tests as 'nounwind'. Generating
EH info for these functions causes the tests to fail for
random reasons (e.g. looking for 'or' or counting lines
with asm-printer; labels count as lines.)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49003
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Mon, 31 Mar 2008 23:19:51 +0000 (23:19 +0000)]
It's not safe to fold a load from GV stub or constantpool into a two-address use.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49002
91177308-0d34-0410-b5e6-
96231b3b80d8
Nate Begeman [Mon, 31 Mar 2008 22:19:25 +0000 (22:19 +0000)]
Actually disable crash reporting on Mac OS X, returning bugpoint to speedy
crash miscompilations.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49000
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Mon, 31 Mar 2008 22:08:00 +0000 (22:08 +0000)]
Set blockBegin to point to the beginning of the block,
not the end.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48999
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Mon, 31 Mar 2008 20:40:39 +0000 (20:40 +0000)]
Move reMaterialize() from TargetRegisterInfo to TargetInstrInfo.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48995
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Mon, 31 Mar 2008 20:32:52 +0000 (20:32 +0000)]
Fix a DAGCombiner optimization to respect volatile qualification.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48994
91177308-0d34-0410-b5e6-
96231b3b80d8
Gordon Henriksen [Mon, 31 Mar 2008 17:27:57 +0000 (17:27 +0000)]
Add a unified 'generated documentation' target so the web site script has a consistent target to use.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48985
91177308-0d34-0410-b5e6-
96231b3b80d8
Torok Edwin [Mon, 31 Mar 2008 17:09:58 +0000 (17:09 +0000)]
test commit
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48984
91177308-0d34-0410-b5e6-
96231b3b80d8
Gordon Henriksen [Mon, 31 Mar 2008 16:46:23 +0000 (16:46 +0000)]
Reverting r48974. See PR2183 for details.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48983
91177308-0d34-0410-b5e6-
96231b3b80d8
Erick Tryzelaar [Mon, 31 Mar 2008 16:22:09 +0000 (16:22 +0000)]
Expose Function::viewCFG and Function::viewCFGOnly to bindings.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48982
91177308-0d34-0410-b5e6-
96231b3b80d8
Erick Tryzelaar [Mon, 31 Mar 2008 08:50:45 +0000 (08:50 +0000)]
There isn't any c++ code in LangImpl8.html, so use that
instead of OCamlLangImpl8.html.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48979
91177308-0d34-0410-b5e6-
96231b3b80d8
Erick Tryzelaar [Mon, 31 Mar 2008 08:44:50 +0000 (08:44 +0000)]
Chapter 5, 6, and 7 of the ocaml/kaleidoscope tutorial
and fix some tabs in chapter 3 and 4.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48978
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Mon, 31 Mar 2008 07:54:19 +0000 (07:54 +0000)]
Re-apply 48911.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48977
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Mon, 31 Mar 2008 07:53:30 +0000 (07:53 +0000)]
The support for remat of instructions with a register operand is hackish, to say the least. Since the register operand guaranteed to be PIC base and that it is already live at all uses, we are making sure it will not be spilled after its uses are rematerialized for both performance and correctness reasons.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48976
91177308-0d34-0410-b5e6-
96231b3b80d8
Erick Tryzelaar [Mon, 31 Mar 2008 03:46:43 +0000 (03:46 +0000)]
Quote the ocaml executables
realazthat in #llvm was having problems building llvm
because configure was finding an ocaml executable in
a directory with a space in it's name. This patch
puts quotes around the name so that llvm can build for
him.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48974
91177308-0d34-0410-b5e6-
96231b3b80d8
Owen Anderson [Mon, 31 Mar 2008 01:39:20 +0000 (01:39 +0000)]
Fix a major bug in the DFS calculation. Thanks for Christopher Lamb for pointing this out.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48973
91177308-0d34-0410-b5e6-
96231b3b80d8
Nate Begeman [Mon, 31 Mar 2008 00:22:16 +0000 (00:22 +0000)]
Don't eliminate bitcast instructions that change the type of a pointer
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48971
91177308-0d34-0410-b5e6-
96231b3b80d8
Erick Tryzelaar [Sun, 30 Mar 2008 20:32:18 +0000 (20:32 +0000)]
Tweak build system to allow for installing the tutorial and uninstalling the docs.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48968
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan Sands [Sun, 30 Mar 2008 19:38:55 +0000 (19:38 +0000)]
Fix comment typo.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48967
91177308-0d34-0410-b5e6-
96231b3b80d8
Erick Tryzelaar [Sun, 30 Mar 2008 19:14:31 +0000 (19:14 +0000)]
Fix some documentation for the tutorial.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48966
91177308-0d34-0410-b5e6-
96231b3b80d8
Nick Lewycky [Sun, 30 Mar 2008 19:07:11 +0000 (19:07 +0000)]
Moved from PR1570.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48965
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 30 Mar 2008 18:58:05 +0000 (18:58 +0000)]
stop building llvmc.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48964
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 30 Mar 2008 18:22:13 +0000 (18:22 +0000)]
Fix "Control reaches the end of non-void function" warnings,
patch by David Chisnall.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48963
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 30 Mar 2008 18:02:00 +0000 (18:02 +0000)]
minor code cleanups, allow constant folding sinf/cosf.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48961
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 30 Mar 2008 16:59:21 +0000 (16:59 +0000)]
fix typo, PR2181
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48954
91177308-0d34-0410-b5e6-
96231b3b80d8
Erick Tryzelaar [Sun, 30 Mar 2008 09:57:12 +0000 (09:57 +0000)]
Add chapter 3 and 4 of the ocaml/kaleidoscope tutorial.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48949
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Sat, 29 Mar 2008 18:34:22 +0000 (18:34 +0000)]
Cosmetic changes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48947
91177308-0d34-0410-b5e6-
96231b3b80d8
Anton Korobeynikov [Sat, 29 Mar 2008 11:25:49 +0000 (11:25 +0000)]
Honour another bunch of parameter attributes in llvm2cpp
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48942
91177308-0d34-0410-b5e6-
96231b3b80d8
Anton Korobeynikov [Sat, 29 Mar 2008 11:15:01 +0000 (11:15 +0000)]
Honour ByVal parameter attribute in llvm2cpp
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48941
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sat, 29 Mar 2008 05:15:47 +0000 (05:15 +0000)]
change iterator invalidation avoidance to just move the iterator backward
when something changes, instead of moving forward. This allows us to
simplify memset lowering, inserting the memset at the end of the range of
stuff we're touching instead of at the start.
This, in turn, allows us to make use of the addressing instructions already
used in the function instead of inserting our own. For example, we now
codegen:
%tmp41 = getelementptr [8 x i8]* %ref_idx, i32 0, i32 0 ; <i8*> [#uses=2]
call void @llvm.memset.i64( i8* %tmp41, i8 -1, i64 8, i32 1 )
instead of:
%tmp20 = getelementptr [8 x i8]* %ref_idx, i32 0, i32 7 ; <i8*> [#uses=1]
%ptroffset = getelementptr i8* %tmp20, i64 -7 ; <i8*> [#uses=1]
call void @llvm.memset.i64( i8* %ptroffset, i8 -1, i64 8, i32 1 )
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48940
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sat, 29 Mar 2008 04:52:12 +0000 (04:52 +0000)]
make the common case of a single store (which clearly shouldn't be turned
into a memset!) faster by avoiding an allocation of an std::list node.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48939
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sat, 29 Mar 2008 04:51:35 +0000 (04:51 +0000)]
add a testcase for forming memset from noncontiguous stores.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48938
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sat, 29 Mar 2008 04:36:18 +0000 (04:36 +0000)]
give form-memset a significantly more sane heuristic, enable it by default.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48937
91177308-0d34-0410-b5e6-
96231b3b80d8
Owen Anderson [Sat, 29 Mar 2008 01:58:47 +0000 (01:58 +0000)]
Remove some unneeded code for LiveInterval joining, and fix a bug in the Phi elimination algorithm where we were accidentally reasoning about
the source rather than the destination.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48936
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Sat, 29 Mar 2008 01:04:05 +0000 (01:04 +0000)]
Cosmetic change.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48935
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Fri, 28 Mar 2008 23:45:16 +0000 (23:45 +0000)]
Fix a tokenfactor node to use the load chain rather than the
load value. This fixes PR2177.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48932
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Fri, 28 Mar 2008 17:49:06 +0000 (17:49 +0000)]
Backing out 48911 for now. It's breaking stuff.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48922
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 28 Mar 2008 15:36:27 +0000 (15:36 +0000)]
ifdef out a dead function. Should this be removed?
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48916
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan Sands [Fri, 28 Mar 2008 09:45:24 +0000 (09:45 +0000)]
Rename getAnyLoad to getLoad is suggested by Evan.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48914
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Fri, 28 Mar 2008 07:07:06 +0000 (07:07 +0000)]
New entry.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48912
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Fri, 28 Mar 2008 06:49:25 +0000 (06:49 +0000)]
Load from stub is already re-materializable.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48911
91177308-0d34-0410-b5e6-
96231b3b80d8
Nick Lewycky [Fri, 28 Mar 2008 06:46:51 +0000 (06:46 +0000)]
Update example to new syntax.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48910
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 28 Mar 2008 06:45:13 +0000 (06:45 +0000)]
make memset inference significantly more powerful: it can now handle
memsets that initialize "structs of arrays" and other store sequences
that are not sequential. This is still only enabled if you pass
-form-memset-from-stores. The flag is not heavily tested and I haven't
analyzed the perf regressions when -form-memset-from-stores is passed
either, but this causes no make check regressions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48909
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Fri, 28 Mar 2008 06:34:23 +0000 (06:34 +0000)]
New entry.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48908
91177308-0d34-0410-b5e6-
96231b3b80d8
Bill Wendling [Fri, 28 Mar 2008 06:22:23 +0000 (06:22 +0000)]
Simplify the conversion from "0x" numbers to a single digit number.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48907
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan Sands [Thu, 27 Mar 2008 20:23:40 +0000 (20:23 +0000)]
Implement LegalizeTypes support for softfloat LOAD.
In order to handle indexed nodes I had to introduce
a new constructor, and since I was there I factorized
the code in the various load constructors.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48894
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Thu, 27 Mar 2008 19:56:19 +0000 (19:56 +0000)]
Avoid creating chain dependencies from CopyToReg nodes to load and store
nodes. This doesn't currently have much impact the generated code, but it
does produce simpler-looking SelectionDAGs, and consequently
simpler-looking ScheduleDAGs, because there are fewer spurious
dependencies.
In particular, CopyValueToVirtualRegister now uses the entry node as the
input chain dependency for new CopyToReg nodes instead of calling getRoot
and depending on the most recent memory reference.
Also, rename UnorderedChains to PendingExports and pull it up from being
a local variable in SelectionDAGISel::BuildSelectionDAG to being a
member variable of SelectionDAGISel, so that it doesn't have to be
passed around to all the places that need it.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48893
91177308-0d34-0410-b5e6-
96231b3b80d8
Devang Patel [Thu, 27 Mar 2008 17:32:46 +0000 (17:32 +0000)]
PHI->removeIncomingValue may remove PHInode.
Increment iterator in advance.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48890
91177308-0d34-0410-b5e6-
96231b3b80d8
Devang Patel [Thu, 27 Mar 2008 17:13:55 +0000 (17:13 +0000)]
add another testcase
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48881
91177308-0d34-0410-b5e6-
96231b3b80d8
Mikhail Glushenkov [Thu, 27 Mar 2008 09:53:47 +0000 (09:53 +0000)]
Fix build breakage on Windows with GCC 4.3. References bug #2176.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48874
91177308-0d34-0410-b5e6-
96231b3b80d8
Roman Levenstein [Thu, 27 Mar 2008 09:44:37 +0000 (09:44 +0000)]
Fix spelling. Thanks, Duncan! :-)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48873
91177308-0d34-0410-b5e6-
96231b3b80d8
Roman Levenstein [Thu, 27 Mar 2008 09:14:57 +0000 (09:14 +0000)]
Speed-up the SumOfUnscheduledPredsOfSuccs by introducing a new function
called LimitedSumOfUnscheduledPredsOfSuccs. It terminates the computation
after a given treshold is reached. This new function is always faster, but
brings real wins only on bigger test-cases.
The old function SumOfUnscheduledPredsOfSuccs is left in-place for now and therefore a warning about an unused static function is produced.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48872
91177308-0d34-0410-b5e6-
96231b3b80d8
Erick Tryzelaar [Thu, 27 Mar 2008 08:18:07 +0000 (08:18 +0000)]
Adding the first two chapters of the ocaml/kaleidoscope tutorial.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48871
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 27 Mar 2008 02:43:03 +0000 (02:43 +0000)]
when a node is removed from an ilist, set its next/prev pointers to
null. This means that uses of invalidated iterators will explode violently
with:
ilist:143: failed assertion `NodePtr && "++'d off the end of an ilist!"'
instead of happening to work "most of the time".
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48859
91177308-0d34-0410-b5e6-
96231b3b80d8
Devang Patel [Thu, 27 Mar 2008 01:51:31 +0000 (01:51 +0000)]
New test case.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48858
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Thu, 27 Mar 2008 01:45:11 +0000 (01:45 +0000)]
Code clean up.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48856
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Thu, 27 Mar 2008 01:41:09 +0000 (01:41 +0000)]
Allow certain lea instructions to be rematerialized.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48855
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Thu, 27 Mar 2008 01:30:24 +0000 (01:30 +0000)]
Remove an unused command line option.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48854
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Thu, 27 Mar 2008 01:27:25 +0000 (01:27 +0000)]
Fix a memory bug: increment an iterator of a deleted machine instr.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48853
91177308-0d34-0410-b5e6-
96231b3b80d8
Erick Tryzelaar [Thu, 27 Mar 2008 00:27:14 +0000 (00:27 +0000)]
Expose ExecutionEngine::getTargetData() to c and ocaml bindings.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48851
91177308-0d34-0410-b5e6-
96231b3b80d8
Chuck Rose III [Thu, 27 Mar 2008 00:02:53 +0000 (00:02 +0000)]
Updating win32 VStudio project files with new file references and removing dead references.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48849
91177308-0d34-0410-b5e6-
96231b3b80d8
Dale Johannesen [Wed, 26 Mar 2008 23:31:39 +0000 (23:31 +0000)]
Fix a bug in Darwin EH: FDE->CIE pointer must
be relocatable. Describe why .set is needed better.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48848
91177308-0d34-0410-b5e6-
96231b3b80d8
Mikhail Glushenkov [Wed, 26 Mar 2008 21:37:43 +0000 (21:37 +0000)]
Another test commit (with git-svn)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48843
91177308-0d34-0410-b5e6-
96231b3b80d8
Mikhail Glushenkov [Wed, 26 Mar 2008 21:18:58 +0000 (21:18 +0000)]
Test commit
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48840
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Wed, 26 Mar 2008 20:15:49 +0000 (20:15 +0000)]
One more coalescer fix wrt deadness propagation.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48837
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Wed, 26 Mar 2008 19:03:01 +0000 (19:03 +0000)]
Avoid commuting a def MI in order to coalesce a copy instruction away if any use of the same val# is a copy instruction that has already been coalesced.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48833
91177308-0d34-0410-b5e6-
96231b3b80d8
Roman Levenstein [Wed, 26 Mar 2008 12:39:26 +0000 (12:39 +0000)]
Use a linked data structure for the uses lists of an SDNode, just like
LLVM Value/Use does and MachineRegisterInfo/MachineOperand does.
This allows constant time for all uses list maintenance operations.
The idea was suggested by Chris. Reviewed by Evan and Dan.
Patch is tested and approved by Dan.
On normal use-cases compilation speed is not affected. On very big basic
blocks there are compilation speedups in the range of 15-20% or even better.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48822
91177308-0d34-0410-b5e6-
96231b3b80d8
Roman Levenstein [Wed, 26 Mar 2008 11:23:38 +0000 (11:23 +0000)]
Fixed some spelling errors. Thanks, Duncan!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48819
91177308-0d34-0410-b5e6-
96231b3b80d8
Roman Levenstein [Wed, 26 Mar 2008 09:18:09 +0000 (09:18 +0000)]
Some improvements related to the computation of isReachable.
This fixes Bugzilla #1835 (http://llvm.org/bugs/show_bug.cgi?id=1835).
This patched is reviewed by Tanya and Dan. Dan tested and approved it.
The reason for the bad performance of the old algorithm is that it is very naive and scans every
time all nodes of the DAG in the worst case.
This patch introduces a new algorithm based on the paper "Online algorithms
for maintaining the topological order of a directed acyclic graph" by
David J.Pearce and Paul H.J.Kelly. This is the MNR algorithm. It has a
linear time worst-case and performs much better in most situations.
The paper can be found here:
http://fano.ics.uci.edu/cites/Document/Online-algorithms-for-maintaining-the-topological-order-of-a-directed-acyclic-graph.html
The main idea of the new algorithm is to compute the topological ordering of the SNodes in the
DAG and to maintain it even after DAG modifications. The topological ordering allows for very fast
node reachability checks.
Tests on very big input files with tens of thousands of instructions in a BB indicate huge
speed-ups (up to 10x compilation time improvement) compared to the old version.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48817
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Wed, 26 Mar 2008 08:11:49 +0000 (08:11 +0000)]
Fix some SSE4.1 instruction encoding bugs.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48815
91177308-0d34-0410-b5e6-
96231b3b80d8
Owen Anderson [Wed, 26 Mar 2008 03:03:23 +0000 (03:03 +0000)]
Dead PHI instructions need to be handled specially.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48811
91177308-0d34-0410-b5e6-
96231b3b80d8
Erick Tryzelaar [Wed, 26 Mar 2008 00:38:56 +0000 (00:38 +0000)]
Test commit (removed trailing whitespace)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48809
91177308-0d34-0410-b5e6-
96231b3b80d8
Dale Johannesen [Tue, 25 Mar 2008 23:29:30 +0000 (23:29 +0000)]
Use ## for comment delimiter on darwin x86-32, so
llvm's output .s files will go through gcc -std=c99
without triggering preprocesser errors. Approach
suggested by Daveed Vandevoorde.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48808
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Tue, 25 Mar 2008 22:29:46 +0000 (22:29 +0000)]
Smaller function alignment when optimizing for size.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48805
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Tue, 25 Mar 2008 22:28:39 +0000 (22:28 +0000)]
Rename option -optimizefor-size to -optimize-size.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48804
91177308-0d34-0410-b5e6-
96231b3b80d8
Owen Anderson [Tue, 25 Mar 2008 22:26:43 +0000 (22:26 +0000)]
Remove some debugging code.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48803
91177308-0d34-0410-b5e6-
96231b3b80d8
Owen Anderson [Tue, 25 Mar 2008 22:25:27 +0000 (22:25 +0000)]
StrongPHIElimination doesn't support swapping live intervals like the coalescer does.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48802
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Tue, 25 Mar 2008 22:06:05 +0000 (22:06 +0000)]
Add explicit keywords.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48801
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Tue, 25 Mar 2008 21:45:14 +0000 (21:45 +0000)]
A quick nm audit turned up several fixed tables and objects that were
marked read-write. Use const so that they can be allocated in a
read-only segment.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48800
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Tue, 25 Mar 2008 21:38:12 +0000 (21:38 +0000)]
Avoid outputing spaces at the ends of lines.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48797
91177308-0d34-0410-b5e6-
96231b3b80d8
Devang Patel [Tue, 25 Mar 2008 21:03:02 +0000 (21:03 +0000)]
Do not align loops if optimizing for size.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48794
91177308-0d34-0410-b5e6-
96231b3b80d8
Devang Patel [Tue, 25 Mar 2008 21:02:35 +0000 (21:02 +0000)]
Add optimize-for-size knob.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48793
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Tue, 25 Mar 2008 20:08:07 +0000 (20:08 +0000)]
Handle a special case xor undef, undef -> 0. Technically this should be transformed to undef. But this is such a common idiom (misuse) we are going to handle it.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48792
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Tue, 25 Mar 2008 20:07:13 +0000 (20:07 +0000)]
Handle a special case xor undef, undef -> 0. Technically this should be transformed to undef. But this is such a common idiom (misuse) we are going to handle it.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48791
91177308-0d34-0410-b5e6-
96231b3b80d8
Anton Korobeynikov [Tue, 25 Mar 2008 18:53:36 +0000 (18:53 +0000)]
Fix the Cygwin/Mingw-On-Cygwin build. Patch by Alain Frisch!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48786
91177308-0d34-0410-b5e6-
96231b3b80d8
Bill Wendling [Tue, 25 Mar 2008 18:16:52 +0000 (18:16 +0000)]
De-constify the input to the "operator >>" method as it is modified.
Patch by dekruijf@cs.wisc.edu!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48782
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Tue, 25 Mar 2008 17:10:29 +0000 (17:10 +0000)]
Fix typos.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48779
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Tue, 25 Mar 2008 16:53:19 +0000 (16:53 +0000)]
Add CMP32mr and friends to the load-unfolding table. Among
other things, this allows the scheduler to unfold a load operand
in the 2008-01-08-SchedulerCrash.ll testcase, so it now successfully
clones the comparison to avoid a pushf+popf.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48777
91177308-0d34-0410-b5e6-
96231b3b80d8
Gordon Henriksen [Tue, 25 Mar 2008 16:35:08 +0000 (16:35 +0000)]
Tests for the instruction iterator bindings.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48775
91177308-0d34-0410-b5e6-
96231b3b80d8
Gordon Henriksen [Tue, 25 Mar 2008 16:26:51 +0000 (16:26 +0000)]
Extend the builder interface to use the new instruction positioning code.
This adds support for instruction iterators, as well as rewriting the
builder code to use these new functions. This lets us eliminate the C
bindings for moving around the builder.
Patch by Erick Tryzelaar!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48774
91177308-0d34-0410-b5e6-
96231b3b80d8
Bill Wendling [Tue, 25 Mar 2008 09:12:48 +0000 (09:12 +0000)]
Fix PR2062: Don't build Intrinsics.gen in the source directory. Do it in the
object directory.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48766
91177308-0d34-0410-b5e6-
96231b3b80d8
Tanya Lattner [Tue, 25 Mar 2008 05:05:58 +0000 (05:05 +0000)]
Disable building llvm-upgrade.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48764
91177308-0d34-0410-b5e6-
96231b3b80d8
Sam Bishop [Tue, 25 Mar 2008 04:41:18 +0000 (04:41 +0000)]
Make a note of the fact that EmitOwnedPtr() has nothing to do with the
OwningPtr<> class.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48763
91177308-0d34-0410-b5e6-
96231b3b80d8
Tanya Lattner [Tue, 25 Mar 2008 04:26:08 +0000 (04:26 +0000)]
Byebye llvm-upgrade!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48762
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Tue, 25 Mar 2008 02:02:19 +0000 (02:02 +0000)]
lastRegisterUse() should ignore identity copies. Those will be erased.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48759
91177308-0d34-0410-b5e6-
96231b3b80d8
Devang Patel [Tue, 25 Mar 2008 00:47:49 +0000 (00:47 +0000)]
check struct layout
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48758
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Mon, 24 Mar 2008 23:55:16 +0000 (23:55 +0000)]
Remove an unneeded test.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48755
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Mon, 24 Mar 2008 23:36:49 +0000 (23:36 +0000)]
Add \t after .set. Fix by Jay Freeman.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48753
91177308-0d34-0410-b5e6-
96231b3b80d8