Evan Cheng
306e3dcff4
Disabling remat of load from gv stub (temporarily) again to fix llvmgcc bootstrap miscompare.
...
llvm-svn: 49037
2008-04-01 07:33:13 +00:00
Chris Lattner
ba98fca5e5
add some #includes.
...
llvm-svn: 49036
2008-04-01 06:25:23 +00:00
Chris Lattner
18356d8857
MappedFile is dead, remove it.
...
llvm-svn: 49035
2008-04-01 06:20:44 +00:00
Chris Lattner
4c5e15f7da
Implement Path::MapInFilePages/UnMapFilePages on unix, which
...
provides fast MappedFile::getFile for large files.
llvm-svn: 49034
2008-04-01 06:16:24 +00:00
Chris Lattner
a542518315
Reimplement MemoryBuffer::getFile with three enhancements:
...
1) stop using MappedFile.
2) if profitable use the sys::path::MapInFilePages api to
read the file.
3) otherwise fallback to read.
When sys::path::MapInFilePages is implemented, this provides
several benefits:
#1 : this avoids fragmenting memory for small files.
#2 : this avoids extraneous stat calls when the file size is known.
#3 : this only keeps the file descriptor open while reading the
file, not for the duration of the lifetime of the memory
buffer. This fixes a serious clang FD 'leak' problem.
I believe that this will work on a win32 machine, but I don't have
one to test on. I'd appreciate it if someone could check.
llvm-svn: 49031
2008-04-01 06:05:21 +00:00
Chris Lattner
3089e1d82e
Stub out some sys::Path::MapInFilePages/UnMapFilePages methods.
...
llvm-svn: 49030
2008-04-01 06:00:12 +00:00
Chris Lattner
d4310a27aa
change the archive stuff to use MemoryBuffer instead of mappedfile.
...
MemoryBuffer is higher level and more closely matches the model
needed.
llvm-svn: 49029
2008-04-01 04:26:46 +00:00
Chris Lattner
014dea94b2
prune unneeded #includes
...
llvm-svn: 49028
2008-04-01 04:00:45 +00:00
Chris Lattner
4ac7bb0294
rewrite SourceFile to be in terms of MemoryBuffer, not MappedFile.
...
llvm-svn: 49027
2008-04-01 03:59:34 +00:00
Chris Lattner
64959dcf03
Make MappedFile::map return a const correct pointer, don't leak address space on Unix platforms.
...
llvm-svn: 49026
2008-04-01 03:49:38 +00:00
Chris Lattner
bcfa564759
Remove the MappedFile::charBase member, rename base -> getBase() and
...
make getBase() return a const-correct pointer.
llvm-svn: 49025
2008-04-01 03:40:53 +00:00
Chris Lattner
314a1414d0
Change DiffFilesWithTolerance to be written in terms of MemoryBuffer,
...
not an mmapped file. This more closely matches its requirements and
provides an implicitly null terminated buffer, something this
routine had to emulate itself before.
llvm-svn: 49024
2008-04-01 03:39:49 +00:00
Chris Lattner
5a7d4e4f6d
add an accessor.
...
llvm-svn: 49023
2008-04-01 03:20:31 +00:00
Chris Lattner
62385ba3a0
Remove MappedFile support for mapping files for write and exec
...
and shared. This complicates the design, is not used, and probably
doesn't even work.
llvm-svn: 49022
2008-04-01 03:10:22 +00:00
Chris Lattner
f5b0b76d28
remove extraneous #include
...
llvm-svn: 49021
2008-04-01 03:01:15 +00:00
Chris Lattner
3d7127b3e3
add missing #includes
...
llvm-svn: 49020
2008-04-01 02:58:05 +00:00
Evan Cheng
0bd72c5ccd
More soft fp fixes.
...
llvm-svn: 49016
2008-04-01 02:18:22 +00:00
Evan Cheng
4cabe4b452
Pasto.
...
llvm-svn: 49014
2008-04-01 02:00:09 +00:00
Evan Cheng
611abc03ed
Add comment.
...
llvm-svn: 49013
2008-04-01 01:51:26 +00:00
Evan Cheng
86e476b7cb
Unbreak ARM / Thumb soft FP support.
...
llvm-svn: 49012
2008-04-01 01:50:16 +00:00
Dale Johannesen
efa81a6979
Accept 'y' constraint (MMX) in inline asm.
...
llvm-svn: 49011
2008-04-01 00:57:48 +00:00
Chris Lattner
ac17d39469
update comment.
...
llvm-svn: 49010
2008-04-01 00:54:39 +00:00
Chris Lattner
efecfbc113
cleanup the MappedFile API and comments. This removes and updates
...
tons of out of date comments (really nothing throws here!) and fixes
some other fairly glaring issues: "size" used to return the size of
the file *and* change it, depending on how you called it.
llvm-svn: 49009
2008-04-01 00:53:25 +00:00
Chris Lattner
1fa4dca692
remove DEFINING_FILE_FOR for MappedFile.h
...
llvm-svn: 49008
2008-04-01 00:35:55 +00:00
Dale Johannesen
7d02cf3c9c
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.
llvm-svn: 49006
2008-03-31 23:40:23 +00:00
Dale Johannesen
0de94a1712
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.)
llvm-svn: 49003
2008-03-31 23:20:09 +00:00
Evan Cheng
e4f77c69ac
It's not safe to fold a load from GV stub or constantpool into a two-address use.
...
llvm-svn: 49002
2008-03-31 23:19:51 +00:00
Nate Begeman
f8be3836e3
Actually disable crash reporting on Mac OS X, returning bugpoint to speedy
...
crash miscompilations.
llvm-svn: 49000
2008-03-31 22:19:25 +00:00
Dan Gohman
3717cdaf22
Set blockBegin to point to the beginning of the block,
...
not the end.
llvm-svn: 48999
2008-03-31 22:08:00 +00:00
Evan Cheng
ed6e34fe41
Move reMaterialize() from TargetRegisterInfo to TargetInstrInfo.
...
llvm-svn: 48995
2008-03-31 20:40:39 +00:00
Dan Gohman
f549b26254
Fix a DAGCombiner optimization to respect volatile qualification.
...
llvm-svn: 48994
2008-03-31 20:32:52 +00:00
Gordon Henriksen
765457e28f
Add a unified 'generated documentation' target so the web site script has a consistent target to use.
...
llvm-svn: 48985
2008-03-31 17:27:57 +00:00
Torok Edwin
44a34aa67c
test commit
...
llvm-svn: 48984
2008-03-31 17:09:58 +00:00
Gordon Henriksen
e23ed62b69
Reverting r48974. See PR2183 for details.
...
llvm-svn: 48983
2008-03-31 16:46:23 +00:00
Erick Tryzelaar
4a0da98825
Expose Function::viewCFG and Function::viewCFGOnly to bindings.
...
llvm-svn: 48982
2008-03-31 16:22:09 +00:00
Erick Tryzelaar
eb1242a083
There isn't any c++ code in LangImpl8.html, so use that
...
instead of OCamlLangImpl8.html.
llvm-svn: 48979
2008-03-31 08:50:45 +00:00
Erick Tryzelaar
0039235491
Chapter 5, 6, and 7 of the ocaml/kaleidoscope tutorial
...
and fix some tabs in chapter 3 and 4.
llvm-svn: 48978
2008-03-31 08:44:50 +00:00
Evan Cheng
1973a46cd3
Re-apply 48911.
...
llvm-svn: 48977
2008-03-31 07:54:19 +00:00
Evan Cheng
73d7c3bfba
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.
...
llvm-svn: 48976
2008-03-31 07:53:30 +00:00
Erick Tryzelaar
5cc6176dca
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.
llvm-svn: 48974
2008-03-31 03:46:43 +00:00
Owen Anderson
f28fc71c93
Fix a major bug in the DFS calculation. Thanks for Christopher Lamb for pointing this out.
...
llvm-svn: 48973
2008-03-31 01:39:20 +00:00
Nate Begeman
f2b0b0eb17
Don't eliminate bitcast instructions that change the type of a pointer
...
llvm-svn: 48971
2008-03-31 00:22:16 +00:00
Erick Tryzelaar
dd0ace574b
Tweak build system to allow for installing the tutorial and uninstalling the docs.
...
llvm-svn: 48968
2008-03-30 20:32:18 +00:00
Duncan Sands
7d6c8ae488
Fix comment typo.
...
llvm-svn: 48967
2008-03-30 19:38:55 +00:00
Erick Tryzelaar
a2eba03db2
Fix some documentation for the tutorial.
...
llvm-svn: 48966
2008-03-30 19:14:31 +00:00
Nick Lewycky
9fb8908457
Moved from PR1570.
...
llvm-svn: 48965
2008-03-30 19:07:11 +00:00
Chris Lattner
e950eee303
stop building llvmc.
...
llvm-svn: 48964
2008-03-30 18:58:05 +00:00
Chris Lattner
0f760dfe09
Fix "Control reaches the end of non-void function" warnings,
...
patch by David Chisnall.
llvm-svn: 48963
2008-03-30 18:22:13 +00:00
Chris Lattner
519a51a76f
minor code cleanups, allow constant folding sinf/cosf.
...
llvm-svn: 48961
2008-03-30 18:02:00 +00:00
Chris Lattner
a01203e047
fix typo, PR2181
...
llvm-svn: 48954
2008-03-30 16:59:21 +00:00
Erick Tryzelaar
ca3c28bd58
Add chapter 3 and 4 of the ocaml/kaleidoscope tutorial.
...
llvm-svn: 48949
2008-03-30 09:57:12 +00:00
Evan Cheng
16d72072df
Cosmetic changes.
...
llvm-svn: 48947
2008-03-29 18:34:22 +00:00
Anton Korobeynikov
08bae57469
Honour another bunch of parameter attributes in llvm2cpp
...
llvm-svn: 48942
2008-03-29 11:25:49 +00:00
Anton Korobeynikov
a125be374e
Honour ByVal parameter attribute in llvm2cpp
...
llvm-svn: 48941
2008-03-29 11:15:01 +00:00
Chris Lattner
4311ad2dae
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 )
llvm-svn: 48940
2008-03-29 05:15:47 +00:00
Chris Lattner
ac95515741
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.
llvm-svn: 48939
2008-03-29 04:52:12 +00:00
Chris Lattner
28e7b57605
add a testcase for forming memset from noncontiguous stores.
...
llvm-svn: 48938
2008-03-29 04:51:35 +00:00
Chris Lattner
d528b21a65
give form-memset a significantly more sane heuristic, enable it by default.
...
llvm-svn: 48937
2008-03-29 04:36:18 +00:00
Owen Anderson
8b22873bdd
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.
llvm-svn: 48936
2008-03-29 01:58:47 +00:00
Evan Cheng
1c76b558c4
Cosmetic change.
...
llvm-svn: 48935
2008-03-29 01:04:05 +00:00
Dan Gohman
fd2eb00cc2
Fix a tokenfactor node to use the load chain rather than the
...
load value. This fixes PR2177.
llvm-svn: 48932
2008-03-28 23:45:16 +00:00
Evan Cheng
b8654202dd
Backing out 48911 for now. It's breaking stuff.
...
llvm-svn: 48922
2008-03-28 17:49:06 +00:00
Chris Lattner
a148acdc82
ifdef out a dead function. Should this be removed?
...
llvm-svn: 48916
2008-03-28 15:36:27 +00:00
Duncan Sands
35c7cdac07
Rename getAnyLoad to getLoad is suggested by Evan.
...
llvm-svn: 48914
2008-03-28 09:45:24 +00:00
Evan Cheng
81e0c9a32c
New entry.
...
llvm-svn: 48912
2008-03-28 07:07:06 +00:00
Evan Cheng
9ae4d7b719
Load from stub is already re-materializable.
...
llvm-svn: 48911
2008-03-28 06:49:25 +00:00
Nick Lewycky
f88c84f690
Update example to new syntax.
...
llvm-svn: 48910
2008-03-28 06:46:51 +00:00
Chris Lattner
d62964a7d8
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.
llvm-svn: 48909
2008-03-28 06:45:13 +00:00
Evan Cheng
87bac50d7b
New entry.
...
llvm-svn: 48908
2008-03-28 06:34:23 +00:00
Bill Wendling
a86fd1b214
Simplify the conversion from "0x" numbers to a single digit number.
...
llvm-svn: 48907
2008-03-28 06:22:23 +00:00
Duncan Sands
f740509e58
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.
llvm-svn: 48894
2008-03-27 20:23:40 +00:00
Dan Gohman
cad51cb671
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.
llvm-svn: 48893
2008-03-27 19:56:19 +00:00
Devang Patel
eb1e3fcbe0
PHI->removeIncomingValue may remove PHInode.
...
Increment iterator in advance.
llvm-svn: 48890
2008-03-27 17:32:46 +00:00
Devang Patel
e2337ecf76
add another testcase
...
llvm-svn: 48881
2008-03-27 17:13:55 +00:00
Mikhail Glushenkov
abb139c3f8
Fix build breakage on Windows with GCC 4.3. References bug #2176 .
...
llvm-svn: 48874
2008-03-27 09:53:47 +00:00
Roman Levenstein
30d09518b5
Fix spelling. Thanks, Duncan! :-)
...
llvm-svn: 48873
2008-03-27 09:44:37 +00:00
Roman Levenstein
bc674501ba
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.
llvm-svn: 48872
2008-03-27 09:14:57 +00:00
Erick Tryzelaar
a5e13fab86
Adding the first two chapters of the ocaml/kaleidoscope tutorial.
...
llvm-svn: 48871
2008-03-27 08:18:07 +00:00
Chris Lattner
cb058e41a2
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".
llvm-svn: 48859
2008-03-27 02:43:03 +00:00
Devang Patel
c9c9e406ad
New test case.
...
llvm-svn: 48858
2008-03-27 01:51:31 +00:00
Evan Cheng
308e564693
Code clean up.
...
llvm-svn: 48856
2008-03-27 01:45:11 +00:00
Evan Cheng
29e62a59f3
Allow certain lea instructions to be rematerialized.
...
llvm-svn: 48855
2008-03-27 01:41:09 +00:00
Evan Cheng
4fb07c6500
Remove an unused command line option.
...
llvm-svn: 48854
2008-03-27 01:30:24 +00:00
Evan Cheng
5832410d77
Fix a memory bug: increment an iterator of a deleted machine instr.
...
llvm-svn: 48853
2008-03-27 01:27:25 +00:00
Erick Tryzelaar
8ac07c2834
Expose ExecutionEngine::getTargetData() to c and ocaml bindings.
...
llvm-svn: 48851
2008-03-27 00:27:14 +00:00
Chuck Rose III
f1dcb00266
Updating win32 VStudio project files with new file references and removing dead references.
...
llvm-svn: 48849
2008-03-27 00:02:53 +00:00
Dale Johannesen
87c6ada5de
Fix a bug in Darwin EH: FDE->CIE pointer must
...
be relocatable. Describe why .set is needed better.
llvm-svn: 48848
2008-03-26 23:31:39 +00:00
Mikhail Glushenkov
ea7cb37a5c
Another test commit (with git-svn)
...
llvm-svn: 48843
2008-03-26 21:37:43 +00:00
Mikhail Glushenkov
19e24df3a4
Test commit
...
llvm-svn: 48840
2008-03-26 21:18:58 +00:00
Evan Cheng
db390694ff
One more coalescer fix wrt deadness propagation.
...
llvm-svn: 48837
2008-03-26 20:15:49 +00:00
Evan Cheng
289ba4f335
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.
...
llvm-svn: 48833
2008-03-26 19:03:01 +00:00
Roman Levenstein
358e04a185
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.
llvm-svn: 48822
2008-03-26 12:39:26 +00:00
Roman Levenstein
733a4d6e85
Fixed some spelling errors. Thanks, Duncan!
...
llvm-svn: 48819
2008-03-26 11:23:38 +00:00
Roman Levenstein
7e71b4baaf
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.
llvm-svn: 48817
2008-03-26 09:18:09 +00:00
Evan Cheng
292063603e
Fix some SSE4.1 instruction encoding bugs.
...
llvm-svn: 48815
2008-03-26 08:11:49 +00:00
Owen Anderson
5d2d1776e0
Dead PHI instructions need to be handled specially.
...
llvm-svn: 48811
2008-03-26 03:03:23 +00:00
Erick Tryzelaar
05acd73a73
Test commit (removed trailing whitespace)
...
llvm-svn: 48809
2008-03-26 00:38:56 +00:00
Dale Johannesen
ad6c23d5e9
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.
llvm-svn: 48808
2008-03-25 23:29:30 +00:00
Evan Cheng
ddc58ff92a
Smaller function alignment when optimizing for size.
...
llvm-svn: 48805
2008-03-25 22:29:46 +00:00
Evan Cheng
88c44ef91f
Rename option -optimizefor-size to -optimize-size.
...
llvm-svn: 48804
2008-03-25 22:28:39 +00:00
Owen Anderson
9f129318dc
Remove some debugging code.
...
llvm-svn: 48803
2008-03-25 22:26:43 +00:00
Owen Anderson
1d46d45e35
StrongPHIElimination doesn't support swapping live intervals like the coalescer does.
...
llvm-svn: 48802
2008-03-25 22:25:27 +00:00
Dan Gohman
c60c67fc37
Add explicit keywords.
...
llvm-svn: 48801
2008-03-25 22:06:05 +00:00
Dan Gohman
bdc24adaaf
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.
llvm-svn: 48800
2008-03-25 21:45:14 +00:00
Dan Gohman
a7ba51f6ec
Avoid outputing spaces at the ends of lines.
...
llvm-svn: 48797
2008-03-25 21:38:12 +00:00
Devang Patel
72cfe84f05
Do not align loops if optimizing for size.
...
llvm-svn: 48794
2008-03-25 21:03:02 +00:00
Devang Patel
246a52740b
Add optimize-for-size knob.
...
llvm-svn: 48793
2008-03-25 21:02:35 +00:00
Evan Cheng
df1690dc7c
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.
...
llvm-svn: 48792
2008-03-25 20:08:07 +00:00
Evan Cheng
2b72c05992
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.
...
llvm-svn: 48791
2008-03-25 20:07:13 +00:00
Anton Korobeynikov
4c1559f54e
Fix the Cygwin/Mingw-On-Cygwin build. Patch by Alain Frisch!
...
llvm-svn: 48786
2008-03-25 18:53:36 +00:00
Bill Wendling
e9e706a249
De-constify the input to the "operator >>" method as it is modified.
...
Patch by dekruijf@cs.wisc.edu !
llvm-svn: 48782
2008-03-25 18:16:52 +00:00
Dan Gohman
fd227e9c3a
Fix typos.
...
llvm-svn: 48779
2008-03-25 17:10:29 +00:00
Dan Gohman
883cbfd0ba
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.
llvm-svn: 48777
2008-03-25 16:53:19 +00:00
Gordon Henriksen
40f061cb66
Tests for the instruction iterator bindings.
...
llvm-svn: 48775
2008-03-25 16:35:08 +00:00
Gordon Henriksen
9859ab7283
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!
llvm-svn: 48774
2008-03-25 16:26:51 +00:00
Bill Wendling
0ee1bd9588
Fix PR2062: Don't build Intrinsics.gen in the source directory. Do it in the
...
object directory.
llvm-svn: 48766
2008-03-25 09:12:48 +00:00
Tanya Lattner
ca8eb5d0f5
Disable building llvm-upgrade.
...
llvm-svn: 48764
2008-03-25 05:05:58 +00:00
Sam Bishop
1c077ae1b7
Make a note of the fact that EmitOwnedPtr() has nothing to do with the
...
OwningPtr<> class.
llvm-svn: 48763
2008-03-25 04:41:18 +00:00
Tanya Lattner
8bf97c2324
Byebye llvm-upgrade!
...
llvm-svn: 48762
2008-03-25 04:26:08 +00:00
Evan Cheng
7d564c3b4a
lastRegisterUse() should ignore identity copies. Those will be erased.
...
llvm-svn: 48759
2008-03-25 02:02:19 +00:00
Devang Patel
0d48c94e7d
check struct layout
...
llvm-svn: 48758
2008-03-25 00:47:49 +00:00
Evan Cheng
fe7610f37f
Remove an unneeded test.
...
llvm-svn: 48755
2008-03-24 23:55:16 +00:00
Evan Cheng
50b536eef9
Add \t after .set. Fix by Jay Freeman.
...
llvm-svn: 48753
2008-03-24 23:36:49 +00:00
Evan Cheng
69a3f9c417
If the coalescer commuted a def MI to allow coalescing, it can changed a previously coalesced copy into an non-identity copy.
...
llvm-svn: 48752
2008-03-24 23:31:21 +00:00
Evan Cheng
6e225173c5
Add an assertion to catch register of illegal class.
...
llvm-svn: 48751
2008-03-24 23:28:21 +00:00
Bill Wendling
6306183df3
Use the bit size of the operand instead of the hard-coded 32 to generate the
...
mask.
llvm-svn: 48750
2008-03-24 23:16:37 +00:00
Andrew Lenharth
5e0067d982
With debug info, there are nameless constant global values. do not crash when we hit one
...
llvm-svn: 48749
2008-03-24 22:16:14 +00:00
Steve Naroff
48b1a18de4
Add file to project.
...
llvm-svn: 48747
2008-03-24 22:01:58 +00:00
Evan Cheng
615488ab45
- SSE4.1 extractfps extracts a f32 into a gr32 register. Very useful! Not. Fix the instruction specification and teaches lowering code to use it only when the only use is a store instruction.
...
llvm-svn: 48746
2008-03-24 21:52:23 +00:00
Owen Anderson
ce2682184f
Oops. I wanted the compile flags for C++, not the C preprocessor flags.
...
llvm-svn: 48744
2008-03-24 21:38:01 +00:00
Owen Anderson
c905fe9407
Revert r48676. I had plans for using it, but now it's just dead code.
...
llvm-svn: 48743
2008-03-24 21:29:58 +00:00
Devang Patel
9c1f8b1d55
void type is also a valid function return type.
...
llvm-svn: 48740
2008-03-24 20:52:42 +00:00
Owen Anderson
e2707768a4
Remove #include<iostream>, which I was using for debugging.
...
llvm-svn: 48739
2008-03-24 20:36:47 +00:00
Devang Patel
a38f58aa5c
Add incoming value from header only if phi node has any use inside the loop.
...
llvm-svn: 48738
2008-03-24 20:16:14 +00:00
Tanya Lattner
a863ccadeb
Added Passes.html to the documentation list.
...
llvm-svn: 48736
2008-03-24 18:29:32 +00:00
Devang Patel
8dec6c27b8
Fix typo. Clarify underlying message.
...
llvm-svn: 48734
2008-03-24 18:10:52 +00:00
Devang Patel
c50977b025
Fix test name.
...
llvm-svn: 48733
2008-03-24 18:08:07 +00:00
Chris Lattner
c2c0c8303c
apparently tclsh doesn't lex like bash. Weird.
...
llvm-svn: 48732
2008-03-24 17:41:57 +00:00
Chris Lattner
9ca6bb4f16
pass the option so this test tests the right thing.
...
llvm-svn: 48731
2008-03-24 17:36:38 +00:00
Devang Patel
c8794e71e3
Add new test.
...
llvm-svn: 48730
2008-03-24 17:16:39 +00:00
Dan Gohman
9654eca3ab
Remove an unnecessary #include.
...
llvm-svn: 48729
2008-03-24 16:58:44 +00:00
Devang Patel
ea249e3aef
Remove incorrect comment.
...
llvm-svn: 48728
2008-03-24 16:58:20 +00:00
Dan Gohman
aa583d75b1
Shrink the size of AllocationInst by using its SubclassData
...
field to store the alignment value instead of haing a
separate field.
llvm-svn: 48727
2008-03-24 16:55:58 +00:00
Dan Gohman
d8ea040c31
APIntify SelectionDAG's EXTRACT_ELEMENT code.
...
llvm-svn: 48726
2008-03-24 16:38:05 +00:00
Evan Cheng
3471ae8c5d
Increasing the inline limit from (overly conservative) 200 to 300. Given each BB costs 20 and each instruction costs 5, 200 means a 4 BB function + 24 instructions (actually less because caller's size also contributes to it).
...
Furthermore, double the limit when more than 10% of the callee instructions are vector instructions. Multimedia kernels tend to love inlining.
llvm-svn: 48725
2008-03-24 06:37:48 +00:00
Bill Wendling
1f5c2e7fc6
Small format/grammar changes.
...
llvm-svn: 48723
2008-03-24 05:58:47 +00:00
Bill Wendling
f52a379cb3
Grammar Nazi strikes! :-)
...
llvm-svn: 48722
2008-03-24 05:55:54 +00:00
Devang Patel
e3dfc1cbf1
Update Function type documentation to clarify how multiple return values are supported.
...
llvm-svn: 48721
2008-03-24 05:35:41 +00:00
Evan Cheng
21a8e3d260
Temporarily disabling memset forming optimization. Add an option.
...
llvm-svn: 48720
2008-03-24 05:28:38 +00:00
Owen Anderson
200e57840e
Be sure to remove intervals after we've joined them. Also, remove some duplicated code.
...
With this pass, StrongPHIElim can compile very simple testcases correctly. There's still a ways
to go before it's ready for prime time, though.
llvm-svn: 48719
2008-03-24 04:11:27 +00:00
Evan Cheng
c3cf9f872a
Transform (zext (or (icmp), (icmp))) to (or (zext (cimp), (zext icmp))) if at least one of the (zext icmp) can be transformed to eliminate an icmp.
...
llvm-svn: 48715
2008-03-24 00:21:34 +00:00
Evan Cheng
58db865d6e
Remove duplicated entries.
...
llvm-svn: 48714
2008-03-23 22:56:07 +00:00
Gordon Henriksen
76537e4251
Another typo.
...
llvm-svn: 48713
2008-03-23 22:52:51 +00:00
Gordon Henriksen
21c6a018b1
Fix a typo.
...
llvm-svn: 48712
2008-03-23 22:37:22 +00:00
Gordon Henriksen
07a45f4edb
Objective Caml bindings for basic block, function, global, and arg iterators.
...
llvm-svn: 48711
2008-03-23 22:21:29 +00:00
Anton Korobeynikov
1fdd5e9133
Minor typo fixes. Also add another FIXME.
...
llvm-svn: 48710
2008-03-23 20:32:06 +00:00
Gordon Henriksen
cc0f58a763
Update project to reflect deleted files.
...
llvm-svn: 48709
2008-03-23 16:49:47 +00:00
Anton Korobeynikov
d38b3fb127
Preserve calling convention during function cloning
...
llvm-svn: 48708
2008-03-23 16:03:00 +00:00
Anton Korobeynikov
17fb491469
Add license header
...
llvm-svn: 48707
2008-03-23 14:53:18 +00:00
Anton Korobeynikov
9f0e820fa3
Add Win64 compilation callback. This allows easy examples to be JITed on Win64!
...
llvm-svn: 48706
2008-03-23 14:44:32 +00:00
Anton Korobeynikov
058014972a
Use C-style comments :)
...
llvm-svn: 48705
2008-03-23 13:44:17 +00:00
Anton Korobeynikov
a347663762
Provide a JIT selector on win64
...
llvm-svn: 48704
2008-03-23 13:43:47 +00:00
Anton Korobeynikov
7574ead985
Hack out the PIC mode on Win64 targets. This needs to be investigated later.
...
llvm-svn: 48703
2008-03-23 13:41:18 +00:00
Anton Korobeynikov
4733e72a25
Code cleanup. Provide generic way of selecting JIT pointer bitwidth regardless
...
of compiler used.
llvm-svn: 48702
2008-03-23 13:40:45 +00:00
Anton Korobeynikov
bd47269f13
Remove old-standing obsolete code.
...
llvm-svn: 48701
2008-03-23 12:32:54 +00:00
Anton Korobeynikov
479c8382f3
Add Mikhail to credits file
...
llvm-svn: 48700
2008-03-23 08:58:32 +00:00
Anton Korobeynikov
70548d835e
Add first proof-of-concept universal compiler driver framework based
...
on ideas mentioned in PR686.
Written by Mikhail Glushenkov and contributed by Codedgers, Inc.
Old llvmc will be removed soon after new one will have all its properties.
llvm-svn: 48699
2008-03-23 08:57:20 +00:00
Bill Wendling
7e2a6c4112
New testcase.
...
llvm-svn: 48697
2008-03-22 22:27:01 +00:00
Bill Wendling
da2586f69a
Don't strip things when we're doing a debug build.
...
llvm-svn: 48696
2008-03-22 21:57:15 +00:00
Anton Korobeynikov
cec773d8e7
Honour built-in defines on win64 targets for automatically subtarget recognize.
...
Force stack alignment to 16 bytes on win targets.
llvm-svn: 48695
2008-03-22 21:18:22 +00:00
Anton Korobeynikov
07a789d2b5
Recognize "windows" in target triple, not only "win32"
...
llvm-svn: 48694
2008-03-22 21:12:53 +00:00
Owen Anderson
e3605ac108
Use normal naming convention for test.
...
llvm-svn: 48693
2008-03-22 21:08:33 +00:00
Anton Korobeynikov
b86e0936f1
Add information about callee-saved registers on Win64
...
llvm-svn: 48692
2008-03-22 21:04:01 +00:00
Anton Korobeynikov
7f125b2ba5
Add convenient helper for win64 check. Simplify things slightly.
...
llvm-svn: 48691
2008-03-22 20:57:27 +00:00
Anton Korobeynikov
7b4f4e1a86
Initial support for Win64 calling conventions. Still in early state.
...
llvm-svn: 48690
2008-03-22 20:37:30 +00:00
Anton Korobeynikov
7ebdd255b5
Register EH frames emitted in JIT when using gcc unwinding runtime
...
llvm-svn: 48688
2008-03-22 08:53:09 +00:00
Anton Korobeynikov
dd8c695746
Fix merge error
...
llvm-svn: 48687
2008-03-22 08:50:08 +00:00
Anton Korobeynikov
3f7fab913d
Add testcase for prev. commit. Minor fixes
...
llvm-svn: 48686
2008-03-22 08:37:05 +00:00
Anton Korobeynikov
25b2e8203a
Aliasing chains cleanups: update langref, add check into verifier
...
llvm-svn: 48685
2008-03-22 08:36:14 +00:00
Anton Korobeynikov
72d5d42dbc
Support chained aliases for LLVM IR printing. This fixes PR2145
...
llvm-svn: 48684
2008-03-22 08:17:17 +00:00
Anton Korobeynikov
2fa75184f3
Another comments fixing
...
llvm-svn: 48683
2008-03-22 07:53:40 +00:00
Anton Korobeynikov
2fb3897f1b
Slightly increase default set size. It's cheap and won't hurt.
...
llvm-svn: 48682
2008-03-22 07:48:40 +00:00
Anton Korobeynikov
a56dcc977e
Typo fixes
...
llvm-svn: 48681
2008-03-22 07:48:08 +00:00
Chris Lattner
53ccb62712
implement an initial hack at a straight-line store -> memset optimization.
...
This fires dozens of times across spec and multisource, but I don't know
if it actually speeds stuff up. Hopefully the testers will show something
nice :)
llvm-svn: 48680
2008-03-22 05:37:16 +00:00
Chris Lattner
168be766a8
implement the logic for memset insertion and store deletion.
...
llvm-svn: 48679
2008-03-22 04:13:49 +00:00
Owen Anderson
5b993fd70d
Add a comment, and fix a bug where AllocateRW recurred to AllocateRWX instead of itself.
...
llvm-svn: 48677
2008-03-22 02:59:54 +00:00
Owen Anderson
c1e4e3e9a1
Add an AllocateRW to match AllocateRWX.
...
llvm-svn: 48676
2008-03-22 02:33:53 +00:00
Evan Cheng
31604a62f6
Teach DAG combiner to commute commutable binary nodes in order to achieve sdisel CSE.
...
llvm-svn: 48673
2008-03-22 01:55:50 +00:00
Chris Lattner
f5d41c67af
This is a partially implemented and currently disabled start of a store
...
merging optimization. Nothing to see here, hopefully more later :)
llvm-svn: 48670
2008-03-22 00:31:52 +00:00
Dan Gohman
9988569af8
Don't include <map> in Pass.h, which doesn't need it. This requires
...
adding <map> to many files that actually do need it.
llvm-svn: 48667
2008-03-21 23:51:57 +00:00
Dan Gohman
026eed69e7
Avoid calling array_endof in a static initializer, as it incurs
...
dynamic initialization.
llvm-svn: 48666
2008-03-21 23:44:21 +00:00
Dan Gohman
5a6ac79738
Specialize FORCE_DEFINING_FILE_TO_BE_LINKED using a GCC trick
...
to avoid using constructor calls for static objects. This reduces
the number of objects requiring static constructors in a typical
LLVM build by around 20%.
llvm-svn: 48665
2008-03-21 23:38:23 +00:00
Dan Gohman
30e44a4b40
Fix -view-sunit-dags to support cross-rc-copy nodes.
...
llvm-svn: 48664
2008-03-21 22:51:06 +00:00
Gabor Greif
a6c5b38c4a
a happier version of happiness
...
llvm-svn: 48663
2008-03-21 22:17:07 +00:00
Chris Lattner
804209d17c
the size of a smallvector shouldn't be part of the interface to these methods.
...
llvm-svn: 48662
2008-03-21 22:01:16 +00:00
Chris Lattner
beb216da0a
make gvn marginally faster by reallocating the lastSeenLoad map for
...
each basic block.
llvm-svn: 48660
2008-03-21 21:33:23 +00:00
Chris Lattner
2876a645c3
Minor cleanups and shrinkification.
...
llvm-svn: 48658
2008-03-21 21:14:38 +00:00
Dan Gohman
a25dde6fee
Handle getresult instructions in different basic blocks
...
from their aggregate operands by moving the getresult
instructions.
llvm-svn: 48657
2008-03-21 21:01:32 +00:00
Chris Lattner
c55b444a8f
Restore this assert now that the livevar bug is fixed.
...
This verifies kill info for "ret" fp operands is right.
llvm-svn: 48656
2008-03-21 20:41:27 +00:00
Duncan Sands
e37b9c0d34
Testcase for PR2160.
...
llvm-svn: 48655
2008-03-21 20:22:11 +00:00