GCC: Anonymous read-only SVN access
Our SVN source repository is available read-only to the public at
large.
That way you can pick up any version (including releases) of GCC that
is in our repository or our web pages.
Web pages are still stored in CVS, and thus, should be accessed
using the directions for CVS
In addition, you can browse our SVN history online at
Using the SVN repository
Assuming you have version 1.0.0 and higher of
Subversion installed, you can
check out the GCC sources using the following command:
svn -q checkout svn://gcc.gnu.org/svn/gcc/trunk gcc
(The option -q
above is optional and instructs SVN to
print as little as possible. You can abbreviate checkout
as co
.)
If you are behind a firewall that does not allow the svn protocol
through, you can replace svn://
with http://
.
You may also need to modify your subversion servers file
(~/.subversion/servers) to set http-proxy-host
and
http-proxy-port
. You should only use the http protocol if
the svn protocol does not work; the http protocol has a higher server
overhead associated with it and will be slower.
Generated files
Our source tree contains a number of files that are generated
from other source files by build tools such as Bison, Autoconf, and
Gperf. Bison is now required when using SVN to access our sources,
but all other generated files are included in the source tree so that
GCC can be built without these build tools. The SVN checkout and
update operations do not insure that the timestamps of generated files
are later than those of the files they are generated from. The script
contrib/gcc_update
updates the timestamps for all these
generated files. See the comments in that script for instructions on
running it.
GCC's build system (in particular Make) uses file timestamps to
determine if a generated file needs to be updated by running a particular
build tool. Because of this, GCC's build system may believe that
a generated file needs regenerating even though its source has not
changed, and require a particular build tool to rebuild that generated
file. If the appropriate build tool is installed on your system, then
this will not be a problem. If you do not intend to make changes to
the source, you can avoid installing these build tools by running
contrib/gcc_update
.
There has been some discussion of removing these generated files
from GCC's SVN source tree (there is no discussion of removing them
from the released source tarballs). If that happens then
building GCC from the SVN source tree would require installing
the above mentioned build tools. Installing these build tools is not
particularly difficult, but can be time consuming especially if you
only occasionally install GCC on a particular system.
The build tools that GCC uses are all available from the GNU
Project (see http://www.gnu.org),
are often already available on many systems, and can often be found
already built for some systems. A partial list of these build tools
is: Autoconf, Bison, Xgettext, Automake, and Gperf.
Conflicts when using svn update
It is not uncommon to get svn conflict messages for some generated files
when updating your local sources from the SVN repository. Typically such
conflicts occur with autoconf generated files.
As long as you haven't been making modifications to the generated files
or the generator files, it is safe to delete the offending file, then run
svn update
again to get a new copy.
You can check out the latest version of the GCC x.y
release branch with the following command:
svn co svn://gcc.gnu.org/svn/gcc/branches/gcc-x_y-branch gcc
By changing the gcc-x_y-branch
part
of the URL, you can check out particular releases or branches.
Release and branches
For recent releases, the SVN tag for GCC X.Y.Z is
of the form "gcc_X_Y_Z_release":
svn co svn://gcc.gnu.org/svn/gcc/tags/gcc_x_y_z_release gcc
The SVN branch for GCC releases in the X.Y series is
generally of the form "gcc-X_Y-branch". The following
list therefore provides only some representative examples.
- gcc_3_4_3_release
- gcc_3_4_2_release
- gcc_3_4_1_release
- gcc_3_4_0_release
- gcc-3_4-branch
- egcs_1_1_2_release
- egcs_1_1_1_release
- egcs_1_1_release
- egcs_1_1_branch
- egcs_1_0_3_release
- egcs_1_0_2_release
- egcs_1_0_1_release
- egcs_1_0_release
General Infrastructure
- tree-profiling-branch
- This branch is for the development of profiling heuristics
and profile based optimizations for trees, such as profile driven inline
heuristics. Another goal of this branch is to demonstrate that maintaining
the CFG and profile information over expanding from GIMPLE trees to RTL
is feasible and can bring considerable performance improvements.
- struct-reorg-branch
- This branch is for the development of structure reorganization
optimizations, including field reordering, structure splitting for
trees. These optimizations are profile information driven. This is
a subbranch of tree-profiling. This branch is being maintained by
Caroline Tice, Dale Johannesen, Kenneth Zadeck, Stuart Hastings,
Mostafa Hagog.
- pointer_plus
- This branch is for the development of POINTER_PLUS_EXPR. Which
is to be used instead of casting between an integer type and a pointer
type before doing pointer addition. This branch is being maintained
by Andrew Pinski. Patches for this branch should be marked with
the tag
[PTR-PLUS]
in the subject line, and CC'ed to
Andrew Pinski.
- autovect-branch
- This branch is the successor to the lno-branch. The purpose of this
branch is tree-level
autovectorization work, and related work that the autovectorizer
could use or benefit from (like data-dependence analysis,
loop nest optimizations).
- rtlopt-branch
- This branch is the successor to the cfg-branch, with the exception
that it is based on GCC pre-3.4. The purpose of the branch is to develop
and test infrastructure for CFG based code improving transformations on
RTL.
- killloop-branch
- The missing optimizations and optimization improvements necessary
for removing the old loop optimizer are developed on this branch. Patches
for this branch should be marked with the tag
[killloop]
in the subject line, and CC'ed to
Zdenek Dvorak.
- new-regalloc-branch
- Daniel Berlin and Michael Matz are working on an implementation
of a graph-coloring register allocator on this branch. It is known to
bootstrap under x86-linux-gnu and ppc-linux-gnu.
- structure-aliasing-branch
- This branch contains improvements to the tree optimizers ability
to do pointer-to-structure aliasing analysis and optimization.
This involves some significant rework of the way
our memory information is represented in the tree-ssa form.
The branch is maintained by Daniel Berlin.
Patches and discussion related to the branch should be marked
with the tag
[sa]
in the subject line. The usual
contribution and testing rules apply. Patches should be CC'd
to Daniel Berlin for final approval.
- ssaupdate-branch
- This branch serves to clean up and improve utilities for the SSA
form updating, as well as for related changes of the SSA form
representation. This branch is supposed to be short-lived and should
be merged to mainline as soon as possible. Patches and discussions
related to the branch should be marked with the tag
[ssaupdate]
in the subject line. The patches for this
branch do not require approval, but they should be sent to gcc-patches
list and the usual testing rules apply.
- cfo-branch
- The goal of this branch is to add a new extension for improving
the code size optimization of GCC with code factoring methods (code
motion and merging algorithms). Messages should be marked with
[cfo]
in the subject line. The usual contribution and
testing rules apply.
- reload-branch
- This branch contains a version of reload in which the tracking
of reload register lifetimes and the inheritance code has been
rewritten in an attempt to make it more maintainable.
- improved-aliasing-branch
- This branch contains improvements to the tree-based aliasing
infrastructure. The branch is maintained by Daniel Berlin <dberlin@dberlin.org> and
Diego Novillo <
dnovillo@redhat.com> and will be routinely merged with
mainline. Patches should be marked with the tag
[improved-aliasing]
in the subject line.
- dataflow-branch
- This branch contains replacement of backend dataflow with
df.c based dataflow. The branch is maintained by Daniel Berlin <
dberlin@dberlin.org>
and Kenneth Zadeck <
zadeck@naturalbridge.com> and will be routinely merged
with mainline. Patches should be marked with the tag
[dataflow-branch]
in the subject line.
- sched-treegion-branch
- This branch is for the development of a treegion-based instruction
scheduler. The branch is maintained by Chad Rosier.
- mem-ssa
- This branch contains the implementation of Memory SSA, a new
mechanism for representing memory operations in SSA form (http://gcc.gnu.org/ml/gcc/2006-02/msg00620.html).
The branch is maintained by Diego Novillo and will be routinely
merged with mainline. Patches and discussion on this branch should
be marked with the tag
[mem-ssa]
in the subject
line.
- gimple-tuples-branch
- This branch contains the implementation of GIMPLE tuples, a new
representation for GIMPLE statements and expressions that replaces the
current notion of treating everything as a tree
(
http://gcc.gnu.org/wiki/tuples).
This branch is maintained by Aldy Hernandez and will be routinely merged
with mainline. Patches and discussion on this branch should be marked with
the tag
[tuples]
in the subject line.
- yara-branch
- This branch contains Yet Another Register Allocator (YARA).
The branch is maintained by Vladimir Makarov <
vmakarov@redhat.com>
and will be merged with mainline from time to time. Patches
will be marked with the tag
[yara-branch]
in the subject line.
- opt-diary
- This branch contains the implementation of Optimization Diary,
a collection of useful log information generated by the optimizers.
This branch is maintained by Devang Patel. Patches and discussion
on this branch should be marked with the tag
[opt-diary]
in the subject line.
- lto
- This branch aims to implement link-time optimization. Patches
and discussion on this branch should be marked with the tag
[lto]
in the subject line.
- predcom
- This branch aims to implement predictive commoning optimization
and to introduce the changes to the representation of Fortran arrays,
alias analysis and dependency analysis to make it useful for
the common applications (e.g., mgrid). The patches for this branch
should be marked with the tag
[predcom]
in the subject
line. The branch is maintained by
Zdenek Dvorak.
- boehms-gc
- The goal of this branch is to test Boehm's GC feasibility as the
garbage collector for GCC proper. This is a part of Google Summer
of Code project, described in detail
at http://gcc.gnu.org/wiki/Garbage%20collection%20tuning. The
branch is maintained
by Laurynas
Biveinis.
- ra-improvements
- This branch aims to implement several improvements to the
current register allocator. Examples include implenting a
lower-triangular conflict matrix and register coalescing.
It is hoped that these improvements will not only help the
current allocator, but will be useful to the other register
allocation projects such as RABLE and YARA. This branch will
be merged with the dataflow-branch from time to time.
The patches for this branch should be marked with the tag
[ra-improvements]
in the subject line. The branch
is maintained by Peter
Bergner.
- insn-select
- This branch aims to implement in early instruction selection
and register class selection pass, which runs before register allocation
and subsumes the current
regclass
pass. In particular
the goal is to chose an alternative per instruction, usable as a base
during register allocation, which ideally is not changed during reload
if registers could be allocated. This will not be possible in all cases,
especially when addresses generated during spilling will be invalid on
the target machine. But we should be able to do away with fake register
classes representing strict unions of other register classes. Patches
should be marked with [isel]
or [insn-select]
in the subject line. The branch is maintained by Michael Matz.
- addressing-modes
- This branch aims to clean up the way base and index registers are
handled by target headers. In particular, the strict and non-strict
meaning of these registers are unified and a common API is presented to
implementations of the target macros. Obsolete target macros will also
be removed. Patches should be marked with
[addrmodes]
in
the subject line, and only need approval (from Paolo Bonzini) if they may
change the compiler output. The branch is maintained by Paolo Bonzini.
- ira
- This branch contains the Integrated Register Allocator (IRA). It is
based on work done on yara-branch. The latter is more of a research
branch because one of its goals (removing reload) is too remote. The
ira branch is focused to prepare some code for GCC mainline, hopefully
in time for GCC 4.4. IRA still uses reload; it is called integrated
because register coalescing and register live range splitting are done
on-the-fly during coloring. The branch is maintained by Vladimir
Makarov < vmakarov@redhat.com> and
will be merged with mainline from time to time. Patches will be
marked with the tag
[ira]
in the subject line.
- sel-sched-branch
- This branch contains the implementation of the selective scheduling
approach. The goal of the branch is to provide more aggressive scheduler
implementation with support for instruction cloning, register renaming,
and forward substitution. The branch is maintained by Andrey
Belevantsev <abel@ispras.ru>
and Maxim Kuvyrkov <
mkuvyrkov@ispras.ru> and will be regularly merged with mainline.
Patches will be marked with the tag
[sel-sched]
in
the subject line.
Architecture-specific
- csl-arm-branch
- CodeSourcery branch for developing ARM back end improvements.
The branch is maintained by CodeSourcery personnel. Patches should
be marked with the tag
[csl-arm-branch]
in the subject
line.
- csl/coldfire-4_1
- CodeSourcery branch for developing ColdFire back end improvements.
The branch is maintained by CodeSourcery personnel. Patches should
be marked with the tag
[csl-coldfire]
in the subject
line.
- csl-sol210-3_4-branch
- CodeSourcery branch for developing Solaris 2.10 AMD64 support
for GCC 3.4. This branch is maintained by CodeSourcery personnel.
Patches should be marked with the tag
[csl-sol210-branch]
in the subject line.
- hammer-3_3-branch
- The goal of this branch is to have a stable compiler based on GCC 3.3
with improved performance for AMD's 64-bit Hammer CPUs. The branch is
maintained by Jan Hubicka <jh@suse.cz>
and Andreas Jaeger <aj@suse.de>.
Patches added on this branch might not be appropriate for the GCC 3.3
branch due to our policies concerning release branches. All patches
will be added to mainline GCC (for 3.4). The branch is regularly
merged with the GCC 3.3 branch.
- gcc-3_4-e500-branch
- This branch is for stabilization of the powerpc-*spe
architecture, and for adding support for the 8548 chip (e500 v2). This
branch is maintained by Aldy Hernandez. Patches should be marked with the
tag
[3.4-e500]
in the subject line. ChangeLog entries should
go in ChangeLog.e500.
- ia64-fp-model-branch
- This branch is a short-lived development branch with the goal of
implementing the improvements and features discussed at the ia64 floating point
page on the GCC wiki. It is
maintained by Zack Weinberg <zack@codesourcery.com>.
Patches should be marked with the tag
[ia64-fp-model]
in the subject line.
- ia64-improvements
- The goal of this branch is to improve the performance of binaries
generated with GCC on the Itanium processor. Details of current
projects on this branch can be found at the Gelato GCC wiki and at the IA-64 improvements page. This branch
is maintained by Robert Kidd <rkidd@crhc.uiuc.edu> and
Diego Novillo. Patches and discussion related to this branch
should be marked with the tag
[ia64-improvements]
in
the subject line. The usual contribution and testing rules apply.
- st/cli
- The goal of the branch is to develop a back-end producing CLI binaries,
compliant with ECMA-335 specification.
This branch is maintained by Roberto Costa
<roberto.costa@st.com>.
Language-specific
- cxx-reflection-branch
- Part of the work on providing support for compile time reflection
in C++ is done in this branch. This branch is maintained by Gabriel
Dos Reis <gdr@integrable-solutions.net>.
- objc-improvements-branch
- This branch was originally used to merge Objective-C bug fixes and
enhancements from Apple Computer into the FSF tree; this has now been
completed. Presently, the purpose of the branch is to implement the
Objective-C++ language in the FSF GCC source tree. The message thread
starting here
describes this at more length. This branch is being maintained by Zem
Laski <zlaski@apple.com>.
- libada-gnattools-branch
- This is the spiritual successor to the libada branch. This branch
exists to solve
bug 5911
and others, by breaking out the Ada runtime into a libada directory and
the Ada tools into a gnattools directory. Current work is devoted to
cleaning up the configure and make machinery, and separating it as much
as possible from the GCC build machinery. Nathanael Nerode
<neroden@gcc.gnu.org>
is maintaining this branch.
- libstdcxx_so_7-branch
- This is a branch for experimental work on the C++ Runtime Library
(libstdc++-v3) beyond the current version 6 library ABI. Paolo Carlini
<pcarlini@suse.de>
and Benjamin Kosnik
<bkoz@redhat.com> are
maintaining this branch.
- fixed-point
- This branch contains the implementation of fixed-point arithmetic support
(
http://gcc.gnu.org/wiki/FixedPointArithmetic).
It is maintained by Chao-ying Fu
<fu@mips.com>
and will be routinely merged
with mainline. Patches and discussion on this branch should be marked with
the tag
[fixed-point]
in the subject line.
These branches are maintained by organizations distributing GCC.
No changes should be made to those branches without the explicit
permission of the distributing organization. The branch name should
be prefixed with the initials of the distributing organization.
- apple-local-200502-branch
- This branch is for various improvements in use at Apple and to
coordinate work with others. This branch is maintained by the folks
at Apple. Previous branch was apple-ppc-branch.
- csl-3_3_1-branch
- CodeSourcery release based on GCC 3.3.1.
- csl-arm-2004-q3-branch
- CodeSourcery ARM 2004-Q3 release
- csl-3_4-linux-branch
- CodeSourcery GNU/Linux compilers based on GCC 3.4.x.
- csl-3_4_3-linux-branch
- CodeSourcery GNU/Linux compilers based on GCC 3.4.3, with
patches from the csl-arm-branch.
- csl-gxxpro-3_4-branch
- CodeSourcery's Sourcery G++ compilers, based on GCC 3.4.x.
- ibm/gcc-4_1-branch
- This branch provides decimal float support backported to GCC 4.1.x.
It is expected to be used primarily within IBM for PowerPC-64 GNU/Linux.
The branch is maintained by Janis Johnson
<janis@us.ibm.com>.
- redhat/gcc-3_2-branch
- Red Hat GNU/Linux compilers based on GCC 3.2.x.
- redhat/gcc-3_4-branch
- Red Hat GNU/Linux compilers based on GCC 3.4.x.
- redhat/gcc-4_0-branch
- Red Hat GNU/Linux compilers based on GCC 4.0.x.
- redhat/gcc-4_1-branch
- Red Hat GNU/Linux compilers based on GCC 4.1.x.
- suse/gcc-4_1-branch
- SUSE GNU/Linux compilers based on GCC 4.1.x.
- suse/gcc-4_2-branch
- SUSE GNU/Linux compilers based on GCC 4.2.x.
- dfp-branch
edge-vector-branch
cp-parser-branch
cp-parser-branch-2
pch-branch
gcc-3_4-basic-improvements-branch
mips-3_4-rewrite-branch
dfa-branch
gcj-abi-2-dev-branch
gcj-eclipse-branch
tree-ssa-20020619-branch
csl-sol210-branch (Solaris 2.10 AMD64 support)
gomp-20050608-branch
- These branches have been merged into the mainline.
- apple-ppc-branch
- This branch was for various improvements in use at Apple and to
coordinate work with others. This branch was maintained by the folks
at Apple. It has been superseded by apple-local-200502-branch.
- stree-branch
- This branch was for improving compilation speed and reducing memory
use by representing declarations as small flat data structures whenever
possible, lazily expanding them into full trees when necessary. This
branch was being maintained by Matt Austern, Robert Bowdidge, Geoff
Keating, and Mike Stump. Patches were marked with the tag
[stree]
in the subject line.
- compile-server-branch
- This branch was aimed at improving compile speed by caching work
done between compilations. The work saved is mainly related to header
file processing. This branch was maintained by Mike Stump and Per Bothner.
Patches were marked with the tag
[cs]
in the subject
line.
- libobjc-branch
- The branch is aimed to clean up libobjc and make it run on Darwin.
Patches should be marked with the tag
[libobjc-branch]
in the subject line. Patches can be approved by Andrew Pinski
<pinskia@gcc.gnu.org>
or Nicola Pero
<n.pero@mi.flashnet.it>.
- cfg-branch
- This branch was created to develop and test infrastructure
for easier writing of new RTL based optimizations. The branch
was based on GCC pre-3.3 and has been partially merged into the
mainline for GCC 3.4. It is now closed, and work continues on
the rtlopt-branch.
- tree-ssa-cfg-branch
- This branch has been merged into the tree-ssa-20020619-branch.
- ast-optimizer-branch
- The purpose of this branch was to improve GCC's tree based
optimizations. The patches of this branch have been moved to the
tree-ssa-20020619-branch.
- faster-compiler-branch
- This was a temporary branch for compiler speedups for GCC 3.4.
See this
thread for discussion of possible work still to be done in this
area. The branch is unmaintained at present.
- gcc-3_3-e500-branch
- This branch was for backporting the PowerPC/E500 back end to GCC 3.3.
See this
message for details.
- gomp-01-branch
- gomp-branch
- These two branches were initial attempts to implement
OpenMP support in GCC. They were never properly maintained and
have now been superceded by
gomp-20050608-branch
.
- lno-branch
- A sub-branch of tree-ssa that aims at implementing a loop
nest optimizer at the tree level. Was largely merged into mainline,
and is currently unmaintained.
This work now continues on the autovect-branch.
- java-gui-branch
- This was a temporary branch for development of java GUI libraries
(AWT and Swing) in the libjava directory. It has been superseded
by java-gui-20050128-branch
- java-gui-20050128-branch
- This was a temporary branch for development of java GUI libraries
(AWT and Swing) in the libjava directory. It has been merged into
mainline.
- gcjx-branch
- This branch was used for development of gcjx, a rewrite of the
front end for the Java programming language. It has been superseded
by gcj-eclipse-branch.
- csl-hpux-branch
- This branch was for changes to G++ to be more compatible with
ABI bugs in the HP-UX C++ compiler. It is now unmaintained.
- tree-cleanup-branch
- This branch contained improvements and reorganization to the
tree optimizers that were not ready in time for GCC 4.0. The
goal was to cleanup the tree optimizers and improve the sequencing
of the passes. It has now been merged into mainline for the
4.1 release.
- bje-unsw-branch
- This branch was dedicated to some research work by Ben Elliston
at the University of New South Wales (UNSW) on transformation
phase ordering. It will never merge with mainline, although a
selection of patches may be submitted over time.
- redhat/gcc-3_3-branch
- This branch used to hold Red Hat GNU/Linux compilers based on
GCC 3.3.x.
Please send FSF & GNU inquiries & questions to
gnu@gnu.org.
There are also other ways
to contact the FSF.
These pages are maintained by
the GCC team.
For questions related to the use of GCC, please consult these web
pages and the GCC manuals. If
that fails, the gcc-help@gcc.gnu.org
mailing list might help.
Please send comments on these web pages and the development of GCC to our
developer mailing list at gcc@gnu.org
or gcc@gcc.gnu.org. All of our lists
have public archives.
Copyright (C) Free Software Foundation, Inc.,
51 Franklin St, Fifth Floor, Boston, MA 02110, USA.
Verbatim copying and distribution of this entire article is
permitted in any medium, provided this notice is preserved.
Last modified 2007-02-01
|
|