Compare commits
20 Commits
llvmorg-3.
...
llvmorg-1.
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
52a52a9911 | ||
|
|
2eed6e9122 | ||
|
|
44008a16b7 | ||
|
|
6e518e6326 | ||
|
|
f924987081 | ||
|
|
4452c27c9a | ||
|
|
02e054d107 | ||
|
|
9096e27509 | ||
|
|
42260d7716 | ||
|
|
faa1d1f04d | ||
|
|
0d6d28b38f | ||
|
|
4a0f8ad6f1 | ||
|
|
ccb2261ec3 | ||
|
|
b93e94b748 | ||
|
|
8b83d1b419 | ||
|
|
188c951004 | ||
|
|
cf7c329798 | ||
|
|
3d2a2eb218 | ||
|
|
6935fa4016 | ||
|
|
f37a450b62 |
@@ -1,37 +1,3 @@
|
||||
NOTICE:
|
||||
=======
|
||||
All distributions of LLVM prior to the 1.0 Release will be licensed to you
|
||||
under the LLVM pre-release license. The 1.0 Release will be announced on the
|
||||
LLVM Announcements Mailing List.
|
||||
|
||||
After the 1.0 Release of LLVM, the LLVM code will be licensed to you under the
|
||||
LLVM Release License (aka the Illinois Open Source License).
|
||||
|
||||
The main point is that you cannot re-distribute LLVM until the 1.0 Release.
|
||||
|
||||
==============================================================================
|
||||
LLVM pre-release license
|
||||
==============================================================================
|
||||
|
||||
This is a pre-release distribution of the LLVM software and is provided for
|
||||
evaluation only. This version of the LLVM software or modifications thereof
|
||||
should not be distributed to third parties for any purpose. Any third parties
|
||||
interested in it can request a copy directly by sending e-mail to
|
||||
llvmdev@cs.uiuc.edu. As this is an evaluation release, we would appreciate any
|
||||
and all feedback, ideas, and reports of bugs that you encounter. You may
|
||||
discuss development of LLVM on llvmdev@cs.uiuc.edu, and bugs can be submitted
|
||||
through the LLVM Bug Tracker at http://llvm.cs.uiuc.edu/bugzilla/ . We thank
|
||||
you for your interest in LLVM and look forward to any comments or feedback you
|
||||
may have.
|
||||
|
||||
THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE
|
||||
SOFTWARE.
|
||||
|
||||
==============================================================================
|
||||
LLVM Release License
|
||||
==============================================================================
|
||||
|
||||
165
llvm/README.txt
165
llvm/README.txt
@@ -1,106 +1,129 @@
|
||||
The LLVM Compiler Infrastructure
|
||||
http://llvm.cs.uiuc.edu
|
||||
|
||||
Welcome to LLVM!
|
||||
-----------------
|
||||
This file is intended to do four things:
|
||||
(1) help you get started using LLVM;
|
||||
(2) tell you how to get questions about LLVM answered;
|
||||
(3) tell you where to find documentation for different kinds of questions; and
|
||||
(4) tell you about three LLVM-related mailing lists.
|
||||
|
||||
This file provides the location of all important LLVM documentation. In
|
||||
particular, you should read the license information and the installation
|
||||
directions before you begin using LLVM.
|
||||
|
||||
After that, there are several technical references that will help you use LLVM.
|
||||
Consult them as necessary.
|
||||
Getting Started with LLVM
|
||||
-------------------------
|
||||
|
||||
Finally, you can find information on how to communicate with the LLVM
|
||||
developers and LLVM community. This is of primary interest if you wish to
|
||||
submit a bug, supply a patch, or just keep current with what's going on with
|
||||
LLVM.
|
||||
(1) For license information:
|
||||
llvm/LICENSE.txt
|
||||
|
||||
Introductory Literature:
|
||||
(2) Installing and compiling LLVM:
|
||||
llvm/docs/GettingStarted.html
|
||||
|
||||
LLVM Home Page:
|
||||
http://llvm.cs.uiuc.edu
|
||||
(3) Learn about features and limitations of this release:
|
||||
llvm/docs/ReleaseNotes.html
|
||||
|
||||
License Information:
|
||||
llvm/LICENSE.txt
|
||||
(4) Learn how to write a pass within the LLVM system:
|
||||
llvm/docs/WritingAnLLVMPass.html
|
||||
|
||||
Release Notes:
|
||||
llvm/docs/ReleaseNotes.html
|
||||
(5) Learn how to start a new development project using LLVM, where your
|
||||
new source code can live anywhere (outside or inside the LLVM tree),
|
||||
while using LLVM header files and libraries:
|
||||
llvm/docs/Projects.html
|
||||
|
||||
LLVM Design:
|
||||
|
||||
The LLVM Instruction Set and Compilation Strategy:
|
||||
http://llvm.cs.uiuc.edu/pubs/2002-08-09-LLVMCompilationStrategy.html
|
||||
Getting Help with LLVM
|
||||
----------------------
|
||||
|
||||
(1) If you have questions or development problems not answered in the
|
||||
documentation, send e-mail to llvmdev@cs.uiuc.edu. This mailing list is
|
||||
monitored by all the people in the LLVM group at Illinois, and you should
|
||||
expect prompt first responses.
|
||||
|
||||
(2) To report a bug, submit a bug report as described in the document:
|
||||
http://llvm.cs.uiuc.edu/docs/HowToSubmitABug.html
|
||||
|
||||
(3) We now use Bugzilla to track bugs, so you can check the status of
|
||||
previous bugs at:
|
||||
http://llvm.cs.uiuc.edu/bugs/query.cgi
|
||||
|
||||
|
||||
LLVM Documentation
|
||||
------------------
|
||||
|
||||
All the documents mentioned below except the design overview tech report
|
||||
are included as part of the LLVM release (in llvm/docs/*):
|
||||
|
||||
LLVM Design Overview:
|
||||
LLVM : A Compilation Framework for Lifelong Program Analysis
|
||||
and Transformation:
|
||||
http://llvm.cs.uiuc.edu/pubs/2003-09-30-LifelongOptimizationTR.html
|
||||
|
||||
LLVM User Guides:
|
||||
|
||||
Download and Installation Instructions:
|
||||
llvm/docs/GettingStarted.html
|
||||
Download and Installation Instructions:
|
||||
llvm/docs/GettingStarted.html
|
||||
|
||||
LLVM Command Guide:
|
||||
llvm/docs/CommandGuide/CommandGuide.html
|
||||
LLVM Command Guide:
|
||||
llvm/docs/CommandGuide/index.html
|
||||
|
||||
LLVM Assembly Language:
|
||||
llvm/docs/LangRef.html
|
||||
LLVM Assembly Language:
|
||||
llvm/docs/LangRef.html
|
||||
|
||||
LLVM Test Suite Guide:
|
||||
llvm/docs/TestingGuide.html
|
||||
LLVM Test Suite Guide:
|
||||
llvm/docs/TestingGuide.html
|
||||
|
||||
LLVM Programming Documentation:
|
||||
|
||||
LLVM Programmers Manual:
|
||||
llvm/docs/ProgrammersManual.html
|
||||
LLVM Programmers Manual:
|
||||
llvm/docs/ProgrammersManual.html
|
||||
|
||||
Writing an LLVM Pass:
|
||||
llvm/docs/WritingAnLLVMPass.html
|
||||
Writing an LLVM Pass:
|
||||
llvm/docs/WritingAnLLVMPass.html
|
||||
|
||||
Alias Analysis in LLVM:
|
||||
llvm/docs/AliasAnalysis.html
|
||||
Alias Analysis in LLVM:
|
||||
llvm/docs/AliasAnalysis.html
|
||||
|
||||
Command Line Library:
|
||||
llvm/docs/CommandLine.html
|
||||
Command Line Library:
|
||||
llvm/docs/CommandLine.html
|
||||
|
||||
Coding Standards:
|
||||
llvm/docs/CodingStandards.html
|
||||
Coding Standards:
|
||||
llvm/docs/CodingStandards.html
|
||||
|
||||
LLVM Community:
|
||||
Other LLVM Resources:
|
||||
|
||||
Submitting a Bug:
|
||||
http://llvm.cs.uiuc.edu/docs/HowToSubmitABug.html
|
||||
Submitting a Bug:
|
||||
http://llvm.cs.uiuc.edu/docs/HowToSubmitABug.html
|
||||
|
||||
Open Projects:
|
||||
llvm/docs/OpenProjects.html
|
||||
Open Projects:
|
||||
llvm/docs/OpenProjects.html
|
||||
|
||||
Creating a new LLVM Project:
|
||||
llvm/docs/Projects.html
|
||||
Creating a new LLVM Project:
|
||||
llvm/docs/Projects.html
|
||||
|
||||
Mailing Lists:
|
||||
There are several mailing lists providing LLVM users with
|
||||
information:
|
||||
Mailing Lists
|
||||
--------------
|
||||
There are three mailing lists for providing LLVM users with information:
|
||||
|
||||
o LLVM Announcements List:
|
||||
http://mail.cs.uiuc.edu/mailman/listinfo/llvm-announce
|
||||
(1) LLVM Announcements List:
|
||||
http://mail.cs.uiuc.edu/mailman/listinfo/llvm-announce
|
||||
|
||||
This is a low volume list that provides
|
||||
important announcements regarding LLVM. It is
|
||||
primarily intended to announce new releases,
|
||||
major updates to the software, etc. This list
|
||||
is highly recommended for anyone that uses LLVM.
|
||||
This is a low volume list that provides important announcements regarding
|
||||
LLVM. It is primarily intended to announce new releases, major updates to
|
||||
the software, etc. This list is highly recommended for anyone that uses
|
||||
LLVM.
|
||||
|
||||
(2) LLVM Developers List:
|
||||
http://mail.cs.uiuc.edu/mailman/listinfo/llvmdev
|
||||
|
||||
o LLVM Developers List:
|
||||
http://mail.cs.uiuc.edu/mailman/listinfo/llvmdev
|
||||
This list is for people who want to be included in technical discussions
|
||||
of LLVM. People post to this list when they have questions about writing
|
||||
code for or using the LLVM tools. It is relatively low volume.
|
||||
|
||||
This list is for people who want to be included
|
||||
in technical discussions of LLVM. People post
|
||||
to this list when they have questions about
|
||||
writing code for or using the LLVM tools. It
|
||||
is low volume.
|
||||
(3) LLVM Commits List
|
||||
http://mail.cs.uiuc.edu/mailman/listinfo/llvm-commits
|
||||
|
||||
o LLVM Commits List
|
||||
http://mail.cs.uiuc.edu/mailman/listinfo/llvm-commits
|
||||
|
||||
This list contains all commit messages that are
|
||||
made when LLVM developers commit code changes
|
||||
to the CVS archive. It is useful for those who
|
||||
want to stay on the bleeding edge of LLVM
|
||||
development.
|
||||
|
||||
This list is very high volume.
|
||||
This list contains all commit messages that are made when LLVM developers
|
||||
commit code changes to the CVS archive. It is useful for those who want to
|
||||
stay on the bleeding edge of LLVM development. This list is very high
|
||||
volume.
|
||||
|
||||
|
||||
@@ -494,10 +494,12 @@ printed.
|
||||
|
||||
<!-- *********************************************************************** -->
|
||||
|
||||
<hr><font size="-1">
|
||||
<hr>
|
||||
<font size="-1">
|
||||
<address><a href="mailto:sabre@nondot.org">Chris Lattner</a></address>
|
||||
<a href="http://llvm.cs.uiuc.edu">The LLVM Compiler Infrastructure</a>
|
||||
<br>
|
||||
Last modified: $Date$
|
||||
</font>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -15,9 +15,12 @@
|
||||
C/C++ front-end, based on GCC 3.4, from source.</p>
|
||||
|
||||
<p><b>NOTE:</b> This is currently a somewhat fragile, error-prone
|
||||
process, and you should only try to do it if (A) you really, really,
|
||||
really can't use the binaries we distribute, and (B) you are a wicked
|
||||
good GCC hacker.</p>
|
||||
process, and you should only try to do it if
|
||||
<ul>
|
||||
<li>(A) you really, really, really can't use the binaries we distribute
|
||||
<li>(B) you need GCC to fix some of the header files on your system
|
||||
<li>(C) you are an elite GCC hacker.</p>
|
||||
</ul>
|
||||
|
||||
<p>We welcome patches to help make this process simpler.</p>
|
||||
|
||||
@@ -105,6 +108,11 @@ good GCC hacker.</p>
|
||||
<li>No inline assembly for position independent code. At the LLVM level,
|
||||
everything is position independent.</li>
|
||||
<li>We handle <tt>.init</tt> and <tt>.fini</tt> differently.</li>
|
||||
<li>You may have to disable multilib support in your target. Using multilib
|
||||
support causes the GCC compiler driver to add a lot of "<tt>-L</tt>"
|
||||
options to the link line, which do not relate to LLVM and confuse
|
||||
<tt>gccld</tt>. To disable multilibs, delete any
|
||||
<tt>MULTILIB_OPTIONS</tt> lines from your target files.</li>
|
||||
<li>Did we mention that we don't support inline assembly? You'll probably
|
||||
have to add some fixinclude hacks to disable it in the system
|
||||
headers.</li>
|
||||
@@ -149,6 +157,8 @@ following means:</p>
|
||||
|
||||
<hr><font size="-1">
|
||||
<address><a href="mailto:gaeke -at- uiuc.edu">Brian Gaeke</a></address>
|
||||
<a href="http://llvm.cs.uiuc.edu">The LLVM Compiler Infrastructure</a>
|
||||
<br>
|
||||
Last modified: $Date$
|
||||
</font>
|
||||
|
||||
|
||||
15
llvm/docs/ChrisNotes.txt
Normal file
15
llvm/docs/ChrisNotes.txt
Normal file
@@ -0,0 +1,15 @@
|
||||
* Rewrite the llvm parser/lexer in http://www.antlr.org when time permits.
|
||||
They actually do C++. Imagine that.
|
||||
* Need a way to attach bytecode block info at various levels of asm code.
|
||||
* Recognize and save comments in assembly and bytecode format
|
||||
* Encode line number table in bytecode (like #line), optional table
|
||||
|
||||
* Encode negative relative offsets in the bytecode file
|
||||
|
||||
* Apparently bison has a %pure_parser option. Maybe useful for AsmParser
|
||||
|
||||
* Implement the following derived types:
|
||||
* "packed format", like this: [4 x sbyte]: Packed SIMD datatype
|
||||
* Bytecode reader should use extensions that may or may not be linked into the
|
||||
application to read blocks. Thus an easy way to ignore symbol table info
|
||||
would be to not link in that reader into the app.
|
||||
@@ -831,6 +831,8 @@ something. :)
|
||||
<hr>
|
||||
<font size=-1>
|
||||
<address><a href="mailto:sabre@nondot.org">Chris Lattner</a></address>
|
||||
<a href="http://llvm.cs.uiuc.edu">The LLVM Compiler Infrastructure</a>
|
||||
<br>
|
||||
<!-- Created: Tue Jan 23 15:19:28 CST 2001 -->
|
||||
<!-- hhmts start -->
|
||||
Last modified: Sun Oct 12 22:12:43 CDT 2003
|
||||
|
||||
@@ -1530,6 +1530,8 @@ line options </b></font></td></tr></table><ul>
|
||||
<hr>
|
||||
<font size=-1>
|
||||
<address><a href="mailto:sabre@nondot.org">Chris Lattner</a></address>
|
||||
<a href="http://llvm.cs.uiuc.edu">The LLVM Compiler Infrastructure</a>
|
||||
<br>
|
||||
<!-- Created: Tue Jan 23 15:19:28 CST 2001 -->
|
||||
<!-- hhmts start -->
|
||||
Last modified: Fri Aug 1 16:30:11 CDT 2003
|
||||
|
||||
@@ -875,6 +875,8 @@ burg.llvm.lib analyze: ../../../include/llvm/Analysis/DSNode.h:7
|
||||
|
||||
<hr>
|
||||
<address><a href="mailto:sabre@nondot.org">Chris Lattner</a></address>
|
||||
<a href="http://llvm.cs.uiuc.edu">The LLVM Compiler Infrastructure</a>
|
||||
<br>
|
||||
<!-- Created: Wed Nov 6 19:57:57 CST 2002 -->
|
||||
<!-- hhmts start -->
|
||||
Last modified: Thu Nov 14 20:00:50 CST 2002
|
||||
|
||||
@@ -138,8 +138,25 @@ LLVM: Frequently Asked Questions
|
||||
cases, this takes care of the problem. To do this, just type <tt>make
|
||||
clean</tt> and then <tt>make</tt> in the directory that fails to build.
|
||||
<p>
|
||||
|
||||
<dt><b>I've built LLVM and am testing it, but the tests freeze.</b>
|
||||
<dd>
|
||||
This is most likely occurring because you built a profile or release
|
||||
(optimized) build of LLVM and have not specified the same information on
|
||||
the <tt>gmake</tt> command line.
|
||||
<p>
|
||||
For example, if you built LLVM with the command:
|
||||
<p>
|
||||
<tt>gmake ENABLE_PROFILING=1</tt>
|
||||
<p>
|
||||
...then you must run the tests with the following commands:
|
||||
<p>
|
||||
<tt>cd llvm/test<br>gmake ENABLE_PROFILING=1</tt>
|
||||
</dl>
|
||||
<hr>
|
||||
|
||||
<a href="http://llvm.cs.uiuc.edu">The LLVM Compiler Infrastructure</a>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -90,6 +90,11 @@
|
||||
<li><tt>cd <i>where-you-want-the-C-front-end-to-live</i></tt>
|
||||
<li><tt>gunzip --stdout cfrontend.<i>platform</i>.tar.gz | tar -xvf
|
||||
-</tt>
|
||||
<li><b>Sparc Only:</b><br>
|
||||
<tt>
|
||||
cd cfrontend/sparc<br>
|
||||
./fixheaders
|
||||
</tt>
|
||||
</ol>
|
||||
|
||||
<p>
|
||||
@@ -204,8 +209,7 @@
|
||||
native code may not work on your platform.
|
||||
<p>
|
||||
The GCC front end is not very portable at the moment. If you want to get
|
||||
it to work on another platform, you can always request
|
||||
<a href="mailto:llvm-request@zion.cs.uiuc.edu">a copy of the source</a>
|
||||
it to work on another platform, you can download a copy of the source
|
||||
and try to compile it on your platform.
|
||||
</p>
|
||||
|
||||
@@ -377,7 +381,8 @@
|
||||
|
||||
<p>
|
||||
Before configuring and compiling the LLVM suite, you need to extract the
|
||||
LLVM GCC front end from the binary distribution. It is used for building the
|
||||
LLVM GCC front end from the binary distribution. It is used for building
|
||||
the
|
||||
bytecode libraries later used by the GCC front end for linking programs, and
|
||||
its location must be specified when the LLVM suite is configured.
|
||||
</p>
|
||||
@@ -390,6 +395,29 @@
|
||||
-</tt>
|
||||
</ol>
|
||||
|
||||
If you are on a Sparc/Solaris machine, you will need to fix the header
|
||||
files:
|
||||
|
||||
<p>
|
||||
|
||||
<tt>
|
||||
cd cfrontend/sparc
|
||||
<br>
|
||||
./fixheaders
|
||||
</tt>
|
||||
|
||||
<p>
|
||||
The binary versions of the GCC front end may not suit all of your needs.
|
||||
For example, the binary distribution may include an old version of a system
|
||||
header file, not "fix" a header file that needs to be fixed for GCC, or it
|
||||
may be linked with libraries not available on your system.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
In cases like these, you may want to try
|
||||
<a href="CFEBuildInstrs.html">building the GCC front end from source.</a>
|
||||
This is not for the faint of heart, so be forewarned.
|
||||
</p>
|
||||
<!------------------------------------------------------------------------->
|
||||
<h3><a name="config">Local LLVM Configuration</a></h3>
|
||||
<!------------------------------------------------------------------------->
|
||||
@@ -1010,10 +1038,12 @@
|
||||
If you have any questions or run into any snags (or you have any
|
||||
additions...), please send an email to
|
||||
<a href="mailto:sabre@nondot.org">Chris Lattner</a>.</p>
|
||||
<a href="http://llvm.cs.uiuc.edu">The LLVM Compiler Infrastructure</a>
|
||||
<br>
|
||||
|
||||
<!-- Created: Mon Jul 1 02:29:02 CDT 2002 -->
|
||||
<!-- hhmts start -->
|
||||
Last modified: Mon Aug 11 13:52:22 CDT 2003
|
||||
<!-- hhmts end -->
|
||||
<!-- Created: Mon Jul 1 02:29:02 CDT 2002 -->
|
||||
<!-- hhmts start -->
|
||||
Last modified: Mon Aug 11 13:52:22 CDT 2003
|
||||
<!-- hhmts end -->
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -273,6 +273,8 @@ following:
|
||||
|
||||
<hr><font size-1>
|
||||
<address><a href="mailto:sabre@nondot.org">Chris Lattner</a></address>
|
||||
<a href="http://llvm.cs.uiuc.edu">The LLVM Compiler Infrastructure</a>
|
||||
<br>
|
||||
<!-- Created: Tue Aug 6 15:00:33 CDT 2002 -->
|
||||
<!-- hhmts start -->
|
||||
Last modified: Tue Oct 14 15:57:47 CDT 2003
|
||||
|
||||
@@ -1947,6 +1947,8 @@ arbitrarily complex and require memory allocation, for example.<p>
|
||||
<hr>
|
||||
<font size=-1>
|
||||
<address><a href="mailto:sabre@nondot.org">Chris Lattner</a></address>
|
||||
<a href="http://llvm.cs.uiuc.edu">The LLVM Compiler Infrastructure</a>
|
||||
<br>
|
||||
<!-- Created: Tue Jan 23 15:19:28 CST 2001 -->
|
||||
<!-- hhmts start -->
|
||||
Last modified: Tue Oct 21 10:43:36 CDT 2003
|
||||
|
||||
@@ -275,6 +275,8 @@ Ideas for profile guided transformations:<p>
|
||||
|
||||
<hr><font size-1>
|
||||
<address><a href="mailto:sabre@nondot.org">Chris Lattner</a></address>
|
||||
<a href="http://llvm.cs.uiuc.edu">The LLVM Compiler Infrastructure</a>
|
||||
<br>
|
||||
<!-- Created: Tue Aug 6 15:00:33 CDT 2002 -->
|
||||
<!-- hhmts start -->
|
||||
Last modified: Wed Oct 1 16:48:54 CDT 2003
|
||||
|
||||
@@ -1787,6 +1787,8 @@ pointer to the parent Function.
|
||||
<hr><font size-1>
|
||||
<address>By: <a href="mailto:dhurjati@cs.uiuc.edu">Dinakar Dhurjati</a> and
|
||||
<a href="mailto:sabre@nondot.org">Chris Lattner</a></address>
|
||||
<a href="http://llvm.cs.uiuc.edu">The LLVM Compiler Infrastructure</a>
|
||||
<br>
|
||||
<!-- Created: Tue Aug 6 15:00:33 CDT 2002 -->
|
||||
<!-- hhmts start -->
|
||||
Last modified: Sat Sep 20 09:25:11 CDT 2003
|
||||
|
||||
@@ -383,5 +383,8 @@
|
||||
|
||||
<hr>
|
||||
Written by <a href="mailto:criswell@uiuc.edu">John Criswell</a>.
|
||||
<br>
|
||||
<a href="http://llvm.cs.uiuc.edu">The LLVM Compiler Infrastructure</a>
|
||||
<br>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -64,7 +64,10 @@ as well as a large suite of scalar and interprocedural optimizations.<p>
|
||||
The default optimizer sequence used by the C/C++ front-ends is:<p>
|
||||
|
||||
<ol>
|
||||
<li>CFG simplification (-simplifycfg)
|
||||
<li>Interprocedural dead code elimination (-globaldce)
|
||||
<li>Interprocedural constant propagation (-ipconstprop)
|
||||
<li>Dead argument elimination (-deadargelim)
|
||||
<li>Exception handling pruning (-prune-eh)
|
||||
<li>Function inlining (-inline)
|
||||
<li>Instruction combining (-instcombine)
|
||||
@@ -94,6 +97,7 @@ At link-time, the following optimizations are run:<p>
|
||||
<ol>
|
||||
<li>Global constant merging (-constmerge)
|
||||
<li>[optional] Internalization [which marks most functions and global variables static] (-internalize)
|
||||
<li>Interprocedural constant propagation (-ipconstprop)
|
||||
<li>Interprocedural dead argument elimination (-deadargelim)
|
||||
<li>Instruction combining (-instcombine)
|
||||
<li>CFG simplification (-simplifycfg)
|
||||
@@ -103,7 +107,8 @@ At link-time, the following optimizations are run:<p>
|
||||
At this time, LLVM is known to work properly with SPEC CPU 2000, the Olden
|
||||
benchmarks, and the Ptrdist benchmarks among many other programs. Note however
|
||||
that the Sparc and X86 backends do not currently support exception throwing or
|
||||
long jumping. For these programs you must use the C backend.<p>
|
||||
long jumping (including 253.perlbmk in SPEC). For these programs you must use
|
||||
the C backend.<p>
|
||||
|
||||
|
||||
<!-- *********************************************************************** -->
|
||||
@@ -358,6 +363,10 @@ problem probably cannot be fixed.<p>
|
||||
<li><a href="http://llvm.cs.uiuc.edu/PR33">Initializers for global variables</a>
|
||||
cannot include special floating point numbers like Not-A-Number or Infinity.<p>
|
||||
|
||||
<li><a href="http://zion.cs.uiuc.edu/PR56">Zero arg vararg functions are not
|
||||
supported</a>. This should not affect LLVM produced by the C or C++
|
||||
frontends.<p>
|
||||
|
||||
<li>The code produces by the C back-end has only been tested with the Sun CC and
|
||||
GCC compilers. It is possible that it will have to be adjusted to support other
|
||||
C compilers.<p>
|
||||
|
||||
@@ -1,179 +0,0 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
<html>
|
||||
<head>
|
||||
<title>LLVM Public Release Project</title>
|
||||
</head>
|
||||
<body bgcolor="white">
|
||||
<center>
|
||||
<h1><font size="7">LLVM Public Release Project</font></h1>
|
||||
</center>
|
||||
<ul>
|
||||
<li><a href="#what">What is this?</a> </li>
|
||||
<li><a href="#priorities">Priorities</a>
|
||||
<ol>
|
||||
<li><a href="#high">High Priority</a> </li>
|
||||
<li><a href="#medium">Medimum Priority</a> </li>
|
||||
<li><a href="#low">Low Priority</a> </li>
|
||||
</ol>
|
||||
</li>
|
||||
</ul>
|
||||
<br>
|
||||
<!-- *********************************************************************** -->
|
||||
<table width="100%" bgcolor="#330077" border="0" cellpadding="4"
|
||||
cellspacing="0">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td align="center"><font color="#eeeeff" size="+2"
|
||||
face="Georgia,Palatino"><b> <a name="what">What is this? </a></b><a
|
||||
name="what"></a></font></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<ul>
|
||||
<!-- *********************************************************************** -->
|
||||
This document is a list of things to do before the LLVM project is
|
||||
publicly released. It will provide a checklist so that we know
|
||||
what has been done and what is left to be done. It will also keep
|
||||
a "wishlist" of desirable features.
|
||||
<p><!-- *********************************************************************** -->
|
||||
</p>
|
||||
</ul>
|
||||
<table width="100%" bgcolor="#330077" border="0" cellpadding="4"
|
||||
cellspacing="0">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td align="center"><font color="#eeeeff" size="+2"
|
||||
face="Georgia,Palatino"><b> <a name="priorities">Priorities</a></b><a
|
||||
name="improving"></a></font></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<ul>
|
||||
<!-- *********************************************************************** -->The
|
||||
list of things to do...
|
||||
<p><!-- ======================================================================= -->
|
||||
</p>
|
||||
</ul>
|
||||
<table width="50%" bgcolor="#441188" border="0" cellpadding="4"
|
||||
cellspacing="0">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td> </td>
|
||||
<td width="100%"> <font color="#eeeeff" size="+1"
|
||||
face="Georgia,Palatino"><b><a name="high">High Priority</a></b><a
|
||||
name="glibc"></a></font></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<ul>
|
||||
<ul>
|
||||
<ul>
|
||||
</ul>
|
||||
<li>Documentation</li>
|
||||
<ul>
|
||||
<li>Expand documentation on creating an LLVM project.</li>
|
||||
</ul>
|
||||
<li>Licenses</li>
|
||||
<ul>
|
||||
<li>Create license files for anything in the distribution that is
|
||||
not under our license.<br>
|
||||
</li>
|
||||
</ul>
|
||||
<li>Ensure SafeCode builds.</li>
|
||||
<li>Create a system for managing development and releases (i.e. CVS
|
||||
branching, labeling revisions, etc).</li>
|
||||
<li>Create a web page for downloading LLVM.
|
||||
<li>Create a method for requesting the GCC front end source code.
|
||||
</ul>
|
||||
<p><!-- ======================================================================= -->
|
||||
</p>
|
||||
</ul>
|
||||
<table width="50%" bgcolor="#441188" border="0" cellpadding="4"
|
||||
cellspacing="0">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td> </td>
|
||||
<td width="100%"> <font color="#eeeeff" size="+1"
|
||||
face="Georgia,Palatino"><b><a name="medium">Medium Priority</a></b><a
|
||||
name="NightlyTest"></a></font></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<ul>
|
||||
<ul>
|
||||
<li>Improve documentation on how to create an LLVM project.<br>
|
||||
</li>
|
||||
<li>Test Suite</li>
|
||||
<ul>
|
||||
<li>Add Feature and Regression tests to nightly tester.</li>
|
||||
<li>Develop better QMTest database method.<br>
|
||||
</li>
|
||||
</ul>
|
||||
<li>Write regression tests.</li>
|
||||
<ul>
|
||||
<li>The C++ constructor on dlopen() bug on Solaris.</li>
|
||||
</ul>
|
||||
</ul>
|
||||
<ul>
|
||||
<li>Release Management</li>
|
||||
</ul>
|
||||
<ul>
|
||||
<ul>
|
||||
<li>Find and implement a bug reporting system (i.e. Bugzilla).</li>
|
||||
</ul>
|
||||
</ul>
|
||||
<p><!-- ======================================================================= -->
|
||||
</p>
|
||||
</ul>
|
||||
<table width="50%" bgcolor="#441188" border="0" cellpadding="4"
|
||||
cellspacing="0">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td> </td>
|
||||
<td width="100%"> <font color="#eeeeff" size="+1"
|
||||
face="Georgia,Palatino"><b><a name="low">Low Priority</a></b><a
|
||||
name="programs"></a></font></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<ul>
|
||||
<ul>
|
||||
<li>GCC C Front End</li>
|
||||
<ul>
|
||||
<li>Place the C front end into the CVS repository.</li>
|
||||
<li>Ensure that the C front end compiles and installs nicely.</li>
|
||||
</ul>
|
||||
<li>Create an installer for the software.</li>
|
||||
<li>Testing</li>
|
||||
<ul>
|
||||
<li>Create descriptions of what each test is doing (test
|
||||
specifications).<br>
|
||||
</li>
|
||||
<li>Test LLVM on various Linux distributions.</li>
|
||||
<li>Test LLVM on various Solaris versions.</li>
|
||||
<li>Test LLVM on Solaris/x86.</li>
|
||||
</ul>
|
||||
<ul>
|
||||
</ul>
|
||||
<li>Documentation</li>
|
||||
<ul>
|
||||
<li>Create man pages for the LLVM utilities.</li>
|
||||
<li>Create man pages for the LLVM libraries.</li>
|
||||
</ul>
|
||||
<li>Rewrite this page without Netscape Composer :)<br>
|
||||
</li>
|
||||
</ul>
|
||||
</ul>
|
||||
<font size-1="">
|
||||
<address><a href="mailto:criswell@cs.uiuc.edu">John Criswell</a></address>
|
||||
<!-- Created: Tue Aug 6 15:00:33 CDT 2002 --><!-- hhmts start --> Last
|
||||
modified: Sat May 31 14:54:03 CDT 2003<!-- hhmts end --> </font> <br>
|
||||
<br>
|
||||
<br>
|
||||
<br>
|
||||
<br>
|
||||
<br>
|
||||
<br>
|
||||
<br>
|
||||
</body>
|
||||
</html>
|
||||
@@ -420,6 +420,8 @@
|
||||
|
||||
<hr><font size="-1">
|
||||
<address>John T. Criswell</address>
|
||||
<a href="http://llvm.cs.uiuc.edu">The LLVM Compiler Infrastructure</a>
|
||||
<br>
|
||||
Last modified: $Date$
|
||||
</font>
|
||||
|
||||
|
||||
@@ -1274,6 +1274,8 @@ href="#Pass"><tt>Pass</tt></a>, only the other way around.<p>
|
||||
|
||||
<hr><font size-1>
|
||||
<address><a href="mailto:sabre@nondot.org">Chris Lattner</a></address>
|
||||
<a href="http://llvm.cs.uiuc.edu">The LLVM Compiler Infrastructure</a>
|
||||
<br>
|
||||
<!-- Created: Tue Aug 6 15:00:33 CDT 2002 -->
|
||||
<!-- hhmts start -->
|
||||
Last modified: Tue Jul 22 15:52:30 CDT 2003
|
||||
|
||||
265
llvm/docs/index.html
Normal file
265
llvm/docs/index.html
Normal file
@@ -0,0 +1,265 @@
|
||||
<html>
|
||||
<title>
|
||||
The LLVM Compiler Infrastructure
|
||||
</title>
|
||||
|
||||
<body>
|
||||
|
||||
<center>
|
||||
<h1>
|
||||
The LLVM Compiler Infrastructure
|
||||
<br>
|
||||
<a href="http://llvm.cs.uiuc.edu">http://llvm.cs.uiuc.edu</a>
|
||||
</h1>
|
||||
</center>
|
||||
|
||||
<hr>
|
||||
|
||||
<h2>
|
||||
Welcome to LLVM!
|
||||
</h2>
|
||||
This file is intended to do four things:
|
||||
<ol>
|
||||
<li>
|
||||
help you get started using LLVM;
|
||||
</li>
|
||||
|
||||
<li>
|
||||
tell you how to get questions about LLVM answered;
|
||||
</li>
|
||||
|
||||
<li>
|
||||
tell you where to find documentation for different kinds of questions; and
|
||||
</li>
|
||||
|
||||
<li>
|
||||
tell you about three LLVM-related mailing lists.
|
||||
</li>
|
||||
</ol>
|
||||
|
||||
|
||||
<hr>
|
||||
|
||||
<h2>
|
||||
Getting Started with LLVM
|
||||
</h2>
|
||||
|
||||
<dl compact>
|
||||
<dt>
|
||||
For license information:
|
||||
<dd>
|
||||
<a href="../LICENSE.TXT">llvm/LICENSE.TXT</a>
|
||||
<p>
|
||||
|
||||
<dt>
|
||||
Installing and compiling LLVM:
|
||||
<dd>
|
||||
<a href="GettingStarted.html">llvm/docs/GettingStarted.html</a>
|
||||
<p>
|
||||
|
||||
<dt>
|
||||
Learn about features and limitations of this release:
|
||||
<dd>
|
||||
<a href="ReleaseNotes.html">llvm/docs/ReleaseNotes.html</a>
|
||||
<p>
|
||||
|
||||
<dt>
|
||||
Learn how to write a pass within the LLVM system:
|
||||
<dd>
|
||||
<a href="WritingAnLLVMPass.html">llvm/docs/WritingAnLLVMPass.html </a>
|
||||
<p>
|
||||
|
||||
<dt>
|
||||
Learn how to start a new development project using LLVM, where your
|
||||
new source code can live anywhere (outside or inside the LLVM tree),
|
||||
while using LLVM header files and libraries:
|
||||
<dd>
|
||||
<a href="Projects.html">llvm/docs/Projects.html</a>
|
||||
</dl>
|
||||
|
||||
<hr>
|
||||
|
||||
<h2>
|
||||
Getting Help with LLVM
|
||||
</h2>
|
||||
|
||||
<ol>
|
||||
<li>
|
||||
If you have questions or development problems not answered in the
|
||||
documentation, send e-mail to llvmdev@cs.uiuc.edu. This mailing list is
|
||||
monitored by all the people in the LLVM group at Illinois, and you
|
||||
should expect prompt first responses.
|
||||
</li>
|
||||
|
||||
<li>
|
||||
To report a bug, submit a bug report as described in the document:
|
||||
<a href="http://llvm.cs.uiuc.edu/docs/HowToSubmitABug.html">
|
||||
http://llvm.cs.uiuc.edu/docs/HowToSubmitABug.html</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
We now use Bugzilla to track bugs, so you can check the status of
|
||||
previous bugs at:
|
||||
<a href="http://llvm.cs.uiuc.edu/bugs/query.cgi">
|
||||
http://llvm.cs.uiuc.edu/bugs/query.cgi </a>
|
||||
</li>
|
||||
</ol>
|
||||
|
||||
<hr>
|
||||
|
||||
<h2>
|
||||
LLVM Documentation
|
||||
</h2>
|
||||
|
||||
All the documents mentioned below except the design overview tech report
|
||||
are included as part of the LLVM release (in llvm/docs/*):
|
||||
|
||||
<h3>
|
||||
LLVM Design Overview:
|
||||
</h3>
|
||||
|
||||
<dl compact>
|
||||
<dt>
|
||||
LLVM : A Compilation Framework for Lifelong Program Analysis
|
||||
and Transformation:
|
||||
<dd>
|
||||
<a href="http://llvm.cs.uiuc.edu/pubs/2003-09-30-LifelongOptimizationTR.html">
|
||||
http://llvm.cs.uiuc.edu/pubs/2003-09-30-LifelongOptimizationTR.html </a>
|
||||
|
||||
</dl>
|
||||
|
||||
<h3>
|
||||
LLVM User Guides:
|
||||
</h3>
|
||||
|
||||
<dl compact>
|
||||
<dt>
|
||||
Download and Installation Instructions:
|
||||
<dd>
|
||||
<a href="GettingStarted.html"> llvm/docs/GettingStarted.html</a>
|
||||
<p>
|
||||
|
||||
<dt>
|
||||
LLVM Command Guide:
|
||||
<dd>
|
||||
<a href="CommandGuide/index.html">
|
||||
llvm/docs/CommandGuide/index.html</a>
|
||||
<p>
|
||||
|
||||
<dt>
|
||||
LLVM Assembly Language:
|
||||
<dd>
|
||||
<a href="LangRef.html"> llvm/docs/LangRef.html</a>
|
||||
<p>
|
||||
|
||||
<dt>
|
||||
LLVM Test Suite Guide:
|
||||
<dd>
|
||||
<a href="TestingGuide.html"> llvm/docs/TestingGuide.html</a>
|
||||
<p>
|
||||
</dl>
|
||||
|
||||
<h3>
|
||||
LLVM Programming Documentation:
|
||||
</h3>
|
||||
|
||||
<dl compact>
|
||||
<dt>
|
||||
LLVM Programmers Manual:
|
||||
<dd>
|
||||
<a href="ProgrammersManual.html"> llvm/docs/ProgrammersManual.html</a>
|
||||
<p>
|
||||
|
||||
<dt>
|
||||
Writing an LLVM Pass:
|
||||
<dd>
|
||||
<a href="WritingAnLLVMPass.html"> llvm/docs/WritingAnLLVMPass.html</a>
|
||||
<p>
|
||||
|
||||
<dt>
|
||||
Alias Analysis in LLVM:
|
||||
<dd>
|
||||
<a href="AliasAnalysis.html"> llvm/docs/AliasAnalysis.html</a>
|
||||
<p>
|
||||
|
||||
<dt>
|
||||
Command Line Library:
|
||||
<dd>
|
||||
<a href="CommandLine.html"> llvm/docs/CommandLine.html</a>
|
||||
<p>
|
||||
|
||||
<dt>
|
||||
Coding Standards:
|
||||
<dd>
|
||||
<a href="CodingStandards.html"> llvm/docs/CodingStandards.html</a>
|
||||
<p>
|
||||
</dl>
|
||||
|
||||
<h3>
|
||||
Other LLVM Resources:
|
||||
</h3>
|
||||
|
||||
<dl compact>
|
||||
<dt>
|
||||
Submitting a Bug:
|
||||
<dd>
|
||||
<a href="http://llvm.cs.uiuc.edu/docs/HowToSubmitABug.html">
|
||||
http://llvm.cs.uiuc.edu/docs/HowToSubmitABug.html</a>
|
||||
<p>
|
||||
|
||||
<dt>
|
||||
Open Projects:
|
||||
<dd>
|
||||
<a href="OpenProjects.html"> llvm/docs/OpenProjects.html</a>
|
||||
<p>
|
||||
|
||||
<dt>
|
||||
Creating a new LLVM Project:
|
||||
<dd>
|
||||
<a href="Projects.html"> llvm/docs/Projects.html</a>
|
||||
<p>
|
||||
</dl>
|
||||
|
||||
<hr>
|
||||
|
||||
<h2>
|
||||
Mailing Lists
|
||||
</h2>
|
||||
There are three mailing lists for providing LLVM users with information:
|
||||
|
||||
<ol>
|
||||
<li> LLVM Announcements List:<br>
|
||||
<a href="http://mail.cs.uiuc.edu/mailman/listinfo/llvm-announce">
|
||||
http://mail.cs.uiuc.edu/mailman/listinfo/llvm-announce</a>
|
||||
|
||||
<p>
|
||||
This is a low volume list that provides important announcements regarding
|
||||
LLVM. It is primarily intended to announce new releases, major updates to
|
||||
the software, etc. This list is highly recommended for anyone that uses
|
||||
LLVM.
|
||||
</p>
|
||||
|
||||
<li> LLVM Developers List:<br>
|
||||
<a href="http://mail.cs.uiuc.edu/mailman/listinfo/llvmdev">
|
||||
http://mail.cs.uiuc.edu/mailman/listinfo/llvmdev</a>
|
||||
|
||||
<p>
|
||||
This list is for people who want to be included in technical discussions
|
||||
of LLVM. People post to this list when they have questions about writing
|
||||
code for or using the LLVM tools. It is relatively low volume.
|
||||
</p>
|
||||
|
||||
<li> LLVM Commits List<br>
|
||||
<a href="http://mail.cs.uiuc.edu/mailman/listinfo/llvm-commits">
|
||||
http://mail.cs.uiuc.edu/mailman/listinfo/llvm-commits</a>
|
||||
|
||||
<p>
|
||||
This list contains all commit messages that are made when LLVM developers
|
||||
commit code changes to the CVS archive. It is useful for those who want to
|
||||
stay on the bleeding edge of LLVM development. This list is very high
|
||||
volume.
|
||||
</p>
|
||||
</ol>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
23
llvm/include/Config/strings.h
Normal file
23
llvm/include/Config/strings.h
Normal file
@@ -0,0 +1,23 @@
|
||||
/*
|
||||
* The LLVM Compiler Infrastructure
|
||||
*
|
||||
* This file was developed by the LLVM research group and is distributed under
|
||||
* the University of Illinois Open Source License. See LICENSE.TXT for details.
|
||||
*
|
||||
*===----------------------------------------------------------------------===//
|
||||
*
|
||||
* Description:
|
||||
* This header file is the autoconf replacement for strings.h (if it lives
|
||||
* on the system).
|
||||
*/
|
||||
|
||||
#ifndef _CONFIG_STRINGS_H
|
||||
#define _CONFIG_STRINGS_H
|
||||
|
||||
#include "Config/config.h"
|
||||
|
||||
#ifdef HAVE_STRINGS_H
|
||||
#include <strings.h>
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@@ -39,6 +39,10 @@ private:
|
||||
///
|
||||
void IncorporateType(const Type *Ty);
|
||||
|
||||
/// IncorporateSymbolTable - Include any named types.
|
||||
///
|
||||
void IncorporateSymbolTable(const SymbolTable &ST);
|
||||
|
||||
public:
|
||||
/// run - This incorporates all types used by the specified module
|
||||
bool run(Module &M);
|
||||
|
||||
@@ -1,240 +0,0 @@
|
||||
/* Title: SparcRegClassInfo.h -*- C++ -*-
|
||||
Author: Ruchira Sasanka
|
||||
Date: Aug 20, 01
|
||||
Purpose: Contains the description of integer register class of Sparc
|
||||
*/
|
||||
|
||||
|
||||
#ifndef SPARC_INT_REG_CLASS_H
|
||||
#define SPARC_INT_REG_CLASS_H
|
||||
|
||||
#include "llvm/Target/RegInfo.h"
|
||||
#include "llvm/CodeGen/IGNode.h"
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Integer Register Class
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
|
||||
// Int register names in same order as enum in class SparcIntRegOrder
|
||||
|
||||
static string const IntRegNames[] =
|
||||
{ "g1", "g2", "g3", "g4", "g5", "g6", "g7",
|
||||
"o0", "o1", "o2", "o3", "o4", "o5", "o7",
|
||||
"l0", "l1", "l2", "l3", "l4", "l5", "l6", "l7",
|
||||
"i0", "i1", "i2", "i3", "i4", "i5",
|
||||
"g0", "i6", "i7", "o6" };
|
||||
|
||||
|
||||
|
||||
class SparcIntRegOrder{
|
||||
|
||||
public:
|
||||
|
||||
enum RegsInPrefOrder // colors possible for a LR (in preferred order)
|
||||
{
|
||||
// --- following colors are volatile across function calls
|
||||
// %g0 can't be used for coloring - always 0
|
||||
|
||||
g1, g2, g3, g4, g5, g6, g7, //%g1-%g7
|
||||
o0, o1, o2, o3, o4, o5, o7, // %o0-%o5,
|
||||
|
||||
// %o6 is sp,
|
||||
// all %0's can get modified by a call
|
||||
|
||||
// --- following colors are NON-volatile across function calls
|
||||
|
||||
l0, l1, l2, l3, l4, l5, l6, l7, // %l0-%l7
|
||||
i0, i1, i2, i3, i4, i5, // %i0-%i5: i's need not be preserved
|
||||
|
||||
// %i6 is the fp - so not allocated
|
||||
// %i7 is the ret address - can be used if saved
|
||||
|
||||
// max # of colors reg coloring can allocate (NumOfAvailRegs)
|
||||
|
||||
// --- following colors are not available for allocation within this phase
|
||||
// --- but can appear for pre-colored ranges
|
||||
|
||||
g0, i6, i7, o6
|
||||
|
||||
|
||||
|
||||
};
|
||||
|
||||
// max # of colors reg coloring can allocate
|
||||
static unsigned int const NumOfAvailRegs = g0;
|
||||
|
||||
static unsigned int const StartOfNonVolatileRegs = l0;
|
||||
static unsigned int const StartOfAllRegs = g1;
|
||||
static unsigned int const NumOfAllRegs = o6 + 1;
|
||||
|
||||
|
||||
static const string getRegName(const unsigned reg) {
|
||||
assert( reg < NumOfAllRegs );
|
||||
return IntRegNames[reg];
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
class SparcIntRegClass : public MachineRegClassInfo
|
||||
{
|
||||
public:
|
||||
|
||||
SparcIntRegClass(unsigned ID)
|
||||
: MachineRegClassInfo(ID,
|
||||
SparcIntRegOrder::NumOfAvailRegs,
|
||||
SparcIntRegOrder::NumOfAllRegs)
|
||||
{ }
|
||||
|
||||
void colorIGNode(IGNode * Node, bool IsColorUsedArr[] ) const;
|
||||
|
||||
};
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Float Register Class
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
static string const FloatRegNames[] =
|
||||
{
|
||||
"f0", "f1", "f2", "f3", "f4", "f5", "f6", "f7", "f8", "f9",
|
||||
"f10", "f11", "f12", "f13", "f14", "f15", "f16", "f17", "f18", "f19",
|
||||
"f20", "f21", "f22", "f23", "f24", "f25", "f26", "f27", "f28", "f29",
|
||||
"f30", "f31", "f32", "f33", "f34", "f35", "f36", "f37", "f38", "f39",
|
||||
"f40", "f41", "f42", "f43", "f44", "f45", "f46", "f47", "f48", "f49",
|
||||
"f50", "f51", "f52", "f53", "f54", "f55", "f56", "f57", "f58", "f59",
|
||||
"f60", "f61", "f62", "f63"
|
||||
};
|
||||
|
||||
|
||||
class SparcFloatRegOrder{
|
||||
|
||||
public:
|
||||
|
||||
enum RegsInPrefOrder {
|
||||
|
||||
f0, f1, f2, f3, f4, f5, f6, f7, f8, f9,
|
||||
f10, f11, f12, f13, f14, f15, f16, f17, f18, f19,
|
||||
f20, f21, f22, f23, f24, f25, f26, f27, f28, f29,
|
||||
f30, f31, f32, f33, f34, f35, f36, f37, f38, f39,
|
||||
f40, f41, f42, f43, f44, f45, f46, f47, f48, f49,
|
||||
f50, f51, f52, f53, f54, f55, f56, f57, f58, f59,
|
||||
f60, f61, f62, f63
|
||||
|
||||
};
|
||||
|
||||
// there are 64 regs alltogether but only 32 regs can be allocated at
|
||||
// a time.
|
||||
|
||||
static unsigned int const NumOfAvailRegs = 32;
|
||||
static unsigned int const NumOfAllRegs = 64;
|
||||
|
||||
static unsigned int const StartOfNonVolatileRegs = f6;
|
||||
static unsigned int const StartOfAllRegs = f0;
|
||||
|
||||
|
||||
static const string getRegName(const unsigned reg) {
|
||||
assert( reg < NumOfAllRegs );
|
||||
return FloatRegNames[reg];
|
||||
}
|
||||
|
||||
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
class SparcFloatRegClass : public MachineRegClassInfo
|
||||
{
|
||||
private:
|
||||
|
||||
int findFloatColor(const IGNode *const Node, unsigned Start,
|
||||
unsigned End, bool IsColorUsedArr[] ) const;
|
||||
|
||||
public:
|
||||
|
||||
SparcFloatRegClass(unsigned ID)
|
||||
: MachineRegClassInfo(ID,
|
||||
SparcFloatRegOrder::NumOfAvailRegs,
|
||||
SparcFloatRegOrder::NumOfAllRegs)
|
||||
{ }
|
||||
|
||||
void colorIGNode(IGNode * Node, bool IsColorUsedArr[] ) const;
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Int CC Register Class
|
||||
// Only one integer cc register is available
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
|
||||
class SparcIntCCRegClass : public MachineRegClassInfo
|
||||
{
|
||||
public:
|
||||
|
||||
SparcIntCCRegClass(unsigned ID)
|
||||
: MachineRegClassInfo(ID,1, 1) { }
|
||||
|
||||
inline void colorIGNode(IGNode * Node, bool IsColorUsedArr[] ) const {
|
||||
Node->setColor(0); // only one int cc reg is available
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Float CC Register Class
|
||||
// Only 4 Float CC registers are available
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
|
||||
static string const FloatCCRegNames[] =
|
||||
{
|
||||
"fcc0", "fcc1", "fcc2", "fcc3"
|
||||
};
|
||||
|
||||
|
||||
class SparcFloatCCRegOrder{
|
||||
|
||||
public:
|
||||
|
||||
enum RegsInPrefOrder {
|
||||
|
||||
fcc0, fcc1, fcc2, fcc3
|
||||
};
|
||||
|
||||
static const string getRegName(const unsigned reg) {
|
||||
assert( reg < 4 );
|
||||
return FloatCCRegNames[reg];
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
class SparcFloatCCRegClass : public MachineRegClassInfo
|
||||
{
|
||||
public:
|
||||
|
||||
SparcFloatCCRegClass(unsigned ID)
|
||||
: MachineRegClassInfo(ID, 4, 4) { }
|
||||
|
||||
void colorIGNode(IGNode * Node, bool IsColorUsedArr[] ) const {
|
||||
int c;
|
||||
for(c=0; c < 4 && IsColorUsedArr[c] ; ++c) ; // find color
|
||||
assert( (c < 4) && "Can allocate only 4 float cc registers");
|
||||
Node->setColor(c);
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
#endif
|
||||
@@ -41,12 +41,22 @@ void FindUsedTypes::IncorporateType(const Type *Ty) {
|
||||
IncorporateType(*I);
|
||||
}
|
||||
|
||||
void FindUsedTypes::IncorporateSymbolTable(const SymbolTable &ST) {
|
||||
SymbolTable::const_iterator TI = ST.find(Type::TypeTy);
|
||||
if (TI == ST.end()) return; // No named types
|
||||
|
||||
for (SymbolTable::type_const_iterator I = TI->second.begin(),
|
||||
E = TI->second.end(); I != E; ++I)
|
||||
IncorporateType(cast<Type>(I->second));
|
||||
}
|
||||
|
||||
// run - This incorporates all types used by the specified module
|
||||
//
|
||||
bool FindUsedTypes::run(Module &m) {
|
||||
UsedTypes.clear(); // reset if run multiple times...
|
||||
|
||||
IncorporateSymbolTable(m.getSymbolTable());
|
||||
|
||||
// Loop over global variables, incorporating their types
|
||||
for (Module::const_giterator I = m.gbegin(), E = m.gend(); I != E; ++I)
|
||||
IncorporateType(I->getType());
|
||||
@@ -54,6 +64,7 @@ bool FindUsedTypes::run(Module &m) {
|
||||
for (Module::iterator MI = m.begin(), ME = m.end(); MI != ME; ++MI) {
|
||||
IncorporateType(MI->getType());
|
||||
const Function &F = *MI;
|
||||
IncorporateSymbolTable(F.getSymbolTable());
|
||||
|
||||
// Loop over all of the instructions in the function, adding their return
|
||||
// type as well as the types of their operands.
|
||||
|
||||
@@ -1,12 +1,17 @@
|
||||
LEVEL = ..
|
||||
DIRS = Programs
|
||||
include Makefile.tests
|
||||
|
||||
#
|
||||
# Make QMTest the default for testing features and regressions
|
||||
# Do this first to force QMTest to run first
|
||||
#
|
||||
all:: qmtest
|
||||
|
||||
#
|
||||
# Include other test rules
|
||||
#
|
||||
include Makefile.tests
|
||||
|
||||
#
|
||||
# New QMTest functionality:
|
||||
# The test suite is being transitioned over to QMTest. Eventually, it
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
; RUN: export PATH=/usr/bin:/bin/:${PATH}
|
||||
; RUN: PATH=/usr/bin:/bin/:${PATH}
|
||||
; RUN: export PATH
|
||||
; RUN: bugpoint %s -dce -bugpoint-deletecalls -simplifycfg
|
||||
|
||||
%.LC0 = internal global [13 x sbyte] c"Hello World\0A\00"
|
||||
|
||||
Reference in New Issue
Block a user