Merge lp:~ams-codesourcery/gcc-linaro/merge-from-fsf-20110701-4.5 into lp:gcc-linaro/4.5

Proposed by Andrew Stubbs
Status: Merged
Merged at revision: 99520
Proposed branch: lp:~ams-codesourcery/gcc-linaro/merge-from-fsf-20110701-4.5
Merge into: lp:gcc-linaro/4.5
Diff against target: 2701 lines (+982/-759)
46 files modified
ChangeLog (+22/-0)
ChangeLog.linaro (+4/-0)
Makefile.def (+0/-7)
Makefile.in (+0/-469)
config/ChangeLog (+6/-0)
config/mh-x86-darwin (+2/-0)
configure (+14/-34)
configure.ac (+14/-34)
gcc/ChangeLog (+107/-0)
gcc/DATESTAMP (+1/-1)
gcc/caller-save.c (+80/-86)
gcc/config/i386/sse.md (+12/-2)
gcc/config/mips/mips.c (+43/-16)
gcc/config/sh/sh.c (+11/-1)
gcc/config/sh/sh.md (+23/-7)
gcc/config/sparc/sparc-protos.h (+1/-0)
gcc/config/sparc/sparc.c (+25/-12)
gcc/config/sparc/sparc.h (+2/-1)
gcc/config/sparc/sparc.md (+1/-3)
gcc/cp/ChangeLog (+14/-0)
gcc/cp/class.c (+3/-14)
gcc/cp/method.c (+1/-0)
gcc/fortran/ChangeLog (+10/-0)
gcc/fortran/decl.c (+11/-0)
gcc/fortran/gfortran.h (+1/-0)
gcc/fortran/interface.c (+57/-65)
gcc/reload.c (+9/-0)
gcc/reload1.c (+7/-0)
gcc/testsuite/ChangeLog (+65/-0)
gcc/testsuite/g++.dg/rtti/anon-ns1.C (+15/-0)
gcc/testsuite/g++.dg/torture/pr47714.C (+16/-0)
gcc/testsuite/gcc.c-torture/compile/pr49238.c (+18/-0)
gcc/testsuite/gcc.c-torture/execute/pr49186.c (+15/-0)
gcc/testsuite/gcc.dg/pr49307.c (+21/-0)
gcc/testsuite/gcc.dg/torture/pr48542.c (+57/-0)
gcc/testsuite/gcc.dg/vect/pr49038.c (+42/-0)
gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8-gap4-unknown.c (+116/-0)
gcc/testsuite/gcc.target/mips/reg-var-1.c (+16/-0)
gcc/testsuite/gfortran.dg/operator_7.f90 (+27/-0)
gcc/testsuite/gnat.dg/opt17.adb (+13/-0)
gcc/testsuite/gnat.dg/opt17.ads (+7/-0)
gcc/tree-ssa-dom.c (+4/-3)
gcc/tree-vect-data-refs.c (+23/-1)
gcc/tree-vect-loop-manip.c (+32/-2)
gcc/tree-vect-loop.c (+7/-1)
gcc/tree-vectorizer.h (+7/-0)
To merge this branch: bzr merge lp:~ams-codesourcery/gcc-linaro/merge-from-fsf-20110701-4.5
Reviewer Review Type Date Requested Status
Linaro Toolchain Developers Pending
Review via email: mp+66568@code.launchpad.net

Description of the change

Merge from FSF 4.5 branch.

To post a comment you must log in.
Revision history for this message
Linaro Toolchain Builder (cbuild) wrote :

cbuild has taken a snapshot of this branch at r99519 and queued it for build.

The snapshot is available at:
 http://ex.seabright.co.nz/snapshots/gcc-linaro-4.5+bzr99519~ams-codesourcery~merge-from-fsf-20110701-4.5.tar.xdelta3.xz

and will be built on the following builders:
 a9-builder armv5-builder i686 x86_64

You can track the build queue at:
 http://ex.seabright.co.nz/helpers/scheduler

cbuild-snapshot: gcc-linaro-4.5+bzr99519~ams-codesourcery~merge-from-fsf-20110701-4.5
cbuild-ancestor: lp:gcc-linaro+bzr99518
cbuild-state: check

Revision history for this message
Linaro Toolchain Builder (cbuild) wrote :
Download full text (3.2 KiB)

cbuild successfully built this on i686-natty-cbuild146-oort2-i686r1.

The build results are available at:
 http://ex.seabright.co.nz/build/gcc-linaro-4.5+bzr99519~ams-codesourcery~merge-from-fsf-20110701-4.5/logs/i686-natty-cbuild146-oort2-i686r1

The test suite results changed compared to the branch point lp:gcc-linaro+bzr99518:
 +PASS: gcc.c-torture/compile/pr49238.c -O0 (test for excess errors)
 +PASS: gcc.c-torture/compile/pr49238.c -O1 (test for excess errors)
 +PASS: gcc.c-torture/compile/pr49238.c -O2 -flto (test for excess errors)
 +PASS: gcc.c-torture/compile/pr49238.c -O2 -fwhopr (test for excess errors)
 +PASS: gcc.c-torture/compile/pr49238.c -O2 (test for excess errors)
 +PASS: gcc.c-torture/compile/pr49238.c -O3 -fomit-frame-pointer -funroll-all-loops -finline-functions (test for excess errors)
 +PASS: gcc.c-torture/compile/pr49238.c -O3 -fomit-frame-pointer -funroll-loops (test for excess errors)
 +PASS: gcc.c-torture/compile/pr49238.c -O3 -fomit-frame-pointer (test for excess errors)
 +PASS: gcc.c-torture/compile/pr49238.c -O3 -g (test for excess errors)
 +PASS: gcc.c-torture/compile/pr49238.c -Os (test for excess errors)
 -PASS: gcc.c-torture/execute/pr29156.c compilation, -O2 -fwhopr
 +FAIL: gcc.c-torture/execute/pr29156.c compilation, -O2 -fwhopr
 -PASS: gcc.c-torture/execute/pr29156.c execution, -O2 -fwhopr
 +UNRESOLVED: gcc.c-torture/execute/pr29156.c execution, -O2 -fwhopr
 -PASS: gcc.c-torture/execute/pr38422.c compilation, -O2 -flto
 +FAIL: gcc.c-torture/execute/pr38422.c compilation, -O2 -flto
 -PASS: gcc.c-torture/execute/pr38422.c execution, -O2 -flto
 +UNRESOLVED: gcc.c-torture/execute/pr38422.c execution, -O2 -flto
 -PASS: gcc.c-torture/execute/pr38533.c compilation, -O0
 +FAIL: gcc.c-torture/execute/pr38533.c compilation, -O0
 -PASS: gcc.c-torture/execute/pr38533.c execution, -O0
 +UNRESOLVED: gcc.c-torture/execute/pr38533.c execution, -O0
 +PASS: gcc.c-torture/execute/pr49186.c compilation, -O0
 +PASS: gcc.c-torture/execute/pr49186.c compilation, -O1
 +PASS: gcc.c-torture/execute/pr49186.c compilation, -O2
 +PASS: gcc.c-torture/execute/pr49186.c compilation, -O2 -flto
 +PASS: gcc.c-torture/execute/pr49186.c compilation, -O2 -fwhopr
 +PASS: gcc.c-torture/execute/pr49186.c compilation, -O3 -fomit-frame-pointer
 +PASS: gcc.c-torture/execute/pr49186.c compilation, -O3 -g
 +PASS: gcc.c-torture/execute/pr49186.c compilation, -Os
 +PASS: gcc.c-torture/execute/pr49186.c execution, -O0
 +PASS: gcc.c-torture/execute/pr49186.c execution, -O1
 +PASS: gcc.c-torture/execute/pr49186.c execution, -O2
 +PASS: gcc.c-torture/execute/pr49186.c execution, -O2 -flto
 +PASS: gcc.c-torture/execute/pr49186.c execution, -O2 -fwhopr
 +PASS: gcc.c-torture/execute/pr49186.c execution, -O3 -fomit-frame-pointer
 +PASS: gcc.c-torture/execute/pr49186.c execution, -O3 -g
 +PASS: gcc.c-torture/execute/pr49186.c execution, -Os
 +PASS: gcc.dg/pr49307.c (test for excess errors)
 ...and 69 more

The full testsuite results are at:
 http://ex.seabright.co.nz/build/gcc-linaro-4.5+bzr99519~ams-codesourcery~merge-from-fsf-20110701-4.5/logs/i686-natty-cbuild146-oort2-i686r1/gcc-testsuite.txt

cbuild-checked: ...

Read more...

Revision history for this message
Linaro Toolchain Builder (cbuild) wrote :
Download full text (3.2 KiB)

cbuild successfully built this on x86_64-natty-cbuild146-oort1-x86_64r1.

The build results are available at:
 http://ex.seabright.co.nz/build/gcc-linaro-4.5+bzr99519~ams-codesourcery~merge-from-fsf-20110701-4.5/logs/x86_64-natty-cbuild146-oort1-x86_64r1

The test suite results changed compared to the branch point lp:gcc-linaro+bzr99518:
 +PASS: gcc.c-torture/compile/pr49238.c -O0 (test for excess errors)
 +PASS: gcc.c-torture/compile/pr49238.c -O1 (test for excess errors)
 +PASS: gcc.c-torture/compile/pr49238.c -O2 -flto (test for excess errors)
 +PASS: gcc.c-torture/compile/pr49238.c -O2 -fwhopr (test for excess errors)
 +PASS: gcc.c-torture/compile/pr49238.c -O2 (test for excess errors)
 +PASS: gcc.c-torture/compile/pr49238.c -O3 -fomit-frame-pointer -funroll-all-loops -finline-functions (test for excess errors)
 +PASS: gcc.c-torture/compile/pr49238.c -O3 -fomit-frame-pointer -funroll-loops (test for excess errors)
 +PASS: gcc.c-torture/compile/pr49238.c -O3 -fomit-frame-pointer (test for excess errors)
 +PASS: gcc.c-torture/compile/pr49238.c -O3 -g (test for excess errors)
 +PASS: gcc.c-torture/compile/pr49238.c -Os (test for excess errors)
 +PASS: gcc.c-torture/execute/pr49186.c compilation, -O0
 +PASS: gcc.c-torture/execute/pr49186.c compilation, -O1
 +PASS: gcc.c-torture/execute/pr49186.c compilation, -O2
 +PASS: gcc.c-torture/execute/pr49186.c compilation, -O2 -flto
 +PASS: gcc.c-torture/execute/pr49186.c compilation, -O2 -fwhopr
 +PASS: gcc.c-torture/execute/pr49186.c compilation, -O3 -fomit-frame-pointer
 +PASS: gcc.c-torture/execute/pr49186.c compilation, -O3 -g
 +PASS: gcc.c-torture/execute/pr49186.c compilation, -Os
 +PASS: gcc.c-torture/execute/pr49186.c execution, -O0
 +PASS: gcc.c-torture/execute/pr49186.c execution, -O1
 +PASS: gcc.c-torture/execute/pr49186.c execution, -O2
 +PASS: gcc.c-torture/execute/pr49186.c execution, -O2 -flto
 +PASS: gcc.c-torture/execute/pr49186.c execution, -O2 -fwhopr
 +PASS: gcc.c-torture/execute/pr49186.c execution, -O3 -fomit-frame-pointer
 +PASS: gcc.c-torture/execute/pr49186.c execution, -O3 -g
 +PASS: gcc.c-torture/execute/pr49186.c execution, -Os
 +PASS: gcc.dg/pr49307.c (test for excess errors)
 +PASS: gcc.dg/torture/pr48542.c -O0 execution test
 +PASS: gcc.dg/torture/pr48542.c -O0 (test for excess errors)
 +PASS: gcc.dg/torture/pr48542.c -O1 execution test
 +PASS: gcc.dg/torture/pr48542.c -O1 (test for excess errors)
 +PASS: gcc.dg/torture/pr48542.c -O2 execution test
 +PASS: gcc.dg/torture/pr48542.c -O2 -flto execution test
 +PASS: gcc.dg/torture/pr48542.c -O2 -flto (test for excess errors)
 +PASS: gcc.dg/torture/pr48542.c -O2 -fwhopr execution test
 +PASS: gcc.dg/torture/pr48542.c -O2 -fwhopr (test for excess errors)
 +PASS: gcc.dg/torture/pr48542.c -O2 (test for excess errors)
 +PASS: gcc.dg/torture/pr48542.c -O3 -fomit-frame-pointer execution test
 +PASS: gcc.dg/torture/pr48542.c -O3 -fomit-frame-pointer -funroll-all-loops -finline-functions execution test
 ...and 26 more

The full testsuite results are at:
 http://ex.seabright.co.nz/build/gcc-linaro-4.5+bzr99519~ams-codesourcery~merge-from-fsf-20110701-4.5/logs/x86_64-natty-...

Read more...

Revision history for this message
Linaro Toolchain Builder (cbuild) wrote :
Download full text (3.2 KiB)

cbuild successfully built this on armv7l-natty-cbuild146-ursa1-cortexa9r1.

The build results are available at:
 http://ex.seabright.co.nz/build/gcc-linaro-4.5+bzr99519~ams-codesourcery~merge-from-fsf-20110701-4.5/logs/armv7l-natty-cbuild146-ursa1-cortexa9r1

The test suite results changed compared to the branch point lp:gcc-linaro+bzr99518:
 +PASS: gcc.c-torture/compile/pr49238.c -O0 (test for excess errors)
 +PASS: gcc.c-torture/compile/pr49238.c -O1 (test for excess errors)
 +PASS: gcc.c-torture/compile/pr49238.c -O2 -flto (test for excess errors)
 +PASS: gcc.c-torture/compile/pr49238.c -O2 -fwhopr (test for excess errors)
 +PASS: gcc.c-torture/compile/pr49238.c -O2 (test for excess errors)
 +PASS: gcc.c-torture/compile/pr49238.c -O3 -fomit-frame-pointer -funroll-all-loops -finline-functions (test for excess errors)
 +PASS: gcc.c-torture/compile/pr49238.c -O3 -fomit-frame-pointer -funroll-loops (test for excess errors)
 +PASS: gcc.c-torture/compile/pr49238.c -O3 -fomit-frame-pointer (test for excess errors)
 +PASS: gcc.c-torture/compile/pr49238.c -O3 -g (test for excess errors)
 +PASS: gcc.c-torture/compile/pr49238.c -Os (test for excess errors)
 +PASS: gcc.c-torture/execute/pr49186.c compilation, -O0
 +PASS: gcc.c-torture/execute/pr49186.c compilation, -O1
 +PASS: gcc.c-torture/execute/pr49186.c compilation, -O2
 +PASS: gcc.c-torture/execute/pr49186.c compilation, -O2 -flto
 +PASS: gcc.c-torture/execute/pr49186.c compilation, -O2 -fwhopr
 +PASS: gcc.c-torture/execute/pr49186.c compilation, -O3 -fomit-frame-pointer
 +PASS: gcc.c-torture/execute/pr49186.c compilation, -O3 -g
 +PASS: gcc.c-torture/execute/pr49186.c compilation, -Os
 +PASS: gcc.c-torture/execute/pr49186.c execution, -O0
 +PASS: gcc.c-torture/execute/pr49186.c execution, -O1
 +PASS: gcc.c-torture/execute/pr49186.c execution, -O2
 +PASS: gcc.c-torture/execute/pr49186.c execution, -O2 -flto
 +PASS: gcc.c-torture/execute/pr49186.c execution, -O2 -fwhopr
 +PASS: gcc.c-torture/execute/pr49186.c execution, -O3 -fomit-frame-pointer
 +PASS: gcc.c-torture/execute/pr49186.c execution, -O3 -g
 +PASS: gcc.c-torture/execute/pr49186.c execution, -Os
 +PASS: gcc.dg/pr49307.c (test for excess errors)
 +PASS: gcc.dg/torture/pr48542.c -O0 execution test
 +PASS: gcc.dg/torture/pr48542.c -O0 (test for excess errors)
 +PASS: gcc.dg/torture/pr48542.c -O1 execution test
 +PASS: gcc.dg/torture/pr48542.c -O1 (test for excess errors)
 +PASS: gcc.dg/torture/pr48542.c -O2 execution test
 +PASS: gcc.dg/torture/pr48542.c -O2 -flto execution test
 +PASS: gcc.dg/torture/pr48542.c -O2 -flto (test for excess errors)
 +PASS: gcc.dg/torture/pr48542.c -O2 -fwhopr execution test
 +PASS: gcc.dg/torture/pr48542.c -O2 -fwhopr (test for excess errors)
 +PASS: gcc.dg/torture/pr48542.c -O2 (test for excess errors)
 +PASS: gcc.dg/torture/pr48542.c -O3 -fomit-frame-pointer execution test
 +PASS: gcc.dg/torture/pr48542.c -O3 -fomit-frame-pointer -funroll-all-loops -finline-functions execution test
 ...and 25 more

The full testsuite results are at:
 http://ex.seabright.co.nz/build/gcc-linaro-4.5+bzr99519~ams-codesourcery~merge-from-fsf-20110701-4.5/logs/armv7l-na...

