Merge lp:~ams-codesourcery/gcc-linaro/merge-fsf-4.5-20110505 into lp:gcc-linaro/4.5
- merge-fsf-4.5-20110505
- Merge into 4.5
Status: | Merged |
---|---|
Approved by: | Richard Sandiford |
Approved revision: | no longer in the source branch. |
Merged at revision: | 99508 |
Proposed branch: | lp:~ams-codesourcery/gcc-linaro/merge-fsf-4.5-20110505 |
Merge into: | lp:gcc-linaro/4.5 |
Diff against target: |
1318 lines (+566/-162) 33 files modified
ChangeLog.linaro (+4/-0) gcc/BASE-VER (+1/-1) gcc/ChangeLog (+117/-0) gcc/DATESTAMP (+1/-1) gcc/DEV-PHASE (+1/-0) gcc/c-typeck.c (+1/-1) gcc/config/arm/arm.c (+1/-1) gcc/config/arm/neon.md (+20/-17) gcc/config/i386/i386.c (+15/-2) gcc/config/i386/i386.md (+53/-28) gcc/config/i386/mmx.md (+4/-2) gcc/config/i386/sse.md (+7/-6) gcc/config/pa/pa-protos.h (+0/-2) gcc/config/pa/pa.md (+5/-10) gcc/config/pa/predicates.md (+9/-5) gcc/cp/ChangeLog (+6/-0) gcc/cp/parser.c (+1/-1) gcc/df-problems.c (+3/-7) gcc/final.c (+5/-0) gcc/fold-const.c (+0/-2) gcc/ifcvt.c (+12/-15) gcc/testsuite/ChangeLog (+50/-0) gcc/testsuite/g++.dg/parse/ambig6.C (+12/-0) gcc/testsuite/gcc.c-torture/compile/pr48742.c (+15/-0) gcc/testsuite/gcc.c-torture/execute/pr48809.c (+60/-0) gcc/testsuite/gcc.dg/pr48685.c (+11/-0) gcc/testsuite/gcc.dg/pr48774.c (+38/-0) gcc/testsuite/gcc.target/arm/pr48252.c (+31/-0) gcc/testsuite/gcc.target/i386/pr48708.c (+15/-0) gcc/testsuite/gcc.target/i386/sse2-init-v2di-2.c (+2/-2) gcc/tree-switch-conversion.c (+17/-41) libffi/ChangeLog (+10/-0) libffi/src/alpha/osf.S (+39/-18) |
To merge this branch: | bzr merge lp:~ams-codesourcery/gcc-linaro/merge-fsf-4.5-20110505 |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Richard Sandiford | Approve | ||
Review via email:
|
Commit message
Description of the change
Merge from FSF GCC 4.5 branch.
![](/+icing/build/overlay/assets/skins/sam/images/close.gif)
Linaro Toolchain Builder (cbuild) wrote : | # |
![](/+icing/build/overlay/assets/skins/sam/images/close.gif)
Linaro Toolchain Builder (cbuild) wrote : | # |
cbuild successfully built this on i686-lucid-
The build results are available at:
http://
The test suite results changed compared to the branch point lp:gcc-linaro+bzr99505:
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
...and 13 more
The full testsuite results are at:
http://
cbuild-checked: i686-lucid-
![](/+icing/build/overlay/assets/skins/sam/images/close.gif)
Ramana Radhakrishnan (ramana) wrote : | # |
Andrew - Could you check the 13 more ?
Ramana
![](/+icing/build/overlay/assets/skins/sam/images/close.gif)
Andrew Stubbs (ams-codesourcery) wrote : | # |
> Andrew - Could you check the 13 more ?
They're all PASSes.
![](/+icing/build/overlay/assets/skins/sam/images/close.gif)
Linaro Toolchain Builder (cbuild) wrote : | # |
cbuild successfully built this on armv7l-
The build results are available at:
http://
The test suite results changed compared to the branch point lp:gcc-linaro+bzr99505:
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
...and 14 more
The full testsuite results are at:
http://
cbuild-checked: armv7l-
![](/+icing/build/overlay/assets/skins/sam/images/close.gif)
Richard Sandiford (rsandifo) wrote : | # |
Not sure whether we're doing reviews for upstream merges,
but just in case: OK if you're happy with the elided results.
![](/+icing/build/overlay/assets/skins/sam/images/close.gif)
Andrew Stubbs (ams-codesourcery) wrote : | # |
i686 and ARM test results are OK.
Still waiting for x86_64 .....
![](/+icing/build/overlay/assets/skins/sam/images/close.gif)
Andrew Stubbs (ams-codesourcery) wrote : | # |
Ok, I'm bored of waiting, the x86_64 machine has been disrupted by UDS, and I want this merged before the very last minute. I'm going to merge it, and if there's a problem, I'll revert it later.
Preview Diff
1 | === modified file 'ChangeLog.linaro' | |||
2 | --- ChangeLog.linaro 2011-05-04 09:21:34 +0000 | |||
3 | +++ ChangeLog.linaro 2011-05-05 15:18:28 +0000 | |||
4 | @@ -1,3 +1,7 @@ | |||
5 | 1 | 2011-05-05 Andrew Stubbs <ams@codesourcery.com> | ||
6 | 2 | |||
7 | 3 | Merge from FSF 4.5 branch r173417 (pre 4.5.4). | ||
8 | 4 | |||
9 | 1 | 2011-04-28 Andrew Stubbs <ams@codesourcery.com> | 5 | 2011-04-28 Andrew Stubbs <ams@codesourcery.com> |
10 | 2 | 6 | ||
11 | 3 | Merge from FSF 4.5 branch r173113 (4.5.3 release). | 7 | Merge from FSF 4.5 branch r173113 (4.5.3 release). |
12 | 4 | 8 | ||
13 | === modified file 'gcc/BASE-VER' | |||
14 | --- gcc/BASE-VER 2010-12-16 14:34:03 +0000 | |||
15 | +++ gcc/BASE-VER 2011-05-05 15:18:28 +0000 | |||
16 | @@ -1,1 +1,1 @@ | |||
18 | 1 | 4.5.3 | 1 | 4.5.4 |
19 | 2 | 2 | ||
20 | === modified file 'gcc/ChangeLog' | |||
21 | --- gcc/ChangeLog 2011-04-28 14:11:53 +0000 | |||
22 | +++ gcc/ChangeLog 2011-05-05 15:18:28 +0000 | |||
23 | @@ -1,3 +1,120 @@ | |||
24 | 1 | 2010-05-05 Ira Rosen <ira.rosen@linaro.org> | ||
25 | 2 | |||
26 | 3 | Backport from mainline: | ||
27 | 4 | 2011-04-18 Ulrich Weigand <ulrich.weigand@linaro.org> | ||
28 | 5 | Ira Rosen <ira.rosen@linaro.org> | ||
29 | 6 | |||
30 | 7 | PR target/48252 | ||
31 | 8 | * config/arm/arm.c (neon_emit_pair_result_insn): Swap arguments | ||
32 | 9 | to match neon_vzip/vuzp/vtrn_internal. | ||
33 | 10 | * config/arm/neon.md (neon_vtrn<mode>_internal): Make both | ||
34 | 11 | outputs explicitly dependent on both inputs. | ||
35 | 12 | (neon_vzip<mode>_internal, neon_vuzp<mode>_internal): Likewise. | ||
36 | 13 | |||
37 | 14 | 2011-05-04 Uros Bizjak <ubizjak@gmail.com> | ||
38 | 15 | |||
39 | 16 | Backport from mainline | ||
40 | 17 | 2011-04-21 Uros Bizjak <ubizjak@gmail.com> | ||
41 | 18 | |||
42 | 19 | PR target/48708 | ||
43 | 20 | * config/i386/i386.c (ix86_expand_vector_set) <V2DImode>: Generate | ||
44 | 21 | vec_extract and vec_concat for non-SSE4_1 targets. | ||
45 | 22 | |||
46 | 23 | 2011-05-04 Uros Bizjak <ubizjak@gmail.com> | ||
47 | 24 | |||
48 | 25 | * config/i386/i386.md (*movdi_internal_rex64) <TYPE_SSEMOV>: | ||
49 | 26 | Use %v prefix in insn mnemonic to handle TARGET_AVX. | ||
50 | 27 | (*movdi_internal): Use "maybe_vex" instead of "vex" in "prefix" | ||
51 | 28 | attribute calculation. | ||
52 | 29 | (*movdf_internal): Output AVX mnemonics. Add "prefix" attribute. | ||
53 | 30 | * config/i386/sse.md (*sse2_storeq_rex64): Do not emit %v prefix | ||
54 | 31 | for mov{q} mnemonic. | ||
55 | 32 | (*vec_extractv2di_1_rex64_avx): Ditto. | ||
56 | 33 | (*vec_concatv2di_rex64_sse4_1): Use %vmovd for reg<->xmm moves. | ||
57 | 34 | (*vec_concatv2di_rex64_sse): Use movd for reg<->xmm moves. | ||
58 | 35 | * config/i386/mmx.md (*mov<mode>_internal_rex64): Ditto. | ||
59 | 36 | |||
60 | 37 | 2011-05-03 Uros Bizjak <ubizjak@gmail.com> | ||
61 | 38 | Jakub Jelinek <jakub@redhat.com> | ||
62 | 39 | |||
63 | 40 | PR target/48774 | ||
64 | 41 | * config/i386/i386.c (ix86_match_ccmode): For CC{A,C,O,S}mode | ||
65 | 42 | only succeed if req_mode is the same as set_mode. | ||
66 | 43 | |||
67 | 44 | 2011-05-03 Jakub Jelinek <jakub@redhat.com> | ||
68 | 45 | |||
69 | 46 | Backport from mainline | ||
70 | 47 | 2011-04-30 Jakub Jelinek <jakub@redhat.com> | ||
71 | 48 | |||
72 | 49 | PR tree-optimization/48809 | ||
73 | 50 | * tree-switch-conversion.c (build_arrays): Compute tidx in unsigned | ||
74 | 51 | type. | ||
75 | 52 | (gen_inbound_check): Don't compute index_expr - range_min in utype | ||
76 | 53 | again, instead reuse SSA_NAME initialized in build_arrays. | ||
77 | 54 | Remove two useless gsi_for_stmt calls. | ||
78 | 55 | |||
79 | 56 | 2011-04-28 Jakub Jelinek <jakub@redhat.com> | ||
80 | 57 | |||
81 | 58 | PR middle-end/48597 | ||
82 | 59 | * final.c (final_scan_insn): Call dwarf2out_frame_debug even for | ||
83 | 60 | inline asm. | ||
84 | 61 | |||
85 | 62 | 2011-04-27 Jakub Jelinek <jakub@redhat.com> | ||
86 | 63 | |||
87 | 64 | PR c/48742 | ||
88 | 65 | * c-typeck.c (build_binary_op): Don't wrap arguments if | ||
89 | 66 | int_operands is true. | ||
90 | 67 | |||
91 | 68 | 2011-04-23 Jakub Jelinek <jakub@redhat.com> | ||
92 | 69 | |||
93 | 70 | PR c/48685 | ||
94 | 71 | * fold-const.c (fold_convert_loc): Add NOP_EXPR when casting | ||
95 | 72 | to VOID_TYPE even around MODIFY_EXPR. | ||
96 | 73 | |||
97 | 74 | 2011-05-02 Ulrich Weigand <ulrich.weigand@linaro.org> | ||
98 | 75 | |||
99 | 76 | PR middle-end/43085 | ||
100 | 77 | Backport from mainline: | ||
101 | 78 | |||
102 | 79 | 2010-04-29 Bernd Schmidt <bernds@codesourcery.com> | ||
103 | 80 | |||
104 | 81 | From Dominique d'Humieres <dominiq@lps.ens.fr> | ||
105 | 82 | PR bootstrap/43858 | ||
106 | 83 | * ifcvt.c (dead_or_predicable): Use df_simulate_find_defs to compute | ||
107 | 84 | test_set. | ||
108 | 85 | |||
109 | 86 | 2010-04-26 Bernd Schmidt <bernds@codesourcery.com> | ||
110 | 87 | |||
111 | 88 | * df-problems.c (df_simulate_initialize_forwards): Set, don't clear, | ||
112 | 89 | bits for artificial defs at the top of the block. | ||
113 | 90 | * fwprop.c (single_def_use_enter_block): Don't call it. | ||
114 | 91 | |||
115 | 92 | 2010-04-22 Bernd Schmidt <bernds@codesourcery.com> | ||
116 | 93 | |||
117 | 94 | * ifcvt.c (dead_or_predicable): Use df_simulate_find_defs and | ||
118 | 95 | df_simulate_find_noclobber_defs as appropriate. Keep track of an | ||
119 | 96 | extra set merge_set_noclobber, and use it to relax the final test | ||
120 | 97 | slightly. | ||
121 | 98 | * df.h (df_simulate_find_noclobber_defs): Declare. | ||
122 | 99 | * df-problems.c (df_simulate_find_defs): Don't ignore partial or | ||
123 | 100 | conditional defs. | ||
124 | 101 | (df_simulate_find_noclobber_defs): New function. | ||
125 | 102 | |||
126 | 103 | 2011-04-29 John David Anglin <dave.anglin@nrc-cnrc.gc.ca> | ||
127 | 104 | |||
128 | 105 | PR target/48288 | ||
129 | 106 | * config/pa/predicates.md (ior_operand): Delete predicate. | ||
130 | 107 | (cint_ior_operand, reg_or_cint_ior_operand): New predicates. | ||
131 | 108 | * config/pa/pa.md (iordi3): Use reg_or_cint_ior_operand predicate in | ||
132 | 109 | expander. Use cint_ior_operand in unnamed insn. | ||
133 | 110 | (iorsi3): Likewise. | ||
134 | 111 | * config/pa/pa-protos.h (ior_operand): Delete declarations. | ||
135 | 112 | |||
136 | 113 | 2011-04-28 Richard Guenther <rguenther@suse.de> | ||
137 | 114 | |||
138 | 115 | * DEV-PHASE: Set back to prerelease. | ||
139 | 116 | * BASE-VER: Bump to 4.5.4. | ||
140 | 117 | |||
141 | 1 | 2011-04-28 Release Manager | 118 | 2011-04-28 Release Manager |
142 | 2 | 119 | ||
143 | 3 | * GCC 4.5.3 released. | 120 | * GCC 4.5.3 released. |
144 | 4 | 121 | ||
145 | === modified file 'gcc/DATESTAMP' | |||
146 | --- gcc/DATESTAMP 2011-04-28 00:17:54 +0000 | |||
147 | +++ gcc/DATESTAMP 2011-05-05 15:18:28 +0000 | |||
148 | @@ -1,1 +1,1 @@ | |||
150 | 1 | 20110428 | 1 | 20110505 |
151 | 2 | 2 | ||
152 | === modified file 'gcc/DEV-PHASE' | |||
153 | --- gcc/DEV-PHASE 2011-04-28 16:13:24 +0000 | |||
154 | +++ gcc/DEV-PHASE 2011-05-05 15:18:28 +0000 | |||
155 | @@ -0,0 +1,1 @@ | |||
156 | 1 | prerelease | ||
157 | 0 | 2 | ||
158 | === modified file 'gcc/c-typeck.c' | |||
159 | --- gcc/c-typeck.c 2011-02-22 11:38:56 +0000 | |||
160 | +++ gcc/c-typeck.c 2011-05-05 15:18:28 +0000 | |||
161 | @@ -9816,7 +9816,7 @@ | |||
162 | 9816 | warn_for_sign_compare (location, orig_op0_folded, | 9816 | warn_for_sign_compare (location, orig_op0_folded, |
163 | 9817 | orig_op1_folded, op0, op1, | 9817 | orig_op1_folded, op0, op1, |
164 | 9818 | result_type, resultcode); | 9818 | result_type, resultcode); |
166 | 9819 | if (!in_late_binary_op) | 9819 | if (!in_late_binary_op && !int_operands) |
167 | 9820 | { | 9820 | { |
168 | 9821 | if (!op0_maybe_const || TREE_CODE (op0) != INTEGER_CST) | 9821 | if (!op0_maybe_const || TREE_CODE (op0) != INTEGER_CST) |
169 | 9822 | op0 = c_wrap_maybe_const (op0, !op0_maybe_const); | 9822 | op0 = c_wrap_maybe_const (op0, !op0_maybe_const); |
170 | 9823 | 9823 | ||
171 | === modified file 'gcc/config/arm/arm.c' | |||
172 | --- gcc/config/arm/arm.c 2011-04-20 10:10:50 +0000 | |||
173 | +++ gcc/config/arm/arm.c 2011-05-05 15:18:28 +0000 | |||
174 | @@ -19823,7 +19823,7 @@ | |||
175 | 19823 | rtx tmp1 = gen_reg_rtx (mode); | 19823 | rtx tmp1 = gen_reg_rtx (mode); |
176 | 19824 | rtx tmp2 = gen_reg_rtx (mode); | 19824 | rtx tmp2 = gen_reg_rtx (mode); |
177 | 19825 | 19825 | ||
179 | 19826 | emit_insn (intfn (tmp1, op1, tmp2, op2)); | 19826 | emit_insn (intfn (tmp1, op1, op2, tmp2)); |
180 | 19827 | 19827 | ||
181 | 19828 | emit_move_insn (mem, tmp1); | 19828 | emit_move_insn (mem, tmp1); |
182 | 19829 | mem = adjust_address (mem, mode, GET_MODE_SIZE (mode)); | 19829 | mem = adjust_address (mem, mode, GET_MODE_SIZE (mode)); |
183 | 19830 | 19830 | ||
184 | === modified file 'gcc/config/arm/neon.md' | |||
185 | --- gcc/config/arm/neon.md 2011-04-20 10:00:39 +0000 | |||
186 | +++ gcc/config/arm/neon.md 2011-05-05 15:18:28 +0000 | |||
187 | @@ -4397,13 +4397,14 @@ | |||
188 | 4397 | 4397 | ||
189 | 4398 | (define_insn "neon_vtrn<mode>_internal" | 4398 | (define_insn "neon_vtrn<mode>_internal" |
190 | 4399 | [(set (match_operand:VDQW 0 "s_register_operand" "=w") | 4399 | [(set (match_operand:VDQW 0 "s_register_operand" "=w") |
196 | 4400 | (unspec:VDQW [(match_operand:VDQW 1 "s_register_operand" "0")] | 4400 | (unspec:VDQW [(match_operand:VDQW 1 "s_register_operand" "0") |
197 | 4401 | UNSPEC_VTRN1)) | 4401 | (match_operand:VDQW 2 "s_register_operand" "w")] |
198 | 4402 | (set (match_operand:VDQW 2 "s_register_operand" "=w") | 4402 | UNSPEC_VTRN1)) |
199 | 4403 | (unspec:VDQW [(match_operand:VDQW 3 "s_register_operand" "2")] | 4403 | (set (match_operand:VDQW 3 "s_register_operand" "=2") |
200 | 4404 | UNSPEC_VTRN2))] | 4404 | (unspec:VDQW [(match_dup 1) (match_dup 2)] |
201 | 4405 | UNSPEC_VTRN2))] | ||
202 | 4405 | "TARGET_NEON" | 4406 | "TARGET_NEON" |
204 | 4406 | "vtrn.<V_sz_elem>\t%<V_reg>0, %<V_reg>2" | 4407 | "vtrn.<V_sz_elem>\t%<V_reg>0, %<V_reg>3" |
205 | 4407 | [(set (attr "neon_type") | 4408 | [(set (attr "neon_type") |
206 | 4408 | (if_then_else (ne (symbol_ref "<Is_d_reg>") (const_int 0)) | 4409 | (if_then_else (ne (symbol_ref "<Is_d_reg>") (const_int 0)) |
207 | 4409 | (const_string "neon_bp_simple") | 4410 | (const_string "neon_bp_simple") |
208 | @@ -4423,13 +4424,14 @@ | |||
209 | 4423 | 4424 | ||
210 | 4424 | (define_insn "neon_vzip<mode>_internal" | 4425 | (define_insn "neon_vzip<mode>_internal" |
211 | 4425 | [(set (match_operand:VDQW 0 "s_register_operand" "=w") | 4426 | [(set (match_operand:VDQW 0 "s_register_operand" "=w") |
217 | 4426 | (unspec:VDQW [(match_operand:VDQW 1 "s_register_operand" "0")] | 4427 | (unspec:VDQW [(match_operand:VDQW 1 "s_register_operand" "0") |
218 | 4427 | UNSPEC_VZIP1)) | 4428 | (match_operand:VDQW 2 "s_register_operand" "w")] |
219 | 4428 | (set (match_operand:VDQW 2 "s_register_operand" "=w") | 4429 | UNSPEC_VZIP1)) |
220 | 4429 | (unspec:VDQW [(match_operand:VDQW 3 "s_register_operand" "2")] | 4430 | (set (match_operand:VDQW 3 "s_register_operand" "=2") |
221 | 4430 | UNSPEC_VZIP2))] | 4431 | (unspec:VDQW [(match_dup 1) (match_dup 2)] |
222 | 4432 | UNSPEC_VZIP2))] | ||
223 | 4431 | "TARGET_NEON" | 4433 | "TARGET_NEON" |
225 | 4432 | "vzip.<V_sz_elem>\t%<V_reg>0, %<V_reg>2" | 4434 | "vzip.<V_sz_elem>\t%<V_reg>0, %<V_reg>3" |
226 | 4433 | [(set (attr "neon_type") | 4435 | [(set (attr "neon_type") |
227 | 4434 | (if_then_else (ne (symbol_ref "<Is_d_reg>") (const_int 0)) | 4436 | (if_then_else (ne (symbol_ref "<Is_d_reg>") (const_int 0)) |
228 | 4435 | (const_string "neon_bp_simple") | 4437 | (const_string "neon_bp_simple") |
229 | @@ -4449,13 +4451,14 @@ | |||
230 | 4449 | 4451 | ||
231 | 4450 | (define_insn "neon_vuzp<mode>_internal" | 4452 | (define_insn "neon_vuzp<mode>_internal" |
232 | 4451 | [(set (match_operand:VDQW 0 "s_register_operand" "=w") | 4453 | [(set (match_operand:VDQW 0 "s_register_operand" "=w") |
234 | 4452 | (unspec:VDQW [(match_operand:VDQW 1 "s_register_operand" "0")] | 4454 | (unspec:VDQW [(match_operand:VDQW 1 "s_register_operand" "0") |
235 | 4455 | (match_operand:VDQW 2 "s_register_operand" "w")] | ||
236 | 4453 | UNSPEC_VUZP1)) | 4456 | UNSPEC_VUZP1)) |
240 | 4454 | (set (match_operand:VDQW 2 "s_register_operand" "=w") | 4457 | (set (match_operand:VDQW 3 "s_register_operand" "=2") |
241 | 4455 | (unspec:VDQW [(match_operand:VDQW 3 "s_register_operand" "2")] | 4458 | (unspec:VDQW [(match_dup 1) (match_dup 2)] |
242 | 4456 | UNSPEC_VUZP2))] | 4459 | UNSPEC_VUZP2))] |
243 | 4457 | "TARGET_NEON" | 4460 | "TARGET_NEON" |
245 | 4458 | "vuzp.<V_sz_elem>\t%<V_reg>0, %<V_reg>2" | 4461 | "vuzp.<V_sz_elem>\t%<V_reg>0, %<V_reg>3" |
246 | 4459 | [(set (attr "neon_type") | 4462 | [(set (attr "neon_type") |
247 | 4460 | (if_then_else (ne (symbol_ref "<Is_d_reg>") (const_int 0)) | 4463 | (if_then_else (ne (symbol_ref "<Is_d_reg>") (const_int 0)) |
248 | 4461 | (const_string "neon_bp_simple") | 4464 | (const_string "neon_bp_simple") |
249 | 4462 | 4465 | ||
250 | === modified file 'gcc/config/i386/i386.c' | |||
251 | --- gcc/config/i386/i386.c 2011-02-22 11:38:56 +0000 | |||
252 | +++ gcc/config/i386/i386.c 2011-05-05 15:18:28 +0000 | |||
253 | @@ -14587,11 +14587,15 @@ | |||
254 | 14587 | if (req_mode == CCZmode) | 14587 | if (req_mode == CCZmode) |
255 | 14588 | return 0; | 14588 | return 0; |
256 | 14589 | /* FALLTHRU */ | 14589 | /* FALLTHRU */ |
257 | 14590 | case CCZmode: | ||
258 | 14591 | break; | ||
259 | 14592 | |||
260 | 14590 | case CCAmode: | 14593 | case CCAmode: |
261 | 14591 | case CCCmode: | 14594 | case CCCmode: |
262 | 14592 | case CCOmode: | 14595 | case CCOmode: |
263 | 14593 | case CCSmode: | 14596 | case CCSmode: |
265 | 14594 | case CCZmode: | 14597 | if (set_mode != req_mode) |
266 | 14598 | return 0; | ||
267 | 14595 | break; | 14599 | break; |
268 | 14596 | 14600 | ||
269 | 14597 | default: | 14601 | default: |
270 | @@ -27691,10 +27695,19 @@ | |||
271 | 27691 | break; | 27695 | break; |
272 | 27692 | 27696 | ||
273 | 27693 | case V2DImode: | 27697 | case V2DImode: |
275 | 27694 | use_vec_merge = TARGET_SSE4_1; | 27698 | use_vec_merge = TARGET_SSE4_1 && TARGET_64BIT; |
276 | 27695 | if (use_vec_merge) | 27699 | if (use_vec_merge) |
277 | 27696 | break; | 27700 | break; |
278 | 27697 | 27701 | ||
279 | 27702 | tmp = gen_reg_rtx (GET_MODE_INNER (mode)); | ||
280 | 27703 | ix86_expand_vector_extract (false, tmp, target, 1 - elt); | ||
281 | 27704 | if (elt == 0) | ||
282 | 27705 | tmp = gen_rtx_VEC_CONCAT (mode, tmp, val); | ||
283 | 27706 | else | ||
284 | 27707 | tmp = gen_rtx_VEC_CONCAT (mode, val, tmp); | ||
285 | 27708 | emit_insn (gen_rtx_SET (VOIDmode, target, tmp)); | ||
286 | 27709 | return; | ||
287 | 27710 | |||
288 | 27698 | case V2DFmode: | 27711 | case V2DFmode: |
289 | 27699 | { | 27712 | { |
290 | 27700 | rtx op0, op1; | 27713 | rtx op0, op1; |
291 | 27701 | 27714 | ||
292 | === modified file 'gcc/config/i386/i386.md' | |||
293 | --- gcc/config/i386/i386.md 2011-02-22 11:38:56 +0000 | |||
294 | +++ gcc/config/i386/i386.md 2011-05-05 15:18:28 +0000 | |||
295 | @@ -2429,7 +2429,7 @@ | |||
296 | 2429 | [(set_attr "type" "*,*,mmx,mmxmov,mmxmov,sselog1,ssemov,ssemov,ssemov,sselog1,ssemov,ssemov,ssemov") | 2429 | [(set_attr "type" "*,*,mmx,mmxmov,mmxmov,sselog1,ssemov,ssemov,ssemov,sselog1,ssemov,ssemov,ssemov") |
297 | 2430 | (set (attr "prefix") | 2430 | (set (attr "prefix") |
298 | 2431 | (if_then_else (eq_attr "alternative" "5,6,7,8") | 2431 | (if_then_else (eq_attr "alternative" "5,6,7,8") |
300 | 2432 | (const_string "vex") | 2432 | (const_string "maybe_vex") |
301 | 2433 | (const_string "orig"))) | 2433 | (const_string "orig"))) |
302 | 2434 | (set_attr "mode" "DI,DI,DI,DI,DI,TI,DI,TI,DI,V4SF,V2SF,V4SF,V2SF")]) | 2434 | (set_attr "mode" "DI,DI,DI,DI,DI,TI,DI,TI,DI,V4SF,V2SF,V4SF,V2SF")]) |
303 | 2435 | 2435 | ||
304 | @@ -2467,21 +2467,15 @@ | |||
305 | 2467 | return "movdq2q\t{%1, %0|%0, %1}"; | 2467 | return "movdq2q\t{%1, %0|%0, %1}"; |
306 | 2468 | 2468 | ||
307 | 2469 | case TYPE_SSEMOV: | 2469 | case TYPE_SSEMOV: |
308 | 2470 | if (TARGET_AVX) | ||
309 | 2471 | { | ||
310 | 2472 | if (get_attr_mode (insn) == MODE_TI) | ||
311 | 2473 | return "vmovdqa\t{%1, %0|%0, %1}"; | ||
312 | 2474 | else | ||
313 | 2475 | return "vmovq\t{%1, %0|%0, %1}"; | ||
314 | 2476 | } | ||
315 | 2477 | |||
316 | 2478 | if (get_attr_mode (insn) == MODE_TI) | 2470 | if (get_attr_mode (insn) == MODE_TI) |
319 | 2479 | return "movdqa\t{%1, %0|%0, %1}"; | 2471 | return "%vmovdqa\t{%1, %0|%0, %1}"; |
320 | 2480 | /* FALLTHRU */ | 2472 | /* Handle broken assemblers that require movd instead of movq. */ |
321 | 2473 | if (GENERAL_REG_P (operands[0]) || GENERAL_REG_P (operands[1])) | ||
322 | 2474 | return "%vmovd\t{%1, %0|%0, %1}"; | ||
323 | 2475 | return "%vmovq\t{%1, %0|%0, %1}"; | ||
324 | 2481 | 2476 | ||
325 | 2482 | case TYPE_MMXMOV: | 2477 | case TYPE_MMXMOV: |
328 | 2483 | /* Moves from and into integer register is done using movd | 2478 | /* Handle broken assemblers that require movd instead of movq. */ |
327 | 2484 | opcode with REX prefix. */ | ||
329 | 2485 | if (GENERAL_REG_P (operands[0]) || GENERAL_REG_P (operands[1])) | 2479 | if (GENERAL_REG_P (operands[0]) || GENERAL_REG_P (operands[1])) |
330 | 2486 | return "movd\t{%1, %0|%0, %1}"; | 2480 | return "movd\t{%1, %0|%0, %1}"; |
331 | 2487 | return "movq\t{%1, %0|%0, %1}"; | 2481 | return "movq\t{%1, %0|%0, %1}"; |
332 | @@ -2914,12 +2908,13 @@ | |||
333 | 2914 | 2908 | ||
334 | 2915 | case 9: case 10: case 14: case 15: | 2909 | case 9: case 10: case 14: case 15: |
335 | 2916 | return "movd\t{%1, %0|%0, %1}"; | 2910 | return "movd\t{%1, %0|%0, %1}"; |
336 | 2911 | |||
337 | 2912 | case 11: | ||
338 | 2913 | return "movq\t{%1, %0|%0, %1}"; | ||
339 | 2914 | |||
340 | 2917 | case 12: case 13: | 2915 | case 12: case 13: |
341 | 2918 | return "%vmovd\t{%1, %0|%0, %1}"; | 2916 | return "%vmovd\t{%1, %0|%0, %1}"; |
342 | 2919 | 2917 | ||
343 | 2920 | case 11: | ||
344 | 2921 | return "movq\t{%1, %0|%0, %1}"; | ||
345 | 2922 | |||
346 | 2923 | default: | 2918 | default: |
347 | 2924 | gcc_unreachable (); | 2919 | gcc_unreachable (); |
348 | 2925 | } | 2920 | } |
349 | @@ -3066,6 +3061,7 @@ | |||
350 | 3066 | case 3: | 3061 | case 3: |
351 | 3067 | case 4: | 3062 | case 4: |
352 | 3068 | return "#"; | 3063 | return "#"; |
353 | 3064 | |||
354 | 3069 | case 5: | 3065 | case 5: |
355 | 3070 | switch (get_attr_mode (insn)) | 3066 | switch (get_attr_mode (insn)) |
356 | 3071 | { | 3067 | { |
357 | @@ -3261,7 +3257,8 @@ | |||
358 | 3261 | 3257 | ||
359 | 3262 | case 9: | 3258 | case 9: |
360 | 3263 | case 10: | 3259 | case 10: |
362 | 3264 | return "%vmovd\t{%1, %0|%0, %1}"; | 3260 | /* Handle broken assemblers that require movd instead of movq. */ |
363 | 3261 | return "%vmovd\t{%1, %0|%0, %1}"; | ||
364 | 3265 | 3262 | ||
365 | 3266 | default: | 3263 | default: |
366 | 3267 | gcc_unreachable(); | 3264 | gcc_unreachable(); |
367 | @@ -3360,11 +3357,11 @@ | |||
368 | 3360 | switch (get_attr_mode (insn)) | 3357 | switch (get_attr_mode (insn)) |
369 | 3361 | { | 3358 | { |
370 | 3362 | case MODE_V4SF: | 3359 | case MODE_V4SF: |
372 | 3363 | return "xorps\t%0, %0"; | 3360 | return "%vxorps\t%0, %d0"; |
373 | 3364 | case MODE_V2DF: | 3361 | case MODE_V2DF: |
375 | 3365 | return "xorpd\t%0, %0"; | 3362 | return "%vxorpd\t%0, %d0"; |
376 | 3366 | case MODE_TI: | 3363 | case MODE_TI: |
378 | 3367 | return "pxor\t%0, %0"; | 3364 | return "%vpxor\t%0, %d0"; |
379 | 3368 | default: | 3365 | default: |
380 | 3369 | gcc_unreachable (); | 3366 | gcc_unreachable (); |
381 | 3370 | } | 3367 | } |
382 | @@ -3374,28 +3371,56 @@ | |||
383 | 3374 | switch (get_attr_mode (insn)) | 3371 | switch (get_attr_mode (insn)) |
384 | 3375 | { | 3372 | { |
385 | 3376 | case MODE_V4SF: | 3373 | case MODE_V4SF: |
387 | 3377 | return "movaps\t{%1, %0|%0, %1}"; | 3374 | return "%vmovaps\t{%1, %0|%0, %1}"; |
388 | 3378 | case MODE_V2DF: | 3375 | case MODE_V2DF: |
390 | 3379 | return "movapd\t{%1, %0|%0, %1}"; | 3376 | return "%vmovapd\t{%1, %0|%0, %1}"; |
391 | 3380 | case MODE_TI: | 3377 | case MODE_TI: |
393 | 3381 | return "movdqa\t{%1, %0|%0, %1}"; | 3378 | return "%vmovdqa\t{%1, %0|%0, %1}"; |
394 | 3382 | case MODE_DI: | 3379 | case MODE_DI: |
396 | 3383 | return "movq\t{%1, %0|%0, %1}"; | 3380 | return "%vmovq\t{%1, %0|%0, %1}"; |
397 | 3384 | case MODE_DF: | 3381 | case MODE_DF: |
399 | 3385 | return "movsd\t{%1, %0|%0, %1}"; | 3382 | if (TARGET_AVX) |
400 | 3383 | { | ||
401 | 3384 | if (REG_P (operands[0]) && REG_P (operands[1])) | ||
402 | 3385 | return "vmovsd\t{%1, %0, %0|%0, %0, %1}"; | ||
403 | 3386 | else | ||
404 | 3387 | return "vmovsd\t{%1, %0|%0, %1}"; | ||
405 | 3388 | } | ||
406 | 3389 | else | ||
407 | 3390 | return "movsd\t{%1, %0|%0, %1}"; | ||
408 | 3386 | case MODE_V1DF: | 3391 | case MODE_V1DF: |
410 | 3387 | return "movlpd\t{%1, %0|%0, %1}"; | 3392 | if (TARGET_AVX) |
411 | 3393 | { | ||
412 | 3394 | if (REG_P (operands[0])) | ||
413 | 3395 | return "vmovlpd\t{%1, %0, %0|%0, %0, %1}"; | ||
414 | 3396 | else | ||
415 | 3397 | return "vmovlpd\t{%1, %0|%0, %1}"; | ||
416 | 3398 | } | ||
417 | 3399 | else | ||
418 | 3400 | return "movlpd\t{%1, %0|%0, %1}"; | ||
419 | 3388 | case MODE_V2SF: | 3401 | case MODE_V2SF: |
421 | 3389 | return "movlps\t{%1, %0|%0, %1}"; | 3402 | if (TARGET_AVX) |
422 | 3403 | { | ||
423 | 3404 | if (REG_P (operands[0])) | ||
424 | 3405 | return "vmovlps\t{%1, %0, %0|%0, %0, %1}"; | ||
425 | 3406 | else | ||
426 | 3407 | return "vmovlps\t{%1, %0|%0, %1}"; | ||
427 | 3408 | } | ||
428 | 3409 | else | ||
429 | 3410 | return "movlps\t{%1, %0|%0, %1}"; | ||
430 | 3390 | default: | 3411 | default: |
431 | 3391 | gcc_unreachable (); | 3412 | gcc_unreachable (); |
432 | 3392 | } | 3413 | } |
433 | 3393 | 3414 | ||
434 | 3394 | default: | 3415 | default: |
436 | 3395 | gcc_unreachable(); | 3416 | gcc_unreachable (); |
437 | 3396 | } | 3417 | } |
438 | 3397 | } | 3418 | } |
439 | 3398 | [(set_attr "type" "fmov,fmov,fmov,multi,multi,sselog1,ssemov,ssemov,ssemov") | 3419 | [(set_attr "type" "fmov,fmov,fmov,multi,multi,sselog1,ssemov,ssemov,ssemov") |
440 | 3420 | (set (attr "prefix") | ||
441 | 3421 | (if_then_else (eq_attr "alternative" "0,1,2,3,4") | ||
442 | 3422 | (const_string "orig") | ||
443 | 3423 | (const_string "maybe_vex"))) | ||
444 | 3399 | (set (attr "prefix_data16") | 3424 | (set (attr "prefix_data16") |
445 | 3400 | (if_then_else (eq_attr "mode" "V1DF") | 3425 | (if_then_else (eq_attr "mode" "V1DF") |
446 | 3401 | (const_string "1") | 3426 | (const_string "1") |
447 | 3402 | 3427 | ||
448 | === modified file 'gcc/config/i386/mmx.md' | |||
449 | --- gcc/config/i386/mmx.md 2009-12-30 11:07:12 +0000 | |||
450 | +++ gcc/config/i386/mmx.md 2011-05-05 15:18:28 +0000 | |||
451 | @@ -63,6 +63,7 @@ | |||
452 | 63 | DONE; | 63 | DONE; |
453 | 64 | }) | 64 | }) |
454 | 65 | 65 | ||
455 | 66 | ;; movd instead of movq is required to handle broken assemblers. | ||
456 | 66 | (define_insn "*mov<mode>_internal_rex64" | 67 | (define_insn "*mov<mode>_internal_rex64" |
457 | 67 | [(set (match_operand:MMXMODEI8 0 "nonimmediate_operand" | 68 | [(set (match_operand:MMXMODEI8 0 "nonimmediate_operand" |
458 | 68 | "=rm,r,!?y,!?y ,m ,!y,*Y2,x,x ,m,r,Yi") | 69 | "=rm,r,!?y,!?y ,m ,!y,*Y2,x,x ,m,r,Yi") |
459 | @@ -81,8 +82,8 @@ | |||
460 | 81 | %vpxor\t%0, %d0 | 82 | %vpxor\t%0, %d0 |
461 | 82 | %vmovq\t{%1, %0|%0, %1} | 83 | %vmovq\t{%1, %0|%0, %1} |
462 | 83 | %vmovq\t{%1, %0|%0, %1} | 84 | %vmovq\t{%1, %0|%0, %1} |
465 | 84 | %vmovq\t{%1, %0|%0, %1} | 85 | %vmovd\t{%1, %0|%0, %1} |
466 | 85 | %vmovq\t{%1, %0|%0, %1}" | 86 | %vmovd\t{%1, %0|%0, %1}" |
467 | 86 | [(set_attr "type" "imov,imov,mmx,mmxmov,mmxmov,ssecvt,ssecvt,sselog1,ssemov,ssemov,ssemov,ssemov") | 87 | [(set_attr "type" "imov,imov,mmx,mmxmov,mmxmov,ssecvt,ssecvt,sselog1,ssemov,ssemov,ssemov,ssemov") |
468 | 87 | (set_attr "unit" "*,*,*,*,*,mmx,mmx,*,*,*,*,*") | 88 | (set_attr "unit" "*,*,*,*,*,mmx,mmx,*,*,*,*,*") |
469 | 88 | (set_attr "prefix_rep" "*,*,*,*,*,1,1,*,1,*,*,*") | 89 | (set_attr "prefix_rep" "*,*,*,*,*,1,1,*,1,*,*,*") |
470 | @@ -192,6 +193,7 @@ | |||
471 | 192 | (const_string "orig"))) | 193 | (const_string "orig"))) |
472 | 193 | (set_attr "mode" "DI,DI,DI,DI,DI,DI,DI,V4SF,V4SF,V2SF,V2SF,DI,DI")]) | 194 | (set_attr "mode" "DI,DI,DI,DI,DI,DI,DI,V4SF,V4SF,V2SF,V2SF,DI,DI")]) |
473 | 194 | 195 | ||
474 | 196 | ;; movd instead of movq is required to handle broken assemblers. | ||
475 | 195 | (define_insn "*movv2sf_internal_rex64" | 197 | (define_insn "*movv2sf_internal_rex64" |
476 | 196 | [(set (match_operand:V2SF 0 "nonimmediate_operand" | 198 | [(set (match_operand:V2SF 0 "nonimmediate_operand" |
477 | 197 | "=rm,r ,!?y,!?y ,m ,!y,*Y2,x,x,x,m,r,Yi") | 199 | "=rm,r ,!?y,!?y ,m ,!y,*Y2,x,x,x,m,r,Yi") |
478 | 198 | 200 | ||
479 | === modified file 'gcc/config/i386/sse.md' | |||
480 | --- gcc/config/i386/sse.md 2011-04-16 07:53:39 +0000 | |||
481 | +++ gcc/config/i386/sse.md 2011-05-05 15:18:28 +0000 | |||
482 | @@ -7473,9 +7473,8 @@ | |||
483 | 7473 | "@ | 7473 | "@ |
484 | 7474 | # | 7474 | # |
485 | 7475 | # | 7475 | # |
487 | 7476 | %vmov{q}\t{%1, %0|%0, %1}" | 7476 | mov{q}\t{%1, %0|%0, %1}" |
488 | 7477 | [(set_attr "type" "*,*,imov") | 7477 | [(set_attr "type" "*,*,imov") |
489 | 7478 | (set_attr "prefix" "*,*,maybe_vex") | ||
490 | 7479 | (set_attr "mode" "*,*,DI")]) | 7478 | (set_attr "mode" "*,*,DI")]) |
491 | 7480 | 7479 | ||
492 | 7481 | (define_insn "*sse2_storeq" | 7480 | (define_insn "*sse2_storeq" |
493 | @@ -7513,11 +7512,11 @@ | |||
494 | 7513 | vmovhps\t{%1, %0|%0, %1} | 7512 | vmovhps\t{%1, %0|%0, %1} |
495 | 7514 | vpsrldq\t{$8, %1, %0|%0, %1, 8} | 7513 | vpsrldq\t{$8, %1, %0|%0, %1, 8} |
496 | 7515 | vmovq\t{%H1, %0|%0, %H1} | 7514 | vmovq\t{%H1, %0|%0, %H1} |
498 | 7516 | vmov{q}\t{%H1, %0|%0, %H1}" | 7515 | mov{q}\t{%H1, %0|%0, %H1}" |
499 | 7517 | [(set_attr "type" "ssemov,sseishft1,ssemov,imov") | 7516 | [(set_attr "type" "ssemov,sseishft1,ssemov,imov") |
500 | 7518 | (set_attr "length_immediate" "*,1,*,*") | 7517 | (set_attr "length_immediate" "*,1,*,*") |
501 | 7519 | (set_attr "memory" "*,none,*,*") | 7518 | (set_attr "memory" "*,none,*,*") |
503 | 7520 | (set_attr "prefix" "vex") | 7519 | (set_attr "prefix" "vex,vex,vex,orig") |
504 | 7521 | (set_attr "mode" "V2SF,TI,TI,DI")]) | 7520 | (set_attr "mode" "V2SF,TI,TI,DI")]) |
505 | 7522 | 7521 | ||
506 | 7523 | (define_insn "*vec_extractv2di_1_rex64" | 7522 | (define_insn "*vec_extractv2di_1_rex64" |
507 | @@ -7795,6 +7794,7 @@ | |||
508 | 7795 | (const_string "vex"))) | 7794 | (const_string "vex"))) |
509 | 7796 | (set_attr "mode" "TI,TI,TI,TI,TI,V2SF")]) | 7795 | (set_attr "mode" "TI,TI,TI,TI,TI,V2SF")]) |
510 | 7797 | 7796 | ||
511 | 7797 | ;; movd instead of movq is required to handle broken assemblers. | ||
512 | 7798 | (define_insn "*vec_concatv2di_rex64_sse4_1" | 7798 | (define_insn "*vec_concatv2di_rex64_sse4_1" |
513 | 7799 | [(set (match_operand:V2DI 0 "register_operand" "=x ,x ,Yi,!x,x,x,x") | 7799 | [(set (match_operand:V2DI 0 "register_operand" "=x ,x ,Yi,!x,x,x,x") |
514 | 7800 | (vec_concat:V2DI | 7800 | (vec_concat:V2DI |
515 | @@ -7804,7 +7804,7 @@ | |||
516 | 7804 | "@ | 7804 | "@ |
517 | 7805 | pinsrq\t{$0x1, %2, %0|%0, %2, 0x1} | 7805 | pinsrq\t{$0x1, %2, %0|%0, %2, 0x1} |
518 | 7806 | movq\t{%1, %0|%0, %1} | 7806 | movq\t{%1, %0|%0, %1} |
520 | 7807 | movq\t{%1, %0|%0, %1} | 7807 | movd\t{%1, %0|%0, %1} |
521 | 7808 | movq2dq\t{%1, %0|%0, %1} | 7808 | movq2dq\t{%1, %0|%0, %1} |
522 | 7809 | punpcklqdq\t{%2, %0|%0, %2} | 7809 | punpcklqdq\t{%2, %0|%0, %2} |
523 | 7810 | movlhps\t{%2, %0|%0, %2} | 7810 | movlhps\t{%2, %0|%0, %2} |
524 | @@ -7815,6 +7815,7 @@ | |||
525 | 7815 | (set_attr "length_immediate" "1,*,*,*,*,*,*") | 7815 | (set_attr "length_immediate" "1,*,*,*,*,*,*") |
526 | 7816 | (set_attr "mode" "TI,TI,TI,TI,TI,V4SF,V2SF")]) | 7816 | (set_attr "mode" "TI,TI,TI,TI,TI,V4SF,V2SF")]) |
527 | 7817 | 7817 | ||
528 | 7818 | ;; movd instead of movq is required to handle broken assemblers. | ||
529 | 7818 | (define_insn "*vec_concatv2di_rex64_sse" | 7819 | (define_insn "*vec_concatv2di_rex64_sse" |
530 | 7819 | [(set (match_operand:V2DI 0 "register_operand" "=Y2 ,Yi,!Y2,Y2,x,x") | 7820 | [(set (match_operand:V2DI 0 "register_operand" "=Y2 ,Yi,!Y2,Y2,x,x") |
531 | 7820 | (vec_concat:V2DI | 7821 | (vec_concat:V2DI |
532 | @@ -7823,7 +7824,7 @@ | |||
533 | 7823 | "TARGET_64BIT && TARGET_SSE" | 7824 | "TARGET_64BIT && TARGET_SSE" |
534 | 7824 | "@ | 7825 | "@ |
535 | 7825 | movq\t{%1, %0|%0, %1} | 7826 | movq\t{%1, %0|%0, %1} |
537 | 7826 | movq\t{%1, %0|%0, %1} | 7827 | movd\t{%1, %0|%0, %1} |
538 | 7827 | movq2dq\t{%1, %0|%0, %1} | 7828 | movq2dq\t{%1, %0|%0, %1} |
539 | 7828 | punpcklqdq\t{%2, %0|%0, %2} | 7829 | punpcklqdq\t{%2, %0|%0, %2} |
540 | 7829 | movlhps\t{%2, %0|%0, %2} | 7830 | movlhps\t{%2, %0|%0, %2} |
541 | 7830 | 7831 | ||
542 | === modified file 'gcc/config/pa/pa-protos.h' | |||
543 | --- gcc/config/pa/pa-protos.h 2009-09-23 18:08:32 +0000 | |||
544 | +++ gcc/config/pa/pa-protos.h 2011-05-05 15:18:28 +0000 | |||
545 | @@ -79,7 +79,6 @@ | |||
546 | 79 | extern int prefetch_cc_operand (rtx, enum machine_mode); | 79 | extern int prefetch_cc_operand (rtx, enum machine_mode); |
547 | 80 | extern int prefetch_nocc_operand (rtx, enum machine_mode); | 80 | extern int prefetch_nocc_operand (rtx, enum machine_mode); |
548 | 81 | extern int and_operand (rtx, enum machine_mode); | 81 | extern int and_operand (rtx, enum machine_mode); |
549 | 82 | extern int ior_operand (rtx, enum machine_mode); | ||
550 | 83 | extern int arith32_operand (rtx, enum machine_mode); | 82 | extern int arith32_operand (rtx, enum machine_mode); |
551 | 84 | extern int uint32_operand (rtx, enum machine_mode); | 83 | extern int uint32_operand (rtx, enum machine_mode); |
552 | 85 | extern int reg_before_reload_operand (rtx, enum machine_mode); | 84 | extern int reg_before_reload_operand (rtx, enum machine_mode); |
553 | @@ -94,7 +93,6 @@ | |||
554 | 94 | extern int fmpyaddoperands (rtx *); | 93 | extern int fmpyaddoperands (rtx *); |
555 | 95 | extern int fmpysuboperands (rtx *); | 94 | extern int fmpysuboperands (rtx *); |
556 | 96 | extern int call_operand_address (rtx, enum machine_mode); | 95 | extern int call_operand_address (rtx, enum machine_mode); |
557 | 97 | extern int ior_operand (rtx, enum machine_mode); | ||
558 | 98 | extern void emit_bcond_fp (rtx[]); | 96 | extern void emit_bcond_fp (rtx[]); |
559 | 99 | extern int emit_move_sequence (rtx *, enum machine_mode, rtx); | 97 | extern int emit_move_sequence (rtx *, enum machine_mode, rtx); |
560 | 100 | extern int emit_hpdiv_const (rtx *, int); | 98 | extern int emit_hpdiv_const (rtx *, int); |
561 | 101 | 99 | ||
562 | === modified file 'gcc/config/pa/pa.md' | |||
563 | --- gcc/config/pa/pa.md 2010-12-30 21:57:32 +0000 | |||
564 | +++ gcc/config/pa/pa.md 2011-05-05 15:18:28 +0000 | |||
565 | @@ -5686,7 +5686,7 @@ | |||
566 | 5686 | (define_expand "iordi3" | 5686 | (define_expand "iordi3" |
567 | 5687 | [(set (match_operand:DI 0 "register_operand" "") | 5687 | [(set (match_operand:DI 0 "register_operand" "") |
568 | 5688 | (ior:DI (match_operand:DI 1 "register_operand" "") | 5688 | (ior:DI (match_operand:DI 1 "register_operand" "") |
570 | 5689 | (match_operand:DI 2 "ior_operand" "")))] | 5689 | (match_operand:DI 2 "reg_or_cint_ior_operand" "")))] |
571 | 5690 | "" | 5690 | "" |
572 | 5691 | " | 5691 | " |
573 | 5692 | { | 5692 | { |
574 | @@ -5707,7 +5707,7 @@ | |||
575 | 5707 | (define_insn "" | 5707 | (define_insn "" |
576 | 5708 | [(set (match_operand:DI 0 "register_operand" "=r,r") | 5708 | [(set (match_operand:DI 0 "register_operand" "=r,r") |
577 | 5709 | (ior:DI (match_operand:DI 1 "register_operand" "0,0") | 5709 | (ior:DI (match_operand:DI 1 "register_operand" "0,0") |
579 | 5710 | (match_operand:DI 2 "ior_operand" "M,i")))] | 5710 | (match_operand:DI 2 "cint_ior_operand" "M,i")))] |
580 | 5711 | "TARGET_64BIT" | 5711 | "TARGET_64BIT" |
581 | 5712 | "* return output_64bit_ior (operands); " | 5712 | "* return output_64bit_ior (operands); " |
582 | 5713 | [(set_attr "type" "binary,shift") | 5713 | [(set_attr "type" "binary,shift") |
583 | @@ -5726,19 +5726,14 @@ | |||
584 | 5726 | (define_expand "iorsi3" | 5726 | (define_expand "iorsi3" |
585 | 5727 | [(set (match_operand:SI 0 "register_operand" "") | 5727 | [(set (match_operand:SI 0 "register_operand" "") |
586 | 5728 | (ior:SI (match_operand:SI 1 "register_operand" "") | 5728 | (ior:SI (match_operand:SI 1 "register_operand" "") |
588 | 5729 | (match_operand:SI 2 "arith32_operand" "")))] | 5729 | (match_operand:SI 2 "reg_or_cint_ior_operand" "")))] |
589 | 5730 | "" | 5730 | "" |
596 | 5731 | " | 5731 | "") |
591 | 5732 | { | ||
592 | 5733 | if (! (ior_operand (operands[2], SImode) | ||
593 | 5734 | || register_operand (operands[2], SImode))) | ||
594 | 5735 | operands[2] = force_reg (SImode, operands[2]); | ||
595 | 5736 | }") | ||
597 | 5737 | 5732 | ||
598 | 5738 | (define_insn "" | 5733 | (define_insn "" |
599 | 5739 | [(set (match_operand:SI 0 "register_operand" "=r,r") | 5734 | [(set (match_operand:SI 0 "register_operand" "=r,r") |
600 | 5740 | (ior:SI (match_operand:SI 1 "register_operand" "0,0") | 5735 | (ior:SI (match_operand:SI 1 "register_operand" "0,0") |
602 | 5741 | (match_operand:SI 2 "ior_operand" "M,i")))] | 5736 | (match_operand:SI 2 "cint_ior_operand" "M,i")))] |
603 | 5742 | "" | 5737 | "" |
604 | 5743 | "* return output_ior (operands); " | 5738 | "* return output_ior (operands); " |
605 | 5744 | [(set_attr "type" "binary,shift") | 5739 | [(set_attr "type" "binary,shift") |
606 | 5745 | 5740 | ||
607 | === modified file 'gcc/config/pa/predicates.md' | |||
608 | --- gcc/config/pa/predicates.md 2010-07-03 21:46:51 +0000 | |||
609 | +++ gcc/config/pa/predicates.md 2011-05-05 15:18:28 +0000 | |||
610 | @@ -411,11 +411,15 @@ | |||
611 | 411 | 411 | ||
612 | 412 | ;; True iff depi can be used to compute (reg | OP). | 412 | ;; True iff depi can be used to compute (reg | OP). |
613 | 413 | 413 | ||
619 | 414 | (define_predicate "ior_operand" | 414 | (define_predicate "cint_ior_operand" |
620 | 415 | (match_code "const_int") | 415 | (and (match_code "const_int") |
621 | 416 | { | 416 | (match_test "ior_mask_p (INTVAL (op))"))) |
622 | 417 | return (GET_CODE (op) == CONST_INT && ior_mask_p (INTVAL (op))); | 417 | |
623 | 418 | }) | 418 | ;; True iff OP can be used to compute (reg | OP). |
624 | 419 | |||
625 | 420 | (define_predicate "reg_or_cint_ior_operand" | ||
626 | 421 | (ior (match_operand 0 "register_operand") | ||
627 | 422 | (match_operand 0 "cint_ior_operand"))) | ||
628 | 419 | 423 | ||
629 | 420 | ;; True iff OP is a CONST_INT of the forms 0...0xxxx or | 424 | ;; True iff OP is a CONST_INT of the forms 0...0xxxx or |
630 | 421 | ;; 0...01...1xxxx. Such values can be the left hand side x in (x << | 425 | ;; 0...01...1xxxx. Such values can be the left hand side x in (x << |
631 | 422 | 426 | ||
632 | === modified file 'gcc/cp/ChangeLog' | |||
633 | --- gcc/cp/ChangeLog 2011-04-28 14:12:32 +0000 | |||
634 | +++ gcc/cp/ChangeLog 2011-05-05 15:18:28 +0000 | |||
635 | @@ -1,3 +1,9 @@ | |||
636 | 1 | 2011-04-27 Jason Merrill <jason@redhat.com> | ||
637 | 2 | |||
638 | 3 | PR c++/48046 | ||
639 | 4 | * parser.c (cp_parser_diagnose_invalid_type_name): Commit | ||
640 | 5 | to tentative parse sooner. | ||
641 | 6 | |||
642 | 1 | 2011-04-28 Release Manager | 7 | 2011-04-28 Release Manager |
643 | 2 | 8 | ||
644 | 3 | * GCC 4.5.3 released. | 9 | * GCC 4.5.3 released. |
645 | 4 | 10 | ||
646 | === modified file 'gcc/cp/parser.c' | |||
647 | --- gcc/cp/parser.c 2011-04-27 05:20:46 +0000 | |||
648 | +++ gcc/cp/parser.c 2011-05-05 15:18:28 +0000 | |||
649 | @@ -2333,6 +2333,7 @@ | |||
650 | 2333 | location_t location) | 2333 | location_t location) |
651 | 2334 | { | 2334 | { |
652 | 2335 | tree decl, old_scope; | 2335 | tree decl, old_scope; |
653 | 2336 | cp_parser_commit_to_tentative_parse (parser); | ||
654 | 2336 | /* Try to lookup the identifier. */ | 2337 | /* Try to lookup the identifier. */ |
655 | 2337 | old_scope = parser->scope; | 2338 | old_scope = parser->scope; |
656 | 2338 | parser->scope = scope; | 2339 | parser->scope = scope; |
657 | @@ -2423,7 +2424,6 @@ | |||
658 | 2423 | else | 2424 | else |
659 | 2424 | gcc_unreachable (); | 2425 | gcc_unreachable (); |
660 | 2425 | } | 2426 | } |
661 | 2426 | cp_parser_commit_to_tentative_parse (parser); | ||
662 | 2427 | } | 2427 | } |
663 | 2428 | 2428 | ||
664 | 2429 | /* Check for a common situation where a type-name should be present, | 2429 | /* Check for a common situation where a type-name should be present, |
665 | 2430 | 2430 | ||
666 | === modified file 'gcc/df-problems.c' | |||
667 | --- gcc/df-problems.c 2011-02-08 12:07:29 +0000 | |||
668 | +++ gcc/df-problems.c 2011-05-05 15:18:28 +0000 | |||
669 | @@ -3916,13 +3916,9 @@ | |||
670 | 3916 | the block, starting with the first one. | 3916 | the block, starting with the first one. |
671 | 3917 | ----------------------------------------------------------------------------*/ | 3917 | ----------------------------------------------------------------------------*/ |
672 | 3918 | 3918 | ||
680 | 3919 | /* Apply the artificial uses and defs at the top of BB in a forwards | 3919 | /* Initialize the LIVE bitmap, which should be copied from DF_LIVE_IN or |
681 | 3920 | direction. ??? This is wrong; defs mark the point where a pseudo | 3920 | DF_LR_IN for basic block BB, for forward scanning by marking artificial |
682 | 3921 | becomes live when scanning forwards (unless a def is unused). Since | 3921 | defs live. */ |
676 | 3922 | there are no REG_UNUSED notes for artificial defs, passes that | ||
677 | 3923 | require artificial defs probably should not call this function | ||
678 | 3924 | unless (as is the case for fwprop) they are correct when liveness | ||
679 | 3925 | bitmaps are *under*estimated. */ | ||
683 | 3926 | 3922 | ||
684 | 3927 | void | 3923 | void |
685 | 3928 | df_simulate_initialize_forwards (basic_block bb, bitmap live) | 3924 | df_simulate_initialize_forwards (basic_block bb, bitmap live) |
686 | 3929 | 3925 | ||
687 | === modified file 'gcc/final.c' | |||
688 | --- gcc/final.c 2011-02-08 10:51:58 +0000 | |||
689 | +++ gcc/final.c 2011-05-05 15:18:28 +0000 | |||
690 | @@ -2241,6 +2241,11 @@ | |||
691 | 2241 | location_t loc; | 2241 | location_t loc; |
692 | 2242 | expanded_location expanded; | 2242 | expanded_location expanded; |
693 | 2243 | 2243 | ||
694 | 2244 | /* Make sure we flush any queued register saves in case this | ||
695 | 2245 | clobbers affected registers. */ | ||
696 | 2246 | if (dwarf2out_do_frame ()) | ||
697 | 2247 | dwarf2out_frame_debug (insn, false); | ||
698 | 2248 | |||
699 | 2244 | /* There's no telling what that did to the condition codes. */ | 2249 | /* There's no telling what that did to the condition codes. */ |
700 | 2245 | CC_STATUS_INIT; | 2250 | CC_STATUS_INIT; |
701 | 2246 | 2251 | ||
702 | 2247 | 2252 | ||
703 | === modified file 'gcc/fold-const.c' | |||
704 | --- gcc/fold-const.c 2011-04-28 16:13:24 +0000 | |||
705 | +++ gcc/fold-const.c 2011-05-05 15:18:28 +0000 | |||
706 | @@ -2784,8 +2784,6 @@ | |||
707 | 2784 | 2784 | ||
708 | 2785 | case VOID_TYPE: | 2785 | case VOID_TYPE: |
709 | 2786 | tem = fold_ignored_result (arg); | 2786 | tem = fold_ignored_result (arg); |
710 | 2787 | if (TREE_CODE (tem) == MODIFY_EXPR) | ||
711 | 2788 | goto fold_convert_exit; | ||
712 | 2789 | return fold_build1_loc (loc, NOP_EXPR, type, tem); | 2787 | return fold_build1_loc (loc, NOP_EXPR, type, tem); |
713 | 2790 | 2788 | ||
714 | 2791 | default: | 2789 | default: |
715 | 2792 | 2790 | ||
716 | === modified file 'gcc/ifcvt.c' | |||
717 | --- gcc/ifcvt.c 2011-02-08 12:07:29 +0000 | |||
718 | +++ gcc/ifcvt.c 2011-05-05 15:18:28 +0000 | |||
719 | @@ -4010,8 +4010,7 @@ | |||
720 | 4010 | { | 4010 | { |
721 | 4011 | basic_block new_dest = dest_edge->dest; | 4011 | basic_block new_dest = dest_edge->dest; |
722 | 4012 | rtx head, end, jump, earliest = NULL_RTX, old_dest; | 4012 | rtx head, end, jump, earliest = NULL_RTX, old_dest; |
725 | 4013 | bitmap merge_set = NULL; | 4013 | bitmap merge_set = NULL, merge_set_noclobber = NULL; |
724 | 4014 | bitmap merge_set_noclobber = NULL; | ||
726 | 4015 | /* Number of pending changes. */ | 4014 | /* Number of pending changes. */ |
727 | 4016 | int n_validated_changes = 0; | 4015 | int n_validated_changes = 0; |
728 | 4017 | rtx new_dest_label; | 4016 | rtx new_dest_label; |
729 | @@ -4165,9 +4164,11 @@ | |||
730 | 4165 | 4164 | ||
731 | 4166 | /* Collect: | 4165 | /* Collect: |
732 | 4167 | MERGE_SET = set of registers set in MERGE_BB | 4166 | MERGE_SET = set of registers set in MERGE_BB |
733 | 4167 | MERGE_SET_NOCLOBBER = like MERGE_SET, but only includes registers | ||
734 | 4168 | that are really set, not just clobbered. | ||
735 | 4168 | TEST_LIVE = set of registers live at EARLIEST | 4169 | TEST_LIVE = set of registers live at EARLIEST |
738 | 4169 | TEST_SET = set of registers set between EARLIEST and the | 4170 | TEST_SET = set of registers set between EARLIEST and the |
739 | 4170 | end of the block. */ | 4171 | end of the block. */ |
740 | 4171 | 4172 | ||
741 | 4172 | merge_set = BITMAP_ALLOC (®_obstack); | 4173 | merge_set = BITMAP_ALLOC (®_obstack); |
742 | 4173 | merge_set_noclobber = BITMAP_ALLOC (®_obstack); | 4174 | merge_set_noclobber = BITMAP_ALLOC (®_obstack); |
743 | @@ -4182,14 +4183,8 @@ | |||
744 | 4182 | { | 4183 | { |
745 | 4183 | if (NONDEBUG_INSN_P (insn)) | 4184 | if (NONDEBUG_INSN_P (insn)) |
746 | 4184 | { | 4185 | { |
755 | 4185 | unsigned int uid = INSN_UID (insn); | 4186 | df_simulate_find_defs (insn, merge_set); |
756 | 4186 | df_ref *def_rec; | 4187 | df_simulate_find_noclobber_defs (insn, merge_set_noclobber); |
749 | 4187 | for (def_rec = DF_INSN_UID_DEFS (uid); *def_rec; def_rec++) | ||
750 | 4188 | { | ||
751 | 4189 | df_ref def = *def_rec; | ||
752 | 4190 | bitmap_set_bit (merge_set, DF_REF_REGNO (def)); | ||
753 | 4191 | } | ||
754 | 4192 | df_simulate_find_noclobber_defs (insn, merge_set_noclobber); | ||
757 | 4193 | } | 4188 | } |
758 | 4194 | } | 4189 | } |
759 | 4195 | 4190 | ||
760 | @@ -4231,7 +4226,9 @@ | |||
761 | 4231 | } | 4226 | } |
762 | 4232 | 4227 | ||
763 | 4233 | /* We can perform the transformation if | 4228 | /* We can perform the transformation if |
765 | 4234 | MERGE_SET & (TEST_SET | TEST_LIVE) | 4229 | MERGE_SET_NOCLOBBER & TEST_SET |
766 | 4230 | and | ||
767 | 4231 | MERGE_SET & TEST_LIVE | ||
768 | 4235 | and | 4232 | and |
769 | 4236 | TEST_SET & DF_LIVE_IN (merge_bb) | 4233 | TEST_SET & DF_LIVE_IN (merge_bb) |
770 | 4237 | are empty. */ | 4234 | are empty. */ |
771 | @@ -4319,11 +4316,11 @@ | |||
772 | 4319 | unsigned i; | 4316 | unsigned i; |
773 | 4320 | bitmap_iterator bi; | 4317 | bitmap_iterator bi; |
774 | 4321 | 4318 | ||
776 | 4322 | EXECUTE_IF_SET_IN_BITMAP (merge_set, 0, i, bi) | 4319 | EXECUTE_IF_SET_IN_BITMAP (merge_set_noclobber, 0, i, bi) |
777 | 4323 | remove_reg_equal_equiv_notes_for_regno (i); | 4320 | remove_reg_equal_equiv_notes_for_regno (i); |
778 | 4324 | 4321 | ||
779 | 4325 | BITMAP_FREE (merge_set); | 4322 | BITMAP_FREE (merge_set); |
781 | 4326 | BITMAP_FREE (merge_set_noclobber); | 4323 | BITMAP_FREE (merge_set_noclobber); |
782 | 4327 | } | 4324 | } |
783 | 4328 | 4325 | ||
784 | 4329 | reorder_insns (head, end, PREV_INSN (earliest)); | 4326 | reorder_insns (head, end, PREV_INSN (earliest)); |
785 | 4330 | 4327 | ||
786 | === modified file 'gcc/testsuite/ChangeLog' | |||
787 | --- gcc/testsuite/ChangeLog 2011-04-28 14:11:59 +0000 | |||
788 | +++ gcc/testsuite/ChangeLog 2011-05-05 15:18:28 +0000 | |||
789 | @@ -1,3 +1,53 @@ | |||
790 | 1 | 2010-05-05 Ira Rosen <ira.rosen@linaro.org> | ||
791 | 2 | |||
792 | 3 | Backport from mainline: | ||
793 | 4 | 2011-04-18 Ulrich Weigand <ulrich.weigand@linaro.org> | ||
794 | 5 | Ira Rosen <ira.rosen@linaro.org> | ||
795 | 6 | |||
796 | 7 | PR target/48252 | ||
797 | 8 | * gcc.target/arm/pr48252.c: New test. | ||
798 | 9 | |||
799 | 10 | 2011-05-04 Uros Bizjak <ubizjak@gmail.com> | ||
800 | 11 | |||
801 | 12 | Backport from mainline | ||
802 | 13 | 2011-04-21 Uros Bizjak <ubizjak@gmail.com> | ||
803 | 14 | |||
804 | 15 | PR target/48708 | ||
805 | 16 | * gcc.target/i386/pr48708.c: New test. | ||
806 | 17 | |||
807 | 18 | 2011-05-04 Uros Bizjak <ubizjak@gmail.com> | ||
808 | 19 | |||
809 | 20 | Backport from mainline | ||
810 | 21 | 2010-12-08 H.J. Lu <hongjiu.lu@intel.com> | ||
811 | 22 | |||
812 | 23 | * gcc.target/i386/sse2-init-v2di-2.c: Add "-dp" and update | ||
813 | 24 | expected scan. | ||
814 | 25 | |||
815 | 26 | 2011-05-03 Jakub Jelinek <jakub@redhat.com> | ||
816 | 27 | |||
817 | 28 | PR target/48774 | ||
818 | 29 | * gcc.dg/pr48774.c: New test. | ||
819 | 30 | |||
820 | 31 | Backport from mainline | ||
821 | 32 | 2011-04-30 Jakub Jelinek <jakub@redhat.com> | ||
822 | 33 | |||
823 | 34 | PR tree-optimization/48809 | ||
824 | 35 | * gcc.c-torture/execute/pr48809.c: New test. | ||
825 | 36 | |||
826 | 37 | 2011-04-27 Jakub Jelinek <jakub@redhat.com> | ||
827 | 38 | |||
828 | 39 | PR c/48742 | ||
829 | 40 | * gcc.c-torture/compile/pr48742.c: New test. | ||
830 | 41 | |||
831 | 42 | 2011-04-23 Jakub Jelinek <jakub@redhat.com> | ||
832 | 43 | |||
833 | 44 | PR c/48685 | ||
834 | 45 | * gcc.dg/pr48685.c: New test. | ||
835 | 46 | |||
836 | 47 | 2011-04-27 Jason Merrill <jason@redhat.com> | ||
837 | 48 | |||
838 | 49 | * g++.dg/parse/ambig6.C: New. | ||
839 | 50 | |||
840 | 1 | 2011-04-28 Release Manager | 51 | 2011-04-28 Release Manager |
841 | 2 | 52 | ||
842 | 3 | * GCC 4.5.3 released. | 53 | * GCC 4.5.3 released. |
843 | 4 | 54 | ||
844 | === added file 'gcc/testsuite/g++.dg/parse/ambig6.C' | |||
845 | --- gcc/testsuite/g++.dg/parse/ambig6.C 1970-01-01 00:00:00 +0000 | |||
846 | +++ gcc/testsuite/g++.dg/parse/ambig6.C 2011-05-05 15:18:28 +0000 | |||
847 | @@ -0,0 +1,12 @@ | |||
848 | 1 | // PR c++/48046 | ||
849 | 2 | |||
850 | 3 | namespace N1 { typedef int T; } // { dg-error "" } | ||
851 | 4 | namespace N2 { typedef float T; } // { dg-error "" } | ||
852 | 5 | |||
853 | 6 | int main() | ||
854 | 7 | { | ||
855 | 8 | using namespace N1; | ||
856 | 9 | using namespace N2; | ||
857 | 10 | |||
858 | 11 | static T t; // { dg-error "" } | ||
859 | 12 | } | ||
860 | 0 | 13 | ||
861 | === added file 'gcc/testsuite/gcc.c-torture/compile/pr48742.c' | |||
862 | --- gcc/testsuite/gcc.c-torture/compile/pr48742.c 1970-01-01 00:00:00 +0000 | |||
863 | +++ gcc/testsuite/gcc.c-torture/compile/pr48742.c 2011-05-05 15:18:28 +0000 | |||
864 | @@ -0,0 +1,15 @@ | |||
865 | 1 | /* PR c/48742 */ | ||
866 | 2 | |||
867 | 3 | void baz (int); | ||
868 | 4 | |||
869 | 5 | int | ||
870 | 6 | foo (void) | ||
871 | 7 | { | ||
872 | 8 | return 1 / 0 > 0; | ||
873 | 9 | } | ||
874 | 10 | |||
875 | 11 | void | ||
876 | 12 | bar (void) | ||
877 | 13 | { | ||
878 | 14 | baz (1 <= 2 % (3 >> 1 > 5 / 6 == 3)); | ||
879 | 15 | } | ||
880 | 0 | 16 | ||
881 | === added file 'gcc/testsuite/gcc.c-torture/execute/pr48809.c' | |||
882 | --- gcc/testsuite/gcc.c-torture/execute/pr48809.c 1970-01-01 00:00:00 +0000 | |||
883 | +++ gcc/testsuite/gcc.c-torture/execute/pr48809.c 2011-05-05 15:18:28 +0000 | |||
884 | @@ -0,0 +1,60 @@ | |||
885 | 1 | /* PR tree-optimization/48809 */ | ||
886 | 2 | |||
887 | 3 | extern void abort (void); | ||
888 | 4 | |||
889 | 5 | int | ||
890 | 6 | foo (signed char x) | ||
891 | 7 | { | ||
892 | 8 | int y = 0; | ||
893 | 9 | switch (x) | ||
894 | 10 | { | ||
895 | 11 | case 0: y = 1; break; | ||
896 | 12 | case 1: y = 7; break; | ||
897 | 13 | case 2: y = 2; break; | ||
898 | 14 | case 3: y = 19; break; | ||
899 | 15 | case 4: y = 5; break; | ||
900 | 16 | case 5: y = 17; break; | ||
901 | 17 | case 6: y = 31; break; | ||
902 | 18 | case 7: y = 8; break; | ||
903 | 19 | case 8: y = 28; break; | ||
904 | 20 | case 9: y = 16; break; | ||
905 | 21 | case 10: y = 31; break; | ||
906 | 22 | case 11: y = 12; break; | ||
907 | 23 | case 12: y = 15; break; | ||
908 | 24 | case 13: y = 111; break; | ||
909 | 25 | case 14: y = 17; break; | ||
910 | 26 | case 15: y = 10; break; | ||
911 | 27 | case 16: y = 31; break; | ||
912 | 28 | case 17: y = 7; break; | ||
913 | 29 | case 18: y = 2; break; | ||
914 | 30 | case 19: y = 19; break; | ||
915 | 31 | case 20: y = 5; break; | ||
916 | 32 | case 21: y = 107; break; | ||
917 | 33 | case 22: y = 31; break; | ||
918 | 34 | case 23: y = 8; break; | ||
919 | 35 | case 24: y = 28; break; | ||
920 | 36 | case 25: y = 106; break; | ||
921 | 37 | case 26: y = 31; break; | ||
922 | 38 | case 27: y = 102; break; | ||
923 | 39 | case 28: y = 105; break; | ||
924 | 40 | case 29: y = 111; break; | ||
925 | 41 | case 30: y = 17; break; | ||
926 | 42 | case 31: y = 10; break; | ||
927 | 43 | case 32: y = 31; break; | ||
928 | 44 | case 98: y = 18; break; | ||
929 | 45 | case -62: y = 19; break; | ||
930 | 46 | } | ||
931 | 47 | return y; | ||
932 | 48 | } | ||
933 | 49 | |||
934 | 50 | int | ||
935 | 51 | main () | ||
936 | 52 | { | ||
937 | 53 | if (foo (98) != 18 || foo (97) != 0 || foo (99) != 0) | ||
938 | 54 | abort (); | ||
939 | 55 | if (foo (-62) != 19 || foo (-63) != 0 || foo (-61) != 0) | ||
940 | 56 | abort (); | ||
941 | 57 | if (foo (28) != 105 || foo (27) != 102 || foo (29) != 111) | ||
942 | 58 | abort (); | ||
943 | 59 | return 0; | ||
944 | 60 | } | ||
945 | 0 | 61 | ||
946 | === added file 'gcc/testsuite/gcc.dg/pr48685.c' | |||
947 | --- gcc/testsuite/gcc.dg/pr48685.c 1970-01-01 00:00:00 +0000 | |||
948 | +++ gcc/testsuite/gcc.dg/pr48685.c 2011-05-05 15:18:28 +0000 | |||
949 | @@ -0,0 +1,11 @@ | |||
950 | 1 | /* PR c/48685 */ | ||
951 | 2 | /* { dg-do compile } */ | ||
952 | 3 | /* { dg-options "-O2" } */ | ||
953 | 4 | |||
954 | 5 | int | ||
955 | 6 | main () | ||
956 | 7 | { | ||
957 | 8 | int v = 1; | ||
958 | 9 | (void) (1 == 2 ? (void) 0 : (v = 0)); | ||
959 | 10 | return v; | ||
960 | 11 | } | ||
961 | 0 | 12 | ||
962 | === added file 'gcc/testsuite/gcc.dg/pr48774.c' | |||
963 | --- gcc/testsuite/gcc.dg/pr48774.c 1970-01-01 00:00:00 +0000 | |||
964 | +++ gcc/testsuite/gcc.dg/pr48774.c 2011-05-05 15:18:28 +0000 | |||
965 | @@ -0,0 +1,38 @@ | |||
966 | 1 | /* PR target/48774 */ | ||
967 | 2 | /* { dg-do run } */ | ||
968 | 3 | /* { dg-options "-O2 -funroll-loops" } */ | ||
969 | 4 | |||
970 | 5 | extern void abort (void); | ||
971 | 6 | unsigned long int s[24] | ||
972 | 7 | = { 12, ~1, 12, ~2, 12, ~4, 12, ~8, 12, ~16, 12, ~32, | ||
973 | 8 | 12, ~64, 12, ~128, 12, ~256, 12, ~512, 12, ~1024, 12, ~2048 }; | ||
974 | 9 | struct { int n; unsigned long *e[12]; } g | ||
975 | 10 | = { 12, { &s[0], &s[2], &s[4], &s[6], &s[8], &s[10], &s[12], &s[14], | ||
976 | 11 | &s[16], &s[18], &s[20], &s[22] } }; | ||
977 | 12 | int c[12]; | ||
978 | 13 | |||
979 | 14 | __attribute__((noinline, noclone)) void | ||
980 | 15 | foo (void) | ||
981 | 16 | { | ||
982 | 17 | int i, j; | ||
983 | 18 | for (i = 0; i < g.n; i++) | ||
984 | 19 | for (j = 0; j < g.n; j++) | ||
985 | 20 | { | ||
986 | 21 | if (i == j && j < g.e[0][0] && (g.e[i][1] & (1UL << j))) | ||
987 | 22 | abort (); | ||
988 | 23 | if (j < g.e[0][0] && (g.e[i][1] & (1UL << j))) | ||
989 | 24 | c[i]++; | ||
990 | 25 | } | ||
991 | 26 | } | ||
992 | 27 | |||
993 | 28 | int | ||
994 | 29 | main () | ||
995 | 30 | { | ||
996 | 31 | int i; | ||
997 | 32 | asm volatile ("" : "+m" (s), "+m" (g), "+m" (c)); | ||
998 | 33 | foo (); | ||
999 | 34 | for (i = 0; i < 12; i++) | ||
1000 | 35 | if (c[i] != 11) | ||
1001 | 36 | abort (); | ||
1002 | 37 | return 0; | ||
1003 | 38 | } | ||
1004 | 0 | 39 | ||
1005 | === added file 'gcc/testsuite/gcc.target/arm/pr48252.c' | |||
1006 | --- gcc/testsuite/gcc.target/arm/pr48252.c 1970-01-01 00:00:00 +0000 | |||
1007 | +++ gcc/testsuite/gcc.target/arm/pr48252.c 2011-05-05 15:18:28 +0000 | |||
1008 | @@ -0,0 +1,31 @@ | |||
1009 | 1 | /* { dg-do run } */ | ||
1010 | 2 | /* { dg-require-effective-target arm_neon_hw } */ | ||
1011 | 3 | /* { dg-options "-O2" } */ | ||
1012 | 4 | /* { dg-add-options arm_neon } */ | ||
1013 | 5 | |||
1014 | 6 | #include "arm_neon.h" | ||
1015 | 7 | #include <stdlib.h> | ||
1016 | 8 | |||
1017 | 9 | int main(void) | ||
1018 | 10 | { | ||
1019 | 11 | uint8x8_t v1 = {1, 1, 1, 1, 1, 1, 1, 1}; | ||
1020 | 12 | uint8x8_t v2 = {2, 2, 2, 2, 2, 2, 2, 2}; | ||
1021 | 13 | uint8x8x2_t vd1, vd2; | ||
1022 | 14 | union {uint8x8_t v; uint8_t buf[8];} d1, d2, d3, d4; | ||
1023 | 15 | int i; | ||
1024 | 16 | |||
1025 | 17 | vd1 = vzip_u8(v1, vdup_n_u8(0)); | ||
1026 | 18 | vd2 = vzip_u8(v2, vdup_n_u8(0)); | ||
1027 | 19 | |||
1028 | 20 | vst1_u8(d1.buf, vd1.val[0]); | ||
1029 | 21 | vst1_u8(d2.buf, vd1.val[1]); | ||
1030 | 22 | vst1_u8(d3.buf, vd2.val[0]); | ||
1031 | 23 | vst1_u8(d4.buf, vd2.val[1]); | ||
1032 | 24 | |||
1033 | 25 | for (i = 0; i < 8; i++) | ||
1034 | 26 | if ((i % 2 == 0 && d4.buf[i] != 2) | ||
1035 | 27 | || (i % 2 == 1 && d4.buf[i] != 0)) | ||
1036 | 28 | abort (); | ||
1037 | 29 | |||
1038 | 30 | return 0; | ||
1039 | 31 | } | ||
1040 | 0 | 32 | ||
1041 | === added file 'gcc/testsuite/gcc.target/i386/pr48708.c' | |||
1042 | --- gcc/testsuite/gcc.target/i386/pr48708.c 1970-01-01 00:00:00 +0000 | |||
1043 | +++ gcc/testsuite/gcc.target/i386/pr48708.c 2011-05-05 15:18:28 +0000 | |||
1044 | @@ -0,0 +1,15 @@ | |||
1045 | 1 | /* { dg-do compile } */ | ||
1046 | 2 | /* { dg-options "-O2 -msse2" } */ | ||
1047 | 3 | |||
1048 | 4 | #include <emmintrin.h> | ||
1049 | 5 | |||
1050 | 6 | typedef long long T __attribute__((may_alias)); | ||
1051 | 7 | struct S { __m128i d; }; | ||
1052 | 8 | |||
1053 | 9 | __m128i | ||
1054 | 10 | foo (long long *x, struct S *y, __m128i *z) | ||
1055 | 11 | { | ||
1056 | 12 | struct S s = *y; | ||
1057 | 13 | ((T *) &s.d)[0] = *x; | ||
1058 | 14 | return _mm_cmpeq_epi16 (s.d, *z); | ||
1059 | 15 | } | ||
1060 | 0 | 16 | ||
1061 | === modified file 'gcc/testsuite/gcc.target/i386/sse2-init-v2di-2.c' | |||
1062 | --- gcc/testsuite/gcc.target/i386/sse2-init-v2di-2.c 2008-08-20 12:22:30 +0000 | |||
1063 | +++ gcc/testsuite/gcc.target/i386/sse2-init-v2di-2.c 2011-05-05 15:18:28 +0000 | |||
1064 | @@ -1,6 +1,6 @@ | |||
1065 | 1 | /* { dg-do compile } */ | 1 | /* { dg-do compile } */ |
1066 | 2 | /* { dg-require-effective-target lp64 } */ | 2 | /* { dg-require-effective-target lp64 } */ |
1068 | 3 | /* { dg-options "-O2 -msse4 -march=core2" } */ | 3 | /* { dg-options "-O2 -msse4 -march=core2 -dp" } */ |
1069 | 4 | 4 | ||
1070 | 5 | #include <emmintrin.h> | 5 | #include <emmintrin.h> |
1071 | 6 | 6 | ||
1072 | @@ -10,4 +10,4 @@ | |||
1073 | 10 | return _mm_cvtsi64_si128 (b); | 10 | return _mm_cvtsi64_si128 (b); |
1074 | 11 | } | 11 | } |
1075 | 12 | 12 | ||
1077 | 13 | /* { dg-final { scan-assembler "movq" } } */ | 13 | /* { dg-final { scan-assembler-times "\\*vec_concatv2di_rex64_sse4_1/3" 1 } } */ |
1078 | 14 | 14 | ||
1079 | === modified file 'gcc/tree-switch-conversion.c' | |||
1080 | --- gcc/tree-switch-conversion.c 2010-09-02 13:05:30 +0000 | |||
1081 | +++ gcc/tree-switch-conversion.c 2011-05-05 15:18:28 +0000 | |||
1082 | @@ -549,7 +549,7 @@ | |||
1083 | 549 | build_arrays (gimple swtch) | 549 | build_arrays (gimple swtch) |
1084 | 550 | { | 550 | { |
1085 | 551 | tree arr_index_type; | 551 | tree arr_index_type; |
1087 | 552 | tree tidx, sub, tmp; | 552 | tree tidx, sub, tmp, utype; |
1088 | 553 | gimple stmt; | 553 | gimple stmt; |
1089 | 554 | gimple_stmt_iterator gsi; | 554 | gimple_stmt_iterator gsi; |
1090 | 555 | int i; | 555 | int i; |
1091 | @@ -557,14 +557,20 @@ | |||
1092 | 557 | 557 | ||
1093 | 558 | gsi = gsi_for_stmt (swtch); | 558 | gsi = gsi_for_stmt (swtch); |
1094 | 559 | 559 | ||
1095 | 560 | /* Make sure we do not generate arithmetics in a subrange. */ | ||
1096 | 561 | utype = TREE_TYPE (info.index_expr); | ||
1097 | 562 | if (TREE_TYPE (utype)) | ||
1098 | 563 | utype = lang_hooks.types.type_for_mode (TYPE_MODE (TREE_TYPE (utype)), 1); | ||
1099 | 564 | else | ||
1100 | 565 | utype = lang_hooks.types.type_for_mode (TYPE_MODE (utype), 1); | ||
1101 | 566 | |||
1102 | 560 | arr_index_type = build_index_type (info.range_size); | 567 | arr_index_type = build_index_type (info.range_size); |
1104 | 561 | tmp = create_tmp_var (TREE_TYPE (info.index_expr), "csti"); | 568 | tmp = create_tmp_var (utype, "csui"); |
1105 | 562 | add_referenced_var (tmp); | 569 | add_referenced_var (tmp); |
1106 | 563 | tidx = make_ssa_name (tmp, NULL); | 570 | tidx = make_ssa_name (tmp, NULL); |
1111 | 564 | sub = fold_build2_loc (loc, MINUS_EXPR, | 571 | sub = fold_build2_loc (loc, MINUS_EXPR, utype, |
1112 | 565 | TREE_TYPE (info.index_expr), info.index_expr, | 572 | fold_convert_loc (loc, utype, info.index_expr), |
1113 | 566 | fold_convert_loc (loc, TREE_TYPE (info.index_expr), | 573 | fold_convert_loc (loc, utype, info.range_min)); |
1110 | 567 | info.range_min)); | ||
1114 | 568 | sub = force_gimple_operand_gsi (&gsi, sub, | 574 | sub = force_gimple_operand_gsi (&gsi, sub, |
1115 | 569 | false, NULL, true, GSI_SAME_STMT); | 575 | false, NULL, true, GSI_SAME_STMT); |
1116 | 570 | stmt = gimple_build_assign (tidx, sub); | 576 | stmt = gimple_build_assign (tidx, sub); |
1117 | @@ -673,12 +679,7 @@ | |||
1118 | 673 | tree label_decl2 = create_artificial_label (UNKNOWN_LOCATION); | 679 | tree label_decl2 = create_artificial_label (UNKNOWN_LOCATION); |
1119 | 674 | tree label_decl3 = create_artificial_label (UNKNOWN_LOCATION); | 680 | tree label_decl3 = create_artificial_label (UNKNOWN_LOCATION); |
1120 | 675 | gimple label1, label2, label3; | 681 | gimple label1, label2, label3; |
1127 | 676 | 682 | tree utype, tidx; | |
1122 | 677 | tree utype; | ||
1123 | 678 | tree tmp_u_1, tmp_u_2, tmp_u_var; | ||
1124 | 679 | tree cast; | ||
1125 | 680 | gimple cast_assign, minus_assign; | ||
1126 | 681 | tree ulb, minus; | ||
1128 | 682 | tree bound; | 683 | tree bound; |
1129 | 683 | 684 | ||
1130 | 684 | gimple cond_stmt; | 685 | gimple cond_stmt; |
1131 | @@ -692,49 +693,24 @@ | |||
1132 | 692 | gcc_assert (info.default_values); | 693 | gcc_assert (info.default_values); |
1133 | 693 | bb0 = gimple_bb (swtch); | 694 | bb0 = gimple_bb (swtch); |
1134 | 694 | 695 | ||
1142 | 695 | /* Make sure we do not generate arithmetics in a subrange. */ | 696 | tidx = gimple_assign_lhs (info.arr_ref_first); |
1143 | 696 | if (TREE_TYPE (TREE_TYPE (info.index_expr))) | 697 | utype = TREE_TYPE (tidx); |
1137 | 697 | utype = lang_hooks.types.type_for_mode | ||
1138 | 698 | (TYPE_MODE (TREE_TYPE (TREE_TYPE (info.index_expr))), 1); | ||
1139 | 699 | else | ||
1140 | 700 | utype = lang_hooks.types.type_for_mode | ||
1141 | 701 | (TYPE_MODE (TREE_TYPE (info.index_expr)), 1); | ||
1144 | 702 | 698 | ||
1145 | 703 | /* (end of) block 0 */ | 699 | /* (end of) block 0 */ |
1146 | 704 | gsi = gsi_for_stmt (info.arr_ref_first); | 700 | gsi = gsi_for_stmt (info.arr_ref_first); |
1166 | 705 | tmp_u_var = create_tmp_var (utype, "csui"); | 701 | gsi_next (&gsi); |
1148 | 706 | add_referenced_var (tmp_u_var); | ||
1149 | 707 | tmp_u_1 = make_ssa_name (tmp_u_var, NULL); | ||
1150 | 708 | |||
1151 | 709 | cast = fold_convert_loc (loc, utype, info.index_expr); | ||
1152 | 710 | cast_assign = gimple_build_assign (tmp_u_1, cast); | ||
1153 | 711 | SSA_NAME_DEF_STMT (tmp_u_1) = cast_assign; | ||
1154 | 712 | gsi_insert_before (&gsi, cast_assign, GSI_SAME_STMT); | ||
1155 | 713 | update_stmt (cast_assign); | ||
1156 | 714 | |||
1157 | 715 | ulb = fold_convert_loc (loc, utype, info.range_min); | ||
1158 | 716 | minus = fold_build2_loc (loc, MINUS_EXPR, utype, tmp_u_1, ulb); | ||
1159 | 717 | minus = force_gimple_operand_gsi (&gsi, minus, false, NULL, true, | ||
1160 | 718 | GSI_SAME_STMT); | ||
1161 | 719 | tmp_u_2 = make_ssa_name (tmp_u_var, NULL); | ||
1162 | 720 | minus_assign = gimple_build_assign (tmp_u_2, minus); | ||
1163 | 721 | SSA_NAME_DEF_STMT (tmp_u_2) = minus_assign; | ||
1164 | 722 | gsi_insert_before (&gsi, minus_assign, GSI_SAME_STMT); | ||
1165 | 723 | update_stmt (minus_assign); | ||
1167 | 724 | 702 | ||
1168 | 725 | bound = fold_convert_loc (loc, utype, info.range_size); | 703 | bound = fold_convert_loc (loc, utype, info.range_size); |
1170 | 726 | cond_stmt = gimple_build_cond (LE_EXPR, tmp_u_2, bound, NULL_TREE, NULL_TREE); | 704 | cond_stmt = gimple_build_cond (LE_EXPR, tidx, bound, NULL_TREE, NULL_TREE); |
1171 | 727 | gsi_insert_before (&gsi, cond_stmt, GSI_SAME_STMT); | 705 | gsi_insert_before (&gsi, cond_stmt, GSI_SAME_STMT); |
1172 | 728 | update_stmt (cond_stmt); | 706 | update_stmt (cond_stmt); |
1173 | 729 | 707 | ||
1174 | 730 | /* block 2 */ | 708 | /* block 2 */ |
1175 | 731 | gsi = gsi_for_stmt (info.arr_ref_first); | ||
1176 | 732 | label2 = gimple_build_label (label_decl2); | 709 | label2 = gimple_build_label (label_decl2); |
1177 | 733 | gsi_insert_before (&gsi, label2, GSI_SAME_STMT); | 710 | gsi_insert_before (&gsi, label2, GSI_SAME_STMT); |
1178 | 734 | last_assign = gen_def_assigns (&gsi); | 711 | last_assign = gen_def_assigns (&gsi); |
1179 | 735 | 712 | ||
1180 | 736 | /* block 1 */ | 713 | /* block 1 */ |
1181 | 737 | gsi = gsi_for_stmt (info.arr_ref_first); | ||
1182 | 738 | label1 = gimple_build_label (label_decl1); | 714 | label1 = gimple_build_label (label_decl1); |
1183 | 739 | gsi_insert_before (&gsi, label1, GSI_SAME_STMT); | 715 | gsi_insert_before (&gsi, label1, GSI_SAME_STMT); |
1184 | 740 | 716 | ||
1185 | 741 | 717 | ||
1186 | === modified file 'libffi/ChangeLog' | |||
1187 | --- libffi/ChangeLog 2011-04-28 14:10:51 +0000 | |||
1188 | +++ libffi/ChangeLog 2011-05-05 15:18:28 +0000 | |||
1189 | @@ -1,3 +1,13 @@ | |||
1190 | 1 | 2011-05-02 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> | ||
1191 | 2 | |||
1192 | 3 | Backport from mainline: | ||
1193 | 4 | 2011-04-29 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> | ||
1194 | 5 | |||
1195 | 6 | * src/alpha/osf.S (UA_SI, FDE_ENCODING, FDE_ENCODE, FDE_ARANGE): | ||
1196 | 7 | Define. | ||
1197 | 8 | Use them to handle ELF vs. ECOFF differences. | ||
1198 | 9 | [__osf__] (_GLOBAL__F_ffi_call_osf): Define. | ||
1199 | 10 | |||
1200 | 1 | 2011-04-28 Release Manager | 11 | 2011-04-28 Release Manager |
1201 | 2 | 12 | ||
1202 | 3 | * GCC 4.5.3 released. | 13 | * GCC 4.5.3 released. |
1203 | 4 | 14 | ||
1204 | === modified file 'libffi/src/alpha/osf.S' | |||
1205 | --- libffi/src/alpha/osf.S 2009-06-04 14:43:03 +0000 | |||
1206 | +++ libffi/src/alpha/osf.S 2011-05-05 15:18:28 +0000 | |||
1207 | @@ -1,5 +1,5 @@ | |||
1208 | 1 | /* ----------------------------------------------------------------------- | 1 | /* ----------------------------------------------------------------------- |
1210 | 2 | osf.S - Copyright (c) 1998, 2001, 2007, 2008 Red Hat | 2 | osf.S - Copyright (c) 1998, 2001, 2007, 2008, 2011 Red Hat |
1211 | 3 | 3 | ||
1212 | 4 | Alpha/OSF Foreign Function Interface | 4 | Alpha/OSF Foreign Function Interface |
1213 | 5 | 5 | ||
1214 | @@ -299,33 +299,51 @@ | |||
1215 | 299 | #endif | 299 | #endif |
1216 | 300 | 300 | ||
1217 | 301 | #ifdef __ELF__ | 301 | #ifdef __ELF__ |
1218 | 302 | # define UA_SI .4byte | ||
1219 | 303 | # define FDE_ENCODING 0x1b /* pcrel sdata4 */ | ||
1220 | 304 | # define FDE_ENCODE(X) .4byte X-. | ||
1221 | 305 | # define FDE_ARANGE(X) .4byte X | ||
1222 | 306 | #elif defined __osf__ | ||
1223 | 307 | # define UA_SI .align 0; .long | ||
1224 | 308 | # define FDE_ENCODING 0x50 /* aligned absolute */ | ||
1225 | 309 | # define FDE_ENCODE(X) .align 3; .quad X | ||
1226 | 310 | # define FDE_ARANGE(X) .align 0; .quad X | ||
1227 | 311 | #endif | ||
1228 | 312 | |||
1229 | 313 | #ifdef __ELF__ | ||
1230 | 302 | .section .eh_frame,EH_FRAME_FLAGS,@progbits | 314 | .section .eh_frame,EH_FRAME_FLAGS,@progbits |
1231 | 315 | #elif defined __osf__ | ||
1232 | 316 | .data | ||
1233 | 317 | .align 3 | ||
1234 | 318 | .globl _GLOBAL__F_ffi_call_osf | ||
1235 | 319 | _GLOBAL__F_ffi_call_osf: | ||
1236 | 320 | #endif | ||
1237 | 303 | __FRAME_BEGIN__: | 321 | __FRAME_BEGIN__: |
1239 | 304 | .4byte $LECIE1-$LSCIE1 # Length of Common Information Entry | 322 | UA_SI $LECIE1-$LSCIE1 # Length of Common Information Entry |
1240 | 305 | $LSCIE1: | 323 | $LSCIE1: |
1242 | 306 | .4byte 0x0 # CIE Identifier Tag | 324 | UA_SI 0x0 # CIE Identifier Tag |
1243 | 307 | .byte 0x1 # CIE Version | 325 | .byte 0x1 # CIE Version |
1244 | 308 | .ascii "zR\0" # CIE Augmentation | 326 | .ascii "zR\0" # CIE Augmentation |
1245 | 309 | .byte 0x1 # uleb128 0x1; CIE Code Alignment Factor | 327 | .byte 0x1 # uleb128 0x1; CIE Code Alignment Factor |
1246 | 310 | .byte 0x78 # sleb128 -8; CIE Data Alignment Factor | 328 | .byte 0x78 # sleb128 -8; CIE Data Alignment Factor |
1247 | 311 | .byte 26 # CIE RA Column | 329 | .byte 26 # CIE RA Column |
1248 | 312 | .byte 0x1 # uleb128 0x1; Augmentation size | 330 | .byte 0x1 # uleb128 0x1; Augmentation size |
1250 | 313 | .byte 0x1b # FDE Encoding (pcrel sdata4) | 331 | .byte FDE_ENCODING # FDE Encoding |
1251 | 314 | .byte 0xc # DW_CFA_def_cfa | 332 | .byte 0xc # DW_CFA_def_cfa |
1252 | 315 | .byte 30 # uleb128 column 30 | 333 | .byte 30 # uleb128 column 30 |
1253 | 316 | .byte 0 # uleb128 offset 0 | 334 | .byte 0 # uleb128 offset 0 |
1254 | 317 | .align 3 | 335 | .align 3 |
1255 | 318 | $LECIE1: | 336 | $LECIE1: |
1256 | 319 | $LSFDE1: | 337 | $LSFDE1: |
1258 | 320 | .4byte $LEFDE1-$LASFDE1 # FDE Length | 338 | UA_SI $LEFDE1-$LASFDE1 # FDE Length |
1259 | 321 | $LASFDE1: | 339 | $LASFDE1: |
1263 | 322 | .4byte $LASFDE1-__FRAME_BEGIN__ # FDE CIE offset | 340 | UA_SI $LASFDE1-__FRAME_BEGIN__ # FDE CIE offset |
1264 | 323 | .4byte $LFB1-. # FDE initial location | 341 | FDE_ENCODE($LFB1) # FDE initial location |
1265 | 324 | .4byte $LFE1-$LFB1 # FDE address range | 342 | FDE_ARANGE($LFE1-$LFB1) # FDE address range |
1266 | 325 | .byte 0x0 # uleb128 0x0; Augmentation size | 343 | .byte 0x0 # uleb128 0x0; Augmentation size |
1267 | 326 | 344 | ||
1268 | 327 | .byte 0x4 # DW_CFA_advance_loc4 | 345 | .byte 0x4 # DW_CFA_advance_loc4 |
1270 | 328 | .4byte $LCFI1-$LFB1 | 346 | UA_SI $LCFI1-$LFB1 |
1271 | 329 | .byte 0x9a # DW_CFA_offset, column 26 | 347 | .byte 0x9a # DW_CFA_offset, column 26 |
1272 | 330 | .byte 4 # uleb128 4*-8 | 348 | .byte 4 # uleb128 4*-8 |
1273 | 331 | .byte 0x8f # DW_CFA_offset, column 15 | 349 | .byte 0x8f # DW_CFA_offset, column 15 |
1274 | @@ -335,32 +353,35 @@ | |||
1275 | 335 | .byte 32 # uleb128 offset 32 | 353 | .byte 32 # uleb128 offset 32 |
1276 | 336 | 354 | ||
1277 | 337 | .byte 0x4 # DW_CFA_advance_loc4 | 355 | .byte 0x4 # DW_CFA_advance_loc4 |
1279 | 338 | .4byte $LCFI2-$LCFI1 | 356 | UA_SI $LCFI2-$LCFI1 |
1280 | 339 | .byte 0xda # DW_CFA_restore, column 26 | 357 | .byte 0xda # DW_CFA_restore, column 26 |
1281 | 340 | .align 3 | 358 | .align 3 |
1282 | 341 | $LEFDE1: | 359 | $LEFDE1: |
1283 | 342 | 360 | ||
1284 | 343 | $LSFDE3: | 361 | $LSFDE3: |
1286 | 344 | .4byte $LEFDE3-$LASFDE3 # FDE Length | 362 | UA_SI $LEFDE3-$LASFDE3 # FDE Length |
1287 | 345 | $LASFDE3: | 363 | $LASFDE3: |
1291 | 346 | .4byte $LASFDE3-__FRAME_BEGIN__ # FDE CIE offset | 364 | UA_SI $LASFDE3-__FRAME_BEGIN__ # FDE CIE offset |
1292 | 347 | .4byte $LFB2-. # FDE initial location | 365 | FDE_ENCODE($LFB2) # FDE initial location |
1293 | 348 | .4byte $LFE2-$LFB2 # FDE address range | 366 | FDE_ARANGE($LFE2-$LFB2) # FDE address range |
1294 | 349 | .byte 0x0 # uleb128 0x0; Augmentation size | 367 | .byte 0x0 # uleb128 0x0; Augmentation size |
1295 | 350 | 368 | ||
1296 | 351 | .byte 0x4 # DW_CFA_advance_loc4 | 369 | .byte 0x4 # DW_CFA_advance_loc4 |
1298 | 352 | .4byte $LCFI5-$LFB2 | 370 | UA_SI $LCFI5-$LFB2 |
1299 | 353 | .byte 0xe # DW_CFA_def_cfa_offset | 371 | .byte 0xe # DW_CFA_def_cfa_offset |
1300 | 354 | .byte 0x80,0x1 # uleb128 128 | 372 | .byte 0x80,0x1 # uleb128 128 |
1301 | 355 | 373 | ||
1302 | 356 | .byte 0x4 # DW_CFA_advance_loc4 | 374 | .byte 0x4 # DW_CFA_advance_loc4 |
1304 | 357 | .4byte $LCFI6-$LCFI5 | 375 | UA_SI $LCFI6-$LCFI5 |
1305 | 358 | .byte 0x9a # DW_CFA_offset, column 26 | 376 | .byte 0x9a # DW_CFA_offset, column 26 |
1306 | 359 | .byte 16 # uleb128 offset 16*-8 | 377 | .byte 16 # uleb128 offset 16*-8 |
1307 | 360 | .align 3 | 378 | .align 3 |
1308 | 361 | $LEFDE3: | 379 | $LEFDE3: |
1309 | 380 | #if defined __osf__ | ||
1310 | 381 | .align 0 | ||
1311 | 382 | .long 0 # End of Table | ||
1312 | 383 | #endif | ||
1313 | 362 | 384 | ||
1315 | 363 | #ifdef __linux__ | 385 | #if defined __ELF__ && defined __linux__ |
1316 | 364 | .section .note.GNU-stack,"",@progbits | 386 | .section .note.GNU-stack,"",@progbits |
1317 | 365 | #endif | 387 | #endif |
1318 | 366 | #endif |
cbuild has taken a snapshot of this branch at r99506 and queued it for build.
The snapshot is available at: ex.seabright. co.nz/snapshots /gcc-linaro- 4.5+bzr99506~ ams-codesourcer y~merge- fsf-4.5- 20110505. tar.xdelta3. xz
http://
and will be built on the following builders:
a9-builder i686 x86_64
You can track the build queue at: ex.seabright. co.nz/helpers/ scheduler
http://
cbuild-snapshot: gcc-linaro- 4.5+bzr99506~ ams-codesourcer y~merge- fsf-4.5- 20110505
cbuild-ancestor: lp:gcc-linaro+bzr99505
cbuild-state: check