Read more...

Revision history for this message
Linaro Toolchain Builder (cbuild) wrote :

cbuild successfully built this on armv7l-natty-cbuild146-ursa4-armv5r2.

The build results are available at:
 http://ex.seabright.co.nz/build/gcc-linaro-4.5+bzr99519~ams-codesourcery~merge-from-fsf-20110701-4.5/logs/armv7l-natty-cbuild146-ursa4-armv5r2

The test suite was not checked as the branch point lp:gcc-linaro+bzr99518 has nothing to compare against.

The full testsuite results are at:
 http://ex.seabright.co.nz/build/gcc-linaro-4.5+bzr99519~ams-codesourcery~merge-from-fsf-20110701-4.5/logs/armv7l-natty-cbuild146-ursa4-armv5r2/gcc-testsuite.txt

cbuild-checked: armv7l-natty-cbuild146-ursa4-armv5r2

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'ChangeLog'
2--- ChangeLog 2011-04-28 14:08:55 +0000
3+++ ChangeLog 2011-07-01 09:39:45 +0000
4@@ -1,3 +1,25 @@
5+2011-06-27 Hans-Peter Nilsson <hp@axis.com>
6+
7+ PR regression/47836
8+ PR bootstrap/23656
9+ PR other/47733
10+ PR bootstrap/49247
11+ PR c/48825
12+ * configure.ac (target_libraries): Remove target-libiberty.
13+ Remove all target-specific settings adding target-libiberty to
14+ skipdirs and noconfigdirs. Remove checking target_configdirs
15+ and removing target-libiberty but keeping target-libgcc if
16+ otherwise empty.
17+ * Makefile.def (target_modules): Don't add libiberty.
18+ (dependencies): Remove all traces of target-libiberty.
19+ * configure, Makefile.in: Regenerate.
20+
21+2011-06-19 Jack Howarth <howarth@bromo.med.uc.edu>
22+
23+ PR target/49461
24+ * configure.ac: Use mh-x86-darwin.
25+ * configure: Regenerate.
26+
27 2011-04-28 Release Manager
28
29 * GCC 4.5.3 released.
30
31=== modified file 'ChangeLog.linaro'
32--- ChangeLog.linaro 2011-06-14 10:36:23 +0000
33+++ ChangeLog.linaro 2011-07-01 09:39:45 +0000
34@@ -1,3 +1,7 @@
35+2011-07-01 Andrew Stubbs <ams@codesourcery.com>
36+
37+ Merge from FSF 4.5 branch r175676 (pre 4.5.4).
38+
39 2011-06-14 Andrew Stubbs <ams@codesourcery.com>
40
41 gcc/
42
43=== modified file 'Makefile.def'
44--- Makefile.def 2010-06-10 16:05:59 +0000
45+++ Makefile.def 2011-07-01 09:39:45 +0000
46@@ -164,7 +164,6 @@
47 missing=maintainer-clean; };
48 target_modules = { module= winsup; };
49 target_modules = { module= libgloss; no_check=true; };
50-target_modules = { module= libiberty; };
51 target_modules = { module= gperf; };
52 target_modules = { module= examples; no_check=true; no_install=true; };
53 target_modules = { module= libffi; };
54@@ -532,7 +531,6 @@
55 dependencies = { module=configure-target-boehm-gc; on=all-target-libstdc++-v3; };
56 dependencies = { module=configure-target-fastjar; on=configure-target-zlib; };
57 dependencies = { module=all-target-fastjar; on=all-target-zlib; };
58-dependencies = { module=all-target-fastjar; on=all-target-libiberty; };
59 dependencies = { module=configure-target-libjava; on=configure-target-zlib; };
60 dependencies = { module=configure-target-libjava; on=configure-target-boehm-gc; };
61 dependencies = { module=configure-target-libjava; on=configure-target-qthreads; };
62@@ -543,9 +541,7 @@
63 dependencies = { module=all-target-libjava; on=all-target-qthreads; };
64 dependencies = { module=all-target-libjava; on=all-target-libffi; };
65 dependencies = { module=configure-target-libobjc; on=configure-target-boehm-gc; };
66-dependencies = { module=all-target-libobjc; on=all-target-libiberty; };
67 dependencies = { module=all-target-libobjc; on=all-target-boehm-gc; };
68-dependencies = { module=all-target-libstdc++-v3; on=all-target-libiberty; };
69 dependencies = { module=configure-target-libstdc++-v3; on=configure-target-libgomp; };
70 // parallel_list.o and parallel_settings.o depend on omp.h, which is
71 // generated by the libgomp configure. Unfortunately, due to the use of
72@@ -560,10 +556,7 @@
73 lang_env_dependencies = { module=qthreads; };
74
75 dependencies = { module=all-target-libgloss; on=all-target-newlib; };
76-dependencies = { module=all-target-winsup; on=all-target-libiberty; };
77 dependencies = { module=all-target-winsup; on=all-target-libtermcap; };
78-dependencies = { module=configure-target-libiberty; on=all-binutils; };
79-dependencies = { module=configure-target-libiberty; on=all-ld; };
80 dependencies = { module=configure-target-newlib; on=all-binutils; };
81 dependencies = { module=configure-target-newlib; on=all-ld; };
82
83
84=== modified file 'Makefile.in'
85--- Makefile.in 2010-06-10 16:05:59 +0000
86+++ Makefile.in 2011-07-01 09:39:45 +0000
87@@ -930,7 +930,6 @@
88 maybe-configure-target-libtermcap \
89 maybe-configure-target-winsup \
90 maybe-configure-target-libgloss \
91- maybe-configure-target-libiberty \
92 maybe-configure-target-gperf \
93 maybe-configure-target-examples \
94 maybe-configure-target-libffi \
95@@ -1112,7 +1111,6 @@
96 all-target: maybe-all-target-libtermcap
97 all-target: maybe-all-target-winsup
98 all-target: maybe-all-target-libgloss
99-all-target: maybe-all-target-libiberty
100 all-target: maybe-all-target-gperf
101 all-target: maybe-all-target-examples
102 all-target: maybe-all-target-libffi
103@@ -1233,7 +1231,6 @@
104 info-target: maybe-info-target-libtermcap
105 info-target: maybe-info-target-winsup
106 info-target: maybe-info-target-libgloss
107-info-target: maybe-info-target-libiberty
108 info-target: maybe-info-target-gperf
109 info-target: maybe-info-target-examples
110 info-target: maybe-info-target-libffi
111@@ -1347,7 +1344,6 @@
112 dvi-target: maybe-dvi-target-libtermcap
113 dvi-target: maybe-dvi-target-winsup
114 dvi-target: maybe-dvi-target-libgloss
115-dvi-target: maybe-dvi-target-libiberty
116 dvi-target: maybe-dvi-target-gperf
117 dvi-target: maybe-dvi-target-examples
118 dvi-target: maybe-dvi-target-libffi
119@@ -1461,7 +1457,6 @@
120 pdf-target: maybe-pdf-target-libtermcap
121 pdf-target: maybe-pdf-target-winsup
122 pdf-target: maybe-pdf-target-libgloss
123-pdf-target: maybe-pdf-target-libiberty
124 pdf-target: maybe-pdf-target-gperf
125 pdf-target: maybe-pdf-target-examples
126 pdf-target: maybe-pdf-target-libffi
127@@ -1575,7 +1570,6 @@
128 html-target: maybe-html-target-libtermcap
129 html-target: maybe-html-target-winsup
130 html-target: maybe-html-target-libgloss
131-html-target: maybe-html-target-libiberty
132 html-target: maybe-html-target-gperf
133 html-target: maybe-html-target-examples
134 html-target: maybe-html-target-libffi
135@@ -1689,7 +1683,6 @@
136 TAGS-target: maybe-TAGS-target-libtermcap
137 TAGS-target: maybe-TAGS-target-winsup
138 TAGS-target: maybe-TAGS-target-libgloss
139-TAGS-target: maybe-TAGS-target-libiberty
140 TAGS-target: maybe-TAGS-target-gperf
141 TAGS-target: maybe-TAGS-target-examples
142 TAGS-target: maybe-TAGS-target-libffi
143@@ -1803,7 +1796,6 @@
144 install-info-target: maybe-install-info-target-libtermcap
145 install-info-target: maybe-install-info-target-winsup
146 install-info-target: maybe-install-info-target-libgloss
147-install-info-target: maybe-install-info-target-libiberty
148 install-info-target: maybe-install-info-target-gperf
149 install-info-target: maybe-install-info-target-examples
150 install-info-target: maybe-install-info-target-libffi
151@@ -1917,7 +1909,6 @@
152 install-pdf-target: maybe-install-pdf-target-libtermcap
153 install-pdf-target: maybe-install-pdf-target-winsup
154 install-pdf-target: maybe-install-pdf-target-libgloss
155-install-pdf-target: maybe-install-pdf-target-libiberty
156 install-pdf-target: maybe-install-pdf-target-gperf
157 install-pdf-target: maybe-install-pdf-target-examples
158 install-pdf-target: maybe-install-pdf-target-libffi
159@@ -2031,7 +2022,6 @@
160 install-html-target: maybe-install-html-target-libtermcap
161 install-html-target: maybe-install-html-target-winsup
162 install-html-target: maybe-install-html-target-libgloss
163-install-html-target: maybe-install-html-target-libiberty
164 install-html-target: maybe-install-html-target-gperf
165 install-html-target: maybe-install-html-target-examples
166 install-html-target: maybe-install-html-target-libffi
167@@ -2145,7 +2135,6 @@
168 installcheck-target: maybe-installcheck-target-libtermcap
169 installcheck-target: maybe-installcheck-target-winsup
170 installcheck-target: maybe-installcheck-target-libgloss
171-installcheck-target: maybe-installcheck-target-libiberty
172 installcheck-target: maybe-installcheck-target-gperf
173 installcheck-target: maybe-installcheck-target-examples
174 installcheck-target: maybe-installcheck-target-libffi
175@@ -2259,7 +2248,6 @@
176 mostlyclean-target: maybe-mostlyclean-target-libtermcap
177 mostlyclean-target: maybe-mostlyclean-target-winsup
178 mostlyclean-target: maybe-mostlyclean-target-libgloss
179-mostlyclean-target: maybe-mostlyclean-target-libiberty
180 mostlyclean-target: maybe-mostlyclean-target-gperf
181 mostlyclean-target: maybe-mostlyclean-target-examples
182 mostlyclean-target: maybe-mostlyclean-target-libffi
183@@ -2373,7 +2361,6 @@
184 clean-target: maybe-clean-target-libtermcap
185 clean-target: maybe-clean-target-winsup
186 clean-target: maybe-clean-target-libgloss
187-clean-target: maybe-clean-target-libiberty
188 clean-target: maybe-clean-target-gperf
189 clean-target: maybe-clean-target-examples
190 clean-target: maybe-clean-target-libffi
191@@ -2487,7 +2474,6 @@
192 distclean-target: maybe-distclean-target-libtermcap
193 distclean-target: maybe-distclean-target-winsup
194 distclean-target: maybe-distclean-target-libgloss
195-distclean-target: maybe-distclean-target-libiberty
196 distclean-target: maybe-distclean-target-gperf
197 distclean-target: maybe-distclean-target-examples
198 distclean-target: maybe-distclean-target-libffi
199@@ -2601,7 +2587,6 @@
200 maintainer-clean-target: maybe-maintainer-clean-target-libtermcap
201 maintainer-clean-target: maybe-maintainer-clean-target-winsup
202 maintainer-clean-target: maybe-maintainer-clean-target-libgloss
203-maintainer-clean-target: maybe-maintainer-clean-target-libiberty
204 maintainer-clean-target: maybe-maintainer-clean-target-gperf
205 maintainer-clean-target: maybe-maintainer-clean-target-examples
206 maintainer-clean-target: maybe-maintainer-clean-target-libffi
207@@ -2770,7 +2755,6 @@
208 maybe-check-target-libtermcap \
209 maybe-check-target-winsup \
210 maybe-check-target-libgloss \
211- maybe-check-target-libiberty \
212 maybe-check-target-gperf \
213 maybe-check-target-examples \
214 maybe-check-target-libffi \
215@@ -2991,7 +2975,6 @@
216 maybe-install-target-libtermcap \
217 maybe-install-target-winsup \
218 maybe-install-target-libgloss \
219- maybe-install-target-libiberty \
220 maybe-install-target-gperf \
221 maybe-install-target-examples \
222 maybe-install-target-libffi \
223@@ -50216,448 +50199,6 @@
224
225
226
227-.PHONY: configure-target-libiberty maybe-configure-target-libiberty
228-maybe-configure-target-libiberty:
229-@if gcc-bootstrap
230-configure-target-libiberty: stage_current
231-@endif gcc-bootstrap
232-@if target-libiberty
233-maybe-configure-target-libiberty: configure-target-libiberty
234-configure-target-libiberty:
235- @: $(MAKE); $(unstage)
236- @r=`${PWD_COMMAND}`; export r; \
237- s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
238- echo "Checking multilib configuration for libiberty..."; \
239- $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libiberty ; \
240- $(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/libiberty/multilib.tmp 2> /dev/null ; \
241- if test -r $(TARGET_SUBDIR)/libiberty/multilib.out; then \
242- if cmp -s $(TARGET_SUBDIR)/libiberty/multilib.tmp $(TARGET_SUBDIR)/libiberty/multilib.out; then \
243- rm -f $(TARGET_SUBDIR)/libiberty/multilib.tmp; \
244- else \
245- rm -f $(TARGET_SUBDIR)/libiberty/Makefile; \
246- mv $(TARGET_SUBDIR)/libiberty/multilib.tmp $(TARGET_SUBDIR)/libiberty/multilib.out; \
247- fi; \
248- else \
249- mv $(TARGET_SUBDIR)/libiberty/multilib.tmp $(TARGET_SUBDIR)/libiberty/multilib.out; \
250- fi; \
251- test ! -f $(TARGET_SUBDIR)/libiberty/Makefile || exit 0; \
252- $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libiberty ; \
253- $(NORMAL_TARGET_EXPORTS) \
254- echo Configuring in $(TARGET_SUBDIR)/libiberty; \
255- cd "$(TARGET_SUBDIR)/libiberty" || exit 1; \
256- case $(srcdir) in \
257- /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \
258- *) topdir=`echo $(TARGET_SUBDIR)/libiberty/ | \
259- sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \
260- esac; \
261- srcdiroption="--srcdir=$${topdir}/libiberty"; \
262- libsrcdir="$$s/libiberty"; \
263- rm -f no-such-file || : ; \
264- CONFIG_SITE=no-such-file $(SHELL) $${libsrcdir}/configure \
265- $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \
266- --target=${target_alias} $${srcdiroption} \
267- || exit 1
268-@endif target-libiberty
269-
270-
271-
272-
273-
274-.PHONY: all-target-libiberty maybe-all-target-libiberty
275-maybe-all-target-libiberty:
276-@if gcc-bootstrap
277-all-target-libiberty: stage_current
278-@endif gcc-bootstrap
279-@if target-libiberty
280-TARGET-target-libiberty=all
281-maybe-all-target-libiberty: all-target-libiberty
282-all-target-libiberty: configure-target-libiberty
283- @: $(MAKE); $(unstage)
284- @r=`${PWD_COMMAND}`; export r; \
285- s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
286- $(NORMAL_TARGET_EXPORTS) \
287- (cd $(TARGET_SUBDIR)/libiberty && \
288- $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_TARGET_FLAGS) \
289- $(TARGET-target-libiberty))
290-@endif target-libiberty
291-
292-
293-
294-
295-
296-.PHONY: check-target-libiberty maybe-check-target-libiberty
297-maybe-check-target-libiberty:
298-@if target-libiberty
299-maybe-check-target-libiberty: check-target-libiberty
300-
301-check-target-libiberty:
302- @: $(MAKE); $(unstage)
303- @r=`${PWD_COMMAND}`; export r; \
304- s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
305- $(NORMAL_TARGET_EXPORTS) \
306- (cd $(TARGET_SUBDIR)/libiberty && \
307- $(MAKE) $(TARGET_FLAGS_TO_PASS) check)
308-
309-@endif target-libiberty
310-
311-.PHONY: install-target-libiberty maybe-install-target-libiberty
312-maybe-install-target-libiberty:
313-@if target-libiberty
314-maybe-install-target-libiberty: install-target-libiberty
315-
316-install-target-libiberty: installdirs
317- @: $(MAKE); $(unstage)
318- @r=`${PWD_COMMAND}`; export r; \
319- s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
320- $(NORMAL_TARGET_EXPORTS) \
321- (cd $(TARGET_SUBDIR)/libiberty && \
322- $(MAKE) $(TARGET_FLAGS_TO_PASS) install)
323-
324-@endif target-libiberty
325-
326-# Other targets (info, dvi, pdf, etc.)
327-
328-.PHONY: maybe-info-target-libiberty info-target-libiberty
329-maybe-info-target-libiberty:
330-@if target-libiberty
331-maybe-info-target-libiberty: info-target-libiberty
332-
333-info-target-libiberty: \
334- configure-target-libiberty
335- @: $(MAKE); $(unstage)
336- @[ -f $(TARGET_SUBDIR)/libiberty/Makefile ] || exit 0 ; \
337- r=`${PWD_COMMAND}`; export r; \
338- s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
339- $(NORMAL_TARGET_EXPORTS) \
340- echo "Doing info in $(TARGET_SUBDIR)/libiberty" ; \
341- for flag in $(EXTRA_TARGET_FLAGS); do \
342- eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
343- done; \
344- (cd $(TARGET_SUBDIR)/libiberty && \
345- $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
346- "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
347- "RANLIB=$${RANLIB}" \
348- "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
349- info) \
350- || exit 1
351-
352-@endif target-libiberty
353-
354-.PHONY: maybe-dvi-target-libiberty dvi-target-libiberty
355-maybe-dvi-target-libiberty:
356-@if target-libiberty
357-maybe-dvi-target-libiberty: dvi-target-libiberty
358-
359-dvi-target-libiberty: \
360- configure-target-libiberty
361- @: $(MAKE); $(unstage)
362- @[ -f $(TARGET_SUBDIR)/libiberty/Makefile ] || exit 0 ; \
363- r=`${PWD_COMMAND}`; export r; \
364- s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
365- $(NORMAL_TARGET_EXPORTS) \
366- echo "Doing dvi in $(TARGET_SUBDIR)/libiberty" ; \
367- for flag in $(EXTRA_TARGET_FLAGS); do \
368- eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
369- done; \
370- (cd $(TARGET_SUBDIR)/libiberty && \
371- $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
372- "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
373- "RANLIB=$${RANLIB}" \
374- "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
375- dvi) \
376- || exit 1
377-
378-@endif target-libiberty
379-
380-.PHONY: maybe-pdf-target-libiberty pdf-target-libiberty
381-maybe-pdf-target-libiberty:
382-@if target-libiberty
383-maybe-pdf-target-libiberty: pdf-target-libiberty
384-
385-pdf-target-libiberty: \
386- configure-target-libiberty
387- @: $(MAKE); $(unstage)
388- @[ -f $(TARGET_SUBDIR)/libiberty/Makefile ] || exit 0 ; \
389- r=`${PWD_COMMAND}`; export r; \
390- s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
391- $(NORMAL_TARGET_EXPORTS) \
392- echo "Doing pdf in $(TARGET_SUBDIR)/libiberty" ; \
393- for flag in $(EXTRA_TARGET_FLAGS); do \
394- eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
395- done; \
396- (cd $(TARGET_SUBDIR)/libiberty && \
397- $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
398- "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
399- "RANLIB=$${RANLIB}" \
400- "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
401- pdf) \
402- || exit 1
403-
404-@endif target-libiberty
405-
406-.PHONY: maybe-html-target-libiberty html-target-libiberty
407-maybe-html-target-libiberty:
408-@if target-libiberty
409-maybe-html-target-libiberty: html-target-libiberty
410-
411-html-target-libiberty: \
412- configure-target-libiberty
413- @: $(MAKE); $(unstage)
414- @[ -f $(TARGET_SUBDIR)/libiberty/Makefile ] || exit 0 ; \
415- r=`${PWD_COMMAND}`; export r; \
416- s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
417- $(NORMAL_TARGET_EXPORTS) \
418- echo "Doing html in $(TARGET_SUBDIR)/libiberty" ; \
419- for flag in $(EXTRA_TARGET_FLAGS); do \
420- eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
421- done; \
422- (cd $(TARGET_SUBDIR)/libiberty && \
423- $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
424- "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
425- "RANLIB=$${RANLIB}" \
426- "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
427- html) \
428- || exit 1
429-
430-@endif target-libiberty
431-
432-.PHONY: maybe-TAGS-target-libiberty TAGS-target-libiberty
433-maybe-TAGS-target-libiberty:
434-@if target-libiberty
435-maybe-TAGS-target-libiberty: TAGS-target-libiberty
436-
437-TAGS-target-libiberty: \
438- configure-target-libiberty
439- @: $(MAKE); $(unstage)
440- @[ -f $(TARGET_SUBDIR)/libiberty/Makefile ] || exit 0 ; \
441- r=`${PWD_COMMAND}`; export r; \
442- s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
443- $(NORMAL_TARGET_EXPORTS) \
444- echo "Doing TAGS in $(TARGET_SUBDIR)/libiberty" ; \
445- for flag in $(EXTRA_TARGET_FLAGS); do \
446- eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
447- done; \
448- (cd $(TARGET_SUBDIR)/libiberty && \
449- $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
450- "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
451- "RANLIB=$${RANLIB}" \
452- "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
453- TAGS) \
454- || exit 1
455-
456-@endif target-libiberty
457-
458-.PHONY: maybe-install-info-target-libiberty install-info-target-libiberty
459-maybe-install-info-target-libiberty:
460-@if target-libiberty
461-maybe-install-info-target-libiberty: install-info-target-libiberty
462-
463-install-info-target-libiberty: \
464- configure-target-libiberty \
465- info-target-libiberty
466- @: $(MAKE); $(unstage)
467- @[ -f $(TARGET_SUBDIR)/libiberty/Makefile ] || exit 0 ; \
468- r=`${PWD_COMMAND}`; export r; \
469- s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
470- $(NORMAL_TARGET_EXPORTS) \
471- echo "Doing install-info in $(TARGET_SUBDIR)/libiberty" ; \
472- for flag in $(EXTRA_TARGET_FLAGS); do \
473- eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
474- done; \
475- (cd $(TARGET_SUBDIR)/libiberty && \
476- $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
477- "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
478- "RANLIB=$${RANLIB}" \
479- "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
480- install-info) \
481- || exit 1
482-
483-@endif target-libiberty
484-
485-.PHONY: maybe-install-pdf-target-libiberty install-pdf-target-libiberty
486-maybe-install-pdf-target-libiberty:
487-@if target-libiberty
488-maybe-install-pdf-target-libiberty: install-pdf-target-libiberty
489-
490-install-pdf-target-libiberty: \
491- configure-target-libiberty \
492- pdf-target-libiberty
493- @: $(MAKE); $(unstage)
494- @[ -f $(TARGET_SUBDIR)/libiberty/Makefile ] || exit 0 ; \
495- r=`${PWD_COMMAND}`; export r; \
496- s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
497- $(NORMAL_TARGET_EXPORTS) \
498- echo "Doing install-pdf in $(TARGET_SUBDIR)/libiberty" ; \
499- for flag in $(EXTRA_TARGET_FLAGS); do \
500- eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
501- done; \
502- (cd $(TARGET_SUBDIR)/libiberty && \
503- $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
504- "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
505- "RANLIB=$${RANLIB}" \
506- "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
507- install-pdf) \
508- || exit 1
509-
510-@endif target-libiberty
511-
512-.PHONY: maybe-install-html-target-libiberty install-html-target-libiberty
513-maybe-install-html-target-libiberty:
514-@if target-libiberty
515-maybe-install-html-target-libiberty: install-html-target-libiberty
516-
517-install-html-target-libiberty: \
518- configure-target-libiberty \
519- html-target-libiberty
520- @: $(MAKE); $(unstage)
521- @[ -f $(TARGET_SUBDIR)/libiberty/Makefile ] || exit 0 ; \
522- r=`${PWD_COMMAND}`; export r; \
523- s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
524- $(NORMAL_TARGET_EXPORTS) \
525- echo "Doing install-html in $(TARGET_SUBDIR)/libiberty" ; \
526- for flag in $(EXTRA_TARGET_FLAGS); do \
527- eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
528- done; \
529- (cd $(TARGET_SUBDIR)/libiberty && \
530- $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
531- "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
532- "RANLIB=$${RANLIB}" \
533- "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
534- install-html) \
535- || exit 1
536-
537-@endif target-libiberty
538-
539-.PHONY: maybe-installcheck-target-libiberty installcheck-target-libiberty
540-maybe-installcheck-target-libiberty:
541-@if target-libiberty
542-maybe-installcheck-target-libiberty: installcheck-target-libiberty
543-
544-installcheck-target-libiberty: \
545- configure-target-libiberty
546- @: $(MAKE); $(unstage)
547- @[ -f $(TARGET_SUBDIR)/libiberty/Makefile ] || exit 0 ; \
548- r=`${PWD_COMMAND}`; export r; \
549- s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
550- $(NORMAL_TARGET_EXPORTS) \
551- echo "Doing installcheck in $(TARGET_SUBDIR)/libiberty" ; \
552- for flag in $(EXTRA_TARGET_FLAGS); do \
553- eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
554- done; \
555- (cd $(TARGET_SUBDIR)/libiberty && \
556- $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
557- "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
558- "RANLIB=$${RANLIB}" \
559- "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
560- installcheck) \
561- || exit 1
562-
563-@endif target-libiberty
564-
565-.PHONY: maybe-mostlyclean-target-libiberty mostlyclean-target-libiberty
566-maybe-mostlyclean-target-libiberty:
567-@if target-libiberty
568-maybe-mostlyclean-target-libiberty: mostlyclean-target-libiberty
569-
570-mostlyclean-target-libiberty:
571- @: $(MAKE); $(unstage)
572- @[ -f $(TARGET_SUBDIR)/libiberty/Makefile ] || exit 0 ; \
573- r=`${PWD_COMMAND}`; export r; \
574- s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
575- $(NORMAL_TARGET_EXPORTS) \
576- echo "Doing mostlyclean in $(TARGET_SUBDIR)/libiberty" ; \
577- for flag in $(EXTRA_TARGET_FLAGS); do \
578- eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
579- done; \
580- (cd $(TARGET_SUBDIR)/libiberty && \
581- $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
582- "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
583- "RANLIB=$${RANLIB}" \
584- "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
585- mostlyclean) \
586- || exit 1
587-
588-@endif target-libiberty
589-
590-.PHONY: maybe-clean-target-libiberty clean-target-libiberty
591-maybe-clean-target-libiberty:
592-@if target-libiberty
593-maybe-clean-target-libiberty: clean-target-libiberty
594-
595-clean-target-libiberty:
596- @: $(MAKE); $(unstage)
597- @[ -f $(TARGET_SUBDIR)/libiberty/Makefile ] || exit 0 ; \
598- r=`${PWD_COMMAND}`; export r; \
599- s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
600- $(NORMAL_TARGET_EXPORTS) \
601- echo "Doing clean in $(TARGET_SUBDIR)/libiberty" ; \
602- for flag in $(EXTRA_TARGET_FLAGS); do \
603- eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
604- done; \
605- (cd $(TARGET_SUBDIR)/libiberty && \
606- $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
607- "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
608- "RANLIB=$${RANLIB}" \
609- "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
610- clean) \
611- || exit 1
612-
613-@endif target-libiberty
614-
615-.PHONY: maybe-distclean-target-libiberty distclean-target-libiberty
616-maybe-distclean-target-libiberty:
617-@if target-libiberty
618-maybe-distclean-target-libiberty: distclean-target-libiberty
619-
620-distclean-target-libiberty:
621- @: $(MAKE); $(unstage)
622- @[ -f $(TARGET_SUBDIR)/libiberty/Makefile ] || exit 0 ; \
623- r=`${PWD_COMMAND}`; export r; \
624- s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
625- $(NORMAL_TARGET_EXPORTS) \
626- echo "Doing distclean in $(TARGET_SUBDIR)/libiberty" ; \
627- for flag in $(EXTRA_TARGET_FLAGS); do \
628- eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
629- done; \
630- (cd $(TARGET_SUBDIR)/libiberty && \
631- $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
632- "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
633- "RANLIB=$${RANLIB}" \
634- "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
635- distclean) \
636- || exit 1
637-
638-@endif target-libiberty
639-
640-.PHONY: maybe-maintainer-clean-target-libiberty maintainer-clean-target-libiberty
641-maybe-maintainer-clean-target-libiberty:
642-@if target-libiberty
643-maybe-maintainer-clean-target-libiberty: maintainer-clean-target-libiberty
644-
645-maintainer-clean-target-libiberty:
646- @: $(MAKE); $(unstage)
647- @[ -f $(TARGET_SUBDIR)/libiberty/Makefile ] || exit 0 ; \
648- r=`${PWD_COMMAND}`; export r; \
649- s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
650- $(NORMAL_TARGET_EXPORTS) \
651- echo "Doing maintainer-clean in $(TARGET_SUBDIR)/libiberty" ; \
652- for flag in $(EXTRA_TARGET_FLAGS); do \
653- eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
654- done; \
655- (cd $(TARGET_SUBDIR)/libiberty && \
656- $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
657- "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
658- "RANLIB=$${RANLIB}" \
659- "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
660- maintainer-clean) \
661- || exit 1
662-
663-@endif target-libiberty
664-
665-
666-
667-
668-
669 .PHONY: configure-target-gperf maybe-configure-target-gperf
670 maybe-configure-target-gperf:
671 @if gcc-bootstrap
672@@ -57654,7 +57195,6 @@
673 configure-target-libtermcap: stage_last
674 configure-target-winsup: stage_last
675 configure-target-libgloss: stage_last
676-configure-target-libiberty: stage_last
677 configure-target-gperf: stage_last
678 configure-target-examples: stage_last
679 configure-target-libffi: stage_last
680@@ -57683,7 +57223,6 @@
681 configure-target-libtermcap: maybe-all-gcc
682 configure-target-winsup: maybe-all-gcc
683 configure-target-libgloss: maybe-all-gcc
684-configure-target-libiberty: maybe-all-gcc
685 configure-target-gperf: maybe-all-gcc
686 configure-target-examples: maybe-all-gcc
687 configure-target-libffi: maybe-all-gcc
688@@ -58395,7 +57934,6 @@
689 configure-target-boehm-gc: maybe-all-target-libstdc++-v3
690 configure-target-fastjar: maybe-configure-target-zlib
691 all-target-fastjar: maybe-all-target-zlib
692-all-target-fastjar: maybe-all-target-libiberty
693 configure-target-libjava: maybe-configure-target-zlib
694 configure-target-libjava: maybe-configure-target-boehm-gc
695 configure-target-libjava: maybe-configure-target-qthreads
696@@ -58406,9 +57944,7 @@
697 all-target-libjava: maybe-all-target-qthreads
698 all-target-libjava: maybe-all-target-libffi
699 configure-target-libobjc: maybe-configure-target-boehm-gc
700-all-target-libobjc: maybe-all-target-libiberty
701 all-target-libobjc: maybe-all-target-boehm-gc
702-all-target-libstdc++-v3: maybe-all-target-libiberty
703 configure-target-libstdc++-v3: maybe-configure-target-libgomp
704
705 configure-stage1-target-libstdc++-v3: maybe-configure-stage1-target-libgomp
706@@ -58426,10 +57962,7 @@
707 all-stageprofile-target-libstdc++-v3: maybe-configure-stageprofile-target-libgomp
708 all-stagefeedback-target-libstdc++-v3: maybe-configure-stagefeedback-target-libgomp
709 all-target-libgloss: maybe-all-target-newlib
710-all-target-winsup: maybe-all-target-libiberty
711 all-target-winsup: maybe-all-target-libtermcap
712-configure-target-libiberty: maybe-all-binutils
713-configure-target-libiberty: maybe-all-ld
714 configure-target-newlib: maybe-all-binutils
715 configure-target-newlib: maybe-all-ld
716
717@@ -58464,7 +57997,6 @@
718 configure-target-libtermcap: maybe-all-target-libgcc
719 configure-target-winsup: maybe-all-target-libgcc
720 configure-target-libgloss: maybe-all-target-libgcc
721-configure-target-libiberty: maybe-all-target-libgcc
722 configure-target-gperf: maybe-all-target-libgcc
723 configure-target-examples: maybe-all-target-libgcc
724 configure-target-libffi: maybe-all-target-libgcc
725@@ -58495,7 +58027,6 @@
726 configure-target-winsup: maybe-all-target-newlib maybe-all-target-libgloss
727
728
729-
730 configure-target-gperf: maybe-all-target-newlib maybe-all-target-libgloss
731 configure-target-gperf: maybe-all-target-libstdc++-v3
732
733
734=== modified file 'config/ChangeLog'
735--- config/ChangeLog 2011-04-28 14:11:26 +0000
736+++ config/ChangeLog 2011-07-01 09:39:45 +0000
737@@ -1,3 +1,9 @@
738+2011-06-19 Jack Howarth <howarth@bromo.med.uc.edu>
739+
740+ PR target/49461
741+ * mh-x86-darwin: Add file and pass -no_pie on BOOT_LDFLAGS for
742+ darwin11.
743+
744 2011-04-28 Release Manager
745
746 * GCC 4.5.3 released.
747
748=== added file 'config/mh-x86-darwin'
749--- config/mh-x86-darwin 1970-01-01 00:00:00 +0000
750+++ config/mh-x86-darwin 2011-07-01 09:39:45 +0000
751@@ -0,0 +1,2 @@
752+# Ensure we don't try and use -pie, as it is incompatible with pch.
753+BOOT_LDFLAGS += `case ${host} in *-*-darwin[1][1-9]*) echo -Wl,-no_pie ;; esac;`
754
755=== modified file 'configure'
756--- configure 2011-01-25 15:49:54 +0000
757+++ configure 2011-07-01 09:39:45 +0000
758@@ -2912,9 +2912,8 @@
759
760 # these libraries are built for the target environment, and are built after
761 # the host libraries and the host tools (which may be a cross compiler)
762-#
763+# Note that libiberty is not a target library.
764 target_libraries="target-libgcc \
765- target-libiberty \
766 target-libgloss \
767 target-newlib \
768 target-libgomp \
769@@ -3269,14 +3268,14 @@
770 ;;
771 *-*-kaos*)
772 # Remove unsupported stuff on all kaOS configurations.
773- skipdirs="target-libiberty ${libgcj} target-libstdc++-v3 target-librx"
774+ skipdirs="${libgcj} target-libstdc++-v3 target-librx"
775 skipdirs="$skipdirs target-libobjc target-examples target-groff target-gperf"
776 skipdirs="$skipdirs zlib fastjar target-libjava target-boehm-gc target-zlib"
777 noconfigdirs="$noconfigdirs target-libgloss"
778 ;;
779 *-*-netbsd*)
780 # Skip some stuff on all NetBSD configurations.
781- noconfigdirs="$noconfigdirs target-newlib target-libiberty target-libgloss"
782+ noconfigdirs="$noconfigdirs target-newlib target-libgloss"
783
784 # Skip some stuff that's unsupported on some NetBSD configurations.
785 case "${target}" in
786@@ -3288,20 +3287,20 @@
787 esac
788 ;;
789 *-*-netware*)
790- noconfigdirs="$noconfigdirs target-newlib target-libiberty target-libgloss ${libgcj} target-libmudflap"
791+ noconfigdirs="$noconfigdirs target-newlib target-libgloss ${libgcj} target-libmudflap"
792 ;;
793 *-*-rtems*)
794 noconfigdirs="$noconfigdirs target-libgloss ${libgcj}"
795 ;;
796 # The tpf target doesn't support gdb yet.
797 *-*-tpf*)
798- noconfigdirs="$noconfigdirs target-newlib target-libgloss target-libiberty ${libgcj} target-libmudflap gdb tcl tk libgui itcl"
799+ noconfigdirs="$noconfigdirs target-newlib target-libgloss ${libgcj} target-libmudflap gdb tcl tk libgui itcl"
800 ;;
801 *-*-uclinux*)
802 noconfigdirs="$noconfigdirs target-newlib target-libgloss target-rda ${libgcj}"
803 ;;
804 *-*-vxworks*)
805- noconfigdirs="$noconfigdirs target-newlib target-libgloss target-libiberty target-libstdc++-v3 ${libgcj}"
806+ noconfigdirs="$noconfigdirs target-newlib target-libgloss target-libstdc++-v3 ${libgcj}"
807 ;;
808 alpha*-dec-osf*)
809 # ld works, but does not support shared libraries.
810@@ -3329,7 +3328,7 @@
811 sh*-*-pe|mips*-*-pe|*arm-wince-pe)
812 noconfigdirs="$noconfigdirs ${libgcj}"
813 noconfigdirs="$noconfigdirs target-examples"
814- noconfigdirs="$noconfigdirs target-libiberty texinfo send-pr"
815+ noconfigdirs="$noconfigdirs texinfo send-pr"
816 noconfigdirs="$noconfigdirs tcl tk itcl libgui sim"
817 noconfigdirs="$noconfigdirs expect dejagnu"
818 # the C++ libraries don't build on top of CE's C libraries
819@@ -3363,7 +3362,7 @@
820 libgloss_dir=arm
821 ;;
822 arm*-*-symbianelf*)
823- noconfigdirs="$noconfigdirs ${libgcj} target-libiberty"
824+ noconfigdirs="$noconfigdirs ${libgcj}"
825 libgloss_dir=arm
826 ;;
827 arm-*-pe*)
828@@ -3382,7 +3381,7 @@
829 noconfigdirs="$noconfigdirs ld target-libgloss ${libgcj}"
830 ;;
831 avr-*-*)
832- noconfigdirs="$noconfigdirs target-libiberty target-libstdc++-v3 ${libgcj} target-libssp"
833+ noconfigdirs="$noconfigdirs target-libstdc++-v3 ${libgcj} target-libssp"
834 ;;
835 bfin-*-*)
836 unsupported_languages="$unsupported_languages java"
837@@ -3561,7 +3560,7 @@
838 noconfigdirs="$noconfigdirs ${libgcj}"
839 ;;
840 m68hc11-*-*|m6811-*-*|m68hc12-*-*|m6812-*-*)
841- noconfigdirs="$noconfigdirs target-libiberty target-libstdc++-v3 ${libgcj}"
842+ noconfigdirs="$noconfigdirs target-libstdc++-v3 ${libgcj}"
843 libgloss_dir=m68hc11
844 ;;
845 m68k-*-elf*)
846@@ -3632,7 +3631,6 @@
847 noconfigdirs="$noconfigdirs gprof ${libgcj}"
848 ;;
849 mips*-sde-elf*)
850- skipdirs="$skipdirs target-libiberty"
851 noconfigdirs="$noconfigdirs ${libgcj}"
852 if test x$with_newlib = xyes; then
853 noconfigdirs="$noconfigdirs gprof"
854@@ -3728,7 +3726,7 @@
855 noconfigdirs="$noconfigdirs ${libgcj}"
856 ;;
857 ip2k-*-*)
858- noconfigdirs="$noconfigdirs target-libiberty target-libstdc++-v3 ${libgcj}"
859+ noconfigdirs="$noconfigdirs target-libstdc++-v3 ${libgcj}"
860 ;;
861 *-*-linux* | *-*-gnu* | *-*-k*bsd*-gnu | *-*-kopensolaris*-gnu)
862 noconfigdirs="$noconfigdirs target-newlib target-libgloss"
863@@ -3917,6 +3915,9 @@
864 tentative_cc="/usr/cygnus/progressive/bin/gcc"
865 host_makefile_frag="config/mh-lynxrs6k"
866 ;;
867+ i[3456789]86-*-darwin* | x86_64-*-darwin*)
868+ host_makefile_frag="config/mh-x86-darwin"
869+ ;;
870 powerpc-*-darwin*)
871 host_makefile_frag="config/mh-ppc-darwin"
872 ;;
873@@ -6992,27 +6993,6 @@
874 fi
875 done
876
877-# Sometimes the tools are distributed with libiberty but with no other
878-# libraries. In that case, we don't want to build target-libiberty.
879-# Don't let libgcc imply libiberty either.
880-if test -n "${target_configdirs}" ; then
881- libgcc=
882- others=
883- for i in `echo ${target_configdirs} | sed -e s/target-//g` ; do
884- if test "$i" = "libgcc"; then
885- libgcc=target-libgcc
886- elif test "$i" != "libiberty" ; then
887- if test -r $srcdir/$i/configure ; then
888- others=yes;
889- break;
890- fi
891- fi
892- done
893- if test -z "${others}" ; then
894- target_configdirs=$libgcc
895- fi
896-fi
897-
898 # Quietly strip out all directories which aren't configurable in this tree.
899 # This relies on all configurable subdirectories being autoconfiscated, which
900 # is now the case.
901
902=== modified file 'configure.ac'
903--- configure.ac 2011-01-25 15:49:54 +0000
904+++ configure.ac 2011-07-01 09:39:45 +0000
905@@ -185,9 +185,8 @@
906
907 # these libraries are built for the target environment, and are built after
908 # the host libraries and the host tools (which may be a cross compiler)
909-#
910+# Note that libiberty is not a target library.
911 target_libraries="target-libgcc \
912- target-libiberty \
913 target-libgloss \
914 target-newlib \
915 target-libgomp \
916@@ -506,14 +505,14 @@
917 ;;
918 *-*-kaos*)
919 # Remove unsupported stuff on all kaOS configurations.
920- skipdirs="target-libiberty ${libgcj} target-libstdc++-v3 target-librx"
921+ skipdirs="${libgcj} target-libstdc++-v3 target-librx"
922 skipdirs="$skipdirs target-libobjc target-examples target-groff target-gperf"
923 skipdirs="$skipdirs zlib fastjar target-libjava target-boehm-gc target-zlib"
924 noconfigdirs="$noconfigdirs target-libgloss"
925 ;;
926 *-*-netbsd*)
927 # Skip some stuff on all NetBSD configurations.
928- noconfigdirs="$noconfigdirs target-newlib target-libiberty target-libgloss"
929+ noconfigdirs="$noconfigdirs target-newlib target-libgloss"
930
931 # Skip some stuff that's unsupported on some NetBSD configurations.
932 case "${target}" in
933@@ -525,20 +524,20 @@
934 esac
935 ;;
936 *-*-netware*)
937- noconfigdirs="$noconfigdirs target-newlib target-libiberty target-libgloss ${libgcj} target-libmudflap"
938+ noconfigdirs="$noconfigdirs target-newlib target-libgloss ${libgcj} target-libmudflap"
939 ;;
940 *-*-rtems*)
941 noconfigdirs="$noconfigdirs target-libgloss ${libgcj}"
942 ;;
943 # The tpf target doesn't support gdb yet.
944 *-*-tpf*)
945- noconfigdirs="$noconfigdirs target-newlib target-libgloss target-libiberty ${libgcj} target-libmudflap gdb tcl tk libgui itcl"
946+ noconfigdirs="$noconfigdirs target-newlib target-libgloss ${libgcj} target-libmudflap gdb tcl tk libgui itcl"
947 ;;
948 *-*-uclinux*)
949 noconfigdirs="$noconfigdirs target-newlib target-libgloss target-rda ${libgcj}"
950 ;;
951 *-*-vxworks*)
952- noconfigdirs="$noconfigdirs target-newlib target-libgloss target-libiberty target-libstdc++-v3 ${libgcj}"
953+ noconfigdirs="$noconfigdirs target-newlib target-libgloss target-libstdc++-v3 ${libgcj}"
954 ;;
955 alpha*-dec-osf*)
956 # ld works, but does not support shared libraries.
957@@ -566,7 +565,7 @@
958 sh*-*-pe|mips*-*-pe|*arm-wince-pe)
959 noconfigdirs="$noconfigdirs ${libgcj}"
960 noconfigdirs="$noconfigdirs target-examples"
961- noconfigdirs="$noconfigdirs target-libiberty texinfo send-pr"
962+ noconfigdirs="$noconfigdirs texinfo send-pr"
963 noconfigdirs="$noconfigdirs tcl tk itcl libgui sim"
964 noconfigdirs="$noconfigdirs expect dejagnu"
965 # the C++ libraries don't build on top of CE's C libraries
966@@ -600,7 +599,7 @@
967 libgloss_dir=arm
968 ;;
969 arm*-*-symbianelf*)
970- noconfigdirs="$noconfigdirs ${libgcj} target-libiberty"
971+ noconfigdirs="$noconfigdirs ${libgcj}"
972 libgloss_dir=arm
973 ;;
974 arm-*-pe*)
975@@ -619,7 +618,7 @@
976 noconfigdirs="$noconfigdirs ld target-libgloss ${libgcj}"
977 ;;
978 avr-*-*)
979- noconfigdirs="$noconfigdirs target-libiberty target-libstdc++-v3 ${libgcj} target-libssp"
980+ noconfigdirs="$noconfigdirs target-libstdc++-v3 ${libgcj} target-libssp"
981 ;;
982 bfin-*-*)
983 unsupported_languages="$unsupported_languages java"
984@@ -798,7 +797,7 @@
985 noconfigdirs="$noconfigdirs ${libgcj}"
986 ;;
987 m68hc11-*-*|m6811-*-*|m68hc12-*-*|m6812-*-*)
988- noconfigdirs="$noconfigdirs target-libiberty target-libstdc++-v3 ${libgcj}"
989+ noconfigdirs="$noconfigdirs target-libstdc++-v3 ${libgcj}"
990 libgloss_dir=m68hc11
991 ;;
992 m68k-*-elf*)
993@@ -869,7 +868,6 @@
994 noconfigdirs="$noconfigdirs gprof ${libgcj}"
995 ;;
996 mips*-sde-elf*)
997- skipdirs="$skipdirs target-libiberty"
998 noconfigdirs="$noconfigdirs ${libgcj}"
999 if test x$with_newlib = xyes; then
1000 noconfigdirs="$noconfigdirs gprof"
1001@@ -965,7 +963,7 @@
1002 noconfigdirs="$noconfigdirs ${libgcj}"
1003 ;;
1004 ip2k-*-*)
1005- noconfigdirs="$noconfigdirs target-libiberty target-libstdc++-v3 ${libgcj}"
1006+ noconfigdirs="$noconfigdirs target-libstdc++-v3 ${libgcj}"
1007 ;;
1008 *-*-linux* | *-*-gnu* | *-*-k*bsd*-gnu | *-*-kopensolaris*-gnu)
1009 noconfigdirs="$noconfigdirs target-newlib target-libgloss"
1010@@ -1135,6 +1133,9 @@
1011 tentative_cc="/usr/cygnus/progressive/bin/gcc"
1012 host_makefile_frag="config/mh-lynxrs6k"
1013 ;;
1014+ i[[3456789]]86-*-darwin* | x86_64-*-darwin*)
1015+ host_makefile_frag="config/mh-x86-darwin"
1016+ ;;
1017 powerpc-*-darwin*)
1018 host_makefile_frag="config/mh-ppc-darwin"
1019 ;;
1020@@ -2105,27 +2106,6 @@
1021 fi
1022 done
1023
1024-# Sometimes the tools are distributed with libiberty but with no other
1025-# libraries. In that case, we don't want to build target-libiberty.
1026-# Don't let libgcc imply libiberty either.
1027-if test -n "${target_configdirs}" ; then
1028- libgcc=
1029- others=
1030- for i in `echo ${target_configdirs} | sed -e s/target-//g` ; do
1031- if test "$i" = "libgcc"; then
1032- libgcc=target-libgcc
1033- elif test "$i" != "libiberty" ; then
1034- if test -r $srcdir/$i/configure ; then
1035- others=yes;
1036- break;
1037- fi
1038- fi
1039- done
1040- if test -z "${others}" ; then
1041- target_configdirs=$libgcc
1042- fi
1043-fi
1044-
1045 # Quietly strip out all directories which aren't configurable in this tree.
1046 # This relies on all configurable subdirectories being autoconfiscated, which
1047 # is now the case.
1048
1049=== modified file 'gcc/ChangeLog'
1050--- gcc/ChangeLog 2011-05-25 13:26:42 +0000
1051+++ gcc/ChangeLog 2011-07-01 09:39:45 +0000
1052@@ -1,3 +1,110 @@
1053+2011-06-28 Eric Botcazou <ebotcazou@adacore.com>
1054+
1055+ * tree-ssa-dom.c (initialize_hash_element): Fix oversight.
1056+
1057+2011-06-17 Hans-Peter Nilsson <hp@axis.com>
1058+
1059+ Backport from mainline
1060+ 2011-06-17 Hans-Peter Nilsson <hp@axis.com>
1061+
1062+ PR rtl-optimization/48542
1063+ * reload.c (find_equiv_reg): Stop looking when finding a
1064+ setjmp-type call.
1065+ * reload1.c (reload_as_needed): Invalidate all reload
1066+ registers when crossing a setjmp-type call.
1067+
1068+2011-06-16 Kaz Kojima <kkojima@gcc.gnu.org>
1069+
1070+ Backport form main line
1071+ 2011-06-09 Kaz Kojima <kkojima@gcc.gnu.org>
1072+
1073+ PR target/49307
1074+ * config/sh/sh.md (UNSPEC_CHKADD): New.
1075+ (chk_guard_add): New define_insn_and_split.
1076+ (symGOT_load): Use chk_guard_add instead of blockage.
1077+
1078+2011-06-11 Uros Bizjak <ubizjak@gmail.com>
1079+
1080+ * config/i386/sse.md (vec_dupv4sf): Correct mode of forced register.
1081+ (*vec_dupv2df): Rename from vec_dupv2df.
1082+ (vec_dupv2df): New expander.
1083+
1084+2011-06-09 Eric Botcazou <ebotcazou@adacore.com>
1085+
1086+ * config/sparc/sparc.md (return_internal): Adjust 'length' attribute.
1087+
1088+2011-06-08 Kaz Kojima <kkojima@gcc.gnu.org>
1089+
1090+ Backport from mainline
1091+ 2011-06-01 Kaz Kojima <kkojima@gcc.gnu.org>
1092+
1093+ PR target/49238
1094+ * config/sh/sh.c (expand_cbranchdi4): Use a scratch register if
1095+ needed when original operands are used for msw_skip comparison.
1096+
1097+2011-06-05 Eric Botcazou <ebotcazou@adacore.com>
1098+
1099+ * config/sparc/sparc.c (output_return): Fix thinko in the output of an
1100+ EH return when delayed branches are disabled.
1101+
1102+2011-06-05 Kaz Kojima <kkojima@gcc.gnu.org>
1103+
1104+ Backport from mainline
1105+ 2011-05-30 Kaz Kojima <kkojima@gcc.gnu.org>
1106+
1107+ PR target/49186
1108+ * config/sh/sh.c (expand_cbranchdi4): Set msw_skip when the high
1109+ part of the second operand is 0.
1110+
1111+2011-06-04 Ira Rosen <ira.rosen@linaro.org>
1112+
1113+ PR tree-optimization/49038
1114+ * tree-vect-loop-manip.c (vect_generate_tmps_on_preheader):
1115+ Ensure at least one epilogue iteration if required by data
1116+ accesses with gaps.
1117+ * tree-vectorizer.h (struct _loop_vec_info): Add new field
1118+ to mark loops that require peeling for gaps.
1119+ * tree-vect-loop.c (new_loop_vec_info): Initialize new field.
1120+ (vect_estimate_min_profitable_iters): Take peeling for gaps into
1121+ account.
1122+ (vect_transform_loop): Generate epilogue if required by data
1123+ access with gaps.
1124+ * tree-vect-data-refs.c (vect_analyze_group_access): Mark the
1125+ loop as requiring an epilogue if there are gaps in the end of
1126+ the strided group.
1127+
1128+2011-05-29 Richard Sandiford <rdsandiford@googlemail.com>
1129+
1130+ PR target/43700
1131+ * config/mips/mips.c (mips_cfun_call_saved_reg_p): Handle global
1132+ registers.
1133+
1134+2011-05-29 Richard Sandiford <rdsandiford@googlemail.com>
1135+
1136+ PR target/43995
1137+ * config/mips/mips.c (mips_pic_call_symbol_from_set): Add a
1138+ recurse_p argument. Only follow register copies if it is set,
1139+ and prevent mips_find_pic_call_symbol from recursing.
1140+ (mips_find_pic_call_symbol): Add a recurse_p argument.
1141+ Pass it to mips_pic_call_symbol_from_set.
1142+ (mips_annotate_pic_calls): Update accordingly.
1143+
1144+2011-05-26 Eric Botcazou <ebotcazou@adacore.com>
1145+
1146+ * config/sparc/sparc-protos.h (sparc_optimization_options): Declare.
1147+ * config/sparc/sparc.h (OPTIMIZATION_OPTIONS): Define.
1148+ * config/sparc/sparc.c (sparc_optimization_options): New function.
1149+ Set flag_ira_share_save_slots to 0.
1150+
1151+ Backport from mainline
1152+ 2011-01-21 Jeff Law <law@redhat.com>
1153+
1154+ PR rtl-optimization/41619
1155+ * caller-save.c (setup_save_areas): Break out code to determine
1156+ which hard regs are live across calls by examining the reload chains
1157+ so that it is always used.
1158+ Eliminate code which checked REG_N_CALLS_CROSSED.
1159+
1160 2011-05-25 Uros Bizjak <ubizjak@gmail.com>
1161
1162 PR target/49133
1163
1164=== modified file 'gcc/DATESTAMP'
1165--- gcc/DATESTAMP 2011-05-26 00:18:28 +0000
1166+++ gcc/DATESTAMP 2011-07-01 09:39:45 +0000
1167@@ -1,1 +1,1 @@
1168-20110526
1169+20110630
1170
1171=== modified file 'gcc/caller-save.c'
1172--- gcc/caller-save.c 2011-03-16 20:19:14 +0000
1173+++ gcc/caller-save.c 2011-07-01 09:39:45 +0000
1174@@ -439,101 +439,93 @@
1175 void
1176 setup_save_areas (void)
1177 {
1178- int i, j, k;
1179- unsigned int r;
1180+ int i, j, k, freq;
1181 HARD_REG_SET hard_regs_used;
1182-
1183- /* Allocate space in the save area for the largest multi-register
1184- pseudos first, then work backwards to single register
1185- pseudos. */
1186-
1187- /* Find and record all call-used hard-registers in this function. */
1188+ struct saved_hard_reg *saved_reg;
1189+ rtx insn;
1190+ struct insn_chain *chain, *next;
1191+ unsigned int regno;
1192+ HARD_REG_SET hard_regs_to_save, used_regs, this_insn_sets;
1193+ reg_set_iterator rsi;
1194+
1195 CLEAR_HARD_REG_SET (hard_regs_used);
1196- for (i = FIRST_PSEUDO_REGISTER; i < max_regno; i++)
1197- if (reg_renumber[i] >= 0 && REG_N_CALLS_CROSSED (i) > 0)
1198- {
1199- unsigned int regno = reg_renumber[i];
1200- unsigned int endregno
1201- = end_hard_regno (GET_MODE (regno_reg_rtx[i]), regno);
1202- for (r = regno; r < endregno; r++)
1203- if (call_used_regs[r])
1204- SET_HARD_REG_BIT (hard_regs_used, r);
1205- }
1206-
1207+
1208+ /* Find every CALL_INSN and record which hard regs are live across the
1209+ call into HARD_REG_MAP and HARD_REGS_USED. */
1210+ initiate_saved_hard_regs ();
1211+ /* Create hard reg saved regs. */
1212+ for (chain = reload_insn_chain; chain != 0; chain = next)
1213+ {
1214+ insn = chain->insn;
1215+ next = chain->next;
1216+ if (!CALL_P (insn)
1217+ || find_reg_note (insn, REG_NORETURN, NULL))
1218+ continue;
1219+ freq = REG_FREQ_FROM_BB (BLOCK_FOR_INSN (insn));
1220+ REG_SET_TO_HARD_REG_SET (hard_regs_to_save,
1221+ &chain->live_throughout);
1222+ COPY_HARD_REG_SET (used_regs, call_used_reg_set);
1223+
1224+ /* Record all registers set in this call insn. These don't
1225+ need to be saved. N.B. the call insn might set a subreg
1226+ of a multi-hard-reg pseudo; then the pseudo is considered
1227+ live during the call, but the subreg that is set
1228+ isn't. */
1229+ CLEAR_HARD_REG_SET (this_insn_sets);
1230+ note_stores (PATTERN (insn), mark_set_regs, &this_insn_sets);
1231+ /* Sibcalls are considered to set the return value. */
1232+ if (SIBLING_CALL_P (insn) && crtl->return_rtx)
1233+ mark_set_regs (crtl->return_rtx, NULL_RTX, &this_insn_sets);
1234+
1235+ AND_COMPL_HARD_REG_SET (used_regs, call_fixed_reg_set);
1236+ AND_COMPL_HARD_REG_SET (used_regs, this_insn_sets);
1237+ AND_HARD_REG_SET (hard_regs_to_save, used_regs);
1238+ for (regno = 0; regno < FIRST_PSEUDO_REGISTER; regno++)
1239+ if (TEST_HARD_REG_BIT (hard_regs_to_save, regno))
1240+ {
1241+ if (hard_reg_map[regno] != NULL)
1242+ hard_reg_map[regno]->call_freq += freq;
1243+ else
1244+ saved_reg = new_saved_hard_reg (regno, freq);
1245+ SET_HARD_REG_BIT (hard_regs_used, regno);
1246+ }
1247+ /* Look through all live pseudos, mark their hard registers. */
1248+ EXECUTE_IF_SET_IN_REG_SET
1249+ (&chain->live_throughout, FIRST_PSEUDO_REGISTER, regno, rsi)
1250+ {
1251+ int r = reg_renumber[regno];
1252+ int bound;
1253+
1254+ if (r < 0)
1255+ continue;
1256+
1257+ bound = r + hard_regno_nregs[r][PSEUDO_REGNO_MODE (regno)];
1258+ for (; r < bound; r++)
1259+ if (TEST_HARD_REG_BIT (used_regs, r))
1260+ {
1261+ if (hard_reg_map[r] != NULL)
1262+ hard_reg_map[r]->call_freq += freq;
1263+ else
1264+ saved_reg = new_saved_hard_reg (r, freq);
1265+ SET_HARD_REG_BIT (hard_regs_to_save, r);
1266+ SET_HARD_REG_BIT (hard_regs_used, r);
1267+ }
1268+ }
1269+ }
1270+
1271+ /* If requested, figure out which hard regs can share save slots. */
1272 if (optimize && flag_ira_share_save_slots)
1273 {
1274- rtx insn, slot;
1275- struct insn_chain *chain, *next;
1276+ rtx slot;
1277 char *saved_reg_conflicts;
1278- unsigned int regno;
1279- int next_k, freq;
1280- struct saved_hard_reg *saved_reg, *saved_reg2, *saved_reg3;
1281+ int next_k;
1282+ struct saved_hard_reg *saved_reg2, *saved_reg3;
1283 int call_saved_regs_num;
1284 struct saved_hard_reg *call_saved_regs[FIRST_PSEUDO_REGISTER];
1285- HARD_REG_SET hard_regs_to_save, used_regs, this_insn_sets;
1286- reg_set_iterator rsi;
1287 int best_slot_num;
1288 int prev_save_slots_num;
1289 rtx prev_save_slots[FIRST_PSEUDO_REGISTER];
1290
1291- initiate_saved_hard_regs ();
1292- /* Create hard reg saved regs. */
1293- for (chain = reload_insn_chain; chain != 0; chain = next)
1294- {
1295- insn = chain->insn;
1296- next = chain->next;
1297- if (!CALL_P (insn)
1298- || find_reg_note (insn, REG_NORETURN, NULL))
1299- continue;
1300- freq = REG_FREQ_FROM_BB (BLOCK_FOR_INSN (insn));
1301- REG_SET_TO_HARD_REG_SET (hard_regs_to_save,
1302- &chain->live_throughout);
1303- COPY_HARD_REG_SET (used_regs, call_used_reg_set);
1304-
1305- /* Record all registers set in this call insn. These don't
1306- need to be saved. N.B. the call insn might set a subreg
1307- of a multi-hard-reg pseudo; then the pseudo is considered
1308- live during the call, but the subreg that is set
1309- isn't. */
1310- CLEAR_HARD_REG_SET (this_insn_sets);
1311- note_stores (PATTERN (insn), mark_set_regs, &this_insn_sets);
1312- /* Sibcalls are considered to set the return value. */
1313- if (SIBLING_CALL_P (insn) && crtl->return_rtx)
1314- mark_set_regs (crtl->return_rtx, NULL_RTX, &this_insn_sets);
1315-
1316- AND_COMPL_HARD_REG_SET (used_regs, call_fixed_reg_set);
1317- AND_COMPL_HARD_REG_SET (used_regs, this_insn_sets);
1318- AND_HARD_REG_SET (hard_regs_to_save, used_regs);
1319- for (regno = 0; regno < FIRST_PSEUDO_REGISTER; regno++)
1320- if (TEST_HARD_REG_BIT (hard_regs_to_save, regno))
1321- {
1322- if (hard_reg_map[regno] != NULL)
1323- hard_reg_map[regno]->call_freq += freq;
1324- else
1325- saved_reg = new_saved_hard_reg (regno, freq);
1326- }
1327- /* Look through all live pseudos, mark their hard registers. */
1328- EXECUTE_IF_SET_IN_REG_SET
1329- (&chain->live_throughout, FIRST_PSEUDO_REGISTER, regno, rsi)
1330- {
1331- int r = reg_renumber[regno];
1332- int bound;
1333-
1334- if (r < 0)
1335- continue;
1336-
1337- bound = r + hard_regno_nregs[r][PSEUDO_REGNO_MODE (regno)];
1338- for (; r < bound; r++)
1339- if (TEST_HARD_REG_BIT (used_regs, r))
1340- {
1341- if (hard_reg_map[r] != NULL)
1342- hard_reg_map[r]->call_freq += freq;
1343- else
1344- saved_reg = new_saved_hard_reg (r, freq);
1345- SET_HARD_REG_BIT (hard_regs_to_save, r);
1346- }
1347- }
1348- }
1349 /* Find saved hard register conflicts. */
1350 saved_reg_conflicts = (char *) xmalloc (saved_regs_num * saved_regs_num);
1351 memset (saved_reg_conflicts, 0, saved_regs_num * saved_regs_num);
1352@@ -691,8 +683,10 @@
1353 }
1354 else
1355 {
1356- /* Now run through all the call-used hard-registers and allocate
1357- space for them in the caller-save area. Try to allocate space
1358+ /* We are not sharing slots.
1359+
1360+ Run through all the call-used hard-registers and allocate
1361+ space for each in the caller-save area. Try to allocate space
1362 in a manner which allows multi-register saves/restores to be done. */
1363
1364 for (i = 0; i < FIRST_PSEUDO_REGISTER; i++)
1365
1366=== modified file 'gcc/config/i386/sse.md'
1367--- gcc/config/i386/sse.md 2011-05-25 13:26:42 +0000
1368+++ gcc/config/i386/sse.md 2011-07-01 09:39:45 +0000
1369@@ -3904,7 +3904,7 @@
1370 "TARGET_SSE"
1371 {
1372 if (!TARGET_AVX)
1373- operands[1] = force_reg (V4SFmode, operands[1]);
1374+ operands[1] = force_reg (SFmode, operands[1]);
1375 })
1376
1377 (define_insn "*vec_dupv4sf_avx"
1378@@ -5135,6 +5135,16 @@
1379 (set_attr "length_immediate" "*,*,*,1,*,*")
1380 (set_attr "mode" "DF,V1DF,V1DF,V2DF,V1DF,V1DF")])
1381
1382+(define_expand "vec_dupv2df"
1383+ [(set (match_operand:V2DF 0 "register_operand" "")
1384+ (vec_duplicate:V2DF
1385+ (match_operand:DF 1 "nonimmediate_operand" "")))]
1386+ "TARGET_SSE2"
1387+{
1388+ if (!TARGET_SSE3)
1389+ operands[1] = force_reg (DFmode, operands[1]);
1390+})
1391+
1392 (define_insn "*vec_dupv2df_sse3"
1393 [(set (match_operand:V2DF 0 "register_operand" "=x")
1394 (vec_duplicate:V2DF
1395@@ -5145,7 +5155,7 @@
1396 (set_attr "prefix" "maybe_vex")
1397 (set_attr "mode" "DF")])
1398
1399-(define_insn "vec_dupv2df"
1400+(define_insn "*vec_dupv2df"
1401 [(set (match_operand:V2DF 0 "register_operand" "=x")
1402 (vec_duplicate:V2DF
1403 (match_operand:DF 1 "register_operand" "0")))]
1404
1405=== modified file 'gcc/config/mips/mips.c'
1406--- gcc/config/mips/mips.c 2011-02-08 10:51:58 +0000
1407+++ gcc/config/mips/mips.c 2011-07-01 09:39:45 +0000
1408@@ -1162,7 +1162,7 @@
1409 }
1410 };
1411
1412
1413-static rtx mips_find_pic_call_symbol (rtx, rtx);
1414+static rtx mips_find_pic_call_symbol (rtx, rtx, bool);
1415
1416
1417 /* This hash table keeps track of implicit "mips16" and "nomips16" attributes
1418 for -mflip_mips16. It maps decl names onto a boolean mode setting. */
1419@@ -9007,6 +9007,11 @@
1420 static bool
1421 mips_cfun_call_saved_reg_p (unsigned int regno)
1422 {
1423+ /* If the user makes an ordinarily-call-saved register global,
1424+ that register is no longer call-saved. */
1425+ if (global_regs[regno])
1426+ return false;
1427+
1428 /* Interrupt handlers need to save extra registers. */
1429 if (cfun->machine->interrupt_handler_p
1430 && mips_interrupt_extra_call_saved_reg_p (regno))
1431@@ -14041,12 +14046,16 @@
1432 }
1433
1434 /* REG is set in DEF. See if the definition is one of the ways we load a
1435- register with a symbol address for a mips_use_pic_fn_addr_reg_p call. If
1436- it is return the symbol reference of the function, otherwise return
1437- NULL_RTX. */
1438+ register with a symbol address for a mips_use_pic_fn_addr_reg_p call.
1439+ If it is, return the symbol reference of the function, otherwise return
1440+ NULL_RTX.
1441+
1442+ If RECURSE_P is true, use mips_find_pic_call_symbol to interpret
1443+ the values of source registers, otherwise treat such registers as
1444+ having an unknown value. */
1445
1446 static rtx
1447-mips_pic_call_symbol_from_set (df_ref def, rtx reg)
1448+mips_pic_call_symbol_from_set (df_ref def, rtx reg, bool recurse_p)
1449 {
1450 rtx def_insn, set;
1451
1452@@ -14073,21 +14082,39 @@
1453 return symbol;
1454 }
1455
1456- /* Follow simple register copies. */
1457- if (REG_P (src))
1458- return mips_find_pic_call_symbol (def_insn, src);
1459+ /* Follow at most one simple register copy. Such copies are
1460+ interesting in cases like:
1461+
1462+ for (...)
1463+ {
1464+ locally_binding_fn (...);
1465+ }
1466+
1467+ and:
1468+
1469+ locally_binding_fn (...);
1470+ ...
1471+ locally_binding_fn (...);
1472+
1473+ where the load of locally_binding_fn can legitimately be
1474+ hoisted or shared. However, we do not expect to see complex
1475+ chains of copies, so a full worklist solution to the problem
1476+ would probably be overkill. */
1477+ if (recurse_p && REG_P (src))
1478+ return mips_find_pic_call_symbol (def_insn, src, false);
1479 }
1480
1481 return NULL_RTX;
1482 }
1483
1484-/* Find the definition of the use of REG in INSN. See if the definition is
1485- one of the ways we load a register with a symbol address for a
1486- mips_use_pic_fn_addr_reg_p call. If it is return the symbol reference of
1487- the function, otherwise return NULL_RTX. */
1488+/* Find the definition of the use of REG in INSN. See if the definition
1489+ is one of the ways we load a register with a symbol address for a
1490+ mips_use_pic_fn_addr_reg_p call. If it is return the symbol reference
1491+ of the function, otherwise return NULL_RTX. RECURSE_P is as for
1492+ mips_pic_call_symbol_from_set. */
1493
1494 static rtx
1495-mips_find_pic_call_symbol (rtx insn, rtx reg)
1496+mips_find_pic_call_symbol (rtx insn, rtx reg, bool recurse_p)
1497 {
1498 df_ref use;
1499 struct df_link *defs;
1500@@ -14099,7 +14126,7 @@
1501 defs = DF_REF_CHAIN (use);
1502 if (!defs)
1503 return NULL_RTX;
1504- symbol = mips_pic_call_symbol_from_set (defs->ref, reg);
1505+ symbol = mips_pic_call_symbol_from_set (defs->ref, reg, recurse_p);
1506 if (!symbol)
1507 return NULL_RTX;
1508
1509@@ -14108,7 +14135,7 @@
1510 {
1511 rtx other;
1512
1513- other = mips_pic_call_symbol_from_set (defs->ref, reg);
1514+ other = mips_pic_call_symbol_from_set (defs->ref, reg, recurse_p);
1515 if (!rtx_equal_p (symbol, other))
1516 return NULL_RTX;
1517 }
1518@@ -14179,7 +14206,7 @@
1519 if (!REG_P (reg))
1520 continue;
1521
1522- symbol = mips_find_pic_call_symbol (insn, reg);
1523+ symbol = mips_find_pic_call_symbol (insn, reg, true);
1524 if (symbol)
1525 {
1526 mips_annotate_pic_call_expr (call, symbol);
1527
1528=== modified file 'gcc/config/sh/sh.c'
1529--- gcc/config/sh/sh.c 2011-02-08 10:51:58 +0000
1530+++ gcc/config/sh/sh.c 2011-07-01 09:39:45 +0000
1531@@ -1949,7 +1949,10 @@
1532 else if (op2h != CONST0_RTX (SImode))
1533 msw_taken = LTU;
1534 else
1535- break;
1536+ {
1537+ msw_skip = swap_condition (LTU);
1538+ break;
1539+ }
1540 msw_skip = swap_condition (msw_taken);
1541 }
1542 break;
1543@@ -2002,6 +2005,13 @@
1544 {
1545 operands[1] = op1h;
1546 operands[2] = op2h;
1547+ if (reload_completed
1548+ && ! arith_reg_or_0_operand (op2h, SImode)
1549+ && (true_regnum (op1h) || (comparison != EQ && comparison != NE)))
1550+ {
1551+ emit_move_insn (scratch, operands[2]);
1552+ operands[2] = scratch;
1553+ }
1554 }
1555
1556 operands[3] = skip_label = gen_label_rtx ();
1557
1558=== modified file 'gcc/config/sh/sh.md'
1559--- gcc/config/sh/sh.md 2009-11-21 22:51:07 +0000
1560+++ gcc/config/sh/sh.md 2011-07-01 09:39:45 +0000
1561@@ -149,6 +149,7 @@
1562 (UNSPEC_DIV_INV_TABLE 37)
1563 (UNSPEC_ASHIFTRT 35)
1564 (UNSPEC_THUNK 36)
1565+ (UNSPEC_CHKADD 38)
1566 (UNSPEC_SP_SET 40)
1567 (UNSPEC_SP_TEST 41)
1568 (UNSPEC_MOVUA 42)
1569@@ -8438,6 +8439,22 @@
1570 i++;
1571 }")
1572
1573+;; op0 = op1 + r12 but hide it before reload completed. See the comment
1574+;; in symGOT_load expand.
1575+
1576+(define_insn_and_split "chk_guard_add"
1577+ [(set (match_operand:SI 0 "register_operand" "=&r")
1578+ (unspec:SI [(match_operand:SI 1 "register_operand" "r")
1579+ (reg:SI PIC_REG)]
1580+ UNSPEC_CHKADD))]
1581+ "TARGET_SH1"
1582+ "#"
1583+ "TARGET_SH1 && reload_completed"
1584+ [(set (match_dup 0) (reg:SI PIC_REG))
1585+ (set (match_dup 0) (plus:SI (match_dup 0) (match_dup 1)))]
1586+ ""
1587+ [(set_attr "type" "arith")])
1588+
1589 (define_expand "sym_label2reg"
1590 [(set (match_operand:SI 0 "" "")
1591 (const:SI (unspec:SI [(match_operand:SI 1 "" "")
1592@@ -8480,13 +8497,9 @@
1593 else
1594 emit_move_insn (operands[2], operands[1]);
1595
1596- emit_move_insn (operands[3], gen_rtx_PLUS (Pmode,
1597- operands[2],
1598- gen_rtx_REG (Pmode, PIC_REG)));
1599-
1600 /* When stack protector inserts codes after the result is set to
1601- R0, @(rX, r12) will cause a spill failure for R0. Don't schedule
1602- insns to avoid combining (set A (plus rX r12)) and (set op0 (mem A))
1603+ R0, @(rX, r12) will cause a spill failure for R0. Use a unspec
1604+ insn to avoid combining (set A (plus rX r12)) and (set op0 (mem A))
1605 when rX is a GOT address for the guard symbol. Ugly but doesn't
1606 matter because this is a rare situation. */
1607 if (!TARGET_SHMEDIA
1608@@ -8496,7 +8509,10 @@
1609 && GET_CODE (XVECEXP (XEXP (operands[1], 0), 0, 0)) == SYMBOL_REF
1610 && strcmp (XSTR (XVECEXP (XEXP (operands[1], 0), 0, 0), 0),
1611 \"__stack_chk_guard\") == 0)
1612- emit_insn (gen_blockage ());
1613+ emit_insn (gen_chk_guard_add (operands[3], operands[2]));
1614+ else
1615+ emit_move_insn (operands[3], gen_rtx_PLUS (Pmode, operands[2],
1616+ gen_rtx_REG (Pmode, PIC_REG)));
1617
1618 /* N.B. This is not constant for a GOTPLT relocation. */
1619 mem = gen_rtx_MEM (Pmode, operands[3]);
1620
1621=== modified file 'gcc/config/sparc/sparc-protos.h'
1622--- gcc/config/sparc/sparc-protos.h 2010-04-02 18:54:46 +0000
1623+++ gcc/config/sparc/sparc-protos.h 2011-07-01 09:39:45 +0000
1624@@ -48,6 +48,7 @@
1625 extern int check_pic (int);
1626 extern int short_branch (int, int);
1627 extern void sparc_profile_hook (int);
1628+extern void sparc_optimization_options (int, int);
1629 extern void sparc_override_options (void);
1630 extern void sparc_output_scratch_registers (FILE *);
1631
1632
1633=== modified file 'gcc/config/sparc/sparc.c'
1634--- gcc/config/sparc/sparc.c 2011-05-21 22:04:35 +0000
1635+++ gcc/config/sparc/sparc.c 2011-07-01 09:39:45 +0000
1636@@ -627,6 +627,17 @@
1637 return true;
1638 }
1639
1640+/* Specify default optimizations. */
1641+
1642+void
1643+sparc_optimization_options (int l ATTRIBUTE_UNUSED, int s ATTRIBUTE_UNUSED)
1644+{
1645+ /* Disable save slot sharing for call-clobbered registers by default.
1646+ The IRA sharing algorithm works on single registers only and this
1647+ pessimizes for double floating-point registers. */
1648+ flag_ira_share_save_slots = 0;
1649+}
1650+
1651 /* Validate and override various options, and do some machine dependent
1652 initialization. */
1653
1654@@ -4421,18 +4432,20 @@
1655 machinery occupies the delay slot. */
1656 gcc_assert (! final_sequence);
1657
1658- if (! flag_delayed_branch)
1659- fputs ("\tadd\t%fp, %g1, %fp\n", asm_out_file);
1660-
1661- if (TARGET_V9)
1662- fputs ("\treturn\t%i7+8\n", asm_out_file);
1663- else
1664- fputs ("\trestore\n\tjmp\t%o7+8\n", asm_out_file);
1665-
1666- if (flag_delayed_branch)
1667- fputs ("\t add\t%sp, %g1, %sp\n", asm_out_file);
1668- else
1669- fputs ("\t nop\n", asm_out_file);
1670+ if (flag_delayed_branch)
1671+ {
1672+ if (TARGET_V9)
1673+ fputs ("\treturn\t%i7+8\n", asm_out_file);
1674+ else
1675+ fputs ("\trestore\n\tjmp\t%o7+8\n", asm_out_file);
1676+
1677+ fputs ("\t add\t%sp, %g1, %sp\n", asm_out_file);
1678+ }
1679+ else
1680+ {
1681+ fputs ("\trestore\n\tadd\t%sp, %g1, %sp\n", asm_out_file);
1682+ fputs ("\tjmp\t%o7+8\n\t nop\n", asm_out_file);
1683+ }
1684 }
1685 else if (final_sequence)
1686 {
1687
1688=== modified file 'gcc/config/sparc/sparc.h'
1689--- gcc/config/sparc/sparc.h 2011-02-22 11:38:56 +0000
1690+++ gcc/config/sparc/sparc.h 2011-07-01 09:39:45 +0000
1691@@ -501,7 +501,8 @@
1692 #define CAN_DEBUG_WITHOUT_FP
1693
1694 /* Option handling. */
1695-
1696+#define OPTIMIZATION_OPTIONS(LEVEL, SIZE) \
1697+ sparc_optimization_options ((LEVEL), (SIZE))
1698 #define OVERRIDE_OPTIONS sparc_override_options ()
1699
1700
1701 /* Mask of all CPU selection flags. */
1702
1703=== modified file 'gcc/config/sparc/sparc.md'
1704--- gcc/config/sparc/sparc.md 2011-05-21 22:50:20 +0000
1705+++ gcc/config/sparc/sparc.md 2011-07-01 09:39:45 +0000
1706@@ -6315,9 +6315,7 @@
1707 (if_then_else (eq_attr "isa" "v9")
1708 (const_int 2)
1709 (const_int 3))
1710- (if_then_else (eq_attr "isa" "v9")
1711- (const_int 3)
1712- (const_int 4)))
1713+ (const_int 4))
1714 (eq_attr "empty_delay_slot" "true")
1715 (if_then_else (eq_attr "delayed_branch" "true")
1716 (const_int 2)
1717
1718=== modified file 'gcc/cp/ChangeLog'
1719--- gcc/cp/ChangeLog 2011-05-20 18:53:27 +0000
1720+++ gcc/cp/ChangeLog 2011-07-01 09:39:45 +0000
1721@@ -1,3 +1,17 @@
1722+2011-06-23 Jason Merrill <jason@redhat.com>
1723+
1724+ PR c++/49440
1725+ * class.c (set_linkage_according_to_type): Hand off to
1726+ determine_visibility.
1727+
1728+2011-05-31 Duncan Sands <baldrick@free.fr>
1729+
1730+ Backported from 4.6 branch
1731+ 2011-03-09 Martin Jambor <mjambor@suse.cz>
1732+
1733+ PR tree-optimization/47714
1734+ * method.c (use_thunk): Clear addressable flag of thunk arguments.
1735+
1736 2011-05-20 Jason Merrill <jason@redhat.com>
1737
1738 PR c++/48873
1739
1740=== modified file 'gcc/cp/class.c'
1741--- gcc/cp/class.c 2010-07-09 18:50:25 +0000
1742+++ gcc/cp/class.c 2011-07-01 09:39:45 +0000
1743@@ -681,21 +681,10 @@
1744 the abstract. */
1745
1746 void
1747-set_linkage_according_to_type (tree type, tree decl)
1748+set_linkage_according_to_type (tree type ATTRIBUTE_UNUSED, tree decl)
1749 {
1750- /* If TYPE involves a local class in a function with internal
1751- linkage, then DECL should have internal linkage too. Other local
1752- classes have no linkage -- but if their containing functions
1753- have external linkage, it makes sense for DECL to have external
1754- linkage too. That will allow template definitions to be merged,
1755- for example. */
1756- if (no_linkage_check (type, /*relaxed_p=*/true))
1757- {
1758- TREE_PUBLIC (decl) = 0;
1759- DECL_INTERFACE_KNOWN (decl) = 1;
1760- }
1761- else
1762- TREE_PUBLIC (decl) = 1;
1763+ TREE_PUBLIC (decl) = 1;
1764+ determine_visibility (decl);
1765 }
1766
1767 /* Create a VAR_DECL for a primary or secondary vtable for CLASS_TYPE.
1768
1769=== modified file 'gcc/cp/method.c'
1770--- gcc/cp/method.c 2010-03-20 08:55:32 +0000
1771+++ gcc/cp/method.c 2011-07-01 09:39:45 +0000
1772@@ -374,6 +374,7 @@
1773 DECL_CONTEXT (x) = thunk_fndecl;
1774 SET_DECL_RTL (x, NULL_RTX);
1775 DECL_HAS_VALUE_EXPR_P (x) = 0;
1776+ TREE_ADDRESSABLE (x) = 0;
1777 t = x;
1778 }
1779 a = nreverse (t);
1780
1781=== modified file 'gcc/fortran/ChangeLog'
1782--- gcc/fortran/ChangeLog 2011-04-28 14:12:20 +0000
1783+++ gcc/fortran/ChangeLog 2011-07-01 09:39:45 +0000
1784@@ -1,3 +1,13 @@
1785+2011-06-02 Thomas Koenig <tkoenig@gcc.gnu.org>
1786+
1787+ Backport from trunk
1788+ PR fortran/45786
1789+ * interface.c (gfc_equivalent_op): New function.
1790+ (gfc_check_interface): Use gfc_equivalent_op instead
1791+ of switch statement.
1792+ * decl.c (access_attr_decl): Also set access to an
1793+ equivalent operator.
1794+
1795 2011-04-28 Release Manager
1796
1797 * GCC 4.5.3 released.
1798
1799=== modified file 'gcc/fortran/decl.c'
1800--- gcc/fortran/decl.c 2010-03-17 09:53:40 +0000
1801+++ gcc/fortran/decl.c 2011-07-01 09:39:45 +0000
1802@@ -6062,8 +6062,19 @@
1803 case INTERFACE_INTRINSIC_OP:
1804 if (gfc_current_ns->operator_access[op] == ACCESS_UNKNOWN)
1805 {
1806+ gfc_intrinsic_op other_op;
1807+
1808 gfc_current_ns->operator_access[op] =
1809 (st == ST_PUBLIC) ? ACCESS_PUBLIC : ACCESS_PRIVATE;
1810+
1811+ /* Handle the case if there is another op with the same
1812+ function, for INTRINSIC_EQ vs. INTRINSIC_EQ_OS and so on. */
1813+ other_op = gfc_equivalent_op (op);
1814+
1815+ if (other_op != INTRINSIC_NONE)
1816+ gfc_current_ns->operator_access[other_op] =
1817+ (st == ST_PUBLIC) ? ACCESS_PUBLIC : ACCESS_PRIVATE;
1818+
1819 }
1820 else
1821 {
1822
1823=== modified file 'gcc/fortran/gfortran.h'
1824--- gcc/fortran/gfortran.h 2011-01-25 17:01:06 +0000
1825+++ gcc/fortran/gfortran.h 2011-07-01 09:39:45 +0000
1826@@ -2718,6 +2718,7 @@
1827 gfc_symtree* gfc_find_sym_in_symtree (gfc_symbol*);
1828 bool gfc_arglist_matches_symbol (gfc_actual_arglist**, gfc_symbol*);
1829 bool gfc_check_operator_interface (gfc_symbol*, gfc_intrinsic_op, locus);
1830+gfc_intrinsic_op gfc_equivalent_op (gfc_intrinsic_op);
1831
1832 /* io.c */
1833 extern gfc_st_label format_asterisk;
1834
1835=== modified file 'gcc/fortran/interface.c'
1836--- gcc/fortran/interface.c 2011-02-14 06:38:44 +0000
1837+++ gcc/fortran/interface.c 2011-07-01 09:39:45 +0000
1838@@ -1213,6 +1213,54 @@
1839 }
1840 }
1841
1842+/* Given an intrinsic op, return an equivalent op if one exists,
1843+ or INTRINSIC_NONE otherwise. */
1844+
1845+gfc_intrinsic_op
1846+gfc_equivalent_op (gfc_intrinsic_op op)
1847+{
1848+ switch(op)
1849+ {
1850+ case INTRINSIC_EQ:
1851+ return INTRINSIC_EQ_OS;
1852+
1853+ case INTRINSIC_EQ_OS:
1854+ return INTRINSIC_EQ;
1855+
1856+ case INTRINSIC_NE:
1857+ return INTRINSIC_NE_OS;
1858+
1859+ case INTRINSIC_NE_OS:
1860+ return INTRINSIC_NE;
1861+
1862+ case INTRINSIC_GT:
1863+ return INTRINSIC_GT_OS;
1864+
1865+ case INTRINSIC_GT_OS:
1866+ return INTRINSIC_GT;
1867+
1868+ case INTRINSIC_GE:
1869+ return INTRINSIC_GE_OS;
1870+
1871+ case INTRINSIC_GE_OS:
1872+ return INTRINSIC_GE;
1873+
1874+ case INTRINSIC_LT:
1875+ return INTRINSIC_LT_OS;
1876+
1877+ case INTRINSIC_LT_OS:
1878+ return INTRINSIC_LT;
1879+
1880+ case INTRINSIC_LE:
1881+ return INTRINSIC_LE_OS;
1882+
1883+ case INTRINSIC_LE_OS:
1884+ return INTRINSIC_LE;
1885+
1886+ default:
1887+ return INTRINSIC_NONE;
1888+ }
1889+}
1890
1891 /* For the namespace, check generic, user operator and intrinsic
1892 operator interfaces for consistency and to remove duplicate
1893@@ -1253,75 +1301,19 @@
1894
1895 for (ns2 = ns; ns2; ns2 = ns2->parent)
1896 {
1897+ gfc_intrinsic_op other_op;
1898+
1899 if (check_interface1 (ns->op[i], ns2->op[i], 0,
1900 interface_name, true))
1901 goto done;
1902
1903- switch (i)
1904- {
1905- case INTRINSIC_EQ:
1906- if (check_interface1 (ns->op[i], ns2->op[INTRINSIC_EQ_OS],
1907- 0, interface_name, true)) goto done;
1908- break;
1909-
1910- case INTRINSIC_EQ_OS:
1911- if (check_interface1 (ns->op[i], ns2->op[INTRINSIC_EQ],
1912- 0, interface_name, true)) goto done;
1913- break;
1914-
1915- case INTRINSIC_NE:
1916- if (check_interface1 (ns->op[i], ns2->op[INTRINSIC_NE_OS],
1917- 0, interface_name, true)) goto done;
1918- break;
1919-
1920- case INTRINSIC_NE_OS:
1921- if (check_interface1 (ns->op[i], ns2->op[INTRINSIC_NE],
1922- 0, interface_name, true)) goto done;
1923- break;
1924-
1925- case INTRINSIC_GT:
1926- if (check_interface1 (ns->op[i], ns2->op[INTRINSIC_GT_OS],
1927- 0, interface_name, true)) goto done;
1928- break;
1929-
1930- case INTRINSIC_GT_OS:
1931- if (check_interface1 (ns->op[i], ns2->op[INTRINSIC_GT],
1932- 0, interface_name, true)) goto done;
1933- break;
1934-
1935- case INTRINSIC_GE:
1936- if (check_interface1 (ns->op[i], ns2->op[INTRINSIC_GE_OS],
1937- 0, interface_name, true)) goto done;
1938- break;
1939-
1940- case INTRINSIC_GE_OS:
1941- if (check_interface1 (ns->op[i], ns2->op[INTRINSIC_GE],
1942- 0, interface_name, true)) goto done;
1943- break;
1944-
1945- case INTRINSIC_LT:
1946- if (check_interface1 (ns->op[i], ns2->op[INTRINSIC_LT_OS],
1947- 0, interface_name, true)) goto done;
1948- break;
1949-
1950- case INTRINSIC_LT_OS:
1951- if (check_interface1 (ns->op[i], ns2->op[INTRINSIC_LT],
1952- 0, interface_name, true)) goto done;
1953- break;
1954-
1955- case INTRINSIC_LE:
1956- if (check_interface1 (ns->op[i], ns2->op[INTRINSIC_LE_OS],
1957- 0, interface_name, true)) goto done;
1958- break;
1959-
1960- case INTRINSIC_LE_OS:
1961- if (check_interface1 (ns->op[i], ns2->op[INTRINSIC_LE],
1962- 0, interface_name, true)) goto done;
1963- break;
1964-
1965- default:
1966- break;
1967- }
1968+ /* i should be gfc_intrinsic_op, but has to be int with this cast
1969+ here for stupid C++ compatibility rules. */
1970+ other_op = gfc_equivalent_op ((gfc_intrinsic_op) i);
1971+ if (other_op != INTRINSIC_NONE
1972+ && check_interface1 (ns->op[i], ns2->op[other_op],
1973+ 0, interface_name, true))
1974+ goto done;
1975 }
1976 }
1977
1978
1979=== modified file 'gcc/reload.c'
1980--- gcc/reload.c 2011-04-20 10:07:36 +0000
1981+++ gcc/reload.c 2011-07-01 09:39:45 +0000
1982@@ -6796,6 +6796,15 @@
1983 || num > PARAM_VALUE (PARAM_MAX_RELOAD_SEARCH_INSNS))
1984 return 0;
1985
1986+ /* Don't reuse register contents from before a setjmp-type
1987+ function call; on the second return (from the longjmp) it
1988+ might have been clobbered by a later reuse. It doesn't
1989+ seem worthwhile to actually go and see if it is actually
1990+ reused even if that information would be readily available;
1991+ just don't reuse it across the setjmp call. */
1992+ if (CALL_P (p) && find_reg_note (p, REG_SETJMP, NULL_RTX))
1993+ return 0;
1994+
1995 if (NONJUMP_INSN_P (p)
1996 /* If we don't want spill regs ... */
1997 && (! (reload_reg_p != 0
1998
1999=== modified file 'gcc/reload1.c'
2000--- gcc/reload1.c 2011-05-04 09:21:34 +0000
2001+++ gcc/reload1.c 2011-07-01 09:39:45 +0000
2002@@ -4821,6 +4821,13 @@
2003 {
2004 AND_COMPL_HARD_REG_SET (reg_reloaded_valid, call_used_reg_set);
2005 AND_COMPL_HARD_REG_SET (reg_reloaded_valid, reg_reloaded_call_part_clobbered);
2006+
2007+ /* If this is a call to a setjmp-type function, we must not
2008+ reuse any reload reg contents across the call; that will
2009+ just be clobbered by other uses of the register in later
2010+ code, before the longjmp. */
2011+ if (find_reg_note (insn, REG_SETJMP, NULL_RTX))
2012+ CLEAR_HARD_REG_SET (reg_reloaded_valid);
2013 }
2014 }
2015
2016
2017=== modified file 'gcc/testsuite/ChangeLog'
2018--- gcc/testsuite/ChangeLog 2011-05-25 13:26:42 +0000
2019+++ gcc/testsuite/ChangeLog 2011-07-01 09:39:45 +0000
2020@@ -1,3 +1,68 @@
2021+2011-06-28 Eric Botcazou <ebotcazou@adacore.com>
2022+
2023+ * gnat.dg/opt17.ad[sb]: New test.
2024+
2025+2011-06-23 Jason Merrill <jason@redhat.com>
2026+
2027+ PR c++/49440
2028+ * g++.dg/rtti/anon-ns1.C: New.
2029+
2030+2011-06-17 Hans-Peter Nilsson <hp@axis.com>
2031+
2032+ Backport from mainline
2033+ 2011-06-17 Hans-Peter Nilsson <hp@axis.com>
2034+
2035+ PR rtl-optimization/48542
2036+ * gcc.dg/torture/pr48542.c: New test.
2037+
2038+2011-06-16 Kaz Kojima <kkojima@gcc.gnu.org>
2039+
2040+ Backport form main line
2041+ 2011-06-09 Kaz Kojima <kkojima@gcc.gnu.org>
2042+
2043+ PR target/49307
2044+ * gcc.dg/pr49307.c: New.
2045+
2046+2011-06-08 Kaz Kojima <kkojima@gcc.gnu.org>
2047+
2048+ Backport from mainline
2049+ 2011-06-01 Kaz Kojima <kkojima@gcc.gnu.org>
2050+
2051+ PR target/49238
2052+ * gcc.c-torture/compile/pr49238.c: New.
2053+
2054+2011-06-05 Kaz Kojima <kkojima@gcc.gnu.org>
2055+
2056+ Backport from mainline
2057+ 2011-05-30 Kaz Kojima <kkojima@gcc.gnu.org>
2058+
2059+ PR target/49186
2060+ * gcc.c-torture/execute/pr49186.c: New.
2061+
2062+2011-06-04 Ira Rosen <ira.rosen@linaro.org>
2063+
2064+ PR tree-optimization/49038
2065+ * gcc.dg/vect/vect-strided-u8-i8-gap4-unknown.c: New test.
2066+ * gcc.dg/vect/pr49038.c: New test.
2067+
2068+2011-06-02 Thomas Koenig <tkoenig@gcc.gnu.org>
2069+
2070+ Backport from trunk
2071+ PR fortran/45786
2072+ * gfortran.dg/operator_7.f90: New test case.
2073+
2074+2011-05-31 Duncan Sands <baldrick@free.fr>
2075+
2076+ Backported from 4.6 branch
2077+ 2011-03-09 Martin Jambor <mjambor@suse.cz>
2078+
2079+ PR tree-optimization/47714
2080+ * g++.dg/torture/pr47714.C: New test.
2081+
2082+2011-05-29 Richard Sandiford <rdsandiford@googlemail.com>
2083+
2084+ * gcc.target/mips/reg-var-1.c: New test.
2085+
2086 2011-05-25 Uros Bizjak <ubizjak@gmail.com>
2087
2088 PR target/49133
2089
2090=== added file 'gcc/testsuite/g++.dg/rtti/anon-ns1.C'
2091--- gcc/testsuite/g++.dg/rtti/anon-ns1.C 1970-01-01 00:00:00 +0000
2092+++ gcc/testsuite/g++.dg/rtti/anon-ns1.C 2011-07-01 09:39:45 +0000
2093@@ -0,0 +1,15 @@
2094+// PR c++/49440
2095+// The typeinfo name for A should start with * so we compare
2096+// it by address rather than contents.
2097+
2098+// { dg-final { scan-assembler "\"\*N\[^\"\]+1AE\"" } }
2099+
2100+namespace
2101+{
2102+ class A { };
2103+}
2104+
2105+void f()
2106+{
2107+ throw A();
2108+}
2109
2110=== added file 'gcc/testsuite/g++.dg/torture/pr47714.C'
2111--- gcc/testsuite/g++.dg/torture/pr47714.C 1970-01-01 00:00:00 +0000
2112+++ gcc/testsuite/g++.dg/torture/pr47714.C 2011-07-01 09:39:45 +0000
2113@@ -0,0 +1,16 @@
2114+struct A { virtual ~A () {} };
2115+struct B { virtual ~B () {} };
2116+struct C { virtual const A *foo (int) const = 0; };
2117+struct E : public B, public A { };
2118+struct F : public C
2119+{
2120+ virtual const E *foo (int) const;
2121+};
2122+void bar (int &);
2123+
2124+const E *
2125+F::foo (int x) const
2126+{
2127+ bar (x);
2128+ return __null;
2129+}
2130
2131=== added file 'gcc/testsuite/gcc.c-torture/compile/pr49238.c'
2132--- gcc/testsuite/gcc.c-torture/compile/pr49238.c 1970-01-01 00:00:00 +0000
2133+++ gcc/testsuite/gcc.c-torture/compile/pr49238.c 2011-07-01 09:39:45 +0000
2134@@ -0,0 +1,18 @@
2135+/* PR target/49238 */
2136+extern int bar (void);
2137+
2138+void
2139+foo (unsigned long long a, int b)
2140+{
2141+ int i;
2142+
2143+ if (b)
2144+ for (a = -12; a >= 10; a = bar ())
2145+ break;
2146+ else
2147+ return;
2148+
2149+ for (i = 0; i < 10; i += 10)
2150+ if ((i == bar ()) | (bar () >= a))
2151+ bar ();
2152+}
2153
2154=== added file 'gcc/testsuite/gcc.c-torture/execute/pr49186.c'
2155--- gcc/testsuite/gcc.c-torture/execute/pr49186.c 1970-01-01 00:00:00 +0000
2156+++ gcc/testsuite/gcc.c-torture/execute/pr49186.c 2011-07-01 09:39:45 +0000
2157@@ -0,0 +1,15 @@
2158+/* PR target/49186 */
2159+extern void abort (void);
2160+
2161+int
2162+main ()
2163+{
2164+ int x;
2165+ unsigned long long uv = 0x1000000001ULL;
2166+
2167+ x = (uv < 0x80) ? 1 : ((uv < 0x800) ? 2 : 3);
2168+ if (x != 3)
2169+ abort ();
2170+
2171+ return 0;
2172+}
2173
2174=== added file 'gcc/testsuite/gcc.dg/pr49307.c'
2175--- gcc/testsuite/gcc.dg/pr49307.c 1970-01-01 00:00:00 +0000
2176+++ gcc/testsuite/gcc.dg/pr49307.c 2011-07-01 09:39:45 +0000
2177@@ -0,0 +1,21 @@
2178+/* PR target/49307 */
2179+/* { dg-do compile } */
2180+/* { dg-options "-O -fpic -fstack-protector" } */
2181+/* { dg-require-effective-target fpic } */
2182+/* { dg-require-effective-target fstack_protector } */
2183+
2184+extern void bar (char **pp, void *vp);
2185+extern void free (void *p);
2186+
2187+int
2188+foo (void)
2189+{
2190+ char *p;
2191+ char fext[128];
2192+
2193+ p = fext;
2194+ bar (&p, (void *)0);
2195+ if (p)
2196+ free (p);
2197+ return 0;
2198+}
2199
2200=== added file 'gcc/testsuite/gcc.dg/torture/pr48542.c'
2201--- gcc/testsuite/gcc.dg/torture/pr48542.c 1970-01-01 00:00:00 +0000
2202+++ gcc/testsuite/gcc.dg/torture/pr48542.c 2011-07-01 09:39:45 +0000
2203@@ -0,0 +1,57 @@
2204+/* { dg-do run } */
2205+/* The return-address was clobbered. */
2206+#include <stdlib.h>
2207+#include <setjmp.h>
2208+
2209+jmp_buf env;
2210+extern void sub(void);
2211+extern void sub3(void);
2212+int called;
2213+__attribute__ ((__noinline__))
2214+int sjtest()
2215+{
2216+ int i;
2217+ if (setjmp(env))
2218+ return 99;
2219+
2220+ for (i = 0; i < 10; i++)
2221+ sub();
2222+
2223+ longjmp(env, 1);
2224+}
2225+
2226+__attribute__ ((__noinline__))
2227+void sub(void)
2228+{
2229+ called++;
2230+}
2231+
2232+int called3;
2233+__attribute__ ((__noinline__))
2234+int sjtest3()
2235+{
2236+ int i;
2237+ if (setjmp(env))
2238+ return 42;
2239+
2240+ for (i = 0; i < 10; i++)
2241+ sub3();
2242+ return 0;
2243+}
2244+
2245+__attribute__ ((__noinline__))
2246+void sub3(void)
2247+{
2248+ called3++;
2249+ if (called3 == 10)
2250+ longjmp (env, 1);
2251+}
2252+
2253+int main(void)
2254+{
2255+ if (sjtest() != 99 || called != 10)
2256+ abort();
2257+ if (sjtest3() != 42 || called3 != 10)
2258+ abort();
2259+ exit (0);
2260+}
2261
2262=== added file 'gcc/testsuite/gcc.dg/vect/pr49038.c'
2263--- gcc/testsuite/gcc.dg/vect/pr49038.c 1970-01-01 00:00:00 +0000
2264+++ gcc/testsuite/gcc.dg/vect/pr49038.c 2011-07-01 09:39:45 +0000
2265@@ -0,0 +1,42 @@
2266+#include <sys/mman.h>
2267+#include <stdio.h>
2268+
2269+#define COUNT 320
2270+#define MMAP_SIZE 0x10000
2271+#define ADDRESS 0x1122000000
2272+#define TYPE unsigned short
2273+
2274+#ifndef MAP_ANONYMOUS
2275+#define MAP_ANONYMOUS MAP_ANON
2276+#endif
2277+
2278+void __attribute__((noinline))
2279+foo (TYPE *__restrict a, TYPE *__restrict b)
2280+{
2281+ int n;
2282+
2283+ for (n = 0; n < COUNT; n++)
2284+ a[n] = b[n * 2];
2285+}
2286+
2287+int
2288+main (void)
2289+{
2290+ void *x;
2291+ size_t b_offset;
2292+
2293+ x = mmap ((void *) ADDRESS, MMAP_SIZE, PROT_READ | PROT_WRITE,
2294+ MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
2295+ if (x == MAP_FAILED)
2296+ {
2297+ perror ("mmap");
2298+ return 1;
2299+ }
2300+
2301+ b_offset = MMAP_SIZE - (2 * COUNT - 1) * sizeof (TYPE);
2302+ foo ((unsigned short *) x,
2303+ (unsigned short *) ((char *) x + b_offset));
2304+ return 0;
2305+}
2306+
2307+/* { dg-final { cleanup-tree-dump "vect" } } */
2308
2309=== added file 'gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8-gap4-unknown.c'
2310--- gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8-gap4-unknown.c 1970-01-01 00:00:00 +0000
2311+++ gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8-gap4-unknown.c 2011-07-01 09:39:45 +0000
2312@@ -0,0 +1,116 @@
2313+/* { dg-require-effective-target vect_int } */
2314+
2315+#include <stdarg.h>
2316+#include <stdio.h>
2317+#include "tree-vect.h"
2318+
2319+#define N 160
2320+
2321+typedef struct {
2322+ unsigned char a;
2323+ unsigned char b;
2324+ unsigned char c;
2325+ unsigned char d;
2326+ unsigned char e;
2327+ unsigned char f;
2328+ unsigned char g;
2329+ unsigned char h;
2330+} s;
2331+
2332+__attribute__ ((noinline)) int
2333+main1 (s *arr, int n)
2334+{
2335+ int i;
2336+ s *ptr = arr;
2337+ s res[N];
2338+ unsigned char x;
2339+
2340+ for (i = 0; i < N; i++)
2341+ {
2342+ res[i].a = 0;
2343+ res[i].b = 0;
2344+ res[i].c = 0;
2345+ res[i].d = 0;
2346+ res[i].e = 0;
2347+ res[i].f = 0;
2348+ res[i].g = 0;
2349+ res[i].h = 0;
2350+ __asm__ volatile ("");
2351+ }
2352+
2353+ /* Check peeling for gaps for unknown loop bound. */
2354+ for (i = 0; i < n; i++)
2355+ {
2356+ res[i].c = ptr->b + ptr->c;
2357+ x = ptr->c + ptr->f;
2358+ res[i].a = x + ptr->b;
2359+ res[i].d = ptr->b + ptr->c;
2360+ res[i].b = ptr->c;
2361+ res[i].f = ptr->f + ptr->e;
2362+ res[i].e = ptr->b + ptr->e;
2363+ res[i].h = ptr->c;
2364+ res[i].g = ptr->b + ptr->c;
2365+ ptr++;
2366+ }
2367+
2368+ /* check results: */
2369+ for (i = 0; i < n; i++)
2370+ {
2371+ if (res[i].c != arr[i].b + arr[i].c
2372+ || res[i].a != arr[i].c + arr[i].f + arr[i].b
2373+ || res[i].d != arr[i].b + arr[i].c
2374+ || res[i].b != arr[i].c
2375+ || res[i].f != arr[i].f + arr[i].e
2376+ || res[i].e != arr[i].b + arr[i].e
2377+ || res[i].h != arr[i].c
2378+ || res[i].g != arr[i].b + arr[i].c)
2379+ abort ();
2380+ }
2381+
2382+ /* Check also that we don't do more iterations than needed. */
2383+ for (i = n; i < N; i++)
2384+ {
2385+ if (res[i].c == arr[i].b + arr[i].c
2386+ || res[i].a == arr[i].c + arr[i].f + arr[i].b
2387+ || res[i].d == arr[i].b + arr[i].c
2388+ || res[i].b == arr[i].c
2389+ || res[i].f == arr[i].f + arr[i].e
2390+ || res[i].e == arr[i].b + arr[i].e
2391+ || res[i].h == arr[i].c
2392+ || res[i].g == arr[i].b + arr[i].c)
2393+ abort ();
2394+ }
2395+
2396+ return 0;
2397+}
2398+
2399+
2400+int main (void)
2401+{
2402+ int i;
2403+ s arr[N];
2404+
2405+ check_vect ();
2406+
2407+ for (i = 0; i < N; i++)
2408+ {
2409+ arr[i].a = 5;
2410+ arr[i].b = 6;
2411+ arr[i].c = 17;
2412+ arr[i].d = 3;
2413+ arr[i].e = 16;
2414+ arr[i].f = 16;
2415+ arr[i].g = 3;
2416+ arr[i].h = 56;
2417+ if (arr[i].a == 178)
2418+ abort();
2419+ }
2420+
2421+ main1 (arr, N-2);
2422+
2423+ return 0;
2424+}
2425+
2426+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_interleave && vect_extract_even_odd } } } } */
2427+/* { dg-final { cleanup-tree-dump "vect" } } */
2428+
2429
2430=== added file 'gcc/testsuite/gcc.target/mips/reg-var-1.c'
2431--- gcc/testsuite/gcc.target/mips/reg-var-1.c 1970-01-01 00:00:00 +0000
2432+++ gcc/testsuite/gcc.target/mips/reg-var-1.c 2011-07-01 09:39:45 +0000
2433@@ -0,0 +1,16 @@
2434+/* { dg-do run } */
2435+register int g asm ("$18");
2436+
2437+void __attribute__((noinline))
2438+test (void)
2439+{
2440+ g = g + 1;
2441+}
2442+
2443+int
2444+main (void)
2445+{
2446+ g = 2;
2447+ test ();
2448+ return g != 3;
2449+}
2450
2451=== added file 'gcc/testsuite/gfortran.dg/operator_7.f90'
2452--- gcc/testsuite/gfortran.dg/operator_7.f90 1970-01-01 00:00:00 +0000
2453+++ gcc/testsuite/gfortran.dg/operator_7.f90 2011-07-01 09:39:45 +0000
2454@@ -0,0 +1,27 @@
2455+! { dg-do compile }
2456+! PR fortran/45786 - operators were not correctly marked as public
2457+! if the alternative form was used.
2458+! Test case contributed by Neil Carlson.
2459+module foo_type
2460+ private
2461+ public :: foo, operator(==)
2462+ type :: foo
2463+ integer :: bar
2464+ end type
2465+ interface operator(.eq.)
2466+ module procedure eq_foo
2467+ end interface
2468+contains
2469+ logical function eq_foo (a, b)
2470+ type(foo), intent(in) :: a, b
2471+ eq_foo = (a%bar == b%bar)
2472+ end function
2473+end module
2474+
2475+ subroutine use_it (a, b)
2476+ use foo_type
2477+ type(foo) :: a, b
2478+ print *, a == b
2479+end subroutine
2480+
2481+! { dg-final { cleanup-modules "foo_type" } }
2482
2483=== added file 'gcc/testsuite/gnat.dg/opt17.adb'
2484--- gcc/testsuite/gnat.dg/opt17.adb 1970-01-01 00:00:00 +0000
2485+++ gcc/testsuite/gnat.dg/opt17.adb 2011-07-01 09:39:45 +0000
2486@@ -0,0 +1,13 @@
2487+-- { dg-do compile }
2488+-- { dg-options "-O" }
2489+
2490+package body Opt17 is
2491+
2492+ function Func return S is
2493+ V : String (1 .. 6);
2494+ begin
2495+ V (1 .. 3) := "ABC";
2496+ return V (1 .. 5);
2497+ end;
2498+
2499+end Opt17;
2500
2501=== added file 'gcc/testsuite/gnat.dg/opt17.ads'
2502--- gcc/testsuite/gnat.dg/opt17.ads 1970-01-01 00:00:00 +0000
2503+++ gcc/testsuite/gnat.dg/opt17.ads 2011-07-01 09:39:45 +0000
2504@@ -0,0 +1,7 @@
2505+package Opt17 is
2506+
2507+ subtype S is String (1 .. 5);
2508+
2509+ function Func return S;
2510+
2511+end Opt17;
2512
2513=== modified file 'gcc/tree-ssa-dom.c'
2514--- gcc/tree-ssa-dom.c 2010-09-16 09:15:46 +0000
2515+++ gcc/tree-ssa-dom.c 2011-07-01 09:39:45 +0000
2516@@ -216,9 +216,10 @@
2517 switch (get_gimple_rhs_class (subcode))
2518 {
2519 case GIMPLE_SINGLE_RHS:
2520- expr->kind = EXPR_SINGLE;
2521- expr->ops.single.rhs = gimple_assign_rhs1 (stmt);
2522- break;
2523+ expr->kind = EXPR_SINGLE;
2524+ expr->type = TREE_TYPE (gimple_assign_lhs (stmt));
2525+ expr->ops.single.rhs = gimple_assign_rhs1 (stmt);
2526+ break;
2527 case GIMPLE_UNARY_RHS:
2528 expr->kind = EXPR_UNARY;
2529 expr->type = TREE_TYPE (gimple_assign_lhs (stmt));
2530
2531=== modified file 'gcc/tree-vect-data-refs.c'
2532--- gcc/tree-vect-data-refs.c 2010-04-02 18:54:46 +0000
2533+++ gcc/tree-vect-data-refs.c 2011-07-01 09:39:45 +0000
2534@@ -1450,7 +1450,7 @@
2535 loop_vec_info loop_vinfo = STMT_VINFO_LOOP_VINFO (stmt_info);
2536 bb_vec_info bb_vinfo = STMT_VINFO_BB_VINFO (stmt_info);
2537 HOST_WIDE_INT dr_step = TREE_INT_CST_LOW (step);
2538- HOST_WIDE_INT stride;
2539+ HOST_WIDE_INT stride, last_accessed_element = 1;
2540 bool slp_impossible = false;
2541
2542 /* For interleaving, STRIDE is STEP counted in elements, i.e., the size of the
2543@@ -1479,6 +1479,16 @@
2544 fprintf (vect_dump, " step ");
2545 print_generic_expr (vect_dump, step, TDF_SLIM);
2546 }
2547+
2548+ if (loop_vinfo)
2549+ {
2550+ LOOP_VINFO_PEELING_FOR_GAPS (loop_vinfo) = true;
2551+
2552+ if (vect_print_dump_info (REPORT_DETAILS))
2553+ fprintf (vect_dump, "Data access with gaps requires scalar "
2554+ "epilogue loop");
2555+ }
2556+
2557 return true;
2558 }
2559 if (vect_print_dump_info (REPORT_DETAILS))
2560@@ -1531,6 +1541,7 @@
2561 next = DR_GROUP_NEXT_DR (vinfo_for_stmt (next));
2562 continue;
2563 }
2564+
2565 prev = next;
2566
2567 /* Check that all the accesses have the same STEP. */
2568@@ -1561,6 +1572,8 @@
2569 gaps += diff - 1;
2570 }
2571
2572+ last_accessed_element += diff;
2573+
2574 /* Store the gap from the previous member of the group. If there is no
2575 gap in the access, DR_GROUP_GAP is always 1. */
2576 DR_GROUP_GAP (vinfo_for_stmt (next)) = diff;
2577@@ -1652,6 +1665,15 @@
2578 VEC_safe_push (gimple, heap, BB_VINFO_STRIDED_STORES (bb_vinfo),
2579 stmt);
2580 }
2581+
2582+ /* There is a gap in the end of the group. */
2583+ if (stride - last_accessed_element > 0 && loop_vinfo)
2584+ {
2585+ LOOP_VINFO_PEELING_FOR_GAPS (loop_vinfo) = true;
2586+ if (vect_print_dump_info (REPORT_DETAILS))
2587+ fprintf (vect_dump, "Data access with gaps requires scalar "
2588+ "epilogue loop");
2589+ }
2590 }
2591
2592 return true;
2593
2594=== modified file 'gcc/tree-vect-loop-manip.c'
2595--- gcc/tree-vect-loop-manip.c 2010-01-19 16:05:57 +0000
2596+++ gcc/tree-vect-loop-manip.c 2011-07-01 09:39:45 +0000
2597@@ -1516,7 +1516,7 @@
2598 edge pe;
2599 basic_block new_bb;
2600 gimple_seq stmts;
2601- tree ni_name;
2602+ tree ni_name, ni_minus_gap_name;
2603 tree var;
2604 tree ratio_name;
2605 tree ratio_mult_vf_name;
2606@@ -1533,9 +1533,39 @@
2607 ni_name = vect_build_loop_niters (loop_vinfo, cond_expr_stmt_list);
2608 log_vf = build_int_cst (TREE_TYPE (ni), exact_log2 (vf));
2609
2610+ /* If epilogue loop is required because of data accesses with gaps, we
2611+ subtract one iteration from the total number of iterations here for
2612+ correct calculation of RATIO. */
2613+ if (LOOP_VINFO_PEELING_FOR_GAPS (loop_vinfo))
2614+ {
2615+ ni_minus_gap_name = fold_build2 (MINUS_EXPR, TREE_TYPE (ni_name),
2616+ ni_name,
2617+ build_one_cst (TREE_TYPE (ni_name)));
2618+ if (!is_gimple_val (ni_minus_gap_name))
2619+ {
2620+ var = create_tmp_var (TREE_TYPE (ni), "ni_gap");
2621+ add_referenced_var (var);
2622+
2623+ stmts = NULL;
2624+ ni_minus_gap_name = force_gimple_operand (ni_minus_gap_name, &stmts,
2625+ true, var);
2626+ if (cond_expr_stmt_list)
2627+ gimple_seq_add_seq (&cond_expr_stmt_list, stmts);
2628+ else
2629+ {
2630+ pe = loop_preheader_edge (loop);
2631+ new_bb = gsi_insert_seq_on_edge_immediate (pe, stmts);
2632+ gcc_assert (!new_bb);
2633+ }
2634+ }
2635+ }
2636+ else
2637+ ni_minus_gap_name = ni_name;
2638+
2639 /* Create: ratio = ni >> log2(vf) */
2640
2641- ratio_name = fold_build2 (RSHIFT_EXPR, TREE_TYPE (ni_name), ni_name, log_vf);
2642+ ratio_name = fold_build2 (RSHIFT_EXPR, TREE_TYPE (ni_minus_gap_name),
2643+ ni_minus_gap_name, log_vf);
2644 if (!is_gimple_val (ratio_name))
2645 {
2646 var = create_tmp_var (TREE_TYPE (ni), "bnd");
2647
2648=== modified file 'gcc/tree-vect-loop.c'
2649--- gcc/tree-vect-loop.c 2011-03-01 17:04:26 +0000
2650+++ gcc/tree-vect-loop.c 2011-07-01 09:39:45 +0000
2651@@ -711,6 +711,7 @@
2652 LOOP_VINFO_STRIDED_STORES (res) = VEC_alloc (gimple, heap, 10);
2653 LOOP_VINFO_SLP_INSTANCES (res) = VEC_alloc (slp_instance, heap, 10);
2654 LOOP_VINFO_SLP_UNROLLING_FACTOR (res) = 1;
2655+ LOOP_VINFO_PEELING_FOR_GAPS (res) = false;
2656
2657 return res;
2658 }
2659@@ -2053,6 +2054,10 @@
2660 peel_iters_prologue = niters < peel_iters_prologue ?
2661 niters : peel_iters_prologue;
2662 peel_iters_epilogue = (niters - peel_iters_prologue) % vf;
2663+ /* If we need to peel for gaps, but no peeling is required, we have
2664+ to peel VF iterations. */
2665+ if (LOOP_VINFO_PEELING_FOR_GAPS (loop_vinfo) && !peel_iters_epilogue)
2666+ peel_iters_epilogue = vf;
2667 }
2668 }
2669
2670@@ -4212,7 +4217,8 @@
2671 do_peeling_for_loop_bound
2672 = (!LOOP_VINFO_NITERS_KNOWN_P (loop_vinfo)
2673 || (LOOP_VINFO_NITERS_KNOWN_P (loop_vinfo)
2674- && LOOP_VINFO_INT_NITERS (loop_vinfo) % vectorization_factor != 0));
2675+ && LOOP_VINFO_INT_NITERS (loop_vinfo) % vectorization_factor != 0)
2676+ || LOOP_VINFO_PEELING_FOR_GAPS (loop_vinfo));
2677
2678 if (LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT (loop_vinfo)
2679 || LOOP_REQUIRES_VERSIONING_FOR_ALIAS (loop_vinfo))
2680
2681=== modified file 'gcc/tree-vectorizer.h'
2682--- gcc/tree-vectorizer.h 2010-11-02 12:12:56 +0000
2683+++ gcc/tree-vectorizer.h 2011-07-01 09:39:45 +0000
2684@@ -242,6 +242,12 @@
2685 /* The unrolling factor needed to SLP the loop. In case of that pure SLP is
2686 applied to the loop, i.e., no unrolling is needed, this is 1. */
2687 unsigned slp_unrolling_factor;
2688+
2689+ /* When we have strided data accesses with gaps, we may introduce invalid
2690+ memory accesses. We peel the last iteration of the loop to prevent
2691+ this. */
2692+ bool peeling_for_gaps;
2693+
2694 } *loop_vec_info;
2695
2696 /* Access Functions. */
2697@@ -266,6 +272,7 @@
2698 #define LOOP_VINFO_STRIDED_STORES(L) (L)->strided_stores
2699 #define LOOP_VINFO_SLP_INSTANCES(L) (L)->slp_instances
2700 #define LOOP_VINFO_SLP_UNROLLING_FACTOR(L) (L)->slp_unrolling_factor
2701+#define LOOP_VINFO_PEELING_FOR_GAPS(L) (L)->peeling_for_gaps
2702
2703 #define LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT(L) \
2704 VEC_length (gimple, (L)->may_misalign_stmts) > 0

Subscribers

People subscribed via source and target branches