]>
Commit | Line | Data |
---|---|---|
be75205b PS |
1 | Index: libitm/ChangeLog |
2 | =================================================================== | |
3 | --- libitm/ChangeLog (.../tags/gcc_4_7_0_release) (wersja 187906) | |
4 | +++ libitm/ChangeLog (.../branches/gcc-4_7-branch) (wersja 187906) | |
5 | @@ -1,3 +1,12 @@ | |
6 | +2012-04-04 H.J. Lu <hongjiu.lu@intel.com> | |
7 | + | |
8 | + Backported from mainline | |
9 | + 2012-04-04 H.J. Lu <hongjiu.lu@intel.com> | |
10 | + | |
11 | + PR libitm/52854 | |
12 | + * config/x86/target.h (gtm_jmpbuf): Replace long with long long | |
13 | + for x86-64. | |
14 | + | |
15 | 2012-03-22 Release Manager | |
16 | ||
17 | * GCC 4.7.0 released. | |
18 | Index: libitm/config/x86/target.h | |
19 | =================================================================== | |
20 | --- libitm/config/x86/target.h (.../tags/gcc_4_7_0_release) (wersja 187906) | |
21 | +++ libitm/config/x86/target.h (.../branches/gcc-4_7-branch) (wersja 187906) | |
22 | @@ -29,13 +29,13 @@ | |
23 | typedef struct gtm_jmpbuf | |
24 | { | |
25 | void *cfa; | |
26 | - unsigned long rbx; | |
27 | - unsigned long rbp; | |
28 | - unsigned long r12; | |
29 | - unsigned long r13; | |
30 | - unsigned long r14; | |
31 | - unsigned long r15; | |
32 | - unsigned long rip; | |
33 | + unsigned long long rbx; | |
34 | + unsigned long long rbp; | |
35 | + unsigned long long r12; | |
36 | + unsigned long long r13; | |
37 | + unsigned long long r14; | |
38 | + unsigned long long r15; | |
39 | + unsigned long long rip; | |
40 | } gtm_jmpbuf; | |
41 | #else | |
42 | typedef struct gtm_jmpbuf | |
43 | Index: Makefile.in | |
44 | =================================================================== | |
45 | --- Makefile.in (.../tags/gcc_4_7_0_release) (wersja 187906) | |
46 | +++ Makefile.in (.../branches/gcc-4_7-branch) (wersja 187906) | |
47 | @@ -2426,11 +2426,12 @@ | |
48 | true ; \ | |
49 | fi | |
50 | ||
51 | -# install-no-fixedincludes is used because Cygnus can not distribute | |
52 | -# the fixed header files. | |
53 | +# install-no-fixedincludes is used to allow the elaboration of binary packages | |
54 | +# suitable for distribution, where we cannot include the fixed system header | |
55 | +# files. | |
56 | .PHONY: install-no-fixedincludes | |
57 | install-no-fixedincludes: installdirs install-host-nogcc \ | |
58 | - install-target gcc-no-fixedincludes | |
59 | + install-target gcc-install-no-fixedincludes | |
60 | ||
61 | .PHONY: install-strip | |
62 | install-strip: | |
63 | @@ -40721,25 +40722,16 @@ | |
64 | check-go: check-gcc-go check-target-libgo | |
65 | ||
66 | ||
67 | -# Install the gcc headers files, but not the fixed include files, | |
68 | -# which Cygnus is not allowed to distribute. This rule is very | |
69 | -# dependent on the workings of the gcc Makefile.in. | |
70 | -.PHONY: gcc-no-fixedincludes | |
71 | -gcc-no-fixedincludes: | |
72 | +# The gcc part of install-no-fixedincludes, which relies on an intimate | |
73 | +# knowledge of how a number of gcc internal targets (inter)operate. Delegate. | |
74 | +.PHONY: gcc-install-no-fixedincludes | |
75 | +gcc-install-no-fixedincludes: | |
76 | @if [ -f ./gcc/Makefile ]; then \ | |
77 | - rm -rf gcc/tmp-include; \ | |
78 | - mv gcc/include gcc/tmp-include 2>/dev/null; \ | |
79 | - mkdir gcc/include; \ | |
80 | - cp $(srcdir)/gcc/gsyslimits.h gcc/include/syslimits.h; \ | |
81 | - touch gcc/stmp-fixinc gcc/include/fixed; \ | |
82 | - rm -f gcc/stmp-headers gcc/stmp-int-hdrs; \ | |
83 | r=`${PWD_COMMAND}`; export r; \ | |
84 | - s=`cd $(srcdir); ${PWD_COMMAND}` ; export s; \ | |
85 | + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ | |
86 | $(HOST_EXPORTS) \ | |
87 | - (cd ./gcc && \ | |
88 | - $(MAKE) $(GCC_FLAGS_TO_PASS) install); \ | |
89 | - rm -rf gcc/include; \ | |
90 | - mv gcc/tmp-include gcc/include 2>/dev/null; \ | |
91 | + (cd ./gcc \ | |
92 | + && $(MAKE) $(GCC_FLAGS_TO_PASS) install-no-fixedincludes); \ | |
93 | else true; fi | |
94 | @endif gcc | |
95 | ||
ad222a6b PS |
96 | Index: libgomp/ChangeLog |
97 | =================================================================== | |
be75205b PS |
98 | --- libgomp/ChangeLog (.../tags/gcc_4_7_0_release) (wersja 187906) |
99 | +++ libgomp/ChangeLog (.../branches/gcc-4_7-branch) (wersja 187906) | |
ad222a6b PS |
100 | @@ -1,3 +1,8 @@ |
101 | +2012-03-22 Jakub Jelinek <jakub@redhat.com> | |
102 | + | |
103 | + PR middle-end/52547 | |
104 | + * testsuite/libgomp.c/pr52547.c: New test. | |
105 | + | |
106 | 2012-03-22 Release Manager | |
107 | ||
108 | * GCC 4.7.0 released. | |
109 | Index: libgomp/testsuite/libgomp.c/pr52547.c | |
110 | =================================================================== | |
111 | --- libgomp/testsuite/libgomp.c/pr52547.c (.../tags/gcc_4_7_0_release) (wersja 0) | |
be75205b | 112 | +++ libgomp/testsuite/libgomp.c/pr52547.c (.../branches/gcc-4_7-branch) (wersja 187906) |
ad222a6b PS |
113 | @@ -0,0 +1,36 @@ |
114 | +/* PR middle-end/52547 */ | |
115 | +/* { dg-do run } */ | |
116 | + | |
117 | +extern void abort (void); | |
118 | + | |
119 | +__attribute__((noinline, noclone)) int | |
120 | +baz (int *x, int (*fn) (int *)) | |
121 | +{ | |
122 | + return fn (x); | |
123 | +} | |
124 | + | |
125 | +__attribute__((noinline, noclone)) int | |
126 | +foo (int x, int *y) | |
127 | +{ | |
128 | + int i, e = 0; | |
129 | +#pragma omp parallel for reduction(|:e) | |
130 | + for (i = 0; i < x; ++i) | |
131 | + { | |
132 | + __label__ lab; | |
133 | + int bar (int *z) { return z - y; } | |
134 | + if (baz (&y[i], bar) != i) | |
135 | + e |= 1; | |
136 | + } | |
137 | + return e; | |
138 | +} | |
139 | + | |
140 | +int | |
141 | +main () | |
142 | +{ | |
143 | + int a[100], i; | |
144 | + for (i = 0; i < 100; i++) | |
145 | + a[i] = i; | |
146 | + if (foo (100, a)) | |
147 | + abort (); | |
148 | + return 0; | |
149 | +} | |
be75205b PS |
150 | Index: libstdc++-v3/configure |
151 | =================================================================== | |
152 | --- libstdc++-v3/configure (.../tags/gcc_4_7_0_release) (wersja 187906) | |
153 | +++ libstdc++-v3/configure (.../branches/gcc-4_7-branch) (wersja 187906) | |
154 | @@ -3025,7 +3025,8 @@ | |
155 | target_alias=${target_alias-$host_alias} | |
156 | ||
157 | # Handy for debugging: | |
158 | -#AC_MSG_NOTICE($build / $host / $target / $host_alias / $target_alias); sleep 5 | |
159 | +{ $as_echo "$as_me:${as_lineno-$LINENO}: $build / $host / $target / $host_alias / $target_alias" >&5 | |
160 | +$as_echo "$as_me: $build / $host / $target / $host_alias / $target_alias" >&6;}; sleep 5 | |
161 | ||
162 | if test "$build" != "$host"; then | |
163 | # We are being configured with some form of cross compiler. | |
164 | @@ -11497,7 +11498,7 @@ | |
165 | lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 | |
166 | lt_status=$lt_dlunknown | |
167 | cat > conftest.$ac_ext <<_LT_EOF | |
168 | -#line 11500 "configure" | |
169 | +#line 11501 "configure" | |
170 | #include "confdefs.h" | |
171 | ||
172 | #if HAVE_DLFCN_H | |
173 | @@ -11603,7 +11604,7 @@ | |
174 | lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 | |
175 | lt_status=$lt_dlunknown | |
176 | cat > conftest.$ac_ext <<_LT_EOF | |
177 | -#line 11606 "configure" | |
178 | +#line 11607 "configure" | |
179 | #include "confdefs.h" | |
180 | ||
181 | #if HAVE_DLFCN_H | |
182 | @@ -14961,7 +14962,7 @@ | |
183 | # | |
184 | # Fake what AC_TRY_COMPILE does. XXX Look at redoing this new-style. | |
185 | cat > conftest.$ac_ext << EOF | |
186 | -#line 14964 "configure" | |
187 | +#line 14965 "configure" | |
188 | struct S { ~S(); }; | |
189 | void bar(); | |
190 | void foo() | |
191 | @@ -15296,7 +15297,7 @@ | |
192 | # Fake what AC_TRY_COMPILE does. | |
193 | ||
194 | cat > conftest.$ac_ext << EOF | |
195 | -#line 15299 "configure" | |
196 | +#line 15300 "configure" | |
197 | int main() | |
198 | { | |
199 | typedef bool atomic_type; | |
200 | @@ -15331,7 +15332,7 @@ | |
201 | rm -f conftest* | |
202 | ||
203 | cat > conftest.$ac_ext << EOF | |
204 | -#line 15334 "configure" | |
205 | +#line 15335 "configure" | |
206 | int main() | |
207 | { | |
208 | typedef short atomic_type; | |
209 | @@ -15366,7 +15367,7 @@ | |
210 | rm -f conftest* | |
211 | ||
212 | cat > conftest.$ac_ext << EOF | |
213 | -#line 15369 "configure" | |
214 | +#line 15370 "configure" | |
215 | int main() | |
216 | { | |
217 | // NB: _Atomic_word not necessarily int. | |
218 | @@ -15402,7 +15403,7 @@ | |
219 | rm -f conftest* | |
220 | ||
221 | cat > conftest.$ac_ext << EOF | |
222 | -#line 15405 "configure" | |
223 | +#line 15406 "configure" | |
224 | int main() | |
225 | { | |
226 | typedef long long atomic_type; | |
227 | @@ -15446,11 +15447,10 @@ | |
228 | ac_compiler_gnu=$ac_cv_c_compiler_gnu | |
229 | ||
230 | ||
231 | - # Set atomicity_dir to builtins if all of above tests pass. | |
232 | + # Set atomicity_dir to builtins if all but the long long test above passes. | |
233 | if test $glibcxx_cv_atomic_bool = yes \ | |
234 | && test $glibcxx_cv_atomic_short = yes \ | |
235 | - && test $glibcxx_cv_atomic_int = yes \ | |
236 | - && test $glibcxx_cv_atomic_long_long = yes ; then | |
237 | + && test $glibcxx_cv_atomic_int = yes; then | |
238 | ||
239 | $as_echo "#define _GLIBCXX_ATOMIC_BUILTINS 1" >>confdefs.h | |
240 | ||
241 | Index: libstdc++-v3/src/Makefile.in | |
242 | =================================================================== | |
243 | --- libstdc++-v3/src/Makefile.in (.../tags/gcc_4_7_0_release) (wersja 187906) | |
244 | +++ libstdc++-v3/src/Makefile.in (.../branches/gcc-4_7-branch) (wersja 187906) | |
245 | @@ -88,20 +88,22 @@ | |
246 | am__installdirs = "$(DESTDIR)$(toolexeclibdir)" | |
247 | LTLIBRARIES = $(toolexeclib_LTLIBRARIES) | |
248 | am__DEPENDENCIES_1 = | |
249 | -am_libstdc___la_OBJECTS = | |
250 | +@GLIBCXX_LDBL_COMPAT_TRUE@am__objects_1 = compatibility-ldbl.lo | |
251 | +@ENABLE_PARALLEL_TRUE@am__objects_2 = compatibility-parallel_list.lo \ | |
252 | +@ENABLE_PARALLEL_TRUE@ compatibility-parallel_list-2.lo | |
253 | +am__objects_3 = compatibility.lo compatibility-debug_list.lo \ | |
254 | + compatibility-debug_list-2.lo compatibility-list.lo \ | |
255 | + compatibility-list-2.lo $(am__objects_1) $(am__objects_2) | |
256 | +am__objects_4 = compatibility-c++0x.lo compatibility-atomic-c++0x.lo \ | |
257 | + compatibility-thread-c++0x.lo | |
258 | +am_libstdc___la_OBJECTS = $(am__objects_3) $(am__objects_4) | |
259 | libstdc___la_OBJECTS = $(am_libstdc___la_OBJECTS) | |
260 | DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) | |
261 | depcomp = | |
262 | am__depfiles_maybe = | |
263 | -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ | |
264 | - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) | |
265 | -LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ | |
266 | - --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ | |
267 | - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) | |
268 | -CCLD = $(CC) | |
269 | -LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ | |
270 | - --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ | |
271 | - $(LDFLAGS) -o $@ | |
272 | +CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ | |
273 | + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) | |
274 | +CXXLD = $(CXX) | |
275 | SOURCES = $(libstdc___la_SOURCES) | |
276 | RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ | |
277 | html-recursive info-recursive install-data-recursive \ | |
278 | @@ -331,7 +333,27 @@ | |
279 | ||
280 | # Cross compiler support. | |
281 | toolexeclib_LTLIBRARIES = libstdc++.la | |
282 | -libstdc___la_SOURCES = | |
283 | +@GLIBCXX_LDBL_COMPAT_FALSE@ldbl_compat_sources = | |
284 | +@GLIBCXX_LDBL_COMPAT_TRUE@ldbl_compat_sources = compatibility-ldbl.cc | |
285 | +@ENABLE_PARALLEL_FALSE@parallel_compat_sources = | |
286 | +@ENABLE_PARALLEL_TRUE@parallel_compat_sources = \ | |
287 | +@ENABLE_PARALLEL_TRUE@ compatibility-parallel_list.cc compatibility-parallel_list-2.cc | |
288 | + | |
289 | +cxx98_sources = \ | |
290 | + compatibility.cc \ | |
291 | + compatibility-debug_list.cc \ | |
292 | + compatibility-debug_list-2.cc \ | |
293 | + compatibility-list.cc \ | |
294 | + compatibility-list-2.cc \ | |
295 | + ${ldbl_compat_sources} \ | |
296 | + ${parallel_compat_sources} | |
297 | + | |
298 | +cxx11_sources = \ | |
299 | + compatibility-c++0x.cc \ | |
300 | + compatibility-atomic-c++0x.cc \ | |
301 | + compatibility-thread-c++0x.cc | |
302 | + | |
303 | +libstdc___la_SOURCES = $(cxx98_sources) $(cxx11_sources) | |
304 | libstdc___la_LIBADD = \ | |
305 | $(GLIBCXX_LIBS) \ | |
306 | $(top_builddir)/libsupc++/libsupc++convenience.la \ | |
307 | @@ -349,6 +371,9 @@ | |
308 | ||
309 | libstdc___la_LINK = $(CXXLINK) $(libstdc___la_LDFLAGS) | |
310 | ||
311 | +# Use special rules for parallel mode compilation. | |
312 | +PARALLEL_FLAGS = -fopenmp -D_GLIBCXX_PARALLEL -I$(glibcxx_builddir)/../libgomp | |
313 | + | |
314 | # AM_CXXFLAGS needs to be in each subdirectory so that it can be | |
315 | # modified in a per-library or per-sub-library way. Need to manually | |
316 | # set this option because CONFIG_CXXFLAGS has to be after | |
317 | @@ -356,12 +381,10 @@ | |
318 | # as the occasion calls for it. | |
319 | AM_CXXFLAGS = \ | |
320 | $(XTEMPLATE_FLAGS) \ | |
321 | - $(WARN_CXXFLAGS) \ | |
322 | - $(OPTIMIZE_CXXFLAGS) \ | |
323 | - $(CONFIG_CXXFLAGS) | |
324 | + $(WARN_CXXFLAGS) $(OPTIMIZE_CXXFLAGS) $(CONFIG_CXXFLAGS) | |
325 | ||
326 | ||
327 | -# libstdc++ libtool notes | |
328 | +# Libtool notes | |
329 | ||
330 | # 1) Need to explicitly set LTCXXCOMPILE so that AM_CXXFLAGS is | |
331 | # last. (That way, things like -O2 passed down from the toplevel can | |
332 | @@ -379,10 +402,11 @@ | |
333 | # correct solution is to add `--tag CXX' to LTCXXCOMPILE and maybe | |
334 | # CXXLINK, just after $(LIBTOOL), so that libtool doesn't have to | |
335 | # attempt to infer which configuration to use | |
336 | -LTCXXCOMPILE = $(LIBTOOL) --tag CXX \ | |
337 | - $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile \ | |
338 | - $(CXX) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ | |
339 | - $(AM_CXXFLAGS) $(CXXFLAGS) | |
340 | +LTCXXCOMPILE = \ | |
341 | + $(LIBTOOL) --tag CXX \ | |
342 | + $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ | |
343 | + --mode=compile $(CXX) $(INCLUDES) \ | |
344 | + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) | |
345 | ||
346 | LTLDFLAGS = $(shell $(SHELL) $(top_srcdir)/../libtool-ldflags $(LDFLAGS)) | |
347 | ||
348 | @@ -392,8 +416,11 @@ | |
349 | # course is problematic at this point. So, we get the top-level | |
350 | # directory to configure libstdc++-v3 to use gcc as the C++ | |
351 | # compilation driver. | |
352 | -CXXLINK = $(LIBTOOL) --tag CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \ | |
353 | - $(CXX) $(OPT_LDFLAGS) $(SECTION_LDFLAGS) $(AM_CXXFLAGS) $(LTLDFLAGS) -o $@ | |
354 | +CXXLINK = \ | |
355 | + $(LIBTOOL) --tag CXX \ | |
356 | + $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ | |
357 | + --mode=link $(CXX) \ | |
358 | + $(OPT_LDFLAGS) $(SECTION_LDFLAGS) $(AM_CXXFLAGS) $(LTLDFLAGS) -o $@ | |
359 | ||
360 | @ENABLE_SYMVERS_TRUE@CLEANFILES = libstdc++-symbols.ver $(version_dep) | |
361 | @ENABLE_SYMVERS_DARWIN_TRUE@@ENABLE_SYMVERS_TRUE@version_arg = -Wl,-exported_symbols_list,libstdc++-symbols.explist | |
362 | @@ -423,6 +450,7 @@ | |
363 | all: all-recursive | |
364 | ||
365 | .SUFFIXES: | |
366 | +.SUFFIXES: .cc .lo .o .obj | |
367 | $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/fragment.am $(am__configure_deps) | |
368 | @for dep in $?; do \ | |
369 | case '$(am__configure_deps)' in \ | |
370 | @@ -493,6 +521,15 @@ | |
371 | distclean-compile: | |
372 | -rm -f *.tab.c | |
373 | ||
374 | +.cc.o: | |
375 | + $(CXXCOMPILE) -c -o $@ $< | |
376 | + | |
377 | +.cc.obj: | |
378 | + $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` | |
379 | + | |
380 | +.cc.lo: | |
381 | + $(LTCXXCOMPILE) -c -o $@ $< | |
382 | + | |
383 | mostlyclean-libtool: | |
384 | -rm -f *.lo | |
385 | ||
386 | @@ -757,9 +794,41 @@ | |
387 | uninstall-toolexeclibLTLIBRARIES | |
388 | ||
389 | ||
390 | -vpath % $(top_srcdir)/src | |
391 | -vpath % $(top_srcdir) | |
392 | +vpath % $(top_srcdir)/src/c++98 | |
393 | +vpath % $(top_srcdir)/src/c++11 | |
394 | +compatibility-parallel_list.lo: compatibility-parallel_list.cc | |
395 | + $(LTCXXCOMPILE) -c $< | |
396 | +compatibility-parallel_list.o: compatibility-parallel_list.cc | |
397 | + $(CXXCOMPILE) -c $< | |
398 | ||
399 | +compatibility-parallel_list-2.lo: compatibility-parallel_list-2.cc | |
400 | + $(LTCXXCOMPILE) -c $< | |
401 | +compatibility-parallel_list-2.o: compatibility-parallel_list-2.cc | |
402 | + $(CXXCOMPILE) -c $< | |
403 | + | |
404 | +# Use special rules for compatibility-ldbl.cc compilation, as we need to | |
405 | +# pass -mlong-double-64. | |
406 | +@GLIBCXX_LDBL_COMPAT_TRUE@compatibility-ldbl.lo: compatibility-ldbl.cc | |
407 | +@GLIBCXX_LDBL_COMPAT_TRUE@ $(LTCXXCOMPILE) -mlong-double-64 -c $< | |
408 | +@GLIBCXX_LDBL_COMPAT_TRUE@compatibility-ldbl.o: compatibility-ldbl.cc | |
409 | +@GLIBCXX_LDBL_COMPAT_TRUE@ $(CXXCOMPILE) -mlong-double-64 -c $< | |
410 | + | |
411 | +# Use special rules for C++11 files/objects. | |
412 | +compatibility-c++0x.lo: compatibility-c++0x.cc | |
413 | + $(LTCXXCOMPILE) -std=gnu++11 -c $< | |
414 | +compatibility-c++0x.o: compatibility-c++0x.cc | |
415 | + $(CXXCOMPILE) -std=gnu++11 -c $< | |
416 | + | |
417 | +compatibility-atomic-c++0x.lo: compatibility-atomic-c++0x.cc | |
418 | + $(LTCXXCOMPILE) -std=gnu++11 -c $< | |
419 | +compatibility-atomic-c++0x.o: compatibility-atomic-c++0x.cc | |
420 | + $(CXXCOMPILE) -std=gnu++11 -c $< | |
421 | + | |
422 | +compatibility-thread-c++0x.lo: compatibility-thread-c++0x.cc | |
423 | + $(LTCXXCOMPILE) -std=gnu++11 -c $< | |
424 | +compatibility-thread-c++0x.o: compatibility-thread-c++0x.cc | |
425 | + $(CXXCOMPILE) -std=gnu++11 -c $< | |
426 | + | |
427 | # Symbol versioning for shared libraries. | |
428 | @ENABLE_SYMVERS_TRUE@libstdc++-symbols.ver: ${glibcxx_srcdir}/$(SYMVER_FILE) \ | |
429 | @ENABLE_SYMVERS_TRUE@ $(port_specific_symbol_files) | |
430 | @@ -777,7 +846,7 @@ | |
431 | @ENABLE_SYMVERS_TRUE@ fi; \ | |
432 | @ENABLE_SYMVERS_TRUE@ fi | |
433 | @ENABLE_SYMVERS_TRUE@ $(EGREP) -v '^[ ]*#(#| |$$)' $@.tmp | \ | |
434 | -@ENABLE_SYMVERS_TRUE@ $(COMPILE) -E -P -include config.h - > $@ || (rm -f $@ ; exit 1) | |
435 | +@ENABLE_SYMVERS_TRUE@ $(CC) -E -P -include ../config.h - > $@ || (rm -f $@ ; exit 1) | |
436 | @ENABLE_SYMVERS_TRUE@ rm -f $@.tmp | |
437 | @ENABLE_SYMVERS_SUN_TRUE@@ENABLE_SYMVERS_TRUE@libstdc++-symbols.ver-sun : libstdc++-symbols.ver \ | |
438 | @ENABLE_SYMVERS_SUN_TRUE@@ENABLE_SYMVERS_TRUE@ $(toplevel_srcdir)/contrib/make_sunver.pl \ | |
439 | @@ -800,7 +869,6 @@ | |
440 | @ENABLE_SYMVERS_DARWIN_TRUE@@ENABLE_SYMVERS_TRUE@ > $@ || (rm -f $@ ; exit 1) | |
441 | ||
442 | # Control additional build primary rules. | |
443 | -# EXTRA_LTLIBRARIES = | |
444 | all-once: libstdc++convenience.la $(STAMP_DEBUG) | |
445 | install-data-once: $(STAMP_INSTALL_DEBUG) | |
446 | ||
447 | @@ -846,7 +914,7 @@ | |
448 | mv Makefile Makefile.tmp; \ | |
449 | sed -e 's,all-local: all-once,all-local:,' \ | |
450 | -e 's,install-data-local: install-data-once,install-data-local:,' \ | |
451 | - -e 's,src/c,src/debug/c,' \ | |
452 | + -e '/vpath/!s,src/c,src/debug/c,' \ | |
453 | < Makefile.tmp > Makefile ; \ | |
454 | $(MAKE) CXXFLAGS='$(DEBUG_FLAGS)' \ | |
455 | toolexeclibdir=$(glibcxx_toolexeclibdir)/debug all) ; | |
456 | Index: libstdc++-v3/src/Makefile.am | |
457 | =================================================================== | |
458 | --- libstdc++-v3/src/Makefile.am (.../tags/gcc_4_7_0_release) (wersja 187906) | |
459 | +++ libstdc++-v3/src/Makefile.am (.../branches/gcc-4_7-branch) (wersja 187906) | |
460 | @@ -29,11 +29,38 @@ | |
461 | # Cross compiler support. | |
462 | toolexeclib_LTLIBRARIES = libstdc++.la | |
463 | ||
464 | -vpath % $(top_srcdir)/src | |
465 | -vpath % $(top_srcdir) | |
466 | +vpath % $(top_srcdir)/src/c++98 | |
467 | +vpath % $(top_srcdir)/src/c++11 | |
468 | ||
469 | -libstdc___la_SOURCES = | |
470 | +if GLIBCXX_LDBL_COMPAT | |
471 | +ldbl_compat_sources = compatibility-ldbl.cc | |
472 | +else | |
473 | +ldbl_compat_sources = | |
474 | +endif | |
475 | ||
476 | +if ENABLE_PARALLEL | |
477 | +parallel_compat_sources = \ | |
478 | + compatibility-parallel_list.cc compatibility-parallel_list-2.cc | |
479 | +else | |
480 | +parallel_compat_sources = | |
481 | +endif | |
482 | + | |
483 | +cxx98_sources = \ | |
484 | + compatibility.cc \ | |
485 | + compatibility-debug_list.cc \ | |
486 | + compatibility-debug_list-2.cc \ | |
487 | + compatibility-list.cc \ | |
488 | + compatibility-list-2.cc \ | |
489 | + ${ldbl_compat_sources} \ | |
490 | + ${parallel_compat_sources} | |
491 | + | |
492 | +cxx11_sources = \ | |
493 | + compatibility-c++0x.cc \ | |
494 | + compatibility-atomic-c++0x.cc \ | |
495 | + compatibility-thread-c++0x.cc | |
496 | + | |
497 | +libstdc___la_SOURCES = $(cxx98_sources) $(cxx11_sources) | |
498 | + | |
499 | libstdc___la_LIBADD = \ | |
500 | $(GLIBCXX_LIBS) \ | |
501 | $(top_builddir)/libsupc++/libsupc++convenience.la \ | |
502 | @@ -52,6 +79,43 @@ | |
503 | libstdc___la_LINK = $(CXXLINK) $(libstdc___la_LDFLAGS) | |
504 | ||
505 | ||
506 | +# Use special rules for parallel mode compilation. | |
507 | +PARALLEL_FLAGS = -fopenmp -D_GLIBCXX_PARALLEL -I$(glibcxx_builddir)/../libgomp | |
508 | +compatibility-parallel_list.lo: compatibility-parallel_list.cc | |
509 | + $(LTCXXCOMPILE) -c $< | |
510 | +compatibility-parallel_list.o: compatibility-parallel_list.cc | |
511 | + $(CXXCOMPILE) -c $< | |
512 | + | |
513 | +compatibility-parallel_list-2.lo: compatibility-parallel_list-2.cc | |
514 | + $(LTCXXCOMPILE) -c $< | |
515 | +compatibility-parallel_list-2.o: compatibility-parallel_list-2.cc | |
516 | + $(CXXCOMPILE) -c $< | |
517 | + | |
518 | +# Use special rules for compatibility-ldbl.cc compilation, as we need to | |
519 | +# pass -mlong-double-64. | |
520 | +if GLIBCXX_LDBL_COMPAT | |
521 | +compatibility-ldbl.lo: compatibility-ldbl.cc | |
522 | + $(LTCXXCOMPILE) -mlong-double-64 -c $< | |
523 | +compatibility-ldbl.o: compatibility-ldbl.cc | |
524 | + $(CXXCOMPILE) -mlong-double-64 -c $< | |
525 | +endif | |
526 | + | |
527 | +# Use special rules for C++11 files/objects. | |
528 | +compatibility-c++0x.lo: compatibility-c++0x.cc | |
529 | + $(LTCXXCOMPILE) -std=gnu++11 -c $< | |
530 | +compatibility-c++0x.o: compatibility-c++0x.cc | |
531 | + $(CXXCOMPILE) -std=gnu++11 -c $< | |
532 | + | |
533 | +compatibility-atomic-c++0x.lo: compatibility-atomic-c++0x.cc | |
534 | + $(LTCXXCOMPILE) -std=gnu++11 -c $< | |
535 | +compatibility-atomic-c++0x.o: compatibility-atomic-c++0x.cc | |
536 | + $(CXXCOMPILE) -std=gnu++11 -c $< | |
537 | + | |
538 | +compatibility-thread-c++0x.lo: compatibility-thread-c++0x.cc | |
539 | + $(LTCXXCOMPILE) -std=gnu++11 -c $< | |
540 | +compatibility-thread-c++0x.o: compatibility-thread-c++0x.cc | |
541 | + $(CXXCOMPILE) -std=gnu++11 -c $< | |
542 | + | |
543 | # AM_CXXFLAGS needs to be in each subdirectory so that it can be | |
544 | # modified in a per-library or per-sub-library way. Need to manually | |
545 | # set this option because CONFIG_CXXFLAGS has to be after | |
546 | @@ -59,13 +123,10 @@ | |
547 | # as the occasion calls for it. | |
548 | AM_CXXFLAGS = \ | |
549 | $(XTEMPLATE_FLAGS) \ | |
550 | - $(WARN_CXXFLAGS) \ | |
551 | - $(OPTIMIZE_CXXFLAGS) \ | |
552 | - $(CONFIG_CXXFLAGS) | |
553 | + $(WARN_CXXFLAGS) $(OPTIMIZE_CXXFLAGS) $(CONFIG_CXXFLAGS) | |
554 | ||
555 | +# Libtool notes | |
556 | ||
557 | -# libstdc++ libtool notes | |
558 | - | |
559 | # 1) Need to explicitly set LTCXXCOMPILE so that AM_CXXFLAGS is | |
560 | # last. (That way, things like -O2 passed down from the toplevel can | |
561 | # be overridden by --enable-debug.) | |
562 | @@ -82,10 +143,11 @@ | |
563 | # correct solution is to add `--tag CXX' to LTCXXCOMPILE and maybe | |
564 | # CXXLINK, just after $(LIBTOOL), so that libtool doesn't have to | |
565 | # attempt to infer which configuration to use | |
566 | -LTCXXCOMPILE = $(LIBTOOL) --tag CXX \ | |
567 | - $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile \ | |
568 | - $(CXX) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ | |
569 | - $(AM_CXXFLAGS) $(CXXFLAGS) | |
570 | +LTCXXCOMPILE = \ | |
571 | + $(LIBTOOL) --tag CXX \ | |
572 | + $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ | |
573 | + --mode=compile $(CXX) $(INCLUDES) \ | |
574 | + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) | |
575 | ||
576 | LTLDFLAGS = $(shell $(SHELL) $(top_srcdir)/../libtool-ldflags $(LDFLAGS)) | |
577 | ||
578 | @@ -95,9 +157,13 @@ | |
579 | # course is problematic at this point. So, we get the top-level | |
580 | # directory to configure libstdc++-v3 to use gcc as the C++ | |
581 | # compilation driver. | |
582 | -CXXLINK = $(LIBTOOL) --tag CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \ | |
583 | - $(CXX) $(OPT_LDFLAGS) $(SECTION_LDFLAGS) $(AM_CXXFLAGS) $(LTLDFLAGS) -o $@ | |
584 | +CXXLINK = \ | |
585 | + $(LIBTOOL) --tag CXX \ | |
586 | + $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ | |
587 | + --mode=link $(CXX) \ | |
588 | + $(OPT_LDFLAGS) $(SECTION_LDFLAGS) $(AM_CXXFLAGS) $(LTLDFLAGS) -o $@ | |
589 | ||
590 | + | |
591 | # Symbol versioning for shared libraries. | |
592 | if ENABLE_SYMVERS | |
593 | libstdc++-symbols.ver: ${glibcxx_srcdir}/$(SYMVER_FILE) \ | |
594 | @@ -116,7 +182,7 @@ | |
595 | fi; \ | |
596 | fi | |
597 | $(EGREP) -v '^[ ]*#(#| |$$)' $@.tmp | \ | |
598 | - $(COMPILE) -E -P -include config.h - > $@ || (rm -f $@ ; exit 1) | |
599 | + $(CC) -E -P -include ../config.h - > $@ || (rm -f $@ ; exit 1) | |
600 | rm -f $@.tmp | |
601 | ||
602 | CLEANFILES = libstdc++-symbols.ver | |
603 | @@ -165,7 +231,6 @@ | |
604 | ||
605 | ||
606 | # Control additional build primary rules. | |
607 | -# EXTRA_LTLIBRARIES = | |
608 | all-once: libstdc++convenience.la $(STAMP_DEBUG) | |
609 | install-data-once: $(STAMP_INSTALL_DEBUG) | |
610 | ||
611 | @@ -228,7 +293,7 @@ | |
612 | mv Makefile Makefile.tmp; \ | |
613 | sed -e 's,all-local: all-once,all-local:,' \ | |
614 | -e 's,install-data-local: install-data-once,install-data-local:,' \ | |
615 | - -e 's,src/c,src/debug/c,' \ | |
616 | + -e '/vpath/!s,src/c,src/debug/c,' \ | |
617 | < Makefile.tmp > Makefile ; \ | |
618 | $(MAKE) CXXFLAGS='$(DEBUG_FLAGS)' \ | |
619 | toolexeclibdir=$(glibcxx_toolexeclibdir)/debug all) ; | |
620 | Index: libstdc++-v3/src/c++98/Makefile.in | |
621 | =================================================================== | |
622 | --- libstdc++-v3/src/c++98/Makefile.in (.../tags/gcc_4_7_0_release) (wersja 187906) | |
623 | +++ libstdc++-v3/src/c++98/Makefile.in (.../branches/gcc-4_7-branch) (wersja 187906) | |
624 | @@ -76,23 +76,18 @@ | |
625 | @ENABLE_EXTERN_TEMPLATE_TRUE@ misc-inst.lo ostream-inst.lo \ | |
626 | @ENABLE_EXTERN_TEMPLATE_TRUE@ sstream-inst.lo streambuf-inst.lo \ | |
627 | @ENABLE_EXTERN_TEMPLATE_TRUE@ wlocale-inst.lo | |
628 | -@GLIBCXX_LDBL_COMPAT_TRUE@am__objects_3 = compatibility-ldbl.lo | |
629 | -@ENABLE_PARALLEL_TRUE@am__objects_4 = parallel_settings.lo \ | |
630 | -@ENABLE_PARALLEL_TRUE@ compatibility-parallel_list.lo \ | |
631 | -@ENABLE_PARALLEL_TRUE@ compatibility-parallel_list-2.lo | |
632 | -am__objects_5 = basic_file.lo c++locale.lo $(am__objects_2) \ | |
633 | - $(am__objects_3) $(am__objects_4) | |
634 | -am__objects_6 = bitmap_allocator.lo pool_allocator.lo mt_allocator.lo \ | |
635 | - codecvt.lo compatibility.lo compatibility-debug_list.lo \ | |
636 | - compatibility-debug_list-2.lo compatibility-list.lo \ | |
637 | - compatibility-list-2.lo complex_io.lo ctype.lo globals_io.lo \ | |
638 | - hash_tr1.lo hashtable_tr1.lo ios.lo ios_failure.lo ios_init.lo \ | |
639 | +@ENABLE_PARALLEL_TRUE@am__objects_3 = parallel_settings.lo | |
640 | +am__objects_4 = basic_file.lo c++locale.lo $(am__objects_2) \ | |
641 | + $(am__objects_3) | |
642 | +am__objects_5 = bitmap_allocator.lo pool_allocator.lo mt_allocator.lo \ | |
643 | + codecvt.lo complex_io.lo ctype.lo globals_io.lo hash_tr1.lo \ | |
644 | + hashtable_tr1.lo ios.lo ios_failure.lo ios_init.lo \ | |
645 | ios_locale.lo list.lo locale.lo locale_init.lo \ | |
646 | locale_facets.lo localename.lo math_stubs_float.lo \ | |
647 | math_stubs_long_double.lo stdexcept.lo strstream.lo tree.lo \ | |
648 | istream.lo streambuf.lo valarray.lo $(am__objects_1) \ | |
649 | - $(am__objects_5) | |
650 | -am_libc__98convenience_la_OBJECTS = $(am__objects_6) | |
651 | + $(am__objects_4) | |
652 | +am_libc__98convenience_la_OBJECTS = $(am__objects_5) | |
653 | libc__98convenience_la_OBJECTS = $(am_libc__98convenience_la_OBJECTS) | |
654 | DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) | |
655 | depcomp = | |
656 | @@ -315,7 +310,7 @@ | |
657 | AM_CPPFLAGS = $(GLIBCXX_INCLUDES) | |
658 | ||
659 | # Convenience library for C++98 runtime. | |
660 | -noinst_LTLIBRARIES = libc++98convenience.la | |
661 | +noinst_LTLIBRARIES = libc++98convenience.la | |
662 | headers = | |
663 | ||
664 | # Source files linked in via configuration/make substitution for a | |
665 | @@ -337,15 +332,10 @@ | |
666 | # particular host, but with ad hoc naming rules. | |
667 | host_sources_extra = \ | |
668 | basic_file.cc c++locale.cc \ | |
669 | - ${inst_sources} ${ldbl_compat_sources} ${parallel_sources} | |
670 | + ${inst_sources} ${parallel_sources} | |
671 | ||
672 | @ENABLE_PARALLEL_FALSE@parallel_sources = | |
673 | -@ENABLE_PARALLEL_TRUE@parallel_sources = parallel_settings.cc \ | |
674 | -@ENABLE_PARALLEL_TRUE@ compatibility-parallel_list.cc \ | |
675 | -@ENABLE_PARALLEL_TRUE@ compatibility-parallel_list-2.cc | |
676 | - | |
677 | -@GLIBCXX_LDBL_COMPAT_FALSE@ldbl_compat_sources = | |
678 | -@GLIBCXX_LDBL_COMPAT_TRUE@ldbl_compat_sources = compatibility-ldbl.cc | |
679 | +@ENABLE_PARALLEL_TRUE@parallel_sources = parallel_settings.cc | |
680 | @ENABLE_EXTERN_TEMPLATE_FALSE@XTEMPLATE_FLAGS = | |
681 | @ENABLE_EXTERN_TEMPLATE_TRUE@XTEMPLATE_FLAGS = -fno-implicit-templates | |
682 | @ENABLE_EXTERN_TEMPLATE_FALSE@inst_sources = | |
683 | @@ -370,11 +360,6 @@ | |
684 | pool_allocator.cc \ | |
685 | mt_allocator.cc \ | |
686 | codecvt.cc \ | |
687 | - compatibility.cc \ | |
688 | - compatibility-debug_list.cc \ | |
689 | - compatibility-debug_list-2.cc \ | |
690 | - compatibility-list.cc \ | |
691 | - compatibility-list-2.cc \ | |
692 | complex_io.cc \ | |
693 | ctype.cc \ | |
694 | globals_io.cc \ | |
695 | @@ -417,9 +402,7 @@ | |
696 | AM_CXXFLAGS = \ | |
697 | $(PIC_CXXFLAGS) \ | |
698 | $(XTEMPLATE_FLAGS) \ | |
699 | - $(WARN_CXXFLAGS) \ | |
700 | - $(OPTIMIZE_CXXFLAGS) \ | |
701 | - $(CONFIG_CXXFLAGS) | |
702 | + $(WARN_CXXFLAGS) $(OPTIMIZE_CXXFLAGS) $(CONFIG_CXXFLAGS) | |
703 | ||
704 | AM_MAKEFLAGS = \ | |
705 | "gxx_include_dir=$(gxx_include_dir)" | |
706 | @@ -445,9 +428,11 @@ | |
707 | # attempt to infer which configuration to use. | |
708 | # We have to put --tag disable-shared after --tag CXX lest things | |
709 | # CXX undo the affect of disable-shared. | |
710 | -LTCXXCOMPILE = $(LIBTOOL) --tag CXX --tag disable-shared $(LIBTOOLFLAGS) \ | |
711 | - --mode=compile $(CXX) $(TOPLEVEL_INCLUDES) \ | |
712 | - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) | |
713 | +LTCXXCOMPILE = \ | |
714 | + $(LIBTOOL) --tag CXX --tag disable-shared \ | |
715 | + $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ | |
716 | + --mode=compile $(CXX) $(TOPLEVEL_INCLUDES) \ | |
717 | + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) | |
718 | ||
719 | LTLDFLAGS = $(shell $(SHELL) $(top_srcdir)/../libtool-ldflags $(LDFLAGS)) | |
720 | ||
721 | @@ -457,9 +442,11 @@ | |
722 | # course is problematic at this point. So, we get the top-level | |
723 | # directory to configure libstdc++-v3 to use gcc as the C++ | |
724 | # compilation driver. | |
725 | -CXXLINK = $(LIBTOOL) --tag CXX --tag disable-shared $(LIBTOOLFLAGS) \ | |
726 | - --mode=link $(CXX) \ | |
727 | - $(OPT_LDFLAGS) $(SECTION_LDFLAGS) $(AM_CXXFLAGS) $(LTLDFLAGS) -o $@ | |
728 | +CXXLINK = \ | |
729 | + $(LIBTOOL) --tag CXX --tag disable-shared \ | |
730 | + $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ | |
731 | + --mode=link $(CXX) \ | |
732 | + $(OPT_LDFLAGS) $(SECTION_LDFLAGS) $(AM_CXXFLAGS) $(LTLDFLAGS) -o $@ | |
733 | ||
734 | all: all-am | |
735 | ||
736 | @@ -726,7 +713,6 @@ | |
737 | $(LN_S) ${glibcxx_srcdir}/$(BASIC_FILE_CC) ./$@ || true | |
738 | ||
739 | vpath % $(top_srcdir)/src/c++98 | |
740 | -vpath % $(top_srcdir) | |
741 | strstream.lo: strstream.cc | |
742 | $(LTCXXCOMPILE) -I$(GLIBCXX_INCLUDE_DIR)/backward -Wno-deprecated -c $< | |
743 | strstream.o: strstream.cc | |
744 | @@ -744,23 +730,6 @@ | |
745 | parallel_settings.o: parallel_settings.cc | |
746 | $(CXXCOMPILE) $(PARALLEL_FLAGS) -c $< | |
747 | ||
748 | -compatibility-parallel_list.lo: compatibility-parallel_list.cc | |
749 | - $(LTCXXCOMPILE) -c $< | |
750 | -compatibility-parallel_list.o: compatibility-parallel_list.cc | |
751 | - $(CXXCOMPILE) -c $< | |
752 | - | |
753 | -compatibility-parallel_list-2.lo: compatibility-parallel_list-2.cc | |
754 | - $(LTCXXCOMPILE) -c $< | |
755 | -compatibility-parallel_list-2.o: compatibility-parallel_list-2.cc | |
756 | - $(CXXCOMPILE) -c $< | |
757 | - | |
758 | -# Use special rules for compatibility-ldbl.cc compilation, as we need to | |
759 | -# pass -mlong-double-64. | |
760 | -@GLIBCXX_LDBL_COMPAT_TRUE@compatibility-ldbl.lo: compatibility-ldbl.cc | |
761 | -@GLIBCXX_LDBL_COMPAT_TRUE@ $(LTCXXCOMPILE) -mlong-double-64 -c $< | |
762 | -@GLIBCXX_LDBL_COMPAT_TRUE@compatibility-ldbl.o: compatibility-ldbl.cc | |
763 | -@GLIBCXX_LDBL_COMPAT_TRUE@ $(CXXCOMPILE) -mlong-double-64 -c $< | |
764 | - | |
765 | # Tell versions [3.59,3.63) of GNU make to not export all variables. | |
766 | # Otherwise a system limit (for SysV at least) may be exceeded. | |
767 | .NOEXPORT: | |
768 | Index: libstdc++-v3/src/c++98/compatibility-list.cc | |
769 | =================================================================== | |
770 | --- libstdc++-v3/src/c++98/compatibility-list.cc (.../tags/gcc_4_7_0_release) (wersja 187906) | |
771 | +++ libstdc++-v3/src/c++98/compatibility-list.cc (.../branches/gcc-4_7-branch) (wersja 187906) | |
772 | @@ -1,6 +1,6 @@ | |
773 | // Compatibility symbols for previous versions, list bits -*- C++ -*- | |
774 | ||
775 | -// Copyright (C) 2010, 2011 Free Software Foundation, Inc. | |
776 | +// Copyright (C) 2010, 2011, 2012 Free Software Foundation, Inc. | |
777 | // | |
778 | // This file is part of the GNU ISO C++ Library. This library is free | |
779 | // software; you can redistribute it and/or modify it under the | |
780 | Index: libstdc++-v3/src/c++98/compatibility-ldbl.cc | |
781 | =================================================================== | |
782 | --- libstdc++-v3/src/c++98/compatibility-ldbl.cc (.../tags/gcc_4_7_0_release) (wersja 187906) | |
783 | +++ libstdc++-v3/src/c++98/compatibility-ldbl.cc (.../branches/gcc-4_7-branch) (wersja 187906) | |
784 | @@ -1,6 +1,6 @@ | |
785 | // Compatibility symbols for -mlong-double-64 compatibility -*- C++ -*- | |
786 | ||
787 | -// Copyright (C) 2006, 2008, 2009, 2010, 2011 | |
788 | +// Copyright (C) 2006, 2008, 2009, 2010, 2011, 2012 | |
789 | // Free Software Foundation, Inc. | |
790 | // | |
791 | // This file is part of the GNU ISO C++ Library. This library is free | |
792 | Index: libstdc++-v3/src/c++98/compatibility.cc | |
793 | =================================================================== | |
794 | --- libstdc++-v3/src/c++98/compatibility.cc (.../tags/gcc_4_7_0_release) (wersja 187906) | |
795 | +++ libstdc++-v3/src/c++98/compatibility.cc (.../branches/gcc-4_7-branch) (wersja 187906) | |
796 | @@ -199,7 +199,7 @@ | |
797 | #endif | |
798 | ||
799 | _GLIBCXX_END_NAMESPACE_VERSION | |
800 | -} // namespace | |
801 | +} // namespace std | |
802 | ||
803 | ||
804 | // NB: These symbols renames should go into the shared library only, | |
805 | @@ -228,7 +228,7 @@ | |
806 | #endif | |
807 | ||
808 | _GLIBCXX_END_NAMESPACE_VERSION | |
809 | -} // namespace | |
810 | +} // namespace std | |
811 | ||
812 | ||
813 | /* gcc-4.0.0 | |
814 | @@ -357,7 +357,7 @@ | |
815 | #endif | |
816 | ||
817 | _GLIBCXX_END_NAMESPACE_VERSION | |
818 | -} // namespace | |
819 | +} // namespace std | |
820 | ||
821 | // The rename syntax for default exported names is | |
822 | // asm (".symver name1,exportedname@GLIBCXX_3.4") | |
823 | Index: libstdc++-v3/src/c++98/compatibility-list-2.cc | |
824 | =================================================================== | |
825 | --- libstdc++-v3/src/c++98/compatibility-list-2.cc (.../tags/gcc_4_7_0_release) (wersja 187906) | |
826 | +++ libstdc++-v3/src/c++98/compatibility-list-2.cc (.../branches/gcc-4_7-branch) (wersja 187906) | |
827 | @@ -1,6 +1,6 @@ | |
828 | // Compatibility symbols for previous versions, list bits -*- C++ -*- | |
829 | ||
830 | -// Copyright (C) 2011 Free Software Foundation, Inc. | |
831 | +// Copyright (C) 2011, 2012 Free Software Foundation, Inc. | |
832 | // | |
833 | // This file is part of the GNU ISO C++ Library. This library is free | |
834 | // software; you can redistribute it and/or modify it under the | |
835 | @@ -24,6 +24,8 @@ | |
836 | ||
837 | #include <bits/move.h> | |
838 | ||
839 | +#ifdef PIC | |
840 | + | |
841 | #ifndef _GLIBCXX_BEGIN_NAMESPACE_COMPAT | |
842 | # define _GLIBCXX_BEGIN_NAMESPACE_COMPAT | |
843 | #endif | |
844 | @@ -111,3 +113,5 @@ | |
845 | _GLIBCXX_END_NAMESPACE_COMPAT | |
846 | ||
847 | } // namespace std | |
848 | + | |
849 | +#endif | |
850 | Index: libstdc++-v3/src/c++98/Makefile.am | |
851 | =================================================================== | |
852 | --- libstdc++-v3/src/c++98/Makefile.am (.../tags/gcc_4_7_0_release) (wersja 187906) | |
853 | +++ libstdc++-v3/src/c++98/Makefile.am (.../branches/gcc-4_7-branch) (wersja 187906) | |
854 | @@ -25,7 +25,7 @@ | |
855 | include $(top_srcdir)/fragment.am | |
856 | ||
857 | # Convenience library for C++98 runtime. | |
858 | -noinst_LTLIBRARIES = libc++98convenience.la | |
859 | +noinst_LTLIBRARIES = libc++98convenience.la | |
860 | ||
861 | headers = | |
862 | ||
863 | @@ -74,7 +74,7 @@ | |
864 | # particular host, but with ad hoc naming rules. | |
865 | host_sources_extra = \ | |
866 | basic_file.cc c++locale.cc \ | |
867 | - ${inst_sources} ${ldbl_compat_sources} ${parallel_sources} | |
868 | + ${inst_sources} ${parallel_sources} | |
869 | ||
870 | c++locale.cc: ${glibcxx_srcdir}/$(CLOCALE_CC) | |
871 | $(LN_S) ${glibcxx_srcdir}/$(CLOCALE_CC) ./$@ || true | |
872 | @@ -83,19 +83,11 @@ | |
873 | $(LN_S) ${glibcxx_srcdir}/$(BASIC_FILE_CC) ./$@ || true | |
874 | ||
875 | if ENABLE_PARALLEL | |
876 | -parallel_sources = parallel_settings.cc \ | |
877 | - compatibility-parallel_list.cc \ | |
878 | - compatibility-parallel_list-2.cc | |
879 | +parallel_sources = parallel_settings.cc | |
880 | else | |
881 | parallel_sources = | |
882 | endif | |
883 | ||
884 | -if GLIBCXX_LDBL_COMPAT | |
885 | -ldbl_compat_sources = compatibility-ldbl.cc | |
886 | -else | |
887 | -ldbl_compat_sources = | |
888 | -endif | |
889 | - | |
890 | if ENABLE_EXTERN_TEMPLATE | |
891 | XTEMPLATE_FLAGS = -fno-implicit-templates | |
892 | inst_sources = \ | |
893 | @@ -122,11 +114,6 @@ | |
894 | pool_allocator.cc \ | |
895 | mt_allocator.cc \ | |
896 | codecvt.cc \ | |
897 | - compatibility.cc \ | |
898 | - compatibility-debug_list.cc \ | |
899 | - compatibility-debug_list-2.cc \ | |
900 | - compatibility-list.cc \ | |
901 | - compatibility-list-2.cc \ | |
902 | complex_io.cc \ | |
903 | ctype.cc \ | |
904 | globals_io.cc \ | |
905 | @@ -153,7 +140,6 @@ | |
906 | ${host_sources_extra} | |
907 | ||
908 | vpath % $(top_srcdir)/src/c++98 | |
909 | -vpath % $(top_srcdir) | |
910 | ||
911 | libc__98convenience_la_SOURCES = $(sources) | |
912 | ||
913 | @@ -180,25 +166,6 @@ | |
914 | parallel_settings.o: parallel_settings.cc | |
915 | $(CXXCOMPILE) $(PARALLEL_FLAGS) -c $< | |
916 | ||
917 | -compatibility-parallel_list.lo: compatibility-parallel_list.cc | |
918 | - $(LTCXXCOMPILE) -c $< | |
919 | -compatibility-parallel_list.o: compatibility-parallel_list.cc | |
920 | - $(CXXCOMPILE) -c $< | |
921 | - | |
922 | -compatibility-parallel_list-2.lo: compatibility-parallel_list-2.cc | |
923 | - $(LTCXXCOMPILE) -c $< | |
924 | -compatibility-parallel_list-2.o: compatibility-parallel_list-2.cc | |
925 | - $(CXXCOMPILE) -c $< | |
926 | - | |
927 | -if GLIBCXX_LDBL_COMPAT | |
928 | -# Use special rules for compatibility-ldbl.cc compilation, as we need to | |
929 | -# pass -mlong-double-64. | |
930 | -compatibility-ldbl.lo: compatibility-ldbl.cc | |
931 | - $(LTCXXCOMPILE) -mlong-double-64 -c $< | |
932 | -compatibility-ldbl.o: compatibility-ldbl.cc | |
933 | - $(CXXCOMPILE) -mlong-double-64 -c $< | |
934 | -endif | |
935 | - | |
936 | # AM_CXXFLAGS needs to be in each subdirectory so that it can be | |
937 | # modified in a per-library or per-sub-library way. Need to manually | |
938 | # set this option because CONFIG_CXXFLAGS has to be after | |
939 | @@ -207,9 +174,7 @@ | |
940 | AM_CXXFLAGS = \ | |
941 | $(PIC_CXXFLAGS) \ | |
942 | $(XTEMPLATE_FLAGS) \ | |
943 | - $(WARN_CXXFLAGS) \ | |
944 | - $(OPTIMIZE_CXXFLAGS) \ | |
945 | - $(CONFIG_CXXFLAGS) | |
946 | + $(WARN_CXXFLAGS) $(OPTIMIZE_CXXFLAGS) $(CONFIG_CXXFLAGS) | |
947 | ||
948 | AM_MAKEFLAGS = \ | |
949 | "gxx_include_dir=$(gxx_include_dir)" | |
950 | @@ -234,9 +199,11 @@ | |
951 | # attempt to infer which configuration to use. | |
952 | # We have to put --tag disable-shared after --tag CXX lest things | |
953 | # CXX undo the affect of disable-shared. | |
954 | -LTCXXCOMPILE = $(LIBTOOL) --tag CXX --tag disable-shared $(LIBTOOLFLAGS) \ | |
955 | - --mode=compile $(CXX) $(TOPLEVEL_INCLUDES) \ | |
956 | - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) | |
957 | +LTCXXCOMPILE = \ | |
958 | + $(LIBTOOL) --tag CXX --tag disable-shared \ | |
959 | + $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ | |
960 | + --mode=compile $(CXX) $(TOPLEVEL_INCLUDES) \ | |
961 | + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) | |
962 | ||
963 | LTLDFLAGS = $(shell $(SHELL) $(top_srcdir)/../libtool-ldflags $(LDFLAGS)) | |
964 | ||
965 | @@ -246,6 +213,8 @@ | |
966 | # course is problematic at this point. So, we get the top-level | |
967 | # directory to configure libstdc++-v3 to use gcc as the C++ | |
968 | # compilation driver. | |
969 | -CXXLINK = $(LIBTOOL) --tag CXX --tag disable-shared $(LIBTOOLFLAGS) \ | |
970 | - --mode=link $(CXX) \ | |
971 | - $(OPT_LDFLAGS) $(SECTION_LDFLAGS) $(AM_CXXFLAGS) $(LTLDFLAGS) -o $@ | |
972 | +CXXLINK = \ | |
973 | + $(LIBTOOL) --tag CXX --tag disable-shared \ | |
974 | + $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ | |
975 | + --mode=link $(CXX) \ | |
976 | + $(OPT_LDFLAGS) $(SECTION_LDFLAGS) $(AM_CXXFLAGS) $(LTLDFLAGS) -o $@ | |
977 | Index: libstdc++-v3/src/c++11/compatibility-thread-c++0x.cc | |
978 | =================================================================== | |
979 | --- libstdc++-v3/src/c++11/compatibility-thread-c++0x.cc (.../tags/gcc_4_7_0_release) (wersja 0) | |
980 | +++ libstdc++-v3/src/c++11/compatibility-thread-c++0x.cc (.../branches/gcc-4_7-branch) (wersja 187906) | |
981 | @@ -0,0 +1,72 @@ | |
982 | +// Compatibility symbols for previous versions, C++0x bits -*- C++ -*- | |
983 | + | |
984 | +// Copyright (C) 2009, 2010, 2011, 2012 Free Software Foundation, Inc. | |
985 | +// | |
986 | +// This file is part of the GNU ISO C++ Library. This library is free | |
987 | +// software; you can redistribute it and/or modify it under the | |
988 | +// terms of the GNU General Public License as published by the | |
989 | +// Free Software Foundation; either version 3, or (at your option) | |
990 | +// any later version. | |
991 | + | |
992 | +// This library is distributed in the hope that it will be useful, | |
993 | +// but WITHOUT ANY WARRANTY; without even the implied warranty of | |
994 | +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
995 | +// GNU General Public License for more details. | |
996 | + | |
997 | +// Under Section 7 of GPL version 3, you are granted additional | |
998 | +// permissions described in the GCC Runtime Library Exception, version | |
999 | +// 3.1, as published by the Free Software Foundation. | |
1000 | + | |
1001 | +// You should have received a copy of the GNU General Public License and | |
1002 | +// a copy of the GCC Runtime Library Exception along with this program; | |
1003 | +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see | |
1004 | +// <http://www.gnu.org/licenses/>. | |
1005 | + | |
1006 | +#include <future> | |
1007 | +#include <mutex> | |
1008 | + | |
1009 | +#ifndef __GXX_EXPERIMENTAL_CXX0X__ | |
1010 | +# error "compatibility-c++0x.cc must be compiled with -std=gnu++0x" | |
1011 | +#endif | |
1012 | + | |
1013 | +#define _GLIBCXX_ASM_SYMVER(cur, old, version) \ | |
1014 | + asm (".symver " #cur "," #old "@@@" #version); | |
1015 | + | |
1016 | +// XXX GLIBCXX_ABI Deprecated | |
1017 | +// gcc-4.6.0 | |
1018 | +// <future> export changes | |
1019 | +#if defined(_GLIBCXX_SYMVER_GNU) && defined(PIC) \ | |
1020 | + && defined(_GLIBCXX_HAVE_AS_SYMVER_DIRECTIVE) \ | |
1021 | + && defined(_GLIBCXX_HAVE_SYMVER_SYMBOL_RENAMING_RUNTIME_SUPPORT) | |
1022 | + | |
1023 | +namespace __gnu_cxx _GLIBCXX_VISIBILITY(default) | |
1024 | +{ | |
1025 | + const std::error_category* future_category = &std::future_category(); | |
1026 | +} | |
1027 | + | |
1028 | +_GLIBCXX_ASM_SYMVER(_ZN9__gnu_cxx15future_categoryE, _ZSt15future_category, GLIBCXX_3.4.14) | |
1029 | + | |
1030 | +#endif | |
1031 | + | |
1032 | +// XXX GLIBCXX_ABI Deprecated | |
1033 | +// gcc-4.6.0 | |
1034 | +// <mutex> export changes | |
1035 | +#if defined(_GLIBCXX_HAS_GTHREADS) && defined(_GLIBCXX_USE_C99_STDINT_TR1) | |
1036 | +#if defined(_GLIBCXX_SYMVER_GNU) && defined(PIC) \ | |
1037 | + && defined(_GLIBCXX_HAVE_AS_SYMVER_DIRECTIVE) \ | |
1038 | + && defined(_GLIBCXX_HAVE_SYMVER_SYMBOL_RENAMING_RUNTIME_SUPPORT) | |
1039 | + | |
1040 | +namespace __gnu_cxx _GLIBCXX_VISIBILITY(default) | |
1041 | +{ | |
1042 | + std::defer_lock_t defer_lock; | |
1043 | + std::try_to_lock_t try_to_lock; | |
1044 | + std::adopt_lock_t adopt_lock; | |
1045 | +} | |
1046 | + | |
1047 | +_GLIBCXX_ASM_SYMVER(_ZN9__gnu_cxx10adopt_lockE, _ZSt10adopt_lock, GLIBCXX_3.4.11) | |
1048 | +_GLIBCXX_ASM_SYMVER(_ZN9__gnu_cxx10defer_lockE, _ZSt10defer_lock, GLIBCXX_3.4.11) | |
1049 | +_GLIBCXX_ASM_SYMVER(_ZN9__gnu_cxx11try_to_lockE, _ZSt11try_to_lock, GLIBCXX_3.4.11) | |
1050 | + | |
1051 | + | |
1052 | +#endif | |
1053 | +#endif // _GLIBCXX_HAS_GTHREADS && _GLIBCXX_USE_C99_STDINT_TR1 | |
1054 | Index: libstdc++-v3/src/c++11/Makefile.in | |
1055 | =================================================================== | |
1056 | --- libstdc++-v3/src/c++11/Makefile.in (.../tags/gcc_4_7_0_release) (wersja 187906) | |
1057 | +++ libstdc++-v3/src/c++11/Makefile.in (.../branches/gcc-4_7-branch) (wersja 187906) | |
1058 | @@ -66,11 +66,10 @@ | |
1059 | CONFIG_CLEAN_VPATH_FILES = | |
1060 | LTLIBRARIES = $(noinst_LTLIBRARIES) | |
1061 | libc__11convenience_la_LIBADD = | |
1062 | -am__objects_1 = chrono.lo condition_variable.lo compatibility-c++0x.lo \ | |
1063 | - compatibility-atomic-c++0x.lo debug.lo functexcept.lo \ | |
1064 | - functional.lo future.lo hash_c++0x.lo hashtable_c++0x.lo \ | |
1065 | - limits.lo mutex.lo placeholders.lo regex.lo shared_ptr.lo \ | |
1066 | - system_error.lo thread.lo | |
1067 | +am__objects_1 = chrono.lo condition_variable.lo debug.lo \ | |
1068 | + functexcept.lo functional.lo future.lo hash_c++0x.lo \ | |
1069 | + hashtable_c++0x.lo limits.lo mutex.lo placeholders.lo regex.lo \ | |
1070 | + shared_ptr.lo system_error.lo thread.lo | |
1071 | @ENABLE_EXTERN_TEMPLATE_TRUE@am__objects_2 = fstream-inst.lo \ | |
1072 | @ENABLE_EXTERN_TEMPLATE_TRUE@ string-inst.lo wstring-inst.lo | |
1073 | am_libc__11convenience_la_OBJECTS = $(am__objects_1) $(am__objects_2) | |
1074 | @@ -301,8 +300,6 @@ | |
1075 | sources = \ | |
1076 | chrono.cc \ | |
1077 | condition_variable.cc \ | |
1078 | - compatibility-c++0x.cc \ | |
1079 | - compatibility-atomic-c++0x.cc \ | |
1080 | debug.cc \ | |
1081 | functexcept.cc \ | |
1082 | functional.cc \ | |
1083 | @@ -333,11 +330,10 @@ | |
1084 | # OPTIMIZE_CXXFLAGS on the compile line so that -O2 can be overridden | |
1085 | # as the occasion calls for it. | |
1086 | AM_CXXFLAGS = \ | |
1087 | + -std=gnu++11 \ | |
1088 | $(PIC_CXXFLAGS) \ | |
1089 | $(XTEMPLATE_FLAGS) \ | |
1090 | - $(WARN_CXXFLAGS) \ | |
1091 | - $(OPTIMIZE_CXXFLAGS) \ | |
1092 | - $(CONFIG_CXXFLAGS) -std=gnu++11 | |
1093 | + $(WARN_CXXFLAGS) $(OPTIMIZE_CXXFLAGS) $(CONFIG_CXXFLAGS) | |
1094 | ||
1095 | AM_MAKEFLAGS = \ | |
1096 | "gxx_include_dir=$(gxx_include_dir)" | |
1097 | @@ -363,9 +359,11 @@ | |
1098 | # attempt to infer which configuration to use. | |
1099 | # We have to put --tag disable-shared after --tag CXX lest things | |
1100 | # CXX undo the affect of disable-shared. | |
1101 | -LTCXXCOMPILE = $(LIBTOOL) --tag CXX --tag disable-shared $(LIBTOOLFLAGS) \ | |
1102 | - --mode=compile $(CXX) $(TOPLEVEL_INCLUDES) \ | |
1103 | - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) | |
1104 | +LTCXXCOMPILE = \ | |
1105 | + $(LIBTOOL) --tag CXX --tag disable-shared \ | |
1106 | + $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ | |
1107 | + --mode=compile $(CXX) $(TOPLEVEL_INCLUDES) \ | |
1108 | + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) | |
1109 | ||
1110 | LTLDFLAGS = $(shell $(SHELL) $(top_srcdir)/../libtool-ldflags $(LDFLAGS)) | |
1111 | ||
1112 | @@ -375,9 +373,11 @@ | |
1113 | # course is problematic at this point. So, we get the top-level | |
1114 | # directory to configure libstdc++-v3 to use gcc as the C++ | |
1115 | # compilation driver. | |
1116 | -CXXLINK = $(LIBTOOL) --tag CXX --tag disable-shared $(LIBTOOLFLAGS) \ | |
1117 | - --mode=link $(CXX) \ | |
1118 | - $(OPT_LDFLAGS) $(SECTION_LDFLAGS) $(AM_CXXFLAGS) $(LTLDFLAGS) -o $@ | |
1119 | +CXXLINK = \ | |
1120 | + $(LIBTOOL) --tag CXX --tag disable-shared \ | |
1121 | + $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ | |
1122 | + --mode=link $(CXX) \ | |
1123 | + $(OPT_LDFLAGS) $(SECTION_LDFLAGS) $(AM_CXXFLAGS) $(LTLDFLAGS) -o $@ | |
1124 | ||
1125 | all: all-am | |
1126 | ||
1127 | @@ -612,7 +612,6 @@ | |
1128 | ||
1129 | ||
1130 | vpath % $(top_srcdir)/src/c++11 | |
1131 | -vpath % $(top_srcdir) | |
1132 | ||
1133 | # Tell versions [3.59,3.63) of GNU make to not export all variables. | |
1134 | # Otherwise a system limit (for SysV at least) may be exceeded. | |
1135 | Index: libstdc++-v3/src/c++11/compatibility-atomic-c++0x.cc | |
1136 | =================================================================== | |
1137 | --- libstdc++-v3/src/c++11/compatibility-atomic-c++0x.cc (.../tags/gcc_4_7_0_release) (wersja 187906) | |
1138 | +++ libstdc++-v3/src/c++11/compatibility-atomic-c++0x.cc (.../branches/gcc-4_7-branch) (wersja 187906) | |
1139 | @@ -1,6 +1,6 @@ | |
1140 | // <atomic> compatibility -*- C++ -*- | |
1141 | ||
1142 | -// Copyright (C) 2008, 2009, 2010, 2011 | |
1143 | +// Copyright (C) 2008, 2009, 2010, 2011, 2012 | |
1144 | // Free Software Foundation, Inc. | |
1145 | // | |
1146 | // This file is part of the GNU ISO C++ Library. This library is free | |
1147 | @@ -30,6 +30,8 @@ | |
1148 | // XXX GLIBCXX_ABI Deprecated | |
1149 | // gcc-4.7.0 | |
1150 | ||
1151 | +#ifdef PIC | |
1152 | + | |
1153 | #define LOGSIZE 4 | |
1154 | ||
1155 | namespace | |
1156 | @@ -133,6 +135,7 @@ | |
1157 | _GLIBCXX_END_NAMESPACE_VERSION | |
1158 | } // namespace std | |
1159 | ||
1160 | +#endif | |
1161 | ||
1162 | // XXX GLIBCXX_ABI Deprecated | |
1163 | // gcc-4.5.0 | |
1164 | Index: libstdc++-v3/src/c++11/mutex.cc | |
1165 | =================================================================== | |
1166 | --- libstdc++-v3/src/c++11/mutex.cc (.../tags/gcc_4_7_0_release) (wersja 187906) | |
1167 | +++ libstdc++-v3/src/c++11/mutex.cc (.../branches/gcc-4_7-branch) (wersja 187906) | |
1168 | @@ -1,6 +1,6 @@ | |
1169 | // mutex -*- C++ -*- | |
1170 | ||
1171 | -// Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc. | |
1172 | +// Copyright (C) 2008, 2009, 2010, 2012 Free Software Foundation, Inc. | |
1173 | // | |
1174 | // This file is part of the GNU ISO C++ Library. This library is free | |
1175 | // software; you can redistribute it and/or modify it under the | |
1176 | @@ -92,30 +92,6 @@ | |
1177 | } | |
1178 | ||
1179 | _GLIBCXX_END_NAMESPACE_VERSION | |
1180 | -} // namespace | |
1181 | +} // namespace std | |
1182 | ||
1183 | -// XXX GLIBCXX_ABI Deprecated | |
1184 | -// gcc-4.6.0 | |
1185 | -// <mutex> export changes | |
1186 | -#if defined(_GLIBCXX_SYMVER_GNU) && defined(PIC) \ | |
1187 | - && defined(_GLIBCXX_HAVE_AS_SYMVER_DIRECTIVE) \ | |
1188 | - && defined(_GLIBCXX_HAVE_SYMVER_SYMBOL_RENAMING_RUNTIME_SUPPORT) | |
1189 | - | |
1190 | -namespace __gnu_cxx _GLIBCXX_VISIBILITY(default) | |
1191 | -{ | |
1192 | - std::defer_lock_t defer_lock; | |
1193 | - std::try_to_lock_t try_to_lock; | |
1194 | - std::adopt_lock_t adopt_lock; | |
1195 | -} | |
1196 | - | |
1197 | -#define _GLIBCXX_ASM_SYMVER(cur, old, version) \ | |
1198 | - asm (".symver " #cur "," #old "@@" #version); | |
1199 | - | |
1200 | -_GLIBCXX_ASM_SYMVER(_ZN9__gnu_cxx10adopt_lockE, _ZSt10adopt_lock, GLIBCXX_3.4.11) | |
1201 | -_GLIBCXX_ASM_SYMVER(_ZN9__gnu_cxx10defer_lockE, _ZSt10defer_lock, GLIBCXX_3.4.11) | |
1202 | -_GLIBCXX_ASM_SYMVER(_ZN9__gnu_cxx11try_to_lockE, _ZSt11try_to_lock, GLIBCXX_3.4.11) | |
1203 | - | |
1204 | - | |
1205 | -#endif | |
1206 | - | |
1207 | #endif // _GLIBCXX_HAS_GTHREADS && _GLIBCXX_USE_C99_STDINT_TR1 | |
1208 | Index: libstdc++-v3/src/c++11/future.cc | |
1209 | =================================================================== | |
1210 | --- libstdc++-v3/src/c++11/future.cc (.../tags/gcc_4_7_0_release) (wersja 187906) | |
1211 | +++ libstdc++-v3/src/c++11/future.cc (.../branches/gcc-4_7-branch) (wersja 187906) | |
1212 | @@ -96,23 +96,3 @@ | |
1213 | ||
1214 | _GLIBCXX_END_NAMESPACE_VERSION | |
1215 | } // namespace std | |
1216 | - | |
1217 | -// XXX GLIBCXX_ABI Deprecated | |
1218 | -// gcc-4.6.0 | |
1219 | -// <future> export changes | |
1220 | -#if defined(_GLIBCXX_SYMVER_GNU) && defined(PIC) \ | |
1221 | - && defined(_GLIBCXX_HAVE_AS_SYMVER_DIRECTIVE) \ | |
1222 | - && defined(_GLIBCXX_HAVE_SYMVER_SYMBOL_RENAMING_RUNTIME_SUPPORT) | |
1223 | - | |
1224 | -namespace __gnu_cxx _GLIBCXX_VISIBILITY(default) | |
1225 | -{ | |
1226 | - const std::error_category* future_category = &__future_category_instance(); | |
1227 | -} | |
1228 | - | |
1229 | -#define _GLIBCXX_ASM_SYMVER(cur, old, version) \ | |
1230 | - asm (".symver " #cur "," #old "@@@" #version); | |
1231 | - | |
1232 | -_GLIBCXX_ASM_SYMVER(_ZN9__gnu_cxx15future_categoryE, _ZSt15future_category, GLIBCXX_3.4.14) | |
1233 | - | |
1234 | -#endif | |
1235 | - | |
1236 | Index: libstdc++-v3/src/c++11/Makefile.am | |
1237 | =================================================================== | |
1238 | --- libstdc++-v3/src/c++11/Makefile.am (.../tags/gcc_4_7_0_release) (wersja 187906) | |
1239 | +++ libstdc++-v3/src/c++11/Makefile.am (.../branches/gcc-4_7-branch) (wersja 187906) | |
1240 | @@ -32,8 +32,6 @@ | |
1241 | sources = \ | |
1242 | chrono.cc \ | |
1243 | condition_variable.cc \ | |
1244 | - compatibility-c++0x.cc \ | |
1245 | - compatibility-atomic-c++0x.cc \ | |
1246 | debug.cc \ | |
1247 | functexcept.cc \ | |
1248 | functional.cc \ | |
1249 | @@ -60,7 +58,6 @@ | |
1250 | endif | |
1251 | ||
1252 | vpath % $(top_srcdir)/src/c++11 | |
1253 | -vpath % $(top_srcdir) | |
1254 | ||
1255 | libc__11convenience_la_SOURCES = $(sources) $(inst_sources) | |
1256 | ||
1257 | @@ -70,11 +67,10 @@ | |
1258 | # OPTIMIZE_CXXFLAGS on the compile line so that -O2 can be overridden | |
1259 | # as the occasion calls for it. | |
1260 | AM_CXXFLAGS = \ | |
1261 | + -std=gnu++11 \ | |
1262 | $(PIC_CXXFLAGS) \ | |
1263 | $(XTEMPLATE_FLAGS) \ | |
1264 | - $(WARN_CXXFLAGS) \ | |
1265 | - $(OPTIMIZE_CXXFLAGS) \ | |
1266 | - $(CONFIG_CXXFLAGS) -std=gnu++11 | |
1267 | + $(WARN_CXXFLAGS) $(OPTIMIZE_CXXFLAGS) $(CONFIG_CXXFLAGS) | |
1268 | ||
1269 | AM_MAKEFLAGS = \ | |
1270 | "gxx_include_dir=$(gxx_include_dir)" | |
1271 | @@ -99,9 +95,11 @@ | |
1272 | # attempt to infer which configuration to use. | |
1273 | # We have to put --tag disable-shared after --tag CXX lest things | |
1274 | # CXX undo the affect of disable-shared. | |
1275 | -LTCXXCOMPILE = $(LIBTOOL) --tag CXX --tag disable-shared $(LIBTOOLFLAGS) \ | |
1276 | - --mode=compile $(CXX) $(TOPLEVEL_INCLUDES) \ | |
1277 | - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) | |
1278 | +LTCXXCOMPILE = \ | |
1279 | + $(LIBTOOL) --tag CXX --tag disable-shared \ | |
1280 | + $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ | |
1281 | + --mode=compile $(CXX) $(TOPLEVEL_INCLUDES) \ | |
1282 | + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) | |
1283 | ||
1284 | LTLDFLAGS = $(shell $(SHELL) $(top_srcdir)/../libtool-ldflags $(LDFLAGS)) | |
1285 | ||
1286 | @@ -111,6 +109,8 @@ | |
1287 | # course is problematic at this point. So, we get the top-level | |
1288 | # directory to configure libstdc++-v3 to use gcc as the C++ | |
1289 | # compilation driver. | |
1290 | -CXXLINK = $(LIBTOOL) --tag CXX --tag disable-shared $(LIBTOOLFLAGS) \ | |
1291 | - --mode=link $(CXX) \ | |
1292 | - $(OPT_LDFLAGS) $(SECTION_LDFLAGS) $(AM_CXXFLAGS) $(LTLDFLAGS) -o $@ | |
1293 | +CXXLINK = \ | |
1294 | + $(LIBTOOL) --tag CXX --tag disable-shared \ | |
1295 | + $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ | |
1296 | + --mode=link $(CXX) \ | |
1297 | + $(OPT_LDFLAGS) $(SECTION_LDFLAGS) $(AM_CXXFLAGS) $(LTLDFLAGS) -o $@ | |
1298 | Index: libstdc++-v3/src/c++11/compatibility-c++0x.cc | |
1299 | =================================================================== | |
1300 | --- libstdc++-v3/src/c++11/compatibility-c++0x.cc (.../tags/gcc_4_7_0_release) (wersja 187906) | |
1301 | +++ libstdc++-v3/src/c++11/compatibility-c++0x.cc (.../branches/gcc-4_7-branch) (wersja 187906) | |
1302 | @@ -1,6 +1,6 @@ | |
1303 | // Compatibility symbols for previous versions, C++0x bits -*- C++ -*- | |
1304 | ||
1305 | -// Copyright (C) 2009, 2010, 2011 Free Software Foundation, Inc. | |
1306 | +// Copyright (C) 2009, 2010, 2011, 2012 Free Software Foundation, Inc. | |
1307 | // | |
1308 | // This file is part of the GNU ISO C++ Library. This library is free | |
1309 | // software; you can redistribute it and/or modify it under the | |
1310 | @@ -30,6 +30,8 @@ | |
1311 | # error "compatibility-c++0x.cc must be compiled with -std=gnu++0x" | |
1312 | #endif | |
1313 | ||
1314 | +#ifdef PIC | |
1315 | + | |
1316 | namespace std _GLIBCXX_VISIBILITY(default) | |
1317 | { | |
1318 | // gcc-4.4.0 | |
1319 | @@ -119,3 +121,4 @@ | |
1320 | } // namespace chrono | |
1321 | } | |
1322 | ||
1323 | +#endif | |
ad222a6b PS |
1324 | Index: libstdc++-v3/include/Makefile.in |
1325 | =================================================================== | |
be75205b PS |
1326 | --- libstdc++-v3/include/Makefile.in (.../tags/gcc_4_7_0_release) (wersja 187906) |
1327 | +++ libstdc++-v3/include/Makefile.in (.../branches/gcc-4_7-branch) (wersja 187906) | |
ad222a6b PS |
1328 | @@ -1497,7 +1497,7 @@ |
1329 | sed -e "s,define __GLIBCXX__,define __GLIBCXX__ $$date," \ | |
1330 | -e "s,define _GLIBCXX_INLINE_VERSION, define _GLIBCXX_INLINE_VERSION $$ns_version," \ | |
1331 | -e "s,define _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY, define _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY $$visibility," \ | |
1332 | - -e "s,define _GLIBCXX_EXTERN_TEMPLATE, define _GLIBCXX_EXTERN_TEMPLATE $$externtemplate," \ | |
1333 | + -e "s,define _GLIBCXX_EXTERN_TEMPLATE$$, define _GLIBCXX_EXTERN_TEMPLATE $$externtemplate," \ | |
1334 | -e "$$ldbl_compat" \ | |
1335 | < ${glibcxx_srcdir}/include/bits/c++config > $@ ;\ | |
1336 | sed -e 's/HAVE_/_GLIBCXX_HAVE_/g' \ | |
be75205b PS |
1337 | Index: libstdc++-v3/include/debug/forward_list |
1338 | =================================================================== | |
1339 | --- libstdc++-v3/include/debug/forward_list (.../tags/gcc_4_7_0_release) (wersja 187906) | |
1340 | +++ libstdc++-v3/include/debug/forward_list (.../branches/gcc-4_7-branch) (wersja 187906) | |
1341 | @@ -414,6 +414,10 @@ | |
1342 | } | |
1343 | ||
1344 | void | |
1345 | + splice_after(const_iterator __pos, forward_list& __list) | |
1346 | + { splice_after(__pos, std::move(__list)); } | |
1347 | + | |
1348 | + void | |
1349 | splice_after(const_iterator __pos, forward_list&& __list, | |
1350 | const_iterator __i) | |
1351 | { | |
1352 | @@ -436,6 +440,11 @@ | |
1353 | } | |
1354 | ||
1355 | void | |
1356 | + splice_after(const_iterator __pos, forward_list& __list, | |
1357 | + const_iterator __i) | |
1358 | + { splice_after(__pos, std::move(__list), __i); } | |
1359 | + | |
1360 | + void | |
1361 | splice_after(const_iterator __pos, forward_list&& __list, | |
1362 | const_iterator __before, const_iterator __last) | |
1363 | { | |
1364 | @@ -481,6 +490,11 @@ | |
1365 | } | |
1366 | ||
1367 | void | |
1368 | + splice_after(const_iterator __pos, forward_list& __list, | |
1369 | + const_iterator __before, const_iterator __last) | |
1370 | + { splice_after(__pos, std::move(__list), __before, __last); } | |
1371 | + | |
1372 | + void | |
1373 | remove(const _Tp& __val) | |
1374 | { | |
1375 | _Base_iterator __x = _Base::before_begin(); | |
1376 | @@ -561,6 +575,10 @@ | |
1377 | } | |
1378 | } | |
1379 | ||
1380 | + void | |
1381 | + merge(forward_list& __list) | |
1382 | + { merge(std::move(__list)); } | |
1383 | + | |
1384 | template<typename _Comp> | |
1385 | void | |
1386 | merge(forward_list&& __list, _Comp __comp) | |
1387 | @@ -580,6 +598,11 @@ | |
1388 | } | |
1389 | } | |
1390 | ||
1391 | + template<typename _Comp> | |
1392 | + void | |
1393 | + merge(forward_list& __list, _Comp __comp) | |
1394 | + { merge(std::move(__list), __comp); } | |
1395 | + | |
1396 | using _Base::sort; | |
1397 | using _Base::reverse; | |
1398 | ||
1399 | @@ -733,8 +756,12 @@ | |
1400 | typedef typename _It::iterator_type _BaseIt; | |
1401 | ||
1402 | static bool | |
1403 | - _M_Is(_BaseIt __it, const _Sequence* __seq) | |
1404 | + _S_Is(_BaseIt __it, const _Sequence* __seq) | |
1405 | { return __it == __seq->_M_base().cbefore_begin(); } | |
1406 | + | |
1407 | + static bool | |
1408 | + _S_Is_Beginnest(_BaseIt __it, const _Sequence* __seq) | |
1409 | + { return _S_Is(__it, __seq); } | |
1410 | }; | |
1411 | } | |
1412 | ||
1413 | Index: libstdc++-v3/include/debug/safe_iterator.tcc | |
1414 | =================================================================== | |
1415 | --- libstdc++-v3/include/debug/safe_iterator.tcc (.../tags/gcc_4_7_0_release) (wersja 187906) | |
1416 | +++ libstdc++-v3/include/debug/safe_iterator.tcc (.../branches/gcc-4_7-branch) (wersja 187906) | |
1417 | @@ -1,6 +1,6 @@ | |
1418 | // Debugging iterator implementation (out of line) -*- C++ -*- | |
1419 | ||
1420 | -// Copyright (C) 2003, 2004, 2005, 2006, 2007, 2009, 2010, 2011 | |
1421 | +// Copyright (C) 2003, 2004, 2005, 2006, 2007, 2009, 2010, 2011, 2012 | |
1422 | // Free Software Foundation, Inc. | |
1423 | // | |
1424 | // This file is part of the GNU ISO C++ Library. This library is free | |
1425 | @@ -91,10 +91,11 @@ | |
1426 | /* We can only test for equality, but check if one of the | |
1427 | iterators is at an extreme. */ | |
1428 | /* Optim for classic [begin, it) or [it, end) ranges, limit checks | |
1429 | - * when code is valid. */ | |
1430 | - if (_M_is_begin() || __rhs._M_is_end()) | |
1431 | + * when code is valid. Note, for the special case of forward_list, | |
1432 | + * before_begin replaces the role of begin. */ | |
1433 | + if (_M_is_beginnest() || __rhs._M_is_end()) | |
1434 | return true; | |
1435 | - if (_M_is_end() || __rhs._M_is_begin()) | |
1436 | + if (_M_is_end() || __rhs._M_is_beginnest()) | |
1437 | return false; | |
1438 | ||
1439 | // Assume that this is a valid range; we can't check anything else | |
ad222a6b PS |
1440 | Index: libstdc++-v3/include/debug/safe_iterator.h |
1441 | =================================================================== | |
be75205b PS |
1442 | --- libstdc++-v3/include/debug/safe_iterator.h (.../tags/gcc_4_7_0_release) (wersja 187906) |
1443 | +++ libstdc++-v3/include/debug/safe_iterator.h (.../branches/gcc-4_7-branch) (wersja 187906) | |
ad222a6b PS |
1444 | @@ -1,6 +1,6 @@ |
1445 | // Safe iterator implementation -*- C++ -*- | |
1446 | ||
1447 | -// Copyright (C) 2003, 2004, 2005, 2006, 2009, 2010, 2011 | |
1448 | +// Copyright (C) 2003, 2004, 2005, 2006, 2009, 2010, 2011, 2012 | |
1449 | // Free Software Foundation, Inc. | |
1450 | // | |
1451 | // This file is part of the GNU ISO C++ Library. This library is free | |
be75205b PS |
1452 | @@ -50,8 +50,12 @@ |
1453 | typedef typename _It::iterator_type _BaseIt; | |
1454 | ||
1455 | static bool | |
1456 | - _M_Is(_BaseIt __it, const _Sequence* __seq) | |
1457 | + _S_Is(_BaseIt, const _Sequence*) | |
1458 | { return false; } | |
1459 | + | |
1460 | + static bool | |
1461 | + _S_Is_Beginnest(_BaseIt __it, const _Sequence* __seq) | |
1462 | + { return __it == __seq->_M_base().begin(); } | |
1463 | }; | |
1464 | ||
1465 | /** Iterators that derive from _Safe_iterator_base but that aren't | |
1466 | @@ -169,7 +173,25 @@ | |
ad222a6b PS |
1467 | ._M_iterator(__x, "other")); |
1468 | } | |
1469 | ||
1470 | +#ifdef __GXX_EXPERIMENTAL_CXX0X__ | |
1471 | /** | |
1472 | + * @brief Move construction. | |
1473 | + * @post __x is singular and unattached | |
1474 | + */ | |
1475 | + _Safe_iterator(_Safe_iterator&& __x) : _M_current() | |
1476 | + { | |
1477 | + _GLIBCXX_DEBUG_VERIFY(!__x._M_singular() | |
1478 | + || __x._M_current == _Iterator(), | |
1479 | + _M_message(__msg_init_copy_singular) | |
1480 | + ._M_iterator(*this, "this") | |
1481 | + ._M_iterator(__x, "other")); | |
1482 | + std::swap(_M_current, __x._M_current); | |
1483 | + this->_M_attach(__x._M_sequence); | |
1484 | + __x._M_detach(); | |
1485 | + } | |
1486 | +#endif | |
1487 | + | |
1488 | + /** | |
1489 | * @brief Converting constructor from a mutable iterator to a | |
1490 | * constant iterator. | |
1491 | */ | |
be75205b | 1492 | @@ -208,7 +230,28 @@ |
ad222a6b PS |
1493 | return *this; |
1494 | } | |
1495 | ||
1496 | +#ifdef __GXX_EXPERIMENTAL_CXX0X__ | |
1497 | /** | |
1498 | + * @brief Move assignment. | |
1499 | + * @post __x is singular and unattached | |
1500 | + */ | |
1501 | + _Safe_iterator& | |
1502 | + operator=(_Safe_iterator&& __x) | |
1503 | + { | |
1504 | + _GLIBCXX_DEBUG_VERIFY(!__x._M_singular() | |
1505 | + || __x._M_current == _Iterator(), | |
1506 | + _M_message(__msg_copy_singular) | |
1507 | + ._M_iterator(*this, "this") | |
1508 | + ._M_iterator(__x, "other")); | |
1509 | + _M_current = __x._M_current; | |
1510 | + _M_attach(__x._M_sequence); | |
1511 | + __x._M_detach(); | |
1512 | + __x._M_current = _Iterator(); | |
1513 | + return *this; | |
1514 | + } | |
1515 | +#endif | |
1516 | + | |
1517 | + /** | |
1518 | * @brief Iterator dereference. | |
1519 | * @pre iterator is dereferenceable | |
1520 | */ | |
be75205b | 1521 | @@ -422,7 +465,17 @@ |
ad222a6b PS |
1522 | /// Is this iterator equal to the sequence's before_begin() iterator if |
1523 | /// any? | |
1524 | bool _M_is_before_begin() const | |
1525 | - { return _BeforeBeginHelper<_Sequence>::_M_Is(base(), _M_get_sequence()); } | |
1526 | + { | |
be75205b PS |
1527 | + return _BeforeBeginHelper<_Sequence>::_S_Is(base(), _M_get_sequence()); |
1528 | + } | |
1529 | + | |
1530 | + /// Is this iterator equal to the sequence's before_begin() iterator if | |
1531 | + /// any or begin() otherwise? | |
1532 | + bool _M_is_beginnest() const | |
1533 | + { | |
1534 | + return _BeforeBeginHelper<_Sequence>::_S_Is_Beginnest(base(), | |
1535 | + _M_get_sequence()); | |
ad222a6b PS |
1536 | + } |
1537 | }; | |
1538 | ||
1539 | template<typename _IteratorL, typename _IteratorR, typename _Sequence> | |
be75205b PS |
1540 | Index: libstdc++-v3/include/std/bitset |
1541 | =================================================================== | |
1542 | --- libstdc++-v3/include/std/bitset (.../tags/gcc_4_7_0_release) (wersja 187906) | |
1543 | +++ libstdc++-v3/include/std/bitset (.../branches/gcc-4_7-branch) (wersja 187906) | |
1544 | @@ -1377,7 +1377,7 @@ | |
1545 | size_t __pos, size_t __n, _CharT __zero, _CharT __one) | |
1546 | { | |
1547 | reset(); | |
1548 | - const size_t __nbits = std::min(_Nb, std::min(__n, __len - __pos)); | |
1549 | + const size_t __nbits = std::min(_Nb, std::min(__n, size_t(__len - __pos))); | |
1550 | for (size_t __i = __nbits; __i > 0; --__i) | |
1551 | { | |
1552 | const _CharT __c = __s[__pos + __nbits - __i]; | |
1553 | Index: libstdc++-v3/include/std/scoped_allocator | |
1554 | =================================================================== | |
1555 | --- libstdc++-v3/include/std/scoped_allocator (.../tags/gcc_4_7_0_release) (wersja 187906) | |
1556 | +++ libstdc++-v3/include/std/scoped_allocator (.../branches/gcc-4_7-branch) (wersja 187906) | |
1557 | @@ -1,6 +1,6 @@ | |
1558 | // <scoped_allocator> -*- C++ -*- | |
1559 | ||
1560 | -// Copyright (C) 2011 Free Software Foundation, Inc. | |
1561 | +// Copyright (C) 2011, 2012 Free Software Foundation, Inc. | |
1562 | // | |
1563 | // This file is part of the GNU ISO C++ Library. This library is free | |
1564 | // software; you can redistribute it and/or modify it under the | |
1565 | @@ -77,7 +77,7 @@ | |
1566 | ||
1567 | template<typename _Alloc> | |
1568 | inline auto | |
1569 | - __do_outermost(_Alloc& __a, _Alloc&) -> decltype(__a.outer_allocator()) | |
1570 | + __do_outermost(_Alloc& __a, _Alloc*) -> decltype(__a.outer_allocator()) | |
1571 | { return __a.outer_allocator(); } | |
1572 | ||
1573 | template<typename _Alloc> | |
1574 | @@ -87,8 +87,8 @@ | |
1575 | ||
1576 | template<typename _Alloc> | |
1577 | inline auto | |
1578 | - __outermost(_Alloc& __a) -> decltype(__do_outermost(__a, __a)) | |
1579 | - { return __do_outermost(__a, __a); } | |
1580 | + __outermost(_Alloc& __a) -> decltype(__do_outermost(__a, &__a)) | |
1581 | + { return __do_outermost(__a, &__a); } | |
1582 | ||
1583 | template<typename _OuterAlloc, typename... _InnerAllocs> | |
1584 | class scoped_allocator_adaptor; | |
b4627121 | 1585 | Index: libstdc++-v3/include/std/array |
7b762fbe | 1586 | =================================================================== |
be75205b PS |
1587 | --- libstdc++-v3/include/std/array (.../tags/gcc_4_7_0_release) (wersja 187906) |
1588 | +++ libstdc++-v3/include/std/array (.../branches/gcc-4_7-branch) (wersja 187906) | |
b4627121 AM |
1589 | @@ -1,6 +1,7 @@ |
1590 | // <array> -*- C++ -*- | |
7b762fbe | 1591 | |
b4627121 AM |
1592 | -// Copyright (C) 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. |
1593 | +// Copyright (C) 2007, 2008, 2009, 2010, 2011, 2012 | |
1594 | +// Free Software Foundation, Inc. | |
1595 | // | |
1596 | // This file is part of the GNU ISO C++ Library. This library is free | |
1597 | // software; you can redistribute it and/or modify it under the | |
1598 | @@ -174,8 +175,9 @@ | |
1599 | const_reference | |
1600 | at(size_type __n) const | |
1601 | { | |
1602 | - return __n < _Nm ? | |
1603 | - _M_instance[__n] : __throw_out_of_range(__N("array::at")); | |
1604 | + if (__n >= _Nm) | |
1605 | + std::__throw_out_of_range(__N("array::at")); | |
1606 | + return _M_instance[__n]; | |
1607 | } | |
1608 | #endif | |
1609 | ||
be75205b PS |
1610 | Index: libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/constructors_destructor_fn_imps.hpp |
1611 | =================================================================== | |
1612 | --- libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/constructors_destructor_fn_imps.hpp (.../tags/gcc_4_7_0_release) (wersja 187906) | |
1613 | +++ libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/constructors_destructor_fn_imps.hpp (.../branches/gcc-4_7-branch) (wersja 187906) | |
1614 | @@ -1,6 +1,6 @@ | |
1615 | // -*- C++ -*- | |
1616 | ||
1617 | -// Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011 | |
1618 | +// Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 | |
1619 | // Free Software Foundation, Inc. | |
1620 | // | |
1621 | // This file is part of the GNU ISO C++ Library. This library is free | |
1622 | @@ -188,7 +188,11 @@ | |
1623 | __try | |
1624 | { | |
1625 | while (child_it != p_icp->end()) | |
1626 | - a_p_children[child_i++] = recursive_copy_node(*(child_it++)); | |
1627 | + { | |
1628 | + a_p_children[child_i] = recursive_copy_node(*(child_it)); | |
1629 | + child_i++; | |
1630 | + child_it++; | |
1631 | + } | |
1632 | p_ret = s_inode_allocator.allocate(1); | |
1633 | } | |
1634 | __catch(...) | |
1635 | Index: libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/pat_trie_base.hpp | |
1636 | =================================================================== | |
1637 | --- libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/pat_trie_base.hpp (.../tags/gcc_4_7_0_release) (wersja 187906) | |
1638 | +++ libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/pat_trie_base.hpp (.../branches/gcc-4_7-branch) (wersja 187906) | |
1639 | @@ -1,6 +1,6 @@ | |
1640 | // -*- C++ -*- | |
1641 | ||
1642 | -// Copyright (C) 2005, 2006, 2009, 2011 Free Software Foundation, Inc. | |
1643 | +// Copyright (C) 2005, 2006, 2009, 2011, 2012 Free Software Foundation, Inc. | |
1644 | // | |
1645 | // This file is part of the GNU ISO C++ Library. This library is free | |
1646 | // software; you can redistribute it and/or modify it under the terms | |
1647 | @@ -50,7 +50,11 @@ | |
1648 | /// Base type for PATRICIA trees. | |
1649 | struct pat_trie_base | |
1650 | { | |
1651 | - /// Three types of nodes. | |
1652 | + /** | |
1653 | + * @brief Three types of nodes. | |
1654 | + * | |
1655 | + * i_node is used by _Inode, leaf_node by _Leaf, and head_node by _Head. | |
1656 | + */ | |
1657 | enum node_type | |
1658 | { | |
1659 | i_node, | |
1660 | Index: libstdc++-v3/include/ext/functional | |
1661 | =================================================================== | |
1662 | --- libstdc++-v3/include/ext/functional (.../tags/gcc_4_7_0_release) (wersja 187906) | |
1663 | +++ libstdc++-v3/include/ext/functional (.../branches/gcc-4_7-branch) (wersja 187906) | |
1664 | @@ -1,6 +1,6 @@ | |
1665 | // Functional extensions -*- C++ -*- | |
1666 | ||
1667 | -// Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2009, 2010 | |
1668 | +// Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2009, 2010, 2012 | |
1669 | // Free Software Foundation, Inc. | |
1670 | // | |
1671 | // This file is part of the GNU ISO C++ Library. This library is free | |
1672 | @@ -183,7 +183,13 @@ | |
1673 | * @addtogroup SGIextensions | |
1674 | */ | |
1675 | template <class _Tp> | |
1676 | - struct identity : public std::_Identity<_Tp> {}; | |
1677 | + struct identity | |
1678 | +#ifdef __GXX_EXPERIMENTAL_CXX0X__ | |
1679 | + : public std::unary_function<_Tp,_Tp>, | |
1680 | + public std::_Identity<_Tp> {}; | |
1681 | +#else | |
1682 | + : public std::_Identity<_Tp> {}; | |
1683 | +#endif | |
1684 | ||
1685 | /** @c select1st and @c select2nd are extensions provided by SGI. Their | |
1686 | * @c operator()s | |
1687 | @@ -197,11 +203,23 @@ | |
1688 | */ | |
1689 | /// An \link SGIextensions SGI extension \endlink. | |
1690 | template <class _Pair> | |
1691 | - struct select1st : public std::_Select1st<_Pair> {}; | |
1692 | + struct select1st | |
1693 | +#ifdef __GXX_EXPERIMENTAL_CXX0X__ | |
1694 | + : public std::unary_function<_Pair, typename _Pair::first_type>, | |
1695 | + public std::_Select1st<_Pair> {}; | |
1696 | +#else | |
1697 | + : public std::_Select1st<_Pair> {}; | |
1698 | +#endif | |
1699 | ||
1700 | /// An \link SGIextensions SGI extension \endlink. | |
1701 | template <class _Pair> | |
1702 | - struct select2nd : public std::_Select2nd<_Pair> {}; | |
1703 | + struct select2nd | |
1704 | +#ifdef __GXX_EXPERIMENTAL_CXX0X__ | |
1705 | + : public std::unary_function<_Pair, typename _Pair::second_type>, | |
1706 | + public std::_Select2nd<_Pair> {}; | |
1707 | +#else | |
1708 | + : public std::_Select2nd<_Pair> {}; | |
1709 | +#endif | |
1710 | /** @} */ | |
1711 | ||
1712 | // extension documented next | |
1713 | Index: libstdc++-v3/include/bits/hashtable.h | |
1714 | =================================================================== | |
1715 | --- libstdc++-v3/include/bits/hashtable.h (.../tags/gcc_4_7_0_release) (wersja 187906) | |
1716 | +++ libstdc++-v3/include/bits/hashtable.h (.../branches/gcc-4_7-branch) (wersja 187906) | |
1717 | @@ -1,6 +1,7 @@ | |
1718 | // hashtable.h header -*- C++ -*- | |
1719 | ||
1720 | -// Copyright (C) 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. | |
1721 | +// Copyright (C) 2007, 2008, 2009, 2010, 2011, 2012 | |
1722 | +// Free Software Foundation, Inc. | |
1723 | // | |
1724 | // This file is part of the GNU ISO C++ Library. This library is free | |
1725 | // software; you can redistribute it and/or modify it under the | |
1726 | @@ -596,6 +597,12 @@ | |
1727 | // reserve, if present, comes from _Rehash_base. | |
1728 | ||
1729 | private: | |
1730 | + // Helper rehash method used when keys are unique. | |
1731 | + void _M_rehash_aux(size_type __n, std::true_type); | |
1732 | + | |
1733 | + // Helper rehash method used when keys can be non-unique. | |
1734 | + void _M_rehash_aux(size_type __n, std::false_type); | |
1735 | + | |
1736 | // Unconditionally change size of bucket array to n, restore hash policy | |
1737 | // state to __state on exception. | |
1738 | void _M_rehash(size_type __n, const _RehashPolicyState& __state); | |
1739 | @@ -1592,41 +1599,143 @@ | |
1740 | { | |
1741 | __try | |
1742 | { | |
1743 | - _Bucket* __new_buckets = _M_allocate_buckets(__n); | |
1744 | - _Node* __p = _M_begin(); | |
1745 | - _M_before_begin._M_nxt = nullptr; | |
1746 | - std::size_t __cur_bbegin_bkt; | |
1747 | - while (__p) | |
1748 | + _M_rehash_aux(__n, integral_constant<bool, __uk>()); | |
1749 | + } | |
1750 | + __catch(...) | |
1751 | + { | |
1752 | + // A failure here means that buckets allocation failed. We only | |
1753 | + // have to restore hash policy previous state. | |
1754 | + _M_rehash_policy._M_reset(__state); | |
1755 | + __throw_exception_again; | |
1756 | + } | |
1757 | + } | |
1758 | + | |
1759 | + // Rehash when there is no equivalent elements. | |
1760 | + template<typename _Key, typename _Value, | |
1761 | + typename _Allocator, typename _ExtractKey, typename _Equal, | |
1762 | + typename _H1, typename _H2, typename _Hash, typename _RehashPolicy, | |
1763 | + bool __chc, bool __cit, bool __uk> | |
1764 | + void | |
1765 | + _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal, | |
1766 | + _H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>:: | |
1767 | + _M_rehash_aux(size_type __n, std::true_type) | |
1768 | + { | |
1769 | + _Bucket* __new_buckets = _M_allocate_buckets(__n); | |
1770 | + _Node* __p = _M_begin(); | |
1771 | + _M_before_begin._M_nxt = nullptr; | |
1772 | + std::size_t __bbegin_bkt; | |
1773 | + while (__p) | |
1774 | + { | |
1775 | + _Node* __next = __p->_M_next(); | |
1776 | + std::size_t __bkt = _HCBase::_M_bucket_index(__p, __n); | |
1777 | + if (!__new_buckets[__bkt]) | |
1778 | { | |
1779 | - _Node* __next = __p->_M_next(); | |
1780 | - std::size_t __new_index = _HCBase::_M_bucket_index(__p, __n); | |
1781 | - if (!__new_buckets[__new_index]) | |
1782 | + __p->_M_nxt = _M_before_begin._M_nxt; | |
1783 | + _M_before_begin._M_nxt = __p; | |
1784 | + __new_buckets[__bkt] = &_M_before_begin; | |
1785 | + if (__p->_M_nxt) | |
1786 | + __new_buckets[__bbegin_bkt] = __p; | |
1787 | + __bbegin_bkt = __bkt; | |
1788 | + } | |
1789 | + else | |
1790 | + { | |
1791 | + __p->_M_nxt = __new_buckets[__bkt]->_M_nxt; | |
1792 | + __new_buckets[__bkt]->_M_nxt = __p; | |
1793 | + } | |
1794 | + __p = __next; | |
1795 | + } | |
1796 | + _M_deallocate_buckets(_M_buckets, _M_bucket_count); | |
1797 | + _M_bucket_count = __n; | |
1798 | + _M_buckets = __new_buckets; | |
1799 | + } | |
1800 | + | |
1801 | + // Rehash when there can be equivalent elements, preserve their relative | |
1802 | + // order. | |
1803 | + template<typename _Key, typename _Value, | |
1804 | + typename _Allocator, typename _ExtractKey, typename _Equal, | |
1805 | + typename _H1, typename _H2, typename _Hash, typename _RehashPolicy, | |
1806 | + bool __chc, bool __cit, bool __uk> | |
1807 | + void | |
1808 | + _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal, | |
1809 | + _H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>:: | |
1810 | + _M_rehash_aux(size_type __n, std::false_type) | |
1811 | + { | |
1812 | + _Bucket* __new_buckets = _M_allocate_buckets(__n); | |
1813 | + | |
1814 | + _Node* __p = _M_begin(); | |
1815 | + _M_before_begin._M_nxt = nullptr; | |
1816 | + std::size_t __bbegin_bkt; | |
1817 | + std::size_t __prev_bkt; | |
1818 | + _Node* __prev_p = nullptr; | |
1819 | + bool __check_bucket = false; | |
1820 | + | |
1821 | + while (__p) | |
1822 | + { | |
1823 | + _Node* __next = __p->_M_next(); | |
1824 | + std::size_t __bkt = _HCBase::_M_bucket_index(__p, __n); | |
1825 | + | |
1826 | + if (__prev_p && __prev_bkt == __bkt) | |
1827 | + { | |
1828 | + // Previous insert was already in this bucket, we insert after | |
1829 | + // the previously inserted one to preserve equivalent elements | |
1830 | + // relative order. | |
1831 | + __p->_M_nxt = __prev_p->_M_nxt; | |
1832 | + __prev_p->_M_nxt = __p; | |
1833 | + | |
1834 | + // Inserting after a node in a bucket require to check that we | |
1835 | + // haven't change the bucket last node, in this case next | |
1836 | + // bucket containing its before begin node must be updated. We | |
1837 | + // schedule a check as soon as we move out of the sequence of | |
1838 | + // equivalent nodes to limit the number of checks. | |
1839 | + __check_bucket = true; | |
1840 | + } | |
1841 | + else | |
1842 | + { | |
1843 | + if (__check_bucket) | |
1844 | { | |
1845 | + // Check if we shall update the next bucket because of insertions | |
1846 | + // into __prev_bkt bucket. | |
1847 | + if (__prev_p->_M_nxt) | |
1848 | + { | |
1849 | + std::size_t __next_bkt | |
1850 | + = _HCBase::_M_bucket_index(__prev_p->_M_next(), __n); | |
1851 | + if (__next_bkt != __prev_bkt) | |
1852 | + __new_buckets[__next_bkt] = __prev_p; | |
1853 | + } | |
1854 | + __check_bucket = false; | |
1855 | + } | |
1856 | + if (!__new_buckets[__bkt]) | |
1857 | + { | |
1858 | __p->_M_nxt = _M_before_begin._M_nxt; | |
1859 | _M_before_begin._M_nxt = __p; | |
1860 | - __new_buckets[__new_index] = &_M_before_begin; | |
1861 | + __new_buckets[__bkt] = &_M_before_begin; | |
1862 | if (__p->_M_nxt) | |
1863 | - __new_buckets[__cur_bbegin_bkt] = __p; | |
1864 | - __cur_bbegin_bkt = __new_index; | |
1865 | + __new_buckets[__bbegin_bkt] = __p; | |
1866 | + __bbegin_bkt = __bkt; | |
1867 | } | |
1868 | else | |
1869 | { | |
1870 | - __p->_M_nxt = __new_buckets[__new_index]->_M_nxt; | |
1871 | - __new_buckets[__new_index]->_M_nxt = __p; | |
1872 | + __p->_M_nxt = __new_buckets[__bkt]->_M_nxt; | |
1873 | + __new_buckets[__bkt]->_M_nxt = __p; | |
1874 | } | |
1875 | - __p = __next; | |
1876 | } | |
1877 | - _M_deallocate_buckets(_M_buckets, _M_bucket_count); | |
1878 | - _M_bucket_count = __n; | |
1879 | - _M_buckets = __new_buckets; | |
1880 | + | |
1881 | + __prev_p = __p; | |
1882 | + __prev_bkt = __bkt; | |
1883 | + __p = __next; | |
1884 | } | |
1885 | - __catch(...) | |
1886 | + | |
1887 | + if (__check_bucket && __prev_p->_M_nxt) | |
1888 | { | |
1889 | - // A failure here means that buckets allocation failed. We only | |
1890 | - // have to restore hash policy previous state. | |
1891 | - _M_rehash_policy._M_reset(__state); | |
1892 | - __throw_exception_again; | |
1893 | + std::size_t __next_bkt | |
1894 | + = _HCBase::_M_bucket_index(__prev_p->_M_next(), __n); | |
1895 | + if (__next_bkt != __prev_bkt) | |
1896 | + __new_buckets[__next_bkt] = __prev_p; | |
1897 | } | |
1898 | + | |
1899 | + _M_deallocate_buckets(_M_buckets, _M_bucket_count); | |
1900 | + _M_bucket_count = __n; | |
1901 | + _M_buckets = __new_buckets; | |
1902 | } | |
1903 | ||
1904 | _GLIBCXX_END_NAMESPACE_VERSION | |
1905 | Index: libstdc++-v3/include/bits/stl_algobase.h | |
1906 | =================================================================== | |
1907 | --- libstdc++-v3/include/bits/stl_algobase.h (.../tags/gcc_4_7_0_release) (wersja 187906) | |
1908 | +++ libstdc++-v3/include/bits/stl_algobase.h (.../branches/gcc-4_7-branch) (wersja 187906) | |
1909 | @@ -982,14 +982,26 @@ | |
1910 | __lg(int __n) | |
1911 | { return sizeof(int) * __CHAR_BIT__ - 1 - __builtin_clz(__n); } | |
1912 | ||
1913 | + inline unsigned | |
1914 | + __lg(unsigned __n) | |
1915 | + { return sizeof(int) * __CHAR_BIT__ - 1 - __builtin_clz(__n); } | |
1916 | + | |
1917 | inline long | |
1918 | __lg(long __n) | |
1919 | { return sizeof(long) * __CHAR_BIT__ - 1 - __builtin_clzl(__n); } | |
1920 | ||
1921 | + inline unsigned long | |
1922 | + __lg(unsigned long __n) | |
1923 | + { return sizeof(long) * __CHAR_BIT__ - 1 - __builtin_clzl(__n); } | |
1924 | + | |
1925 | inline long long | |
1926 | __lg(long long __n) | |
1927 | { return sizeof(long long) * __CHAR_BIT__ - 1 - __builtin_clzll(__n); } | |
1928 | ||
1929 | + inline unsigned long long | |
1930 | + __lg(unsigned long long __n) | |
1931 | + { return sizeof(long long) * __CHAR_BIT__ - 1 - __builtin_clzll(__n); } | |
1932 | + | |
1933 | _GLIBCXX_END_NAMESPACE_VERSION | |
1934 | ||
1935 | _GLIBCXX_BEGIN_NAMESPACE_ALGO | |
1936 | Index: libstdc++-v3/include/bits/hashtable_policy.h | |
1937 | =================================================================== | |
1938 | --- libstdc++-v3/include/bits/hashtable_policy.h (.../tags/gcc_4_7_0_release) (wersja 187906) | |
1939 | +++ libstdc++-v3/include/bits/hashtable_policy.h (.../branches/gcc-4_7-branch) (wersja 187906) | |
1940 | @@ -533,7 +533,9 @@ | |
1941 | ||
1942 | // Specialization using EBO. | |
1943 | template<int _Nm, typename _Tp> | |
1944 | - struct _Hashtable_ebo_helper<_Nm, _Tp, true> : private _Tp | |
1945 | + struct _Hashtable_ebo_helper<_Nm, _Tp, true> | |
1946 | + // See PR53067. | |
1947 | + : public _Tp | |
1948 | { | |
1949 | _Hashtable_ebo_helper() = default; | |
1950 | _Hashtable_ebo_helper(const _Tp& __tp) : _Tp(__tp) | |
1951 | @@ -595,8 +597,9 @@ | |
1952 | template<typename _Key, typename _Value, typename _ExtractKey, | |
1953 | typename _H1, typename _H2, typename _Hash> | |
1954 | struct _Hash_code_base<_Key, _Value, _ExtractKey, _H1, _H2, _Hash, false> | |
1955 | - : private _Hashtable_ebo_helper<0, _ExtractKey>, | |
1956 | - private _Hashtable_ebo_helper<1, _Hash> | |
1957 | + // See PR53067. | |
1958 | + : public _Hashtable_ebo_helper<0, _ExtractKey>, | |
1959 | + public _Hashtable_ebo_helper<1, _Hash> | |
1960 | { | |
1961 | private: | |
1962 | typedef _Hashtable_ebo_helper<0, _ExtractKey> _EboExtractKey; | |
1963 | @@ -669,9 +672,10 @@ | |
1964 | typename _H1, typename _H2> | |
1965 | struct _Hash_code_base<_Key, _Value, _ExtractKey, _H1, _H2, | |
1966 | _Default_ranged_hash, false> | |
1967 | - : private _Hashtable_ebo_helper<0, _ExtractKey>, | |
1968 | - private _Hashtable_ebo_helper<1, _H1>, | |
1969 | - private _Hashtable_ebo_helper<2, _H2> | |
1970 | + // See PR53067. | |
1971 | + : public _Hashtable_ebo_helper<0, _ExtractKey>, | |
1972 | + public _Hashtable_ebo_helper<1, _H1>, | |
1973 | + public _Hashtable_ebo_helper<2, _H2> | |
1974 | { | |
1975 | private: | |
1976 | typedef _Hashtable_ebo_helper<0, _ExtractKey> _EboExtractKey; | |
1977 | @@ -748,9 +752,10 @@ | |
1978 | typename _H1, typename _H2> | |
1979 | struct _Hash_code_base<_Key, _Value, _ExtractKey, _H1, _H2, | |
1980 | _Default_ranged_hash, true> | |
1981 | - : private _Hashtable_ebo_helper<0, _ExtractKey>, | |
1982 | - private _Hashtable_ebo_helper<1, _H1>, | |
1983 | - private _Hashtable_ebo_helper<2, _H2> | |
1984 | + // See PR53067. | |
1985 | + : public _Hashtable_ebo_helper<0, _ExtractKey>, | |
1986 | + public _Hashtable_ebo_helper<1, _H1>, | |
1987 | + public _Hashtable_ebo_helper<2, _H2> | |
1988 | { | |
1989 | private: | |
1990 | typedef _Hashtable_ebo_helper<0, _ExtractKey> _EboExtractKey; | |
1991 | @@ -853,9 +858,10 @@ | |
1992 | typename _H1, typename _H2, typename _Hash, | |
1993 | bool __cache_hash_code> | |
1994 | struct _Hashtable_base | |
1995 | + // See PR53067. | |
1996 | : public _Hash_code_base<_Key, _Value, _ExtractKey, _H1, _H2, _Hash, | |
1997 | __cache_hash_code>, | |
1998 | - private _Hashtable_ebo_helper<0, _Equal> | |
1999 | + public _Hashtable_ebo_helper<0, _Equal> | |
2000 | { | |
2001 | private: | |
2002 | typedef _Hashtable_ebo_helper<0, _Equal> _EboEqual; | |
2003 | @@ -906,7 +912,8 @@ | |
2004 | typename _H1, typename _H2, typename _Hash> | |
2005 | struct _Local_iterator_base<_Key, _Value, _ExtractKey, | |
2006 | _H1, _H2, _Hash, true> | |
2007 | - : private _H2 | |
2008 | + // See PR53067. | |
2009 | + : public _H2 | |
2010 | { | |
2011 | _Local_iterator_base() = default; | |
2012 | _Local_iterator_base(_Hash_node<_Value, true>* __p, | |
2013 | @@ -937,8 +944,9 @@ | |
2014 | typename _H1, typename _H2, typename _Hash> | |
2015 | struct _Local_iterator_base<_Key, _Value, _ExtractKey, | |
2016 | _H1, _H2, _Hash, false> | |
2017 | - : private _Hash_code_base<_Key, _Value, _ExtractKey, | |
2018 | - _H1, _H2, _Hash, false> | |
2019 | + // See PR53067. | |
2020 | + : public _Hash_code_base<_Key, _Value, _ExtractKey, | |
2021 | + _H1, _H2, _Hash, false> | |
2022 | { | |
2023 | _Local_iterator_base() = default; | |
2024 | _Local_iterator_base(_Hash_node<_Value, false>* __p, | |
ad222a6b PS |
2025 | Index: libstdc++-v3/include/bits/forward_list.h |
2026 | =================================================================== | |
be75205b PS |
2027 | --- libstdc++-v3/include/bits/forward_list.h (.../tags/gcc_4_7_0_release) (wersja 187906) |
2028 | +++ libstdc++-v3/include/bits/forward_list.h (.../branches/gcc-4_7-branch) (wersja 187906) | |
ad222a6b PS |
2029 | @@ -1,6 +1,6 @@ |
2030 | // <forward_list.h> -*- C++ -*- | |
2031 | ||
2032 | -// Copyright (C) 2008, 2009, 2010, 2011 Free Software Foundation, Inc. | |
2033 | +// Copyright (C) 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc. | |
2034 | // | |
2035 | // This file is part of the GNU ISO C++ Library. This library is free | |
2036 | // software; you can redistribute it and/or modify it under the | |
be75205b PS |
2037 | @@ -53,15 +53,6 @@ |
2038 | _Fwd_list_node_base* _M_next; | |
2039 | ||
2040 | _Fwd_list_node_base* | |
2041 | - _M_transfer_after(_Fwd_list_node_base* __begin) | |
2042 | - { | |
2043 | - _Fwd_list_node_base* __end = __begin; | |
2044 | - while (__end && __end->_M_next) | |
2045 | - __end = __end->_M_next; | |
2046 | - return _M_transfer_after(__begin, __end); | |
2047 | - } | |
2048 | - | |
2049 | - _Fwd_list_node_base* | |
2050 | _M_transfer_after(_Fwd_list_node_base* __begin, | |
2051 | _Fwd_list_node_base* __end) | |
2052 | { | |
2053 | @@ -606,8 +597,8 @@ | |
ad222a6b PS |
2054 | * in the range [@a __first,@a __last). |
2055 | * | |
2056 | * Note that the assignment completely changes the %forward_list and | |
2057 | - * that the resulting %forward_list's size is the same as the number | |
2058 | - * of elements assigned. Old data may be lost. | |
2059 | + * that the number of elements of the resulting %forward_list's is the | |
2060 | + * same as the number of elements assigned. Old data is lost. | |
2061 | */ | |
2062 | template<typename _InputIterator> | |
2063 | void | |
be75205b | 2064 | @@ -622,10 +613,10 @@ |
ad222a6b PS |
2065 | * @param __n Number of elements to be assigned. |
2066 | * @param __val Value to be assigned. | |
2067 | * | |
2068 | - * This function fills a %forward_list with @a __n copies of the given | |
2069 | - * value. Note that the assignment completely changes the | |
2070 | - * %forward_list and that the resulting %forward_list's size is the | |
2071 | - * same as the number of elements assigned. Old data may be lost. | |
2072 | + * This function fills a %forward_list with @a __n copies of the | |
2073 | + * given value. Note that the assignment completely changes the | |
2074 | + * %forward_list, and that the resulting %forward_list has __n | |
2075 | + * elements. Old data is lost. | |
2076 | */ | |
2077 | void | |
2078 | assign(size_type __n, const _Tp& __val) | |
be75205b | 2079 | @@ -744,7 +735,7 @@ |
ad222a6b PS |
2080 | { return this->_M_impl._M_head._M_next == 0; } |
2081 | ||
2082 | /** | |
2083 | - * Returns the largest possible size of %forward_list. | |
2084 | + * Returns the largest possible number of elements of %forward_list. | |
2085 | */ | |
2086 | size_type | |
2087 | max_size() const noexcept | |
be75205b PS |
2088 | @@ -926,7 +917,8 @@ |
2089 | * does not invalidate iterators and references. | |
2090 | */ | |
2091 | iterator | |
2092 | - insert_after(const_iterator __pos, std::initializer_list<_Tp> __il); | |
2093 | + insert_after(const_iterator __pos, std::initializer_list<_Tp> __il) | |
2094 | + { return insert_after(__pos, __il.begin(), __il.end()); } | |
2095 | ||
2096 | /** | |
2097 | * @brief Removes the element pointed to by the iterator following | |
2098 | @@ -997,9 +989,9 @@ | |
ad222a6b PS |
2099 | * |
2100 | * This function will %resize the %forward_list to the specified | |
2101 | * number of elements. If the number is smaller than the | |
2102 | - * %forward_list's current size the %forward_list is truncated, | |
2103 | - * otherwise the %forward_list is extended and the new elements | |
2104 | - * are default constructed. | |
2105 | + * %forward_list's current number of elements the %forward_list | |
2106 | + * is truncated, otherwise the %forward_list is extended and the | |
2107 | + * new elements are default constructed. | |
2108 | */ | |
2109 | void | |
2110 | resize(size_type __sz); | |
be75205b | 2111 | @@ -1012,9 +1004,9 @@ |
ad222a6b PS |
2112 | * |
2113 | * This function will %resize the %forward_list to the specified | |
2114 | * number of elements. If the number is smaller than the | |
2115 | - * %forward_list's current size the %forward_list is truncated, | |
2116 | - * otherwise the %forward_list is extended and new elements are | |
2117 | - * populated with given data. | |
2118 | + * %forward_list's current number of elements the %forward_list | |
2119 | + * is truncated, otherwise the %forward_list is extended and new | |
2120 | + * elements are populated with given data. | |
2121 | */ | |
2122 | void | |
2123 | resize(size_type __sz, const value_type& __val); | |
be75205b PS |
2124 | @@ -1048,9 +1040,13 @@ |
2125 | splice_after(const_iterator __pos, forward_list&& __list) | |
2126 | { | |
2127 | if (!__list.empty()) | |
2128 | - _M_splice_after(__pos, std::move(__list)); | |
2129 | + _M_splice_after(__pos, __list.before_begin(), __list.end()); | |
2130 | } | |
2131 | ||
2132 | + void | |
2133 | + splice_after(const_iterator __pos, forward_list& __list) | |
2134 | + { splice_after(__pos, std::move(__list)); } | |
2135 | + | |
2136 | /** | |
2137 | * @brief Insert element from another %forward_list. | |
2138 | * @param __pos Iterator referencing the element to insert after. | |
2139 | @@ -1063,16 +1059,13 @@ | |
2140 | */ | |
2141 | void | |
2142 | splice_after(const_iterator __pos, forward_list&& __list, | |
2143 | + const_iterator __i); | |
2144 | + | |
2145 | + void | |
2146 | + splice_after(const_iterator __pos, forward_list& __list, | |
2147 | const_iterator __i) | |
2148 | - { | |
2149 | - const_iterator __j = __i; | |
2150 | - ++__j; | |
2151 | - if (__pos == __i || __pos == __j) | |
2152 | - return; | |
2153 | + { splice_after(__pos, std::move(__list), __i); } | |
2154 | ||
2155 | - splice_after(__pos, std::move(__list), __i, __j); | |
2156 | - } | |
2157 | - | |
2158 | /** | |
2159 | * @brief Insert range from another %forward_list. | |
2160 | * @param __pos Iterator referencing the element to insert after. | |
2161 | @@ -1087,9 +1080,15 @@ | |
2162 | * Undefined if @a __pos is in (__before,__last). | |
2163 | */ | |
2164 | void | |
2165 | - splice_after(const_iterator __pos, forward_list&& __list, | |
2166 | - const_iterator __before, const_iterator __last); | |
2167 | + splice_after(const_iterator __pos, forward_list&&, | |
2168 | + const_iterator __before, const_iterator __last) | |
2169 | + { _M_splice_after(__pos, __before, __last); } | |
2170 | ||
2171 | + void | |
2172 | + splice_after(const_iterator __pos, forward_list&, | |
2173 | + const_iterator __before, const_iterator __last) | |
2174 | + { _M_splice_after(__pos, __before, __last); } | |
2175 | + | |
2176 | /** | |
2177 | * @brief Remove all elements equal to value. | |
2178 | * @param __val The value to remove. | |
2179 | @@ -1131,7 +1130,7 @@ | |
2180 | */ | |
2181 | void | |
2182 | unique() | |
2183 | - { this->unique(std::equal_to<_Tp>()); } | |
2184 | + { unique(std::equal_to<_Tp>()); } | |
2185 | ||
2186 | /** | |
2187 | * @brief Remove consecutive elements satisfying a predicate. | |
2188 | @@ -1160,8 +1159,12 @@ | |
2189 | */ | |
2190 | void | |
2191 | merge(forward_list&& __list) | |
2192 | - { this->merge(std::move(__list), std::less<_Tp>()); } | |
2193 | + { merge(std::move(__list), std::less<_Tp>()); } | |
2194 | ||
2195 | + void | |
2196 | + merge(forward_list& __list) | |
2197 | + { merge(std::move(__list)); } | |
2198 | + | |
2199 | /** | |
2200 | * @brief Merge sorted lists according to comparison function. | |
2201 | * @param __list Sorted list to merge. | |
2202 | @@ -1177,6 +1180,11 @@ | |
2203 | void | |
2204 | merge(forward_list&& __list, _Comp __comp); | |
2205 | ||
2206 | + template<typename _Comp> | |
2207 | + void | |
2208 | + merge(forward_list& __list, _Comp __comp) | |
2209 | + { merge(std::move(__list), __comp); } | |
2210 | + | |
2211 | /** | |
2212 | * @brief Sort the elements of the list. | |
2213 | * | |
2214 | @@ -1185,7 +1193,7 @@ | |
2215 | */ | |
2216 | void | |
2217 | sort() | |
2218 | - { this->sort(std::less<_Tp>()); } | |
2219 | + { sort(std::less<_Tp>()); } | |
2220 | ||
2221 | /** | |
2222 | * @brief Sort the forward_list using a comparison function. | |
2223 | @@ -1225,7 +1233,8 @@ | |
2224 | ||
2225 | // Called by splice_after and insert_after. | |
2226 | iterator | |
2227 | - _M_splice_after(const_iterator __pos, forward_list&& __list); | |
2228 | + _M_splice_after(const_iterator __pos, const_iterator __before, | |
2229 | + const_iterator __last); | |
2230 | ||
2231 | // Called by forward_list(n). | |
2232 | void | |
2233 | @@ -1240,11 +1249,11 @@ | |
ad222a6b PS |
2234 | * @brief Forward list equality comparison. |
2235 | * @param __lx A %forward_list | |
2236 | * @param __ly A %forward_list of the same type as @a __lx. | |
2237 | - * @return True iff the size and elements of the forward lists are equal. | |
2238 | + * @return True iff the elements of the forward lists are equal. | |
2239 | * | |
2240 | - * This is an equivalence relation. It is linear in the size of the | |
2241 | - * forward lists. Deques are considered equivalent if corresponding | |
2242 | - * elements compare equal. | |
2243 | + * This is an equivalence relation. It is linear in the number of | |
2244 | + * elements of the forward lists. Deques are considered equivalent | |
2245 | + * if corresponding elements compare equal. | |
2246 | */ | |
2247 | template<typename _Tp, typename _Alloc> | |
2248 | bool | |
be75205b | 2249 | @@ -1257,8 +1266,9 @@ |
ad222a6b PS |
2250 | * @param __ly A %forward_list of the same type as @a __lx. |
2251 | * @return True iff @a __lx is lexicographically less than @a __ly. | |
2252 | * | |
2253 | - * This is a total ordering relation. It is linear in the size of the | |
2254 | - * forward lists. The elements must be comparable with @c <. | |
2255 | + * This is a total ordering relation. It is linear in the number of | |
2256 | + * elements of the forward lists. The elements must be comparable | |
2257 | + * with @c <. | |
2258 | * | |
2259 | * See std::lexicographical_compare() for how the determination is made. | |
2260 | */ | |
be75205b | 2261 | Index: libstdc++-v3/include/bits/stl_vector.h |
7b762fbe | 2262 | =================================================================== |
be75205b PS |
2263 | --- libstdc++-v3/include/bits/stl_vector.h (.../tags/gcc_4_7_0_release) (wersja 187906) |
2264 | +++ libstdc++-v3/include/bits/stl_vector.h (.../branches/gcc-4_7-branch) (wersja 187906) | |
2265 | @@ -419,36 +419,18 @@ | |
2266 | * @brief %Vector move assignment operator. | |
2267 | * @param __x A %vector of identical element and allocator types. | |
2268 | * | |
2269 | - * The contents of @a __x are moved into this %vector (without copying). | |
2270 | + * The contents of @a __x are moved into this %vector (without copying, | |
2271 | + * if the allocators permit it). | |
2272 | * @a __x is a valid, but unspecified %vector. | |
2273 | */ | |
2274 | vector& | |
2275 | operator=(vector&& __x) noexcept(_Alloc_traits::_S_nothrow_move()) | |
2276 | { | |
2277 | - if (_Alloc_traits::_S_propagate_on_move_assign()) | |
2278 | - { | |
2279 | - // We're moving the rvalue's allocator so can move the data too. | |
2280 | - const vector __tmp(std::move(*this)); // discard existing data | |
2281 | - this->_M_impl._M_swap_data(__x._M_impl); | |
2282 | - std::__alloc_on_move(_M_get_Tp_allocator(), | |
2283 | - __x._M_get_Tp_allocator()); | |
2284 | - } | |
2285 | - else if (_Alloc_traits::_S_always_equal() | |
2286 | - || __x._M_get_Tp_allocator() == this->_M_get_Tp_allocator()) | |
2287 | - { | |
2288 | - // The rvalue's allocator can free our storage and vice versa, | |
2289 | - // so can swap the data storage after destroying our contents. | |
2290 | - this->clear(); | |
2291 | - this->_M_impl._M_swap_data(__x._M_impl); | |
2292 | - } | |
2293 | - else | |
2294 | - { | |
2295 | - // The rvalue's allocator cannot be moved, or is not equal, | |
2296 | - // so we need to individually move each element. | |
2297 | - this->assign(std::__make_move_if_noexcept_iterator(__x.begin()), | |
2298 | - std::__make_move_if_noexcept_iterator(__x.end())); | |
2299 | - __x.clear(); | |
2300 | - } | |
2301 | + constexpr bool __move_storage = | |
2302 | + _Alloc_traits::_S_propagate_on_move_assign() | |
2303 | + || _Alloc_traits::_S_always_equal(); | |
2304 | + _M_move_assign(std::move(__x), | |
2305 | + integral_constant<bool, __move_storage>()); | |
2306 | return *this; | |
2307 | } | |
2308 | ||
2309 | @@ -1337,6 +1319,39 @@ | |
2310 | std::_Destroy(__pos, this->_M_impl._M_finish, _M_get_Tp_allocator()); | |
2311 | this->_M_impl._M_finish = __pos; | |
2312 | } | |
ad222a6b | 2313 | + |
be75205b PS |
2314 | +#ifdef __GXX_EXPERIMENTAL_CXX0X__ |
2315 | + private: | |
2316 | + // Constant-time move assignment when source object's memory can be | |
2317 | + // moved, either because the source's allocator will move too | |
2318 | + // or because the allocators are equal. | |
2319 | + void | |
2320 | + _M_move_assign(vector&& __x, std::true_type) noexcept | |
2321 | + { | |
2322 | + const vector __tmp(std::move(*this)); | |
2323 | + this->_M_impl._M_swap_data(__x._M_impl); | |
2324 | + if (_Alloc_traits::_S_propagate_on_move_assign()) | |
2325 | + std::__alloc_on_move(_M_get_Tp_allocator(), | |
2326 | + __x._M_get_Tp_allocator()); | |
2327 | + } | |
ad222a6b | 2328 | + |
be75205b PS |
2329 | + // Do move assignment when it might not be possible to move source |
2330 | + // object's memory, resulting in a linear-time operation. | |
2331 | + void | |
2332 | + _M_move_assign(vector&& __x, std::false_type) | |
2333 | + { | |
2334 | + if (__x._M_get_Tp_allocator() == this->_M_get_Tp_allocator()) | |
2335 | + _M_move_assign(std::move(__x), std::true_type()); | |
2336 | + else | |
2337 | + { | |
2338 | + // The rvalue's allocator cannot be moved and is not equal, | |
2339 | + // so we need to individually move each element. | |
2340 | + this->assign(std::__make_move_if_noexcept_iterator(__x.begin()), | |
2341 | + std::__make_move_if_noexcept_iterator(__x.end())); | |
2342 | + __x.clear(); | |
2343 | + } | |
2344 | + } | |
2345 | +#endif | |
2346 | }; | |
2347 | ||
2348 | ||
2349 | Index: libstdc++-v3/include/bits/ptr_traits.h | |
2350 | =================================================================== | |
2351 | --- libstdc++-v3/include/bits/ptr_traits.h (.../tags/gcc_4_7_0_release) (wersja 187906) | |
2352 | +++ libstdc++-v3/include/bits/ptr_traits.h (.../branches/gcc-4_7-branch) (wersja 187906) | |
2353 | @@ -140,14 +140,8 @@ | |
2354 | /// Type used to represent the difference between two pointers | |
2355 | typedef typename __ptrtr_diff_type<_Ptr>::__type difference_type; | |
2356 | ||
2357 | - private: | |
2358 | template<typename _Up> | |
2359 | using rebind = typename __ptrtr_rebind<_Ptr, _Up>::__type; | |
2360 | - | |
2361 | - // allocator_traits needs to use __rebind | |
2362 | - template<typename> friend struct allocator_traits; | |
2363 | - template<typename> friend struct pointer_traits; | |
2364 | - template<typename, typename> friend class __ptrtr_rebind_helper2; | |
2365 | }; | |
2366 | ||
2367 | /** | |
2368 | Index: libstdc++-v3/include/bits/stl_algo.h | |
2369 | =================================================================== | |
2370 | --- libstdc++-v3/include/bits/stl_algo.h (.../tags/gcc_4_7_0_release) (wersja 187906) | |
2371 | +++ libstdc++-v3/include/bits/stl_algo.h (.../branches/gcc-4_7-branch) (wersja 187906) | |
2372 | @@ -244,7 +244,6 @@ | |
2373 | } | |
2374 | } | |
2375 | ||
2376 | -#ifdef __GXX_EXPERIMENTAL_CXX0X__ | |
2377 | /// This is an overload used by find_if_not() for the Input Iterator case. | |
2378 | template<typename _InputIterator, typename _Predicate> | |
2379 | inline _InputIterator | |
2380 | @@ -303,8 +302,30 @@ | |
2381 | return __last; | |
2382 | } | |
2383 | } | |
2384 | -#endif | |
2385 | ||
2386 | + /// Provided for stable_partition to use. | |
2387 | + template<typename _InputIterator, typename _Predicate> | |
2388 | + inline _InputIterator | |
2389 | + __find_if_not(_InputIterator __first, _InputIterator __last, | |
2390 | + _Predicate __pred) | |
2391 | + { | |
2392 | + return std::__find_if_not(__first, __last, __pred, | |
2393 | + std::__iterator_category(__first)); | |
2394 | + } | |
2395 | + | |
2396 | + /// Like find_if_not(), but uses and updates a count of the | |
2397 | + /// remaining range length instead of comparing against an end | |
2398 | + /// iterator. | |
2399 | + template<typename _InputIterator, typename _Predicate, typename _Distance> | |
2400 | + _InputIterator | |
2401 | + __find_if_not_n(_InputIterator __first, _Distance& __len, _Predicate __pred) | |
2402 | + { | |
2403 | + for (; __len; --__len, ++__first) | |
2404 | + if (!bool(__pred(*__first))) | |
2405 | + break; | |
2406 | + return __first; | |
2407 | + } | |
2408 | + | |
2409 | // set_difference | |
2410 | // set_intersection | |
2411 | // set_symmetric_difference | |
2412 | @@ -789,8 +810,7 @@ | |
2413 | __glibcxx_function_requires(_UnaryPredicateConcept<_Predicate, | |
2414 | typename iterator_traits<_InputIterator>::value_type>) | |
2415 | __glibcxx_requires_valid_range(__first, __last); | |
2416 | - return std::__find_if_not(__first, __last, __pred, | |
2417 | - std::__iterator_category(__first)); | |
2418 | + return std::__find_if_not(__first, __last, __pred); | |
2419 | } | |
2420 | ||
2421 | /** | |
2422 | @@ -1784,30 +1804,39 @@ | |
2423 | // partition | |
2424 | ||
2425 | /// This is a helper function... | |
2426 | + /// Requires __len != 0 and !__pred(*__first), | |
2427 | + /// same as __stable_partition_adaptive. | |
2428 | template<typename _ForwardIterator, typename _Predicate, typename _Distance> | |
2429 | _ForwardIterator | |
2430 | __inplace_stable_partition(_ForwardIterator __first, | |
2431 | - _ForwardIterator __last, | |
2432 | _Predicate __pred, _Distance __len) | |
2433 | { | |
2434 | if (__len == 1) | |
2435 | - return __pred(*__first) ? __last : __first; | |
2436 | + return __first; | |
2437 | _ForwardIterator __middle = __first; | |
2438 | std::advance(__middle, __len / 2); | |
2439 | - _ForwardIterator __begin = std::__inplace_stable_partition(__first, | |
2440 | - __middle, | |
2441 | - __pred, | |
2442 | - __len / 2); | |
2443 | - _ForwardIterator __end = std::__inplace_stable_partition(__middle, __last, | |
2444 | - __pred, | |
2445 | - __len | |
2446 | - - __len / 2); | |
2447 | - std::rotate(__begin, __middle, __end); | |
2448 | - std::advance(__begin, std::distance(__middle, __end)); | |
2449 | - return __begin; | |
2450 | + _ForwardIterator __left_split = | |
2451 | + std::__inplace_stable_partition(__first, __pred, __len / 2); | |
2452 | + // Advance past true-predicate values to satisfy this | |
2453 | + // function's preconditions. | |
2454 | + _Distance __right_len = __len - __len / 2; | |
2455 | + _ForwardIterator __right_split = | |
2456 | + std::__find_if_not_n(__middle, __right_len, __pred); | |
2457 | + if (__right_len) | |
2458 | + __right_split = std::__inplace_stable_partition(__middle, | |
2459 | + __pred, | |
2460 | + __right_len); | |
2461 | + std::rotate(__left_split, __middle, __right_split); | |
2462 | + std::advance(__left_split, std::distance(__middle, __right_split)); | |
2463 | + return __left_split; | |
2464 | } | |
2465 | ||
2466 | /// This is a helper function... | |
2467 | + /// Requires __first != __last and !__pred(*__first) | |
2468 | + /// and __len == distance(__first, __last). | |
2469 | + /// | |
2470 | + /// !__pred(*__first) allows us to guarantee that we don't | |
2471 | + /// move-assign an element onto itself. | |
2472 | template<typename _ForwardIterator, typename _Pointer, typename _Predicate, | |
2473 | typename _Distance> | |
2474 | _ForwardIterator | |
2475 | @@ -1821,6 +1850,12 @@ | |
2476 | { | |
2477 | _ForwardIterator __result1 = __first; | |
2478 | _Pointer __result2 = __buffer; | |
2479 | + // The precondition guarantees that !__pred(*__first), so | |
2480 | + // move that element to the buffer before starting the loop. | |
2481 | + // This ensures that we only call __pred once per element. | |
2482 | + *__result2 = _GLIBCXX_MOVE(*__first); | |
2483 | + ++__result2; | |
2484 | + ++__first; | |
2485 | for (; __first != __last; ++__first) | |
2486 | if (__pred(*__first)) | |
2487 | { | |
2488 | @@ -1839,17 +1874,23 @@ | |
2489 | { | |
2490 | _ForwardIterator __middle = __first; | |
2491 | std::advance(__middle, __len / 2); | |
2492 | - _ForwardIterator __begin = | |
2493 | + _ForwardIterator __left_split = | |
2494 | std::__stable_partition_adaptive(__first, __middle, __pred, | |
2495 | __len / 2, __buffer, | |
2496 | __buffer_size); | |
2497 | - _ForwardIterator __end = | |
2498 | - std::__stable_partition_adaptive(__middle, __last, __pred, | |
2499 | - __len - __len / 2, | |
2500 | - __buffer, __buffer_size); | |
2501 | - std::rotate(__begin, __middle, __end); | |
2502 | - std::advance(__begin, std::distance(__middle, __end)); | |
2503 | - return __begin; | |
2504 | + // Advance past true-predicate values to satisfy this | |
2505 | + // function's preconditions. | |
2506 | + _Distance __right_len = __len - __len / 2; | |
2507 | + _ForwardIterator __right_split = | |
2508 | + std::__find_if_not_n(__middle, __right_len, __pred); | |
2509 | + if (__right_len) | |
2510 | + __right_split = | |
2511 | + std::__stable_partition_adaptive(__right_split, __last, __pred, | |
2512 | + __right_len, | |
2513 | + __buffer, __buffer_size); | |
2514 | + std::rotate(__left_split, __middle, __right_split); | |
2515 | + std::advance(__left_split, std::distance(__middle, __right_split)); | |
2516 | + return __left_split; | |
2517 | } | |
2518 | } | |
2519 | ||
2520 | @@ -1882,6 +1923,8 @@ | |
2521 | typename iterator_traits<_ForwardIterator>::value_type>) | |
2522 | __glibcxx_requires_valid_range(__first, __last); | |
2523 | ||
2524 | + __first = std::__find_if_not(__first, __last, __pred); | |
2525 | + | |
2526 | if (__first == __last) | |
2527 | return __first; | |
2528 | else | |
2529 | @@ -1901,7 +1944,7 @@ | |
2530 | _DistanceType(__buf.size())); | |
2531 | else | |
2532 | return | |
2533 | - std::__inplace_stable_partition(__first, __last, __pred, | |
2534 | + std::__inplace_stable_partition(__first, __pred, | |
2535 | _DistanceType(__buf.requested_size())); | |
2536 | } | |
2537 | } | |
2538 | Index: libstdc++-v3/include/bits/forward_list.tcc | |
2539 | =================================================================== | |
2540 | --- libstdc++-v3/include/bits/forward_list.tcc (.../tags/gcc_4_7_0_release) (wersja 187906) | |
2541 | +++ libstdc++-v3/include/bits/forward_list.tcc (.../branches/gcc-4_7-branch) (wersja 187906) | |
2542 | @@ -225,22 +225,37 @@ | |
2543 | template<typename _Tp, typename _Alloc> | |
2544 | typename forward_list<_Tp, _Alloc>::iterator | |
2545 | forward_list<_Tp, _Alloc>:: | |
2546 | - _M_splice_after(const_iterator __pos, forward_list&& __list) | |
2547 | + _M_splice_after(const_iterator __pos, | |
2548 | + const_iterator __before, const_iterator __last) | |
2549 | { | |
2550 | _Node_base* __tmp = const_cast<_Node_base*>(__pos._M_node); | |
2551 | - iterator __before = __list.before_begin(); | |
2552 | - return iterator(__tmp->_M_transfer_after(__before._M_node)); | |
2553 | + _Node_base* __b = const_cast<_Node_base*>(__before._M_node); | |
2554 | + _Node_base* __end = __b; | |
2555 | + | |
2556 | + while (__end && __end->_M_next != __last._M_node) | |
2557 | + __end = __end->_M_next; | |
2558 | + | |
2559 | + if (__b != __end) | |
2560 | + return iterator(__tmp->_M_transfer_after(__b, __end)); | |
2561 | + else | |
2562 | + return iterator(__tmp); | |
2563 | } | |
2564 | ||
2565 | template<typename _Tp, typename _Alloc> | |
2566 | void | |
2567 | forward_list<_Tp, _Alloc>:: | |
2568 | splice_after(const_iterator __pos, forward_list&&, | |
2569 | - const_iterator __before, const_iterator __last) | |
2570 | + const_iterator __i) | |
2571 | { | |
2572 | + const_iterator __j = __i; | |
2573 | + ++__j; | |
2574 | + | |
2575 | + if (__pos == __i || __pos == __j) | |
2576 | + return; | |
2577 | + | |
2578 | _Node_base* __tmp = const_cast<_Node_base*>(__pos._M_node); | |
2579 | - __tmp->_M_transfer_after(const_cast<_Node_base*>(__before._M_node), | |
2580 | - const_cast<_Node_base*>(__last._M_node)); | |
2581 | + __tmp->_M_transfer_after(const_cast<_Node_base*>(__i._M_node), | |
2582 | + const_cast<_Node_base*>(__j._M_node)); | |
2583 | } | |
2584 | ||
2585 | template<typename _Tp, typename _Alloc> | |
2586 | @@ -251,7 +266,7 @@ | |
2587 | if (__n) | |
2588 | { | |
2589 | forward_list __tmp(__n, __val, get_allocator()); | |
2590 | - return _M_splice_after(__pos, std::move(__tmp)); | |
2591 | + return _M_splice_after(__pos, __tmp.before_begin(), __tmp.end()); | |
2592 | } | |
2593 | else | |
2594 | return iterator(const_cast<_Node_base*>(__pos._M_node)); | |
2595 | @@ -266,26 +281,12 @@ | |
2596 | { | |
2597 | forward_list __tmp(__first, __last, get_allocator()); | |
2598 | if (!__tmp.empty()) | |
2599 | - return _M_splice_after(__pos, std::move(__tmp)); | |
2600 | + return _M_splice_after(__pos, __tmp.before_begin(), __tmp.end()); | |
2601 | else | |
2602 | return iterator(const_cast<_Node_base*>(__pos._M_node)); | |
2603 | } | |
2604 | ||
2605 | template<typename _Tp, typename _Alloc> | |
2606 | - typename forward_list<_Tp, _Alloc>::iterator | |
2607 | - forward_list<_Tp, _Alloc>:: | |
2608 | - insert_after(const_iterator __pos, std::initializer_list<_Tp> __il) | |
2609 | - { | |
2610 | - if (__il.size()) | |
2611 | - { | |
2612 | - forward_list __tmp(__il, get_allocator()); | |
2613 | - return _M_splice_after(__pos, std::move(__tmp)); | |
2614 | - } | |
2615 | - else | |
2616 | - return iterator(const_cast<_Node_base*>(__pos._M_node)); | |
2617 | - } | |
2618 | - | |
2619 | - template<typename _Tp, typename _Alloc> | |
2620 | void | |
2621 | forward_list<_Tp, _Alloc>:: | |
2622 | remove(const _Tp& __val) | |
2623 | Index: libstdc++-v3/include/bits/shared_ptr_base.h | |
2624 | =================================================================== | |
2625 | --- libstdc++-v3/include/bits/shared_ptr_base.h (.../tags/gcc_4_7_0_release) (wersja 187906) | |
2626 | +++ libstdc++-v3/include/bits/shared_ptr_base.h (.../branches/gcc-4_7-branch) (wersja 187906) | |
2627 | @@ -343,6 +343,8 @@ | |
2628 | _Sp_counted_deleter(_Ptr __p, _Deleter __d, const _Alloc& __a) | |
2629 | : _M_ptr(__p), _M_del(__d, __a) { } | |
2630 | ||
2631 | + ~_Sp_counted_deleter() noexcept { } | |
2632 | + | |
2633 | virtual void | |
2634 | _M_dispose() noexcept | |
2635 | { _M_del._M_del(_M_ptr); } | |
2636 | @@ -401,6 +403,8 @@ | |
2637 | std::forward<_Args>(__args)...); // might throw | |
2638 | } | |
2639 | ||
2640 | + ~_Sp_counted_ptr_inplace() noexcept { } | |
2641 | + | |
2642 | virtual void | |
2643 | _M_dispose() noexcept | |
2644 | { allocator_traits<_Alloc>::destroy(_M_impl, _M_impl._M_ptr); } | |
2645 | Index: libstdc++-v3/include/bits/deque.tcc | |
2646 | =================================================================== | |
2647 | --- libstdc++-v3/include/bits/deque.tcc (.../tags/gcc_4_7_0_release) (wersja 187906) | |
2648 | +++ libstdc++-v3/include/bits/deque.tcc (.../branches/gcc-4_7-branch) (wersja 187906) | |
2649 | @@ -1,7 +1,7 @@ | |
2650 | // Deque implementation (out of line) -*- C++ -*- | |
2651 | ||
2652 | // Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, | |
2653 | -// 2009, 2010, 2011 | |
2654 | +// 2009, 2010, 2011, 2012 | |
2655 | // Free Software Foundation, Inc. | |
2656 | // | |
2657 | // This file is part of the GNU ISO C++ Library. This library is free | |
2658 | @@ -175,12 +175,12 @@ | |
2659 | { | |
2660 | if (__position._M_cur == this->_M_impl._M_start._M_cur) | |
2661 | { | |
2662 | - push_front(std::forward<_Args>(__args)...); | |
2663 | + emplace_front(std::forward<_Args>(__args)...); | |
2664 | return this->_M_impl._M_start; | |
2665 | } | |
2666 | else if (__position._M_cur == this->_M_impl._M_finish._M_cur) | |
2667 | { | |
2668 | - push_back(std::forward<_Args>(__args)...); | |
2669 | + emplace_back(std::forward<_Args>(__args)...); | |
2670 | iterator __tmp = this->_M_impl._M_finish; | |
2671 | --__tmp; | |
2672 | return __tmp; | |
2673 | Index: libstdc++-v3/include/bits/random.tcc | |
2674 | =================================================================== | |
2675 | --- libstdc++-v3/include/bits/random.tcc (.../tags/gcc_4_7_0_release) (wersja 187906) | |
2676 | +++ libstdc++-v3/include/bits/random.tcc (.../branches/gcc-4_7-branch) (wersja 187906) | |
2677 | @@ -730,40 +730,65 @@ | |
2678 | independent_bits_engine<_RandomNumberEngine, __w, _UIntType>:: | |
2679 | operator()() | |
2680 | { | |
2681 | - const long double __r = static_cast<long double>(_M_b.max()) | |
2682 | - - static_cast<long double>(_M_b.min()) + 1.0L; | |
2683 | - const result_type __m = std::log(__r) / std::log(2.0L); | |
2684 | - result_type __n, __n0, __y0, __y1, __s0, __s1; | |
2685 | + typedef typename _RandomNumberEngine::result_type _Eresult_type; | |
2686 | + const _Eresult_type __r | |
2687 | + = (_M_b.max() - _M_b.min() < std::numeric_limits<_Eresult_type>::max() | |
2688 | + ? _M_b.max() - _M_b.min() + 1 : 0); | |
2689 | + const unsigned __edig = std::numeric_limits<_Eresult_type>::digits; | |
2690 | + const unsigned __m = __r ? std::__lg(__r) : __edig; | |
2691 | + | |
2692 | + typedef typename std::common_type<_Eresult_type, result_type>::type | |
2693 | + __ctype; | |
2694 | + const unsigned __cdig = std::numeric_limits<__ctype>::digits; | |
2695 | + | |
2696 | + unsigned __n, __n0; | |
2697 | + __ctype __s0, __s1, __y0, __y1; | |
2698 | + | |
2699 | for (size_t __i = 0; __i < 2; ++__i) | |
2700 | { | |
2701 | __n = (__w + __m - 1) / __m + __i; | |
2702 | __n0 = __n - __w % __n; | |
2703 | - const result_type __w0 = __w / __n; | |
2704 | - const result_type __w1 = __w0 + 1; | |
2705 | - __s0 = result_type(1) << __w0; | |
2706 | - __s1 = result_type(1) << __w1; | |
2707 | - __y0 = __s0 * (__r / __s0); | |
2708 | - __y1 = __s1 * (__r / __s1); | |
2709 | - if (__r - __y0 <= __y0 / __n) | |
2710 | + const unsigned __w0 = __w / __n; // __w0 <= __m | |
2711 | + | |
2712 | + __s0 = 0; | |
2713 | + __s1 = 0; | |
2714 | + if (__w0 < __cdig) | |
2715 | + { | |
2716 | + __s0 = __ctype(1) << __w0; | |
2717 | + __s1 = __s0 << 1; | |
2718 | + } | |
2719 | + | |
2720 | + __y0 = 0; | |
2721 | + __y1 = 0; | |
2722 | + if (__r) | |
2723 | + { | |
2724 | + __y0 = __s0 * (__r / __s0); | |
2725 | + if (__s1) | |
2726 | + __y1 = __s1 * (__r / __s1); | |
2727 | + | |
2728 | + if (__r - __y0 <= __y0 / __n) | |
2729 | + break; | |
2730 | + } | |
2731 | + else | |
2732 | break; | |
2733 | } | |
2734 | ||
2735 | result_type __sum = 0; | |
2736 | for (size_t __k = 0; __k < __n0; ++__k) | |
2737 | { | |
2738 | - result_type __u; | |
2739 | + __ctype __u; | |
2740 | do | |
2741 | __u = _M_b() - _M_b.min(); | |
2742 | - while (__u >= __y0); | |
2743 | - __sum = __s0 * __sum + __u % __s0; | |
2744 | + while (__y0 && __u >= __y0); | |
2745 | + __sum = __s0 * __sum + (__s0 ? __u % __s0 : __u); | |
2746 | } | |
2747 | for (size_t __k = __n0; __k < __n; ++__k) | |
2748 | { | |
2749 | - result_type __u; | |
2750 | + __ctype __u; | |
2751 | do | |
2752 | __u = _M_b() - _M_b.min(); | |
2753 | - while (__u >= __y1); | |
2754 | - __sum = __s1 * __sum + __u % __s1; | |
2755 | + while (__y1 && __u >= __y1); | |
2756 | + __sum = __s1 * __sum + (__s1 ? __u % __s1 : __u); | |
2757 | } | |
2758 | return __sum; | |
2759 | } | |
2760 | @@ -840,12 +865,11 @@ | |
2761 | operator()(_UniformRandomNumberGenerator& __urng, | |
2762 | const param_type& __param) | |
2763 | { | |
2764 | - typedef typename std::make_unsigned<typename | |
2765 | - _UniformRandomNumberGenerator::result_type>::type __urngtype; | |
2766 | + typedef typename _UniformRandomNumberGenerator::result_type | |
2767 | + _Gresult_type; | |
2768 | typedef typename std::make_unsigned<result_type>::type __utype; | |
2769 | - typedef typename std::conditional<(sizeof(__urngtype) | |
2770 | - > sizeof(__utype)), | |
2771 | - __urngtype, __utype>::type __uctype; | |
2772 | + typedef typename std::common_type<_Gresult_type, __utype>::type | |
2773 | + __uctype; | |
2774 | ||
2775 | const __uctype __urngmin = __urng.min(); | |
2776 | const __uctype __urngmax = __urng.max(); | |
2777 | @@ -2765,7 +2789,7 @@ | |
2778 | : (__n - 1) / 2; | |
2779 | const size_t __p = (__n - __t) / 2; | |
2780 | const size_t __q = __p + __t; | |
2781 | - const size_t __m = std::max(__s + 1, __n); | |
2782 | + const size_t __m = std::max(size_t(__s + 1), __n); | |
2783 | ||
2784 | for (size_t __k = 0; __k < __m; ++__k) | |
2785 | { | |
2786 | Index: libstdc++-v3/include/bits/stl_function.h | |
2787 | =================================================================== | |
2788 | --- libstdc++-v3/include/bits/stl_function.h (.../tags/gcc_4_7_0_release) (wersja 187906) | |
2789 | +++ libstdc++-v3/include/bits/stl_function.h (.../branches/gcc-4_7-branch) (wersja 187906) | |
2790 | @@ -1,6 +1,7 @@ | |
2791 | // Functor implementations -*- C++ -*- | |
2792 | ||
2793 | -// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2009, 2010, 2011 | |
2794 | +// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2009, 2010, | |
2795 | +// 2011, 2012 | |
2796 | // Free Software Foundation, Inc. | |
2797 | // | |
2798 | // This file is part of the GNU ISO C++ Library. This library is free | |
2799 | @@ -471,7 +472,12 @@ | |
2800 | /** @} */ | |
2801 | ||
2802 | template<typename _Tp> | |
2803 | - struct _Identity : public unary_function<_Tp,_Tp> | |
2804 | + struct _Identity | |
2805 | +#ifndef __GXX_EXPERIMENTAL_CXX0X__ | |
2806 | + // unary_function itself is deprecated in C++11 and deriving from | |
2807 | + // it can even be a nuisance (see PR 52942). | |
2808 | + : public unary_function<_Tp,_Tp> | |
2809 | +#endif | |
2810 | { | |
2811 | _Tp& | |
2812 | operator()(_Tp& __x) const | |
2813 | @@ -483,8 +489,10 @@ | |
2814 | }; | |
2815 | ||
2816 | template<typename _Pair> | |
2817 | - struct _Select1st : public unary_function<_Pair, | |
2818 | - typename _Pair::first_type> | |
2819 | + struct _Select1st | |
2820 | +#ifndef __GXX_EXPERIMENTAL_CXX0X__ | |
2821 | + : public unary_function<_Pair, typename _Pair::first_type> | |
2822 | +#endif | |
2823 | { | |
2824 | typename _Pair::first_type& | |
2825 | operator()(_Pair& __x) const | |
2826 | @@ -508,8 +516,10 @@ | |
2827 | }; | |
2828 | ||
2829 | template<typename _Pair> | |
2830 | - struct _Select2nd : public unary_function<_Pair, | |
2831 | - typename _Pair::second_type> | |
2832 | + struct _Select2nd | |
2833 | +#ifndef __GXX_EXPERIMENTAL_CXX0X__ | |
2834 | + : public unary_function<_Pair, typename _Pair::second_type> | |
2835 | +#endif | |
2836 | { | |
2837 | typename _Pair::second_type& | |
2838 | operator()(_Pair& __x) const | |
2839 | Index: libstdc++-v3/include/Makefile.am | |
2840 | =================================================================== | |
2841 | --- libstdc++-v3/include/Makefile.am (.../tags/gcc_4_7_0_release) (wersja 187906) | |
2842 | +++ libstdc++-v3/include/Makefile.am (.../branches/gcc-4_7-branch) (wersja 187906) | |
2843 | @@ -1,7 +1,7 @@ | |
2844 | ## Makefile for the include subdirectory of the GNU C++ Standard library. | |
2845 | ## | |
2846 | ## Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, | |
2847 | -## 2011 | |
2848 | +## 2011, 2012 | |
2849 | ## Free Software Foundation, Inc. | |
2850 | ## | |
2851 | ## This file is part of the libstdc++ version 3 distribution. | |
2852 | @@ -1105,7 +1105,7 @@ | |
2853 | sed -e "s,define __GLIBCXX__,define __GLIBCXX__ $$date," \ | |
2854 | -e "s,define _GLIBCXX_INLINE_VERSION, define _GLIBCXX_INLINE_VERSION $$ns_version," \ | |
2855 | -e "s,define _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY, define _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY $$visibility," \ | |
2856 | - -e "s,define _GLIBCXX_EXTERN_TEMPLATE, define _GLIBCXX_EXTERN_TEMPLATE $$externtemplate," \ | |
2857 | + -e "s,define _GLIBCXX_EXTERN_TEMPLATE$$, define _GLIBCXX_EXTERN_TEMPLATE $$externtemplate," \ | |
2858 | -e "$$ldbl_compat" \ | |
2859 | < ${glibcxx_srcdir}/include/bits/c++config > $@ ;\ | |
2860 | sed -e 's/HAVE_/_GLIBCXX_HAVE_/g' \ | |
2861 | Index: libstdc++-v3/ChangeLog | |
2862 | =================================================================== | |
2863 | --- libstdc++-v3/ChangeLog (.../tags/gcc_4_7_0_release) (wersja 187906) | |
2864 | +++ libstdc++-v3/ChangeLog (.../branches/gcc-4_7-branch) (wersja 187906) | |
2865 | @@ -1,3 +1,279 @@ | |
2866 | +2012-05-10 DJ Delorie <dj@redhat.com> | |
2867 | + | |
2868 | + * include/bits/random.tcc (seed_seq::generate): Cast max() | |
2869 | + operands to size_t to ensure a template match. | |
2870 | + * include/std/bitset (_M_copy_from_ptr): Cast min() operands to | |
2871 | + size_t to ensure a template match. | |
2872 | + | |
2873 | +2012-05-02 Paolo Carlini <paolo.carlini@oracle.com> | |
2874 | + | |
2875 | + PR libstdc++/53193 | |
2876 | + * testsuite/23_containers/unordered_set/instantiation_neg.cc: Adjust | |
2877 | + dg-error line number. | |
2878 | + | |
2879 | +2012-05-01 François Dumont <fdumont@gcc.gnu.org> | |
2880 | + | |
2881 | + PR libstdc++/53115 | |
2882 | + * include/bits/hashtable.h | |
2883 | + (_Hashtable<>::_M_rehash_aux(size_type, false_type)): Fix buckets | |
2884 | + after insertion of several equivalent elements. | |
2885 | + * testsuite/23_containers/unordered_multiset/insert/53115.cc: New. | |
2886 | + * testsuite/23_containers/unordered_multimap/insert/53115.cc: New. | |
2887 | + | |
2888 | +2012-04-30 Andreas Tobler <andreast@fgznet.ch> | |
2889 | + | |
2890 | + Backport from mainline | |
2891 | + 2012-03-21 Andreas Tobler <andreast@fgznet.ch> | |
2892 | + | |
2893 | + * testsuite/23_containers/vector/bool/modifiers/insert/31370.cc: | |
2894 | + Skip this test on powerpc64-*-freebsd*. | |
2895 | + | |
2896 | +2012-04-25 Jonathan Wakely <jwakely.gcc@gmail.com> | |
2897 | + | |
2898 | + * include/std/scoped_allocator (scoped_allocator::__outermost): Do | |
2899 | + not pass non-POD to varargs function. | |
2900 | + * testsuite/20_util/scoped_allocator/1.cc: Fix test. | |
2901 | + | |
2902 | +2012-04-23 Chris Jefferson <chris@bubblescope.net> | |
2903 | + | |
2904 | + PR testsuite/53046 | |
2905 | + * testsuite/25_algorithms/stable_partition/mem_check.cc: Fix size | |
2906 | + of array A. | |
2907 | + * testsuite/25_algorithms/stable_sort/mem_check.cc: Likewise. | |
2908 | + | |
2909 | +2012-04-22 Paolo Carlini <paolo.carlini@oracle.com> | |
2910 | + | |
2911 | + PR libstdc++/53067 | |
2912 | + * include/bits/hashtable_policy.h: Change inheritances to public. | |
2913 | + * testsuite/23_containers/unordered_map/requirements/53067.cc: New. | |
2914 | + * testsuite/23_containers/unordered_set/requirements/53067.cc: Likewise. | |
2915 | + | |
2916 | +2012-04-22 Jonathan Wakely <jwakely.gcc@gmail.com> | |
2917 | + | |
2918 | + PR libstdc++/53027 | |
2919 | + * include/bits/ptr_traits.h (pointer_traits::rebind): Make public. | |
2920 | + * testsuite/20_util/pointer_traits/requirements/typedefs.cc: Check | |
2921 | + rebind works. | |
2922 | + | |
2923 | +2012-04-21 Alan Modra <amodra@gmail.com> | |
2924 | + | |
2925 | + PR libstdc++/52839 | |
2926 | + * acinclude.m4 (_GLIBCXX_ATOMIC_BUILTINS): Do not depend on | |
2927 | + glibcxx_cv_atomic_long_long. | |
2928 | + * configure: Regenerate. | |
2929 | + | |
2930 | +2012-04-16 Bernhard Reutner-Fischer <aldot@gcc.gnu.org> | |
2931 | + | |
2932 | + PR bootstrap/52840 | |
2933 | + * src/Makefile.am (build-debug): Do not adjust vpath dir, remove | |
2934 | + Makefile.tmp | |
2935 | + * src/Makefile.in: Adjust as per above. | |
2936 | + | |
2937 | +2012-04-16 Benjamin Kosnik <bkoz@redhat.com> | |
2938 | + | |
2939 | + PR libstdc++/52689 | |
2940 | + * libsupc++/Makefile.am (LTCXXCOMPILE, CXXLINK): Tweak. | |
2941 | + * libsupc++/Makefile.in: Regenerated. | |
2942 | + * src/Makefile.am (LTCXXCOMPILE, CXXLINK): Tweak. | |
2943 | + (libstdc___la_SOURCES): Add in compatiblity files, with content | |
2944 | + that varies with -DPIC. | |
2945 | + * src/Makefile.in: Regenerated. | |
2946 | + * src/c++11/Makefile.am (LTCXXCOMPILE, CXXLINK): Tweak. | |
2947 | + * src/c++11/Makefile.in: Regenerated. | |
2948 | + * src/c++11/compatibility-atomic-c++0x.cc: Guard with PIC. | |
2949 | + * src/c++11/compatibility-c++0x.cc: Same. | |
2950 | + * src/c++11/future.cc: Consolidate compatibility bits into.. | |
2951 | + * src/c++11/mutex.cc: Consolidate compatibility bits into.. | |
2952 | + * src/c++11/compatibility-thread-cxx0x.cc: ...here. New. | |
2953 | + * src/c++98/Makefile.am (LTCXXCOMPILE, CXXLINK): Tweak. | |
2954 | + * src/c++98/Makefile.in: Regenerated. | |
2955 | + * src/c++98/compatibility-list-2.cc: Guard with PIC. | |
2956 | + * src/c++98/compatibility.cc: Tweak comments. | |
2957 | + | |
2958 | +2012-04-16 Benjamin Kosnik <bkoz@redhat.com> | |
2959 | + | |
2960 | + * include/ext/pb_ds/detail/pat_trie_/ | |
2961 | + constructors_destructor_fn_imps.hpp: Increment after recursion. | |
2962 | + * include/ext/pb_ds/detail/pat_trie_/pat_trie_base.hpp: Convert | |
2963 | + node_type markup from brief. | |
2964 | + | |
2965 | +2012-04-14 Paolo Carlini <paolo.carlini@oracle.com> | |
2966 | + | |
2967 | + PR libstdc++/52699 | |
2968 | + * include/bits/random.tcc (independent_bits_engine<>::operator()()) | |
2969 | + Avoid various overflows; use common_type on result_type and | |
2970 | + _RandomNumberEngine::result_type; avoid floating point computations; | |
2971 | + other smaller tweaks. | |
2972 | + | |
2973 | + * include/bits/random.tcc (uniform_int_distribution<>::operator()) | |
2974 | + Use common_type; assume _UniformRandomNumberGenerator::result_type | |
2975 | + unsigned; tidy. | |
2976 | + | |
2977 | + * include/bits/stl_algobase.h (__lg(unsigned), __lg(unsigned long), | |
2978 | + __lg(unsigned long long)): Add. | |
2979 | + | |
2980 | +2012-04-13 Paolo Carlini <paolo.carlini@oracle.com> | |
2981 | + | |
2982 | + * include/debug/safe_iterator.h (_BeforeBeginHelper<>:: | |
2983 | + _S_Is_Beginnest): Add. | |
2984 | + * include/debug/forward_list (_BeforeBeginHelper<>:: | |
2985 | + _S_Is_Beginnest): Likewise. | |
2986 | + (_Safe_iterator<>::_M_is_beginnest): Add. | |
2987 | + * include/debug/safe_iterator.tcc (_Safe_iterator<>::_M_valid_range): | |
2988 | + Use the latter. | |
2989 | + * testsuite/23_containers/forward_list/debug/splice_after.cc: | |
2990 | + Add test. | |
2991 | + | |
2992 | +2012-04-12 Paolo Carlini <paolo.carlini@oracle.com> | |
2993 | + | |
2994 | + * include/bits/forward_list.h (splice_after(const_iterator, | |
2995 | + forward_list&), splice_after(const_iterator, forward_list&, | |
2996 | + consst_iterator), splice_after(const_iterator, forward_list&, | |
2997 | + const_iterator, const_iterator), merge(forward_list&), | |
2998 | + merge(forward_list&, _Comp)): Add per C++11 as published (and | |
2999 | + LWG 1310). | |
3000 | + * include/debug/forward_list: Adjust. | |
3001 | + | |
3002 | + * include/bits/forward_list.h (splice_after(const_iterator, | |
3003 | + forward_list&&, const_iterator)): Only declare. | |
3004 | + (_M_transfer_after): Remove. | |
3005 | + (_M_splice_after(const_iterator, forward_list&&)): Change signature. | |
3006 | + (splice_after(const_iterator, forward_list&&, const_iterator, | |
3007 | + const_iterator)): Use the latter. | |
3008 | + * include/bits/forward_list.tcc (splice_after(const_iterator, | |
3009 | + forward_list&&, const_iterator)): Define here. | |
3010 | + (_M_splice_after): Define, use throughout. | |
3011 | + | |
3012 | + * include/bits/forward_list.h (insert_after(const_iterator, | |
3013 | + std::initializer_list<_Tp>)): Forward to insert_after(const_iterator, | |
3014 | + _InputIterator, _InputIterator). | |
3015 | + * include/bits/forward_list.tcc: Remove definition. | |
3016 | + | |
3017 | + * testsuite/23_containers/forward_list/modifiers/6.cc: New. | |
3018 | + * testsuite/23_containers/forward_list/operations/1.cc: Adjust. | |
3019 | + | |
3020 | + * testsuite/23_containers/forward_list/requirements/dr438/ | |
3021 | + assign_neg.cc: Adjust dg-error line number. | |
3022 | + * testsuite/23_containers/forward_list/requirements/dr438/ | |
3023 | + insert_neg.cc: Likewise. | |
3024 | + * testsuite/23_containers/forward_list/requirements/dr438/ | |
3025 | + constructor_1_neg.cc: Likewise. | |
3026 | + * testsuite/23_containers/forward_list/requirements/dr438/ | |
3027 | + constructor_2_neg.cc: Likewise. | |
3028 | + | |
3029 | +2012-04-12 Jeffrey Yasskin <jyasskin@google.com> | |
3030 | + | |
3031 | + PR libstdc++/52822 | |
3032 | + * include/bits/stl_algo.h (__find_if_not): Expose in C++98 mode. | |
3033 | + (__find_if_not_n): Like __find_if_not, but works on and updates a | |
3034 | + counted range instead of a bounded range. | |
3035 | + (stable_partition): Guarantee !__pred(*__first) in call to | |
3036 | + __stable_partition_adaptive() or __inplace_stable_partition(). | |
3037 | + (__stable_partition_adaptive): Use new precondition to avoid | |
3038 | + moving/copying objects onto themselves. Guarantee new | |
3039 | + precondition to recursive calls. | |
3040 | + (__inplace_stable_partition): Use new precondition to simplify | |
3041 | + base case, remove __last parameter. Guarantee new precondition to | |
3042 | + recursive calls. | |
3043 | + * testsuite/25_algorithms/stable_partition/moveable.cc (test02): | |
3044 | + Test a sequence that starts with a value matching the predicate. | |
3045 | + * testsuite/25_algorithms/stable_partition/pr52822.cc: Test | |
3046 | + vectors, which have a destructive self-move-assignment. | |
3047 | + | |
3048 | +2012-04-12 Paolo Carlini <paolo.carlini@oracle.com> | |
3049 | + | |
3050 | + PR libstdc++/52942 | |
3051 | + * include/bits/stl_function.h (_Identity, _Select1st, _Select2nd): | |
3052 | + In C++11 mode do not derive from std::unary_function. | |
3053 | + * include/ext/functional (identity, select1st, select2nd): Adjust. | |
3054 | + * testsuite/23_containers/unordered_map/requirements/52942.cc: New. | |
3055 | + * testsuite/23_containers/unordered_set/requirements/52942.cc: Likewise. | |
3056 | + | |
3057 | +2012-04-11 Jonathan Wakely <jwakely.gcc@gmail.com> | |
3058 | + | |
3059 | + PR libstdc++/52924 | |
3060 | + * include/bits/shared_ptr_base.h (_Sp_counted_deleter): Add | |
3061 | + user-defined destructor. | |
3062 | + (_Sp_counted_inplace): Likewise. | |
3063 | + * testsuite/20_util/shared_ptr/cons/52924.cc: New. | |
3064 | + * testsuite/20_util/shared_ptr/cons/43820_neg.cc: Adjust dg-error | |
3065 | + line numbers. | |
3066 | + | |
3067 | +2012-04-11 Jonathan Wakely <jwakely.gcc@gmail.com> | |
3068 | + | |
3069 | + * testsuite/performance/30_threads/future/polling.cc: Adjust. | |
3070 | + | |
3071 | +2012-04-11 Jonathan Wakely <jwakely.gcc@gmail.com> | |
3072 | + | |
3073 | + PR libstdc++/52591 | |
3074 | + * include/bits/stl_vector.h (vector::operator=(vector&&)): Dispatch | |
3075 | + to _M_move_assign depending on whether allocator is moved. | |
3076 | + (vector::_M_move_assign): Add overloaded functions. | |
3077 | + * testsuite/23_containers/vector/52591.cc: New. | |
3078 | + * testsuite/23_containers/vector/requirements/dr438/assign_neg.cc: | |
3079 | + Adjust dg-error line number. | |
3080 | + * testsuite/23_containers/vector/requirements/dr438/ | |
3081 | + constructor_1_neg.cc: | |
3082 | + Likewise. | |
3083 | + * testsuite/23_containers/vector/requirements/dr438/ | |
3084 | + constructor_2_neg.cc: | |
3085 | + Likewise. | |
3086 | + * testsuite/23_containers/vector/requirements/dr438/insert_neg.cc: | |
3087 | + Likewise. | |
3088 | + | |
3089 | +2012-04-09 François Dumont <fdumont@gcc.gnu.org> | |
3090 | + | |
3091 | + PR libstdc++/52476 | |
3092 | + * include/bits/hashtable.h (_Hashtable<>::_M_rehash_aux): Add. | |
3093 | + (_Hashtable<>::_M_rehash): Use the latter. | |
3094 | + * testsuite/23_containers/unordered_multimap/insert/52476.cc: New. | |
3095 | + * testsuite/23_containers/unordered_multiset/insert/52476.cc: New. | |
3096 | + | |
3097 | +2012-04-09 Terry Guo <terry.guo@arm.com> | |
3098 | + | |
3099 | + Backport from mainline | |
3100 | + 2012-03-28 Terry Guo <terry.guo@arm.com> | |
3101 | + | |
3102 | + * testsuite/Makefile.am (TEST_GCC_EXEC_PREFIX): New. | |
3103 | + * testsuite/Makefile.in: Regenerated. | |
3104 | + | |
3105 | +2012-03-30 Jeffrey Yasskin <jyasskin@gcc.gnu.org> | |
3106 | + Paolo Carlini <paolo.carlini@oracle.com> | |
3107 | + | |
3108 | + PR libstdc++/52799 | |
3109 | + * include/bits/deque.tcc (emplace): Fix thinko, replace push_front | |
3110 | + -> emplace_front, and likewise for *_back. | |
3111 | + * testsuite/23_containers/deque/modifiers/emplace/52799.cc: New. | |
3112 | + * testsuite/23_containers/list/modifiers/emplace/52799.cc: Likewise. | |
3113 | + * testsuite/23_containers/vector/modifiers/emplace/52799.cc: Likewise. | |
3114 | + | |
3115 | +2012-03-23 David S. Miller <davem@davemloft.net> | |
3116 | + | |
3117 | + * config/abi/post/sparc-linux-gnu/baseline_symbols.txt: Update. | |
3118 | + | |
3119 | +2012-03-23 Paolo Carlini <paolo.carlini@oracle.com> | |
ad222a6b PS |
3120 | + |
3121 | + * include/bits/forward_list.h: Fix comments. | |
3122 | + | |
3123 | +2012-03-23 Paweł Sikora <pawel.sikora@agmk.net> | |
3124 | + | |
3125 | + PR libstdc++/52540 | |
3126 | + * include/Makefile.am (c++config.h): Fix sed rule to not break | |
3127 | + the _GLIBCXX_EXTERN_TEMPLATE redefinition. | |
3128 | + * include/Makefile.in: Regenerate. | |
3129 | + | |
3130 | +2012-03-22 Jonathan Wakely <jwakely.gcc@gmail.com> | |
3131 | + | |
3132 | + PR libstdc++/52433 | |
3133 | + * include/debug/safe_iterator.h (_Safe_iterator): Add move | |
3134 | + constructor and move assignment operator. | |
3135 | + * testsuite/23_containers/vector/debug/52433.cc: New. | |
3136 | + | |
b4627121 AM |
3137 | +2012-03-22 Paolo Carlini <paolo.carlini@oracle.com> |
3138 | + | |
3139 | + * include/std/array (array<>::at(size_type) const): Fix version | |
3140 | + for undefined __EXCEPTIONS. | |
3141 | + | |
3142 | 2012-03-22 Release Manager | |
7b762fbe | 3143 | |
b4627121 | 3144 | * GCC 4.7.0 released. |
be75205b | 3145 | Index: libstdc++-v3/libsupc++/Makefile.in |
ad222a6b | 3146 | =================================================================== |
be75205b PS |
3147 | --- libstdc++-v3/libsupc++/Makefile.in (.../tags/gcc_4_7_0_release) (wersja 187906) |
3148 | +++ libstdc++-v3/libsupc++/Makefile.in (.../branches/gcc-4_7-branch) (wersja 187906) | |
3149 | @@ -344,15 +344,15 @@ | |
3150 | # 2) integrated libsupc++convenience.la that is to be a part of libstdc++.a | |
3151 | noinst_LTLIBRARIES = libsupc++convenience.la | |
3152 | std_HEADERS = \ | |
3153 | - cxxabi.h exception initializer_list new typeinfo | |
3154 | + cxxabi.h exception initializer_list new typeinfo | |
3155 | ||
3156 | bits_HEADERS = \ | |
3157 | atomic_lockfree_defines.h cxxabi_forced.h \ | |
3158 | - exception_defines.h exception_ptr.h hash_bytes.h nested_exception.h | |
3159 | + exception_defines.h exception_ptr.h hash_bytes.h nested_exception.h | |
3160 | ||
3161 | headers = $(std_HEADERS) $(bits_HEADERS) | |
3162 | @GLIBCXX_HOSTED_TRUE@c_sources = \ | |
3163 | -@GLIBCXX_HOSTED_TRUE@ cp-demangle.c | |
3164 | +@GLIBCXX_HOSTED_TRUE@ cp-demangle.c | |
3165 | ||
3166 | sources = \ | |
3167 | array_type_info.cc \ | |
3168 | @@ -404,7 +404,7 @@ | |
3169 | vmi_class_type_info.cc \ | |
3170 | vterminate.cc | |
3171 | ||
3172 | -libsupc___la_SOURCES = $(sources) $(c_sources) | |
3173 | +libsupc___la_SOURCES = $(sources) $(c_sources) | |
3174 | libsupc__convenience_la_SOURCES = $(sources) $(c_sources) | |
3175 | ||
3176 | # AM_CXXFLAGS needs to be in each subdirectory so that it can be | |
3177 | @@ -415,9 +415,7 @@ | |
3178 | AM_CXXFLAGS = \ | |
3179 | $(PIC_CXXFLAGS) \ | |
3180 | $(XTEMPLATE_FLAGS) \ | |
3181 | - $(WARN_CXXFLAGS) \ | |
3182 | - $(OPTIMIZE_CXXFLAGS) \ | |
3183 | - $(CONFIG_CXXFLAGS) | |
3184 | + $(WARN_CXXFLAGS) $(OPTIMIZE_CXXFLAGS) $(CONFIG_CXXFLAGS) | |
3185 | ||
3186 | AM_MAKEFLAGS = \ | |
3187 | "gxx_include_dir=$(gxx_include_dir)" | |
3188 | @@ -435,7 +433,7 @@ | |
3189 | # LTCOMPILE is copied from LTCXXCOMPILE below. | |
3190 | LTCOMPILE = $(LIBTOOL) --tag CC --tag disable-shared $(LIBTOOLFLAGS) --mode=compile \ | |
3191 | $(CC) $(DEFS) $(C_INCLUDES) $(PIC_CXXFLAGS) \ | |
3192 | - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) | |
3193 | + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) | |
3194 | ||
3195 | ||
3196 | # Libtool notes | |
3197 | @@ -459,9 +457,11 @@ | |
3198 | # | |
3199 | # We have to put --tag disable-shared after --tag CXX lest things | |
3200 | # CXX undo the affect of disable-shared. | |
3201 | -LTCXXCOMPILE = $(LIBTOOL) --tag CXX --tag disable-shared $(LIBTOOLFLAGS) \ | |
3202 | - --mode=compile $(CXX) $(TOPLEVEL_INCLUDES) \ | |
3203 | - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) | |
3204 | +LTCXXCOMPILE = \ | |
3205 | + $(LIBTOOL) --tag CXX --tag disable-shared \ | |
3206 | + $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ | |
3207 | + --mode=compile $(CXX) $(TOPLEVEL_INCLUDES) \ | |
3208 | + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) | |
3209 | ||
3210 | LTLDFLAGS = $(shell $(SHELL) $(top_srcdir)/../libtool-ldflags $(LDFLAGS)) | |
3211 | ||
3212 | @@ -471,9 +471,11 @@ | |
3213 | # course is problematic at this point. So, we get the top-level | |
3214 | # directory to configure libstdc++-v3 to use gcc as the C++ | |
3215 | # compilation driver. | |
3216 | -CXXLINK = $(LIBTOOL) --tag CXX --tag disable-shared $(LIBTOOLFLAGS) \ | |
3217 | - --mode=link $(CXX) \ | |
3218 | - $(OPT_LDFLAGS) $(SECTION_LDFLAGS) $(AM_CXXFLAGS) $(LTLDFLAGS) -o $@ | |
3219 | +CXXLINK = \ | |
3220 | + $(LIBTOOL) --tag CXX --tag disable-shared \ | |
3221 | + $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ | |
3222 | + --mode=link $(CXX) \ | |
3223 | + $(OPT_LDFLAGS) $(SECTION_LDFLAGS) $(AM_CXXFLAGS) $(LTLDFLAGS) -o $@ | |
3224 | ||
3225 | ||
3226 | # Install notes | |
3227 | Index: libstdc++-v3/libsupc++/Makefile.am | |
3228 | =================================================================== | |
3229 | --- libstdc++-v3/libsupc++/Makefile.am (.../tags/gcc_4_7_0_release) (wersja 187906) | |
3230 | +++ libstdc++-v3/libsupc++/Makefile.am (.../branches/gcc-4_7-branch) (wersja 187906) | |
3231 | @@ -32,17 +32,17 @@ | |
3232 | noinst_LTLIBRARIES = libsupc++convenience.la | |
3233 | ||
3234 | std_HEADERS = \ | |
3235 | - cxxabi.h exception initializer_list new typeinfo | |
3236 | + cxxabi.h exception initializer_list new typeinfo | |
3237 | ||
3238 | bits_HEADERS = \ | |
3239 | atomic_lockfree_defines.h cxxabi_forced.h \ | |
3240 | - exception_defines.h exception_ptr.h hash_bytes.h nested_exception.h | |
3241 | + exception_defines.h exception_ptr.h hash_bytes.h nested_exception.h | |
3242 | ||
3243 | headers = $(std_HEADERS) $(bits_HEADERS) | |
3244 | ||
3245 | if GLIBCXX_HOSTED | |
3246 | c_sources = \ | |
3247 | - cp-demangle.c | |
3248 | + cp-demangle.c | |
3249 | endif | |
3250 | ||
3251 | sources = \ | |
3252 | @@ -95,7 +95,7 @@ | |
3253 | vmi_class_type_info.cc \ | |
3254 | vterminate.cc | |
3255 | ||
3256 | -libsupc___la_SOURCES = $(sources) $(c_sources) | |
3257 | +libsupc___la_SOURCES = $(sources) $(c_sources) | |
3258 | libsupc__convenience_la_SOURCES = $(sources) $(c_sources) | |
3259 | ||
3260 | # AM_CXXFLAGS needs to be in each subdirectory so that it can be | |
3261 | @@ -106,9 +106,7 @@ | |
3262 | AM_CXXFLAGS = \ | |
3263 | $(PIC_CXXFLAGS) \ | |
3264 | $(XTEMPLATE_FLAGS) \ | |
3265 | - $(WARN_CXXFLAGS) \ | |
3266 | - $(OPTIMIZE_CXXFLAGS) \ | |
3267 | - $(CONFIG_CXXFLAGS) | |
3268 | + $(WARN_CXXFLAGS) $(OPTIMIZE_CXXFLAGS) $(CONFIG_CXXFLAGS) | |
3269 | ||
3270 | AM_MAKEFLAGS = \ | |
3271 | "gxx_include_dir=$(gxx_include_dir)" | |
3272 | @@ -125,7 +123,7 @@ | |
3273 | # LTCOMPILE is copied from LTCXXCOMPILE below. | |
3274 | LTCOMPILE = $(LIBTOOL) --tag CC --tag disable-shared $(LIBTOOLFLAGS) --mode=compile \ | |
3275 | $(CC) $(DEFS) $(C_INCLUDES) $(PIC_CXXFLAGS) \ | |
3276 | - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) | |
3277 | + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) | |
3278 | ||
3279 | cp-demangle.c: | |
3280 | rm -f $@ | |
3281 | @@ -178,9 +176,11 @@ | |
3282 | # | |
3283 | # We have to put --tag disable-shared after --tag CXX lest things | |
3284 | # CXX undo the affect of disable-shared. | |
3285 | -LTCXXCOMPILE = $(LIBTOOL) --tag CXX --tag disable-shared $(LIBTOOLFLAGS) \ | |
3286 | - --mode=compile $(CXX) $(TOPLEVEL_INCLUDES) \ | |
3287 | - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) | |
3288 | +LTCXXCOMPILE = \ | |
3289 | + $(LIBTOOL) --tag CXX --tag disable-shared \ | |
3290 | + $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ | |
3291 | + --mode=compile $(CXX) $(TOPLEVEL_INCLUDES) \ | |
3292 | + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) | |
3293 | ||
3294 | LTLDFLAGS = $(shell $(SHELL) $(top_srcdir)/../libtool-ldflags $(LDFLAGS)) | |
3295 | ||
3296 | @@ -190,11 +190,12 @@ | |
3297 | # course is problematic at this point. So, we get the top-level | |
3298 | # directory to configure libstdc++-v3 to use gcc as the C++ | |
3299 | # compilation driver. | |
3300 | -CXXLINK = $(LIBTOOL) --tag CXX --tag disable-shared $(LIBTOOLFLAGS) \ | |
3301 | - --mode=link $(CXX) \ | |
3302 | - $(OPT_LDFLAGS) $(SECTION_LDFLAGS) $(AM_CXXFLAGS) $(LTLDFLAGS) -o $@ | |
3303 | +CXXLINK = \ | |
3304 | + $(LIBTOOL) --tag CXX --tag disable-shared \ | |
3305 | + $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ | |
3306 | + --mode=link $(CXX) \ | |
3307 | + $(OPT_LDFLAGS) $(SECTION_LDFLAGS) $(AM_CXXFLAGS) $(LTLDFLAGS) -o $@ | |
3308 | ||
3309 | - | |
3310 | # Install notes | |
3311 | # We have to have rules modified from the default to counteract SUN make | |
3312 | # prepending each of $(*_HEADERS) with VPATH below. | |
3313 | Index: libstdc++-v3/testsuite/25_algorithms/stable_partition/mem_check.cc | |
3314 | =================================================================== | |
3315 | --- libstdc++-v3/testsuite/25_algorithms/stable_partition/mem_check.cc (.../tags/gcc_4_7_0_release) (wersja 187906) | |
3316 | +++ libstdc++-v3/testsuite/25_algorithms/stable_partition/mem_check.cc (.../branches/gcc-4_7-branch) (wersja 187906) | |
3317 | @@ -1,4 +1,4 @@ | |
3318 | -// Copyright (C) 2009 Free Software Foundation, Inc. | |
3319 | +// Copyright (C) 2009, 2012 Free Software Foundation, Inc. | |
3320 | // | |
3321 | // This file is part of the GNU ISO C++ Library. This library is free | |
3322 | // software; you can redistribute it and/or modify it under the | |
3323 | @@ -31,7 +31,7 @@ | |
3324 | typedef test_container<copy_tracker, random_access_iterator_wrapper> Container; | |
3325 | ||
3326 | const int A[] = {10, 20, 1, 11, 2, 21, 28, 29, 12, 35, 15, 27, 6, 16, 7, | |
3327 | - 25, 17, 8, 23, 18, 9, 19, 24, 30, 13, 4, 14, 22, 26}; | |
3328 | + 25, 17, 8, 23, 18, 9, 19, 24, 30, 13, 4, 14, 22, 26, 0}; | |
3329 | ||
3330 | bool even(const copy_tracker& ct) | |
3331 | { return ct.id() < 19; } | |
3332 | Index: libstdc++-v3/testsuite/25_algorithms/stable_partition/pr52822.cc | |
3333 | =================================================================== | |
3334 | --- libstdc++-v3/testsuite/25_algorithms/stable_partition/pr52822.cc (.../tags/gcc_4_7_0_release) (wersja 0) | |
3335 | +++ libstdc++-v3/testsuite/25_algorithms/stable_partition/pr52822.cc (.../branches/gcc-4_7-branch) (wersja 187906) | |
ad222a6b | 3336 | @@ -0,0 +1,43 @@ |
be75205b PS |
3337 | +// { dg-options "-std=gnu++0x" } |
3338 | + | |
ad222a6b PS |
3339 | +// Copyright (C) 2012 Free Software Foundation, Inc. |
3340 | +// | |
3341 | +// This file is part of the GNU ISO C++ Library. This library is free | |
3342 | +// software; you can redistribute it and/or modify it under the | |
3343 | +// terms of the GNU General Public License as published by the | |
3344 | +// Free Software Foundation; either version 3, or (at your option) | |
3345 | +// any later version. | |
be75205b | 3346 | + |
ad222a6b | 3347 | +// This library is distributed in the hope that it will be useful, |
be75205b | 3348 | +// but WITHOUT ANY WARRANTY; without Pred the implied warranty of |
ad222a6b PS |
3349 | +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
3350 | +// GNU General Public License for more details. | |
be75205b | 3351 | + |
ad222a6b PS |
3352 | +// You should have received a copy of the GNU General Public License along |
3353 | +// with this library; see the file COPYING3. If not see | |
3354 | +// <http://www.gnu.org/licenses/>. | |
ad222a6b | 3355 | + |
be75205b | 3356 | +// 25.2.12 [lib.alg.partitions] Partitions. |
ad222a6b | 3357 | + |
be75205b | 3358 | +#include <algorithm> |
ad222a6b | 3359 | +#include <vector> |
be75205b | 3360 | +#include <testsuite_hooks.h> |
ad222a6b | 3361 | + |
be75205b | 3362 | +bool true_vector_pred(const std::vector<int>&) { return true; } |
ad222a6b | 3363 | + |
be75205b PS |
3364 | +void |
3365 | +test01() | |
ad222a6b | 3366 | +{ |
be75205b PS |
3367 | + std::vector<std::vector<int> > v(1); |
3368 | + v[0].push_back(7); | |
3369 | + VERIFY( v[0].size() == 1 ); | |
3370 | + std::stable_partition(v.begin(), v.end(), &true_vector_pred); | |
3371 | + VERIFY( v[0].size() == 1 ); | |
ad222a6b PS |
3372 | +} |
3373 | + | |
be75205b PS |
3374 | +int |
3375 | +main() | |
3376 | +{ | |
3377 | + test01(); | |
3378 | + return 0; | |
3379 | +} | |
3380 | Index: libstdc++-v3/testsuite/25_algorithms/stable_partition/moveable.cc | |
ad222a6b | 3381 | =================================================================== |
be75205b PS |
3382 | --- libstdc++-v3/testsuite/25_algorithms/stable_partition/moveable.cc (.../tags/gcc_4_7_0_release) (wersja 187906) |
3383 | +++ libstdc++-v3/testsuite/25_algorithms/stable_partition/moveable.cc (.../branches/gcc-4_7-branch) (wersja 187906) | |
3384 | @@ -35,6 +35,11 @@ | |
3385 | const int B[] = {2, 4, 6, 8, 10, 12, 14, 16, 1, 3, 5, 7, 9, 11, 13, 15, 17}; | |
3386 | const int N = sizeof(A) / sizeof(int); | |
3387 | ||
3388 | +// Check that starting with a true predicate works too. (PR52822) | |
3389 | +const int A2[] = {2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17}; | |
3390 | +const int B2[] = {2, 4, 6, 8, 10, 12, 14, 16, 3, 5, 7, 9, 11, 13, 15, 17}; | |
3391 | +const int N2 = sizeof(A2) / sizeof(int); | |
ad222a6b | 3392 | + |
be75205b PS |
3393 | struct Pred |
3394 | { | |
3395 | bool | |
3396 | @@ -42,7 +47,7 @@ | |
3397 | { return (x.val % 2) == 0; } | |
3398 | }; | |
3399 | ||
3400 | -// 25.2.12 stable_partition() | |
3401 | +// 25.2.12 stable_partition(), starting with a false predicate. | |
3402 | void | |
3403 | test01() | |
3404 | { | |
3405 | @@ -56,9 +61,24 @@ | |
3406 | VERIFY( std::equal(s1, s1 + N, B) ); | |
3407 | } | |
3408 | ||
3409 | +// 25.2.12 stable_partition(), starting with a true predicate. | |
3410 | +void | |
3411 | +test02() | |
3412 | +{ | |
3413 | + bool test __attribute__((unused)) = true; | |
ad222a6b | 3414 | + |
be75205b PS |
3415 | + rvalstruct s1[N2]; |
3416 | + std::copy(A2, A2 + N2, s1); | |
3417 | + Container con(s1, s1 + N2); | |
3418 | + | |
3419 | + std::stable_partition(con.begin(), con.end(), Pred()); | |
3420 | + VERIFY( std::equal(s1, s1 + N2, B2) ); | |
3421 | +} | |
3422 | + | |
3423 | int | |
3424 | main() | |
3425 | { | |
3426 | test01(); | |
3427 | + test02(); | |
3428 | return 0; | |
3429 | } | |
3430 | Index: libstdc++-v3/testsuite/25_algorithms/stable_sort/mem_check.cc | |
3431 | =================================================================== | |
3432 | --- libstdc++-v3/testsuite/25_algorithms/stable_sort/mem_check.cc (.../tags/gcc_4_7_0_release) (wersja 187906) | |
3433 | +++ libstdc++-v3/testsuite/25_algorithms/stable_sort/mem_check.cc (.../branches/gcc-4_7-branch) (wersja 187906) | |
3434 | @@ -1,4 +1,4 @@ | |
3435 | -// Copyright (C) 2009 Free Software Foundation, Inc. | |
3436 | +// Copyright (C) 2009, 2012 Free Software Foundation, Inc. | |
3437 | // | |
3438 | // This file is part of the GNU ISO C++ Library. This library is free | |
3439 | // software; you can redistribute it and/or modify it under the | |
3440 | @@ -31,7 +31,7 @@ | |
3441 | typedef test_container<copy_tracker, random_access_iterator_wrapper> Container; | |
ad222a6b | 3442 | |
be75205b PS |
3443 | const int A[] = {10, 20, 1, 11, 2, 21, 28, 29, 12, 35, 15, 27, 6, 16, 7, |
3444 | - 25, 17, 8, 23, 18, 9, 19, 24, 30, 13, 4, 14, 22, 26}; | |
3445 | + 25, 17, 8, 23, 18, 9, 19, 24, 30, 13, 4, 14, 22, 26, 0}; | |
3446 | ||
3447 | void | |
3448 | test_mem1(int throw_count) | |
3449 | Index: libstdc++-v3/testsuite/Makefile.in | |
ad222a6b | 3450 | =================================================================== |
be75205b PS |
3451 | --- libstdc++-v3/testsuite/Makefile.in (.../tags/gcc_4_7_0_release) (wersja 187906) |
3452 | +++ libstdc++-v3/testsuite/Makefile.in (.../branches/gcc-4_7-branch) (wersja 187906) | |
3453 | @@ -505,6 +505,7 @@ | |
3454 | @echo 'set libiconv "$(LIBICONV)"' >>site.tmp | |
3455 | @echo 'set baseline_dir "$(baseline_dir)"' >> site.tmp | |
3456 | @echo 'set baseline_subdir_switch "$(baseline_subdir_switch)"' >> site.tmp | |
3457 | + @echo 'set TEST_GCC_EXEC_PREFIX "$(libdir)/gcc/"' >> site.tmp | |
3458 | @echo '## All variables above are generated by configure. Do Not Edit ##' >>site.tmp | |
3459 | @test ! -f site.exp || \ | |
3460 | sed '1,/^## All variables above are.*##/ d' site.exp >> site.tmp | |
3461 | Index: libstdc++-v3/testsuite/performance/30_threads/future/polling.cc | |
ad222a6b | 3462 | =================================================================== |
be75205b PS |
3463 | --- libstdc++-v3/testsuite/performance/30_threads/future/polling.cc (.../tags/gcc_4_7_0_release) (wersja 187906) |
3464 | +++ libstdc++-v3/testsuite/performance/30_threads/future/polling.cc (.../branches/gcc-4_7-branch) (wersja 187906) | |
3465 | @@ -1,4 +1,4 @@ | |
3466 | -// Copyright (C) 2009, 2010 Free Software Foundation, Inc. | |
3467 | +// Copyright (C) 2009, 2010, 2012 Free Software Foundation, Inc. | |
3468 | // | |
3469 | // This file is part of the GNU ISO C++ Library. This library is free | |
3470 | // software; you can redistribute it and/or modify it under the | |
3471 | @@ -22,7 +22,7 @@ | |
ad222a6b | 3472 | |
be75205b PS |
3473 | inline bool is_ready(std::shared_future<void>& f) |
3474 | { | |
3475 | - return f.wait_for(std::chrono::microseconds(1)); | |
3476 | + return f.wait_for(std::chrono::microseconds(1)) == std::future_status::ready; | |
3477 | } | |
3478 | ||
3479 | void poll(std::shared_future<void> f) | |
3480 | Index: libstdc++-v3/testsuite/Makefile.am | |
ad222a6b | 3481 | =================================================================== |
be75205b PS |
3482 | --- libstdc++-v3/testsuite/Makefile.am (.../tags/gcc_4_7_0_release) (wersja 187906) |
3483 | +++ libstdc++-v3/testsuite/Makefile.am (.../branches/gcc-4_7-branch) (wersja 187906) | |
3484 | @@ -60,6 +60,7 @@ | |
3485 | @echo 'set libiconv "$(LIBICONV)"' >>site.tmp | |
3486 | @echo 'set baseline_dir "$(baseline_dir)"' >> site.tmp | |
3487 | @echo 'set baseline_subdir_switch "$(baseline_subdir_switch)"' >> site.tmp | |
3488 | + @echo 'set TEST_GCC_EXEC_PREFIX "$(libdir)/gcc/"' >> site.tmp | |
3489 | @echo '## All variables above are generated by configure. Do Not Edit ##' >>site.tmp | |
3490 | @test ! -f site.exp || \ | |
3491 | sed '1,/^## All variables above are.*##/ d' site.exp >> site.tmp | |
3492 | Index: libstdc++-v3/testsuite/23_containers/unordered_map/requirements/53067.cc | |
3493 | =================================================================== | |
3494 | --- libstdc++-v3/testsuite/23_containers/unordered_map/requirements/53067.cc (.../tags/gcc_4_7_0_release) (wersja 0) | |
3495 | +++ libstdc++-v3/testsuite/23_containers/unordered_map/requirements/53067.cc (.../branches/gcc-4_7-branch) (wersja 187906) | |
3496 | @@ -0,0 +1,28 @@ | |
3497 | +// { dg-do compile } | |
3498 | +// { dg-options "-std=gnu++11" } | |
ad222a6b | 3499 | + |
be75205b PS |
3500 | +// Copyright (C) 2012 Free Software Foundation, Inc. |
3501 | +// | |
3502 | +// This file is part of the GNU ISO C++ Library. This library is free | |
3503 | +// software; you can redistribute it and/or modify it under the | |
3504 | +// terms of the GNU General Public License as published by the | |
3505 | +// Free Software Foundation; either version 3, or (at your option) | |
3506 | +// any later version. | |
ad222a6b | 3507 | + |
be75205b PS |
3508 | +// This library is distributed in the hope that it will be useful, |
3509 | +// but WITHOUT ANY WARRANTY; without Pred the implied warranty of | |
3510 | +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
3511 | +// GNU General Public License for more details. | |
ad222a6b | 3512 | + |
be75205b PS |
3513 | +// You should have received a copy of the GNU General Public License along |
3514 | +// with this library; see the file COPYING3. If not see | |
3515 | +// <http://www.gnu.org/licenses/>. | |
ad222a6b | 3516 | + |
be75205b PS |
3517 | +#include <unordered_map> |
3518 | +#include <functional> | |
ad222a6b | 3519 | + |
be75205b PS |
3520 | +void f() |
3521 | +{ | |
3522 | + std::unordered_map<int, int> Foo; | |
3523 | + ref(Foo); | |
3524 | +} | |
3525 | Index: libstdc++-v3/testsuite/23_containers/unordered_map/requirements/52942.cc | |
3526 | =================================================================== | |
3527 | --- libstdc++-v3/testsuite/23_containers/unordered_map/requirements/52942.cc (.../tags/gcc_4_7_0_release) (wersja 0) | |
3528 | +++ libstdc++-v3/testsuite/23_containers/unordered_map/requirements/52942.cc (.../branches/gcc-4_7-branch) (wersja 187906) | |
3529 | @@ -0,0 +1,37 @@ | |
3530 | +// { dg-do compile } | |
3531 | +// { dg-options "-std=gnu++11" } | |
ad222a6b | 3532 | + |
be75205b PS |
3533 | +// Copyright (C) 2012 Free Software Foundation, Inc. |
3534 | +// | |
3535 | +// This file is part of the GNU ISO C++ Library. This library is free | |
3536 | +// software; you can redistribute it and/or modify it under the | |
3537 | +// terms of the GNU General Public License as published by the | |
3538 | +// Free Software Foundation; either version 3, or (at your option) | |
3539 | +// any later version. | |
ad222a6b | 3540 | + |
be75205b PS |
3541 | +// This library is distributed in the hope that it will be useful, |
3542 | +// but WITHOUT ANY WARRANTY; without Pred the implied warranty of | |
3543 | +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
3544 | +// GNU General Public License for more details. | |
ad222a6b | 3545 | + |
be75205b PS |
3546 | +// You should have received a copy of the GNU General Public License along |
3547 | +// with this library; see the file COPYING3. If not see | |
3548 | +// <http://www.gnu.org/licenses/>. | |
ad222a6b | 3549 | + |
be75205b PS |
3550 | +#include <unordered_map> |
3551 | +#include <functional> | |
ad222a6b | 3552 | + |
be75205b | 3553 | +struct TFoo {}; |
ad222a6b | 3554 | + |
be75205b PS |
3555 | +struct TFoo_hash |
3556 | +{ | |
3557 | + std::size_t operator()(const TFoo &) const { return 0; } | |
3558 | +}; | |
ad222a6b | 3559 | + |
be75205b | 3560 | +void f1(std::unordered_map<TFoo, int, TFoo_hash> &) {} |
ad222a6b | 3561 | + |
be75205b PS |
3562 | +void f2() |
3563 | +{ | |
3564 | + std::unordered_map<TFoo, int, TFoo_hash> map1; | |
3565 | + std::bind(f1, std::ref(map1)); | |
3566 | +} | |
3567 | Index: libstdc++-v3/testsuite/23_containers/forward_list/modifiers/6.cc | |
3568 | =================================================================== | |
3569 | --- libstdc++-v3/testsuite/23_containers/forward_list/modifiers/6.cc (.../tags/gcc_4_7_0_release) (wersja 0) | |
3570 | +++ libstdc++-v3/testsuite/23_containers/forward_list/modifiers/6.cc (.../branches/gcc-4_7-branch) (wersja 187906) | |
3571 | @@ -0,0 +1,94 @@ | |
3572 | +// { dg-options "-std=gnu++11" } | |
ad222a6b | 3573 | + |
be75205b PS |
3574 | +// Copyright (C) 2012 Free Software Foundation, Inc. |
3575 | +// | |
3576 | +// This file is part of the GNU ISO C++ Library. This library is free | |
3577 | +// software; you can redistribute it and/or modify it under the | |
3578 | +// terms of the GNU General Public License as published by the | |
3579 | +// Free Software Foundation; either version 3, or (at your option) | |
3580 | +// any later version. | |
ad222a6b | 3581 | + |
be75205b PS |
3582 | +// This library is distributed in the hope that it will be useful, |
3583 | +// but WITHOUT ANY WARRANTY; without Pred the implied warranty of | |
3584 | +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
3585 | +// GNU General Public License for more details. | |
ad222a6b | 3586 | + |
be75205b PS |
3587 | +// You should have received a copy of the GNU General Public License along |
3588 | +// with this library; see the file COPYING3. If not see | |
3589 | +// <http://www.gnu.org/licenses/>. | |
ad222a6b | 3590 | + |
be75205b | 3591 | +#include <forward_list> |
ad222a6b | 3592 | + |
be75205b | 3593 | +#include <testsuite_hooks.h> |
ad222a6b | 3594 | + |
be75205b PS |
3595 | +void test01() |
3596 | +{ | |
3597 | + bool test __attribute__((unused)) = true; | |
ad222a6b | 3598 | + |
be75205b PS |
3599 | + std::forward_list<int> fl1(1, 5), fl2(1, 4), fl3(1, 3), |
3600 | + fl4(1, 2), fl5(1, 1), fl6(1, 0); | |
ad222a6b | 3601 | + |
be75205b | 3602 | + fl1.splice_after(fl1.before_begin(), fl2); |
ad222a6b | 3603 | + |
be75205b | 3604 | + auto it = fl1.begin(); |
ad222a6b | 3605 | + |
be75205b | 3606 | + VERIFY( *it == 4 ); |
ad222a6b | 3607 | + |
be75205b PS |
3608 | + ++it; |
3609 | + | |
3610 | + VERIFY( *it == 5 ); | |
ad222a6b | 3611 | + |
be75205b | 3612 | + fl3.splice_after(fl3.before_begin(), fl4, fl4.before_begin()); |
ad222a6b | 3613 | + |
be75205b | 3614 | + it = fl3.begin(); |
ad222a6b | 3615 | + |
be75205b | 3616 | + VERIFY( *it == 2 ); |
ad222a6b | 3617 | + |
be75205b PS |
3618 | + ++it; |
3619 | + | |
3620 | + VERIFY( *it == 3 ); | |
ad222a6b | 3621 | + |
be75205b | 3622 | + fl5.splice_after(fl5.before_begin(), fl6, fl6.before_begin(), fl6.end()); |
ad222a6b | 3623 | + |
be75205b | 3624 | + it = fl5.begin(); |
ad222a6b | 3625 | + |
be75205b | 3626 | + VERIFY( *it == 0 ); |
ad222a6b | 3627 | + |
be75205b PS |
3628 | + ++it; |
3629 | + | |
3630 | + VERIFY( *it == 1 ); | |
ad222a6b | 3631 | + |
be75205b | 3632 | + fl1.merge(fl2); |
ad222a6b | 3633 | + |
be75205b | 3634 | + it = fl1.begin(); |
ad222a6b | 3635 | + |
be75205b | 3636 | + VERIFY( *it == 4 ); |
ad222a6b | 3637 | + |
be75205b | 3638 | + ++it; |
ad222a6b | 3639 | + |
be75205b | 3640 | + VERIFY( *it == 5 ); |
ad222a6b | 3641 | + |
be75205b | 3642 | + fl1.merge(fl3, std::less<int>()); |
ad222a6b | 3643 | + |
be75205b | 3644 | + it = fl1.begin(); |
ad222a6b | 3645 | + |
be75205b | 3646 | + VERIFY( *it == 2 ); |
ad222a6b | 3647 | + |
be75205b PS |
3648 | + ++it; |
3649 | + | |
3650 | + VERIFY( *it == 3 ); | |
ad222a6b | 3651 | + |
be75205b PS |
3652 | + ++it; |
3653 | + | |
3654 | + VERIFY( *it == 4 ); | |
ad222a6b | 3655 | + |
be75205b PS |
3656 | + ++it; |
3657 | + | |
3658 | + VERIFY( *it == 5 ); | |
3659 | +} | |
7b762fbe | 3660 | + |
be75205b PS |
3661 | +int main() |
3662 | +{ | |
3663 | + test01(); | |
3664 | + return 0; | |
3665 | +} | |
3666 | Index: libstdc++-v3/testsuite/23_containers/forward_list/operations/1.cc | |
3667 | =================================================================== | |
3668 | --- libstdc++-v3/testsuite/23_containers/forward_list/operations/1.cc (.../tags/gcc_4_7_0_release) (wersja 187906) | |
3669 | +++ libstdc++-v3/testsuite/23_containers/forward_list/operations/1.cc (.../branches/gcc-4_7-branch) (wersja 187906) | |
3670 | @@ -1,6 +1,6 @@ | |
3671 | // { dg-options "-std=gnu++0x" } | |
3672 | ||
3673 | -// Copyright (C) 2008, 2009 Free Software Foundation, Inc. | |
3674 | +// Copyright (C) 2008, 2009, 2012 Free Software Foundation, Inc. | |
3675 | // | |
3676 | // This file is part of the GNU ISO C++ Library. This library is free | |
3677 | // software; you can redistribute it and/or modify it under the | |
3678 | @@ -68,7 +68,7 @@ | |
3679 | ||
3680 | VERIFY(*befy == 10.0); | |
3681 | ++befy; | |
3682 | - VERIFY(*befy == 15.0); | |
3683 | + VERIFY(*befy == 14.0); | |
3684 | } | |
3685 | ||
3686 | // This test verifies the following: | |
3687 | Index: libstdc++-v3/testsuite/23_containers/forward_list/requirements/dr438/assign_neg.cc | |
3688 | =================================================================== | |
3689 | --- libstdc++-v3/testsuite/23_containers/forward_list/requirements/dr438/assign_neg.cc (.../tags/gcc_4_7_0_release) (wersja 187906) | |
3690 | +++ libstdc++-v3/testsuite/23_containers/forward_list/requirements/dr438/assign_neg.cc (.../branches/gcc-4_7-branch) (wersja 187906) | |
3691 | @@ -1,8 +1,8 @@ | |
3692 | // { dg-do compile } | |
3693 | // { dg-options "-std=gnu++0x" } | |
3694 | -// { dg-error "no matching" "" { target *-*-* } 1213 } | |
3695 | +// { dg-error "no matching" "" { target *-*-* } 1221 } | |
3696 | ||
3697 | -// Copyright (C) 2009, 2010, 2011 Free Software Foundation | |
3698 | +// Copyright (C) 2009, 2010, 2011, 2012 Free Software Foundation | |
3699 | // | |
3700 | // This file is part of the GNU ISO C++ Library. This library is free | |
3701 | // software; you can redistribute it and/or modify it under the | |
3702 | Index: libstdc++-v3/testsuite/23_containers/forward_list/requirements/dr438/insert_neg.cc | |
3703 | =================================================================== | |
3704 | --- libstdc++-v3/testsuite/23_containers/forward_list/requirements/dr438/insert_neg.cc (.../tags/gcc_4_7_0_release) (wersja 187906) | |
3705 | +++ libstdc++-v3/testsuite/23_containers/forward_list/requirements/dr438/insert_neg.cc (.../branches/gcc-4_7-branch) (wersja 187906) | |
3706 | @@ -1,8 +1,8 @@ | |
3707 | // { dg-do compile } | |
3708 | // { dg-options "-std=gnu++0x" } | |
3709 | -// { dg-error "no matching" "" { target *-*-* } 1213 } | |
3710 | +// { dg-error "no matching" "" { target *-*-* } 1221 } | |
3711 | ||
3712 | -// Copyright (C) 2009, 2010, 2011 Free Software Foundation | |
3713 | +// Copyright (C) 2009, 2010, 2011, 2012 Free Software Foundation | |
3714 | // | |
3715 | // This file is part of the GNU ISO C++ Library. This library is free | |
3716 | // software; you can redistribute it and/or modify it under the | |
3717 | Index: libstdc++-v3/testsuite/23_containers/forward_list/requirements/dr438/constructor_1_neg.cc | |
3718 | =================================================================== | |
3719 | --- libstdc++-v3/testsuite/23_containers/forward_list/requirements/dr438/constructor_1_neg.cc (.../tags/gcc_4_7_0_release) (wersja 187906) | |
3720 | +++ libstdc++-v3/testsuite/23_containers/forward_list/requirements/dr438/constructor_1_neg.cc (.../branches/gcc-4_7-branch) (wersja 187906) | |
3721 | @@ -1,8 +1,8 @@ | |
3722 | // { dg-do compile } | |
3723 | // { dg-options "-std=gnu++0x" } | |
3724 | -// { dg-error "no matching" "" { target *-*-* } 1213 } | |
3725 | +// { dg-error "no matching" "" { target *-*-* } 1221 } | |
3726 | ||
3727 | -// Copyright (C) 2009, 2010, 2011 Free Software Foundation | |
3728 | +// Copyright (C) 2009, 2010, 2011, 2012 Free Software Foundation | |
3729 | // | |
3730 | // This file is part of the GNU ISO C++ Library. This library is free | |
3731 | // software; you can redistribute it and/or modify it under the | |
3732 | Index: libstdc++-v3/testsuite/23_containers/forward_list/requirements/dr438/constructor_2_neg.cc | |
3733 | =================================================================== | |
3734 | --- libstdc++-v3/testsuite/23_containers/forward_list/requirements/dr438/constructor_2_neg.cc (.../tags/gcc_4_7_0_release) (wersja 187906) | |
3735 | +++ libstdc++-v3/testsuite/23_containers/forward_list/requirements/dr438/constructor_2_neg.cc (.../branches/gcc-4_7-branch) (wersja 187906) | |
3736 | @@ -1,8 +1,8 @@ | |
3737 | // { dg-do compile } | |
3738 | // { dg-options "-std=gnu++0x" } | |
3739 | -// { dg-error "no matching" "" { target *-*-* } 1213 } | |
3740 | +// { dg-error "no matching" "" { target *-*-* } 1221 } | |
3741 | ||
3742 | -// Copyright (C) 2009, 2010, 2011 Free Software Foundation | |
3743 | +// Copyright (C) 2009, 2010, 2011, 2012 Free Software Foundation | |
3744 | // | |
3745 | // This file is part of the GNU ISO C++ Library. This library is free | |
3746 | // software; you can redistribute it and/or modify it under the | |
3747 | Index: libstdc++-v3/testsuite/23_containers/forward_list/debug/splice_after.cc | |
3748 | =================================================================== | |
3749 | --- libstdc++-v3/testsuite/23_containers/forward_list/debug/splice_after.cc (.../tags/gcc_4_7_0_release) (wersja 187906) | |
3750 | +++ libstdc++-v3/testsuite/23_containers/forward_list/debug/splice_after.cc (.../branches/gcc-4_7-branch) (wersja 187906) | |
3751 | @@ -1,6 +1,6 @@ | |
3752 | // { dg-options "-std=gnu++0x" } | |
3753 | ||
3754 | -// Copyright (C) 2010 Free Software Foundation, Inc. | |
3755 | +// Copyright (C) 2010, 2012 Free Software Foundation, Inc. | |
3756 | // | |
3757 | // This file is part of the GNU ISO C++ Library. This library is free | |
3758 | // software; you can redistribute it and/or modify it under the | |
3759 | @@ -34,6 +34,10 @@ | |
3760 | ||
3761 | VERIFY( before == fl1.before_begin() ); | |
3762 | VERIFY( end == fl1.end() ); | |
7b762fbe | 3763 | + |
be75205b PS |
3764 | + // no-op just to check that debug mode does not see any problem with it. |
3765 | + fl1.splice_after(fl1.before_begin(), std::move(fl2), | |
3766 | + fl2.before_begin(), fl2.begin()); | |
3767 | } | |
3768 | ||
3769 | int | |
3770 | Index: libstdc++-v3/testsuite/23_containers/unordered_multimap/insert/53115.cc | |
3771 | =================================================================== | |
3772 | --- libstdc++-v3/testsuite/23_containers/unordered_multimap/insert/53115.cc (.../tags/gcc_4_7_0_release) (wersja 0) | |
3773 | +++ libstdc++-v3/testsuite/23_containers/unordered_multimap/insert/53115.cc (.../branches/gcc-4_7-branch) (wersja 187906) | |
3774 | @@ -0,0 +1,101 @@ | |
3775 | +// { dg-options "-std=gnu++11" } | |
3776 | +// | |
3777 | +// Copyright (C) 2012 Free Software Foundation, Inc. | |
3778 | +// | |
3779 | +// This file is part of the GNU ISO C++ Library. This library is free | |
3780 | +// software; you can redistribute it and/or modify it under the | |
3781 | +// terms of the GNU General Public License as published by the | |
3782 | +// Free Software Foundation; either version 3, or (at your option) | |
3783 | +// any later version. | |
3784 | +// | |
3785 | +// This library is distributed in the hope that it will be useful, | |
3786 | +// but WITHOUT ANY WARRANTY; without even the implied warranty of | |
3787 | +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
3788 | +// GNU General Public License for more details. | |
3789 | +// | |
3790 | +// You should have received a copy of the GNU General Public License along | |
3791 | +// with this library; see the file COPYING3. If not see | |
3792 | +// <http://www.gnu.org/licenses/>. | |
7b762fbe | 3793 | + |
be75205b PS |
3794 | +#include <unordered_map> |
3795 | +#include <testsuite_hooks.h> | |
7b762fbe | 3796 | + |
be75205b PS |
3797 | +namespace |
3798 | +{ | |
3799 | + std::size_t | |
3800 | + get_nb_bucket_elems(const std::unordered_multimap<int, int>& us) | |
3801 | + { | |
3802 | + std::size_t nb = 0; | |
3803 | + for (std::size_t b = 0; b != us.bucket_count(); ++b) | |
3804 | + nb += us.bucket_size(b); | |
3805 | + return nb; | |
3806 | + } | |
3807 | +} | |
7b762fbe | 3808 | + |
be75205b PS |
3809 | +void test01() |
3810 | +{ | |
3811 | + using namespace std; | |
3812 | + bool test __attribute__((unused)) = true; | |
7b762fbe | 3813 | + |
be75205b PS |
3814 | + std::unordered_multimap<int, int> umm; |
3815 | + umm.insert(make_pair(10, 1)); | |
3816 | + VERIFY( umm.size() == 1 ); | |
3817 | + VERIFY( std::distance(umm.begin(), umm.end()) == umm.size() ); | |
3818 | + VERIFY( get_nb_bucket_elems(umm) == umm.size() ); | |
d5cf6eeb | 3819 | + |
be75205b PS |
3820 | + umm.insert(make_pair(10, 2)); |
3821 | + VERIFY( umm.size() == 2 ); | |
3822 | + VERIFY( std::distance(umm.begin(), umm.end()) == umm.size() ); | |
3823 | + VERIFY( get_nb_bucket_elems(umm) == umm.size() ); | |
d5cf6eeb | 3824 | + |
be75205b PS |
3825 | + umm.insert(make_pair(10, 3)); |
3826 | + VERIFY( umm.size() == 3 ); | |
3827 | + VERIFY( std::distance(umm.begin(), umm.end()) == umm.size() ); | |
3828 | + VERIFY( get_nb_bucket_elems(umm) == umm.size() ); | |
ad222a6b | 3829 | + |
be75205b PS |
3830 | + umm.insert(make_pair(10, 4)); |
3831 | + VERIFY( umm.size() == 4 ); | |
3832 | + VERIFY( std::distance(umm.begin(), umm.end()) == umm.size() ); | |
3833 | + VERIFY( get_nb_bucket_elems(umm) == umm.size() ); | |
ad222a6b | 3834 | + |
be75205b PS |
3835 | + umm.insert(make_pair(10, 5)); |
3836 | + VERIFY( umm.size() == 5 ); | |
3837 | + VERIFY( std::distance(umm.begin(), umm.end()) == umm.size() ); | |
3838 | + VERIFY( get_nb_bucket_elems(umm) == umm.size() ); | |
ad222a6b | 3839 | + |
be75205b PS |
3840 | + umm.insert(make_pair(24, 6)); |
3841 | + VERIFY( umm.size() == 6 ); | |
3842 | + VERIFY( std::distance(umm.begin(), umm.end()) == umm.size() ); | |
3843 | + VERIFY( get_nb_bucket_elems(umm) == umm.size() ); | |
ad222a6b | 3844 | + |
be75205b PS |
3845 | + umm.insert(make_pair(25, 7)); |
3846 | + VERIFY( umm.size() == 7 ); | |
3847 | + VERIFY( std::distance(umm.begin(), umm.end()) == umm.size() ); | |
3848 | + VERIFY( get_nb_bucket_elems(umm) == umm.size() ); | |
ad222a6b | 3849 | + |
be75205b PS |
3850 | + umm.insert(make_pair(2, 8)); |
3851 | + VERIFY( umm.size() == 8 ); | |
3852 | + VERIFY( std::distance(umm.begin(), umm.end()) == umm.size() ); | |
3853 | + VERIFY( get_nb_bucket_elems(umm) == umm.size() ); | |
ad222a6b | 3854 | + |
be75205b PS |
3855 | + umm.insert(make_pair(2, 9)); |
3856 | + VERIFY( umm.size() == 9 ); | |
3857 | + VERIFY( std::distance(umm.begin(), umm.end()) == umm.size() ); | |
3858 | + VERIFY( get_nb_bucket_elems(umm) == umm.size() ); | |
ad222a6b | 3859 | + |
be75205b PS |
3860 | + umm.insert(make_pair(1, 10)); |
3861 | + VERIFY( umm.size() == 10 ); | |
3862 | + VERIFY( std::distance(umm.begin(), umm.end()) == umm.size() ); | |
3863 | + VERIFY( get_nb_bucket_elems(umm) == umm.size() ); | |
ad222a6b | 3864 | + |
be75205b PS |
3865 | + umm.insert(make_pair(10, 11)); |
3866 | + VERIFY( umm.size() == 11 ); | |
3867 | + VERIFY( std::distance(umm.begin(), umm.end()) == umm.size() ); | |
3868 | + VERIFY( get_nb_bucket_elems(umm) == umm.size() ); | |
3869 | +} | |
3870 | + | |
3871 | +int main() | |
3872 | +{ | |
3873 | + test01(); | |
3874 | + return 0; | |
3875 | +} | |
3876 | Index: libstdc++-v3/testsuite/23_containers/unordered_multimap/insert/52476.cc | |
ad222a6b | 3877 | =================================================================== |
be75205b PS |
3878 | --- libstdc++-v3/testsuite/23_containers/unordered_multimap/insert/52476.cc (.../tags/gcc_4_7_0_release) (wersja 0) |
3879 | +++ libstdc++-v3/testsuite/23_containers/unordered_multimap/insert/52476.cc (.../branches/gcc-4_7-branch) (wersja 187906) | |
3880 | @@ -0,0 +1,59 @@ | |
3881 | +// { dg-options "-std=gnu++0x" } | |
3882 | +// | |
3883 | +// Copyright (C) 2012 Free Software Foundation, Inc. | |
3884 | +// | |
3885 | +// This file is part of the GNU ISO C++ Library. This library is free | |
3886 | +// software; you can redistribute it and/or modify it under the | |
3887 | +// terms of the GNU General Public License as published by the | |
3888 | +// Free Software Foundation; either version 3, or (at your option) | |
3889 | +// any later version. | |
3890 | +// | |
3891 | +// This library is distributed in the hope that it will be useful, | |
3892 | +// but WITHOUT ANY WARRANTY; without even the implied warranty of | |
3893 | +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
3894 | +// GNU General Public License for more details. | |
3895 | +// | |
3896 | +// You should have received a copy of the GNU General Public License along | |
3897 | +// with this library; see the file COPYING3. If not see | |
3898 | +// <http://www.gnu.org/licenses/>. | |
ad222a6b | 3899 | + |
be75205b PS |
3900 | +#include <unordered_map> |
3901 | +#include <vector> | |
3902 | +#include <algorithm> | |
3903 | +#include <testsuite_hooks.h> | |
ad222a6b | 3904 | + |
be75205b | 3905 | +void test01() |
ad222a6b | 3906 | +{ |
be75205b PS |
3907 | + using namespace std; |
3908 | + bool test __attribute__((unused)) = true; | |
3909 | + | |
3910 | + unordered_multimap<int, int> mmap; | |
3911 | + vector<int> values; | |
ad222a6b | 3912 | + |
be75205b PS |
3913 | + size_t nb_bkts = mmap.bucket_count(); |
3914 | + int i = 0; | |
3915 | + for (;; ++i) | |
ad222a6b | 3916 | + { |
be75205b PS |
3917 | + mmap.insert(make_pair(0, i)); |
3918 | + if (mmap.bucket_count() != nb_bkts) | |
3919 | + // Container got rehash | |
3920 | + break; | |
3921 | + values.clear(); | |
3922 | + transform(mmap.begin(), mmap.end(), back_inserter(values), | |
3923 | + [](const pair<int, int>& p) { return p.second; }); | |
ad222a6b | 3924 | + } |
ad222a6b | 3925 | + |
be75205b PS |
3926 | + vector<int> rehash_values; |
3927 | + transform(mmap.begin(), mmap.end(), back_inserter(rehash_values), | |
3928 | + [](const pair<int, int>& p) { return p.second; }); | |
3929 | + // Remove the value that result in a rehash | |
3930 | + rehash_values.erase(remove(rehash_values.begin(), rehash_values.end(), i)); | |
ad222a6b | 3931 | + |
be75205b PS |
3932 | + VERIFY( rehash_values == values ); |
3933 | +} | |
3934 | + | |
3935 | +int main() | |
ad222a6b | 3936 | +{ |
be75205b PS |
3937 | + test01(); |
3938 | + return 0; | |
3939 | +} | |
3940 | Index: libstdc++-v3/testsuite/23_containers/vector/modifiers/emplace/52799.cc | |
3941 | =================================================================== | |
3942 | --- libstdc++-v3/testsuite/23_containers/vector/modifiers/emplace/52799.cc (.../tags/gcc_4_7_0_release) (wersja 0) | |
3943 | +++ libstdc++-v3/testsuite/23_containers/vector/modifiers/emplace/52799.cc (.../branches/gcc-4_7-branch) (wersja 187906) | |
3944 | @@ -0,0 +1,28 @@ | |
3945 | +// { dg-options "-std=gnu++11" } | |
3946 | +// { dg-do compile } | |
ad222a6b | 3947 | + |
be75205b PS |
3948 | +// Copyright (C) 2012 Free Software Foundation, Inc. |
3949 | +// | |
3950 | +// This file is part of the GNU ISO C++ Library. This library is free | |
3951 | +// software; you can redistribute it and/or modify it under the | |
3952 | +// terms of the GNU General Public License as published by the | |
3953 | +// Free Software Foundation; either version 3, or (at your option) | |
3954 | +// any later version. | |
ad222a6b | 3955 | + |
be75205b PS |
3956 | +// This library is distributed in the hope that it will be useful, |
3957 | +// but WITHOUT ANY WARRANTY; without even the implied warranty of | |
3958 | +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
3959 | +// GNU General Public License for more details. | |
ad222a6b | 3960 | + |
be75205b PS |
3961 | +// You should have received a copy of the GNU General Public License along |
3962 | +// with this library; see the file COPYING3. If not see | |
3963 | +// <http://www.gnu.org/licenses/>. | |
ad222a6b | 3964 | + |
be75205b | 3965 | +#include <vector> |
ad222a6b | 3966 | + |
be75205b PS |
3967 | +// libstdc++/52799 |
3968 | +int main() | |
3969 | +{ | |
3970 | + std::vector<int> v; | |
3971 | + v.emplace(v.begin()); | |
3972 | +} | |
3973 | Index: libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/assign_neg.cc | |
3974 | =================================================================== | |
3975 | --- libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/assign_neg.cc (.../tags/gcc_4_7_0_release) (wersja 187906) | |
3976 | +++ libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/assign_neg.cc (.../branches/gcc-4_7-branch) (wersja 187906) | |
3977 | @@ -18,7 +18,7 @@ | |
3978 | // <http://www.gnu.org/licenses/>. | |
3979 | ||
3980 | // { dg-do compile } | |
3981 | -// { dg-error "no matching" "" { target *-*-* } 1225 } | |
3982 | +// { dg-error "no matching" "" { target *-*-* } 1207 } | |
3983 | ||
3984 | #include <vector> | |
3985 | ||
3986 | Index: libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/insert_neg.cc | |
3987 | =================================================================== | |
3988 | --- libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/insert_neg.cc (.../tags/gcc_4_7_0_release) (wersja 187906) | |
3989 | +++ libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/insert_neg.cc (.../branches/gcc-4_7-branch) (wersja 187906) | |
3990 | @@ -18,7 +18,7 @@ | |
3991 | // <http://www.gnu.org/licenses/>. | |
3992 | ||
3993 | // { dg-do compile } | |
3994 | -// { dg-error "no matching" "" { target *-*-* } 1266 } | |
3995 | +// { dg-error "no matching" "" { target *-*-* } 1248 } | |
3996 | ||
3997 | #include <vector> | |
3998 | ||
3999 | Index: libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/constructor_1_neg.cc | |
4000 | =================================================================== | |
4001 | --- libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/constructor_1_neg.cc (.../tags/gcc_4_7_0_release) (wersja 187906) | |
4002 | +++ libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/constructor_1_neg.cc (.../branches/gcc-4_7-branch) (wersja 187906) | |
4003 | @@ -18,7 +18,7 @@ | |
4004 | // <http://www.gnu.org/licenses/>. | |
4005 | ||
4006 | // { dg-do compile } | |
4007 | -// { dg-error "no matching" "" { target *-*-* } 1155 } | |
4008 | +// { dg-error "no matching" "" { target *-*-* } 1137 } | |
4009 | ||
4010 | #include <vector> | |
4011 | ||
4012 | Index: libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/constructor_2_neg.cc | |
4013 | =================================================================== | |
4014 | --- libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/constructor_2_neg.cc (.../tags/gcc_4_7_0_release) (wersja 187906) | |
4015 | +++ libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/constructor_2_neg.cc (.../branches/gcc-4_7-branch) (wersja 187906) | |
4016 | @@ -18,7 +18,7 @@ | |
4017 | // <http://www.gnu.org/licenses/>. | |
4018 | ||
4019 | // { dg-do compile } | |
4020 | -// { dg-error "no matching" "" { target *-*-* } 1155 } | |
4021 | +// { dg-error "no matching" "" { target *-*-* } 1137 } | |
4022 | ||
4023 | #include <vector> | |
4024 | #include <utility> | |
4025 | Index: libstdc++-v3/testsuite/23_containers/vector/debug/52433.cc | |
4026 | =================================================================== | |
4027 | --- libstdc++-v3/testsuite/23_containers/vector/debug/52433.cc (.../tags/gcc_4_7_0_release) (wersja 0) | |
4028 | +++ libstdc++-v3/testsuite/23_containers/vector/debug/52433.cc (.../branches/gcc-4_7-branch) (wersja 187906) | |
4029 | @@ -0,0 +1,43 @@ | |
4030 | +// Copyright (C) 2012 Free Software Foundation, Inc. | |
4031 | +// | |
4032 | +// This file is part of the GNU ISO C++ Library. This library is free | |
4033 | +// software; you can redistribute it and/or modify it under the | |
4034 | +// terms of the GNU General Public License as published by the | |
4035 | +// Free Software Foundation; either version 3, or (at your option) | |
4036 | +// any later version. | |
4037 | +// | |
4038 | +// This library is distributed in the hope that it will be useful, | |
4039 | +// but WITHOUT ANY WARRANTY; without even the implied warranty of | |
4040 | +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
4041 | +// GNU General Public License for more details. | |
4042 | +// | |
4043 | +// You should have received a copy of the GNU General Public License along | |
4044 | +// with this library; see the file COPYING3. If not see | |
4045 | +// <http://www.gnu.org/licenses/>. | |
4046 | +// | |
4047 | +// { dg-require-debug-mode "" } | |
4048 | +// { dg-options "-std=gnu++0x" } | |
4049 | +// { dg-do compile } | |
ad222a6b | 4050 | + |
be75205b | 4051 | +// PR libstdc++/52433 |
ad222a6b | 4052 | + |
be75205b | 4053 | +#include <vector> |
ad222a6b | 4054 | + |
be75205b PS |
4055 | +struct X |
4056 | +{ | |
4057 | + std::vector<int>::iterator i; | |
ad222a6b | 4058 | + |
be75205b PS |
4059 | + X() = default; |
4060 | + X(const X&) = default; | |
4061 | + X(X&&) = default; | |
4062 | + X& operator=(const X&) = default; | |
4063 | + X& operator=(X&&) = default; | |
4064 | +}; | |
ad222a6b | 4065 | + |
be75205b PS |
4066 | +X test01() |
4067 | +{ | |
4068 | + X x; | |
4069 | + x = X(); | |
4070 | + return x; | |
ad222a6b | 4071 | +} |
ad222a6b | 4072 | + |
be75205b PS |
4073 | Index: libstdc++-v3/testsuite/23_containers/vector/bool/modifiers/insert/31370.cc |
4074 | =================================================================== | |
4075 | --- libstdc++-v3/testsuite/23_containers/vector/bool/modifiers/insert/31370.cc (.../tags/gcc_4_7_0_release) (wersja 187906) | |
4076 | +++ libstdc++-v3/testsuite/23_containers/vector/bool/modifiers/insert/31370.cc (.../branches/gcc-4_7-branch) (wersja 187906) | |
4077 | @@ -1,4 +1,4 @@ | |
4078 | -// Copyright (C) 2007, 2009, 2010 Free Software Foundation, Inc. | |
4079 | +// Copyright (C) 2007, 2009, 2010, 2012 Free Software Foundation, Inc. | |
4080 | // | |
4081 | // This file is part of the GNU ISO C++ Library. This library is free | |
4082 | // software; you can redistribute it and/or modify it under the | |
4083 | @@ -17,6 +17,7 @@ | |
4084 | ||
4085 | // 23.2.5 class vector<bool> [lib.vector.bool] | |
4086 | ||
4087 | +// { dg-skip-if "" { powerpc64-*-freebsd* } { "*" } { "" } } | |
4088 | // { dg-do run { xfail *-*-darwin8.[0-4].* } } | |
4089 | ||
4090 | #include <vector> | |
4091 | Index: libstdc++-v3/testsuite/23_containers/vector/52591.cc | |
4092 | =================================================================== | |
4093 | --- libstdc++-v3/testsuite/23_containers/vector/52591.cc (.../tags/gcc_4_7_0_release) (wersja 0) | |
4094 | +++ libstdc++-v3/testsuite/23_containers/vector/52591.cc (.../branches/gcc-4_7-branch) (wersja 187906) | |
4095 | @@ -0,0 +1,38 @@ | |
4096 | +// Copyright (C) 2012 Free Software Foundation, Inc. | |
4097 | +// | |
4098 | +// This file is part of the GNU ISO C++ Library. This library is free | |
4099 | +// software; you can redistribute it and/or modify it under the | |
4100 | +// terms of the GNU General Public License as published by the | |
4101 | +// Free Software Foundation; either version 3, or (at your option) | |
4102 | +// any later version. | |
ad222a6b | 4103 | + |
be75205b PS |
4104 | +// This library is distributed in the hope that it will be useful, |
4105 | +// but WITHOUT ANY WARRANTY; without even the implied warranty of | |
4106 | +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
4107 | +// GNU General Public License for more details. | |
ad222a6b | 4108 | + |
be75205b PS |
4109 | +// You should have received a copy of the GNU General Public License along |
4110 | +// with this library; see the file COPYING3. If not see | |
4111 | +// <http://www.gnu.org/licenses/>. | |
ad222a6b | 4112 | + |
be75205b PS |
4113 | +// { dg-do compile } |
4114 | +// { dg-options "-std=gnu++0x" } | |
ad222a6b | 4115 | + |
be75205b | 4116 | +// libstdc++/52591 |
ad222a6b | 4117 | + |
be75205b | 4118 | +#include <vector> |
ad222a6b | 4119 | + |
be75205b PS |
4120 | +// As an extension we allow move-assignment of std::vector when the element |
4121 | +// type is not MoveAssignable, as long as the allocator type propagates or | |
4122 | +// is known to always compare equal. | |
ad222a6b | 4123 | + |
be75205b PS |
4124 | +struct C |
4125 | +{ | |
4126 | + C& operator=(C&&) = delete; | |
4127 | +}; | |
ad222a6b | 4128 | + |
be75205b | 4129 | +void test01() |
ad222a6b | 4130 | +{ |
be75205b PS |
4131 | + std::vector<C> a; |
4132 | + a = std::vector<C>(); | |
4133 | +} | |
4134 | Index: libstdc++-v3/testsuite/23_containers/unordered_set/instantiation_neg.cc | |
4135 | =================================================================== | |
4136 | --- libstdc++-v3/testsuite/23_containers/unordered_set/instantiation_neg.cc (.../tags/gcc_4_7_0_release) (wersja 187906) | |
4137 | +++ libstdc++-v3/testsuite/23_containers/unordered_set/instantiation_neg.cc (.../branches/gcc-4_7-branch) (wersja 187906) | |
4138 | @@ -2,7 +2,7 @@ | |
4139 | // { dg-options "-std=gnu++0x" } | |
4140 | // { dg-require-normal-mode "" } | |
4141 | ||
4142 | -// Copyright (C) 2011 Free Software Foundation, Inc. | |
4143 | +// Copyright (C) 2011, 2012 Free Software Foundation, Inc. | |
4144 | // | |
4145 | // This file is part of the GNU ISO C++ Library. This library is free | |
4146 | // software; you can redistribute it and/or modify it under the | |
4147 | @@ -19,7 +19,7 @@ | |
4148 | // with this library; see the file COPYING3. If not see | |
4149 | // <http://www.gnu.org/licenses/>. | |
4150 | ||
4151 | -// { dg-error "static assertion failed" "" { target *-*-* } 185 } | |
4152 | +// { dg-error "static assertion failed" "" { target *-*-* } 186 } | |
4153 | ||
4154 | #include <unordered_set> | |
4155 | ||
4156 | Index: libstdc++-v3/testsuite/23_containers/unordered_set/requirements/53067.cc | |
4157 | =================================================================== | |
4158 | --- libstdc++-v3/testsuite/23_containers/unordered_set/requirements/53067.cc (.../tags/gcc_4_7_0_release) (wersja 0) | |
4159 | +++ libstdc++-v3/testsuite/23_containers/unordered_set/requirements/53067.cc (.../branches/gcc-4_7-branch) (wersja 187906) | |
4160 | @@ -0,0 +1,28 @@ | |
4161 | +// { dg-do compile } | |
4162 | +// { dg-options "-std=gnu++11" } | |
ad222a6b | 4163 | + |
be75205b PS |
4164 | +// Copyright (C) 2012 Free Software Foundation, Inc. |
4165 | +// | |
4166 | +// This file is part of the GNU ISO C++ Library. This library is free | |
4167 | +// software; you can redistribute it and/or modify it under the | |
4168 | +// terms of the GNU General Public License as published by the | |
4169 | +// Free Software Foundation; either version 3, or (at your option) | |
4170 | +// any later version. | |
ad222a6b | 4171 | + |
be75205b PS |
4172 | +// This library is distributed in the hope that it will be useful, |
4173 | +// but WITHOUT ANY WARRANTY; without Pred the implied warranty of | |
4174 | +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
4175 | +// GNU General Public License for more details. | |
ad222a6b | 4176 | + |
be75205b PS |
4177 | +// You should have received a copy of the GNU General Public License along |
4178 | +// with this library; see the file COPYING3. If not see | |
4179 | +// <http://www.gnu.org/licenses/>. | |
ad222a6b | 4180 | + |
be75205b PS |
4181 | +#include <unordered_set> |
4182 | +#include <functional> | |
ad222a6b | 4183 | + |
be75205b PS |
4184 | +void f() |
4185 | +{ | |
4186 | + std::unordered_set<int> Foo; | |
4187 | + ref(Foo); | |
ad222a6b | 4188 | +} |
be75205b PS |
4189 | Index: libstdc++-v3/testsuite/23_containers/unordered_set/requirements/52942.cc |
4190 | =================================================================== | |
4191 | --- libstdc++-v3/testsuite/23_containers/unordered_set/requirements/52942.cc (.../tags/gcc_4_7_0_release) (wersja 0) | |
4192 | +++ libstdc++-v3/testsuite/23_containers/unordered_set/requirements/52942.cc (.../branches/gcc-4_7-branch) (wersja 187906) | |
4193 | @@ -0,0 +1,37 @@ | |
4194 | +// { dg-do compile } | |
4195 | +// { dg-options "-std=gnu++11" } | |
ad222a6b | 4196 | + |
be75205b PS |
4197 | +// Copyright (C) 2012 Free Software Foundation, Inc. |
4198 | +// | |
4199 | +// This file is part of the GNU ISO C++ Library. This library is free | |
4200 | +// software; you can redistribute it and/or modify it under the | |
4201 | +// terms of the GNU General Public License as published by the | |
4202 | +// Free Software Foundation; either version 3, or (at your option) | |
4203 | +// any later version. | |
ad222a6b | 4204 | + |
be75205b PS |
4205 | +// This library is distributed in the hope that it will be useful, |
4206 | +// but WITHOUT ANY WARRANTY; without Pred the implied warranty of | |
4207 | +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
4208 | +// GNU General Public License for more details. | |
ad222a6b | 4209 | + |
be75205b PS |
4210 | +// You should have received a copy of the GNU General Public License along |
4211 | +// with this library; see the file COPYING3. If not see | |
4212 | +// <http://www.gnu.org/licenses/>. | |
ad222a6b | 4213 | + |
be75205b PS |
4214 | +#include <unordered_set> |
4215 | +#include <functional> | |
4216 | + | |
4217 | +struct TFoo {}; | |
4218 | + | |
4219 | +struct TFoo_hash | |
ad222a6b | 4220 | +{ |
be75205b PS |
4221 | + std::size_t operator()(const TFoo &) const { return 0; } |
4222 | +}; | |
ad222a6b | 4223 | + |
be75205b PS |
4224 | +void f1(std::unordered_set<TFoo, TFoo_hash> &) {} |
4225 | + | |
4226 | +void f2() | |
4227 | +{ | |
4228 | + std::unordered_set<TFoo, TFoo_hash> set1; | |
4229 | + std::bind(f1, std::ref(set1)); | |
ad222a6b | 4230 | +} |
be75205b | 4231 | Index: libstdc++-v3/testsuite/23_containers/deque/modifiers/emplace/52799.cc |
ad222a6b | 4232 | =================================================================== |
be75205b PS |
4233 | --- libstdc++-v3/testsuite/23_containers/deque/modifiers/emplace/52799.cc (.../tags/gcc_4_7_0_release) (wersja 0) |
4234 | +++ libstdc++-v3/testsuite/23_containers/deque/modifiers/emplace/52799.cc (.../branches/gcc-4_7-branch) (wersja 187906) | |
4235 | @@ -0,0 +1,28 @@ | |
4236 | +// { dg-options "-std=gnu++11" } | |
4237 | +// { dg-do compile } | |
ad222a6b | 4238 | + |
be75205b PS |
4239 | +// Copyright (C) 2012 Free Software Foundation, Inc. |
4240 | +// | |
4241 | +// This file is part of the GNU ISO C++ Library. This library is free | |
4242 | +// software; you can redistribute it and/or modify it under the | |
4243 | +// terms of the GNU General Public License as published by the | |
4244 | +// Free Software Foundation; either version 3, or (at your option) | |
4245 | +// any later version. | |
ad222a6b | 4246 | + |
be75205b PS |
4247 | +// This library is distributed in the hope that it will be useful, |
4248 | +// but WITHOUT ANY WARRANTY; without even the implied warranty of | |
4249 | +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
4250 | +// GNU General Public License for more details. | |
ad222a6b | 4251 | + |
be75205b PS |
4252 | +// You should have received a copy of the GNU General Public License along |
4253 | +// with this library; see the file COPYING3. If not see | |
4254 | +// <http://www.gnu.org/licenses/>. | |
ad222a6b | 4255 | + |
be75205b PS |
4256 | +#include <deque> |
4257 | + | |
4258 | +// libstdc++/52799 | |
4259 | +int main() | |
4260 | +{ | |
4261 | + std::deque<int> d; | |
4262 | + d.emplace(d.begin()); | |
4263 | +} | |
4264 | Index: libstdc++-v3/testsuite/23_containers/list/modifiers/emplace/52799.cc | |
ad222a6b | 4265 | =================================================================== |
be75205b PS |
4266 | --- libstdc++-v3/testsuite/23_containers/list/modifiers/emplace/52799.cc (.../tags/gcc_4_7_0_release) (wersja 0) |
4267 | +++ libstdc++-v3/testsuite/23_containers/list/modifiers/emplace/52799.cc (.../branches/gcc-4_7-branch) (wersja 187906) | |
4268 | @@ -0,0 +1,28 @@ | |
4269 | +// { dg-options "-std=gnu++11" } | |
4270 | +// { dg-do compile } | |
ad222a6b | 4271 | + |
be75205b PS |
4272 | +// Copyright (C) 2012 Free Software Foundation, Inc. |
4273 | +// | |
4274 | +// This file is part of the GNU ISO C++ Library. This library is free | |
4275 | +// software; you can redistribute it and/or modify it under the | |
4276 | +// terms of the GNU General Public License as published by the | |
4277 | +// Free Software Foundation; either version 3, or (at your option) | |
4278 | +// any later version. | |
ad222a6b | 4279 | + |
be75205b PS |
4280 | +// This library is distributed in the hope that it will be useful, |
4281 | +// but WITHOUT ANY WARRANTY; without even the implied warranty of | |
4282 | +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
4283 | +// GNU General Public License for more details. | |
ad222a6b | 4284 | + |
be75205b PS |
4285 | +// You should have received a copy of the GNU General Public License along |
4286 | +// with this library; see the file COPYING3. If not see | |
4287 | +// <http://www.gnu.org/licenses/>. | |
7b762fbe | 4288 | + |
be75205b | 4289 | +#include <list> |
7b762fbe | 4290 | + |
be75205b PS |
4291 | +// libstdc++/52799 |
4292 | +int main() | |
7b762fbe | 4293 | +{ |
be75205b PS |
4294 | + std::list<int> l; |
4295 | + l.emplace(l.begin()); | |
7b762fbe | 4296 | +} |
be75205b PS |
4297 | Index: libstdc++-v3/testsuite/23_containers/unordered_multiset/insert/53115.cc |
4298 | =================================================================== | |
4299 | --- libstdc++-v3/testsuite/23_containers/unordered_multiset/insert/53115.cc (.../tags/gcc_4_7_0_release) (wersja 0) | |
4300 | +++ libstdc++-v3/testsuite/23_containers/unordered_multiset/insert/53115.cc (.../branches/gcc-4_7-branch) (wersja 187906) | |
4301 | @@ -0,0 +1,101 @@ | |
4302 | +// { dg-options "-std=gnu++11" } | |
4303 | +// | |
4304 | +// Copyright (C) 2012 Free Software Foundation, Inc. | |
4305 | +// | |
4306 | +// This file is part of the GNU ISO C++ Library. This library is free | |
4307 | +// software; you can redistribute it and/or modify it under the | |
4308 | +// terms of the GNU General Public License as published by the | |
4309 | +// Free Software Foundation; either version 3, or (at your option) | |
4310 | +// any later version. | |
4311 | +// | |
4312 | +// This library is distributed in the hope that it will be useful, | |
4313 | +// but WITHOUT ANY WARRANTY; without even the implied warranty of | |
4314 | +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
4315 | +// GNU General Public License for more details. | |
4316 | +// | |
4317 | +// You should have received a copy of the GNU General Public License along | |
4318 | +// with this library; see the file COPYING3. If not see | |
4319 | +// <http://www.gnu.org/licenses/>. | |
7b762fbe | 4320 | + |
be75205b PS |
4321 | +#include <unordered_set> |
4322 | +#include <testsuite_hooks.h> | |
7b762fbe | 4323 | + |
be75205b | 4324 | +namespace |
7b762fbe | 4325 | +{ |
be75205b PS |
4326 | + std::size_t |
4327 | + get_nb_bucket_elems(const std::unordered_multiset<int>& us) | |
4328 | + { | |
4329 | + std::size_t nb = 0; | |
4330 | + for (std::size_t b = 0; b != us.bucket_count(); ++b) | |
4331 | + nb += us.bucket_size(b); | |
4332 | + return nb; | |
4333 | + } | |
7b762fbe AM |
4334 | +} |
4335 | + | |
be75205b | 4336 | +void test01() |
7b762fbe | 4337 | +{ |
be75205b PS |
4338 | + using namespace std; |
4339 | + bool test __attribute__((unused)) = true; | |
ad222a6b | 4340 | + |
be75205b PS |
4341 | + std::unordered_multiset<int> mms; |
4342 | + mms.insert(10); | |
4343 | + VERIFY( mms.size() == 1 ); | |
4344 | + VERIFY( std::distance(mms.begin(), mms.end()) == mms.size() ); | |
4345 | + VERIFY( get_nb_bucket_elems(mms) == mms.size() ); | |
ad222a6b | 4346 | + |
be75205b PS |
4347 | + mms.insert(10); |
4348 | + VERIFY( mms.size() == 2 ); | |
4349 | + VERIFY( std::distance(mms.begin(), mms.end()) == mms.size() ); | |
4350 | + VERIFY( get_nb_bucket_elems(mms) == mms.size() ); | |
ad222a6b | 4351 | + |
be75205b PS |
4352 | + mms.insert(10); |
4353 | + VERIFY( mms.size() == 3 ); | |
4354 | + VERIFY( std::distance(mms.begin(), mms.end()) == mms.size() ); | |
4355 | + VERIFY( get_nb_bucket_elems(mms) == mms.size() ); | |
ad222a6b | 4356 | + |
be75205b PS |
4357 | + mms.insert(10); |
4358 | + VERIFY( mms.size() == 4 ); | |
4359 | + VERIFY( std::distance(mms.begin(), mms.end()) == mms.size() ); | |
4360 | + VERIFY( get_nb_bucket_elems(mms) == mms.size() ); | |
ad222a6b | 4361 | + |
be75205b PS |
4362 | + mms.insert(10); |
4363 | + VERIFY( mms.size() == 5 ); | |
4364 | + VERIFY( std::distance(mms.begin(), mms.end()) == mms.size() ); | |
4365 | + VERIFY( get_nb_bucket_elems(mms) == mms.size() ); | |
ad222a6b | 4366 | + |
be75205b PS |
4367 | + mms.insert(24); |
4368 | + VERIFY( mms.size() == 6 ); | |
4369 | + VERIFY( std::distance(mms.begin(), mms.end()) == mms.size() ); | |
4370 | + VERIFY( get_nb_bucket_elems(mms) == mms.size() ); | |
ad222a6b | 4371 | + |
be75205b PS |
4372 | + mms.insert(25); |
4373 | + VERIFY( mms.size() == 7 ); | |
4374 | + VERIFY( std::distance(mms.begin(), mms.end()) == mms.size() ); | |
4375 | + VERIFY( get_nb_bucket_elems(mms) == mms.size() ); | |
ad222a6b | 4376 | + |
be75205b PS |
4377 | + mms.insert(2); |
4378 | + VERIFY( mms.size() == 8 ); | |
4379 | + VERIFY( std::distance(mms.begin(), mms.end()) == mms.size() ); | |
4380 | + VERIFY( get_nb_bucket_elems(mms) == mms.size() ); | |
ad222a6b | 4381 | + |
be75205b PS |
4382 | + mms.insert(2); |
4383 | + VERIFY( mms.size() == 9 ); | |
4384 | + VERIFY( std::distance(mms.begin(), mms.end()) == mms.size() ); | |
4385 | + VERIFY( get_nb_bucket_elems(mms) == mms.size() ); | |
ad222a6b | 4386 | + |
be75205b PS |
4387 | + mms.insert(1); |
4388 | + VERIFY( mms.size() == 10 ); | |
4389 | + VERIFY( std::distance(mms.begin(), mms.end()) == mms.size() ); | |
4390 | + VERIFY( get_nb_bucket_elems(mms) == mms.size() ); | |
ad222a6b | 4391 | + |
be75205b PS |
4392 | + mms.insert(10); |
4393 | + VERIFY( mms.size() == 11 ); | |
4394 | + VERIFY( std::distance(mms.begin(), mms.end()) == mms.size() ); | |
4395 | + VERIFY( get_nb_bucket_elems(mms) == mms.size() ); | |
4396 | +} | |
ad222a6b | 4397 | + |
be75205b PS |
4398 | +int main() |
4399 | +{ | |
4400 | + test01(); | |
4401 | + return 0; | |
4402 | +} | |
4403 | Index: libstdc++-v3/testsuite/23_containers/unordered_multiset/insert/52476.cc | |
4404 | =================================================================== | |
4405 | --- libstdc++-v3/testsuite/23_containers/unordered_multiset/insert/52476.cc (.../tags/gcc_4_7_0_release) (wersja 0) | |
4406 | +++ libstdc++-v3/testsuite/23_containers/unordered_multiset/insert/52476.cc (.../branches/gcc-4_7-branch) (wersja 187906) | |
4407 | @@ -0,0 +1,77 @@ | |
4408 | +// { dg-options "-std=gnu++0x" } | |
4409 | +// | |
4410 | +// Copyright (C) 2012 Free Software Foundation, Inc. | |
4411 | +// | |
4412 | +// This file is part of the GNU ISO C++ Library. This library is free | |
4413 | +// software; you can redistribute it and/or modify it under the | |
4414 | +// terms of the GNU General Public License as published by the | |
4415 | +// Free Software Foundation; either version 3, or (at your option) | |
4416 | +// any later version. | |
4417 | +// | |
4418 | +// This library is distributed in the hope that it will be useful, | |
4419 | +// but WITHOUT ANY WARRANTY; without even the implied warranty of | |
4420 | +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
4421 | +// GNU General Public License for more details. | |
4422 | +// | |
4423 | +// You should have received a copy of the GNU General Public License along | |
4424 | +// with this library; see the file COPYING3. If not see | |
4425 | +// <http://www.gnu.org/licenses/>. | |
ad222a6b | 4426 | + |
be75205b PS |
4427 | +#include <unordered_set> |
4428 | +#include <vector> | |
4429 | +#include <algorithm> | |
4430 | +#include <testsuite_hooks.h> | |
ad222a6b | 4431 | + |
be75205b PS |
4432 | +namespace |
4433 | +{ | |
4434 | + struct pair_hash | |
4435 | + { | |
4436 | + std::size_t | |
4437 | + operator()(const std::pair<int, int>& p) const noexcept | |
4438 | + { return std::hash<int>()(p.first); } | |
4439 | + }; | |
7b762fbe | 4440 | + |
be75205b PS |
4441 | + struct pair_equal_to |
4442 | + { | |
4443 | + bool | |
4444 | + operator()(const std::pair<int, int>& x, | |
4445 | + const std::pair<int, int>& y) const noexcept | |
4446 | + { return x.first == y.first; } | |
4447 | + }; | |
4448 | +} | |
7b762fbe | 4449 | + |
be75205b PS |
4450 | +void test01() |
4451 | +{ | |
4452 | + using namespace std; | |
4453 | + bool test __attribute__((unused)) = true; | |
4454 | + | |
4455 | + unordered_multiset<pair<int, int>, pair_hash, pair_equal_to> mset; | |
4456 | + vector<int> values; | |
7b762fbe | 4457 | + |
be75205b PS |
4458 | + size_t nb_bkts = mset.bucket_count(); |
4459 | + int i = 0; | |
4460 | + for (;; ++i) | |
4461 | + { | |
4462 | + mset.insert(make_pair(0, i)); | |
4463 | + if (mset.bucket_count() != nb_bkts) | |
4464 | + // Container got rehash | |
4465 | + break; | |
4466 | + values.clear(); | |
4467 | + transform(mset.begin(), mset.end(), back_inserter(values), | |
4468 | + [](const pair<int, int>& p) { return p.second; }); | |
4469 | + } | |
ad222a6b | 4470 | + |
be75205b PS |
4471 | + vector<int> rehash_values; |
4472 | + transform(mset.begin(), mset.end(), back_inserter(rehash_values), | |
4473 | + [](const pair<int, int>& p) { return p.second; }); | |
4474 | + // Remove the value that result in a rehash | |
4475 | + rehash_values.erase(remove(rehash_values.begin(), rehash_values.end(), i)); | |
7b762fbe | 4476 | + |
be75205b PS |
4477 | + VERIFY( rehash_values == values ); |
4478 | +} | |
4479 | + | |
4480 | +int main() | |
4481 | +{ | |
4482 | + test01(); | |
4483 | + return 0; | |
4484 | +} | |
4485 | Index: libstdc++-v3/testsuite/20_util/shared_ptr/cons/43820_neg.cc | |
4486 | =================================================================== | |
4487 | --- libstdc++-v3/testsuite/20_util/shared_ptr/cons/43820_neg.cc (.../tags/gcc_4_7_0_release) (wersja 187906) | |
4488 | +++ libstdc++-v3/testsuite/20_util/shared_ptr/cons/43820_neg.cc (.../branches/gcc-4_7-branch) (wersja 187906) | |
4489 | @@ -32,9 +32,9 @@ | |
4490 | { | |
4491 | X* px = 0; | |
4492 | std::shared_ptr<X> p1(px); // { dg-error "here" } | |
4493 | - // { dg-error "incomplete" "" { target *-*-* } 771 } | |
4494 | + // { dg-error "incomplete" "" { target *-*-* } 775 } | |
7b762fbe | 4495 | |
be75205b PS |
4496 | std::shared_ptr<X> p9(ap()); // { dg-error "here" } |
4497 | - // { dg-error "incomplete" "" { target *-*-* } 865 } | |
4498 | + // { dg-error "incomplete" "" { target *-*-* } 869 } | |
4499 | ||
4500 | } | |
4501 | Index: libstdc++-v3/testsuite/20_util/shared_ptr/cons/52924.cc | |
ad222a6b | 4502 | =================================================================== |
be75205b PS |
4503 | --- libstdc++-v3/testsuite/20_util/shared_ptr/cons/52924.cc (.../tags/gcc_4_7_0_release) (wersja 0) |
4504 | +++ libstdc++-v3/testsuite/20_util/shared_ptr/cons/52924.cc (.../branches/gcc-4_7-branch) (wersja 187906) | |
4505 | @@ -0,0 +1,44 @@ | |
4506 | +// { dg-options "-std=gnu++0x" } | |
ad222a6b | 4507 | +// { dg-do compile } |
ad222a6b | 4508 | + |
be75205b PS |
4509 | +// Copyright (C) 2012 Free Software Foundation |
4510 | +// | |
4511 | +// This file is part of the GNU ISO C++ Library. This library is free | |
4512 | +// software; you can redistribute it and/or modify it under the | |
4513 | +// terms of the GNU General Public License as published by the | |
4514 | +// Free Software Foundation; either version 3, or (at your option) | |
4515 | +// any later version. | |
ad222a6b | 4516 | + |
be75205b PS |
4517 | +// This library is distributed in the hope that it will be useful, |
4518 | +// but WITHOUT ANY WARRANTY; without even the implied warranty of | |
4519 | +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
4520 | +// GNU General Public License for more details. | |
7b762fbe | 4521 | + |
be75205b PS |
4522 | +// You should have received a copy of the GNU General Public License along |
4523 | +// with this library; see the file COPYING3. If not see | |
4524 | +// <http://www.gnu.org/licenses/>. | |
7b762fbe | 4525 | + |
be75205b | 4526 | +#include <memory> |
7b762fbe | 4527 | + |
be75205b | 4528 | +// libstdc++/52924 |
ad222a6b | 4529 | + |
be75205b PS |
4530 | +struct A { } a; |
4531 | + | |
4532 | +struct D { | |
4533 | + ~D() noexcept(false) { } | |
4534 | + void operator()(A*) { } | |
4535 | +} d; | |
4536 | + | |
4537 | +auto sp = std::shared_ptr<A>(&a, d); | |
4538 | + | |
4539 | +template<typename T> | |
4540 | +struct Alloc : std::allocator<T> | |
ad222a6b | 4541 | +{ |
be75205b PS |
4542 | + Alloc() = default; |
4543 | + ~Alloc() noexcept(false) { } | |
4544 | + template<typename U> Alloc(const Alloc<U>&) { } | |
ad222a6b | 4545 | +}; |
be75205b PS |
4546 | + |
4547 | +Alloc<A> al; | |
4548 | + | |
4549 | +auto as = std::allocate_shared<A>(al); | |
4550 | Index: libstdc++-v3/testsuite/20_util/scoped_allocator/1.cc | |
ad222a6b | 4551 | =================================================================== |
be75205b PS |
4552 | --- libstdc++-v3/testsuite/20_util/scoped_allocator/1.cc (.../tags/gcc_4_7_0_release) (wersja 187906) |
4553 | +++ libstdc++-v3/testsuite/20_util/scoped_allocator/1.cc (.../branches/gcc-4_7-branch) (wersja 187906) | |
4554 | @@ -1,6 +1,6 @@ | |
4555 | // { dg-options "-std=gnu++0x" } | |
ad222a6b | 4556 | |
be75205b PS |
4557 | -// Copyright (C) 2011 Free Software Foundation, Inc. |
4558 | +// Copyright (C) 2011, 2012 Free Software Foundation, Inc. | |
4559 | // | |
4560 | // This file is part of the GNU ISO C++ Library. This library is free | |
4561 | // software; you can redistribute it and/or modify it under the | |
4562 | @@ -33,7 +33,7 @@ | |
ad222a6b | 4563 | |
be75205b PS |
4564 | Element(const allocator_type& a = allocator_type()) : alloc(a) { } |
4565 | ||
4566 | - Element(std::allocator_arg_t, const allocator_type& a, int i = 0) | |
4567 | + Element(std::allocator_arg_t, const allocator_type& a, int = 0) | |
4568 | : alloc(a) { } | |
4569 | ||
4570 | Element(std::allocator_arg_t, const allocator_type& a, const Element&) | |
4571 | @@ -53,6 +53,7 @@ | |
4572 | alloc1_type a1(1); | |
4573 | Element e; | |
4574 | EltVec ev1(1, e, a1); | |
4575 | + VERIFY( ev1.get_allocator().get_personality() == 1 ); | |
4576 | VERIFY( ev1[0].get_allocator().get_personality() == 1 ); | |
4577 | } | |
4578 | ||
4579 | @@ -60,14 +61,16 @@ | |
4580 | { | |
4581 | bool test __attribute((unused)) = false; | |
4582 | ||
4583 | - typedef std::vector<Element, Element::allocator_type> EltVec; | |
4584 | + typedef std::scoped_allocator_adaptor<Element::allocator_type> inner_alloc_type; | |
4585 | ||
4586 | - typedef std::scoped_allocator_adaptor<EltVec::allocator_type, | |
4587 | - Element::allocator_type> alloc_type; | |
4588 | + typedef std::vector<Element, inner_alloc_type> EltVec; | |
4589 | ||
4590 | + typedef std::scoped_allocator_adaptor<Element::allocator_type, | |
4591 | + Element::allocator_type> alloc_type; | |
4592 | + | |
4593 | typedef std::vector<EltVec, alloc_type> EltVecVec; | |
4594 | ||
4595 | - alloc_type a(1, 2); | |
4596 | + alloc_type a(1, Element::allocator_type(2)); // outer=1, inner=2 | |
4597 | Element e; | |
4598 | EltVec ev(1, e); | |
4599 | EltVecVec evv(1, ev, a); | |
4600 | @@ -76,7 +79,7 @@ | |
4601 | VERIFY( evv[0].get_allocator().get_personality() == 2 ); | |
4602 | VERIFY( evv[0][0].get_allocator().get_personality() == 2 ); | |
4603 | ||
4604 | - alloc_type a2(3, 4); | |
4605 | + alloc_type a2(3, Element::allocator_type(4)); // outer=3, inner=4 | |
4606 | ||
4607 | EltVecVec evv2(evv, a2); // copy with a different allocator | |
4608 | ||
4609 | @@ -96,4 +99,5 @@ | |
4610 | int main() | |
4611 | { | |
4612 | test01(); | |
4613 | + test02(); | |
4614 | } | |
4615 | Index: libstdc++-v3/testsuite/20_util/pointer_traits/requirements/typedefs.cc | |
ad222a6b | 4616 | =================================================================== |
be75205b PS |
4617 | --- libstdc++-v3/testsuite/20_util/pointer_traits/requirements/typedefs.cc (.../tags/gcc_4_7_0_release) (wersja 187906) |
4618 | +++ libstdc++-v3/testsuite/20_util/pointer_traits/requirements/typedefs.cc (.../branches/gcc-4_7-branch) (wersja 187906) | |
4619 | @@ -32,6 +32,7 @@ | |
4620 | typedef typename test_type::pointer pointer; | |
4621 | typedef typename test_type::element_type element_type; | |
4622 | typedef typename test_type::difference_type difference_type; | |
4623 | + typedef typename test_type::template rebind<char> rebind_type; | |
4624 | } | |
4625 | ||
4626 | int main() | |
4627 | Index: libstdc++-v3/config/abi/post/sparc-linux-gnu/baseline_symbols.txt | |
ad222a6b | 4628 | =================================================================== |
be75205b PS |
4629 | --- libstdc++-v3/config/abi/post/sparc-linux-gnu/baseline_symbols.txt (.../tags/gcc_4_7_0_release) (wersja 187906) |
4630 | +++ libstdc++-v3/config/abi/post/sparc-linux-gnu/baseline_symbols.txt (.../branches/gcc-4_7-branch) (wersja 187906) | |
4631 | @@ -43,6 +43,10 @@ | |
4632 | FUNC:_ZN11__gnu_debug19_Safe_sequence_base18_M_detach_singularEv@@GLIBCXX_3.4 | |
4633 | FUNC:_ZN11__gnu_debug19_Safe_sequence_base22_M_revalidate_singularEv@@GLIBCXX_3.4 | |
4634 | FUNC:_ZN11__gnu_debug19_Safe_sequence_base7_M_swapERS0_@@GLIBCXX_3.4 | |
4635 | +FUNC:_ZN11__gnu_debug25_Safe_local_iterator_base9_M_attachEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.17 | |
4636 | +FUNC:_ZN11__gnu_debug25_Safe_local_iterator_base9_M_detachEv@@GLIBCXX_3.4.17 | |
4637 | +FUNC:_ZN11__gnu_debug30_Safe_unordered_container_base13_M_detach_allEv@@GLIBCXX_3.4.17 | |
4638 | +FUNC:_ZN11__gnu_debug30_Safe_unordered_container_base7_M_swapERS0_@@GLIBCXX_3.4.17 | |
4639 | FUNC:_ZN14__gnu_parallel9_Settings3getEv@@GLIBCXX_3.4.10 | |
4640 | FUNC:_ZN14__gnu_parallel9_Settings3setERS0_@@GLIBCXX_3.4.10 | |
4641 | FUNC:_ZN9__gnu_cxx12__atomic_addEPVii@@GLIBCXX_3.4 | |
4642 | @@ -877,6 +881,7 @@ | |
4643 | FUNC:_ZNSaIwEC2Ev@@GLIBCXX_3.4 | |
4644 | FUNC:_ZNSaIwED1Ev@@GLIBCXX_3.4 | |
4645 | FUNC:_ZNSaIwED2Ev@@GLIBCXX_3.4 | |
4646 | +FUNC:_ZNSbIwSt11char_traitsIwESaIwEE10_S_compareEjj@@GLIBCXX_3.4.16 | |
4647 | FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_Alloc_hiderC1EPwRKS1_@@GLIBCXX_3.4 | |
4648 | FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_Alloc_hiderC2EPwRKS1_@@GLIBCXX_3.4 | |
4649 | FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_M_leak_hardEv@@GLIBCXX_3.4 | |
4650 | @@ -961,6 +966,7 @@ | |
4651 | FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEjjRKS2_jj@@GLIBCXX_3.4 | |
4652 | FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEjjjw@@GLIBCXX_3.4 | |
4653 | FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7reserveEj@@GLIBCXX_3.4 | |
4654 | +FUNC:_ZNSbIwSt11char_traitsIwESaIwEE8pop_backEv@@GLIBCXX_3.4.17 | |
4655 | FUNC:_ZNSbIwSt11char_traitsIwESaIwEE9_M_assignEPwjw@@GLIBCXX_3.4.5 | |
4656 | FUNC:_ZNSbIwSt11char_traitsIwESaIwEE9_M_assignEPwjw@GLIBCXX_3.4 | |
4657 | FUNC:_ZNSbIwSt11char_traitsIwESaIwEE9_M_mutateEjjj@@GLIBCXX_3.4 | |
4658 | @@ -1116,6 +1122,7 @@ | |
4659 | FUNC:_ZNSolsEt@@GLIBCXX_3.4 | |
4660 | FUNC:_ZNSolsEx@@GLIBCXX_3.4 | |
4661 | FUNC:_ZNSolsEy@@GLIBCXX_3.4 | |
4662 | +FUNC:_ZNSs10_S_compareEjj@@GLIBCXX_3.4.16 | |
4663 | FUNC:_ZNSs12_Alloc_hiderC1EPcRKSaIcE@@GLIBCXX_3.4 | |
4664 | FUNC:_ZNSs12_Alloc_hiderC2EPcRKSaIcE@@GLIBCXX_3.4 | |
4665 | FUNC:_ZNSs12_M_leak_hardEv@@GLIBCXX_3.4 | |
4666 | @@ -1200,6 +1207,7 @@ | |
4667 | FUNC:_ZNSs7replaceEjjRKSsjj@@GLIBCXX_3.4 | |
4668 | FUNC:_ZNSs7replaceEjjjc@@GLIBCXX_3.4 | |
4669 | FUNC:_ZNSs7reserveEj@@GLIBCXX_3.4 | |
4670 | +FUNC:_ZNSs8pop_backEv@@GLIBCXX_3.4.17 | |
4671 | FUNC:_ZNSs9_M_assignEPcjc@@GLIBCXX_3.4.5 | |
4672 | FUNC:_ZNSs9_M_assignEPcjc@GLIBCXX_3.4 | |
4673 | FUNC:_ZNSs9_M_mutateEjjj@@GLIBCXX_3.4 | |
4674 | @@ -1433,6 +1441,9 @@ | |
4675 | FUNC:_ZNSt13__future_base12_Result_baseD0Ev@@GLIBCXX_3.4.15 | |
4676 | FUNC:_ZNSt13__future_base12_Result_baseD1Ev@@GLIBCXX_3.4.15 | |
4677 | FUNC:_ZNSt13__future_base12_Result_baseD2Ev@@GLIBCXX_3.4.15 | |
4678 | +FUNC:_ZNSt13__future_base19_Async_state_commonD0Ev@@GLIBCXX_3.4.17 | |
4679 | +FUNC:_ZNSt13__future_base19_Async_state_commonD1Ev@@GLIBCXX_3.4.17 | |
4680 | +FUNC:_ZNSt13__future_base19_Async_state_commonD2Ev@@GLIBCXX_3.4.17 | |
4681 | FUNC:_ZNSt13bad_exceptionD0Ev@@GLIBCXX_3.4 | |
4682 | FUNC:_ZNSt13bad_exceptionD1Ev@@GLIBCXX_3.4 | |
4683 | FUNC:_ZNSt13bad_exceptionD2Ev@@GLIBCXX_3.4 | |
4684 | @@ -1741,6 +1752,8 @@ | |
4685 | FUNC:_ZNSt15__exception_ptrneERKNS_13exception_ptrES2_@@CXXABI_1.3.3 | |
4686 | FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE10pubseekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4 | |
4687 | FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE10pubseekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4 | |
4688 | +FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE12__safe_gbumpEi@@GLIBCXX_3.4.16 | |
4689 | +FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE12__safe_pbumpEi@@GLIBCXX_3.4.16 | |
4690 | FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE4setgEPcS3_S3_@@GLIBCXX_3.4 | |
4691 | FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE4setpEPcS3_@@GLIBCXX_3.4 | |
4692 | FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE4syncEv@@GLIBCXX_3.4 | |
4693 | @@ -1780,6 +1793,8 @@ | |
4694 | FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEEaSERKS2_@@GLIBCXX_3.4 | |
4695 | FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE10pubseekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4 | |
4696 | FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE10pubseekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4 | |
4697 | +FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE12__safe_gbumpEi@@GLIBCXX_3.4.16 | |
4698 | +FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE12__safe_pbumpEi@@GLIBCXX_3.4.16 | |
4699 | FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE4setgEPwS3_S3_@@GLIBCXX_3.4 | |
4700 | FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE4setpEPwS3_@@GLIBCXX_3.4 | |
4701 | FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE4syncEv@@GLIBCXX_3.4 | |
4702 | @@ -1824,6 +1839,7 @@ | |
4703 | FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE7_M_syncEPcjj@@GLIBCXX_3.4 | |
4704 | FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4 | |
4705 | FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4 | |
4706 | +FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE8_M_pbumpEPcS4_x@@GLIBCXX_3.4.16 | |
4707 | FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE8overflowEi@@GLIBCXX_3.4 | |
4708 | FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE9pbackfailEi@@GLIBCXX_3.4 | |
4709 | FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE9showmanycEv@@GLIBCXX_3.4.6 | |
4710 | @@ -1841,6 +1857,7 @@ | |
4711 | FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE7_M_syncEPwjj@@GLIBCXX_3.4 | |
4712 | FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4 | |
4713 | FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4 | |
4714 | +FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE8_M_pbumpEPwS4_x@@GLIBCXX_3.4.16 | |
4715 | FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE8overflowEj@@GLIBCXX_3.4 | |
4716 | FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE9pbackfailEj@@GLIBCXX_3.4 | |
4717 | FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE9showmanycEv@@GLIBCXX_3.4.6 | |
4718 | @@ -2145,6 +2162,7 @@ | |
4719 | FUNC:_ZNSt6localeD2Ev@@GLIBCXX_3.4 | |
4720 | FUNC:_ZNSt6localeaSERKS_@@GLIBCXX_3.4 | |
4721 | FUNC:_ZNSt6thread15_M_start_threadESt10shared_ptrINS_10_Impl_baseEE@@GLIBCXX_3.4.11 | |
4722 | +FUNC:_ZNSt6thread20hardware_concurrencyEv@@GLIBCXX_3.4.17 | |
4723 | FUNC:_ZNSt6thread4joinEv@@GLIBCXX_3.4.11 | |
4724 | FUNC:_ZNSt6thread6detachEv@@GLIBCXX_3.4.11 | |
4725 | FUNC:_ZNSt7codecvtIcc11__mbstate_tEC1EP15__locale_structj@@GLIBCXX_3.4 | |
4726 | @@ -2640,14 +2658,17 @@ | |
4727 | FUNC:_ZnwjRKSt9nothrow_t@@GLIBCXX_3.4 | |
4728 | FUNC:__atomic_flag_for_address@@GLIBCXX_3.4.11 | |
4729 | FUNC:__atomic_flag_wait_explicit@@GLIBCXX_3.4.11 | |
4730 | +FUNC:__cxa_allocate_dependent_exception@@CXXABI_1.3.6 | |
4731 | FUNC:__cxa_allocate_exception@@CXXABI_1.3 | |
4732 | FUNC:__cxa_bad_cast@@CXXABI_1.3 | |
4733 | FUNC:__cxa_bad_typeid@@CXXABI_1.3 | |
4734 | FUNC:__cxa_begin_catch@@CXXABI_1.3 | |
4735 | FUNC:__cxa_call_unexpected@@CXXABI_1.3 | |
4736 | FUNC:__cxa_current_exception_type@@CXXABI_1.3 | |
4737 | +FUNC:__cxa_deleted_virtual@@CXXABI_1.3.6 | |
4738 | FUNC:__cxa_demangle@@CXXABI_1.3 | |
4739 | FUNC:__cxa_end_catch@@CXXABI_1.3 | |
4740 | +FUNC:__cxa_free_dependent_exception@@CXXABI_1.3.6 | |
4741 | FUNC:__cxa_free_exception@@CXXABI_1.3 | |
4742 | FUNC:__cxa_get_exception_ptr@@CXXABI_1.3.1 | |
4743 | FUNC:__cxa_get_globals@@CXXABI_1.3 | |
4744 | @@ -2658,6 +2679,7 @@ | |
4745 | FUNC:__cxa_pure_virtual@@CXXABI_1.3 | |
4746 | FUNC:__cxa_rethrow@@CXXABI_1.3 | |
4747 | FUNC:__cxa_throw@@CXXABI_1.3 | |
4748 | +FUNC:__cxa_tm_cleanup@@CXXABI_TM_1 | |
4749 | FUNC:__cxa_vec_cctor@@CXXABI_1.3 | |
4750 | FUNC:__cxa_vec_cleanup@@CXXABI_1.3 | |
4751 | FUNC:__cxa_vec_ctor@@CXXABI_1.3 | |
4752 | @@ -2701,7 +2723,9 @@ | |
4753 | OBJECT:0:CXXABI_1.3.3 | |
4754 | OBJECT:0:CXXABI_1.3.4 | |
4755 | OBJECT:0:CXXABI_1.3.5 | |
4756 | +OBJECT:0:CXXABI_1.3.6 | |
4757 | OBJECT:0:CXXABI_LDBL_1.3 | |
4758 | +OBJECT:0:CXXABI_TM_1 | |
4759 | OBJECT:0:GLIBCXX_3.4 | |
4760 | OBJECT:0:GLIBCXX_3.4.1 | |
4761 | OBJECT:0:GLIBCXX_3.4.10 | |
4762 | @@ -2710,6 +2734,8 @@ | |
4763 | OBJECT:0:GLIBCXX_3.4.13 | |
4764 | OBJECT:0:GLIBCXX_3.4.14 | |
4765 | OBJECT:0:GLIBCXX_3.4.15 | |
4766 | +OBJECT:0:GLIBCXX_3.4.16 | |
4767 | +OBJECT:0:GLIBCXX_3.4.17 | |
4768 | OBJECT:0:GLIBCXX_3.4.2 | |
4769 | OBJECT:0:GLIBCXX_3.4.3 | |
4770 | OBJECT:0:GLIBCXX_3.4.4 | |
4771 | @@ -2737,6 +2763,7 @@ | |
4772 | OBJECT:12:_ZTIN9__gnu_cxx13stdio_filebufIwSt11char_traitsIwEEE@@GLIBCXX_3.4 | |
4773 | OBJECT:12:_ZTIN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEE@@GLIBCXX_3.4 | |
4774 | OBJECT:12:_ZTIN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEE@@GLIBCXX_3.4 | |
4775 | +OBJECT:12:_ZTINSt13__future_base19_Async_state_commonE@@GLIBCXX_3.4.17 | |
4776 | OBJECT:12:_ZTINSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@@GLIBCXX_LDBL_3.4 | |
4777 | OBJECT:12:_ZTINSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@@GLIBCXX_LDBL_3.4 | |
4778 | OBJECT:12:_ZTINSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE@@GLIBCXX_LDBL_3.4 | |
4779 | @@ -3245,6 +3272,7 @@ | |
4780 | OBJECT:20:_ZTSSt15underflow_error@@GLIBCXX_3.4 | |
4781 | OBJECT:20:_ZTVNSt13__future_base11_State_baseE@@GLIBCXX_3.4.15 | |
4782 | OBJECT:20:_ZTVNSt13__future_base12_Result_baseE@@GLIBCXX_3.4.15 | |
4783 | +OBJECT:20:_ZTVNSt13__future_base19_Async_state_commonE@@GLIBCXX_3.4.17 | |
4784 | OBJECT:20:_ZTVNSt8ios_base7failureE@@GLIBCXX_3.4 | |
4785 | OBJECT:20:_ZTVSt10bad_typeid@@GLIBCXX_3.4 | |
4786 | OBJECT:20:_ZTVSt10lock_error@@GLIBCXX_3.4.11 | |
4787 | @@ -3437,6 +3465,7 @@ | |
4788 | OBJECT:40:_ZTVSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4 | |
4789 | OBJECT:40:_ZTVSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4 | |
4790 | OBJECT:40:_ZTVSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4 | |
4791 | +OBJECT:41:_ZTSNSt13__future_base19_Async_state_commonE@@GLIBCXX_3.4.17 | |
4792 | OBJECT:41:_ZTSSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4 | |
4793 | OBJECT:41:_ZTSSt15basic_streambufIwSt11char_traitsIwEE@@GLIBCXX_3.4 | |
4794 | OBJECT:44:_ZTVN10__cxxabiv117__class_type_infoE@@CXXABI_1.3 | |
4795 | Index: libstdc++-v3/acinclude.m4 | |
7b762fbe | 4796 | =================================================================== |
be75205b PS |
4797 | --- libstdc++-v3/acinclude.m4 (.../tags/gcc_4_7_0_release) (wersja 187906) |
4798 | +++ libstdc++-v3/acinclude.m4 (.../branches/gcc-4_7-branch) (wersja 187906) | |
4799 | @@ -2955,11 +2955,10 @@ | |
4800 | CXXFLAGS="$old_CXXFLAGS" | |
4801 | AC_LANG_RESTORE | |
4802 | ||
4803 | - # Set atomicity_dir to builtins if all of above tests pass. | |
4804 | + # Set atomicity_dir to builtins if all but the long long test above passes. | |
4805 | if test $glibcxx_cv_atomic_bool = yes \ | |
4806 | && test $glibcxx_cv_atomic_short = yes \ | |
4807 | - && test $glibcxx_cv_atomic_int = yes \ | |
4808 | - && test $glibcxx_cv_atomic_long_long = yes ; then | |
4809 | + && test $glibcxx_cv_atomic_int = yes; then | |
4810 | AC_DEFINE(_GLIBCXX_ATOMIC_BUILTINS, 1, | |
4811 | [Define if the compiler supports C++11 atomics.]) | |
4812 | atomicity_dir=cpu/generic/atomicity_builtins | |
4813 | Index: libiberty/ChangeLog | |
4814 | =================================================================== | |
4815 | --- libiberty/ChangeLog (.../tags/gcc_4_7_0_release) (wersja 187906) | |
4816 | +++ libiberty/ChangeLog (.../branches/gcc-4_7-branch) (wersja 187906) | |
4817 | @@ -1,3 +1,12 @@ | |
4818 | +2012-03-24 H.J. Lu <hongjiu.lu@intel.com> | |
ad222a6b | 4819 | + |
be75205b | 4820 | + * testsuite/demangle-expected: Fix a typo. |
ad222a6b | 4821 | + |
be75205b | 4822 | +2012-03-22 Jason Merrill <jason@redhat.com> |
ad222a6b | 4823 | + |
be75205b PS |
4824 | + * cp-demangle.c (cplus_demangle_operators): Add li. |
4825 | + (d_unqualified_name): Handle it specially. | |
ad222a6b | 4826 | + |
be75205b PS |
4827 | 2012-03-22 Release Manager |
4828 | ||
4829 | * GCC 4.7.0 released. | |
4830 | Index: libiberty/testsuite/demangle-expected | |
4831 | =================================================================== | |
4832 | --- libiberty/testsuite/demangle-expected (.../tags/gcc_4_7_0_release) (wersja 187906) | |
4833 | +++ libiberty/testsuite/demangle-expected (.../branches/gcc-4_7-branch) (wersja 187906) | |
4834 | @@ -4073,6 +4073,9 @@ | |
4835 | _Z2f1IiEDTnw_T_ilEES0_ | |
4836 | decltype (new int{}) f1<int>(int) | |
4837 | --format=gnu-v3 | |
4838 | +_Zli2_wPKc | |
4839 | +operator"" _w(char const*) | |
4840 | +--format=gnu-v3 | |
4841 | _Z1fIiEDTnw_Dapifp_EET_ | |
4842 | decltype (new auto({parm#1})) f<int>(int) | |
4843 | --format=gnu-v3 | |
4844 | Index: libiberty/cp-demangle.c | |
4845 | =================================================================== | |
4846 | --- libiberty/cp-demangle.c (.../tags/gcc_4_7_0_release) (wersja 187906) | |
4847 | +++ libiberty/cp-demangle.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
4848 | @@ -1419,7 +1419,12 @@ | |
4849 | ||
4850 | ret = d_operator_name (di); | |
4851 | if (ret != NULL && ret->type == DEMANGLE_COMPONENT_OPERATOR) | |
4852 | - di->expansion += sizeof "operator" + ret->u.s_operator.op->len - 2; | |
4853 | + { | |
4854 | + di->expansion += sizeof "operator" + ret->u.s_operator.op->len - 2; | |
4855 | + if (!strcmp (ret->u.s_operator.op->code, "li")) | |
4856 | + ret = d_make_comp (di, DEMANGLE_COMPONENT_UNARY, ret, | |
4857 | + d_source_name (di)); | |
4858 | + } | |
4859 | return ret; | |
4860 | } | |
4861 | else if (peek == 'C' || peek == 'D') | |
4862 | @@ -1596,6 +1601,7 @@ | |
4863 | { "ix", NL ("[]"), 2 }, | |
4864 | { "lS", NL ("<<="), 2 }, | |
4865 | { "le", NL ("<="), 2 }, | |
4866 | + { "li", NL ("operator\"\" "), 1 }, | |
4867 | { "ls", NL ("<<"), 2 }, | |
4868 | { "lt", NL ("<"), 2 }, | |
4869 | { "mI", NL ("-="), 2 }, | |
4870 | Index: ChangeLog | |
4871 | =================================================================== | |
4872 | --- ChangeLog (.../tags/gcc_4_7_0_release) (wersja 187906) | |
4873 | +++ ChangeLog (.../branches/gcc-4_7-branch) (wersja 187906) | |
4874 | @@ -1,3 +1,18 @@ | |
4875 | +2012-05-16 Olivier Hainque <hainque@adacore.com> | |
ad222a6b | 4876 | + |
be75205b PS |
4877 | + * Makefile.tpl (gcc-no-fixedincludes): Rename into ... |
4878 | + (gcc-install-no-fixedincludes): Now forwarder to local target in gcc/ | |
4879 | + (install-no-fixedincludes): Adjust accordingly. | |
4880 | + * Makefile.in: Regenerate. | |
ad222a6b | 4881 | + |
be75205b | 4882 | +2012-03-28 Georg-Johann Lay <avr@gjlay.de> |
7b762fbe | 4883 | + |
be75205b | 4884 | + Backport from 2012-03-28 mainline r185907. |
7b762fbe | 4885 | + |
be75205b PS |
4886 | + PR target/52737 |
4887 | + * contrib/gcc_update (files_and_dependencies): | |
4888 | + Remove gcc/config/avr/t-multilib from touch data. | |
7b762fbe | 4889 | + |
b4627121 | 4890 | 2012-03-22 Release Manager |
7b762fbe | 4891 | |
b4627121 | 4892 | * GCC 4.7.0 released. |
be75205b | 4893 | Index: contrib/gcc_update |
7b762fbe | 4894 | =================================================================== |
be75205b PS |
4895 | --- contrib/gcc_update (.../tags/gcc_4_7_0_release) (wersja 187906) |
4896 | +++ contrib/gcc_update (.../branches/gcc-4_7-branch) (wersja 187906) | |
4897 | @@ -83,7 +83,6 @@ | |
4898 | gcc/config/arm/arm-tables.opt: gcc/config/arm/arm-arches.def gcc/config/arm/arm-cores.def gcc/config/arm/arm-fpus.def gcc/config/arm/genopt.sh | |
4899 | gcc/config/avr/avr-tables.opt: gcc/config/avr/avr-mcus.def gcc/config/avr/genopt.sh | |
4900 | gcc/config/avr/t-multilib: gcc/config/avr/avr-mcus.def gcc/config/avr/genmultilib.awk | |
4901 | -gcc/config/avr/multilib.h: gcc/config/avr/avr-mcus.def gcc/config/avr/genmultilib.awk | |
4902 | gcc/config/c6x/c6x-tables.opt: gcc/config/c6x/c6x-isas.def gcc/config/c6x/genopt.sh | |
4903 | gcc/config/c6x/c6x-sched.md: gcc/config/c6x/c6x-sched.md.in gcc/config/c6x/gensched.sh | |
4904 | gcc/config/c6x/c6x-mult.md: gcc/config/c6x/c6x-mult.md.in gcc/config/c6x/genmult.sh | |
4905 | Index: libjava/configure.ac | |
ad222a6b | 4906 | =================================================================== |
be75205b PS |
4907 | --- libjava/configure.ac (.../tags/gcc_4_7_0_release) (wersja 187906) |
4908 | +++ libjava/configure.ac (.../branches/gcc-4_7-branch) (wersja 187906) | |
4909 | @@ -1825,7 +1825,7 @@ | |
4910 | AS_HELP_STRING([--disable-symvers], | |
4911 | [disable symbol versioning for libjava]), | |
4912 | [case "$enableval" in | |
4913 | - yes) libjava_cv_anon_version_script=yes ;; | |
4914 | + yes|gnu*) libjava_cv_anon_version_script=yes ;; | |
4915 | no) libjava_cv_anon_version_script=no ;; | |
4916 | *) AC_MSG_ERROR([Unknown argument to enable/disable symvers]);; | |
4917 | esac], | |
4918 | Index: libjava/include/Makefile.in | |
4919 | =================================================================== | |
4920 | --- libjava/include/Makefile.in (.../tags/gcc_4_7_0_release) (wersja 187906) | |
4921 | +++ libjava/include/Makefile.in (.../branches/gcc-4_7-branch) (wersja 187906) | |
4922 | @@ -136,7 +136,6 @@ | |
4923 | EXEEXT = @EXEEXT@ | |
4924 | FGREP = @FGREP@ | |
4925 | GCC_FOR_ECJX = @GCC_FOR_ECJX@ | |
4926 | -GCC_UNWIND_INCLUDE = @GCC_UNWIND_INCLUDE@ | |
4927 | GCDEPS = @GCDEPS@ | |
4928 | GCINCS = @GCINCS@ | |
4929 | GCJ = @GCJ@ | |
4930 | @@ -184,6 +183,7 @@ | |
4931 | LIBDIR = @LIBDIR@ | |
4932 | LIBFFI = @LIBFFI@ | |
4933 | LIBFFIINCS = @LIBFFIINCS@ | |
4934 | +LIBGCC_UNWIND_INCLUDE = @LIBGCC_UNWIND_INCLUDE@ | |
4935 | LIBGCJDEBUG = @LIBGCJDEBUG@ | |
4936 | LIBGCJTESTSPEC = @LIBGCJTESTSPEC@ | |
4937 | LIBGCJ_BC_SPEC = @LIBGCJ_BC_SPEC@ | |
4938 | Index: libjava/ChangeLog | |
4939 | =================================================================== | |
4940 | --- libjava/ChangeLog (.../tags/gcc_4_7_0_release) (wersja 187906) | |
4941 | +++ libjava/ChangeLog (.../branches/gcc-4_7-branch) (wersja 187906) | |
4942 | @@ -1,3 +1,15 @@ | |
4943 | +2012-05-21 Benjamin Kosnik <bkoz@redhat.com> | |
ad222a6b | 4944 | + |
be75205b PS |
4945 | + PR libstdc++/52700 |
4946 | + * configure.ac: Allow gnu, gnu-versioned-namespace for | |
4947 | + --enable-symvers arguments. | |
4948 | + * configure: Regenerate. | |
4949 | + | |
4950 | +2012-04-23 Andrew Haley <aph@redhat.com> | |
4951 | + | |
4952 | + * defineclass.cc (MAJOR_1_7, MINOR_1_7): New. | |
4953 | + (parse): Allow MAJOR_1_7 classfile version. | |
ad222a6b PS |
4954 | + |
4955 | 2012-03-22 Release Manager | |
4956 | ||
4957 | * GCC 4.7.0 released. | |
be75205b | 4958 | Index: libjava/testsuite/Makefile.in |
ad222a6b | 4959 | =================================================================== |
be75205b PS |
4960 | --- libjava/testsuite/Makefile.in (.../tags/gcc_4_7_0_release) (wersja 187906) |
4961 | +++ libjava/testsuite/Makefile.in (.../branches/gcc-4_7-branch) (wersja 187906) | |
4962 | @@ -111,7 +111,6 @@ | |
4963 | EXEEXT = @EXEEXT@ | |
4964 | FGREP = @FGREP@ | |
4965 | GCC_FOR_ECJX = @GCC_FOR_ECJX@ | |
4966 | -GCC_UNWIND_INCLUDE = @GCC_UNWIND_INCLUDE@ | |
4967 | GCDEPS = @GCDEPS@ | |
4968 | GCINCS = @GCINCS@ | |
4969 | GCJ = @GCJ@ | |
4970 | @@ -159,6 +158,7 @@ | |
4971 | LIBDIR = @LIBDIR@ | |
4972 | LIBFFI = @LIBFFI@ | |
4973 | LIBFFIINCS = @LIBFFIINCS@ | |
4974 | +LIBGCC_UNWIND_INCLUDE = @LIBGCC_UNWIND_INCLUDE@ | |
4975 | LIBGCJDEBUG = @LIBGCJDEBUG@ | |
4976 | LIBGCJTESTSPEC = @LIBGCJTESTSPEC@ | |
4977 | LIBGCJ_BC_SPEC = @LIBGCJ_BC_SPEC@ | |
4978 | Index: libjava/configure | |
4979 | =================================================================== | |
4980 | --- libjava/configure (.../tags/gcc_4_7_0_release) (wersja 187906) | |
4981 | +++ libjava/configure (.../branches/gcc-4_7-branch) (wersja 187906) | |
4982 | @@ -24557,7 +24557,7 @@ | |
4983 | # Check whether --enable-symvers was given. | |
4984 | if test "${enable_symvers+set}" = set; then : | |
4985 | enableval=$enable_symvers; case "$enableval" in | |
4986 | - yes) libjava_cv_anon_version_script=yes ;; | |
4987 | + yes|gnu*) libjava_cv_anon_version_script=yes ;; | |
4988 | no) libjava_cv_anon_version_script=no ;; | |
4989 | *) as_fn_error "Unknown argument to enable/disable symvers" "$LINENO" 5;; | |
4990 | esac | |
4991 | Index: libjava/gcj/Makefile.in | |
4992 | =================================================================== | |
4993 | --- libjava/gcj/Makefile.in (.../tags/gcc_4_7_0_release) (wersja 187906) | |
4994 | +++ libjava/gcj/Makefile.in (.../branches/gcc-4_7-branch) (wersja 187906) | |
4995 | @@ -135,7 +135,6 @@ | |
4996 | EXEEXT = @EXEEXT@ | |
4997 | FGREP = @FGREP@ | |
4998 | GCC_FOR_ECJX = @GCC_FOR_ECJX@ | |
4999 | -GCC_UNWIND_INCLUDE = @GCC_UNWIND_INCLUDE@ | |
5000 | GCDEPS = @GCDEPS@ | |
5001 | GCINCS = @GCINCS@ | |
5002 | GCJ = @GCJ@ | |
5003 | @@ -183,6 +182,7 @@ | |
5004 | LIBDIR = @LIBDIR@ | |
5005 | LIBFFI = @LIBFFI@ | |
5006 | LIBFFIINCS = @LIBFFIINCS@ | |
5007 | +LIBGCC_UNWIND_INCLUDE = @LIBGCC_UNWIND_INCLUDE@ | |
5008 | LIBGCJDEBUG = @LIBGCJDEBUG@ | |
5009 | LIBGCJTESTSPEC = @LIBGCJTESTSPEC@ | |
5010 | LIBGCJ_BC_SPEC = @LIBGCJ_BC_SPEC@ | |
5011 | Index: libjava/defineclass.cc | |
5012 | =================================================================== | |
5013 | --- libjava/defineclass.cc (.../tags/gcc_4_7_0_release) (wersja 187906) | |
5014 | +++ libjava/defineclass.cc (.../branches/gcc-4_7-branch) (wersja 187906) | |
5015 | @@ -361,6 +361,8 @@ | |
5016 | #define MINOR_1_5 0 | |
5017 | #define MAJOR_1_6 50 | |
5018 | #define MINOR_1_6 0 | |
5019 | +#define MAJOR_1_7 51 | |
5020 | +#define MINOR_1_7 0 | |
ad222a6b | 5021 | |
be75205b PS |
5022 | void |
5023 | _Jv_ClassReader::parse () | |
5024 | @@ -371,8 +373,8 @@ | |
ad222a6b | 5025 | |
be75205b PS |
5026 | int minor_version = read2u (); |
5027 | int major_version = read2u (); | |
5028 | - if (major_version < MAJOR_1_1 || major_version > MAJOR_1_6 | |
5029 | - || (major_version == MAJOR_1_6 && minor_version > MINOR_1_6)) | |
5030 | + if (major_version < MAJOR_1_1 || major_version > MAJOR_1_7 | |
5031 | + || (major_version == MAJOR_1_7 && minor_version > MINOR_1_7)) | |
5032 | throw_class_format_error ("unrecognized class file version"); | |
5033 | is_15 = (major_version >= MAJOR_1_5); | |
5034 | ||
5035 | Index: libgcc/config.host | |
7b762fbe | 5036 | =================================================================== |
be75205b PS |
5037 | --- libgcc/config.host (.../tags/gcc_4_7_0_release) (wersja 187906) |
5038 | +++ libgcc/config.host (.../branches/gcc-4_7-branch) (wersja 187906) | |
5039 | @@ -744,15 +744,13 @@ | |
5040 | ;; | |
5041 | mips*-*-netbsd*) # NetBSD/mips, either endian. | |
5042 | ;; | |
5043 | -mips64*-*-linux* | mipsisa64*-*-linux*) | |
5044 | - extra_parts="$extra_parts crtfastmath.o" | |
5045 | - tmake_file="${tmake_file} t-crtfm mips/t-mips16 mips/t-tpbit" | |
5046 | - md_unwind_header=mips/linux-unwind.h | |
5047 | - ;; | |
5048 | mips*-*-linux*) # Linux MIPS, either endian. | |
5049 | extra_parts="$extra_parts crtfastmath.o" | |
5050 | tmake_file="${tmake_file} t-crtfm mips/t-mips16" | |
5051 | md_unwind_header=mips/linux-unwind.h | |
5052 | + if test "${ac_cv_sizeof_long_double}" = 16; then | |
5053 | + tmake_file="${tmake_file} mips/t-tpbit" | |
5054 | + fi | |
5055 | ;; | |
5056 | mips*-*-openbsd*) | |
5057 | ;; | |
5058 | @@ -848,9 +846,15 @@ | |
5059 | tmake_file="$tmake_file rs6000/t-darwin64 rs6000/t-ibm-ldouble" | |
5060 | extra_parts="$extra_parts crt2.o" | |
5061 | ;; | |
5062 | -powerpc-*-freebsd*) | |
5063 | - tmake_file="${tmake_file} rs6000/t-ppccomm rs6000/t-savresfgpr rs6000/t-crtstuff rs6000/t-freebsd t-softfp-sfdf t-softfp-excl t-softfp t-slibgcc-libgcc" | |
5064 | +powerpc*-*-freebsd*) | |
5065 | + tmake_file="${tmake_file} rs6000/t-ppccomm rs6000/t-savresfgpr rs6000/t-crtstuff rs6000/t-freebsd t-softfp-sfdf t-softfp-excl t-softfp" | |
5066 | extra_parts="$extra_parts crtbeginT.o ecrti.o ecrtn.o ncrti.o ncrtn.o" | |
5067 | + case ${host} in | |
5068 | + powerpc64*) | |
5069 | + tmake_file="${tmake_file} rs6000/t-freebsd64" | |
5070 | + md_unwind_header=rs6000/freebsd-unwind.h | |
5071 | + ;; | |
5072 | + esac | |
5073 | ;; | |
5074 | powerpc-*-netbsd*) | |
5075 | tmake_file="$tmake_file rs6000/t-netbsd rs6000/t-crtstuff" | |
5076 | Index: libgcc/Makefile.in | |
ad222a6b | 5077 | =================================================================== |
be75205b PS |
5078 | --- libgcc/Makefile.in (.../tags/gcc_4_7_0_release) (wersja 187906) |
5079 | +++ libgcc/Makefile.in (.../branches/gcc-4_7-branch) (wersja 187906) | |
5080 | @@ -1002,14 +1002,26 @@ | |
5081 | $(libunwind-objects) $(libunwind-s-objects) \ | |
5082 | $(EXTRA_PARTS): libgcc_tm.h | |
ad222a6b | 5083 | |
be75205b PS |
5084 | -install-unwind_h: |
5085 | +# Copy unwind.h to the place where gcc will look for it at build-time | |
5086 | +install-unwind_h-forbuild: | |
5087 | dest=$(gcc_objdir)/include/tmp$$$$-unwind.h; \ | |
5088 | cp unwind.h $$dest; \ | |
5089 | chmod a+r $$dest; \ | |
5090 | sh $(srcdir)/../move-if-change $$dest $(gcc_objdir)/include/unwind.h | |
ad222a6b | 5091 | |
be75205b PS |
5092 | -all: install-unwind_h |
5093 | +# Copy unwind.h to the place where gcc will look at run-time, once installed | |
5094 | +# | |
5095 | +# This is redundant with the internal copy above when using a regular toplevel | |
5096 | +# "install" target, because gcc's install will copy to the destination as well. | |
5097 | +# | |
5098 | +# This is however useful for "install-no-fixincludes" case, when only the gcc | |
5099 | +# internal headers are copied by gcc's install. | |
5100 | +install-unwind_h: | |
5101 | + $(mkinstalldirs) $(DESTDIR)$(libsubdir)/include | |
5102 | + $(INSTALL_DATA) unwind.h $(DESTDIR)$(libsubdir)/include | |
ad222a6b | 5103 | |
be75205b PS |
5104 | +all: install-unwind_h-forbuild |
5105 | + | |
5106 | # Documentation targets (empty). | |
5107 | .PHONY: info html dvi pdf install-info install-html install-pdf | |
ad222a6b | 5108 | |
be75205b PS |
5109 | @@ -1067,12 +1079,13 @@ |
5110 | esac; \ | |
5111 | done | |
ad222a6b | 5112 | |
be75205b PS |
5113 | -install: install-leaf |
5114 | +install: install-leaf install-unwind_h | |
5115 | @: $(MAKE) ; $(MULTIDO) $(FLAGS_TO_PASS) multi-do DO=install | |
b4627121 | 5116 | |
be75205b | 5117 | install-strip: install |
b4627121 | 5118 | |
be75205b PS |
5119 | .PHONY: install install-shared install-libunwind install-strip |
5120 | +.PHONY: install-unwind_h install-unwind_h-forbuild | |
b4627121 | 5121 | |
be75205b PS |
5122 | # Don't export variables to the environment, in order to not confuse |
5123 | # configure. | |
5124 | Index: libgcc/configure.ac | |
5125 | =================================================================== | |
5126 | --- libgcc/configure.ac (.../tags/gcc_4_7_0_release) (wersja 187906) | |
5127 | +++ libgcc/configure.ac (.../branches/gcc-4_7-branch) (wersja 187906) | |
5128 | @@ -14,6 +14,11 @@ | |
5129 | AC_INIT([GNU C Runtime Library], 1.0,,[libgcc]) | |
5130 | AC_CONFIG_SRCDIR([static-object.mk]) | |
b4627121 | 5131 | |
be75205b PS |
5132 | +# The libgcc should not depend on any header files |
5133 | +AC_DEFUN([_AC_INCLUDES_DEFAULT_REQUIREMENTS], | |
5134 | + [m4_divert_text([DEFAULTS], | |
5135 | + [ac_includes_default='/* none */'])]) | |
b4627121 | 5136 | + |
be75205b PS |
5137 | AC_ARG_WITH(target-subdir, |
5138 | [ --with-target-subdir=SUBDIR Configuring in a subdirectory for target]) | |
5139 | AC_ARG_WITH(cross-host, | |
5140 | Index: libgcc/ChangeLog | |
b4627121 | 5141 | =================================================================== |
be75205b PS |
5142 | --- libgcc/ChangeLog (.../tags/gcc_4_7_0_release) (wersja 187906) |
5143 | +++ libgcc/ChangeLog (.../branches/gcc-4_7-branch) (wersja 187906) | |
5144 | @@ -1,3 +1,127 @@ | |
5145 | +2012-05-25 Ian Lance Taylor <iant@google.com> | |
5146 | + | |
5147 | + * config/i386/morestack.S (__morestack_non_split): Check whether | |
5148 | + caller is varargs and needs %bp to hold the stack frame on return. | |
5149 | + | |
5150 | +2012-05-24 Olivier Hainque <hainque@adacore.com> | |
5151 | + | |
5152 | + * Makefile.in: Move dependency on install-unwind_h from | |
5153 | + "install-leaf" to "install". | |
5154 | + | |
5155 | +2012-05-21 Andrew Pinski <apinski@cavium.com> | |
5156 | + | |
5157 | + PR bootstrap/53183 | |
5158 | + * configure.ac: Define the default includes to being none. | |
5159 | + * configure: Regenerate. | |
5160 | + | |
5161 | +2012-05-16 Olivier Hainque <hainque@adacore.com> | |
5162 | + | |
5163 | + * Makefile.in (install-unwind_h): Rename into ... | |
5164 | + (install-unwind_h-forbuild): New target. | |
5165 | + (all): Use it instead of the former install-unwind_h. | |
5166 | + (install-unwind_h): Reinstate, copy to user install destination | |
5167 | + for include files, not to the internal gcc object directory one. | |
5168 | + (install-leaf): Depend on it. | |
5169 | + | |
5170 | +2012-04-30 Andreas Tobler <andreast@fgznet.ch> | |
5171 | + | |
5172 | + Backport from mainline | |
5173 | + 2012-03-21 Andreas Tobler <andreast@fgznet.ch> | |
5174 | + | |
5175 | + * config.host: Add bits to support powerpc64-*-freebsd*. | |
5176 | + * config/rs6000/freebsd-unwind.h: New file. | |
5177 | + * config/rs6000/t-freebsd64: New file. | |
5178 | + | |
5179 | +2012-04-28 Aurelien Jarno <aurelien@aurel32.net> | |
5180 | + | |
5181 | + * config.host (mips64*-*-linux*, mipsisa64*-*-linux*): Remove. | |
5182 | + (mips*-*-linux*): Include mips/t-tpbit when long double is | |
5183 | + 16 bytes long. | |
5184 | + | |
5185 | +2012-04-20 Thomas Schwinge <thomas@codesourcery.com> | |
5186 | + | |
5187 | + struct siginfo vs. siginfo_t | |
5188 | + | |
5189 | + Backport from trunk: | |
5190 | + | |
5191 | + 2012-04-20 Thomas Schwinge <thomas@codesourcery.com> | |
5192 | + | |
5193 | + * config/alpha/linux-unwind.h (alpha_fallback_frame_state): Use | |
5194 | + siginfo_t instead of struct siginfo. | |
5195 | + * config/bfin/linux-unwind.h (bfin_fallback_frame_state): Likewise. | |
5196 | + * config/i386/linux-unwind.h (x86_fallback_frame_state): Likewise. | |
5197 | + * config/ia64/linux-unwind.h (ia64_fallback_frame_state) | |
5198 | + (ia64_handle_unwabi): Likewise. | |
5199 | + * config/mips/linux-unwind.h (mips_fallback_frame_state): Likewise. | |
5200 | + * config/pa/linux-unwind.h (pa32_fallback_frame_state): Likewise. | |
5201 | + * config/sh/linux-unwind.h (shmedia_fallback_frame_state) | |
5202 | + (sh_fallback_frame_state): Likewise. | |
5203 | + * config/tilepro/linux-unwind.h (tile_fallback_frame_state): Likewise. | |
5204 | + * config/xtensa/linux-unwind.h (xtensa_fallback_frame_state): Likewise. | |
5205 | + | |
5206 | +2012-04-06 Walter Lee <walt@tilera.com> | |
5207 | + | |
5208 | + Backport from mainline | |
5209 | + 2012-03-07 Walter Lee <walt@tilera.com> | |
5210 | + | |
5211 | + * config/tilepro/atomic.c: Rename "atomic_" prefix to | |
5212 | + "arch_atomic_". | |
5213 | + (atomic_xor): Rename and move definition to | |
5214 | + config/tilepro/atomic.h. | |
5215 | + (atomic_nand): Ditto. | |
5216 | + * config/tilepro/atomic.h: Rename "atomic_" prefix to | |
5217 | + "arch_atomic_". | |
5218 | + (arch_atomic_xor): Move from config/tilepro/atomic.c. | |
5219 | + (arch_atomic_nand): Ditto. | |
5220 | + | |
5221 | +2012-04-02 H.J. Lu <hongjiu.lu@intel.com> | |
5222 | + | |
5223 | + Backported from mainline | |
5224 | + 2012-04-02 H.J. Lu <hongjiu.lu@intel.com> | |
5225 | + | |
5226 | + * config/i386/linux-unwind.h (RT_SIGRETURN_SYSCALL): Update x32 | |
5227 | + system call number. | |
5228 | + | |
5229 | +2012-03-31 Eric Botcazou <ebotcazou@adacore.com> | |
5230 | + | |
5231 | + * config/ia64/unwind-ia64.c (uw_install_context): Manually save LC | |
5232 | + if it hasn't been previously saved. | |
5233 | + | |
5234 | +2012-03-28 Georg-Johann Lay <avr@gjlay.de> | |
5235 | + | |
5236 | + Backport from 2012-03-28 mainline r185907. | |
5237 | + | |
5238 | + PR target/52737 | |
5239 | + * config/avr/lib1funcs.S: Use __AVR_HAVE_SPH__ for SP_H checks | |
5240 | + instead of __AVR_HAVE_8BIT_SP__. | |
5241 | + | |
5242 | +2012-03-22 Georg-Johann Lay <avr@gjlay.de> | |
5243 | + | |
5244 | + Backport from 2012-03-07 mainline r185033. | |
5245 | + | |
5246 | + PR target/52507 | |
5247 | + * config/avr/lib1funcs.S (__movmemx_hi): Fix loop label in RAM-part. | |
5248 | + | |
5249 | + Backport from 2012-03-07 mainline r185031. | |
5250 | + | |
5251 | + PR target/52505 | |
5252 | + * config/avr/lib1funcs.S (__xload_1): Don't read unintentionally | |
5253 | + from RAM. | |
5254 | + | |
5255 | + Backport from 2012-03-07 mainline r185030. | |
5256 | + | |
5257 | + PR target/52461 | |
5258 | + PR target/52508 | |
5259 | + * config/avr/lib1funcs.S (__do_copy_data): Clear RAMPZ after usage | |
5260 | + if RAMPZ affects reading from RAM. | |
5261 | + (__tablejump_elpm__): Ditto. | |
5262 | + (.xload): Ditto. | |
5263 | + (__movmemx_hi): Ditto. | |
5264 | + (__do_global_ctors): Right condition for RAMPZ usage is "have ELPM". | |
5265 | + (__do_global_dtors): Ditto. | |
5266 | + (__xload_1, __xload_2, __xload_3, __xload_4): Ditto. | |
5267 | + (__movmemx_hi): Ditto. | |
5268 | + | |
5269 | 2012-03-22 Release Manager | |
b4627121 | 5270 | |
be75205b PS |
5271 | * GCC 4.7.0 released. |
5272 | Index: libgcc/config/alpha/linux-unwind.h | |
5273 | =================================================================== | |
5274 | --- libgcc/config/alpha/linux-unwind.h (.../tags/gcc_4_7_0_release) (wersja 187906) | |
5275 | +++ libgcc/config/alpha/linux-unwind.h (.../branches/gcc-4_7-branch) (wersja 187906) | |
5276 | @@ -1,5 +1,5 @@ | |
5277 | /* DWARF2 EH unwinding support for Alpha Linux. | |
5278 | - Copyright (C) 2004, 2005, 2009, 2011 Free Software Foundation, Inc. | |
5279 | + Copyright (C) 2004, 2005, 2009, 2011, 2012 Free Software Foundation, Inc. | |
b4627121 | 5280 | |
be75205b | 5281 | This file is part of GCC. |
b4627121 | 5282 | |
be75205b PS |
5283 | @@ -49,7 +49,7 @@ |
5284 | else if (pc[1] == 0x201f015f) /* lda $0,NR_rt_sigreturn */ | |
5285 | { | |
5286 | struct rt_sigframe { | |
5287 | - struct siginfo info; | |
5288 | + siginfo_t info; | |
5289 | struct ucontext uc; | |
5290 | } *rt_ = context->cfa; | |
5291 | sc = &rt_->uc.uc_mcontext; | |
5292 | Index: libgcc/config/ia64/unwind-ia64.c | |
b4627121 | 5293 | =================================================================== |
be75205b PS |
5294 | --- libgcc/config/ia64/unwind-ia64.c (.../tags/gcc_4_7_0_release) (wersja 187906) |
5295 | +++ libgcc/config/ia64/unwind-ia64.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
5296 | @@ -2171,8 +2171,20 @@ | |
5297 | struct _Unwind_Context *target) | |
5298 | { | |
5299 | unsigned long ireg_buf[4], ireg_nat = 0, ireg_pr = 0; | |
5300 | + unsigned long saved_lc; | |
5301 | long i; | |
b4627121 | 5302 | |
be75205b PS |
5303 | + /* ??? LC is a fixed register so the call to __builtin_unwind_init in |
5304 | + uw_init_context doesn't cause it to be saved. In case it isn't in | |
5305 | + the user frames either, we need to manually do so here, lest it be | |
5306 | + clobbered by the loop just below. */ | |
5307 | + if (target->lc_loc == NULL) | |
5308 | + { | |
5309 | + register unsigned long lc asm ("ar.lc"); | |
5310 | + saved_lc = lc; | |
5311 | + target->lc_loc = &saved_lc; | |
5312 | + } | |
5313 | + | |
5314 | /* Copy integer register data from the target context to a | |
5315 | temporary buffer. Do this so that we can frob AR.UNAT | |
5316 | to get the NaT bits for these registers set properly. */ | |
5317 | Index: libgcc/config/ia64/linux-unwind.h | |
5318 | =================================================================== | |
5319 | --- libgcc/config/ia64/linux-unwind.h (.../tags/gcc_4_7_0_release) (wersja 187906) | |
5320 | +++ libgcc/config/ia64/linux-unwind.h (.../branches/gcc-4_7-branch) (wersja 187906) | |
5321 | @@ -1,5 +1,5 @@ | |
5322 | /* DWARF2 EH unwinding support for IA64 Linux. | |
5323 | - Copyright (C) 2004, 2005, 2009 Free Software Foundation, Inc. | |
5324 | + Copyright (C) 2004, 2005, 2009, 2012 Free Software Foundation, Inc. | |
b4627121 | 5325 | |
be75205b | 5326 | This file is part of GCC. |
7b762fbe | 5327 | |
be75205b PS |
5328 | @@ -47,7 +47,7 @@ |
5329 | struct sigframe { | |
5330 | char scratch[16]; | |
5331 | unsigned long sig_number; | |
5332 | - struct siginfo *info; | |
5333 | + siginfo_t *info; | |
5334 | struct sigcontext *sc; | |
5335 | } *frame_ = (struct sigframe *)context->psp; | |
5336 | struct sigcontext *sc = frame_->sc; | |
5337 | @@ -137,7 +137,7 @@ | |
5338 | struct sigframe { | |
5339 | char scratch[16]; | |
5340 | unsigned long sig_number; | |
5341 | - struct siginfo *info; | |
5342 | + siginfo_t *info; | |
5343 | struct sigcontext *sc; | |
5344 | } *frame = (struct sigframe *)context->psp; | |
5345 | struct sigcontext *sc = frame->sc; | |
5346 | Index: libgcc/config/i386/linux-unwind.h | |
ad222a6b | 5347 | =================================================================== |
be75205b PS |
5348 | --- libgcc/config/i386/linux-unwind.h (.../tags/gcc_4_7_0_release) (wersja 187906) |
5349 | +++ libgcc/config/i386/linux-unwind.h (.../branches/gcc-4_7-branch) (wersja 187906) | |
5350 | @@ -1,5 +1,5 @@ | |
5351 | /* DWARF2 EH unwinding support for AMD x86-64 and x86. | |
5352 | - Copyright (C) 2004, 2005, 2006, 2009, 2010, 2011 | |
5353 | + Copyright (C) 2004, 2005, 2006, 2009, 2010, 2011, 2012 | |
ad222a6b | 5354 | Free Software Foundation, Inc. |
ad222a6b | 5355 | |
be75205b PS |
5356 | This file is part of GCC. |
5357 | @@ -48,7 +48,7 @@ | |
5358 | #ifdef __LP64__ | |
5359 | #define RT_SIGRETURN_SYSCALL 0x050f0000000fc0c7ULL | |
5360 | #else | |
5361 | -#define RT_SIGRETURN_SYSCALL 0x050f40002006c0c7ULL | |
5362 | +#define RT_SIGRETURN_SYSCALL 0x050f40000201c0c7ULL | |
5363 | #endif | |
5364 | if (*(unsigned char *)(pc+0) == 0x48 | |
5365 | && *(unsigned long long *)(pc+1) == RT_SIGRETURN_SYSCALL) | |
5366 | @@ -139,9 +139,9 @@ | |
5367 | { | |
5368 | struct rt_sigframe { | |
5369 | int sig; | |
5370 | - struct siginfo *pinfo; | |
5371 | + siginfo_t *pinfo; | |
5372 | void *puc; | |
5373 | - struct siginfo info; | |
5374 | + siginfo_t info; | |
5375 | struct ucontext uc; | |
5376 | } *rt_ = context->cfa; | |
5377 | /* The void * cast is necessary to avoid an aliasing warning. | |
5378 | Index: libgcc/config/i386/morestack.S | |
ad222a6b | 5379 | =================================================================== |
be75205b PS |
5380 | --- libgcc/config/i386/morestack.S (.../tags/gcc_4_7_0_release) (wersja 187906) |
5381 | +++ libgcc/config/i386/morestack.S (.../branches/gcc-4_7-branch) (wersja 187906) | |
5382 | @@ -1,5 +1,5 @@ | |
5383 | # x86/x86_64 support for -fsplit-stack. | |
5384 | -# Copyright (C) 2009, 2010, 2011 Free Software Foundation, Inc. | |
5385 | +# Copyright (C) 2009, 2010, 2011, 2012 Free Software Foundation, Inc. | |
5386 | # Contributed by Ian Lance Taylor <iant@google.com>. | |
ad222a6b | 5387 | |
be75205b PS |
5388 | # This file is part of GCC. |
5389 | @@ -138,6 +138,24 @@ | |
5390 | je 1f # see above. | |
5391 | addl $2,%eax | |
5392 | 1: inc %eax | |
ad222a6b | 5393 | + |
be75205b PS |
5394 | + # If the instruction that we return to is |
5395 | + # leal 20(%ebp),{%eax,%ecx,%edx} | |
5396 | + # then we have been called by a varargs function that expects | |
5397 | + # %ebp to hold a real value. That can only work if we do the | |
5398 | + # full stack split routine. FIXME: This is fragile. | |
5399 | + cmpb $0x8d,(%eax) | |
5400 | + jne 3f | |
5401 | + cmpb $0x14,2(%eax) | |
5402 | + jne 3f | |
5403 | + cmpb $0x45,1(%eax) | |
5404 | + je 2f | |
5405 | + cmpb $0x4d,1(%eax) | |
5406 | + je 2f | |
5407 | + cmpb $0x55,1(%eax) | |
5408 | + je 2f | |
5409 | + | |
5410 | +3: | |
5411 | movl %eax,4(%esp) # Update return address. | |
ad222a6b | 5412 | |
be75205b PS |
5413 | popl %eax # Restore %eax and stack. |
5414 | @@ -175,18 +193,32 @@ | |
5415 | #else | |
5416 | cmpl %fs:0x40,%eax | |
5417 | #endif | |
5418 | - popq %rax # Restore register. | |
ad222a6b | 5419 | |
be75205b PS |
5420 | - .cfi_adjust_cfa_offset -8 # Adjust for popped register. |
5421 | - | |
5422 | jb 2f # Get more space if we need it. | |
5423 | ||
5424 | # This breaks call/return prediction, as described above. | |
5425 | - incq (%rsp) # Increment the return address. | |
5426 | + incq 8(%rsp) # Increment the return address. | |
5427 | ||
5428 | + # If the instruction that we return to is | |
5429 | + # leaq 24(%rbp), %r11n | |
5430 | + # then we have been called by a varargs function that expects | |
5431 | + # %ebp to hold a real value. That can only work if we do the | |
5432 | + # full stack split routine. FIXME: This is fragile. | |
5433 | + movq 8(%rsp),%rax | |
5434 | + cmpl $0x185d8d4c,(%rax) | |
5435 | + je 2f | |
ad222a6b | 5436 | + |
be75205b | 5437 | + popq %rax # Restore register. |
ad222a6b | 5438 | + |
be75205b | 5439 | + .cfi_adjust_cfa_offset -8 # Adjust for popped register. |
ad222a6b | 5440 | + |
be75205b PS |
5441 | ret # Return to caller. |
5442 | ||
5443 | 2: | |
5444 | + popq %rax # Restore register. | |
ad222a6b | 5445 | + |
be75205b | 5446 | + .cfi_adjust_cfa_offset -8 # Adjust for popped register. |
ad222a6b | 5447 | + |
be75205b | 5448 | addq $0x5000+BACKOFF,%r10 # Increment space we request. |
ad222a6b | 5449 | |
be75205b PS |
5450 | # Fall through into morestack. |
5451 | Index: libgcc/config/rs6000/t-freebsd64 | |
5452 | =================================================================== | |
5453 | --- libgcc/config/rs6000/t-freebsd64 (.../tags/gcc_4_7_0_release) (wersja 0) | |
5454 | +++ libgcc/config/rs6000/t-freebsd64 (.../branches/gcc-4_7-branch) (wersja 187906) | |
5455 | @@ -0,0 +1,5 @@ | |
5456 | +HOST_LIBGCC2_CFLAGS += -mno-minimal-toc | |
5457 | +SHLIB_MAPFILES = libgcc-std.ver | |
ad222a6b | 5458 | + |
be75205b PS |
5459 | +softfp_wrap_start := '\#ifndef __powerpc64__' |
5460 | +softfp_wrap_end := '\#endif' | |
5461 | Index: libgcc/config/rs6000/freebsd-unwind.h | |
5462 | =================================================================== | |
5463 | --- libgcc/config/rs6000/freebsd-unwind.h (.../tags/gcc_4_7_0_release) (wersja 0) | |
5464 | +++ libgcc/config/rs6000/freebsd-unwind.h (.../branches/gcc-4_7-branch) (wersja 187906) | |
5465 | @@ -0,0 +1,69 @@ | |
5466 | +/* DWARF2 EH unwinding support for PowerPC64 FreeBSD. | |
5467 | + Copyright (C) 2012 Free Software Foundation, Inc. | |
ad222a6b | 5468 | + |
be75205b | 5469 | + This file is part of GCC. |
ad222a6b | 5470 | + |
be75205b PS |
5471 | + GCC is free software; you can redistribute it and/or modify it |
5472 | + under the terms of the GNU General Public License as published | |
5473 | + by the Free Software Foundation; either version 3, or (at your | |
5474 | + option) any later version. | |
ad222a6b | 5475 | + |
be75205b PS |
5476 | + GCC is distributed in the hope that it will be useful, but WITHOUT |
5477 | + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY | |
5478 | + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public | |
5479 | + License for more details. | |
ad222a6b | 5480 | + |
be75205b PS |
5481 | + Under Section 7 of GPL version 3, you are granted additional |
5482 | + permissions described in the GCC Runtime Library Exception, version | |
5483 | + 3.1, as published by the Free Software Foundation. | |
ad222a6b | 5484 | + |
be75205b PS |
5485 | + You should have received a copy of the GNU General Public License and |
5486 | + a copy of the GCC Runtime Library Exception along with this program; | |
5487 | + see the files COPYING3 and COPYING.RUNTIME respectively. If not, see | |
5488 | + <http://www.gnu.org/licenses/>. */ | |
ad222a6b | 5489 | + |
be75205b PS |
5490 | +#define R_LR 65 |
5491 | + | |
5492 | +#define MD_FROB_UPDATE_CONTEXT frob_update_context | |
5493 | + | |
5494 | +static void | |
5495 | +frob_update_context (struct _Unwind_Context *context, | |
5496 | + _Unwind_FrameState *fs ATTRIBUTE_UNUSED) | |
5497 | +{ | |
5498 | + const unsigned int *pc = (const unsigned int *) context->ra; | |
5499 | + | |
5500 | +#ifdef __powerpc64__ | |
5501 | + if (fs->regs.reg[2].how == REG_UNSAVED) | |
5502 | + { | |
5503 | + /* If the current unwind info (FS) does not contain explicit info | |
5504 | + saving R2, then we have to do a minor amount of code reading to | |
5505 | + figure out if it was saved. The big problem here is that the | |
5506 | + code that does the save/restore is generated by the linker, so | |
5507 | + we have no good way to determine at compile time what to do. */ | |
5508 | + if (pc[0] == 0xF8410028 | |
5509 | + || ((pc[0] & 0xFFFF0000) == 0x3D820000 | |
5510 | + && pc[1] == 0xF8410028)) | |
5511 | + { | |
5512 | + /* We are in a plt call stub or r2 adjusting long branch stub, | |
5513 | + before r2 has been saved. Keep REG_UNSAVED. */ | |
5514 | + } | |
5515 | + else | |
5516 | + { | |
5517 | + unsigned int *insn | |
5518 | + = (unsigned int *) _Unwind_GetGR (context, R_LR); | |
5519 | + if (insn && *insn == 0xE8410028) | |
5520 | + _Unwind_SetGRPtr (context, 2, context->cfa + 40); | |
5521 | + else if (pc[0] == 0x4E800421 | |
5522 | + && pc[1] == 0xE8410028) | |
5523 | + { | |
5524 | + /* We are at the bctrl instruction in a call via function | |
5525 | + pointer. gcc always emits the load of the new R2 just | |
5526 | + before the bctrl so this is the first and only place | |
5527 | + we need to use the stored R2. */ | |
5528 | + _Unwind_Word sp = _Unwind_GetGR (context, 1); | |
5529 | + _Unwind_SetGRPtr (context, 2, (void *)(sp + 40)); | |
5530 | + } | |
5531 | + } | |
5532 | + } | |
5533 | +#endif | |
5534 | +} | |
5535 | Index: libgcc/config/sh/linux-unwind.h | |
5536 | =================================================================== | |
5537 | --- libgcc/config/sh/linux-unwind.h (.../tags/gcc_4_7_0_release) (wersja 187906) | |
5538 | +++ libgcc/config/sh/linux-unwind.h (.../branches/gcc-4_7-branch) (wersja 187906) | |
5539 | @@ -1,5 +1,6 @@ | |
5540 | /* DWARF2 EH unwinding support for SH Linux. | |
5541 | - Copyright (C) 2004, 2005, 2006, 2007, 2009 Free Software Foundation, Inc. | |
5542 | + Copyright (C) 2004, 2005, 2006, 2007, 2009, 2012 Free Software Foundation, | |
5543 | + Inc. | |
5544 | ||
5545 | This file is part of GCC. | |
5546 | ||
5547 | @@ -80,9 +81,9 @@ | |
5548 | && (*(unsigned long *) (pc+11) == 0x6ff0fff0)) | |
5549 | { | |
5550 | struct rt_sigframe { | |
5551 | - struct siginfo *pinfo; | |
5552 | + siginfo_t *pinfo; | |
5553 | void *puc; | |
5554 | - struct siginfo info; | |
5555 | + siginfo_t info; | |
5556 | struct ucontext uc; | |
5557 | } *rt_ = context->cfa; | |
5558 | /* The void * cast is necessary to avoid an aliasing warning. | |
5559 | @@ -179,7 +180,7 @@ | |
5560 | && (*(unsigned short *) (pc+14) == 0x00ad)))) | |
5561 | { | |
5562 | struct rt_sigframe { | |
5563 | - struct siginfo info; | |
5564 | + siginfo_t info; | |
5565 | struct ucontext uc; | |
5566 | } *rt_ = context->cfa; | |
5567 | /* The void * cast is necessary to avoid an aliasing warning. | |
5568 | Index: libgcc/config/tilepro/atomic.h | |
5569 | =================================================================== | |
5570 | --- libgcc/config/tilepro/atomic.h (.../tags/gcc_4_7_0_release) (wersja 187906) | |
5571 | +++ libgcc/config/tilepro/atomic.h (.../branches/gcc-4_7-branch) (wersja 187906) | |
5572 | @@ -104,8 +104,8 @@ | |
5573 | ||
5574 | /* 32-bit integer compare-and-exchange. */ | |
5575 | static __inline __attribute__ ((always_inline)) | |
5576 | - int atomic_val_compare_and_exchange_4 (volatile int *mem, | |
5577 | - int oldval, int newval) | |
5578 | + int arch_atomic_val_compare_and_exchange_4 (volatile int *mem, | |
5579 | + int oldval, int newval) | |
5580 | { | |
5581 | #ifdef __tilegx__ | |
5582 | __insn_mtspr (SPR_CMPEXCH_VALUE, oldval); | |
5583 | @@ -123,9 +123,9 @@ | |
5584 | ||
5585 | /* 64-bit integer compare-and-exchange. */ | |
5586 | static __inline __attribute__ ((always_inline)) | |
5587 | - int64_t atomic_val_compare_and_exchange_8 (volatile int64_t * mem, | |
5588 | - int64_t oldval, | |
5589 | - int64_t newval) | |
5590 | + int64_t arch_atomic_val_compare_and_exchange_8 (volatile int64_t * mem, | |
5591 | + int64_t oldval, | |
5592 | + int64_t newval) | |
5593 | { | |
5594 | #ifdef __tilegx__ | |
5595 | __insn_mtspr (SPR_CMPEXCH_VALUE, oldval); | |
5596 | @@ -146,41 +146,41 @@ | |
5597 | ||
5598 | /* This non-existent symbol is called for sizes other than "4" and "8", | |
5599 | indicating a bug in the caller. */ | |
5600 | -extern int __atomic_error_bad_argument_size (void) | |
5601 | +extern int __arch_atomic_error_bad_argument_size (void) | |
5602 | __attribute__ ((warning ("sizeof atomic argument not 4 or 8"))); | |
5603 | ||
5604 | ||
5605 | -#define atomic_val_compare_and_exchange(mem, o, n) \ | |
5606 | +#define arch_atomic_val_compare_and_exchange(mem, o, n) \ | |
5607 | ({ \ | |
5608 | (__typeof(*(mem)))(__typeof(*(mem)-*(mem))) \ | |
5609 | ((sizeof(*(mem)) == 8) ? \ | |
5610 | - atomic_val_compare_and_exchange_8( \ | |
5611 | + arch_atomic_val_compare_and_exchange_8( \ | |
5612 | (volatile int64_t*)(mem), (__typeof((o)-(o)))(o), \ | |
5613 | (__typeof((n)-(n)))(n)) : \ | |
5614 | (sizeof(*(mem)) == 4) ? \ | |
5615 | - atomic_val_compare_and_exchange_4( \ | |
5616 | + arch_atomic_val_compare_and_exchange_4( \ | |
5617 | (volatile int*)(mem), (__typeof((o)-(o)))(o), \ | |
5618 | (__typeof((n)-(n)))(n)) : \ | |
5619 | - __atomic_error_bad_argument_size()); \ | |
5620 | + __arch_atomic_error_bad_argument_size()); \ | |
ad222a6b PS |
5621 | }) |
5622 | ||
be75205b PS |
5623 | -#define atomic_bool_compare_and_exchange(mem, o, n) \ |
5624 | +#define arch_atomic_bool_compare_and_exchange(mem, o, n) \ | |
5625 | ({ \ | |
5626 | __typeof(o) __o = (o); \ | |
5627 | __builtin_expect( \ | |
5628 | - __o == atomic_val_compare_and_exchange((mem), __o, (n)), 1); \ | |
5629 | + __o == arch_atomic_val_compare_and_exchange((mem), __o, (n)), 1); \ | |
ad222a6b PS |
5630 | }) |
5631 | ||
ad222a6b | 5632 | |
be75205b PS |
5633 | /* Loop with compare_and_exchange until we guess the correct value. |
5634 | Normally "expr" will be an expression using __old and __value. */ | |
5635 | -#define __atomic_update_cmpxchg(mem, value, expr) \ | |
5636 | +#define __arch_atomic_update_cmpxchg(mem, value, expr) \ | |
5637 | ({ \ | |
5638 | __typeof(value) __value = (value); \ | |
5639 | __typeof(*(mem)) *__mem = (mem), __old = *__mem, __guess; \ | |
5640 | do { \ | |
5641 | __guess = __old; \ | |
5642 | - __old = atomic_val_compare_and_exchange(__mem, __old, (expr)); \ | |
5643 | + __old = arch_atomic_val_compare_and_exchange(__mem, __old, (expr)); \ | |
5644 | } while (__builtin_expect(__old != __guess, 0)); \ | |
5645 | __old; \ | |
5646 | }) | |
5647 | @@ -189,14 +189,14 @@ | |
ad222a6b | 5648 | |
be75205b PS |
5649 | /* Generic atomic op with 8- or 4-byte variant. |
5650 | The _mask, _addend, and _expr arguments are ignored on tilegx. */ | |
5651 | -#define __atomic_update(mem, value, op, _mask, _addend, _expr) \ | |
5652 | +#define __arch_atomic_update(mem, value, op, _mask, _addend, _expr) \ | |
5653 | ({ \ | |
5654 | ((__typeof(*(mem))) \ | |
5655 | ((sizeof(*(mem)) == 8) ? (__typeof(*(mem)-*(mem)))__insn_##op( \ | |
5656 | (void *)(mem), (int64_t)(__typeof((value)-(value)))(value)) : \ | |
5657 | (sizeof(*(mem)) == 4) ? (int)__insn_##op##4( \ | |
5658 | (void *)(mem), (int32_t)(__typeof((value)-(value)))(value)) : \ | |
5659 | - __atomic_error_bad_argument_size())); \ | |
5660 | + __arch_atomic_error_bad_argument_size())); \ | |
5661 | }) | |
ad222a6b | 5662 | |
be75205b PS |
5663 | #else |
5664 | @@ -211,7 +211,7 @@ | |
5665 | Only 32-bit support is provided. */ | |
5666 | static __inline __attribute__ ((always_inline)) | |
5667 | int | |
5668 | - __atomic_update_4 (volatile int *mem, int mask, int addend) | |
5669 | + __arch_atomic_update_4 (volatile int *mem, int mask, int addend) | |
5670 | { | |
5671 | int result; | |
5672 | __asm__ __volatile__ ("swint1":"=R00" (result), | |
5673 | @@ -224,48 +224,55 @@ | |
ad222a6b | 5674 | |
be75205b PS |
5675 | /* Generic atomic op with 8- or 4-byte variant. |
5676 | The _op argument is ignored on tilepro. */ | |
5677 | -#define __atomic_update(mem, value, _op, mask, addend, expr) \ | |
5678 | +#define __arch_atomic_update(mem, value, _op, mask, addend, expr) \ | |
5679 | ({ \ | |
5680 | (__typeof(*(mem)))(__typeof(*(mem)-*(mem))) \ | |
5681 | ((sizeof(*(mem)) == 8) ? \ | |
5682 | - __atomic_update_cmpxchg((mem), (value), (expr)) : \ | |
5683 | + __arch_atomic_update_cmpxchg((mem), (value), (expr)) : \ | |
5684 | (sizeof(*(mem)) == 4) ? \ | |
5685 | - __atomic_update_4((volatile int*)(mem), (__typeof((mask)-(mask)))(mask), \ | |
5686 | - (__typeof((addend)-(addend)))(addend)) : \ | |
5687 | - __atomic_error_bad_argument_size()); \ | |
5688 | + __arch_atomic_update_4((volatile int*)(mem), \ | |
5689 | + (__typeof((mask)-(mask)))(mask), \ | |
5690 | + (__typeof((addend)-(addend)))(addend)) : \ | |
5691 | + __arch_atomic_error_bad_argument_size()); \ | |
5692 | }) | |
ad222a6b | 5693 | |
be75205b | 5694 | #endif /* __tilegx__ */ |
ad222a6b | 5695 | |
ad222a6b | 5696 | |
be75205b PS |
5697 | -#define atomic_exchange(mem, newvalue) \ |
5698 | - __atomic_update(mem, newvalue, exch, 0, newvalue, __value) | |
5699 | +#define arch_atomic_exchange(mem, newvalue) \ | |
5700 | + __arch_atomic_update(mem, newvalue, exch, 0, newvalue, __value) | |
5701 | ||
5702 | -#define atomic_add(mem, value) \ | |
5703 | - __atomic_update(mem, value, fetchadd, -1, value, __old + __value) | |
5704 | +#define arch_atomic_add(mem, value) \ | |
5705 | + __arch_atomic_update(mem, value, fetchadd, -1, value, __old + __value) | |
5706 | ||
5707 | -#define atomic_sub(mem, value) atomic_add((mem), -(value)) | |
5708 | +#define arch_atomic_sub(mem, value) arch_atomic_add((mem), -(value)) | |
5709 | ||
5710 | -#define atomic_increment(mem) atomic_add((mem), 1) | |
5711 | +#define arch_atomic_increment(mem) arch_atomic_add((mem), 1) | |
5712 | ||
5713 | -#define atomic_decrement(mem) atomic_add((mem), -1) | |
5714 | +#define arch_atomic_decrement(mem) arch_atomic_add((mem), -1) | |
5715 | ||
5716 | -#define atomic_and(mem, mask) \ | |
5717 | - __atomic_update(mem, mask, fetchand, mask, 0, __old & __value) | |
5718 | +#define arch_atomic_and(mem, mask) \ | |
5719 | + __arch_atomic_update(mem, mask, fetchand, mask, 0, __old & __value) | |
5720 | ||
5721 | -#define atomic_or(mem, mask) \ | |
5722 | - __atomic_update(mem, mask, fetchor, ~mask, mask, __old | __value) | |
5723 | +#define arch_atomic_or(mem, mask) \ | |
5724 | + __arch_atomic_update(mem, mask, fetchor, ~mask, mask, __old | __value) | |
5725 | ||
5726 | -#define atomic_bit_set(mem, bit) \ | |
5727 | +#define arch_atomic_xor(mem, mask) \ | |
5728 | + __arch_atomic_update_cmpxchg(mem, mask, __old ^ __value) | |
ad222a6b | 5729 | + |
be75205b PS |
5730 | +#define arch_atomic_nand(mem, mask) \ |
5731 | + __arch_atomic_update_cmpxchg(mem, mask, ~(__old & __value)) | |
ad222a6b | 5732 | + |
be75205b PS |
5733 | +#define arch_atomic_bit_set(mem, bit) \ |
5734 | ({ \ | |
5735 | __typeof(*(mem)) __mask = (__typeof(*(mem)))1 << (bit); \ | |
5736 | - __mask & atomic_or((mem), __mask); \ | |
5737 | + __mask & arch_atomic_or((mem), __mask); \ | |
5738 | }) | |
ad222a6b | 5739 | |
be75205b PS |
5740 | -#define atomic_bit_clear(mem, bit) \ |
5741 | +#define arch_atomic_bit_clear(mem, bit) \ | |
5742 | ({ \ | |
5743 | __typeof(*(mem)) __mask = (__typeof(*(mem)))1 << (bit); \ | |
5744 | - __mask & atomic_and((mem), ~__mask); \ | |
5745 | + __mask & arch_atomic_and((mem), ~__mask); \ | |
5746 | }) | |
ad222a6b | 5747 | |
be75205b PS |
5748 | #ifdef __tilegx__ |
5749 | @@ -275,9 +282,9 @@ | |
5750 | This accessor is provided for compatibility with TILEPro, which | |
5751 | required an explicit atomic operation for stores that needed | |
5752 | to be atomic with respect to other atomic methods in this header. */ | |
5753 | -#define atomic_write(mem, value) ((void) (*(mem) = (value))) | |
5754 | +#define arch_atomic_write(mem, value) ((void) (*(mem) = (value))) | |
5755 | #else | |
5756 | -#define atomic_write(mem, value) \ | |
5757 | +#define arch_atomic_write(mem, value) \ | |
5758 | do { \ | |
5759 | __typeof(mem) __aw_mem = (mem); \ | |
5760 | __typeof(value) __aw_val = (value); \ | |
5761 | @@ -285,26 +292,26 @@ | |
5762 | __aw_intval = (__typeof((value) - (value)))__aw_val; \ | |
5763 | switch (sizeof(*__aw_mem)) { \ | |
5764 | case 8: \ | |
5765 | - __atomic_update_cmpxchg(__aw_mem, __aw_val, __value); \ | |
5766 | + __arch_atomic_update_cmpxchg(__aw_mem, __aw_val, __value); \ | |
5767 | break; \ | |
5768 | case 4: \ | |
5769 | - __atomic_update_4((int *)__aw_mem, 0, __aw_intval); \ | |
5770 | + __arch_atomic_update_4((int *)__aw_mem, 0, __aw_intval); \ | |
5771 | break; \ | |
5772 | case 2: \ | |
5773 | __aw_off = 8 * ((long)__aw_mem & 0x2); \ | |
5774 | __aw_mask = 0xffffU << __aw_off; \ | |
5775 | __aw_mem32 = (unsigned int *)((long)__aw_mem & ~0x2); \ | |
5776 | __aw_val32 = (__aw_intval << __aw_off) & __aw_mask; \ | |
5777 | - __atomic_update_cmpxchg(__aw_mem32, __aw_val32, \ | |
5778 | - (__old & ~__aw_mask) | __value); \ | |
5779 | + __arch_atomic_update_cmpxchg(__aw_mem32, __aw_val32, \ | |
5780 | + (__old & ~__aw_mask) | __value); \ | |
5781 | break; \ | |
5782 | case 1: \ | |
5783 | __aw_off = 8 * ((long)__aw_mem & 0x3); \ | |
5784 | __aw_mask = 0xffU << __aw_off; \ | |
5785 | __aw_mem32 = (unsigned int *)((long)__aw_mem & ~0x3); \ | |
5786 | __aw_val32 = (__aw_intval << __aw_off) & __aw_mask; \ | |
5787 | - __atomic_update_cmpxchg(__aw_mem32, __aw_val32, \ | |
5788 | - (__old & ~__aw_mask) | __value); \ | |
5789 | + __arch_atomic_update_cmpxchg(__aw_mem32, __aw_val32, \ | |
5790 | + (__old & ~__aw_mask) | __value); \ | |
5791 | break; \ | |
5792 | } \ | |
5793 | } while (0) | |
5794 | @@ -315,15 +322,15 @@ | |
5795 | This macro prevents loads or stores from being moved by the compiler | |
5796 | across the macro. Any loaded value that was loaded before this | |
5797 | macro must then be reloaded by the compiler. */ | |
5798 | -#define atomic_compiler_barrier() __asm__ __volatile__("" ::: "memory") | |
5799 | +#define arch_atomic_compiler_barrier() __asm__ __volatile__("" ::: "memory") | |
5800 | ||
5801 | /* Full memory barrier. | |
5802 | ||
5803 | - This macro has the semantics of atomic_compiler_barrer(), but also | |
5804 | + This macro has the semantics of arch_atomic_compiler_barrer(), but also | |
5805 | ensures that previous stores are visible to other cores, and that | |
5806 | all previous loaded values have been placed into their target | |
5807 | register on this core. */ | |
5808 | -#define atomic_full_barrier() __insn_mf() | |
5809 | +#define arch_atomic_full_barrier() __insn_mf() | |
5810 | ||
5811 | /* Read memory barrier. | |
5812 | ||
5813 | @@ -335,9 +342,9 @@ | |
5814 | On current TILE chips a read barrier is implemented as a full barrier, | |
5815 | but this may not be true in later versions of the architecture. | |
5816 | ||
5817 | - See also atomic_acquire_barrier() for the appropriate idiom to use | |
5818 | + See also arch_atomic_acquire_barrier() for the appropriate idiom to use | |
5819 | to ensure no reads are lifted above an atomic lock instruction. */ | |
5820 | -#define atomic_read_barrier() atomic_full_barrier() | |
5821 | +#define arch_atomic_read_barrier() arch_atomic_full_barrier() | |
5822 | ||
5823 | /* Write memory barrier. | |
5824 | ||
5825 | @@ -349,9 +356,9 @@ | |
5826 | On current TILE chips a write barrier is implemented as a full barrier, | |
5827 | but this may not be true in later versions of the architecture. | |
5828 | ||
5829 | - See also atomic_release_barrier() for the appropriate idiom to use | |
5830 | + See also arch_atomic_release_barrier() for the appropriate idiom to use | |
5831 | to ensure all writes are complete prior to an atomic unlock instruction. */ | |
5832 | -#define atomic_write_barrier() atomic_full_barrier() | |
5833 | +#define arch_atomic_write_barrier() arch_atomic_full_barrier() | |
5834 | ||
5835 | /* Lock acquisition barrier. | |
5836 | ||
5837 | @@ -367,10 +374,10 @@ | |
5838 | This should be done after the atomic operation that actually | |
5839 | acquires the lock, and in conjunction with a "control dependency" | |
5840 | that checks the atomic operation result to see if the lock was | |
5841 | - in fact acquired. See the atomic_read_barrier() macro | |
5842 | + in fact acquired. See the arch_atomic_read_barrier() macro | |
5843 | for a heavier-weight barrier to use in certain unusual constructs, | |
5844 | - or atomic_acquire_barrier_value() if no control dependency exists. */ | |
5845 | -#define atomic_acquire_barrier() atomic_compiler_barrier() | |
5846 | + or arch_atomic_acquire_barrier_value() if no control dependency exists. */ | |
5847 | +#define arch_atomic_acquire_barrier() arch_atomic_compiler_barrier() | |
5848 | ||
5849 | /* Lock release barrier. | |
5850 | ||
5851 | @@ -383,7 +390,7 @@ | |
5852 | for locking, that is, when leaving a critical section. This should | |
5853 | be done before the operation (such as a store of zero) that | |
5854 | actually releases the lock. */ | |
5855 | -#define atomic_release_barrier() atomic_write_barrier() | |
5856 | +#define arch_atomic_release_barrier() arch_atomic_write_barrier() | |
5857 | ||
5858 | /* Barrier until the read of a particular value is complete. | |
5859 | ||
5860 | @@ -400,7 +407,7 @@ | |
5861 | atomic instruction, even if the value itself is not checked. This | |
5862 | guarantees that if the atomic instruction succeeded in taking the lock, | |
5863 | the lock was held before any reads in the critical section issued. */ | |
5864 | -#define atomic_acquire_barrier_value(val) \ | |
5865 | +#define arch_atomic_acquire_barrier_value(val) \ | |
5866 | __asm__ __volatile__("move %0, %0" :: "r"(val)) | |
5867 | ||
5868 | /* Access the given variable in memory exactly once. | |
5869 | @@ -421,8 +428,9 @@ | |
5870 | ||
5871 | Note that multiple uses of this macro are guaranteed to be ordered, | |
5872 | i.e. the compiler will not reorder stores or loads that are wrapped | |
5873 | - in atomic_access_once(). */ | |
5874 | -#define atomic_access_once(x) (*(volatile __typeof(x) *)&(x)) | |
5875 | + in arch_atomic_access_once(). */ | |
5876 | +#define arch_atomic_access_once(x) (*(volatile __typeof(x) *)&(x)) | |
5877 | ||
5878 | ||
5879 | + | |
5880 | #endif /* !_ATOMIC_H_ */ | |
5881 | Index: libgcc/config/tilepro/linux-unwind.h | |
5882 | =================================================================== | |
5883 | --- libgcc/config/tilepro/linux-unwind.h (.../tags/gcc_4_7_0_release) (wersja 187906) | |
5884 | +++ libgcc/config/tilepro/linux-unwind.h (.../branches/gcc-4_7-branch) (wersja 187906) | |
5885 | @@ -61,7 +61,7 @@ | |
5886 | ||
5887 | struct rt_sigframe { | |
5888 | unsigned char save_area[C_ABI_SAVE_AREA_SIZE]; | |
5889 | - struct siginfo info; | |
5890 | + siginfo_t info; | |
5891 | struct ucontext uc; | |
5892 | } *rt_; | |
5893 | ||
5894 | Index: libgcc/config/tilepro/atomic.c | |
5895 | =================================================================== | |
5896 | --- libgcc/config/tilepro/atomic.c (.../tags/gcc_4_7_0_release) (wersja 187906) | |
5897 | +++ libgcc/config/tilepro/atomic.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
5898 | @@ -63,18 +63,12 @@ | |
5899 | ||
5900 | #define __unused __attribute__((unused)) | |
5901 | ||
5902 | -/* Provide additional methods not implemented by atomic.h. */ | |
5903 | -#define atomic_xor(mem, mask) \ | |
5904 | - __atomic_update_cmpxchg(mem, mask, __old ^ __value) | |
5905 | -#define atomic_nand(mem, mask) \ | |
5906 | - __atomic_update_cmpxchg(mem, mask, ~(__old & __value)) | |
5907 | - | |
5908 | #define __atomic_fetch_and_do(type, size, opname) \ | |
5909 | type \ | |
5910 | __atomic_fetch_##opname##_##size(type* p, type i, int model) \ | |
5911 | { \ | |
5912 | pre_atomic_barrier(model); \ | |
5913 | - type rv = atomic_##opname(p, i); \ | |
5914 | + type rv = arch_atomic_##opname(p, i); \ | |
5915 | post_atomic_barrier(model); \ | |
5916 | return rv; \ | |
5917 | } | |
5918 | @@ -96,7 +90,7 @@ | |
5919 | __atomic_##opname##_fetch_##size(type* p, type i, int model) \ | |
5920 | { \ | |
5921 | pre_atomic_barrier(model); \ | |
5922 | - type rv = atomic_##opname(p, i) op i; \ | |
5923 | + type rv = arch_atomic_##opname(p, i) op i; \ | |
5924 | post_atomic_barrier(model); \ | |
5925 | return rv; \ | |
5926 | } | |
5927 | @@ -120,7 +114,7 @@ | |
5928 | { \ | |
5929 | type oldval = *oldvalp; \ | |
5930 | pre_atomic_barrier(models); \ | |
5931 | - type retval = atomic_val_compare_and_exchange(ptr, oldval, newval); \ | |
5932 | + type retval = arch_atomic_val_compare_and_exchange(ptr, oldval, newval); \ | |
5933 | post_atomic_barrier(models); \ | |
5934 | bool success = (retval == oldval); \ | |
5935 | *oldvalp = retval; \ | |
5936 | @@ -131,7 +125,7 @@ | |
5937 | __atomic_exchange_##size(volatile type* ptr, type val, int model) \ | |
5938 | { \ | |
5939 | pre_atomic_barrier(model); \ | |
5940 | - type retval = atomic_exchange(ptr, val); \ | |
5941 | + type retval = arch_atomic_exchange(ptr, val); \ | |
5942 | post_atomic_barrier(model); \ | |
5943 | return retval; \ | |
5944 | } | |
5945 | @@ -159,7 +153,7 @@ | |
5946 | type oldval = (oldword >> shift) & valmask; \ | |
5947 | if (__builtin_expect((oldval == *guess), 1)) { \ | |
5948 | unsigned int word = (oldword & bgmask) | ((val & valmask) << shift); \ | |
5949 | - oldword = atomic_val_compare_and_exchange(p, oldword, word); \ | |
5950 | + oldword = arch_atomic_val_compare_and_exchange(p, oldword, word); \ | |
5951 | oldval = (oldword >> shift) & valmask; \ | |
5952 | } \ | |
5953 | post_atomic_barrier(models); \ | |
5954 | @@ -187,7 +181,7 @@ | |
5955 | oldval = (oldword >> shift) & valmask; \ | |
5956 | val = expr; \ | |
5957 | unsigned int word = (oldword & bgmask) | ((val & valmask) << shift); \ | |
5958 | - xword = atomic_val_compare_and_exchange(p, oldword, word); \ | |
5959 | + xword = arch_atomic_val_compare_and_exchange(p, oldword, word); \ | |
5960 | } while (__builtin_expect(xword != oldword, 0)); \ | |
5961 | bottom \ | |
5962 | } | |
5963 | Index: libgcc/config/avr/lib1funcs.S | |
5964 | =================================================================== | |
5965 | --- libgcc/config/avr/lib1funcs.S (.../tags/gcc_4_7_0_release) (wersja 187906) | |
5966 | +++ libgcc/config/avr/lib1funcs.S (.../branches/gcc-4_7-branch) (wersja 187906) | |
5967 | @@ -25,7 +25,9 @@ | |
5968 | #define __zero_reg__ r1 | |
5969 | #define __tmp_reg__ r0 | |
5970 | #define __SREG__ 0x3f | |
5971 | +#if defined (__AVR_HAVE_SPH__) | |
5972 | #define __SP_H__ 0x3e | |
5973 | +#endif | |
5974 | #define __SP_L__ 0x3d | |
5975 | #define __RAMPZ__ 0x3B | |
5976 | #define __EIND__ 0x3C | |
5977 | @@ -1258,7 +1260,7 @@ | |
5978 | ||
5979 | #if defined (__AVR_HAVE_JMP_CALL__) | |
5980 | # define SPEED_DIV 8 | |
5981 | -#elif defined (__AVR_HAVE_MOVW__) && !defined (__AVR_HAVE_8BIT_SP__) | |
5982 | +#elif defined (__AVR_HAVE_MOVW__) && defined (__AVR_HAVE_SPH__) | |
5983 | # define SPEED_DIV 16 | |
5984 | #else | |
5985 | # define SPEED_DIV 0 | |
5986 | @@ -1540,10 +1542,10 @@ | |
5987 | ||
5988 | 4: ;; Epilogue: Restore the Z = 12 Registers and return | |
5989 | in r28, __SP_L__ | |
5990 | -#if defined (__AVR_HAVE_8BIT_SP__) | |
5991 | +#if defined (__AVR_HAVE_SPH__) | |
5992 | + in r29, __SP_H__ | |
5993 | +#else | |
5994 | clr r29 | |
5995 | -#else | |
5996 | - in r29, __SP_H__ | |
5997 | #endif /* #SP = 8/16 */ | |
5998 | ldi r30, 12 | |
5999 | XJMP __epilogue_restores__ + ((18 - 12) * 2) | |
6000 | @@ -1691,7 +1693,7 @@ | |
6001 | push r17 | |
6002 | push r28 | |
6003 | push r29 | |
6004 | -#if defined (__AVR_HAVE_8BIT_SP__) | |
6005 | +#if !defined (__AVR_HAVE_SPH__) | |
6006 | in r28,__SP_L__ | |
6007 | sub r28,r26 | |
6008 | out __SP_L__,r28 | |
6009 | @@ -1747,7 +1749,7 @@ | |
6010 | ldd r16,Y+4 | |
6011 | ldd r17,Y+3 | |
6012 | ldd r26,Y+2 | |
6013 | -#if defined (__AVR_HAVE_8BIT_SP__) | |
6014 | +#if !defined (__AVR_HAVE_SPH__) | |
6015 | ldd r29,Y+1 | |
6016 | add r28,r30 | |
6017 | out __SP_L__,r28 | |
6018 | @@ -1893,6 +1895,10 @@ | |
6019 | cpc r27, r17 | |
6020 | brne .L__do_copy_data_loop | |
6021 | #endif /* !defined(__AVR_HAVE_ELPMX__) && !defined(__AVR_HAVE_ELPM__) */ | |
6022 | +#if defined (__AVR_HAVE_ELPM__) && defined (__AVR_HAVE_RAMPD__) | |
6023 | + ;; Reset RAMPZ to 0 so that EBI devices don't read garbage from RAM | |
6024 | + out __RAMPZ__, __zero_reg__ | |
6025 | +#endif /* ELPM && RAMPD */ | |
6026 | ENDF __do_copy_data | |
6027 | #endif /* L_copy_data */ | |
6028 | ||
6029 | @@ -1920,7 +1926,7 @@ | |
6030 | #ifdef L_ctors | |
6031 | .section .init6,"ax",@progbits | |
6032 | DEFUN __do_global_ctors | |
6033 | -#if defined(__AVR_HAVE_RAMPZ__) | |
6034 | +#if defined(__AVR_HAVE_ELPM__) | |
6035 | ldi r17, hi8(__ctors_start) | |
6036 | ldi r28, lo8(__ctors_end) | |
6037 | ldi r29, hi8(__ctors_end) | |
6038 | @@ -1953,14 +1959,14 @@ | |
6039 | cpi r28, lo8(__ctors_start) | |
6040 | cpc r29, r17 | |
6041 | brne .L__do_global_ctors_loop | |
6042 | -#endif /* defined(__AVR_HAVE_RAMPZ__) */ | |
6043 | +#endif /* defined(__AVR_HAVE_ELPM__) */ | |
6044 | ENDF __do_global_ctors | |
6045 | #endif /* L_ctors */ | |
6046 | ||
6047 | #ifdef L_dtors | |
6048 | .section .fini6,"ax",@progbits | |
6049 | DEFUN __do_global_dtors | |
6050 | -#if defined(__AVR_HAVE_RAMPZ__) | |
6051 | +#if defined(__AVR_HAVE_ELPM__) | |
6052 | ldi r17, hi8(__dtors_end) | |
6053 | ldi r28, lo8(__dtors_start) | |
6054 | ldi r29, hi8(__dtors_start) | |
6055 | @@ -1993,7 +1999,7 @@ | |
6056 | cpi r28, lo8(__dtors_end) | |
6057 | cpc r29, r17 | |
6058 | brne .L__do_global_dtors_loop | |
6059 | -#endif /* defined(__AVR_HAVE_RAMPZ__) */ | |
6060 | +#endif /* defined(__AVR_HAVE_ELPM__) */ | |
6061 | ENDF __do_global_dtors | |
6062 | #endif /* L_dtors */ | |
6063 | ||
6064 | @@ -2001,18 +2007,21 @@ | |
6065 | ||
6066 | #ifdef L_tablejump_elpm | |
6067 | DEFUN __tablejump_elpm__ | |
6068 | -#if defined (__AVR_HAVE_ELPM__) | |
6069 | -#if defined (__AVR_HAVE_LPMX__) | |
6070 | +#if defined (__AVR_HAVE_ELPMX__) | |
6071 | elpm __tmp_reg__, Z+ | |
6072 | elpm r31, Z | |
6073 | mov r30, __tmp_reg__ | |
6074 | +#if defined (__AVR_HAVE_RAMPD__) | |
6075 | + ;; Reset RAMPZ to 0 so that EBI devices don't read garbage from RAM | |
6076 | + out __RAMPZ__, __zero_reg__ | |
6077 | +#endif /* RAMPD */ | |
6078 | #if defined (__AVR_HAVE_EIJMP_EICALL__) | |
6079 | eijmp | |
6080 | #else | |
6081 | ijmp | |
6082 | #endif | |
6083 | ||
6084 | -#else | |
6085 | +#elif defined (__AVR_HAVE_ELPM__) | |
6086 | elpm | |
6087 | adiw r30, 1 | |
6088 | push r0 | |
6089 | @@ -2024,7 +2033,6 @@ | |
6090 | #endif | |
6091 | ret | |
6092 | #endif | |
6093 | -#endif /* defined (__AVR_HAVE_ELPM__) */ | |
6094 | ENDF __tablejump_elpm__ | |
6095 | #endif /* defined (L_tablejump_elpm) */ | |
6096 | ||
6097 | @@ -2114,11 +2122,18 @@ | |
6098 | adiw r30, 1 | |
6099 | .endif | |
6100 | #endif | |
6101 | +#if defined (__AVR_HAVE_ELPM__) && defined (__AVR_HAVE_RAMPD__) | |
6102 | +.if \dest == D0+\n-1 | |
6103 | + ;; Reset RAMPZ to 0 so that EBI devices don't read garbage from RAM | |
6104 | + out __RAMPZ__, __zero_reg__ | |
6105 | +.endif | |
6106 | +#endif | |
6107 | .endm ; .xload | |
6108 | ||
6109 | #if defined (L_xload_1) | |
6110 | DEFUN __xload_1 | |
6111 | -#if defined (__AVR_HAVE_LPMX__) && !defined (__AVR_HAVE_RAMPZ__) | |
6112 | +#if defined (__AVR_HAVE_LPMX__) && !defined (__AVR_HAVE_ELPM__) | |
6113 | + sbrc HHI8, 7 | |
6114 | ld D0, Z | |
6115 | sbrs HHI8, 7 | |
6116 | lpm D0, Z | |
6117 | @@ -2126,14 +2141,14 @@ | |
6118 | #else | |
6119 | sbrc HHI8, 7 | |
6120 | rjmp 1f | |
6121 | -#if defined (__AVR_HAVE_RAMPZ__) | |
6122 | +#if defined (__AVR_HAVE_ELPM__) | |
6123 | out __RAMPZ__, HHI8 | |
6124 | -#endif /* __AVR_HAVE_RAMPZ__ */ | |
6125 | +#endif /* __AVR_HAVE_ELPM__ */ | |
6126 | .xload D0, 1 | |
6127 | ret | |
6128 | 1: ld D0, Z | |
6129 | ret | |
6130 | -#endif /* LPMx && ! RAMPZ */ | |
6131 | +#endif /* LPMx && ! ELPM */ | |
6132 | ENDF __xload_1 | |
6133 | #endif /* L_xload_1 */ | |
6134 | ||
6135 | @@ -2141,9 +2156,9 @@ | |
6136 | DEFUN __xload_2 | |
6137 | sbrc HHI8, 7 | |
6138 | rjmp 1f | |
6139 | -#if defined (__AVR_HAVE_RAMPZ__) | |
6140 | +#if defined (__AVR_HAVE_ELPM__) | |
6141 | out __RAMPZ__, HHI8 | |
6142 | -#endif /* __AVR_HAVE_RAMPZ__ */ | |
6143 | +#endif /* __AVR_HAVE_ELPM__ */ | |
6144 | .xload D0, 2 | |
6145 | .xload D1, 2 | |
6146 | ret | |
6147 | @@ -2157,9 +2172,9 @@ | |
6148 | DEFUN __xload_3 | |
6149 | sbrc HHI8, 7 | |
6150 | rjmp 1f | |
6151 | -#if defined (__AVR_HAVE_RAMPZ__) | |
6152 | +#if defined (__AVR_HAVE_ELPM__) | |
6153 | out __RAMPZ__, HHI8 | |
6154 | -#endif /* __AVR_HAVE_RAMPZ__ */ | |
6155 | +#endif /* __AVR_HAVE_ELPM__ */ | |
6156 | .xload D0, 3 | |
6157 | .xload D1, 3 | |
6158 | .xload D2, 3 | |
6159 | @@ -2175,9 +2190,9 @@ | |
6160 | DEFUN __xload_4 | |
6161 | sbrc HHI8, 7 | |
6162 | rjmp 1f | |
6163 | -#if defined (__AVR_HAVE_RAMPZ__) | |
6164 | +#if defined (__AVR_HAVE_ELPM__) | |
6165 | out __RAMPZ__, HHI8 | |
6166 | -#endif /* __AVR_HAVE_RAMPZ__ */ | |
6167 | +#endif /* __AVR_HAVE_ELPM__ */ | |
6168 | .xload D0, 4 | |
6169 | .xload D1, 4 | |
6170 | .xload D2, 4 | |
6171 | @@ -2219,7 +2234,7 @@ | |
6172 | ||
6173 | ;; Read from Flash | |
6174 | ||
6175 | -#if defined (__AVR_HAVE_RAMPZ__) | |
6176 | +#if defined (__AVR_HAVE_ELPM__) | |
6177 | out __RAMPZ__, HHI8 | |
6178 | #endif | |
6179 | ||
6180 | @@ -2243,6 +2258,10 @@ | |
6181 | st X+, r0 | |
6182 | sbiw LOOP, 1 | |
6183 | brne 0b | |
6184 | +#if defined (__AVR_HAVE_ELPM__) && defined (__AVR_HAVE_RAMPD__) | |
6185 | + ;; Reset RAMPZ to 0 so that EBI devices don't read garbage from RAM | |
6186 | + out __RAMPZ__, __zero_reg__ | |
6187 | +#endif /* ELPM && RAMPD */ | |
6188 | ret | |
6189 | ||
6190 | ;; Read from RAM | |
6191 | @@ -2252,7 +2271,7 @@ | |
6192 | ;; and store that Byte to RAM Destination | |
6193 | st X+, r0 | |
6194 | sbiw LOOP, 1 | |
6195 | - brne 0b | |
6196 | + brne 1b | |
6197 | ret | |
6198 | ENDF __movmemx_hi | |
6199 | ||
6200 | Index: libgcc/config/pa/linux-unwind.h | |
6201 | =================================================================== | |
6202 | --- libgcc/config/pa/linux-unwind.h (.../tags/gcc_4_7_0_release) (wersja 187906) | |
6203 | +++ libgcc/config/pa/linux-unwind.h (.../branches/gcc-4_7-branch) (wersja 187906) | |
6204 | @@ -1,5 +1,5 @@ | |
6205 | /* DWARF2 EH unwinding support for PA Linux. | |
6206 | - Copyright (C) 2004, 2005, 2009 Free Software Foundation, Inc. | |
6207 | + Copyright (C) 2004, 2005, 2009, 2012 Free Software Foundation, Inc. | |
6208 | ||
6209 | This file is part of GCC. | |
6210 | ||
6211 | @@ -63,7 +63,7 @@ | |
6212 | int i; | |
6213 | struct sigcontext *sc; | |
6214 | struct rt_sigframe { | |
6215 | - struct siginfo info; | |
6216 | + siginfo_t info; | |
6217 | struct ucontext uc; | |
6218 | } *frame; | |
6219 | ||
6220 | Index: libgcc/config/xtensa/linux-unwind.h | |
6221 | =================================================================== | |
6222 | --- libgcc/config/xtensa/linux-unwind.h (.../tags/gcc_4_7_0_release) (wersja 187906) | |
6223 | +++ libgcc/config/xtensa/linux-unwind.h (.../branches/gcc-4_7-branch) (wersja 187906) | |
6224 | @@ -1,5 +1,5 @@ | |
6225 | /* DWARF2 EH unwinding support for Xtensa. | |
6226 | - Copyright (C) 2008, 2009 Free Software Foundation, Inc. | |
6227 | + Copyright (C) 2008, 2009, 2012 Free Software Foundation, Inc. | |
6228 | ||
6229 | This file is part of GCC. | |
6230 | ||
6231 | @@ -62,7 +62,7 @@ | |
6232 | struct sigcontext *sc; | |
6233 | ||
6234 | struct rt_sigframe { | |
6235 | - struct siginfo info; | |
6236 | + siginfo_t info; | |
6237 | struct ucontext uc; | |
6238 | } *rt_; | |
6239 | ||
6240 | Index: libgcc/config/mips/linux-unwind.h | |
6241 | =================================================================== | |
6242 | --- libgcc/config/mips/linux-unwind.h (.../tags/gcc_4_7_0_release) (wersja 187906) | |
6243 | +++ libgcc/config/mips/linux-unwind.h (.../branches/gcc-4_7-branch) (wersja 187906) | |
6244 | @@ -1,5 +1,6 @@ | |
6245 | /* DWARF2 EH unwinding support for MIPS Linux. | |
6246 | - Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. | |
6247 | + Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2012 Free Software | |
6248 | + Foundation, Inc. | |
6249 | ||
6250 | This file is part of GCC. | |
6251 | ||
6252 | @@ -75,7 +76,7 @@ | |
6253 | struct rt_sigframe { | |
6254 | u_int32_t ass[4]; /* Argument save space for o32. */ | |
6255 | u_int32_t trampoline[2]; | |
6256 | - struct siginfo info; | |
6257 | + siginfo_t info; | |
6258 | _sig_ucontext_t uc; | |
6259 | } *rt_ = context->cfa; | |
6260 | sc = &rt_->uc.uc_mcontext; | |
6261 | Index: libgcc/config/bfin/linux-unwind.h | |
6262 | =================================================================== | |
6263 | --- libgcc/config/bfin/linux-unwind.h (.../tags/gcc_4_7_0_release) (wersja 187906) | |
6264 | +++ libgcc/config/bfin/linux-unwind.h (.../branches/gcc-4_7-branch) (wersja 187906) | |
6265 | @@ -1,5 +1,5 @@ | |
6266 | /* DWARF2 EH unwinding support for Blackfin. | |
6267 | - Copyright (C) 2007, 2009 Free Software Foundation, Inc. | |
6268 | + Copyright (C) 2007, 2009, 2012 Free Software Foundation, Inc. | |
6269 | ||
6270 | This file is part of GCC. | |
6271 | ||
6272 | @@ -48,10 +48,10 @@ | |
6273 | { | |
6274 | struct rt_sigframe { | |
6275 | int sig; | |
6276 | - struct siginfo *pinfo; | |
6277 | + siginfo_t *pinfo; | |
6278 | void *puc; | |
6279 | char retcode[8]; | |
6280 | - struct siginfo info; | |
6281 | + siginfo_t info; | |
6282 | struct ucontext uc; | |
6283 | } *rt_ = context->cfa; | |
6284 | ||
6285 | Index: libgcc/configure | |
6286 | =================================================================== | |
6287 | --- libgcc/configure (.../tags/gcc_4_7_0_release) (wersja 187906) | |
6288 | +++ libgcc/configure (.../branches/gcc-4_7-branch) (wersja 187906) | |
6289 | @@ -552,42 +552,7 @@ | |
6290 | PACKAGE_URL='http://www.gnu.org/software/libgcc/' | |
6291 | ||
6292 | ac_unique_file="static-object.mk" | |
6293 | -# Factoring default headers for most tests. | |
6294 | -ac_includes_default="\ | |
6295 | -#include <stdio.h> | |
6296 | -#ifdef HAVE_SYS_TYPES_H | |
6297 | -# include <sys/types.h> | |
6298 | -#endif | |
6299 | -#ifdef HAVE_SYS_STAT_H | |
6300 | -# include <sys/stat.h> | |
6301 | -#endif | |
6302 | -#ifdef STDC_HEADERS | |
6303 | -# include <stdlib.h> | |
6304 | -# include <stddef.h> | |
6305 | -#else | |
6306 | -# ifdef HAVE_STDLIB_H | |
6307 | -# include <stdlib.h> | |
6308 | -# endif | |
6309 | -#endif | |
6310 | -#ifdef HAVE_STRING_H | |
6311 | -# if !defined STDC_HEADERS && defined HAVE_MEMORY_H | |
6312 | -# include <memory.h> | |
6313 | -# endif | |
6314 | -# include <string.h> | |
6315 | -#endif | |
6316 | -#ifdef HAVE_STRINGS_H | |
6317 | -# include <strings.h> | |
6318 | -#endif | |
6319 | -#ifdef HAVE_INTTYPES_H | |
6320 | -# include <inttypes.h> | |
6321 | -#endif | |
6322 | -#ifdef HAVE_STDINT_H | |
6323 | -# include <stdint.h> | |
6324 | -#endif | |
6325 | -#ifdef HAVE_UNISTD_H | |
6326 | -# include <unistd.h> | |
6327 | -#endif" | |
6328 | - | |
6329 | +ac_includes_default='/* none */' | |
6330 | ac_subst_vars='LTLIBOBJS | |
6331 | LIBOBJS | |
6332 | asm_hidden_op | |
6333 | @@ -605,8 +570,6 @@ | |
6334 | decimal_float | |
6335 | long_double_type_size | |
6336 | double_type_size | |
6337 | -EGREP | |
6338 | -GREP | |
6339 | CPP | |
6340 | OBJEXT | |
6341 | EXEEXT | |
6342 | @@ -1732,35 +1695,6 @@ | |
6343 | return $ac_retval | |
6344 | ||
6345 | } # ac_fn_c_compute_int | |
6346 | - | |
6347 | -# ac_fn_c_check_header_preproc LINENO HEADER VAR | |
6348 | -# ---------------------------------------------- | |
6349 | -# Tests whether HEADER is present, setting the cache variable VAR accordingly. | |
6350 | -ac_fn_c_check_header_preproc () | |
6351 | -{ | |
6352 | - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack | |
6353 | - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 | |
6354 | -$as_echo_n "checking for $2... " >&6; } | |
6355 | -if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then : | |
6356 | - $as_echo_n "(cached) " >&6 | |
6357 | -else | |
6358 | - cat confdefs.h - <<_ACEOF >conftest.$ac_ext | |
6359 | -/* end confdefs.h. */ | |
6360 | -#include <$2> | |
6361 | -_ACEOF | |
6362 | -if ac_fn_c_try_cpp "$LINENO"; then : | |
6363 | - eval "$3=yes" | |
6364 | -else | |
6365 | - eval "$3=no" | |
6366 | -fi | |
6367 | -rm -f conftest.err conftest.$ac_ext | |
6368 | -fi | |
6369 | -eval ac_res=\$$3 | |
6370 | - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 | |
6371 | -$as_echo "$ac_res" >&6; } | |
6372 | - eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} | |
6373 | - | |
6374 | -} # ac_fn_c_check_header_preproc | |
6375 | cat >config.log <<_ACEOF | |
6376 | This file contains any messages produced by compilers while | |
6377 | running configure, to aid debugging if configure makes a mistake. | |
6378 | @@ -2117,7 +2051,10 @@ | |
6379 | ||
6380 | ||
6381 | ||
6382 | +# The libgcc should not depend on any header files | |
6383 | ||
6384 | + | |
6385 | + | |
6386 | # Check whether --with-target-subdir was given. | |
6387 | if test "${with_target_subdir+set}" = set; then : | |
6388 | withval=$with_target_subdir; | |
6389 | @@ -4027,264 +3964,6 @@ | |
6390 | ||
6391 | ||
6392 | ||
6393 | -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 | |
6394 | -$as_echo_n "checking for grep that handles long lines and -e... " >&6; } | |
6395 | -if test "${ac_cv_path_GREP+set}" = set; then : | |
6396 | - $as_echo_n "(cached) " >&6 | |
6397 | -else | |
6398 | - if test -z "$GREP"; then | |
6399 | - ac_path_GREP_found=false | |
6400 | - # Loop through the user's path and test for each of PROGNAME-LIST | |
6401 | - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR | |
6402 | -for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin | |
6403 | -do | |
6404 | - IFS=$as_save_IFS | |
6405 | - test -z "$as_dir" && as_dir=. | |
6406 | - for ac_prog in grep ggrep; do | |
6407 | - for ac_exec_ext in '' $ac_executable_extensions; do | |
6408 | - ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" | |
6409 | - { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue | |
6410 | -# Check for GNU ac_path_GREP and select it if it is found. | |
6411 | - # Check for GNU $ac_path_GREP | |
6412 | -case `"$ac_path_GREP" --version 2>&1` in | |
6413 | -*GNU*) | |
6414 | - ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; | |
6415 | -*) | |
6416 | - ac_count=0 | |
6417 | - $as_echo_n 0123456789 >"conftest.in" | |
6418 | - while : | |
6419 | - do | |
6420 | - cat "conftest.in" "conftest.in" >"conftest.tmp" | |
6421 | - mv "conftest.tmp" "conftest.in" | |
6422 | - cp "conftest.in" "conftest.nl" | |
6423 | - $as_echo 'GREP' >> "conftest.nl" | |
6424 | - "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break | |
6425 | - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break | |
6426 | - as_fn_arith $ac_count + 1 && ac_count=$as_val | |
6427 | - if test $ac_count -gt ${ac_path_GREP_max-0}; then | |
6428 | - # Best one so far, save it but keep looking for a better one | |
6429 | - ac_cv_path_GREP="$ac_path_GREP" | |
6430 | - ac_path_GREP_max=$ac_count | |
6431 | - fi | |
6432 | - # 10*(2^10) chars as input seems more than enough | |
6433 | - test $ac_count -gt 10 && break | |
6434 | - done | |
6435 | - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; | |
6436 | -esac | |
6437 | - | |
6438 | - $ac_path_GREP_found && break 3 | |
6439 | - done | |
6440 | - done | |
6441 | - done | |
6442 | -IFS=$as_save_IFS | |
6443 | - if test -z "$ac_cv_path_GREP"; then | |
6444 | - as_fn_error "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 | |
6445 | - fi | |
6446 | -else | |
6447 | - ac_cv_path_GREP=$GREP | |
6448 | -fi | |
6449 | - | |
6450 | -fi | |
6451 | -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 | |
6452 | -$as_echo "$ac_cv_path_GREP" >&6; } | |
6453 | - GREP="$ac_cv_path_GREP" | |
6454 | - | |
6455 | - | |
6456 | -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 | |
6457 | -$as_echo_n "checking for egrep... " >&6; } | |
6458 | -if test "${ac_cv_path_EGREP+set}" = set; then : | |
6459 | - $as_echo_n "(cached) " >&6 | |
6460 | -else | |
6461 | - if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 | |
6462 | - then ac_cv_path_EGREP="$GREP -E" | |
6463 | - else | |
6464 | - if test -z "$EGREP"; then | |
6465 | - ac_path_EGREP_found=false | |
6466 | - # Loop through the user's path and test for each of PROGNAME-LIST | |
6467 | - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR | |
6468 | -for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin | |
6469 | -do | |
6470 | - IFS=$as_save_IFS | |
6471 | - test -z "$as_dir" && as_dir=. | |
6472 | - for ac_prog in egrep; do | |
6473 | - for ac_exec_ext in '' $ac_executable_extensions; do | |
6474 | - ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" | |
6475 | - { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue | |
6476 | -# Check for GNU ac_path_EGREP and select it if it is found. | |
6477 | - # Check for GNU $ac_path_EGREP | |
6478 | -case `"$ac_path_EGREP" --version 2>&1` in | |
6479 | -*GNU*) | |
6480 | - ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; | |
6481 | -*) | |
6482 | - ac_count=0 | |
6483 | - $as_echo_n 0123456789 >"conftest.in" | |
6484 | - while : | |
6485 | - do | |
6486 | - cat "conftest.in" "conftest.in" >"conftest.tmp" | |
6487 | - mv "conftest.tmp" "conftest.in" | |
6488 | - cp "conftest.in" "conftest.nl" | |
6489 | - $as_echo 'EGREP' >> "conftest.nl" | |
6490 | - "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break | |
6491 | - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break | |
6492 | - as_fn_arith $ac_count + 1 && ac_count=$as_val | |
6493 | - if test $ac_count -gt ${ac_path_EGREP_max-0}; then | |
6494 | - # Best one so far, save it but keep looking for a better one | |
6495 | - ac_cv_path_EGREP="$ac_path_EGREP" | |
6496 | - ac_path_EGREP_max=$ac_count | |
6497 | - fi | |
6498 | - # 10*(2^10) chars as input seems more than enough | |
6499 | - test $ac_count -gt 10 && break | |
6500 | - done | |
6501 | - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; | |
6502 | -esac | |
6503 | - | |
6504 | - $ac_path_EGREP_found && break 3 | |
6505 | - done | |
6506 | - done | |
6507 | - done | |
6508 | -IFS=$as_save_IFS | |
6509 | - if test -z "$ac_cv_path_EGREP"; then | |
6510 | - as_fn_error "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 | |
6511 | - fi | |
6512 | -else | |
6513 | - ac_cv_path_EGREP=$EGREP | |
6514 | -fi | |
6515 | - | |
6516 | - fi | |
6517 | -fi | |
6518 | -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 | |
6519 | -$as_echo "$ac_cv_path_EGREP" >&6; } | |
6520 | - EGREP="$ac_cv_path_EGREP" | |
6521 | - | |
6522 | - | |
6523 | -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 | |
6524 | -$as_echo_n "checking for ANSI C header files... " >&6; } | |
6525 | -if test "${ac_cv_header_stdc+set}" = set; then : | |
6526 | - $as_echo_n "(cached) " >&6 | |
6527 | -else | |
6528 | - cat confdefs.h - <<_ACEOF >conftest.$ac_ext | |
6529 | -/* end confdefs.h. */ | |
6530 | -#include <stdlib.h> | |
6531 | -#include <stdarg.h> | |
6532 | -#include <string.h> | |
6533 | -#include <float.h> | |
6534 | - | |
6535 | -int | |
6536 | -main () | |
6537 | -{ | |
6538 | - | |
6539 | - ; | |
6540 | - return 0; | |
6541 | -} | |
6542 | -_ACEOF | |
6543 | -if ac_fn_c_try_compile "$LINENO"; then : | |
6544 | - ac_cv_header_stdc=yes | |
6545 | -else | |
6546 | - ac_cv_header_stdc=no | |
6547 | -fi | |
6548 | -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext | |
6549 | - | |
6550 | -if test $ac_cv_header_stdc = yes; then | |
6551 | - # SunOS 4.x string.h does not declare mem*, contrary to ANSI. | |
6552 | - cat confdefs.h - <<_ACEOF >conftest.$ac_ext | |
6553 | -/* end confdefs.h. */ | |
6554 | -#include <string.h> | |
6555 | - | |
6556 | -_ACEOF | |
6557 | -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | | |
6558 | - $EGREP "memchr" >/dev/null 2>&1; then : | |
6559 | - | |
6560 | -else | |
6561 | - ac_cv_header_stdc=no | |
6562 | -fi | |
6563 | -rm -f conftest* | |
6564 | - | |
6565 | -fi | |
6566 | - | |
6567 | -if test $ac_cv_header_stdc = yes; then | |
6568 | - # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. | |
6569 | - cat confdefs.h - <<_ACEOF >conftest.$ac_ext | |
6570 | -/* end confdefs.h. */ | |
6571 | -#include <stdlib.h> | |
6572 | - | |
6573 | -_ACEOF | |
6574 | -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | | |
6575 | - $EGREP "free" >/dev/null 2>&1; then : | |
6576 | - | |
6577 | -else | |
6578 | - ac_cv_header_stdc=no | |
6579 | -fi | |
6580 | -rm -f conftest* | |
6581 | - | |
6582 | -fi | |
6583 | - | |
6584 | -if test $ac_cv_header_stdc = yes; then | |
6585 | - # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. | |
6586 | - if test "$cross_compiling" = yes; then : | |
6587 | - : | |
6588 | -else | |
6589 | - cat confdefs.h - <<_ACEOF >conftest.$ac_ext | |
6590 | -/* end confdefs.h. */ | |
6591 | -#include <ctype.h> | |
6592 | -#include <stdlib.h> | |
6593 | -#if ((' ' & 0x0FF) == 0x020) | |
6594 | -# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') | |
6595 | -# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) | |
6596 | -#else | |
6597 | -# define ISLOWER(c) \ | |
6598 | - (('a' <= (c) && (c) <= 'i') \ | |
6599 | - || ('j' <= (c) && (c) <= 'r') \ | |
6600 | - || ('s' <= (c) && (c) <= 'z')) | |
6601 | -# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) | |
6602 | -#endif | |
6603 | - | |
6604 | -#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) | |
6605 | -int | |
6606 | -main () | |
6607 | -{ | |
6608 | - int i; | |
6609 | - for (i = 0; i < 256; i++) | |
6610 | - if (XOR (islower (i), ISLOWER (i)) | |
6611 | - || toupper (i) != TOUPPER (i)) | |
6612 | - return 2; | |
6613 | - return 0; | |
6614 | -} | |
6615 | -_ACEOF | |
6616 | -if ac_fn_c_try_run "$LINENO"; then : | |
6617 | - | |
6618 | -else | |
6619 | - ac_cv_header_stdc=no | |
6620 | -fi | |
6621 | -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ | |
6622 | - conftest.$ac_objext conftest.beam conftest.$ac_ext | |
6623 | -fi | |
6624 | - | |
6625 | -fi | |
6626 | -fi | |
6627 | -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 | |
6628 | -$as_echo "$ac_cv_header_stdc" >&6; } | |
6629 | -if test $ac_cv_header_stdc = yes; then | |
6630 | - | |
6631 | -$as_echo "#define STDC_HEADERS 1" >>confdefs.h | |
6632 | - | |
6633 | -fi | |
6634 | - | |
6635 | -# On IRIX 5.3, sys/types and inttypes.h are conflicting. | |
6636 | -for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ | |
6637 | - inttypes.h stdint.h unistd.h | |
6638 | -do : | |
6639 | - as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` | |
6640 | -ac_fn_c_check_header_preproc "$LINENO" "$ac_header" "$as_ac_Header" | |
6641 | -eval as_val=\$$as_ac_Header | |
6642 | - if test "x$as_val" = x""yes; then : | |
6643 | - cat >>confdefs.h <<_ACEOF | |
6644 | -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 | |
6645 | -_ACEOF | |
6646 | - | |
6647 | -fi | |
6648 | -done | |
6649 | - | |
6650 | - | |
6651 | # The cast to long int works around a bug in the HP C Compiler | |
6652 | # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects | |
6653 | # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. | |
6654 | Index: gcc/tree-vrp.c | |
6655 | =================================================================== | |
6656 | --- gcc/tree-vrp.c (.../tags/gcc_4_7_0_release) (wersja 187906) | |
6657 | +++ gcc/tree-vrp.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
6658 | @@ -695,17 +695,22 @@ | |
6659 | /* If VAR is a default definition of a parameter, the variable can | |
6660 | take any value in VAR's type. */ | |
6661 | sym = SSA_NAME_VAR (var); | |
6662 | - if (SSA_NAME_IS_DEFAULT_DEF (var) | |
6663 | - && TREE_CODE (sym) == PARM_DECL) | |
6664 | + if (SSA_NAME_IS_DEFAULT_DEF (var)) | |
6665 | { | |
6666 | - /* Try to use the "nonnull" attribute to create ~[0, 0] | |
6667 | - anti-ranges for pointers. Note that this is only valid with | |
6668 | - default definitions of PARM_DECLs. */ | |
6669 | - if (POINTER_TYPE_P (TREE_TYPE (sym)) | |
6670 | - && nonnull_arg_p (sym)) | |
6671 | + if (TREE_CODE (sym) == PARM_DECL) | |
6672 | + { | |
6673 | + /* Try to use the "nonnull" attribute to create ~[0, 0] | |
6674 | + anti-ranges for pointers. Note that this is only valid with | |
6675 | + default definitions of PARM_DECLs. */ | |
6676 | + if (POINTER_TYPE_P (TREE_TYPE (sym)) | |
6677 | + && nonnull_arg_p (sym)) | |
6678 | + set_value_range_to_nonnull (vr, TREE_TYPE (sym)); | |
6679 | + else | |
6680 | + set_value_range_to_varying (vr); | |
6681 | + } | |
6682 | + else if (TREE_CODE (sym) == RESULT_DECL | |
6683 | + && DECL_BY_REFERENCE (sym)) | |
6684 | set_value_range_to_nonnull (vr, TREE_TYPE (sym)); | |
6685 | - else | |
6686 | - set_value_range_to_varying (vr); | |
6687 | } | |
6688 | ||
6689 | return vr; | |
6690 | @@ -3242,8 +3247,8 @@ | |
6691 | set_value_range_to_varying (&vr1); | |
6692 | ||
6693 | /* The resulting value range is the union of the operand ranges */ | |
6694 | - vrp_meet (&vr0, &vr1); | |
6695 | copy_value_range (vr, &vr0); | |
6696 | + vrp_meet (vr, &vr1); | |
6697 | } | |
6698 | ||
6699 | ||
6700 | @@ -6442,13 +6447,17 @@ | |
6701 | { | |
6702 | if (vr0->type == VR_UNDEFINED) | |
6703 | { | |
6704 | - copy_value_range (vr0, vr1); | |
6705 | + /* Drop equivalences. See PR53465. */ | |
6706 | + set_value_range (vr0, vr1->type, vr1->min, vr1->max, NULL); | |
6707 | return; | |
6708 | } | |
6709 | ||
6710 | if (vr1->type == VR_UNDEFINED) | |
6711 | { | |
6712 | - /* Nothing to do. VR0 already has the resulting range. */ | |
6713 | + /* VR0 already has the resulting range, just drop equivalences. | |
6714 | + See PR53465. */ | |
6715 | + if (vr0->equiv) | |
6716 | + bitmap_clear (vr0->equiv); | |
6717 | return; | |
6718 | } | |
6719 | ||
6720 | @@ -6590,6 +6599,7 @@ | |
6721 | tree lhs = PHI_RESULT (phi); | |
6722 | value_range_t *lhs_vr = get_value_range (lhs); | |
6723 | value_range_t vr_result = { VR_UNDEFINED, NULL_TREE, NULL_TREE, NULL }; | |
6724 | + bool first = true; | |
6725 | int edges, old_edges; | |
6726 | struct loop *l; | |
6727 | ||
6728 | @@ -6646,7 +6656,11 @@ | |
6729 | fprintf (dump_file, "\n"); | |
6730 | } | |
6731 | ||
6732 | - vrp_meet (&vr_result, &vr_arg); | |
6733 | + if (first) | |
6734 | + copy_value_range (&vr_result, &vr_arg); | |
6735 | + else | |
6736 | + vrp_meet (&vr_result, &vr_arg); | |
6737 | + first = false; | |
6738 | ||
6739 | if (vr_result.type == VR_VARYING) | |
6740 | break; | |
6741 | Index: gcc/doc/extend.texi | |
6742 | =================================================================== | |
6743 | --- gcc/doc/extend.texi (.../tags/gcc_4_7_0_release) (wersja 187906) | |
6744 | +++ gcc/doc/extend.texi (.../branches/gcc-4_7-branch) (wersja 187906) | |
6745 | @@ -1311,18 +1311,18 @@ | |
6746 | #ifdef __FLASH | |
6747 | const __flash int var = 1; | |
6748 | ||
6749 | -int read_i (void) | |
6750 | +int read_var (void) | |
6751 | @{ | |
6752 | - return i; | |
6753 | + return var; | |
6754 | @} | |
6755 | #else | |
6756 | -#include <avr/pgmspace.h> /* From avr-libc */ | |
6757 | +#include <avr/pgmspace.h> /* From AVR-LibC */ | |
6758 | ||
6759 | const int var PROGMEM = 1; | |
6760 | ||
6761 | -int read_i (void) | |
6762 | +int read_var (void) | |
6763 | @{ | |
6764 | - return (int) pgm_read_word (&i); | |
6765 | + return (int) pgm_read_word (&var); | |
6766 | @} | |
6767 | #endif /* __FLASH */ | |
6768 | @end example | |
6769 | @@ -1332,7 +1332,8 @@ | |
6770 | accesses to these data will read from generic address space, i.e.@: | |
6771 | from RAM, | |
6772 | so that you need special accessors like @code{pgm_read_byte} | |
6773 | -from @w{@uref{http://nongnu.org/avr-libc/user-manual,avr-libc}}. | |
6774 | +from @w{@uref{http://nongnu.org/avr-libc/user-manual,AVR-LibC}} | |
6775 | +together with attribute @code{progmem}. | |
6776 | ||
6777 | @b{Limitations and caveats} | |
6778 | ||
6779 | @@ -1345,7 +1346,7 @@ | |
6780 | @code{__memx}. | |
6781 | ||
6782 | @item | |
6783 | -If you use one if the @code{__flash@var{N}} address spaces | |
6784 | +If you use one of the @code{__flash@var{N}} address spaces | |
6785 | you will have to arrange your linker skript to locate the | |
6786 | @code{.progmem@var{N}.data} sections according to your needs. | |
6787 | ||
6788 | @@ -2713,6 +2714,51 @@ | |
6789 | ||
6790 | This attribute is ignored for R8C target. | |
6791 | ||
6792 | +@item ifunc ("@var{resolver}") | |
6793 | +@cindex @code{ifunc} attribute | |
6794 | +The @code{ifunc} attribute is used to mark a function as an indirect | |
6795 | +function using the STT_GNU_IFUNC symbol type extension to the ELF | |
6796 | +standard. This allows the resolution of the symbol value to be | |
6797 | +determined dynamically at load time, and an optimized version of the | |
6798 | +routine can be selected for the particular processor or other system | |
6799 | +characteristics determined then. To use this attribute, first define | |
6800 | +the implementation functions available, and a resolver function that | |
6801 | +returns a pointer to the selected implementation function. The | |
6802 | +implementation functions' declarations must match the API of the | |
6803 | +function being implemented, the resolver's declaration is be a | |
6804 | +function returning pointer to void function returning void: | |
6805 | + | |
6806 | +@smallexample | |
6807 | +void *my_memcpy (void *dst, const void *src, size_t len) | |
6808 | +@{ | |
6809 | + @dots{} | |
6810 | +@} | |
6811 | + | |
6812 | +static void (*resolve_memcpy (void)) (void) | |
6813 | +@{ | |
6814 | + return my_memcpy; // we'll just always select this routine | |
6815 | +@} | |
6816 | +@end smallexample | |
6817 | + | |
6818 | +The exported header file declaring the function the user calls would | |
6819 | +contain: | |
6820 | + | |
6821 | +@smallexample | |
6822 | +extern void *memcpy (void *, const void *, size_t); | |
6823 | +@end smallexample | |
6824 | + | |
6825 | +allowing the user to call this as a regular function, unaware of the | |
6826 | +implementation. Finally, the indirect function needs to be defined in | |
6827 | +the same translation unit as the resolver function: | |
6828 | + | |
6829 | +@smallexample | |
6830 | +void *memcpy (void *, const void *, size_t) | |
6831 | + __attribute__ ((ifunc ("resolve_memcpy"))); | |
6832 | +@end smallexample | |
6833 | + | |
6834 | +Indirect functions cannot be weak, and require a recent binutils (at | |
6835 | +least version 2.20.1), and GNU C library (at least version 2.11.1). | |
6836 | + | |
6837 | @item interrupt | |
6838 | @cindex interrupt handler functions | |
6839 | Use this attribute on the ARM, AVR, CR16, Epiphany, M32C, M32R/D, m68k, MeP, MIPS, | |
6840 | @@ -2725,7 +2771,13 @@ | |
6841 | Note, interrupt handlers for the Blackfin, H8/300, H8/300H, H8S, MicroBlaze, | |
6842 | and SH processors can be specified via the @code{interrupt_handler} attribute. | |
6843 | ||
6844 | -Note, on the AVR, interrupts will be enabled inside the function. | |
6845 | +Note, on the AVR, the hardware globally disables interrupts when an | |
6846 | +interrupt is executed. The first instruction of an interrupt handler | |
6847 | +declared with this attribute will be a @code{SEI} instruction to | |
6848 | +re-enable interrupts. See also the @code{signal} function attribute | |
6849 | +that does not insert a @code{SEI} instuction. If both @code{signal} and | |
6850 | +@code{interrupt} are specified for the same function, @code{signal} | |
6851 | +will be silently ignored. | |
6852 | ||
6853 | Note, for the ARM, you can specify the kind of interrupt to be handled by | |
6854 | adding an optional parameter to the interrupt attribute like this: | |
6855 | @@ -2821,51 +2873,6 @@ | |
6856 | handlers intended to be used with the @code{BRK} opcode (i.e. those | |
6857 | that must end with @code{RETB} instead of @code{RETI}). | |
6858 | ||
6859 | -@item ifunc ("@var{resolver}") | |
6860 | -@cindex @code{ifunc} attribute | |
6861 | -The @code{ifunc} attribute is used to mark a function as an indirect | |
6862 | -function using the STT_GNU_IFUNC symbol type extension to the ELF | |
6863 | -standard. This allows the resolution of the symbol value to be | |
6864 | -determined dynamically at load time, and an optimized version of the | |
6865 | -routine can be selected for the particular processor or other system | |
6866 | -characteristics determined then. To use this attribute, first define | |
6867 | -the implementation functions available, and a resolver function that | |
6868 | -returns a pointer to the selected implementation function. The | |
6869 | -implementation functions' declarations must match the API of the | |
6870 | -function being implemented, the resolver's declaration is be a | |
6871 | -function returning pointer to void function returning void: | |
6872 | - | |
6873 | -@smallexample | |
6874 | -void *my_memcpy (void *dst, const void *src, size_t len) | |
6875 | -@{ | |
6876 | - @dots{} | |
6877 | -@} | |
6878 | - | |
6879 | -static void (*resolve_memcpy (void)) (void) | |
6880 | -@{ | |
6881 | - return my_memcpy; // we'll just always select this routine | |
6882 | -@} | |
6883 | -@end smallexample | |
6884 | - | |
6885 | -The exported header file declaring the function the user calls would | |
6886 | -contain: | |
6887 | - | |
6888 | -@smallexample | |
6889 | -extern void *memcpy (void *, const void *, size_t); | |
6890 | -@end smallexample | |
6891 | - | |
6892 | -allowing the user to call this as a regular function, unaware of the | |
6893 | -implementation. Finally, the indirect function needs to be defined in | |
6894 | -the same translation unit as the resolver function: | |
6895 | - | |
6896 | -@smallexample | |
6897 | -void *memcpy (void *, const void *, size_t) | |
6898 | - __attribute__ ((ifunc ("resolve_memcpy"))); | |
6899 | -@end smallexample | |
6900 | - | |
6901 | -Indirect functions cannot be weak, and require a recent binutils (at | |
6902 | -least version 2.20.1), and GNU C library (at least version 2.11.1). | |
6903 | - | |
6904 | @item interrupt_handler | |
6905 | @cindex interrupt handler functions on the Blackfin, m68k, H8/300 and SH processors | |
6906 | Use this attribute on the Blackfin, m68k, H8/300, H8/300H, H8S, and SH to | |
6907 | @@ -3470,12 +3477,24 @@ | |
6908 | See longcall/shortcall. | |
6909 | ||
6910 | @item signal | |
6911 | -@cindex signal handler functions on the AVR processors | |
6912 | +@cindex interrupt handler functions on the AVR processors | |
6913 | Use this attribute on the AVR to indicate that the specified | |
6914 | -function is a signal handler. The compiler will generate function | |
6915 | -entry and exit sequences suitable for use in a signal handler when this | |
6916 | -attribute is present. Interrupts will be disabled inside the function. | |
6917 | +function is an interrupt handler. The compiler will generate function | |
6918 | +entry and exit sequences suitable for use in an interrupt handler when this | |
6919 | +attribute is present. | |
6920 | ||
6921 | +See also the @code{interrupt} function attribute. | |
6922 | + | |
6923 | +The AVR hardware globally disables interrupts when an interrupt is executed. | |
6924 | +Interrupt handler functions defined with the @code{signal} attribute | |
6925 | +do not re-enable interrupts. It is save to enable interrupts in a | |
6926 | +@code{signal} handler. This ``save'' only applies to the code | |
6927 | +generated by the compiler and not to the IRQ-layout of the | |
6928 | +application which is responsibility of the application. | |
6929 | + | |
6930 | +If both @code{signal} and @code{interrupt} are specified for the same | |
6931 | +function, @code{signal} will be silently ignored. | |
6932 | + | |
6933 | @item sp_switch | |
6934 | Use this attribute on the SH to indicate an @code{interrupt_handler} | |
6935 | function should switch to an alternate stack. It expects a string | |
6936 | @@ -4782,7 +4801,7 @@ | |
6937 | In order to read data located with the @code{progmem} attribute | |
6938 | (inline) assembler must be used. | |
6939 | @example | |
6940 | -/* Use custom macros from @w{@uref{http://nongnu.org/avr-libc/user-manual,avr-libc}} */ | |
6941 | +/* Use custom macros from @w{@uref{http://nongnu.org/avr-libc/user-manual,AVR-LibC}} */ | |
6942 | #include <avr/pgmspace.h> | |
6943 | ||
6944 | /* Locate var in flash memory */ | |
6945 | Index: gcc/doc/invoke.texi | |
6946 | =================================================================== | |
6947 | --- gcc/doc/invoke.texi (.../tags/gcc_4_7_0_release) (wersja 187906) | |
6948 | +++ gcc/doc/invoke.texi (.../branches/gcc-4_7-branch) (wersja 187906) | |
6949 | @@ -11085,8 +11085,7 @@ | |
6950 | ||
6951 | @item -mtiny-stack | |
6952 | @opindex mtiny-stack | |
6953 | -Only use the lower 8@tie{}bits of the stack pointer and assume that the high | |
6954 | -byte of SP is always zero. | |
6955 | +Only change the lower 8@tie{}bits of the stack pointer. | |
6956 | @end table | |
6957 | ||
6958 | @subsubsection @code{EIND} and Devices with more than 128 Ki Bytes of Flash | |
6959 | Index: gcc/doc/install.texi | |
6960 | =================================================================== | |
6961 | --- gcc/doc/install.texi (.../tags/gcc_4_7_0_release) (wersja 187906) | |
6962 | +++ gcc/doc/install.texi (.../branches/gcc-4_7-branch) (wersja 187906) | |
6963 | @@ -1238,7 +1238,7 @@ | |
6964 | ||
6965 | @item --with-llsc | |
6966 | On MIPS targets, make @option{-mllsc} the default when no | |
6967 | -@option{-mno-lsc} option is passed. This is the default for | |
6968 | +@option{-mno-llsc} option is passed. This is the default for | |
6969 | Linux-based targets, as the kernel will emulate them if the ISA does | |
6970 | not provide them. | |
6971 | ||
6972 | Index: gcc/godump.c | |
6973 | =================================================================== | |
6974 | --- gcc/godump.c (.../tags/gcc_4_7_0_release) (wersja 187906) | |
6975 | +++ gcc/godump.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
6976 | @@ -1024,12 +1024,25 @@ | |
6977 | fprintf (go_dump_file, "type _%s ", | |
6978 | IDENTIFIER_POINTER (DECL_NAME (decl))); | |
6979 | go_output_type (container); | |
6980 | + | |
6981 | + if (RECORD_OR_UNION_TYPE_P (TREE_TYPE (decl))) | |
6982 | + { | |
6983 | + HOST_WIDE_INT size = int_size_in_bytes (TREE_TYPE (decl)); | |
6984 | + | |
6985 | + if (size > 0) | |
6986 | + fprintf (go_dump_file, | |
6987 | + "\nconst _sizeof_%s = " HOST_WIDE_INT_PRINT_DEC, | |
6988 | + IDENTIFIER_POINTER (DECL_NAME (decl)), | |
6989 | + size); | |
6990 | + } | |
6991 | + | |
6992 | pointer_set_insert (container->decls_seen, decl); | |
6993 | } | |
6994 | else if (RECORD_OR_UNION_TYPE_P (TREE_TYPE (decl))) | |
6995 | { | |
6996 | void **slot; | |
6997 | const char *type; | |
6998 | + HOST_WIDE_INT size; | |
6999 | ||
7000 | type = IDENTIFIER_POINTER (TYPE_NAME (TREE_TYPE ((decl)))); | |
7001 | /* If type defined already, skip. */ | |
7002 | @@ -1047,6 +1060,13 @@ | |
7003 | fprintf (go_dump_file, "type _%s ", | |
7004 | IDENTIFIER_POINTER (TYPE_NAME (TREE_TYPE (decl)))); | |
7005 | go_output_type (container); | |
7006 | + | |
7007 | + size = int_size_in_bytes (TREE_TYPE (decl)); | |
7008 | + if (size > 0) | |
7009 | + fprintf (go_dump_file, | |
7010 | + "\nconst _sizeof_%s = " HOST_WIDE_INT_PRINT_DEC, | |
7011 | + IDENTIFIER_POINTER (TYPE_NAME (TREE_TYPE (decl))), | |
7012 | + size); | |
7013 | } | |
7014 | else | |
7015 | return; | |
7016 | Index: gcc/lto-symtab.c | |
7017 | =================================================================== | |
7018 | --- gcc/lto-symtab.c (.../tags/gcc_4_7_0_release) (wersja 187906) | |
7019 | +++ gcc/lto-symtab.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
7020 | @@ -215,8 +215,8 @@ | |
7021 | { | |
7022 | fprintf (cgraph_dump_file, "Replacing cgraph node %s/%i by %s/%i" | |
7023 | " for symbol %s\n", | |
7024 | - cgraph_node_name (node), node->uid, | |
7025 | - cgraph_node_name (prevailing_node), | |
7026 | + xstrdup (cgraph_node_name (node)), node->uid, | |
7027 | + xstrdup (cgraph_node_name (prevailing_node)), | |
7028 | prevailing_node->uid, | |
7029 | IDENTIFIER_POINTER ((*targetm.asm_out.mangle_assembler_name) | |
7030 | (IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (node->decl))))); | |
7031 | Index: gcc/tree-ssa-tail-merge.c | |
7032 | =================================================================== | |
7033 | --- gcc/tree-ssa-tail-merge.c (.../tags/gcc_4_7_0_release) (wersja 187906) | |
7034 | +++ gcc/tree-ssa-tail-merge.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
7035 | @@ -1123,18 +1123,31 @@ | |
7036 | } | |
7037 | } | |
7038 | ||
7039 | -/* Let GSI skip backwards over local defs. */ | |
7040 | +/* Let GSI skip backwards over local defs. Return the earliest vuse in VUSE. | |
7041 | + Return true in VUSE_ESCAPED if the vuse influenced a SSA_OP_DEF of one of the | |
7042 | + processed statements. */ | |
7043 | ||
7044 | static void | |
7045 | -gsi_advance_bw_nondebug_nonlocal (gimple_stmt_iterator *gsi) | |
7046 | +gsi_advance_bw_nondebug_nonlocal (gimple_stmt_iterator *gsi, tree *vuse, | |
7047 | + bool *vuse_escaped) | |
7048 | { | |
7049 | gimple stmt; | |
7050 | + tree lvuse; | |
7051 | ||
7052 | while (true) | |
7053 | { | |
7054 | if (gsi_end_p (*gsi)) | |
7055 | return; | |
7056 | stmt = gsi_stmt (*gsi); | |
7057 | + | |
7058 | + lvuse = gimple_vuse (stmt); | |
7059 | + if (lvuse != NULL_TREE) | |
7060 | + { | |
7061 | + *vuse = lvuse; | |
7062 | + if (!ZERO_SSA_OPERANDS (stmt, SSA_OP_DEF)) | |
7063 | + *vuse_escaped = true; | |
7064 | + } | |
7065 | + | |
7066 | if (!(is_gimple_assign (stmt) && local_def (gimple_get_lhs (stmt)) | |
7067 | && !gimple_has_side_effects (stmt))) | |
7068 | return; | |
7069 | @@ -1150,9 +1163,11 @@ | |
7070 | { | |
7071 | gimple_stmt_iterator gsi1 = gsi_last_nondebug_bb (bb1); | |
7072 | gimple_stmt_iterator gsi2 = gsi_last_nondebug_bb (bb2); | |
7073 | + tree vuse1 = NULL_TREE, vuse2 = NULL_TREE; | |
7074 | + bool vuse_escaped = false; | |
7075 | ||
7076 | - gsi_advance_bw_nondebug_nonlocal (&gsi1); | |
7077 | - gsi_advance_bw_nondebug_nonlocal (&gsi2); | |
7078 | + gsi_advance_bw_nondebug_nonlocal (&gsi1, &vuse1, &vuse_escaped); | |
7079 | + gsi_advance_bw_nondebug_nonlocal (&gsi2, &vuse2, &vuse_escaped); | |
7080 | ||
7081 | while (!gsi_end_p (gsi1) && !gsi_end_p (gsi2)) | |
7082 | { | |
7083 | @@ -1161,13 +1176,20 @@ | |
7084 | ||
7085 | gsi_prev_nondebug (&gsi1); | |
7086 | gsi_prev_nondebug (&gsi2); | |
7087 | - gsi_advance_bw_nondebug_nonlocal (&gsi1); | |
7088 | - gsi_advance_bw_nondebug_nonlocal (&gsi2); | |
7089 | + gsi_advance_bw_nondebug_nonlocal (&gsi1, &vuse1, &vuse_escaped); | |
7090 | + gsi_advance_bw_nondebug_nonlocal (&gsi2, &vuse2, &vuse_escaped); | |
7091 | } | |
7092 | ||
7093 | if (!(gsi_end_p (gsi1) && gsi_end_p (gsi2))) | |
7094 | return; | |
7095 | ||
7096 | + /* If the incoming vuses are not the same, and the vuse escaped into an | |
7097 | + SSA_OP_DEF, then merging the 2 blocks will change the value of the def, | |
7098 | + which potentially means the semantics of one of the blocks will be changed. | |
7099 | + TODO: make this check more precise. */ | |
7100 | + if (vuse_escaped && vuse1 != vuse2) | |
7101 | + return; | |
7102 | + | |
7103 | if (dump_file) | |
7104 | fprintf (dump_file, "find_duplicates: <bb %d> duplicate of <bb %d>\n", | |
7105 | bb1->index, bb2->index); | |
7106 | Index: gcc/c-family/ChangeLog | |
7107 | =================================================================== | |
7108 | --- gcc/c-family/ChangeLog (.../tags/gcc_4_7_0_release) (wersja 187906) | |
7109 | +++ gcc/c-family/ChangeLog (.../branches/gcc-4_7-branch) (wersja 187906) | |
7110 | @@ -1,3 +1,8 @@ | |
7111 | +2012-03-23 William Bader <williambader@hotmail.com> | |
7112 | + | |
7113 | + PR c/52682 | |
7114 | + * c-lex.c (c_lex_with_flags): Avoid declarations after stmts. | |
7115 | + | |
7116 | 2012-03-22 Release Manager | |
7117 | ||
7118 | * GCC 4.7.0 released. | |
7119 | Index: gcc/c-family/c-lex.c | |
7120 | =================================================================== | |
7121 | --- gcc/c-family/c-lex.c (.../tags/gcc_4_7_0_release) (wersja 187906) | |
7122 | +++ gcc/c-family/c-lex.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
7123 | @@ -342,6 +342,8 @@ | |
7124 | ||
7125 | if (flags & CPP_N_USERDEF) | |
7126 | { | |
7127 | + char *str; | |
7128 | + tree literal; | |
7129 | tree suffix_id = get_identifier (suffix); | |
7130 | int len = tok->val.str.len - strlen (suffix); | |
7131 | /* If this is going to be used as a C string to pass to a | |
7132 | @@ -350,9 +352,9 @@ | |
7133 | (const char *) tok->val.str.text); | |
7134 | TREE_TYPE (num_string) = char_array_type_node; | |
7135 | num_string = fix_string_type (num_string); | |
7136 | - char *str = CONST_CAST (char *, TREE_STRING_POINTER (num_string)); | |
7137 | + str = CONST_CAST (char *, TREE_STRING_POINTER (num_string)); | |
7138 | str[len] = '\0'; | |
7139 | - tree literal = build_userdef_literal (suffix_id, *value, | |
7140 | + literal = build_userdef_literal (suffix_id, *value, | |
7141 | num_string); | |
7142 | *value = literal; | |
7143 | } | |
7144 | Index: gcc/java/typeck.c | |
7145 | =================================================================== | |
7146 | --- gcc/java/typeck.c (.../tags/gcc_4_7_0_release) (wersja 187906) | |
7147 | +++ gcc/java/typeck.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
7148 | @@ -189,6 +189,13 @@ | |
7149 | return unsignedp ? unsigned_int_type_node : int_type_node; | |
7150 | if (bits <= TYPE_PRECISION (long_type_node)) | |
7151 | return unsignedp ? unsigned_long_type_node : long_type_node; | |
7152 | + /* A 64-bit target with TImode requires 128-bit type definitions | |
7153 | + for bitsizetype. This is fixed more properly elsewhere | |
7154 | + beginning in 4.8. */ | |
7155 | + if (int128_integer_type_node | |
7156 | + && bits == TYPE_PRECISION (int128_integer_type_node)) | |
7157 | + return (unsignedp ? int128_unsigned_type_node | |
7158 | + : int128_integer_type_node); | |
7159 | return 0; | |
7160 | } | |
7161 | ||
7162 | Index: gcc/java/ChangeLog | |
7163 | =================================================================== | |
7164 | --- gcc/java/ChangeLog (.../tags/gcc_4_7_0_release) (wersja 187906) | |
7165 | +++ gcc/java/ChangeLog (.../branches/gcc-4_7-branch) (wersja 187906) | |
7166 | @@ -1,3 +1,7 @@ | |
7167 | +2012-05-11 Bill Schmidt <wschmidt@linux.vnet.ibm.com> | |
7168 | + | |
7169 | + * typeck.c (java_type_for_size): Handle 128-bit sizes for bitsizetype. | |
7170 | + | |
7171 | 2012-03-22 Release Manager | |
7172 | ||
7173 | * GCC 4.7.0 released. | |
7174 | Index: gcc/DATESTAMP | |
7175 | =================================================================== | |
7176 | --- gcc/DATESTAMP (.../tags/gcc_4_7_0_release) (wersja 187906) | |
7177 | +++ gcc/DATESTAMP (.../branches/gcc-4_7-branch) (wersja 187906) | |
7178 | @@ -1 +1 @@ | |
7179 | -20120322 | |
7180 | +20120526 | |
7181 | Index: gcc/tree.c | |
7182 | =================================================================== | |
7183 | --- gcc/tree.c (.../tags/gcc_4_7_0_release) (wersja 187906) | |
7184 | +++ gcc/tree.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
7185 | @@ -8431,8 +8431,11 @@ | |
7186 | a variable in FN. */ | |
7187 | #define RETURN_TRUE_IF_VAR(T) \ | |
7188 | do { tree _t = (T); \ | |
7189 | - if (_t && _t != error_mark_node && TREE_CODE (_t) != INTEGER_CST \ | |
7190 | - && (!fn || walk_tree (&_t, find_var_from_fn, fn, NULL))) \ | |
7191 | + if (_t != NULL_TREE \ | |
7192 | + && _t != error_mark_node \ | |
7193 | + && TREE_CODE (_t) != INTEGER_CST \ | |
7194 | + && TREE_CODE (_t) != PLACEHOLDER_EXPR \ | |
7195 | + && (!fn || walk_tree (&_t, find_var_from_fn, fn, NULL))) \ | |
7196 | return true; } while (0) | |
7197 | ||
7198 | if (type == error_mark_node) | |
7199 | Index: gcc/ipa-cp.c | |
7200 | =================================================================== | |
7201 | --- gcc/ipa-cp.c (.../tags/gcc_4_7_0_release) (wersja 187906) | |
7202 | +++ gcc/ipa-cp.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
7203 | @@ -2180,8 +2180,9 @@ | |
7204 | if (dump_file) | |
7205 | fprintf (dump_file, " - adding an extra caller %s/%i" | |
7206 | " of %s/%i\n", | |
7207 | - cgraph_node_name (cs->caller), cs->caller->uid, | |
7208 | - cgraph_node_name (val->spec_node), | |
7209 | + xstrdup (cgraph_node_name (cs->caller)), | |
7210 | + cs->caller->uid, | |
7211 | + xstrdup (cgraph_node_name (val->spec_node)), | |
7212 | val->spec_node->uid); | |
7213 | ||
7214 | cgraph_redirect_edge_callee (cs, val->spec_node); | |
7215 | Index: gcc/tree-scalar-evolution.c | |
7216 | =================================================================== | |
7217 | --- gcc/tree-scalar-evolution.c (.../tags/gcc_4_7_0_release) (wersja 187906) | |
7218 | +++ gcc/tree-scalar-evolution.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
7219 | @@ -499,65 +499,6 @@ | |
7220 | return chrec_dont_know; | |
7221 | } | |
7222 | ||
7223 | -/* Determine whether the CHREC is always positive/negative. If the expression | |
7224 | - cannot be statically analyzed, return false, otherwise set the answer into | |
7225 | - VALUE. */ | |
7226 | - | |
7227 | -bool | |
7228 | -chrec_is_positive (tree chrec, bool *value) | |
7229 | -{ | |
7230 | - bool value0, value1, value2; | |
7231 | - tree end_value, nb_iter; | |
7232 | - | |
7233 | - switch (TREE_CODE (chrec)) | |
7234 | - { | |
7235 | - case POLYNOMIAL_CHREC: | |
7236 | - if (!chrec_is_positive (CHREC_LEFT (chrec), &value0) | |
7237 | - || !chrec_is_positive (CHREC_RIGHT (chrec), &value1)) | |
7238 | - return false; | |
7239 | - | |
7240 | - /* FIXME -- overflows. */ | |
7241 | - if (value0 == value1) | |
7242 | - { | |
7243 | - *value = value0; | |
7244 | - return true; | |
7245 | - } | |
7246 | - | |
7247 | - /* Otherwise the chrec is under the form: "{-197, +, 2}_1", | |
7248 | - and the proof consists in showing that the sign never | |
7249 | - changes during the execution of the loop, from 0 to | |
7250 | - loop->nb_iterations. */ | |
7251 | - if (!evolution_function_is_affine_p (chrec)) | |
7252 | - return false; | |
7253 | - | |
7254 | - nb_iter = number_of_latch_executions (get_chrec_loop (chrec)); | |
7255 | - if (chrec_contains_undetermined (nb_iter)) | |
7256 | - return false; | |
7257 | - | |
7258 | -#if 0 | |
7259 | - /* TODO -- If the test is after the exit, we may decrease the number of | |
7260 | - iterations by one. */ | |
7261 | - if (after_exit) | |
7262 | - nb_iter = chrec_fold_minus (type, nb_iter, build_int_cst (type, 1)); | |
7263 | -#endif | |
7264 | - | |
7265 | - end_value = chrec_apply (CHREC_VARIABLE (chrec), chrec, nb_iter); | |
7266 | - | |
7267 | - if (!chrec_is_positive (end_value, &value2)) | |
7268 | - return false; | |
7269 | - | |
7270 | - *value = value0; | |
7271 | - return value0 == value1; | |
7272 | - | |
7273 | - case INTEGER_CST: | |
7274 | - *value = (tree_int_cst_sgn (chrec) == 1); | |
7275 | - return true; | |
7276 | - | |
7277 | - default: | |
7278 | - return false; | |
7279 | - } | |
7280 | -} | |
7281 | - | |
7282 | /* Associate CHREC to SCALAR. */ | |
7283 | ||
7284 | static void | |
7285 | Index: gcc/configure | |
7286 | =================================================================== | |
7287 | --- gcc/configure (.../tags/gcc_4_7_0_release) (wersja 187906) | |
7288 | +++ gcc/configure (.../branches/gcc-4_7-branch) (wersja 187906) | |
7289 | @@ -3394,13 +3394,6 @@ | |
7290 | ||
7291 | fi | |
7292 | ||
7293 | -gnu_ld=`if test x"$gnu_ld_flag" = x"yes"; then echo 1; else echo 0; fi` | |
7294 | - | |
7295 | -cat >>confdefs.h <<_ACEOF | |
7296 | -#define HAVE_GNU_LD $gnu_ld | |
7297 | -_ACEOF | |
7298 | - | |
7299 | - | |
7300 | { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a default linker was specified" >&5 | |
7301 | $as_echo_n "checking whether a default linker was specified... " >&6; } | |
7302 | if test x"${DEFAULT_LINKER+set}" = x"set"; then | |
7303 | @@ -3459,13 +3452,6 @@ | |
7304 | ||
7305 | fi | |
7306 | ||
7307 | -gnu_as=`if test x"$gas_flag" = x"yes"; then echo 1; else echo 0; fi` | |
7308 | - | |
7309 | -cat >>confdefs.h <<_ACEOF | |
7310 | -#define HAVE_GNU_AS $gnu_as | |
7311 | -_ACEOF | |
7312 | - | |
7313 | - | |
7314 | { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a default assembler was specified" >&5 | |
7315 | $as_echo_n "checking whether a default assembler was specified... " >&6; } | |
7316 | if test x"${DEFAULT_ASSEMBLER+set}" = x"set"; then | |
7317 | @@ -11175,6 +11161,20 @@ | |
7318 | ||
7319 | fi | |
7320 | ||
7321 | +gnu_ld_bool=`if test x"$gnu_ld" = x"yes"; then echo 1; else echo 0; fi` | |
7322 | + | |
7323 | +cat >>confdefs.h <<_ACEOF | |
7324 | +#define HAVE_GNU_LD $gnu_ld_bool | |
7325 | +_ACEOF | |
7326 | + | |
7327 | + | |
7328 | +gnu_as_bool=`if test x"$gas" = x"yes"; then echo 1; else echo 0; fi` | |
7329 | + | |
7330 | +cat >>confdefs.h <<_ACEOF | |
7331 | +#define HAVE_GNU_AS $gnu_as_bool | |
7332 | +_ACEOF | |
7333 | + | |
7334 | + | |
7335 | count=a | |
7336 | for f in $host_xm_file; do | |
7337 | count=${count}x | |
7338 | @@ -26474,7 +26474,15 @@ | |
7339 | fi | |
7340 | ||
7341 | case "$target:$tm_file" in | |
7342 | - powerpc64*-*-linux* | powerpc*-*-linux*rs6000/biarch64.h*) | |
7343 | + powerpc64-*-freebsd* | powerpc64*-*-linux* | powerpc*-*-linux*rs6000/biarch64.h*) | |
7344 | + case "$target" in | |
7345 | + *-*-linux*) | |
7346 | + emul_name="-melf64ppc" | |
7347 | + ;; | |
7348 | + *-*-freebsd*) | |
7349 | + emul_name="-melf64ppc_fbsd" | |
7350 | + ;; | |
7351 | + esac | |
7352 | { $as_echo "$as_me:${as_lineno-$LINENO}: checking linker support for omitting dot symbols" >&5 | |
7353 | $as_echo_n "checking linker support for omitting dot symbols... " >&6; } | |
7354 | if test "${gcc_cv_ld_no_dot_syms+set}" = set; then : | |
7355 | @@ -26504,7 +26512,7 @@ | |
7356 | EOF | |
7357 | if $gcc_cv_as -a64 -o conftest1.o conftest1.s > /dev/null 2>&1 \ | |
7358 | && $gcc_cv_as -a64 -o conftest2.o conftest2.s > /dev/null 2>&1 \ | |
7359 | - && $gcc_cv_ld -melf64ppc -o conftest conftest1.o conftest2.o > /dev/null 2>&1; then | |
7360 | + && $gcc_cv_ld $emul_name -o conftest conftest1.o conftest2.o > /dev/null 2>&1; then | |
7361 | gcc_cv_ld_no_dot_syms=yes | |
7362 | fi | |
7363 | rm -f conftest conftest1.o conftest2.o conftest1.s conftest2.s | |
7364 | @@ -26541,7 +26549,7 @@ | |
7365 | ld 9,ie0@got@tprel@l(9) | |
7366 | EOF | |
7367 | if $gcc_cv_as -a64 -o conftest.o conftest.s > /dev/null 2>&1 \ | |
7368 | - && $gcc_cv_ld -melf64ppc --no-toc-sort -o conftest conftest.o > /dev/null 2>&1; then | |
7369 | + && $gcc_cv_ld $emul_name --no-toc-sort -o conftest conftest.o > /dev/null 2>&1; then | |
7370 | gcc_cv_ld_large_toc=yes | |
7371 | fi | |
7372 | rm -f conftest conftest.o conftest.s | |
7373 | Index: gcc/fold-const.c | |
7374 | =================================================================== | |
7375 | --- gcc/fold-const.c (.../tags/gcc_4_7_0_release) (wersja 187906) | |
7376 | +++ gcc/fold-const.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
7377 | @@ -6850,64 +6850,81 @@ | |
7378 | s = integer_one_node; | |
7379 | } | |
7380 | ||
7381 | - for (;; ref = TREE_OPERAND (ref, 0)) | |
7382 | + /* Handle &x.array the same as we would handle &x.array[0]. */ | |
7383 | + if (TREE_CODE (ref) == COMPONENT_REF | |
7384 | + && TREE_CODE (TREE_TYPE (ref)) == ARRAY_TYPE) | |
7385 | { | |
7386 | - if (TREE_CODE (ref) == ARRAY_REF) | |
7387 | + tree domain; | |
7388 | + | |
7389 | + /* Remember if this was a multi-dimensional array. */ | |
7390 | + if (TREE_CODE (TREE_OPERAND (ref, 0)) == ARRAY_REF) | |
7391 | + mdim = true; | |
7392 | + | |
7393 | + domain = TYPE_DOMAIN (TREE_TYPE (ref)); | |
7394 | + if (! domain) | |
7395 | + goto cont; | |
7396 | + itype = TREE_TYPE (domain); | |
7397 | + | |
7398 | + step = TYPE_SIZE_UNIT (TREE_TYPE (TREE_TYPE (ref))); | |
7399 | + if (TREE_CODE (step) != INTEGER_CST) | |
7400 | + goto cont; | |
7401 | + | |
7402 | + if (s) | |
7403 | { | |
7404 | - tree domain; | |
7405 | + if (! tree_int_cst_equal (step, s)) | |
7406 | + goto cont; | |
7407 | + } | |
7408 | + else | |
7409 | + { | |
7410 | + /* Try if delta is a multiple of step. */ | |
7411 | + tree tmp = div_if_zero_remainder (EXACT_DIV_EXPR, op1, step); | |
7412 | + if (! tmp) | |
7413 | + goto cont; | |
7414 | + delta = tmp; | |
7415 | + } | |
7416 | ||
7417 | - /* Remember if this was a multi-dimensional array. */ | |
7418 | - if (TREE_CODE (TREE_OPERAND (ref, 0)) == ARRAY_REF) | |
7419 | - mdim = true; | |
7420 | + /* Only fold here if we can verify we do not overflow one | |
7421 | + dimension of a multi-dimensional array. */ | |
7422 | + if (mdim) | |
7423 | + { | |
7424 | + tree tmp; | |
7425 | ||
7426 | - domain = TYPE_DOMAIN (TREE_TYPE (TREE_OPERAND (ref, 0))); | |
7427 | - if (! domain) | |
7428 | - continue; | |
7429 | - itype = TREE_TYPE (domain); | |
7430 | + if (!TYPE_MIN_VALUE (domain) | |
7431 | + || !TYPE_MAX_VALUE (domain) | |
7432 | + || TREE_CODE (TYPE_MAX_VALUE (domain)) != INTEGER_CST) | |
7433 | + goto cont; | |
7434 | ||
7435 | - step = array_ref_element_size (ref); | |
7436 | - if (TREE_CODE (step) != INTEGER_CST) | |
7437 | - continue; | |
7438 | + tmp = fold_binary_loc (loc, PLUS_EXPR, itype, | |
7439 | + fold_convert_loc (loc, itype, | |
7440 | + TYPE_MIN_VALUE (domain)), | |
7441 | + fold_convert_loc (loc, itype, delta)); | |
7442 | + if (TREE_CODE (tmp) != INTEGER_CST | |
7443 | + || tree_int_cst_lt (TYPE_MAX_VALUE (domain), tmp)) | |
7444 | + goto cont; | |
7445 | + } | |
7446 | ||
7447 | - if (s) | |
7448 | - { | |
7449 | - if (! tree_int_cst_equal (step, s)) | |
7450 | - continue; | |
7451 | - } | |
7452 | - else | |
7453 | - { | |
7454 | - /* Try if delta is a multiple of step. */ | |
7455 | - tree tmp = div_if_zero_remainder (EXACT_DIV_EXPR, op1, step); | |
7456 | - if (! tmp) | |
7457 | - continue; | |
7458 | - delta = tmp; | |
7459 | - } | |
7460 | + /* We found a suitable component reference. */ | |
7461 | ||
7462 | - /* Only fold here if we can verify we do not overflow one | |
7463 | - dimension of a multi-dimensional array. */ | |
7464 | - if (mdim) | |
7465 | - { | |
7466 | - tree tmp; | |
7467 | + pref = TREE_OPERAND (addr, 0); | |
7468 | + ret = copy_node (pref); | |
7469 | + SET_EXPR_LOCATION (ret, loc); | |
7470 | ||
7471 | - if (TREE_CODE (TREE_OPERAND (ref, 1)) != INTEGER_CST | |
7472 | - || !TYPE_MAX_VALUE (domain) | |
7473 | - || TREE_CODE (TYPE_MAX_VALUE (domain)) != INTEGER_CST) | |
7474 | - continue; | |
7475 | + ret = build4_loc (loc, ARRAY_REF, TREE_TYPE (TREE_TYPE (ref)), ret, | |
7476 | + fold_build2_loc | |
7477 | + (loc, PLUS_EXPR, itype, | |
7478 | + fold_convert_loc (loc, itype, | |
7479 | + TYPE_MIN_VALUE | |
7480 | + (TYPE_DOMAIN (TREE_TYPE (ref)))), | |
7481 | + fold_convert_loc (loc, itype, delta)), | |
7482 | + NULL_TREE, NULL_TREE); | |
7483 | + return build_fold_addr_expr_loc (loc, ret); | |
7484 | + } | |
7485 | ||
7486 | - tmp = fold_binary_loc (loc, PLUS_EXPR, itype, | |
7487 | - fold_convert_loc (loc, itype, | |
7488 | - TREE_OPERAND (ref, 1)), | |
7489 | - fold_convert_loc (loc, itype, delta)); | |
7490 | - if (!tmp | |
7491 | - || TREE_CODE (tmp) != INTEGER_CST | |
7492 | - || tree_int_cst_lt (TYPE_MAX_VALUE (domain), tmp)) | |
7493 | - continue; | |
7494 | - } | |
7495 | +cont: | |
7496 | ||
7497 | - break; | |
7498 | - } | |
7499 | - else if (TREE_CODE (ref) == COMPONENT_REF | |
7500 | - && TREE_CODE (TREE_TYPE (ref)) == ARRAY_TYPE) | |
7501 | + for (;; ref = TREE_OPERAND (ref, 0)) | |
7502 | + { | |
7503 | + if (TREE_CODE (ref) == ARRAY_REF) | |
7504 | { | |
7505 | tree domain; | |
7506 | ||
7507 | @@ -6915,12 +6932,12 @@ | |
7508 | if (TREE_CODE (TREE_OPERAND (ref, 0)) == ARRAY_REF) | |
7509 | mdim = true; | |
7510 | ||
7511 | - domain = TYPE_DOMAIN (TREE_TYPE (ref)); | |
7512 | + domain = TYPE_DOMAIN (TREE_TYPE (TREE_OPERAND (ref, 0))); | |
7513 | if (! domain) | |
7514 | continue; | |
7515 | itype = TREE_TYPE (domain); | |
7516 | ||
7517 | - step = TYPE_SIZE_UNIT (TREE_TYPE (TREE_TYPE (ref))); | |
7518 | + step = array_ref_element_size (ref); | |
7519 | if (TREE_CODE (step) != INTEGER_CST) | |
7520 | continue; | |
7521 | ||
7522 | @@ -6944,16 +6961,17 @@ | |
7523 | { | |
7524 | tree tmp; | |
7525 | ||
7526 | - if (!TYPE_MIN_VALUE (domain) | |
7527 | + if (TREE_CODE (TREE_OPERAND (ref, 1)) != INTEGER_CST | |
7528 | || !TYPE_MAX_VALUE (domain) | |
7529 | || TREE_CODE (TYPE_MAX_VALUE (domain)) != INTEGER_CST) | |
7530 | continue; | |
7531 | ||
7532 | tmp = fold_binary_loc (loc, PLUS_EXPR, itype, | |
7533 | fold_convert_loc (loc, itype, | |
7534 | - TYPE_MIN_VALUE (domain)), | |
7535 | + TREE_OPERAND (ref, 1)), | |
7536 | fold_convert_loc (loc, itype, delta)); | |
7537 | - if (TREE_CODE (tmp) != INTEGER_CST | |
7538 | + if (!tmp | |
7539 | + || TREE_CODE (tmp) != INTEGER_CST | |
7540 | || tree_int_cst_lt (TYPE_MAX_VALUE (domain), tmp)) | |
7541 | continue; | |
7542 | } | |
7543 | @@ -6982,29 +7000,11 @@ | |
7544 | pos = TREE_OPERAND (pos, 0); | |
7545 | } | |
7546 | ||
7547 | - if (TREE_CODE (ref) == ARRAY_REF) | |
7548 | - { | |
7549 | - TREE_OPERAND (pos, 1) | |
7550 | - = fold_build2_loc (loc, PLUS_EXPR, itype, | |
7551 | - fold_convert_loc (loc, itype, TREE_OPERAND (pos, 1)), | |
7552 | - fold_convert_loc (loc, itype, delta)); | |
7553 | - return fold_build1_loc (loc, ADDR_EXPR, TREE_TYPE (addr), ret); | |
7554 | - } | |
7555 | - else if (TREE_CODE (ref) == COMPONENT_REF) | |
7556 | - { | |
7557 | - gcc_assert (ret == pos); | |
7558 | - ret = build4_loc (loc, ARRAY_REF, TREE_TYPE (TREE_TYPE (ref)), ret, | |
7559 | - fold_build2_loc | |
7560 | - (loc, PLUS_EXPR, itype, | |
7561 | - fold_convert_loc (loc, itype, | |
7562 | - TYPE_MIN_VALUE | |
7563 | - (TYPE_DOMAIN (TREE_TYPE (ref)))), | |
7564 | - fold_convert_loc (loc, itype, delta)), | |
7565 | - NULL_TREE, NULL_TREE); | |
7566 | - return build_fold_addr_expr_loc (loc, ret); | |
7567 | - } | |
7568 | - else | |
7569 | - gcc_unreachable (); | |
7570 | + TREE_OPERAND (pos, 1) | |
7571 | + = fold_build2_loc (loc, PLUS_EXPR, itype, | |
7572 | + fold_convert_loc (loc, itype, TREE_OPERAND (pos, 1)), | |
7573 | + fold_convert_loc (loc, itype, delta)); | |
7574 | + return fold_build1_loc (loc, ADDR_EXPR, TREE_TYPE (addr), ret); | |
7575 | } | |
7576 | ||
7577 | ||
7578 | @@ -12828,13 +12828,13 @@ | |
7579 | if (TREE_CODE (arg0) == BIT_XOR_EXPR | |
7580 | && operand_equal_p (TREE_OPERAND (arg0, 1), arg1, 0)) | |
7581 | return fold_build2_loc (loc, code, type, TREE_OPERAND (arg0, 0), | |
7582 | - build_int_cst (TREE_TYPE (arg0), 0)); | |
7583 | + build_zero_cst (TREE_TYPE (arg0))); | |
7584 | /* Likewise (X ^ Y) == X becomes Y == 0. X has no side-effects. */ | |
7585 | if (TREE_CODE (arg0) == BIT_XOR_EXPR | |
7586 | && operand_equal_p (TREE_OPERAND (arg0, 0), arg1, 0) | |
7587 | && reorder_operands_p (TREE_OPERAND (arg0, 1), arg1)) | |
7588 | return fold_build2_loc (loc, code, type, TREE_OPERAND (arg0, 1), | |
7589 | - build_int_cst (TREE_TYPE (arg0), 0)); | |
7590 | + build_zero_cst (TREE_TYPE (arg0))); | |
7591 | ||
7592 | /* (X ^ C1) op C2 can be rewritten as X op (C1 ^ C2). */ | |
7593 | if (TREE_CODE (arg0) == BIT_XOR_EXPR | |
7594 | @@ -12922,7 +12922,7 @@ | |
7595 | BIT_XOR_EXPR, itype, | |
7596 | arg00, arg10), | |
7597 | arg01), | |
7598 | - build_int_cst (itype, 0)); | |
7599 | + build_zero_cst (itype)); | |
7600 | ||
7601 | if (operand_equal_p (arg01, arg10, 0)) | |
7602 | return fold_build2_loc (loc, code, type, | |
7603 | @@ -12931,7 +12931,7 @@ | |
7604 | BIT_XOR_EXPR, itype, | |
7605 | arg00, arg11), | |
7606 | arg01), | |
7607 | - build_int_cst (itype, 0)); | |
7608 | + build_zero_cst (itype)); | |
7609 | ||
7610 | if (operand_equal_p (arg00, arg11, 0)) | |
7611 | return fold_build2_loc (loc, code, type, | |
7612 | @@ -12940,7 +12940,7 @@ | |
7613 | BIT_XOR_EXPR, itype, | |
7614 | arg01, arg10), | |
7615 | arg00), | |
7616 | - build_int_cst (itype, 0)); | |
7617 | + build_zero_cst (itype)); | |
7618 | ||
7619 | if (operand_equal_p (arg00, arg10, 0)) | |
7620 | return fold_build2_loc (loc, code, type, | |
7621 | @@ -12949,7 +12949,7 @@ | |
7622 | BIT_XOR_EXPR, itype, | |
7623 | arg01, arg11), | |
7624 | arg00), | |
7625 | - build_int_cst (itype, 0)); | |
7626 | + build_zero_cst (itype)); | |
7627 | } | |
7628 | ||
7629 | if (TREE_CODE (arg0) == BIT_XOR_EXPR | |
7630 | Index: gcc/omp-low.c | |
7631 | =================================================================== | |
7632 | --- gcc/omp-low.c (.../tags/gcc_4_7_0_release) (wersja 187906) | |
7633 | +++ gcc/omp-low.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
7634 | @@ -851,6 +851,19 @@ | |
7635 | return omp_copy_decl_2 (var, DECL_NAME (var), TREE_TYPE (var), ctx); | |
7636 | } | |
7637 | ||
7638 | +/* Build COMPONENT_REF and set TREE_THIS_VOLATILE and TREE_READONLY on it | |
7639 | + as appropriate. */ | |
7640 | +static tree | |
7641 | +omp_build_component_ref (tree obj, tree field) | |
7642 | +{ | |
7643 | + tree ret = build3 (COMPONENT_REF, TREE_TYPE (field), obj, field, NULL); | |
7644 | + if (TREE_THIS_VOLATILE (field)) | |
7645 | + TREE_THIS_VOLATILE (ret) |= 1; | |
7646 | + if (TREE_READONLY (field)) | |
7647 | + TREE_READONLY (ret) |= 1; | |
7648 | + return ret; | |
7649 | +} | |
7650 | + | |
7651 | /* Build tree nodes to access the field for VAR on the receiver side. */ | |
7652 | ||
7653 | static tree | |
7654 | @@ -865,7 +878,7 @@ | |
7655 | field = x; | |
7656 | ||
7657 | x = build_simple_mem_ref (ctx->receiver_decl); | |
7658 | - x = build3 (COMPONENT_REF, TREE_TYPE (field), x, field, NULL); | |
7659 | + x = omp_build_component_ref (x, field); | |
7660 | if (by_ref) | |
7661 | x = build_simple_mem_ref (x); | |
7662 | ||
7663 | @@ -915,8 +928,7 @@ | |
7664 | build_sender_ref (tree var, omp_context *ctx) | |
7665 | { | |
7666 | tree field = lookup_sfield (var, ctx); | |
7667 | - return build3 (COMPONENT_REF, TREE_TYPE (field), | |
7668 | - ctx->sender_decl, field, NULL); | |
7669 | + return omp_build_component_ref (ctx->sender_decl, field); | |
7670 | } | |
7671 | ||
7672 | /* Add a new field for VAR inside the structure CTX->SENDER_DECL. */ | |
7673 | @@ -6534,7 +6546,7 @@ | |
7674 | sf = (tree) n->value; | |
7675 | sf = *(tree *) pointer_map_contains (tcctx.cb.decl_map, sf); | |
7676 | src = build_simple_mem_ref_loc (loc, sarg); | |
7677 | - src = build3 (COMPONENT_REF, TREE_TYPE (sf), src, sf, NULL); | |
7678 | + src = omp_build_component_ref (src, sf); | |
7679 | t = build2 (MODIFY_EXPR, TREE_TYPE (*p), *p, src); | |
7680 | append_to_statement_list (t, &list); | |
7681 | } | |
7682 | @@ -6557,9 +6569,9 @@ | |
7683 | if (tcctx.cb.decl_map) | |
7684 | sf = *(tree *) pointer_map_contains (tcctx.cb.decl_map, sf); | |
7685 | src = build_simple_mem_ref_loc (loc, sarg); | |
7686 | - src = build3 (COMPONENT_REF, TREE_TYPE (sf), src, sf, NULL); | |
7687 | + src = omp_build_component_ref (src, sf); | |
7688 | dst = build_simple_mem_ref_loc (loc, arg); | |
7689 | - dst = build3 (COMPONENT_REF, TREE_TYPE (f), dst, f, NULL); | |
7690 | + dst = omp_build_component_ref (dst, f); | |
7691 | t = build2 (MODIFY_EXPR, TREE_TYPE (dst), dst, src); | |
7692 | append_to_statement_list (t, &list); | |
7693 | break; | |
7694 | @@ -6580,14 +6592,14 @@ | |
7695 | if (tcctx.cb.decl_map) | |
7696 | sf = *(tree *) pointer_map_contains (tcctx.cb.decl_map, sf); | |
7697 | src = build_simple_mem_ref_loc (loc, sarg); | |
7698 | - src = build3 (COMPONENT_REF, TREE_TYPE (sf), src, sf, NULL); | |
7699 | + src = omp_build_component_ref (src, sf); | |
7700 | if (use_pointer_for_field (decl, NULL) || is_reference (decl)) | |
7701 | src = build_simple_mem_ref_loc (loc, src); | |
7702 | } | |
7703 | else | |
7704 | src = decl; | |
7705 | dst = build_simple_mem_ref_loc (loc, arg); | |
7706 | - dst = build3 (COMPONENT_REF, TREE_TYPE (f), dst, f, NULL); | |
7707 | + dst = omp_build_component_ref (dst, f); | |
7708 | t = lang_hooks.decls.omp_clause_copy_ctor (c, dst, src); | |
7709 | append_to_statement_list (t, &list); | |
7710 | break; | |
7711 | @@ -6606,14 +6618,14 @@ | |
7712 | if (tcctx.cb.decl_map) | |
7713 | sf = *(tree *) pointer_map_contains (tcctx.cb.decl_map, sf); | |
7714 | src = build_simple_mem_ref_loc (loc, sarg); | |
7715 | - src = build3 (COMPONENT_REF, TREE_TYPE (sf), src, sf, NULL); | |
7716 | + src = omp_build_component_ref (src, sf); | |
7717 | if (use_pointer_for_field (decl, NULL)) | |
7718 | src = build_simple_mem_ref_loc (loc, src); | |
7719 | } | |
7720 | else | |
7721 | src = decl; | |
7722 | dst = build_simple_mem_ref_loc (loc, arg); | |
7723 | - dst = build3 (COMPONENT_REF, TREE_TYPE (f), dst, f, NULL); | |
7724 | + dst = omp_build_component_ref (dst, f); | |
7725 | t = build2 (MODIFY_EXPR, TREE_TYPE (dst), dst, src); | |
7726 | append_to_statement_list (t, &list); | |
7727 | break; | |
7728 | @@ -6645,10 +6657,10 @@ | |
7729 | sf = (tree) n->value; | |
7730 | sf = *(tree *) pointer_map_contains (tcctx.cb.decl_map, sf); | |
7731 | src = build_simple_mem_ref_loc (loc, sarg); | |
7732 | - src = build3 (COMPONENT_REF, TREE_TYPE (sf), src, sf, NULL); | |
7733 | + src = omp_build_component_ref (src, sf); | |
7734 | src = build_simple_mem_ref_loc (loc, src); | |
7735 | dst = build_simple_mem_ref_loc (loc, arg); | |
7736 | - dst = build3 (COMPONENT_REF, TREE_TYPE (f), dst, f, NULL); | |
7737 | + dst = omp_build_component_ref (dst, f); | |
7738 | t = lang_hooks.decls.omp_clause_copy_ctor (c, dst, src); | |
7739 | append_to_statement_list (t, &list); | |
7740 | n = splay_tree_lookup (ctx->field_map, | |
7741 | @@ -6656,7 +6668,7 @@ | |
7742 | df = (tree) n->value; | |
7743 | df = *(tree *) pointer_map_contains (tcctx.cb.decl_map, df); | |
7744 | ptr = build_simple_mem_ref_loc (loc, arg); | |
7745 | - ptr = build3 (COMPONENT_REF, TREE_TYPE (df), ptr, df, NULL); | |
7746 | + ptr = omp_build_component_ref (ptr, df); | |
7747 | t = build2 (MODIFY_EXPR, TREE_TYPE (ptr), ptr, | |
7748 | build_fold_addr_expr_loc (loc, dst)); | |
7749 | append_to_statement_list (t, &list); | |
7750 | Index: gcc/tree-chrec.h | |
7751 | =================================================================== | |
7752 | --- gcc/tree-chrec.h (.../tags/gcc_4_7_0_release) (wersja 187906) | |
7753 | +++ gcc/tree-chrec.h (.../branches/gcc-4_7-branch) (wersja 187906) | |
7754 | @@ -77,7 +77,6 @@ | |
7755 | /* Observers. */ | |
7756 | extern bool eq_evolutions_p (const_tree, const_tree); | |
7757 | extern bool is_multivariate_chrec (const_tree); | |
7758 | -extern bool chrec_is_positive (tree, bool *); | |
7759 | extern bool chrec_contains_symbols (const_tree); | |
7760 | extern bool chrec_contains_symbols_defined_in_loop (const_tree, unsigned); | |
7761 | extern bool chrec_contains_undetermined (const_tree); | |
7762 | Index: gcc/DEV-PHASE | |
7763 | =================================================================== | |
7764 | --- gcc/DEV-PHASE (.../tags/gcc_4_7_0_release) (wersja 187906) | |
7765 | +++ gcc/DEV-PHASE (.../branches/gcc-4_7-branch) (wersja 187906) | |
7766 | @@ -0,0 +1 @@ | |
7767 | +prerelease | |
7768 | Index: gcc/tree-ssa-sccvn.c | |
7769 | =================================================================== | |
7770 | --- gcc/tree-ssa-sccvn.c (.../tags/gcc_4_7_0_release) (wersja 187906) | |
7771 | +++ gcc/tree-ssa-sccvn.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
7772 | @@ -1348,18 +1348,19 @@ | |
7773 | ||
7774 | /* Lookup an existing or insert a new vn_reference entry into the | |
7775 | value table for the VUSE, SET, TYPE, OPERANDS reference which | |
7776 | - has the constant value CST. */ | |
7777 | + has the value VALUE which is either a constant or an SSA name. */ | |
7778 | ||
7779 | static vn_reference_t | |
7780 | -vn_reference_lookup_or_insert_constant_for_pieces (tree vuse, | |
7781 | - alias_set_type set, | |
7782 | - tree type, | |
7783 | - VEC (vn_reference_op_s, | |
7784 | - heap) *operands, | |
7785 | - tree cst) | |
7786 | +vn_reference_lookup_or_insert_for_pieces (tree vuse, | |
7787 | + alias_set_type set, | |
7788 | + tree type, | |
7789 | + VEC (vn_reference_op_s, | |
7790 | + heap) *operands, | |
7791 | + tree value) | |
7792 | { | |
7793 | struct vn_reference_s vr1; | |
7794 | vn_reference_t result; | |
7795 | + unsigned value_id; | |
7796 | vr1.vuse = vuse; | |
7797 | vr1.operands = operands; | |
7798 | vr1.type = type; | |
7799 | @@ -1367,10 +1368,13 @@ | |
7800 | vr1.hashcode = vn_reference_compute_hash (&vr1); | |
7801 | if (vn_reference_lookup_1 (&vr1, &result)) | |
7802 | return result; | |
7803 | + if (TREE_CODE (value) == SSA_NAME) | |
7804 | + value_id = VN_INFO (value)->value_id; | |
7805 | + else | |
7806 | + value_id = get_or_alloc_constant_value_id (value); | |
7807 | return vn_reference_insert_pieces (vuse, set, type, | |
7808 | VEC_copy (vn_reference_op_s, heap, | |
7809 | - operands), cst, | |
7810 | - get_or_alloc_constant_value_id (cst)); | |
7811 | + operands), value, value_id); | |
7812 | } | |
7813 | ||
7814 | /* Callback for walk_non_aliased_vuses. Tries to perform a lookup | |
7815 | @@ -1452,7 +1456,7 @@ | |
7816 | && offset2 + size2 >= offset + maxsize) | |
7817 | { | |
7818 | tree val = build_zero_cst (vr->type); | |
7819 | - return vn_reference_lookup_or_insert_constant_for_pieces | |
7820 | + return vn_reference_lookup_or_insert_for_pieces | |
7821 | (vuse, vr->set, vr->type, vr->operands, val); | |
7822 | } | |
7823 | } | |
7824 | @@ -1473,7 +1477,7 @@ | |
7825 | && offset2 + size2 >= offset + maxsize) | |
7826 | { | |
7827 | tree val = build_zero_cst (vr->type); | |
7828 | - return vn_reference_lookup_or_insert_constant_for_pieces | |
7829 | + return vn_reference_lookup_or_insert_for_pieces | |
7830 | (vuse, vr->set, vr->type, vr->operands, val); | |
7831 | } | |
7832 | } | |
7833 | @@ -1514,7 +1518,7 @@ | |
7834 | / BITS_PER_UNIT), | |
7835 | ref->size / BITS_PER_UNIT); | |
7836 | if (val) | |
7837 | - return vn_reference_lookup_or_insert_constant_for_pieces | |
7838 | + return vn_reference_lookup_or_insert_for_pieces | |
7839 | (vuse, vr->set, vr->type, vr->operands, val); | |
7840 | } | |
7841 | } | |
7842 | @@ -1568,7 +1572,7 @@ | |
7843 | } | |
7844 | } | |
7845 | if (val) | |
7846 | - return vn_reference_lookup_or_insert_constant_for_pieces | |
7847 | + return vn_reference_lookup_or_insert_for_pieces | |
7848 | (vuse, vr->set, vr->type, vr->operands, val); | |
7849 | } | |
7850 | } | |
7851 | Index: gcc/cgraphunit.c | |
7852 | =================================================================== | |
7853 | --- gcc/cgraphunit.c (.../tags/gcc_4_7_0_release) (wersja 187906) | |
7854 | +++ gcc/cgraphunit.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
7855 | @@ -2490,8 +2490,8 @@ | |
7856 | if (cgraph_dump_file) | |
7857 | { | |
7858 | fprintf (cgraph_dump_file, "updating call of %s/%i -> %s/%i: ", | |
7859 | - cgraph_node_name (e->caller), e->caller->uid, | |
7860 | - cgraph_node_name (e->callee), e->callee->uid); | |
7861 | + xstrdup (cgraph_node_name (e->caller)), e->caller->uid, | |
7862 | + xstrdup (cgraph_node_name (e->callee)), e->callee->uid); | |
7863 | print_gimple_stmt (cgraph_dump_file, e->call_stmt, 0, dump_flags); | |
7864 | if (e->callee->clone.combined_args_to_skip) | |
7865 | { | |
7866 | @@ -2577,8 +2577,8 @@ | |
7867 | if (cgraph_dump_file) | |
7868 | { | |
7869 | fprintf (cgraph_dump_file, "cloning %s to %s\n", | |
7870 | - cgraph_node_name (node->clone_of), | |
7871 | - cgraph_node_name (node)); | |
7872 | + xstrdup (cgraph_node_name (node->clone_of)), | |
7873 | + xstrdup (cgraph_node_name (node))); | |
7874 | if (node->clone.tree_map) | |
7875 | { | |
7876 | unsigned int i; | |
7877 | @@ -2591,9 +2591,11 @@ | |
7878 | replace_info = VEC_index (ipa_replace_map_p, | |
7879 | node->clone.tree_map, | |
7880 | i); | |
7881 | - print_generic_expr (cgraph_dump_file, replace_info->old_tree, 0); | |
7882 | + print_generic_expr (cgraph_dump_file, | |
7883 | + replace_info->old_tree, 0); | |
7884 | fprintf (cgraph_dump_file, " -> "); | |
7885 | - print_generic_expr (cgraph_dump_file, replace_info->new_tree, 0); | |
7886 | + print_generic_expr (cgraph_dump_file, | |
7887 | + replace_info->new_tree, 0); | |
7888 | fprintf (cgraph_dump_file, "%s%s;", | |
7889 | replace_info->replace_p ? "(replace)":"", | |
7890 | replace_info->ref_p ? "(ref)":""); | |
7891 | @@ -2603,12 +2605,15 @@ | |
7892 | if (node->clone.args_to_skip) | |
7893 | { | |
7894 | fprintf (cgraph_dump_file, " args_to_skip: "); | |
7895 | - dump_bitmap (cgraph_dump_file, node->clone.args_to_skip); | |
7896 | + dump_bitmap (cgraph_dump_file, | |
7897 | + node->clone.args_to_skip); | |
7898 | } | |
7899 | if (node->clone.args_to_skip) | |
7900 | { | |
7901 | - fprintf (cgraph_dump_file, " combined_args_to_skip:"); | |
7902 | - dump_bitmap (cgraph_dump_file, node->clone.combined_args_to_skip); | |
7903 | + fprintf (cgraph_dump_file, | |
7904 | + " combined_args_to_skip:"); | |
7905 | + dump_bitmap (cgraph_dump_file, | |
7906 | + node->clone.combined_args_to_skip); | |
7907 | } | |
7908 | } | |
7909 | cgraph_materialize_clone (node); | |
7910 | Index: gcc/ChangeLog | |
7911 | =================================================================== | |
7912 | --- gcc/ChangeLog (.../tags/gcc_4_7_0_release) (wersja 187906) | |
7913 | +++ gcc/ChangeLog (.../branches/gcc-4_7-branch) (wersja 187906) | |
7914 | @@ -1,3 +1,1095 @@ | |
7915 | +2012-05-25 Eric Botcazou <ebotcazou@adacore.com> | |
7916 | + | |
7917 | + PR lto/52178 | |
7918 | + * tree-inline.c (remap_gimple_op_r): Fix handling of FIELD_DECL. | |
7919 | + * tree.c (RETURN_TRUE_IF_VAR): Do not return true for PLACEHOLDER_EXPR. | |
7920 | + | |
7921 | +2012-05-25 Alexander Ivchenko <alexander.ivchenko@intel.com> | |
7922 | + | |
7923 | + PR target/53435 | |
7924 | + * config/i386/i386.c (ix86_expand_vec_perm): Use correct op. | |
7925 | + (ix86_expand_vec_perm): Use int mode instead of float. | |
7926 | + | |
7927 | +2012-05-25 Eric Botcazou <ebotcazou@adacore.com> | |
7928 | + | |
7929 | + PR ada/52362 | |
7930 | + * config.gcc (i[34567]86-*-mingw* | x86_64-*-mingw*): Set gas and | |
7931 | + gnu_ld variables to yes. | |
7932 | + * configure.ac (HAVE_GNU_LD): Move to after config.gcc inclusion. | |
7933 | + (HAVE_GNU_AS): Likewise. | |
7934 | + * config.in: Regenerate. | |
7935 | + * configure: Likewise. | |
7936 | + | |
7937 | +2012-05-25 Ramana Radhakrishnan <ramana.radhakrishnan@linaro.org> | |
7938 | + | |
7939 | + Backport from mainline | |
7940 | + 2012-03-12 Richard Guenther <rguenther@suse.de> | |
7941 | + * config/arm/arm.c (neon_dereference_pointer): Do not call | |
7942 | + covert during RTL expansion. | |
7943 | + | |
7944 | +2012-05-24 Bill Schmidt <wschmidt@linux.vnet.ibm.com> | |
7945 | + | |
7946 | + Backport from mainline | |
7947 | + 2012-05-18 Bill Schmidt <wschmidt@linux.vnet.ibm.com> | |
7948 | + | |
7949 | + PR target/53385 | |
7950 | + * config/rs6000/rs6000.c (print_operand): Revise code that unsafely | |
7951 | + relied on signed overflow behavior. | |
7952 | + | |
7953 | +2012-05-24 Richard Guenther <rguenther@suse.de> | |
7954 | + | |
7955 | + PR middle-end/53460 | |
7956 | + * tree-profile.c (tree_profiling): Cleanup the CFG if | |
7957 | + execute_fixup_cfg requests it. | |
7958 | + | |
7959 | +2012-05-24 Jakub Jelinek <jakub@redhat.com> | |
7960 | + | |
7961 | + PR tree-optimization/53465 | |
7962 | + * tree-vrp.c (extract_range_from_cond_expr): First copy_value_range | |
7963 | + vr0 into *vr, then vrp_meet that. | |
7964 | + (vrp_meet): If one vr type is VR_UNDEFINED, ensure the result doesn't | |
7965 | + have any equivalences. | |
7966 | + (vrp_visit_phi_node): Call copy_value_range instead of vrp_meet the | |
7967 | + first time. | |
7968 | + | |
7969 | +2012-05-23 Eric Botcazou <ebotcazou@adacore.com> | |
7970 | + | |
7971 | + * gimple.c (gimple_types_compatible_p_1) <ARRAY_TYPE>: Remove bogus | |
7972 | + size handling. | |
7973 | + (gimple_canonical_types_compatible_p) <ARRAY_TYPE>: Likewise. | |
7974 | + (iterative_hash_gimple_type): Adjust comment. | |
7975 | + (iterative_hash_canonical_type): Likewise. Hash the bounds of the | |
7976 | + domain for an array type instead of the domain type itself. | |
7977 | + | |
7978 | +2012-05-23 Georg-Johann Lay <avr@gjlay.de> | |
7979 | + | |
7980 | + Backport from 2012-05-23 mainline r187803 | |
7981 | + | |
7982 | + PR target/53448 | |
7983 | + * config/avr/avr.h (ASM_OUTPUT_ALIGN): Don't inhibit .p2align 1. | |
7984 | + * config/avr/elf.h (ASM_OUTPUT_BEFORE_CASE_LABEL): Use | |
7985 | + ASM_OUTPUT_ALIGN. | |
7986 | + | |
7987 | +2012-05-23 Ganesh Gopalasubramanian <Ganesh.Gopalasubramanian@amd.com> | |
7988 | + | |
7989 | + Backport from 2012-05-03 mainline r187075 | |
7990 | + | |
7991 | + * config/i386/driver-i386.c (host_detect_local_cpu): Reset | |
7992 | + has_fma4 for AMD processors with both fma3 and fma4 support. | |
7993 | + | |
7994 | +2012-05-22 Richard Guenther <rguenther@suse.de> | |
7995 | + | |
7996 | + PR tree-optimization/53408 | |
7997 | + * tree-vect-loop.c (vectorizable_induction): Properly check | |
7998 | + the restriction that we cannot handle induction results from | |
7999 | + the inner loop outside of the outer loop. | |
8000 | + | |
8001 | +2012-05-21 Jakub Jelinek <jakub@redhat.com> | |
8002 | + | |
8003 | + PR tree-optimization/53436 | |
8004 | + * omp-low.c (omp_build_component_ref): New function. | |
8005 | + (build_receiver_ref, build_sender_ref, create_task_copyfn): Use it. | |
8006 | + | |
8007 | + PR tree-optimization/53366 | |
8008 | + * tree-vect-slp.c (vect_supported_load_permutation_p): Don't shortcut | |
8009 | + tests if complex_numbers == 2, but there are non-complex number loads | |
8010 | + too. | |
8011 | + | |
8012 | + PR tree-optimization/53409 | |
8013 | + * tree-vect-loop.c (vect_analyze_loop_operations): Don't check | |
8014 | + vinfo_for_stmt (op_def_stmt) if op_def_stmt isn't inside loop. | |
8015 | + | |
8016 | + PR tree-optimization/53410 | |
8017 | + * fold-const.c (fold_binary_loc): Use build_zero_cst (type) | |
8018 | + instead of build_int_cst (type, 0) where vector types might be | |
8019 | + involved. | |
8020 | + | |
8021 | +2012-05-21 Joseph Myers <joseph@codesourcery.com> | |
8022 | + | |
8023 | + PR c/53418 | |
8024 | + * c-typeck.c (build_conditional_expr): Remove C_MAYBE_CONST_EXPR | |
8025 | + from folded operands before wrapping another around the | |
8026 | + conditional expression. | |
8027 | + | |
8028 | +2012-05-21 Dave Boutcher <daveboutcher@gmail.com> | |
8029 | + Patrick Marlier <patrick.marlier@gmail.com> | |
8030 | + | |
8031 | + * trans-mem.c (ipa_tm_transform_clone): Transform functions with | |
8032 | + indirect calls. | |
8033 | + | |
8034 | +2012-05-21 H.J. Lu <hongjiu.lu@intel.com> | |
8035 | + | |
8036 | + Backport from mainline | |
8037 | + 2012-05-21 H.J. Lu <hongjiu.lu@intel.com> | |
8038 | + | |
8039 | + PR target/53416 | |
8040 | + * config/i386/i386.md (UNSPEC_RDRAND): Renamed to ... | |
8041 | + (UNSPECV_RDRAND): This. | |
8042 | + (rdrand<mode>_1): Updated. | |
8043 | + | |
8044 | +2012-05-20 H.J. Lu <hongjiu.lu@intel.com> | |
8045 | + | |
8046 | + Backport from mainline | |
8047 | + 2012-05-20 H.J. Lu <hongjiu.lu@intel.com> | |
8048 | + | |
8049 | + * config/i386/driver-i386.c (host_detect_local_cpu): Support | |
8050 | + RDRND, F16C and FSGSBASE. | |
8051 | + | |
8052 | +2012-05-19 Eric Botcazou <ebotcazou@adacore.com> | |
8053 | + | |
8054 | + Backport from mainline | |
8055 | + 2012-05-14 Eric Botcazou <ebotcazou@adacore.com> | |
8056 | + | |
8057 | + * tree-ssa-pre.c (can_value_number_call): Delete. | |
8058 | + (compute_avail): Skip all statements with side effects. | |
8059 | + <GIMPLE_CALL>: Skip calls to internal functions. | |
8060 | + | |
8061 | +2012-05-18 David S. Miller <davem@davemloft.net> | |
8062 | + | |
8063 | + Backport r185385 from mainline | |
8064 | + 2012-03-14 Richard Guenther <rguenther@suse.de> | |
8065 | + | |
8066 | + PR middle-end/52584 | |
8067 | + * tree-vect-generic.c (type_for_widest_vector_mode): Take | |
8068 | + element type instead of mode, use build_vector_type_for_mode | |
8069 | + instead of the langhook, build a vector of proper signedness. | |
8070 | + (expand_vector_operations_1): Adjust. | |
8071 | + | |
8072 | +2012-05-18 Olivier Hainque <hainque@adacore.com> | |
8073 | + | |
8074 | + * Makefile.in (FLAGS_TO_PASS): Pass $(libexecsubdir) instead of | |
8075 | + $(libsubdir) as libexecsubdir. | |
8076 | + | |
8077 | +2012-05-16 Andrew Pinski <apinski@cavium.com> | |
8078 | + | |
8079 | + * gimple-fold.c (get_maxval_strlen): Move COND_EXPR handling under | |
8080 | + GIMPLE_ASSIGN. | |
8081 | + | |
8082 | +2012-05-16 David S. Miller <davem@davemloft.net> | |
8083 | + | |
8084 | + * jump.c (delete_related_insns): If we remove a CALL, make sure | |
8085 | + we delete it's NOTE_INSN_CALL_ARG_LOCATION note too. | |
8086 | + | |
8087 | +2012-05-16 Richard Henderson <rth@redhat.com> | |
8088 | + | |
8089 | + PR debug/52727 | |
8090 | + * combine-stack-adj.c (prev_active_insn_bb): New. | |
8091 | + (next_active_insn_bb): New. | |
8092 | + (force_move_args_size_note): New. | |
8093 | + (combine_stack_adjustments_for_block): Use it. | |
8094 | + | |
8095 | +2012-05-16 Olivier Hainque <hainque@adacore.com> | |
8096 | + | |
8097 | + * Makefile.in (install-no-fixedincludes): New target, former toplevel | |
8098 | + gcc-no-fixedincludes. Stash "include-fixed" in addition to "include". | |
8099 | + Add comments and improve stamp preservation across the whole sequence. | |
8100 | + (stmp-int-hdrs): Use move-if-change + cp -p to setup fix_dir/limits.h. | |
8101 | + | |
8102 | +2012-05-16 Richard Guenther <rguenther@suse.de> | |
8103 | + | |
8104 | + PR tree-optimization/53364 | |
8105 | + * tree-ssa-alias.c (indirect_ref_may_alias_decl_p): Properly | |
8106 | + detect a view-conversion of the decl. | |
8107 | + | |
8108 | +2012-05-15 Jakub Jelinek <jakub@redhat.com> | |
8109 | + | |
8110 | + PR target/53358 | |
8111 | + * config/i386/i386.md (*addqi_2 peephole with QImode addition): Check | |
8112 | + that operands[2] is either immediate, or q_regs_operand. | |
8113 | + | |
8114 | +2012-05-15 Bin Cheng <bin.cheng@arm.com> | |
8115 | + | |
8116 | + Backport r187139 from mainline. | |
8117 | + 2012-05-04 Bin Cheng <bin.cheng@arm.com> | |
8118 | + | |
8119 | + PR rtl-optimization/52804 | |
8120 | + * reload1.c (reload_reg_reaches_end_p): Check whether successor | |
8121 | + reload with type RELOAD_FOR_INPUT_ADDRESS kills reload register | |
8122 | + of current one with type RELOAD_FOR_INPADDR_ADDRESS. | |
8123 | + Same stands for reloads with type RELOAD_FOR_OUTPUT_ADDRESS and | |
8124 | + RELOAD_FOR_OUTADDR_ADDRESS. | |
8125 | + | |
8126 | +2012-05-14 Uros Bizjak <ubizjak@gmail.com> | |
8127 | + | |
8128 | + PR target/46098 | |
8129 | + * config/i386/i386.c (ix86_expand_special_args_builtin): Always | |
8130 | + generate target register for "load" class builtins. | |
8131 | + | |
8132 | + Revert: | |
8133 | + 2010-10-22 Uros Bizjak <ubizjak@gmail.com> | |
8134 | + | |
8135 | + PR target/46098 | |
8136 | + * config/i386/sse.md (*avx_movu<ssemodesuffix><avxmodesuffix>): | |
8137 | + Rename from avx_movu<ssemodesuffix><avxmodesuffix>. | |
8138 | + (avx_movu<ssemodesuffix><avxmodesuffix>): New expander. | |
8139 | + (*<sse>_movu<ssemodesuffix>): Rename from <sse>_movu<ssemodesuffix>. | |
8140 | + (<sse>_movu<ssemodesuffix>): New expander. | |
8141 | + (*avx_movdqu<avxmodesuffix>): Rename from avx_movdqu<avxmodesuffix>. | |
8142 | + (avx_movdqu<avxmodesuffix>): New expander. | |
8143 | + (*sse2_movdqu): Rename from sse2_movdqu. | |
8144 | + (sse2_movdqu): New expander. | |
8145 | + | |
8146 | +2012-05-14 Jakub Jelinek <jakub@redhat.com> | |
8147 | + | |
8148 | + * dwarf2out.c (dwarf2out_define, dwarf2out_undef): Treat | |
8149 | + lineno 1 the same as lineno 0 before first start file directive. | |
8150 | + (optimize_macinfo_range): Likewise. | |
8151 | + | |
8152 | + * dwarf2out.c (have_macinfo): Define. | |
8153 | + (dwarf2out_finish): Don't emit DW_AT_GNU_macros or DW_AT_macro_info | |
8154 | + attribute, don't force empty compilation unit and don't emit any | |
8155 | + .debug_macinfo/.debug_macro section if macinfo_table is empty. | |
8156 | + | |
8157 | +2012-05-13 Uros Bizjak <ubizjak@gmail.com> | |
8158 | + | |
8159 | + Backport from mainline | |
8160 | + 2012-05-12 Uros Bizjak <ubizjak@gmail.com> | |
8161 | + | |
8162 | + * config/alpha/alpha.c (alpha_emit_conditional_branch): Handle | |
8163 | + ORDERED and UNORDERED conditions. | |
8164 | + | |
8165 | +2012-05-12 Eric Botcazou <ebotcazou@adacore.com> | |
8166 | + | |
8167 | + * function.c (requires_stack_frame_p): If the function can throw | |
8168 | + non-call exceptions, return true if the insn can throw internally. | |
8169 | + | |
8170 | +2012-05-10 Eric Botcazou <ebotcazou@adacore.com> | |
8171 | + | |
8172 | + * gimplify.c (gimplify_decl_expr): For a TYPE_DECL, also gimplify the | |
8173 | + DECL_ORIGINAL_TYPE if it is present. | |
8174 | + | |
8175 | +2012-05-09 Georg-Johann Lay <avr@gjlay.de> | |
8176 | + | |
8177 | + Backport from 2012-05-12 mainline r187342. | |
8178 | + | |
8179 | + PR target/53256 | |
8180 | + * config/avr/elf.h (ASM_DECLARE_FUNCTION_NAME): Remove. | |
8181 | + * config/avr/avr-protos.h (avr_asm_declare_function_name): Remove. | |
8182 | + * config/avr/avr.h (struct machine_function): Add attributes_checked_p. | |
8183 | + * config/avr/avr.c (avr_asm_declare_function_name): Remove. | |
8184 | + (expand_prologue): Move initialization of cfun->machine->is_naked, | |
8185 | + is_interrupt, is_signal, is_OS_task, is_OS_main from here to... | |
8186 | + (avr_set_current_function): ...this new static function. | |
8187 | + (TARGET_SET_CURRENT_FUNCTION): New define. | |
8188 | + (avr_function_ok_for_sibcall): Use cfun->machine->is_* instead of | |
8189 | + checking attributes of current_function_decl. | |
8190 | + (avr_regs_to_save): Ditto. | |
8191 | + (signal_function_p): Rename to avr_signal_function_p. | |
8192 | + (interrupt_function_p): Rename to avr_interrupt_function_p. | |
8193 | + | |
8194 | + * doc/extend.texi (Function Attributes): Better explanation of | |
8195 | + 'interrupt' and 'signal' for AVR. Move 'ifunc' down to establish | |
8196 | + alphabetical order. | |
8197 | + | |
8198 | +2012-05-09 Matthias Klose <doko@ubuntu.com> | |
8199 | + | |
8200 | + * gcc-ar.c (main): Don't check for execute bits for the plugin. | |
8201 | + | |
8202 | +2012-05-08 Hans-Peter Nilsson <hp@axis.com> | |
8203 | + | |
8204 | + PR target/53272 | |
8205 | + * config/cris/cris.c (cris_normal_notice_update_cc): For TARGET_V32, | |
8206 | + when a constant source operand matches an "I" constraint, the "no | |
8207 | + CC0 change" applies to a register-destination only, not a | |
8208 | + strict_low_part-destination. | |
8209 | + | |
8210 | +2012-05-07 Ramana Radhakrishnan <ramana.radhakrishnan@linaro.org> | |
8211 | + | |
8212 | + Backport from mainline: | |
8213 | + 2012-04-19 Ramana Radhakrishnan <ramana.radhakrishnan@linaro.org> | |
8214 | + | |
8215 | + * config/arm/sync.md (sync_optab): Change ior attribute to "or". | |
8216 | + | |
8217 | +2012-05-07 Jakub Jelinek <jakub@redhat.com> | |
8218 | + | |
8219 | + PR tree-optimization/53239 | |
8220 | + * tree-vrp.c (get_value_range): Set VR of | |
8221 | + SSA_NAME_IS_DEFAULT_DEF of DECL_BY_REFERENCE RESULT_DECL | |
8222 | + to nonnull. | |
8223 | + | |
8224 | +2012-05-07 Richard Guenther <rguenther@suse.de> | |
8225 | + | |
8226 | + PR tree-optimization/53195 | |
8227 | + * tree-inline.c (setup_one_parameter): Properly add referenced | |
8228 | + vars from the parameters new known value. | |
8229 | + | |
8230 | +2012-05-06 John David Anglin <dave.anglin@nrc-cnrc.gc.ca> | |
8231 | + | |
8232 | + Backport from mainline: | |
8233 | + 2012-04-27 John David Anglin <dave.anglin@nrc-cnrc.gc.ca> | |
8234 | + | |
8235 | + PR target/52999 | |
8236 | + * config/pa/pa.c (pa_legitimate_constant_p): Don't put function labels | |
8237 | + in constant pool. | |
8238 | + | |
8239 | +2012-05-04 Ian Lance Taylor <iant@google.com> | |
8240 | + | |
8241 | + * tree-vect-patterns.c (vect_single_imm_use): Correct return | |
8242 | + values from false to NULL. | |
8243 | + | |
8244 | +2012-05-04 Uros Bizjak <ubizjak@gmail.com> | |
8245 | + | |
8246 | + Backport from mainline | |
8247 | + 2012-05-04 Uros Bizjak <ubizjak@gmail.com> | |
8248 | + | |
8249 | + PR target/53228 | |
8250 | + * config/i386/i386.h (X86_ARCH_CMOV): Rename from X86_ARCH_CMOVE. | |
8251 | + (TARGET_CMOV): Rename from TARGET_CMOVE. | |
8252 | + (TARGET_CMOVE): New define. | |
8253 | + * config/i386/i386.c (ix86_option_override_internal): Use TARGET_CMOV. | |
8254 | + Do not set TARGET_CMOVE here. | |
8255 | + | |
8256 | +2012-05-04 Ulrich Weigand <ulrich.weigand@linaro.org> | |
8257 | + | |
8258 | + Backport from mainline: | |
8259 | + | |
8260 | + 2012-05-04 Ulrich Weigand <ulrich.weigand@linaro.org> | |
8261 | + | |
8262 | + PR tree-optimization/52633 | |
8263 | + * tree-vect-patterns.c (vect_vect_recog_func_ptrs): Swap order of | |
8264 | + vect_recog_widen_shift_pattern and vect_recog_over_widening_pattern. | |
8265 | + (vect_recog_over_widening_pattern): Remove handling of code that was | |
8266 | + already detected as over-widening pattern. Remove special handling | |
8267 | + of "unsigned" cases. Instead, support general case of conversion | |
8268 | + of the shift result to another type. | |
8269 | + | |
8270 | + 2012-05-04 Ulrich Weigand <ulrich.weigand@linaro.org> | |
8271 | + | |
8272 | + * tree-vect-patterns.c (vect_single_imm_use): New function. | |
8273 | + (vect_recog_widen_mult_pattern): Use it instead of open-coding loop. | |
8274 | + (vect_recog_over_widening_pattern): Likewise. | |
8275 | + (vect_recog_widen_shift_pattern): Likewise. | |
8276 | + | |
8277 | + 2012-04-10 Ulrich Weigand <ulrich.weigand@linaro.org> | |
8278 | + | |
8279 | + PR tree-optimization/52870 | |
8280 | + * tree-vect-patterns.c (vect_recog_widen_mult_pattern): Verify that | |
8281 | + presumed pattern statement is within the same loop or basic block. | |
8282 | + | |
8283 | +2012-05-04 Richard Guenther <rguenther@suse.de> | |
8284 | + | |
8285 | + * common.opt (flto-report): Do not mark as Optimization. | |
8286 | + | |
8287 | +2012-05-04 Eric Botcazou <ebotcazou@adacore.com> | |
8288 | + | |
8289 | + PR target/48496 | |
8290 | + * recog.c (constrain_operands): If extra constraints are present, also | |
8291 | + accept pseudo-registers with equivalent memory locations during reload. | |
8292 | + | |
8293 | +2012-05-03 Michael Meissner <meissner@linux.vnet.ibm.com> | |
8294 | + | |
8295 | + Backport from the mainline | |
8296 | + 2012-05-03 Michael Meissner <meissner@linux.vnet.ibm.com> | |
8297 | + | |
8298 | + PR target/53199 | |
8299 | + * config/rs6000/rs6000.md (bswapdi splitters): If | |
8300 | + -mavoid-indexed-addresses (or -mcpu=power6 which sets it by | |
8301 | + default) is used, generate an alternate sequence that does not | |
8302 | + depend on using indexed addressing. | |
8303 | + | |
8304 | +2012-05-03 David S. Miller <davem@davemloft.net> | |
8305 | + | |
8306 | + PR target/52684 | |
8307 | + * config/sparc/sparc.c (emit_soft_tfmode_libcall): If we pass a | |
8308 | + MEM directly into a libcall, mark it's MEM_EXPR as addressable. | |
8309 | + (sparc_emit_float_lib_cmp): Likewise. | |
8310 | + | |
8311 | +2012-05-04 Martin Jambor <mjambor@suse.cz> | |
8312 | + | |
8313 | + Backport from mainline | |
8314 | + 2012-05-02 Martin Jambor <mjambor@suse.cz> | |
8315 | + | |
8316 | + PR lto/52605 | |
8317 | + * dwarf2out.c (dwarf2out_decl): Only lookup die representing context | |
8318 | + of a variable when the contect is a function. | |
8319 | + | |
8320 | +2012-05-03 Jakub Jelinek <jakub@redhat.com> | |
8321 | + | |
8322 | + PR plugins/53126 | |
8323 | + * gcc-ar.c (main): If GCC_EXEC_PREFIX is set in env, | |
8324 | + append program name to it and pass that as first argument | |
8325 | + to make_relative_prefix. Always pass standard_libexec_prefix | |
8326 | + as last argument to make_relative_prefix. If | |
8327 | + make_relative_prefix returns NULL, fall back to | |
8328 | + standard_libexec_prefix. | |
8329 | + | |
8330 | + PR debug/53174 | |
8331 | + * tree-predcom.c (remove_stmt): Call reset_debug_uses on stmts being | |
8332 | + removed. | |
8333 | + | |
8334 | + PR target/53187 | |
8335 | + * config/arm/arm.c (arm_select_cc_mode): If x has MODE_CC class | |
8336 | + mode, return that mode. | |
8337 | + | |
8338 | +2012-05-03 Richard Guenther <rguenther@suse.de> | |
8339 | + | |
8340 | + PR tree-optimization/53144 | |
8341 | + * tree-ssa-sccvn.c (vn_reference_lookup_or_insert_constant_for_pieces): | |
8342 | + Rename to ... | |
8343 | + (vn_reference_lookup_or_insert_for_pieces): ... this. Properly deal | |
8344 | + with SSA name values. | |
8345 | + (vn_reference_lookup_3): Adjust callers. | |
8346 | + | |
8347 | +2012-05-02 Jakub Jelinek <jakub@redhat.com> | |
8348 | + | |
8349 | + PR tree-optimization/53163 | |
8350 | + * tree-ssa-phiopt.c (cond_if_else_store_replacement): Don't ignore | |
8351 | + return value from compute_all_dependences. | |
8352 | + | |
8353 | + PR rtl-optimization/53160 | |
8354 | + * ree.c (combine_reaching_defs): Handle the case where cand->insn | |
8355 | + has been modified by ree pass already. | |
8356 | + | |
8357 | +2012-05-01 Uros Bizjak <ubizjak@gmail.com> | |
8358 | + | |
8359 | + Backport from mainline | |
8360 | + 2012-04-30 Uros Bizjak <ubizjak@gmail.com> | |
8361 | + | |
8362 | + PR middle-end/53136 | |
8363 | + * ipa-prop.c (ipa_print_node_jump_functions): Wrap multiple | |
8364 | + calls to cgraph_node_name in xstrdup. | |
8365 | + (ipa_make_edge_direct_to_target): Ditto. | |
8366 | + * tree-sra.c (convert_callers_for_node): Ditto. | |
8367 | + * lto-symtab.c (lto_cgraph_replace_node): Ditto. | |
8368 | + * ipa-cp.c (perhaps_add_new_callers): Ditto. | |
8369 | + * cgraphunit.c (cgraph_redirect_edge_call_stmt_to_callee): Ditto. | |
8370 | + (cgraph_materialize_all_clones): Ditto. | |
8371 | + * ipa-inline.c (report_inline_failed_reason): Ditto. | |
8372 | + (want_early_inline_function_p): Ditto. | |
8373 | + (edge_badness): Ditto. | |
8374 | + (update_edge_key): Ditto. | |
8375 | + (flatten_function): Ditto. | |
8376 | + (ipa_inline): Ditto. | |
8377 | + (inline_always_inline_functions): Ditto. | |
8378 | + (early_inline_small_functions): Ditto. | |
8379 | + | |
8380 | +2012-04-30 Andreas Tobler <andreast@fgznet.ch> | |
8381 | + | |
8382 | + Backport from mainline | |
8383 | + 2012-03-21 Andreas Tobler <andreast@fgznet.ch> | |
8384 | + | |
8385 | + * configure.ac (HAVE_LD_NO_DOT_SYMBOLS): Add powerpc64-*-freebsd*. | |
8386 | + Introduce emul_name to select the right linker emulation for | |
8387 | + powerpc64-*-freebsd*. | |
8388 | + * configure: Regenerate. | |
8389 | + * config.gcc: Add bits to support powerpc64-*-freebsd*. | |
8390 | + * config/rs6000/freebsd.h (POWERPC_FREEBSD): Define. | |
8391 | + * config/rs6000/freebsd64.h: New file. | |
8392 | + * config/rs6000/rs6000.c (rs6000_option_override_internal): Use | |
8393 | + POWERPC_FREEBSD. | |
8394 | + (rs6000_savres_strategy): Likewise. | |
8395 | + (rs6000_savres_routine_name): Likewise. | |
8396 | + (rs6000_elf_file_end): Likewise. | |
8397 | + * config/rs6000/t-freebsd64: New file. | |
8398 | + * config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Set the | |
8399 | + rs6000_current_abi for 64-bit FreeBSD to ABI_AIX. | |
8400 | + | |
8401 | +2012-04-30 Uros Bizjak <ubizjak@gmail.com> | |
8402 | + | |
8403 | + Backport from mainline | |
8404 | + 2012-04-27 Paolo Bonzini <bonzini@gnu.org> | |
8405 | + | |
8406 | + PR target/53138 | |
8407 | + * config/i386/i386.md (x86_mov<mode>cc_0_m1_neg): Add clobber. | |
8408 | + | |
8409 | +2012-04-30 Eric Botcazou <ebotcazou@adacore.com> | |
8410 | + | |
8411 | + * config/i386/i386.c (ix86_handle_struct_attribute): Use the proper | |
8412 | + predicate to discriminate types. | |
8413 | + | |
8414 | +2012-04-27 Richard Guenther <rguenther@suse.de> | |
8415 | + | |
8416 | + PR c/51527 | |
8417 | + * convert.c (convert_to_integer): Avoid infinite recursion for | |
8418 | + target-defined built-in types. | |
8419 | + | |
8420 | +2012-04-26 Hans-Peter Nilsson <hp@axis.com> | |
8421 | + | |
8422 | + PR target/53120 | |
8423 | + * config/cris/cris.md ("*andhi_lowpart_v32") | |
8424 | + ("*andqi_lowpart_v32"): Change first input-only operand from | |
8425 | + a (match_operand ...) to (match_dup 0). Drop alternatives with | |
8426 | + const_int-matching constraints for redundancy. | |
8427 | + ("*andhi_lowpart_non_v32", "*andqi_lowpart_non_v32"): Ditto. Drop | |
8428 | + three-operand alternative. | |
8429 | + | |
8430 | +2012-04-26 Uros Bizjak <ubizjak@gmail.com> | |
8431 | + | |
8432 | + Backport from mainline | |
8433 | + 2012-04-23 Uros Bizjak <ubizjak@gmail.com> | |
8434 | + | |
8435 | + * config/i386/i386.md (*add<mode>_2): Add r/r/0 alternative. | |
8436 | + (*addsi_2_zext): Ditto. | |
8437 | + (*add<mode>_3): Ditto. | |
8438 | + (*addsi_3_zext): Ditto. | |
8439 | + (*add<mode>_5): Ditto. | |
8440 | + | |
8441 | +2012-04-25 Jakub Jelinek <jakub@redhat.com> | |
8442 | + | |
8443 | + PR c/52880 | |
8444 | + * c-typeck.c (set_nonincremental_init, | |
8445 | + set_nonincremental_init_from_string): Pass true instead of false | |
8446 | + as IMPLICIT to add_pending_init. | |
8447 | + | |
8448 | +2012-04-24 Georg-Johann Lay <avr@gjlay.de> | |
8449 | + | |
8450 | + Backport from 2012-04-24 mainline r186768. | |
8451 | + | |
8452 | + PR target/53065 | |
8453 | + * config/avr/avr.h (HARD_REGNO_CALL_PART_CLOBBERED): New hook define. | |
8454 | + | |
8455 | +2012-04-24 Richard Guenther <rguenther@suse.de> | |
8456 | + | |
8457 | + PR tree-optimization/53085 | |
8458 | + * tree-ssa-pre.c (eliminate): Do not eliminate volatile redundant | |
8459 | + stores. | |
8460 | + | |
8461 | +2012-04-24 Jakub Jelinek <jakub@redhat.com> | |
8462 | + | |
8463 | + PR middle-end/53084 | |
8464 | + * varasm.c (compute_reloc_for_constant): Handle ADDR_EXPR | |
8465 | + of MEM_REF. | |
8466 | + (output_addressed_constants): Likewise. | |
8467 | + | |
8468 | + PR middle-end/52999 | |
8469 | + * varasm.c (get_section): Don't ICE for section conflicts with | |
8470 | + built-in section kinds. | |
8471 | + | |
8472 | +2012-04-23 David Edelsohn <dje.gcc@gmail.com> | |
8473 | + | |
8474 | + * config/rs6000/sync.md (fetchop_name): Change ior attribute to "or". | |
8475 | + | |
8476 | +2012-04-23 Georg-Johann Lay <avr@gjlay.de> | |
8477 | + | |
8478 | + * doc/extend.texi (AVR Named Address Spaces): Fix typos. | |
8479 | + | |
8480 | +2012-04-23 Richard Guenther <rguenther@suse.de> | |
8481 | + | |
8482 | + PR c/53060 | |
8483 | + * c-typeck.c (build_binary_op): Fix typo. | |
8484 | + | |
8485 | +2012-04-23 Jakub Jelinek <jakub@redhat.com> | |
8486 | + | |
8487 | + PR tree-optimizations/52891 | |
8488 | + * tree-vect-patterns.c (adjust_bool_pattern): Use | |
8489 | + build_nonstandard_type even if rhs1 has unsigned INTEGER_TYPE, | |
8490 | + but with non-standard precision. | |
8491 | + | |
8492 | +2012-04-22 Ian Lance Taylor <iant@google.com> | |
8493 | + | |
8494 | + * godump.c (go_output_typedef): Dump size of structs. | |
8495 | + | |
8496 | +2012-04-20 Ulrich Weigand <ulrich.weigand@linaro.org> | |
8497 | + | |
8498 | + Backport from mainline: | |
8499 | + | |
8500 | + * config/arm/arm.c (arm_print_operand): Fix invalid alignment | |
8501 | + hints for 'A' operand types. | |
8502 | + | |
8503 | +2012-04-19 Georg-Johann Lay <avr@gjlay.de> | |
8504 | + | |
8505 | + Backport from 2012-04-19 mainline r186588. | |
8506 | + | |
8507 | + PR target/53033 | |
8508 | + * config/avr/avr.c (avr_out_load_psi): Fix assembler template for | |
8509 | + the case *(X+const). | |
8510 | + | |
8511 | +2012-04-18 Uros Bizjak <ubizjak@gmail.com> | |
8512 | + | |
8513 | + * config/alpha/sync.md (fetchop_name): Change ior attribute to "or". | |
8514 | + | |
8515 | +2012-04-17 Uros Bizjak <ubizjak@gmail.com> | |
8516 | + | |
8517 | + PR target/53020 | |
8518 | + * config/i386/sync.md (atomic_<code><mode>): Rename to | |
8519 | + atomic_<logic><mode>. | |
8520 | + | |
8521 | +2012-04-16 Uros Bizjak <ubizjak@gmail.com> | |
8522 | + | |
8523 | + Backport from mainline | |
8524 | + 2012-04-12 Uros Bizjak <ubizjak@gmail.com> | |
8525 | + | |
8526 | + PR target/52932 | |
8527 | + * config/i386/avx2intrin.h (_mm256_permutevar8x32_ps): Change second | |
8528 | + argument type to __m256i. Update call to __builtin_ia32_permvarsf256. | |
8529 | + * config/i386/sse.md (avx2_permvarv8sf): Change operand 1 to V8SI. | |
8530 | + (avx2_permvarv8sf, avx2_permvarv8si): Switch operands 1 and 2. | |
8531 | + * config/i386/i386.c (bdesc_args) <__builtin_ia32_permvarsf256>: | |
8532 | + Update builtin type to V8SF_FTYPE_V8SF_V8SI. | |
8533 | + (ix86_expand_vec_perm): Update calls to gen_avx2_permvarv8si and | |
8534 | + gen_avx2_permvarv8sf. | |
8535 | + | |
8536 | +2012-04-16 Martin Jambor <mjambor@suse.cz> | |
8537 | + | |
8538 | + Backported from mainline | |
8539 | + | |
8540 | + 2012-04-13 Martin Jambor <mjambor@suse.cz> | |
8541 | + PR middle-end/52939 | |
8542 | + | |
8543 | + * gimple-fold.c (gimple_get_virt_method_for_binfo): Bail out if | |
8544 | + fold_ctor_reference returns a zero constant. | |
8545 | + | |
8546 | +2012-04-13 H.J. Lu <hongjiu.lu@intel.com> | |
8547 | + | |
8548 | + Backported from mainline | |
8549 | + 2012-04-13 H.J. Lu <hongjiu.lu@intel.com> | |
8550 | + | |
8551 | + * config/i386/i386-c.c (ix86_target_macros): Define _ILP32 | |
8552 | + and __ILP32__ for x32. | |
8553 | + | |
8554 | +2012-04-13 Tom de Vries <tom@codesourcery.com> | |
8555 | + | |
8556 | + Backport from mainline r186418. | |
8557 | + | |
8558 | + 2012-04-13 Tom de Vries <tom@codesourcery.com> | |
8559 | + | |
8560 | + * tree-ssa-tail-merge.c (gsi_advance_bw_nondebug_nonlocal): Add | |
8561 | + parameters vuse and vuse_escaped. | |
8562 | + (find_duplicate): Init vuse1, vuse2 and vuse_escaped. Pass to | |
8563 | + gsi_advance_bw_nondebug_nonlocal. Return if vuse_escaped and | |
8564 | + vuse1 != vuse2. | |
8565 | + | |
8566 | +2012-04-13 Richard Guenther <rguenther@suse.de> | |
8567 | + | |
8568 | + PR tree-optimization/52969 | |
8569 | + * tree-if-conv.c (predicate_mem_writes): Properly gimplify | |
8570 | + the condition for the COND_EXPR and handle predicate negation | |
8571 | + by swapping the COND_EXPR arms. | |
8572 | + | |
8573 | +2012-04-13 Richard Guenther <rguenther@suse.de> | |
8574 | + | |
8575 | + PR c/52862 | |
8576 | + * convert.c (convert_to_pointer): Remove special-casing of | |
8577 | + zero. | |
8578 | + | |
8579 | +2012-04-12 Michael Meissner <meissner@linux.vnet.ibm.com> | |
8580 | + | |
8581 | + Backport from mainline | |
8582 | + 2012-04-12 Michael Meissner <meissner@linux.vnet.ibm.com> | |
8583 | + | |
8584 | + PR target/52775 | |
8585 | + * config/rs6000/rs6000.h (TARGET_FCFID): Add TARGET_PPC_GPOPT to | |
8586 | + the list of options to enable the FCFID instruction. | |
8587 | + (TARGET_EXTRA_BUILTINS): Adjust comment. | |
8588 | + | |
8589 | +2012-04-12 Richard Guenther <rguenther@suse.de> | |
8590 | + | |
8591 | + PR tree-optimization/52943 | |
8592 | + * tree-chrec.h (chrec_is_positive): Remove. | |
8593 | + * tree-scalar-evolution.c (chrec_is_positive): Move ... | |
8594 | + * tree-data-ref.c (chrec_is_positive): ... here. Make static. | |
8595 | + Return false for a constant zero instead of negative. | |
8596 | + (analyze_siv_subscript_cst_affine): Handle zero difference | |
8597 | + in the initial condition explicitely. | |
8598 | + | |
8599 | +2012-04-10 John David Anglin <dave.anglin@nrc-cnrc.gc.ca> | |
8600 | + | |
8601 | + PR middle-end/52894 | |
8602 | + * varasm.c (process_pending_assemble_externals): Set | |
8603 | + pending_assemble_externals_processed true. | |
8604 | + (assemble_external): Call assemble_external_real if the pending | |
8605 | + assemble externals have been processed. | |
8606 | + | |
8607 | +2012-04-09 Eric Botcazou <ebotcazou@adacore.com> | |
8608 | + | |
8609 | + PR target/52717 | |
8610 | + * config/sparc/sparc.c (sparc_file_end): Set TREE_PUBLIC explicitly on | |
8611 | + the DECL generated for the special GOT helper. | |
8612 | + | |
8613 | +2012-04-06 Walter Lee <walt@tilera.com> | |
8614 | + | |
8615 | + Backport from mainline | |
8616 | + 2012-03-07 Walter Lee <walt@tilera.com> | |
8617 | + | |
8618 | + * config/tilegx/tilegx.c (tilegx_expand_prologue): Don't generate | |
8619 | + REG_CFA_* notes for the stack pointer. | |
8620 | + (tilegx_expand_epilogue): Restore stack pointer by adjusting it by | |
8621 | + EH_RETURN_STACKADJ_RTX. | |
8622 | + * config/tilepro/tilepro.c (tilepro_expand_prologue): Don't | |
8623 | + generate REG_CFA_* notes for the stack pointer. | |
8624 | + (tilepro_expand_epilogue): Restore stack pointer by adjusting it | |
8625 | + by EH_RETURN_STACKADJ_RTX. | |
8626 | + | |
8627 | +2012-04-06 Matt Turner <mattst88@gmail.com> | |
8628 | + | |
8629 | + * doc/install.texi: Correct typo "-mno-lsc" -> "-mno-llsc". | |
8630 | + | |
8631 | +2012-04-06 Eric Botcazou <ebotcazou@adacore.com> | |
8632 | + | |
8633 | + * config/ia64/ia64.c (ia64_load_pair_ok): Return 0 if the second member | |
8634 | + of the destination isn't also a FP_REGS register. | |
8635 | + | |
8636 | +2012-04-03 Richard Guenther <rguenther@suse.de> | |
8637 | + | |
8638 | + Backport from mainline | |
8639 | + 2012-03-02 Richard Guenther <rguenther@suse.de> | |
8640 | + | |
8641 | + PR tree-optimization/52406 | |
8642 | + * tree-data-ref.h: Update documentation about DR_BASE_OBJECT. | |
8643 | + (struct indices): Add unconstrained_base member. | |
8644 | + (struct dr_alias): Remove unused vops member. | |
8645 | + (DR_UNCONSTRAINED_BASE): New define. | |
8646 | + * tree-data-ref.c (dr_analyze_indices): For COMPONENT_REFs | |
8647 | + add indices to allow their disambiguation. Make DR_BASE_OBJECT | |
8648 | + be an artificial access that covers the whole indexed object, | |
8649 | + or mark it with DR_UNCONSTRAINED_BASE if we cannot do so. Canonicalize | |
8650 | + plain decl base-objects to their MEM_REF variant. | |
8651 | + (dr_may_alias_p): When the base-object of either data reference | |
8652 | + has unknown size use only points-to information. | |
8653 | + (compute_affine_dependence): Make dumps easier to read and | |
8654 | + more verbose. | |
8655 | + * tree-vect-data-ref.c (vector_alignment_reachable_p): Use | |
8656 | + DR_REF when looking for packed references. | |
8657 | + (vect_supportable_dr_alignment): Likewise. | |
8658 | + | |
8659 | +2012-04-03 Richard Guenther <rguenther@suse.de> | |
8660 | + | |
8661 | + Backport from mainline | |
8662 | + 2012-03-15 Richard Guenther <rguenther@suse.de> | |
8663 | + | |
8664 | + PR middle-end/52580 | |
8665 | + * tree-data-ref.c (subscript_dependence_tester_1): Check | |
8666 | + all dimensions for non-conflicting access functions. | |
8667 | + | |
8668 | +2012-04-03 Richard Guenther <rguenther@suse.de> | |
8669 | + | |
8670 | + Backport from mainline | |
8671 | + 2012-03-06 Richard Guenther <rguenther@suse.de> | |
8672 | + | |
8673 | + PR middle-end/52493 | |
8674 | + * tree-ssa-alias.c (ptr_derefs_may_alias_p): Robustify. | |
8675 | + | |
8676 | + 2012-03-23 Richard Guenther <rguenther@suse.de> | |
8677 | + | |
8678 | + PR tree-optimization/52678 | |
8679 | + * tree-vectorizer.h (struct _stmt_vec_info): Add | |
8680 | + loop_phi_evolution_part member. | |
8681 | + (STMT_VINFO_LOOP_PHI_EVOLUTION_PART): New define. | |
8682 | + * tree-vect-loop.c (vect_analyze_scalar_cycles_1): Initialize | |
8683 | + STMT_VINFO_LOOP_PHI_EVOLUTION_PART. | |
8684 | + * tree-vect-loop-manip.c (vect_update_ivs_after_vectorizer): | |
8685 | + Use the cached evolution part and the PHI nodes value from | |
8686 | + the loop preheader edge instead of re-analyzing the evolution. | |
8687 | + | |
8688 | + 2012-03-26 Richard Guenther <rguenther@suse.de> | |
8689 | + | |
8690 | + PR tree-optimization/52701 | |
8691 | + * tree-vect-loop.c (vect_analyze_scalar_cycles_1): Always | |
8692 | + compute and set the evolution part of PHI nodes. | |
8693 | + | |
8694 | + 2012-03-30 Richard Guenther <rguenther@suse.de> | |
8695 | + | |
8696 | + PR tree-optimization/52754 | |
8697 | + * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Only | |
8698 | + propagate arbitrary addresses into really plain dereferences. | |
8699 | + | |
8700 | +2012-04-03 Jakub Jelinek <jakub@redhat.com> | |
8701 | + | |
8702 | + PR tree-optimization/52835 | |
8703 | + * tree-data-ref.c (build_rdg): Return NULL if | |
8704 | + compute_data_dependences_for_loop failed. | |
8705 | + | |
8706 | +2012-03-31 Eric Botcazou <ebotcazou@adacore.com> | |
8707 | + | |
8708 | + * tree-cfg.c (call_can_make_abnormal_goto): New predicate. | |
8709 | + (stmt_can_make_abnormal_goto): Use it. | |
8710 | + (is_ctrl_altering_stmt): Likewise. | |
8711 | + | |
8712 | +2012-03-31 Martin Jambor <mjambor@suse.cz> | |
8713 | + | |
8714 | + Backported from mainline | |
8715 | + 2012-03-30 Martin Jambor <mjambor@suse.cz> | |
8716 | + | |
8717 | + * tree-ssa-ccp.c (insert_clobbers_for_var): Do not assert that there | |
8718 | + is a builtin_stack_save in a dominating BB. | |
8719 | + | |
8720 | +2012-03-29 Uros Bizjak <ubizjak@gmail.com> | |
8721 | + | |
8722 | + * config/i386/sse.md (avx_h<plusminus_insn>v4df3): Fix results | |
8723 | + crossing 128bit lane boundary. | |
8724 | + | |
8725 | +2012-03-29 Uros Bizjak <ubizjak@gmail.com> | |
8726 | + | |
8727 | + Backported from mainline | |
8728 | + 2012-03-27 Uros Bizjak <ubizjak@gmail.com> | |
8729 | + | |
8730 | + PR target/52698 | |
8731 | + * config/i386/i386-protos.h (ix86_legitimize_reload_address): | |
8732 | + New prototype. | |
8733 | + * config/i386/i386.h (LEGITIMIZE_RELOAD_ADDRESS): New define. | |
8734 | + * config/i386/i386.c: Include reload.h. | |
8735 | + (ix86_legitimize_reload_address): New function. | |
8736 | + | |
8737 | +2012-03-28 Martin Jambor <mjambor@suse.cz> | |
8738 | + | |
8739 | + Backported from mainline | |
8740 | + 2012-03-27 Martin Jambor <mjambor@suse.cz> | |
8741 | + | |
8742 | + PR middle-end/52693 | |
8743 | + * tree-sra.c (sra_modify_assign): Do not call | |
8744 | + load_assign_lhs_subreplacements when working with an unscalarizable | |
8745 | + region. | |
8746 | + | |
8747 | +2012-03-28 Jakub Jelinek <jakub@redhat.com> | |
8748 | + | |
8749 | + PR middle-end/52691 | |
8750 | + * tree-ssa-ccp.c (optimize_stdarg_builtin): Optimize | |
8751 | + __builtin_va_start to __builtin_next_arg if the latter is | |
8752 | + builtin_decl_explicit_p rather than when it is not. | |
8753 | + | |
8754 | + PR middle-end/52750 | |
8755 | + * tree-vect-generic.c (vector_element): Perform multiplication | |
8756 | + for pos in bitsizetype type instead of idx type. | |
8757 | + | |
8758 | +2012-03-28 Georg-Johann Lay <avr@gjlay.de> | |
8759 | + | |
8760 | + Backport from 2012-03-28 mainline r185910. | |
8761 | + | |
8762 | + PR target/52692 | |
8763 | + * config/avr/avr.c (TARGET_BUILTIN_DECL): New define. | |
8764 | + (avr_builtin_decl): New static function. | |
8765 | + (struct avr_builtin_description, avr_bdesc): Move up. | |
8766 | + Add GTY marker. Add field fndecl. Remove redundant field id. | |
8767 | + (avr_init_builtins): Initialize avr_bdesc[ID].fndecl. | |
8768 | + (avr_expand_builtin): Code cleanup because .id is removed. | |
8769 | + | |
8770 | +2012-03-28 Aurelien Buhrig <aurelien.buhrig.gcc@gmail.com> | |
8771 | + | |
8772 | + PR middle-end/51893 | |
8773 | + * expmed.c (store_bit_field_1): Fix wordnum value for big-endian | |
8774 | + targets. | |
8775 | + | |
8776 | +2012-03-28 Georg-Johann Lay <avr@gjlay.de> | |
8777 | + | |
8778 | + Backport from 2012-03-28 mainline r185907. | |
8779 | + | |
8780 | + PR target/52737 | |
8781 | + * config.gcc (tm_file): Remove avr/multilib.h. | |
8782 | + | |
8783 | + * doc/invoke.texi (AVR Options): Adjust | |
8784 | + documentation of -mtiny-stack. | |
8785 | + | |
8786 | + * config/avr/genmultilib.awk: Remove code to generate multilib.h. | |
8787 | + (BEGIN): Use -msp8 as multilib option instead of -mtiny-stack. | |
8788 | + * config/avr/t-avr: Remove generation of multilib.h. | |
8789 | + * config/avr/t-multilib: Regenerate. | |
8790 | + * config/avr/multilib.h: Remove. | |
8791 | + * config/avr/avr.opt (-msp8): New option. | |
8792 | + (avr_sp8): New variable. | |
8793 | + * config/avr/driver-avr.c (avr_device_to_sp8): New function. | |
8794 | + * config/avr/avr.h (AVR_HAVE_SPH): New define. | |
8795 | + (AVR_HAVE_8BIT_SP): Also set by avr_sp8 i.e. -msp8. | |
8796 | + (avr_device_to_sp8): New prototype. | |
8797 | + (EXTRA_SPEC_FUNCTIONS): Add { "device_to_sp8", avr_device_to_sp8 } | |
8798 | + (DRIVER_SELF_SPECS): New define. | |
8799 | + * config/avr/avr-c.c (avr_cpu_cpp_builtins): New built-in defines: | |
8800 | + __AVR_SP8__, __AVR_HAVE_SPH__. | |
8801 | + * config/avr/avr.c (output_movhi): Use AVR_HAVE_SPH instead of | |
8802 | + AVR_HAVE_8BIT_SP to decide if SP_H is present. | |
8803 | + (avr_file_start): Ditto. | |
8804 | + | |
8805 | +2012-03-28 Jakub Jelinek <jakub@redhat.com> | |
8806 | + | |
8807 | + PR target/52736 | |
8808 | + * config/i386/sse.md (sse2_loadlpd splitter): Use offset 0 | |
8809 | + instead of 8 in adjust_address. | |
8810 | + | |
8811 | +2012-03-27 Eric Botcazou <ebotcazou@adacore.com> | |
8812 | + | |
8813 | + * expmed.c (store_bit_field): Assert that BITREGION_START is a multiple | |
8814 | + of a unit before computing the offset in units. | |
8815 | + | |
8816 | +2012-03-27 Richard Guenther <rguenther@suse.de> | |
8817 | + | |
8818 | + PR middle-end/52720 | |
8819 | + * fold-const.c (try_move_mult_to_index): Handle &x.array more | |
8820 | + explicitely. | |
8821 | + | |
8822 | +2012-03-24 Eric Botcazou <ebotcazou@adacore.com> | |
8823 | + | |
8824 | + PR target/52610 | |
8825 | + * config/sparc/sparc.h (ASM_CPU_SPEC): Pass -Av8 if -mcpu=leon. | |
8826 | + | |
8827 | +2012-03-24 Steven Bosscher <steven@gcc.gnu.org> | |
8828 | + | |
8829 | + PR middle-end/52640 | |
8830 | + * varasm.c: Include pointer-set.h. | |
8831 | + (pending_assemble_externals_set): New pointer set. | |
8832 | + (process_pending_assemble_externals): Destroy the pointer set. | |
8833 | + (assemble_external): See if decl is in pending_assemble_externals_set, | |
8834 | + and add it to pending_assemble_externals if necessary. | |
8835 | + (init_varasm_once): Allocate pending_assemble_externals_set. | |
8836 | + | |
8837 | +2012-03-23 Michael Meissner <meissner@linux.vnet.ibm.com> | |
8838 | + | |
8839 | + Backported from mainline | |
8840 | + 2012-03-06 Michael Meissner <meissner@linux.vnet.ibm.com> | |
8841 | + | |
8842 | + PR target/50310 | |
8843 | + * config/rs6000/vector.md (vector_uneq<mode>): Add support for | |
8844 | + UNEQ, LTGT, ORDERED, and UNORDERED IEEE vector comparisons. | |
8845 | + (vector_ltgt<mode>): Likewise. | |
8846 | + (vector_ordered<mode>): Likewise. | |
8847 | + (vector_unordered<mode>): Likewise. | |
8848 | + * config/rs6000/rs6000.c (rs6000_emit_vector_compare_inner): Likewise. | |
8849 | + | |
8850 | +2012-03-23 Joern Rennecke <joern.rennecke@embecosm.com> | |
8851 | + | |
8852 | + * config/epiphany/epiphany.c (epiphany_function_value_regno_p): | |
8853 | + Make static. | |
8854 | + | |
8855 | +2012-03-22 Kaz Kojima <kkojima@gcc.gnu.org> | |
8856 | + | |
8857 | + Backported from mainline | |
8858 | + 2012-03-02 Kaz Kojima <kkojima@gcc.gnu.org> | |
8859 | + | |
8860 | + PR target/48596 | |
8861 | + PR target/48806 | |
8862 | + * config/sh/sh.c (sh_register_move_cost): Increase cost between | |
8863 | + GENERAL_REGS and FP_REGS for SImode. | |
8864 | + | |
8865 | +2012-03-22 Jakub Jelinek <jakub@redhat.com> | |
8866 | + | |
8867 | + PR middle-end/52547 | |
8868 | + * tree-nested.c (convert_tramp_reference_stmt): Call declare_vars | |
8869 | + on any new_local_var_chain vars declared during recursing on | |
8870 | + GIMPLE_OMP_PARALLEL or GIMPLE_OMP_TASK body. | |
8871 | + | |
8872 | +2012-03-22 Georg-Johann Lay <avr@gjlay.de> | |
8873 | + | |
8874 | + Backport from 2012-03-22 mainline r185692. | |
8875 | + | |
8876 | + PR target/52496 | |
8877 | + * config/avr/avr.md (unspec): Remove UNSPEC_MEMORY_BARRIER. | |
8878 | + (unspecv): Add UNSPECV_MEMORY_BARRIER. | |
8879 | + (cli_sei): Use unspec_volatile instead of unspec for memory barrier. | |
8880 | + (delay_cycles_1, delay_cycles_2): Ditto. | |
8881 | + (delay_cycles_3, delay_cycles_4): Ditto. | |
8882 | + (nopv, *nopv): Ditto. | |
8883 | + (sleep, *sleep): Ditto. | |
8884 | + (wdr, *wdr): Ditto. | |
8885 | + | |
8886 | + Backport from 2012-03-21 mainline r185605. | |
8887 | + | |
8888 | + PR rtl-optimization/52543 | |
8889 | + PR target/52461 | |
8890 | + * config/avr/avr-protos.h (avr_load_lpm): New prototype. | |
8891 | + * config/avr/avr.c (avr_mode_dependent_address_p): New function. | |
8892 | + (TARGET_MODE_DEPENDENT_ADDRESS_P): New define. | |
8893 | + (avr_load_libgcc_p): Restrict to __flash loads. | |
8894 | + (avr_out_lpm): Only handle 1-byte loads from __flash. | |
8895 | + (avr_load_lpm): New function. | |
8896 | + (avr_find_unused_d_reg): Remove. | |
8897 | + (avr_out_lpm_no_lpmx): Remove. | |
8898 | + (adjust_insn_length): Handle ADJUST_LEN_LOAD_LPM. | |
8899 | + * config/avr/avr.md (unspec): Add UNSPEC_LPM. | |
8900 | + (load_<mode>_libgcc): Use UNSPEC_LPM instead of MEM. | |
8901 | + (load_<mode>, load_<mode>_clobber): New insns. | |
8902 | + (mov<mode>): For multi-byte move from non-generic | |
8903 | + 16-bit address spaces: Expand to load_<mode> resp. | |
8904 | + load_<mode>_clobber. | |
8905 | + (load<mode>_libgcc): Remove expander. | |
8906 | + (split-lpmx): Remove split. | |
8907 | + | |
8908 | + Backport from 2012-03-13 mainline r185329. | |
8909 | + | |
8910 | + PR target/52488 | |
8911 | + * config/avr/avr.c (avr_prologue_setup_frame): Cut down stack | |
8912 | + offset (size) to a value the insns can deal with. | |
8913 | + (expand_epilogue): Ditto. | |
8914 | + | |
8915 | + Backport from 2012-03-12 mainline r185256. | |
8916 | + | |
8917 | + PR target/52499 | |
8918 | + * config/avr/avr.c (avr_mode_code_base_reg_class): Change return | |
8919 | + type from reg_class_t to enum reg_class. | |
8920 | + * config/avr/avr-protos.h (avr_mode_code_base_reg_class): Ditto. | |
8921 | + | |
8922 | + Backport from 2012-03-12 mainline r185253. | |
8923 | + | |
8924 | + PR target/52148 | |
8925 | + * config/avr/avr.c (avr_out_movmem): Fix typo in output template | |
8926 | + for the case ADDR_SPACE_FLASH and AVR_HAVE_LPMX introduced in | |
8927 | + r184615 from 2012-02-28. | |
8928 | + | |
8929 | + Backport from 2012-03-08 mainline r185105. | |
8930 | + | |
8931 | + * config/avr/avr.md (*addhi3, addhi3_clobber): Add "w" alternative | |
8932 | + for constants in [-63,63]. | |
8933 | + | |
8934 | + Backport from 2012-03-08 mainline r185100. | |
8935 | + | |
8936 | + PR target/52496 | |
8937 | + * config/avr/avr.c (avr_mem_clobber): New static function. | |
8938 | + (avr_expand_delay_cycles): Add memory clobber operand to | |
8939 | + delay_cycles_1, delay_cycles_2, delay_cycles_3, delay_cycles_4. | |
8940 | + * config/avr/avr.md (unspec): Add UNSPEC_MEMORY_BARRIER. | |
8941 | + (enable_interrupt, disable_interrupt): New expander. | |
8942 | + (nopv, sleep, wdr): New expanders. | |
8943 | + (delay_cycles_1): Add memory clobber. | |
8944 | + (delay_cycles_2): Add memory clobber. | |
8945 | + (delay_cycles_3): Add memory clobber. | |
8946 | + (delay_cycles_4): Add memory clobber. | |
8947 | + (cli_sei): New insn from former "enable_interrupt", | |
8948 | + "disable_interrupt" with memory clobber. | |
8949 | + (*wdt): New insn from former "wdt" with memory clobber. | |
8950 | + (*nopv): Similar, but for "nopv". | |
8951 | + (*sleep): Similar, but for "sleep". | |
8952 | + | |
8953 | + Backport from 2012-03-07 mainline r185043. | |
8954 | + | |
8955 | + PR target/52484 | |
8956 | + * config/avr/avr.md (xload<mode>_A): Add R22... to register footprint. | |
8957 | + | |
8958 | + Backport from 2012-03-07 mainline r185032. | |
8959 | + | |
8960 | + PR target/52506 | |
8961 | + * gcc/config/avr/avr.c (expand_epilogue): Fix order of restoration | |
8962 | + to: RAMPZ, RAMPY, RAMPX, RAMPD. | |
8963 | + (expand_prologue): Only clear RAMPZ if it has effect on RAM-read. | |
8964 | + | |
8965 | + Backport from 2012-03-07 mainline r185031. | |
8966 | + | |
8967 | + PR target/52505 | |
8968 | + * config/avr/avr.c (avr_out_xload): Don't read unintentionally | |
8969 | + from RAM. | |
8970 | + * config/avr/avr.md (xload_8): Adjust insn length. | |
8971 | + | |
8972 | + Backport from 2012-03-07 mainline r185030. | |
8973 | + | |
8974 | + PR target/52461 | |
8975 | + * gcc/config/avr/avr.c (avr_out_lpm): Clear RAMPZ after usage | |
8976 | + if RAMPZ affects reading from RAM. | |
8977 | + | |
8978 | + Backport from 2012-03-05 mainline r184919. | |
8979 | + | |
8980 | + * config/avr/avr.md (*umaddqihi4.2): New insn-and-split. | |
8981 | + | |
8982 | +2012-03-22 Georg-Johann Lay <avr@gjlay.de> | |
8983 | + | |
8984 | + Backport from mainline r185259. | |
8985 | + | |
8986 | + PR other/52545 | |
8987 | + * output.h (SECTION_EXCLUDE, SECTION_MACH_DEP): Don't use | |
8988 | + SECTION_MACH_DEP reserved bits for SECTION_EXCLUDE. | |
8989 | + | |
8990 | +2012-03-22 Jakub Jelinek <jakub@redhat.com> | |
8991 | + | |
8992 | + Backported from mainline | |
8993 | + 2012-03-13 Jakub Jelinek <jakub@redhat.com> | |
8994 | + | |
8995 | + PR c/52577 | |
8996 | + * c-parser.c (c_parser_postfix_expression) | |
8997 | + <case RID_BUILTIN_SHUFFLE>: Call mark_exp_read on argument values. | |
8998 | + | |
8999 | + * config/i386/smmintrin.h: Avoid /* within a comment. | |
9000 | + * config/i386/nmmintrin.h: Likewise. | |
9001 | + | |
9002 | +2012-03-22 Richard Guenther <rguenther@suse.de> | |
9003 | + | |
9004 | + * BASE-VER: Set to 4.7.1. | |
9005 | + * DEV-PHASE: Set to prerelease. | |
9006 | + | |
9007 | 2012-03-22 Release Manager | |
9008 | ||
9009 | * GCC 4.7.0 released. | |
9010 | @@ -74,8 +1166,8 @@ | |
9011 | 2012-03-07 Ralf Corsépius <ralf.corsepius@rtems.org> | |
9012 | ||
9013 | PR target/51417 | |
9014 | - * Makefile.in: Let install-gcc-ar depend on installdirs, gcc-ar$(exeext), | |
9015 | - gcc-nm$(exeext), gcc-ranlib$(exeext). | |
9016 | + * Makefile.in: Let install-gcc-ar depend on installdirs, | |
9017 | + gcc-ar$(exeext), gcc-nm$(exeext), gcc-ranlib$(exeext). | |
9018 | Don't double canonicalize if cross-compiling. | |
9019 | ||
9020 | 2012-03-06 Aldy Hernandez <aldyh@redhat.com> | |
9021 | @@ -234,7 +1326,7 @@ | |
9022 | 2012-03-01 Georg-Johann Lay <avr@gjlay.de> | |
9023 | ||
9024 | * config/avr/avr-c.c (avr_cpu_cpp_builtins): Restore built-in | |
9025 | - defines for __UINT24_MAX__, __INT24_MAX__, __INT24_MIN__ | |
9026 | + defines for __UINT24_MAX__, __INT24_MAX__, __INT24_MIN__ | |
9027 | unintentionally removed in r184616. | |
9028 | ||
9029 | 2012-03-01 Venkataramanan Kumar <venkataramanan.kumar@amd.com> | |
9030 | @@ -390,7 +1482,7 @@ | |
9031 | ||
9032 | * config/avr/avr-devices.c (avr_mcu_type): Adjust NULL part | |
9033 | of initializer to changes from r184614. | |
9034 | - | |
9035 | + | |
9036 | 2012-02-28 Richard Guenther <rguenther@suse.de> | |
9037 | ||
9038 | PR tree-optimization/52395 | |
9039 | Index: gcc/tree-vect-loop-manip.c | |
9040 | =================================================================== | |
9041 | --- gcc/tree-vect-loop-manip.c (.../tags/gcc_4_7_0_release) (wersja 187906) | |
9042 | +++ gcc/tree-vect-loop-manip.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
9043 | @@ -1797,13 +1797,12 @@ | |
9044 | !gsi_end_p (gsi) && !gsi_end_p (gsi1); | |
9045 | gsi_next (&gsi), gsi_next (&gsi1)) | |
9046 | { | |
9047 | - tree access_fn = NULL; | |
9048 | - tree evolution_part; | |
9049 | tree init_expr; | |
9050 | tree step_expr, off; | |
9051 | tree type; | |
9052 | tree var, ni, ni_name; | |
9053 | gimple_stmt_iterator last_gsi; | |
9054 | + stmt_vec_info stmt_info; | |
9055 | ||
9056 | phi = gsi_stmt (gsi); | |
9057 | phi1 = gsi_stmt (gsi1); | |
9058 | @@ -1822,45 +1821,34 @@ | |
9059 | } | |
9060 | ||
9061 | /* Skip reduction phis. */ | |
9062 | - if (STMT_VINFO_DEF_TYPE (vinfo_for_stmt (phi)) == vect_reduction_def) | |
9063 | + stmt_info = vinfo_for_stmt (phi); | |
9064 | + if (STMT_VINFO_DEF_TYPE (stmt_info) == vect_reduction_def) | |
9065 | { | |
9066 | if (vect_print_dump_info (REPORT_DETAILS)) | |
9067 | fprintf (vect_dump, "reduc phi. skip."); | |
9068 | continue; | |
9069 | } | |
9070 | ||
9071 | - access_fn = analyze_scalar_evolution (loop, PHI_RESULT (phi)); | |
9072 | - gcc_assert (access_fn); | |
9073 | - /* We can end up with an access_fn like | |
9074 | - (short int) {(short unsigned int) i_49, +, 1}_1 | |
9075 | - for further analysis we need to strip the outer cast but we | |
9076 | - need to preserve the original type. */ | |
9077 | - type = TREE_TYPE (access_fn); | |
9078 | - STRIP_NOPS (access_fn); | |
9079 | - evolution_part = | |
9080 | - unshare_expr (evolution_part_in_loop_num (access_fn, loop->num)); | |
9081 | - gcc_assert (evolution_part != NULL_TREE); | |
9082 | + type = TREE_TYPE (gimple_phi_result (phi)); | |
9083 | + step_expr = STMT_VINFO_LOOP_PHI_EVOLUTION_PART (stmt_info); | |
9084 | + step_expr = unshare_expr (step_expr); | |
9085 | ||
9086 | /* FORNOW: We do not support IVs whose evolution function is a polynomial | |
9087 | of degree >= 2 or exponential. */ | |
9088 | - gcc_assert (!tree_is_chrec (evolution_part)); | |
9089 | + gcc_assert (!tree_is_chrec (step_expr)); | |
9090 | ||
9091 | - step_expr = evolution_part; | |
9092 | - init_expr = unshare_expr (initial_condition_in_loop_num (access_fn, | |
9093 | - loop->num)); | |
9094 | - init_expr = fold_convert (type, init_expr); | |
9095 | + init_expr = PHI_ARG_DEF_FROM_EDGE (phi, loop_preheader_edge (loop)); | |
9096 | ||
9097 | off = fold_build2 (MULT_EXPR, TREE_TYPE (step_expr), | |
9098 | fold_convert (TREE_TYPE (step_expr), niters), | |
9099 | step_expr); | |
9100 | - if (POINTER_TYPE_P (TREE_TYPE (init_expr))) | |
9101 | + if (POINTER_TYPE_P (type)) | |
9102 | ni = fold_build_pointer_plus (init_expr, off); | |
9103 | else | |
9104 | - ni = fold_build2 (PLUS_EXPR, TREE_TYPE (init_expr), | |
9105 | - init_expr, | |
9106 | - fold_convert (TREE_TYPE (init_expr), off)); | |
9107 | + ni = fold_build2 (PLUS_EXPR, type, | |
9108 | + init_expr, fold_convert (type, off)); | |
9109 | ||
9110 | - var = create_tmp_var (TREE_TYPE (init_expr), "tmp"); | |
9111 | + var = create_tmp_var (type, "tmp"); | |
9112 | add_referenced_var (var); | |
9113 | ||
9114 | last_gsi = gsi_last_bb (exit_bb); | |
9115 | Index: gcc/testsuite/gcc.target/arm/pr52633.c | |
9116 | =================================================================== | |
9117 | --- gcc/testsuite/gcc.target/arm/pr52633.c (.../tags/gcc_4_7_0_release) (wersja 0) | |
9118 | +++ gcc/testsuite/gcc.target/arm/pr52633.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
9119 | @@ -0,0 +1,13 @@ | |
9120 | +/* PR tree-optimization/52633 */ | |
9121 | +/* { dg-do compile } */ | |
9122 | +/* { dg-require-effective-target arm_neon_ok } */ | |
9123 | +/* { dg-options "-march=armv7-a -mfloat-abi=softfp -mfpu=neon -O -ftree-vectorize" } */ | |
9124 | + | |
9125 | +void | |
9126 | +test (unsigned short *x, signed char *y) | |
9127 | +{ | |
9128 | + int i; | |
9129 | + for (i = 0; i < 32; i++) | |
9130 | + x[i] = (short) (y[i] << 5); | |
9131 | +} | |
9132 | + | |
9133 | Index: gcc/testsuite/gcc.target/arm/pr53187.c | |
9134 | =================================================================== | |
9135 | --- gcc/testsuite/gcc.target/arm/pr53187.c (.../tags/gcc_4_7_0_release) (wersja 0) | |
9136 | +++ gcc/testsuite/gcc.target/arm/pr53187.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
9137 | @@ -0,0 +1,13 @@ | |
9138 | +/* PR target/53187 */ | |
9139 | +/* { dg-do compile } */ | |
9140 | +/* { dg-options "-march=armv7-a -mfloat-abi=hard -O2" } */ | |
9141 | + | |
9142 | +void bar (int); | |
9143 | + | |
9144 | +void | |
9145 | +foo (int x, double y, double z) | |
9146 | +{ | |
9147 | + _Bool t = z >= y; | |
9148 | + if (!t || x) | |
9149 | + bar (t ? 1 : 16); | |
9150 | +} | |
9151 | Index: gcc/testsuite/gcc.target/powerpc/pr52775.c | |
9152 | =================================================================== | |
9153 | --- gcc/testsuite/gcc.target/powerpc/pr52775.c (.../tags/gcc_4_7_0_release) (wersja 0) | |
9154 | +++ gcc/testsuite/gcc.target/powerpc/pr52775.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
9155 | @@ -0,0 +1,16 @@ | |
9156 | +/* { dg-do compile { target { powerpc*-*-* && ilp32 } } } */ | |
9157 | +/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */ | |
9158 | +/* { dg-options "-O1 -mcpu=power4" } */ | |
9159 | +/* { dg-final { scan-assembler-times "fcfid" 2 } } */ | |
9160 | + | |
9161 | +double | |
9162 | +int_to_double (int *p) | |
9163 | +{ | |
9164 | + return (double)*p; | |
9165 | +} | |
9166 | + | |
9167 | +double | |
9168 | +long_long_to_double (long long *p) | |
9169 | +{ | |
9170 | + return (double)*p; | |
9171 | +} | |
9172 | Index: gcc/testsuite/gcc.target/powerpc/pr53199.c | |
9173 | =================================================================== | |
9174 | --- gcc/testsuite/gcc.target/powerpc/pr53199.c (.../tags/gcc_4_7_0_release) (wersja 0) | |
9175 | +++ gcc/testsuite/gcc.target/powerpc/pr53199.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
9176 | @@ -0,0 +1,50 @@ | |
9177 | +/* { dg-do compile { target { powerpc*-*-* } } } */ | |
9178 | +/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */ | |
9179 | +/* { dg-options "-O2 -mcpu=power6 -mavoid-indexed-addresses" } */ | |
9180 | +/* { dg-final { scan-assembler-times "lwbrx" 6 } } */ | |
9181 | +/* { dg-final { scan-assembler-times "stwbrx" 6 } } */ | |
9182 | + | |
9183 | +/* PR 51399: bswap gets an error if -mavoid-indexed-addresses was used in | |
9184 | + creating the two lwbrx instructions. */ | |
9185 | + | |
9186 | +long long | |
9187 | +load64_reverse_1 (long long *p) | |
9188 | +{ | |
9189 | + return __builtin_bswap64 (*p); | |
9190 | +} | |
9191 | + | |
9192 | +long long | |
9193 | +load64_reverse_2 (long long *p) | |
9194 | +{ | |
9195 | + return __builtin_bswap64 (p[1]); | |
9196 | +} | |
9197 | + | |
9198 | +long long | |
9199 | +load64_reverse_3 (long long *p, int i) | |
9200 | +{ | |
9201 | + return __builtin_bswap64 (p[i]); | |
9202 | +} | |
9203 | + | |
9204 | +void | |
9205 | +store64_reverse_1 (long long *p, long long x) | |
9206 | +{ | |
9207 | + *p = __builtin_bswap64 (x); | |
9208 | +} | |
9209 | + | |
9210 | +void | |
9211 | +store64_reverse_2 (long long *p, long long x) | |
9212 | +{ | |
9213 | + p[1] = __builtin_bswap64 (x); | |
9214 | +} | |
9215 | + | |
9216 | +void | |
9217 | +store64_reverse_3 (long long *p, long long x, int i) | |
9218 | +{ | |
9219 | + p[i] = __builtin_bswap64 (x); | |
9220 | +} | |
9221 | + | |
9222 | +long long | |
9223 | +reg_reverse (long long x) | |
9224 | +{ | |
9225 | + return __builtin_bswap64 (x); | |
9226 | +} | |
9227 | Index: gcc/testsuite/gcc.target/avr/torture/addr-space-1-0.c | |
9228 | =================================================================== | |
9229 | --- gcc/testsuite/gcc.target/avr/torture/addr-space-1-0.c (.../tags/gcc_4_7_0_release) (wersja 0) | |
9230 | +++ gcc/testsuite/gcc.target/avr/torture/addr-space-1-0.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
9231 | @@ -0,0 +1,6 @@ | |
9232 | +/* { dg-options "-std=gnu99" } */ | |
9233 | +/* { dg-do run } */ | |
9234 | + | |
9235 | +#define __as __flash | |
9236 | + | |
9237 | +#include "addr-space-1.h" | |
9238 | Index: gcc/testsuite/gcc.target/avr/torture/addr-space-1-1.c | |
9239 | =================================================================== | |
9240 | --- gcc/testsuite/gcc.target/avr/torture/addr-space-1-1.c (.../tags/gcc_4_7_0_release) (wersja 0) | |
9241 | +++ gcc/testsuite/gcc.target/avr/torture/addr-space-1-1.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
9242 | @@ -0,0 +1,6 @@ | |
9243 | +/* { dg-options "-std=gnu99 -Tavr51-flash1.x" } */ | |
9244 | +/* { dg-do run } */ | |
9245 | + | |
9246 | +#define __as __flash1 | |
9247 | + | |
9248 | +#include "addr-space-1.h" | |
9249 | Index: gcc/testsuite/gcc.target/avr/torture/addr-space-2-0.c | |
9250 | =================================================================== | |
9251 | --- gcc/testsuite/gcc.target/avr/torture/addr-space-2-0.c (.../tags/gcc_4_7_0_release) (wersja 0) | |
9252 | +++ gcc/testsuite/gcc.target/avr/torture/addr-space-2-0.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
9253 | @@ -0,0 +1,6 @@ | |
9254 | +/* { dg-options "-std=gnu99" } */ | |
9255 | +/* { dg-do run } */ | |
9256 | + | |
9257 | +#define __as __flash | |
9258 | + | |
9259 | +#include "addr-space-2.h" | |
9260 | Index: gcc/testsuite/gcc.target/avr/torture/addr-space-2-1.c | |
9261 | =================================================================== | |
9262 | --- gcc/testsuite/gcc.target/avr/torture/addr-space-2-1.c (.../tags/gcc_4_7_0_release) (wersja 0) | |
9263 | +++ gcc/testsuite/gcc.target/avr/torture/addr-space-2-1.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
9264 | @@ -0,0 +1,6 @@ | |
9265 | +/* { dg-options "-std=gnu99 -Tavr51-flash1.x" } */ | |
9266 | +/* { dg-do run } */ | |
9267 | + | |
9268 | +#define __as __flash1 | |
9269 | + | |
9270 | +#include "addr-space-2.h" | |
9271 | Index: gcc/testsuite/gcc.target/avr/torture/avr-torture.exp | |
9272 | =================================================================== | |
9273 | --- gcc/testsuite/gcc.target/avr/torture/avr-torture.exp (.../tags/gcc_4_7_0_release) (wersja 187906) | |
9274 | +++ gcc/testsuite/gcc.target/avr/torture/avr-torture.exp (.../branches/gcc-4_7-branch) (wersja 187906) | |
9275 | @@ -38,6 +38,7 @@ | |
9276 | { -O0 } \ | |
9277 | { -O1 } \ | |
9278 | { -O2 } \ | |
9279 | + { -Os -flto } \ | |
9280 | { -O2 -mcall-prologues } \ | |
9281 | { -O2 -fdata-sections } \ | |
9282 | { -O2 -fmerge-all-constants } \ | |
9283 | Index: gcc/testsuite/gcc.target/avr/torture/addr-space-1-x.c | |
9284 | =================================================================== | |
9285 | --- gcc/testsuite/gcc.target/avr/torture/addr-space-1-x.c (.../tags/gcc_4_7_0_release) (wersja 0) | |
9286 | +++ gcc/testsuite/gcc.target/avr/torture/addr-space-1-x.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
9287 | @@ -0,0 +1,6 @@ | |
9288 | +/* { dg-options "-std=gnu99" } */ | |
9289 | +/* { dg-do run } */ | |
9290 | + | |
9291 | +#define __as __memx | |
9292 | + | |
9293 | +#include "addr-space-1.h" | |
9294 | Index: gcc/testsuite/gcc.target/avr/torture/addr-space-1.h | |
9295 | =================================================================== | |
9296 | --- gcc/testsuite/gcc.target/avr/torture/addr-space-1.h (.../tags/gcc_4_7_0_release) (wersja 0) | |
9297 | +++ gcc/testsuite/gcc.target/avr/torture/addr-space-1.h (.../branches/gcc-4_7-branch) (wersja 187906) | |
9298 | @@ -0,0 +1,83 @@ | |
9299 | +#include <stdlib.h> | |
9300 | +#include <string.h> | |
9301 | + | |
9302 | +typedef struct | |
9303 | +{ | |
9304 | + char i1; | |
9305 | + short i2; | |
9306 | + long i4; | |
9307 | + long long i8; | |
9308 | + char str[2][10]; | |
9309 | +} a_t; | |
9310 | + | |
9311 | +const __as a_t A = | |
9312 | + { | |
9313 | + 12, 345, 678910, 1234567891011ll, | |
9314 | + { | |
9315 | + "xxx..xxx", | |
9316 | + "yyy..yyy" | |
9317 | + } | |
9318 | + }; | |
9319 | + | |
9320 | +const __as volatile a_t V = | |
9321 | + { | |
9322 | + 12+1, 345+1, 678910+1, 1234567891011ll+1, | |
9323 | + { | |
9324 | + "XXX..XXX", | |
9325 | + "YYY..YYY" | |
9326 | + } | |
9327 | + }; | |
9328 | + | |
9329 | +a_t A2; | |
9330 | +volatile a_t V2; | |
9331 | + | |
9332 | +int main (void) | |
9333 | +{ | |
9334 | + if (A.i1 != 12 | |
9335 | + || A.i1 != V.i1 -1) | |
9336 | + abort(); | |
9337 | + | |
9338 | + if (A.i2 != 345 | |
9339 | + || A.i2 != V.i2 -1) | |
9340 | + abort(); | |
9341 | + | |
9342 | + if (A.i4 != 678910 | |
9343 | + || A.i4 != V.i4 -1) | |
9344 | + abort(); | |
9345 | + | |
9346 | + if (A.i8 != 1234567891011ll | |
9347 | + || A.i8 != V.i8 -1) | |
9348 | + abort(); | |
9349 | + | |
9350 | + A2 = A; | |
9351 | + V2 = V; | |
9352 | + | |
9353 | + if (A2.i1 != 12 | |
9354 | + || A2.i1 != V2.i1 -1) | |
9355 | + abort(); | |
9356 | + | |
9357 | + if (A2.i2 != 345 | |
9358 | + || A2.i2 != V2.i2 -1) | |
9359 | + abort(); | |
9360 | + | |
9361 | + if (A2.i4 != 678910 | |
9362 | + || A2.i4 != V2.i4 -1) | |
9363 | + abort(); | |
9364 | + | |
9365 | + if (A2.i8 != 1234567891011ll | |
9366 | + || A2.i8 != V2.i8 -1) | |
9367 | + abort(); | |
9368 | + | |
9369 | + if (strcmp (A2.str[0], "xxx..xxx")) | |
9370 | + abort(); | |
9371 | + if (strcmp (A2.str[1], "yyy..yyy")) | |
9372 | + abort(); | |
9373 | + | |
9374 | + if (strcmp ((const char*) V2.str[0], "XXX..XXX")) | |
9375 | + abort(); | |
9376 | + if (strcmp ((const char*) V2.str[1], "YYY..YYY")) | |
9377 | + abort(); | |
9378 | + | |
9379 | + exit (0); | |
9380 | + return 0; | |
9381 | +} | |
9382 | Index: gcc/testsuite/gcc.target/avr/torture/addr-space-2-x.c | |
9383 | =================================================================== | |
9384 | --- gcc/testsuite/gcc.target/avr/torture/addr-space-2-x.c (.../tags/gcc_4_7_0_release) (wersja 0) | |
9385 | +++ gcc/testsuite/gcc.target/avr/torture/addr-space-2-x.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
9386 | @@ -0,0 +1,9 @@ | |
9387 | +/* { dg-options "-std=gnu99 -Wa,--no-warn" } */ | |
9388 | +/* { dg-do run } */ | |
9389 | + | |
9390 | +/* --no-warn because: "assembling 24-bit address needs binutils extension" | |
9391 | + see binutils PR13503. */ | |
9392 | + | |
9393 | +#define __as __memx | |
9394 | + | |
9395 | +#include "addr-space-2.h" | |
9396 | Index: gcc/testsuite/gcc.target/avr/torture/addr-space-2.h | |
9397 | =================================================================== | |
9398 | --- gcc/testsuite/gcc.target/avr/torture/addr-space-2.h (.../tags/gcc_4_7_0_release) (wersja 0) | |
9399 | +++ gcc/testsuite/gcc.target/avr/torture/addr-space-2.h (.../branches/gcc-4_7-branch) (wersja 187906) | |
9400 | @@ -0,0 +1,106 @@ | |
9401 | +extern void exit (int); | |
9402 | +extern void abort (void); | |
9403 | + | |
9404 | +typedef struct T | |
9405 | +{ | |
9406 | + char val; | |
9407 | + const __as struct T *l, *r; | |
9408 | +} tree; | |
9409 | + | |
9410 | +/* | |
9411 | + abcd | |
9412 | + / \ | |
9413 | + ab cd | |
9414 | + / \ / \ | |
9415 | + a b c d | |
9416 | +*/ | |
9417 | + | |
9418 | +const __as tree a = { 'a', 0, 0 }; | |
9419 | +const __as tree b = { 'b', 0, 0 }; | |
9420 | +const __as tree c = { 'c', 0, 0 }; | |
9421 | +const __as tree d = { 'd', 0, 0 }; | |
9422 | + | |
9423 | +const __as tree ab = { 'A', &a, &b }; | |
9424 | +const __as tree cd = { 'C', &c, &d }; | |
9425 | + | |
9426 | +const __as tree abcd = { '*', &ab, &cd }; | |
9427 | + | |
9428 | +static void | |
9429 | +test1 (void) | |
9430 | +{ | |
9431 | + if (abcd.val != '*') | |
9432 | + abort(); | |
9433 | + | |
9434 | + if (abcd.l->val != 'A') | |
9435 | + abort(); | |
9436 | + if (abcd.r->val != 'C') | |
9437 | + abort(); | |
9438 | + | |
9439 | + if (abcd.l->l->val != 'a') | |
9440 | + abort(); | |
9441 | + if (abcd.l->r->val != 'b') | |
9442 | + abort(); | |
9443 | + if (abcd.r->l->val != 'c') | |
9444 | + abort(); | |
9445 | + if (abcd.r->r->val != 'd') | |
9446 | + abort(); | |
9447 | +} | |
9448 | + | |
9449 | +static void | |
9450 | +test2 (const __as tree *t) | |
9451 | +{ | |
9452 | + if (t->val != '*') | |
9453 | + abort(); | |
9454 | + | |
9455 | + if (t->l->val != 'A') | |
9456 | + abort(); | |
9457 | + if (t->r->val != 'C') | |
9458 | + abort(); | |
9459 | + | |
9460 | + if (t->l->l->val != 'a') | |
9461 | + abort(); | |
9462 | + if (t->l->r->val != 'b') | |
9463 | + abort(); | |
9464 | + if (t->r->l->val != 'c') | |
9465 | + abort(); | |
9466 | + if (t->r->r->val != 'd') | |
9467 | + abort(); | |
9468 | +} | |
9469 | + | |
9470 | +static void | |
9471 | +test3 (const __as tree *pt) | |
9472 | +{ | |
9473 | + tree t = *pt; | |
9474 | + | |
9475 | + if (t.val != '*') | |
9476 | + abort(); | |
9477 | + | |
9478 | + if (t.l->val != 'A') | |
9479 | + abort(); | |
9480 | + if (t.r->val != 'C') | |
9481 | + abort(); | |
9482 | + | |
9483 | + if (t.l->l->val != 'a') | |
9484 | + abort(); | |
9485 | + if (t.l->r->val != 'b') | |
9486 | + abort(); | |
9487 | + if (t.r->l->val != 'c') | |
9488 | + abort(); | |
9489 | + if (t.r->r->val != 'd') | |
9490 | + abort(); | |
9491 | +} | |
9492 | + | |
9493 | +int main (void) | |
9494 | +{ | |
9495 | + const __as tree *t = &abcd; | |
9496 | + test1(); | |
9497 | + test2 (&abcd); | |
9498 | + test3 (&abcd); | |
9499 | + | |
9500 | + __asm ("" : "+r" (t)); | |
9501 | + test2 (t); | |
9502 | + test3 (t); | |
9503 | + | |
9504 | + exit (0); | |
9505 | + return 0; | |
9506 | +} | |
9507 | Index: gcc/testsuite/gcc.target/avr/torture/addr-space-1-g.c | |
9508 | =================================================================== | |
9509 | --- gcc/testsuite/gcc.target/avr/torture/addr-space-1-g.c (.../tags/gcc_4_7_0_release) (wersja 0) | |
9510 | +++ gcc/testsuite/gcc.target/avr/torture/addr-space-1-g.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
9511 | @@ -0,0 +1,6 @@ | |
9512 | +/* { dg-options "-std=gnu99" } */ | |
9513 | +/* { dg-do run } */ | |
9514 | + | |
9515 | +#define __as | |
9516 | + | |
9517 | +#include "addr-space-1.h" | |
9518 | Index: gcc/testsuite/gcc.target/avr/torture/addr-space-2-g.c | |
9519 | =================================================================== | |
9520 | --- gcc/testsuite/gcc.target/avr/torture/addr-space-2-g.c (.../tags/gcc_4_7_0_release) (wersja 0) | |
9521 | +++ gcc/testsuite/gcc.target/avr/torture/addr-space-2-g.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
9522 | @@ -0,0 +1,6 @@ | |
9523 | +/* { dg-options "-std=gnu99" } */ | |
9524 | +/* { dg-do run } */ | |
9525 | + | |
9526 | +#define __as | |
9527 | + | |
9528 | +#include "addr-space-2.h" | |
9529 | Index: gcc/testsuite/gcc.target/avr/torture/builtins-2.c | |
9530 | =================================================================== | |
9531 | --- gcc/testsuite/gcc.target/avr/torture/builtins-2.c (.../tags/gcc_4_7_0_release) (wersja 0) | |
9532 | +++ gcc/testsuite/gcc.target/avr/torture/builtins-2.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
9533 | @@ -0,0 +1,46 @@ | |
9534 | +/* { dg-options "-std=gnu99 -Tavr51-flash1.x" } */ | |
9535 | +/* { dg-do run } */ | |
9536 | + | |
9537 | +#include <stdlib.h> | |
9538 | +#include "../progmem.h" | |
9539 | + | |
9540 | +int volatile a; | |
9541 | + | |
9542 | +void f1 (void) | |
9543 | +{ | |
9544 | + __builtin_avr_sei (); | |
9545 | + __builtin_avr_cli (); | |
9546 | + __builtin_avr_wdr (); | |
9547 | + __builtin_avr_sleep (); | |
9548 | + __builtin_avr_nop (); | |
9549 | + a = __builtin_avr_swap (a); | |
9550 | + a = __builtin_avr_fmul (1,a); | |
9551 | + a = __builtin_avr_fmuls (1,a); | |
9552 | + a = __builtin_avr_fmulsu (1,a); | |
9553 | + a = __builtin_avr_insert_bits (0x1f2f5364, a, a); | |
9554 | +} | |
9555 | + | |
9556 | +const __flash char c0 = 1; | |
9557 | +const __flash1 char c1 = 1; | |
9558 | + | |
9559 | +int main (void) | |
9560 | +{ | |
9561 | + const __memx void *p; | |
9562 | + | |
9563 | + f1(); | |
9564 | + __builtin_avr_delay_cycles (1000); | |
9565 | + | |
9566 | + p = &c0; | |
9567 | + if (__builtin_avr_flash_segment (p) != 0) | |
9568 | + abort(); | |
9569 | + | |
9570 | + p = &c1; | |
9571 | + if (__builtin_avr_flash_segment (p) != 1) | |
9572 | + abort(); | |
9573 | + | |
9574 | + if (__builtin_avr_flash_segment ("p") != -1) | |
9575 | + abort(); | |
9576 | + | |
9577 | + exit (0); | |
9578 | + return 0; | |
9579 | +} | |
9580 | Index: gcc/testsuite/gcc.target/avr/progmem.h | |
9581 | =================================================================== | |
9582 | --- gcc/testsuite/gcc.target/avr/progmem.h (.../tags/gcc_4_7_0_release) (wersja 187906) | |
9583 | +++ gcc/testsuite/gcc.target/avr/progmem.h (.../branches/gcc-4_7-branch) (wersja 187906) | |
9584 | @@ -5,6 +5,7 @@ | |
9585 | static const char __c[] PROGMEM = (s); \ | |
9586 | &__c[0];})) | |
9587 | ||
9588 | +#ifdef __AVR_HAVE_LPMX__ | |
9589 | #define pgm_read_char(addr) \ | |
9590 | (__extension__({ \ | |
9591 | unsigned int __addr16 = (unsigned int)(addr); \ | |
9592 | @@ -12,3 +13,13 @@ | |
9593 | __asm__ ("lpm %0, %a1" \ | |
9594 | : "=r" (__result) : "z" (__addr16)); \ | |
9595 | __result; })) | |
9596 | +#else | |
9597 | +#define pgm_read_char(addr) \ | |
9598 | + (__extension__({ \ | |
9599 | + unsigned int __addr16 = (unsigned int)(addr); \ | |
9600 | + char __result; \ | |
9601 | + __asm__ ("lpm" "\n\t" \ | |
9602 | + "mov %0, r0" \ | |
9603 | + : "=r" (__result) : "z" (__addr16)); \ | |
9604 | + __result; })) | |
9605 | +#endif | |
9606 | Index: gcc/testsuite/gcc.target/i386/avx2-vpermps-1.c | |
9607 | =================================================================== | |
9608 | --- gcc/testsuite/gcc.target/i386/avx2-vpermps-1.c (.../tags/gcc_4_7_0_release) (wersja 187906) | |
9609 | +++ gcc/testsuite/gcc.target/i386/avx2-vpermps-1.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
9610 | @@ -5,9 +5,10 @@ | |
9611 | #include <immintrin.h> | |
9612 | ||
9613 | __m256 x; | |
9614 | +__m256i y; | |
9615 | ||
9616 | void extern | |
9617 | avx2_test (void) | |
9618 | { | |
9619 | - x = _mm256_permutevar8x32_ps (x, x); | |
9620 | + x = _mm256_permutevar8x32_ps (x, y); | |
9621 | } | |
9622 | Index: gcc/testsuite/gcc.target/i386/avx256-unaligned-load-1.c | |
9623 | =================================================================== | |
9624 | --- gcc/testsuite/gcc.target/i386/avx256-unaligned-load-1.c (.../tags/gcc_4_7_0_release) (wersja 187906) | |
9625 | +++ gcc/testsuite/gcc.target/i386/avx256-unaligned-load-1.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
9626 | @@ -14,6 +14,6 @@ | |
9627 | c[i] = a[i] * b[i+3]; | |
9628 | } | |
9629 | ||
9630 | -/* { dg-final { scan-assembler-not "\\*avx_movups256/1" } } */ | |
9631 | -/* { dg-final { scan-assembler "\\*sse_movups/1" } } */ | |
9632 | +/* { dg-final { scan-assembler-not "avx_movups256/1" } } */ | |
9633 | +/* { dg-final { scan-assembler "sse_movups/1" } } */ | |
9634 | /* { dg-final { scan-assembler "vinsertf128" } } */ | |
9635 | Index: gcc/testsuite/gcc.target/i386/avx256-unaligned-store-3.c | |
9636 | =================================================================== | |
9637 | --- gcc/testsuite/gcc.target/i386/avx256-unaligned-store-3.c (.../tags/gcc_4_7_0_release) (wersja 187906) | |
9638 | +++ gcc/testsuite/gcc.target/i386/avx256-unaligned-store-3.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
9639 | @@ -17,6 +17,6 @@ | |
9640 | d[i] = c[i] * 20.0; | |
9641 | } | |
9642 | ||
9643 | -/* { dg-final { scan-assembler-not "\\*avx_movupd256/2" } } */ | |
9644 | +/* { dg-final { scan-assembler-not "avx_movupd256/2" } } */ | |
9645 | /* { dg-final { scan-assembler "vmovupd.*\\*movv2df_internal/3" } } */ | |
9646 | /* { dg-final { scan-assembler "vextractf128" } } */ | |
9647 | Index: gcc/testsuite/gcc.target/i386/avx2-vpermps-2.c | |
9648 | =================================================================== | |
9649 | --- gcc/testsuite/gcc.target/i386/avx2-vpermps-2.c (.../tags/gcc_4_7_0_release) (wersja 187906) | |
9650 | +++ gcc/testsuite/gcc.target/i386/avx2-vpermps-2.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
9651 | @@ -8,7 +8,7 @@ | |
9652 | #define NUM 10 | |
9653 | ||
9654 | static void | |
9655 | -init_permps (float *src1, float *src2, int seed) | |
9656 | +init_permps (float *src1, int *src2, int seed) | |
9657 | { | |
9658 | int i, sign = 1; | |
9659 | ||
9660 | @@ -21,24 +21,24 @@ | |
9661 | } | |
9662 | ||
9663 | static void | |
9664 | -calc_permps (float *src1, float *src2, float *dst) | |
9665 | +calc_permps (float *src1, int *src2, float *dst) | |
9666 | { | |
9667 | int i; | |
9668 | unsigned temp; | |
9669 | - unsigned *idx = (int *) src1; | |
9670 | ||
9671 | memcpy (dst, src1, 32); | |
9672 | for (i = 0; i < 8; i++) | |
9673 | { | |
9674 | - temp = idx[i]; | |
9675 | - dst[i] = src2[temp & 7]; | |
9676 | + temp = src2[i]; | |
9677 | + dst[i] = src1[temp & 7]; | |
9678 | } | |
9679 | } | |
9680 | ||
9681 | static void | |
9682 | avx2_test (void) | |
9683 | { | |
9684 | - union256 src1, src2, dst; | |
9685 | + union256 src1, dst; | |
9686 | + union256i_d src2; | |
9687 | float dst_ref[8]; | |
9688 | int i; | |
9689 | ||
9690 | Index: gcc/testsuite/gcc.target/i386/avx256-unaligned-load-2.c | |
9691 | =================================================================== | |
9692 | --- gcc/testsuite/gcc.target/i386/avx256-unaligned-load-2.c (.../tags/gcc_4_7_0_release) (wersja 187906) | |
9693 | +++ gcc/testsuite/gcc.target/i386/avx256-unaligned-load-2.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
9694 | @@ -24,6 +24,6 @@ | |
9695 | } | |
9696 | } | |
9697 | ||
9698 | -/* { dg-final { scan-assembler-not "\\*avx_movdqu256/1" } } */ | |
9699 | -/* { dg-final { scan-assembler "\\*sse2_movdqu/1" } } */ | |
9700 | +/* { dg-final { scan-assembler-not "avx_movdqu256/1" } } */ | |
9701 | +/* { dg-final { scan-assembler "sse2_movdqu/1" } } */ | |
9702 | /* { dg-final { scan-assembler "vinsert.128" } } */ | |
9703 | Index: gcc/testsuite/gcc.target/i386/pr53366-1.c | |
9704 | =================================================================== | |
9705 | --- gcc/testsuite/gcc.target/i386/pr53366-1.c (.../tags/gcc_4_7_0_release) (wersja 0) | |
9706 | +++ gcc/testsuite/gcc.target/i386/pr53366-1.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
9707 | @@ -0,0 +1,5 @@ | |
9708 | +/* PR tree-optimization/53366 */ | |
9709 | +/* { dg-do run { target avx_runtime } } */ | |
9710 | +/* { dg-options "-O3 -mavx" } */ | |
9711 | + | |
9712 | +#include "../../gcc.dg/torture/pr53366-1.c" | |
9713 | Index: gcc/testsuite/gcc.target/i386/avx256-unaligned-store-4.c | |
9714 | =================================================================== | |
9715 | --- gcc/testsuite/gcc.target/i386/avx256-unaligned-store-4.c (.../tags/gcc_4_7_0_release) (wersja 187906) | |
9716 | +++ gcc/testsuite/gcc.target/i386/avx256-unaligned-store-4.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
9717 | @@ -14,7 +14,7 @@ | |
9718 | b[i+3] = a[i] * c[i]; | |
9719 | } | |
9720 | ||
9721 | -/* { dg-final { scan-assembler "\\*avx_movups256/2" } } */ | |
9722 | -/* { dg-final { scan-assembler-not "\\*avx_movups/2" } } */ | |
9723 | +/* { dg-final { scan-assembler "avx_movups256/2" } } */ | |
9724 | +/* { dg-final { scan-assembler-not "avx_movups/2" } } */ | |
9725 | /* { dg-final { scan-assembler-not "\\*avx_movv4sf_internal/3" } } */ | |
9726 | /* { dg-final { scan-assembler-not "vextractf128" } } */ | |
9727 | Index: gcc/testsuite/gcc.target/i386/pr52736.c | |
9728 | =================================================================== | |
9729 | --- gcc/testsuite/gcc.target/i386/pr52736.c (.../tags/gcc_4_7_0_release) (wersja 0) | |
9730 | +++ gcc/testsuite/gcc.target/i386/pr52736.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
9731 | @@ -0,0 +1,29 @@ | |
9732 | +/* PR target/52736 */ | |
9733 | +/* { dg-do run } */ | |
9734 | +/* { dg-options "-O1 -msse2" } */ | |
9735 | +/* { dg-require-effective-target sse2_runtime } */ | |
9736 | + | |
9737 | +#include <x86intrin.h> | |
9738 | + | |
9739 | +typedef double D __attribute__((may_alias)); | |
9740 | +__attribute__((aligned(16))) static const double r[4] = { 1., 5., 1., 3. }; | |
9741 | + | |
9742 | +__attribute__((noinline, noclone)) | |
9743 | +void | |
9744 | +foo (int x) | |
9745 | +{ | |
9746 | + asm volatile ("" : "+g" (x) : : "memory"); | |
9747 | + if (x != 3) | |
9748 | + __builtin_abort (); | |
9749 | +} | |
9750 | + | |
9751 | +int | |
9752 | +main () | |
9753 | +{ | |
9754 | + __m128d t = _mm_set1_pd (5.); | |
9755 | + ((D *)(&t))[0] = 1.; | |
9756 | + foo (_mm_movemask_pd (_mm_cmpeq_pd (t, _mm_load_pd (&r[0])))); | |
9757 | + ((D *)(&t))[1] = 3.; | |
9758 | + foo (_mm_movemask_pd (_mm_cmpeq_pd (t, _mm_load_pd (&r[2])))); | |
9759 | + return 0; | |
9760 | +} | |
9761 | Index: gcc/testsuite/gcc.target/i386/pr52754.c | |
9762 | =================================================================== | |
9763 | --- gcc/testsuite/gcc.target/i386/pr52754.c (.../tags/gcc_4_7_0_release) (wersja 0) | |
9764 | +++ gcc/testsuite/gcc.target/i386/pr52754.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
9765 | @@ -0,0 +1,33 @@ | |
9766 | +/* { dg-do run } */ | |
9767 | +/* { dg-options "-O2 -fpredictive-commoning -msse2 -std=c99" } */ | |
9768 | +/* { dg-require-effective-target sse2 } */ | |
9769 | + | |
9770 | +#include <x86intrin.h> | |
9771 | + | |
9772 | +#include "isa-check.h" | |
9773 | +#include "sse-os-support.h" | |
9774 | + | |
9775 | +int main() | |
9776 | +{ | |
9777 | + const float mem[8] = { 0, 1, 2, 3, 4, 5, 6, 7 }; | |
9778 | + | |
9779 | + unsigned int indexes[8]; | |
9780 | + for (unsigned int i = 0; i < 8; ++i) indexes[i] = i; | |
9781 | + | |
9782 | + check_isa (); | |
9783 | + | |
9784 | + if (!sse_os_support ()) | |
9785 | + exit (0); | |
9786 | + | |
9787 | + __m128 x = _mm_setr_ps(0, 1, 2, 3); | |
9788 | + for (unsigned int i = 0; i + 4 < 6; ++i) { | |
9789 | + const unsigned int *ii = &indexes[i]; | |
9790 | + const __m128 tmp = _mm_setr_ps(mem[ii[0]], mem[ii[1]], mem[ii[2]], mem[ii[3]]); | |
9791 | + if (0xf != _mm_movemask_ps(_mm_cmpeq_ps(tmp, x))) { | |
9792 | + __builtin_abort(); | |
9793 | + } | |
9794 | + x = _mm_add_ps(x, _mm_set1_ps(1)); | |
9795 | + } | |
9796 | + | |
9797 | + return 0; | |
9798 | +} | |
9799 | Index: gcc/testsuite/gcc.target/i386/avx256-unaligned-load-3.c | |
9800 | =================================================================== | |
9801 | --- gcc/testsuite/gcc.target/i386/avx256-unaligned-load-3.c (.../tags/gcc_4_7_0_release) (wersja 187906) | |
9802 | +++ gcc/testsuite/gcc.target/i386/avx256-unaligned-load-3.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
9803 | @@ -14,6 +14,6 @@ | |
9804 | c[i] = a[i] * b[i+3]; | |
9805 | } | |
9806 | ||
9807 | -/* { dg-final { scan-assembler-not "\\*avx_movupd256/1" } } */ | |
9808 | -/* { dg-final { scan-assembler "\\*sse2_movupd/1" } } */ | |
9809 | +/* { dg-final { scan-assembler-not "avx_movupd256/1" } } */ | |
9810 | +/* { dg-final { scan-assembler "sse2_movupd/1" } } */ | |
9811 | /* { dg-final { scan-assembler "vinsertf128" } } */ | |
9812 | Index: gcc/testsuite/gcc.target/i386/avx256-unaligned-store-1.c | |
9813 | =================================================================== | |
9814 | --- gcc/testsuite/gcc.target/i386/avx256-unaligned-store-1.c (.../tags/gcc_4_7_0_release) (wersja 187906) | |
9815 | +++ gcc/testsuite/gcc.target/i386/avx256-unaligned-store-1.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
9816 | @@ -17,6 +17,6 @@ | |
9817 | d[i] = c[i] * 20.0; | |
9818 | } | |
9819 | ||
9820 | -/* { dg-final { scan-assembler-not "\\*avx_movups256/2" } } */ | |
9821 | +/* { dg-final { scan-assembler-not "avx_movups256/2" } } */ | |
9822 | /* { dg-final { scan-assembler "vmovups.*\\*movv4sf_internal/3" } } */ | |
9823 | /* { dg-final { scan-assembler "vextractf128" } } */ | |
9824 | Index: gcc/testsuite/gcc.target/i386/pr53366-2.c | |
9825 | =================================================================== | |
9826 | --- gcc/testsuite/gcc.target/i386/pr53366-2.c (.../tags/gcc_4_7_0_release) (wersja 0) | |
9827 | +++ gcc/testsuite/gcc.target/i386/pr53366-2.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
9828 | @@ -0,0 +1,5 @@ | |
9829 | +/* PR tree-optimization/53366 */ | |
9830 | +/* { dg-do run { target avx_runtime } } */ | |
9831 | +/* { dg-options "-O3 -mavx" } */ | |
9832 | + | |
9833 | +#include "../../gcc.dg/torture/pr53366-2.c" | |
9834 | Index: gcc/testsuite/gcc.target/i386/avx2-vpermd-2.c | |
9835 | =================================================================== | |
9836 | --- gcc/testsuite/gcc.target/i386/avx2-vpermd-2.c (.../tags/gcc_4_7_0_release) (wersja 187906) | |
9837 | +++ gcc/testsuite/gcc.target/i386/avx2-vpermd-2.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
9838 | @@ -29,8 +29,8 @@ | |
9839 | memcpy (dst, src1, 32); | |
9840 | for (i = 0; i < 8; i++) | |
9841 | { | |
9842 | - temp = src1[i]; | |
9843 | - dst[i] = src2[temp & 7]; | |
9844 | + temp = src2[i]; | |
9845 | + dst[i] = src1[temp & 7]; | |
9846 | } | |
9847 | } | |
9848 | ||
9849 | Index: gcc/testsuite/gcc.target/i386/pr53416.c | |
9850 | =================================================================== | |
9851 | --- gcc/testsuite/gcc.target/i386/pr53416.c (.../tags/gcc_4_7_0_release) (wersja 0) | |
9852 | +++ gcc/testsuite/gcc.target/i386/pr53416.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
9853 | @@ -0,0 +1,17 @@ | |
9854 | +/* PR target/53416 */ | |
9855 | +/* { dg-options "-O2 -mrdrnd" } */ | |
9856 | + | |
9857 | +int test (void) | |
9858 | +{ | |
9859 | + unsigned int number = 0; | |
9860 | + int result0, result1, result2, result3; | |
9861 | + | |
9862 | + result0 = __builtin_ia32_rdrand32_step (&number); | |
9863 | + result1 = __builtin_ia32_rdrand32_step (&number); | |
9864 | + result2 = __builtin_ia32_rdrand32_step (&number); | |
9865 | + result3 = __builtin_ia32_rdrand32_step (&number); | |
9866 | + | |
9867 | + return result0 + result1 +result2 + result3; | |
9868 | +} | |
9869 | + | |
9870 | +/* { dg-final { scan-assembler-times "rdrand" 4 } } */ | |
9871 | Index: gcc/testsuite/gcc.target/i386/avx256-unaligned-load-4.c | |
9872 | =================================================================== | |
9873 | --- gcc/testsuite/gcc.target/i386/avx256-unaligned-load-4.c (.../tags/gcc_4_7_0_release) (wersja 187906) | |
9874 | +++ gcc/testsuite/gcc.target/i386/avx256-unaligned-load-4.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
9875 | @@ -14,6 +14,6 @@ | |
9876 | b[i] = a[i+3] * 2; | |
9877 | } | |
9878 | ||
9879 | -/* { dg-final { scan-assembler "\\*avx_movups256/1" } } */ | |
9880 | -/* { dg-final { scan-assembler-not "\\*avx_movups/1" } } */ | |
9881 | +/* { dg-final { scan-assembler "avx_movups256/1" } } */ | |
9882 | +/* { dg-final { scan-assembler-not "avx_movups/1" } } */ | |
9883 | /* { dg-final { scan-assembler-not "vinsertf128" } } */ | |
9884 | Index: gcc/testsuite/gcc.target/i386/avx256-unaligned-store-2.c | |
9885 | =================================================================== | |
9886 | --- gcc/testsuite/gcc.target/i386/avx256-unaligned-store-2.c (.../tags/gcc_4_7_0_release) (wersja 187906) | |
9887 | +++ gcc/testsuite/gcc.target/i386/avx256-unaligned-store-2.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
9888 | @@ -24,6 +24,6 @@ | |
9889 | } | |
9890 | } | |
9891 | ||
9892 | -/* { dg-final { scan-assembler-not "\\*avx_movdqu256/2" } } */ | |
9893 | +/* { dg-final { scan-assembler-not "avx_movdqu256/2" } } */ | |
9894 | /* { dg-final { scan-assembler "vmovdqu.*\\*movv16qi_internal/3" } } */ | |
9895 | /* { dg-final { scan-assembler "vextract.128" } } */ | |
9896 | Index: gcc/testsuite/gcc.target/ia64/pr52657.c | |
9897 | =================================================================== | |
9898 | --- gcc/testsuite/gcc.target/ia64/pr52657.c (.../tags/gcc_4_7_0_release) (wersja 0) | |
9899 | +++ gcc/testsuite/gcc.target/ia64/pr52657.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
9900 | @@ -0,0 +1,44 @@ | |
9901 | +/* { dg-do compile } */ | |
9902 | +/* { dg-options "-O" } */ | |
9903 | + | |
9904 | +typedef unsigned long int mp_limb_t; | |
9905 | + | |
9906 | +typedef struct | |
9907 | +{ | |
9908 | + int _mp_alloc; | |
9909 | + int _mp_size; | |
9910 | + mp_limb_t *_mp_d; | |
9911 | +} __mpz_struct; | |
9912 | + | |
9913 | +typedef __mpz_struct mpz_t[1]; | |
9914 | +typedef mp_limb_t * mp_ptr; | |
9915 | +typedef const mp_limb_t * mp_srcptr; | |
9916 | +typedef long int mp_size_t; | |
9917 | + | |
9918 | +extern mp_limb_t __gmpn_addmul_2 (mp_ptr, mp_srcptr, mp_size_t, mp_srcptr); | |
9919 | + | |
9920 | +void | |
9921 | +__gmpn_redc_2 (mp_ptr rp, mp_ptr up, mp_srcptr mp, mp_size_t n, mp_srcptr mip) | |
9922 | +{ | |
9923 | + mp_limb_t q[2]; | |
9924 | + mp_size_t j; | |
9925 | + mp_limb_t upn; | |
9926 | + | |
9927 | + for (j = n - 2; j >= 0; j -= 2) | |
9928 | + { | |
9929 | + mp_limb_t _ph, _pl; | |
9930 | + __asm__ ("xma.hu %0 = %3, %5, f0\n\t" | |
9931 | + "xma.l %1 = %3, %5, f0\n\t" | |
9932 | + ";;\n\t" | |
9933 | + "xma.l %0 = %3, %4, %0\n\t" | |
9934 | + ";;\n\t" | |
9935 | + "xma.l %0 = %2, %5, %0" | |
9936 | + : "=&f" (q[1]), "=&f" (q[0]) | |
9937 | + : "f" (mip[1]), "f" (mip[0]), "f" (up[1]), "f" (up[0])); | |
9938 | + upn = up[n]; | |
9939 | + up[1] = __gmpn_addmul_2 (up, mp, n, q); | |
9940 | + up[0] = up[n]; | |
9941 | + up[n] = upn; | |
9942 | + up += 2; | |
9943 | + } | |
9944 | +} | |
9945 | Index: gcc/testsuite/gcc.target/ia64/pr48496.c | |
9946 | =================================================================== | |
9947 | --- gcc/testsuite/gcc.target/ia64/pr48496.c (.../tags/gcc_4_7_0_release) (wersja 0) | |
9948 | +++ gcc/testsuite/gcc.target/ia64/pr48496.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
9949 | @@ -0,0 +1,24 @@ | |
9950 | +/* { dg-do compile } */ | |
9951 | +/* { dg-options "-O2" } */ | |
9952 | + | |
9953 | +typedef unsigned int UINT64 __attribute__((__mode__(__DI__))); | |
9954 | + | |
9955 | +typedef struct | |
9956 | +{ | |
9957 | + UINT64 x[2] __attribute__((aligned(16))); | |
9958 | +} fpreg; | |
9959 | + | |
9960 | +struct ia64_args | |
9961 | +{ | |
9962 | + fpreg fp_regs[8]; | |
9963 | + UINT64 gp_regs[8]; | |
9964 | +}; | |
9965 | + | |
9966 | +ffi_call(long i, long gpcount, long fpcount, void **avalue) | |
9967 | +{ | |
9968 | + struct ia64_args *stack; | |
9969 | + stack = __builtin_alloca (64); | |
9970 | + asm ("stf.spill %0 = %1%P0" : "=m" (*&stack->fp_regs[fpcount++]) | |
9971 | + : "f"(*(double *)avalue[i])); | |
9972 | + stack->gp_regs[gpcount++] = *(UINT64 *)avalue[i]; | |
9973 | +} | |
9974 | Index: gcc/testsuite/go.test/go-test.exp | |
9975 | =================================================================== | |
9976 | --- gcc/testsuite/go.test/go-test.exp (.../tags/gcc_4_7_0_release) (wersja 187906) | |
9977 | +++ gcc/testsuite/go.test/go-test.exp (.../branches/gcc-4_7-branch) (wersja 187906) | |
9978 | @@ -217,6 +217,13 @@ | |
9979 | return "" | |
9980 | } | |
9981 | } | |
9982 | + "powerpc*-*-*" { | |
9983 | + if [check_effective_target_ilp32] { | |
9984 | + set goarch "ppc" | |
9985 | + } else { | |
9986 | + set goarch "ppc64" | |
9987 | + } | |
9988 | + } | |
9989 | "sparc*-*-*" { | |
9990 | if [check_effective_target_ilp32] { | |
9991 | set goarch "sparc" | |
9992 | @@ -302,7 +309,7 @@ | |
9993 | } | |
9994 | ||
9995 | # Handle certain tests in a target-dependant way. | |
9996 | - if { [istarget "alpha*-*-*"] || [istarget "sparc*-*-solaris*"] } { | |
9997 | + if { [istarget "alpha*-*-*"] || [istarget "sparc*-*-solaris*"] || [istarget "powerpc*-*-*"] } { | |
9998 | if { [string match "*go.test/test/nilptr.go" $test] } { | |
9999 | untested $test | |
10000 | continue | |
10001 | Index: gcc/testsuite/lib/target-supports.exp | |
10002 | =================================================================== | |
10003 | --- gcc/testsuite/lib/target-supports.exp (.../tags/gcc_4_7_0_release) (wersja 187906) | |
10004 | +++ gcc/testsuite/lib/target-supports.exp (.../branches/gcc-4_7-branch) (wersja 187906) | |
10005 | @@ -2576,8 +2576,23 @@ | |
10006 | } "-mcpu=niagara3"] | |
10007 | } | |
10008 | ||
10009 | -# Return 1 if this is a Sparc target with VIS enabled. | |
10010 | +# Return 1 if this is a SPARC-V9 target. | |
10011 | ||
10012 | +proc check_effective_target_sparc_v9 { } { | |
10013 | + if { [istarget sparc*-*-*] } { | |
10014 | + return [check_no_compiler_messages sparc_v9 object { | |
10015 | + int main (void) { | |
10016 | + asm volatile ("return %i7+8"); | |
10017 | + return 0; | |
10018 | + } | |
10019 | + }] | |
10020 | + } else { | |
10021 | + return 0 | |
10022 | + } | |
10023 | +} | |
10024 | + | |
10025 | +# Return 1 if this is a SPARC target with VIS enabled. | |
10026 | + | |
10027 | proc check_effective_target_sparc_vis { } { | |
10028 | if { [istarget sparc*-*-*] } { | |
10029 | return [check_no_compiler_messages sparc_vis object { | |
10030 | @@ -3755,7 +3770,8 @@ | |
10031 | if { [istarget x86_64-*-*] | |
10032 | || [istarget i?86-*-*]) | |
10033 | || [istarget arm*-*-*] | |
10034 | - || [istarget alpha*-*-*] } { | |
10035 | + || [istarget alpha*-*-*] | |
10036 | + || ([istarget sparc*-*-*] && [check_effective_target_lp64]) } { | |
10037 | return 1 | |
10038 | } else { | |
10039 | return 0 | |
10040 | @@ -3800,6 +3816,10 @@ | |
10041 | } "" ] | |
10042 | } elseif { [istarget alpha*-*-*] } { | |
10043 | return 1 | |
10044 | + } elseif { ([istarget sparc*-*-*] | |
10045 | + && [check_effective_target_lp64] | |
10046 | + && [check_effective_target_ultrasparc_hw]) } { | |
10047 | + return 1 | |
10048 | } else { | |
10049 | return 0 | |
10050 | } | |
10051 | @@ -3825,8 +3845,7 @@ | |
10052 | || [istarget hppa*-*linux*] | |
10053 | || [istarget s390*-*-*] | |
10054 | || [istarget powerpc*-*-*] | |
10055 | - || [istarget sparc64-*-*] | |
10056 | - || [istarget sparcv9-*-*] | |
10057 | + || ([istarget sparc*-*-*] && [check_effective_target_sparc_v9]) | |
10058 | || [check_effective_target_mips_llsc] } { | |
10059 | set et_sync_int_long_saved 1 | |
10060 | } | |
10061 | @@ -3855,8 +3874,7 @@ | |
10062 | || [istarget hppa*-*linux*] | |
10063 | || [istarget s390*-*-*] | |
10064 | || [istarget powerpc*-*-*] | |
10065 | - || [istarget sparc64-*-*] | |
10066 | - || [istarget sparcv9-*-*] | |
10067 | + || ([istarget sparc*-*-*] && [check_effective_target_sparc_v9]) | |
10068 | || [check_effective_target_mips_llsc] } { | |
10069 | set et_sync_char_short_saved 1 | |
10070 | } | |
10071 | Index: gcc/testsuite/gfortran.dg/function_optimize_11.f90 | |
10072 | =================================================================== | |
10073 | --- gcc/testsuite/gfortran.dg/function_optimize_11.f90 (.../tags/gcc_4_7_0_release) (wersja 0) | |
10074 | +++ gcc/testsuite/gfortran.dg/function_optimize_11.f90 (.../branches/gcc-4_7-branch) (wersja 187906) | |
10075 | @@ -0,0 +1,17 @@ | |
10076 | +! { dg-do run } | |
10077 | +! { dg-options "-ffrontend-optimize" } | |
10078 | +! Do not move common functions out of implicit DO loop constructors. | |
10079 | +program test | |
10080 | + integer, parameter :: N = 4 | |
10081 | + integer, parameter :: dp=kind(1.d0) | |
10082 | + real(kind=dp), parameter :: pi=4*atan(1._dp) | |
10083 | + real(kind=dp), parameter :: eps = 1.e-14_dp | |
10084 | + real(kind=dp) :: h1(0:N-1), h2(0:N-1) | |
10085 | + integer i | |
10086 | + | |
10087 | + i = 1 | |
10088 | + h1 = [(cos(2*pi*mod(i*k,N)/N),k=0,N/2), & | |
10089 | + & (sin(2*pi*mod(i*k,N)/N),k=1,N/2-1)] | |
10090 | + h2 = (/ 1._dp, 0._dp, -1._dp, 1._dp /) | |
10091 | + if (any(abs(h1 - h2) > eps)) call abort | |
10092 | +end program test | |
10093 | Index: gcc/testsuite/gfortran.dg/constructor_7.f90 | |
10094 | =================================================================== | |
10095 | --- gcc/testsuite/gfortran.dg/constructor_7.f90 (.../tags/gcc_4_7_0_release) (wersja 0) | |
10096 | +++ gcc/testsuite/gfortran.dg/constructor_7.f90 (.../branches/gcc-4_7-branch) (wersja 187906) | |
10097 | @@ -0,0 +1,48 @@ | |
10098 | +! { dg-do compile } | |
10099 | +! { dg-options "-std=f95" } | |
10100 | +! | |
10101 | +! PR fortran/53111 | |
10102 | +! | |
10103 | + | |
10104 | +! ------------ INVALID ONE ------------------------ | |
10105 | + | |
10106 | +module m | |
10107 | +type t | |
10108 | + integer :: i | |
10109 | +end type t | |
10110 | +end | |
10111 | + | |
10112 | +module m2 | |
10113 | + interface t | |
10114 | + module procedure sub | |
10115 | + end interface t | |
10116 | +contains | |
10117 | + integer function sub() | |
10118 | + sub = 4 | |
10119 | + end function sub | |
10120 | +end module m2 | |
10121 | + | |
10122 | +! Note: The following is formally valid as long as "t" is not used. | |
10123 | +! For simplicity, -std=f95 will give an error. | |
10124 | +! It is unlikely that a real-world program is rejected with -std=f95 | |
10125 | +! because of that. | |
10126 | + | |
10127 | +use m ! { dg-error "Fortran 2003: Generic name 't' of function 'sub' at .1. being the same name as derived type at" } | |
10128 | +use m2 ! { dg-error "Fortran 2003: Generic name 't' of function 'sub' at .1. being the same name as derived type at" } | |
10129 | +! i = sub() ! << Truly invalid in F95, valid in F2003 | |
10130 | +end | |
10131 | + | |
10132 | +! ------------ INVALID TWO ------------------------ | |
10133 | + | |
10134 | +module m3 | |
10135 | +type t2 ! { dg-error "Fortran 2003: Generic name 't2' of function 'sub2' at .1. being the same name as derived type at" } | |
10136 | + integer :: i | |
10137 | +end type t2 | |
10138 | + interface t2 | |
10139 | + module procedure sub2 | |
10140 | + end interface t2 | |
10141 | +contains | |
10142 | + integer function sub2() ! { dg-error "Fortran 2003: Generic name 't2' of function 'sub2' at .1. being the same name as derived type at" } | |
10143 | + sub2 = 4 | |
10144 | + end function sub2 | |
10145 | +end module m3 | |
10146 | Index: gcc/testsuite/gfortran.dg/intrinsic_8.f90 | |
10147 | =================================================================== | |
10148 | --- gcc/testsuite/gfortran.dg/intrinsic_8.f90 (.../tags/gcc_4_7_0_release) (wersja 0) | |
10149 | +++ gcc/testsuite/gfortran.dg/intrinsic_8.f90 (.../branches/gcc-4_7-branch) (wersja 187906) | |
10150 | @@ -0,0 +1,23 @@ | |
10151 | +! { dg-do compile } | |
10152 | +! | |
10153 | +! PR fortran/52452 | |
10154 | +! | |
10155 | +! Contributed by Roger Ferrer Ibanez | |
10156 | +! | |
10157 | +PROGRAM test_etime | |
10158 | + IMPLICIT NONE | |
10159 | + INTRINSIC :: etime | |
10160 | + REAL(4) :: tarray(1:2) | |
10161 | + REAL(4) :: result | |
10162 | + | |
10163 | + CALL etime(tarray, result) | |
10164 | +END PROGRAM test_etime | |
10165 | + | |
10166 | +subroutine test_etime2 | |
10167 | + IMPLICIT NONE | |
10168 | + INTRINSIC :: etime | |
10169 | + REAL(4) :: tarray(1:2) | |
10170 | + REAL(4) :: result | |
10171 | + | |
10172 | + result = etime(tarray) | |
10173 | +END subroutine test_etime2 | |
10174 | Index: gcc/testsuite/gfortran.dg/pr52701.f90 | |
10175 | =================================================================== | |
10176 | --- gcc/testsuite/gfortran.dg/pr52701.f90 (.../tags/gcc_4_7_0_release) (wersja 0) | |
10177 | +++ gcc/testsuite/gfortran.dg/pr52701.f90 (.../branches/gcc-4_7-branch) (wersja 187906) | |
10178 | @@ -0,0 +1,20 @@ | |
10179 | +! { dg-do compile } | |
10180 | +! { dg-options "-O3" } | |
10181 | +function pr52701 (x, z, e, f, g, l) | |
10182 | + integer a, b, c, d, e, f, g, i, j, l, pr52701 | |
10183 | + double precision x(e), z(e*e) | |
10184 | + do i = l, f | |
10185 | + do j = l, i | |
10186 | + d = 0 | |
10187 | + do a = 1, g | |
10188 | + c = a - g | |
10189 | + do b = 1, g | |
10190 | + d = d + 1 | |
10191 | + c = c + g | |
10192 | + z(d) = z(d) / (x(i) + x(j) - x(f + a) - x(f + b)) | |
10193 | + end do | |
10194 | + end do | |
10195 | + end do | |
10196 | + end do | |
10197 | + pr52701 = c | |
10198 | +end | |
10199 | Index: gcc/testsuite/gfortran.dg/typebound_operator_15.f90 | |
10200 | =================================================================== | |
10201 | --- gcc/testsuite/gfortran.dg/typebound_operator_15.f90 (.../tags/gcc_4_7_0_release) (wersja 0) | |
10202 | +++ gcc/testsuite/gfortran.dg/typebound_operator_15.f90 (.../branches/gcc-4_7-branch) (wersja 187906) | |
10203 | @@ -0,0 +1,78 @@ | |
10204 | +! { dg-do run } | |
10205 | +! | |
10206 | +! PR fortran/53255 | |
10207 | +! | |
10208 | +! Contributed by Reinhold Bader. | |
10209 | +! | |
10210 | +! Before TYPE(ext)'s .tr. wrongly called the base type's trace | |
10211 | +! instead of ext's trace_ext. | |
10212 | +! | |
10213 | +module mod_base | |
10214 | + implicit none | |
10215 | + private | |
10216 | + integer, public :: base_cnt = 0 | |
10217 | + type, public :: base | |
10218 | + private | |
10219 | + real :: r(2,2) = reshape( (/ 1.0, 2.0, 3.0, 4.0 /), (/ 2, 2 /)) | |
10220 | + contains | |
10221 | + procedure, private :: trace | |
10222 | + generic :: operator(.tr.) => trace | |
10223 | + end type base | |
10224 | +contains | |
10225 | + complex function trace(this) | |
10226 | + class(base), intent(in) :: this | |
10227 | + base_cnt = base_cnt + 1 | |
10228 | +! write(*,*) 'executing base' | |
10229 | + trace = this%r(1,1) + this%r(2,2) | |
10230 | + end function trace | |
10231 | +end module mod_base | |
10232 | + | |
10233 | +module mod_ext | |
10234 | + use mod_base | |
10235 | + implicit none | |
10236 | + private | |
10237 | + integer, public :: ext_cnt = 0 | |
10238 | + public :: base, base_cnt | |
10239 | + type, public, extends(base) :: ext | |
10240 | + private | |
10241 | + real :: i(2,2) = reshape( (/ 1.0, 1.0, 1.0, 1.5 /), (/ 2, 2 /)) | |
10242 | + contains | |
10243 | + procedure, private :: trace => trace_ext | |
10244 | + end type ext | |
10245 | +contains | |
10246 | + complex function trace_ext(this) | |
10247 | + class(ext), intent(in) :: this | |
10248 | + | |
10249 | +! the following should be executed through invoking .tr. p below | |
10250 | +! write(*,*) 'executing override' | |
10251 | + ext_cnt = ext_cnt + 1 | |
10252 | + trace_ext = .tr. this%base + (0.0, 1.0) * ( this%i(1,1) + this%i(2,2) ) | |
10253 | + end function trace_ext | |
10254 | + | |
10255 | +end module mod_ext | |
10256 | +program test_override | |
10257 | + use mod_ext | |
10258 | + implicit none | |
10259 | + type(base) :: o | |
10260 | + type(ext) :: p | |
10261 | + real :: r | |
10262 | + | |
10263 | + ! Note: ext's ".tr." (trace_ext) calls also base's "trace" | |
10264 | + | |
10265 | +! write(*,*) .tr. o | |
10266 | +! write(*,*) .tr. p | |
10267 | + if (base_cnt /= 0 .or. ext_cnt /= 0) call abort () | |
10268 | + r = .tr. o | |
10269 | + if (base_cnt /= 1 .or. ext_cnt /= 0) call abort () | |
10270 | + r = .tr. p | |
10271 | + if (base_cnt /= 2 .or. ext_cnt /= 1) call abort () | |
10272 | + | |
10273 | + if (abs(.tr. o - 5.0 ) < 1.0e-6 .and. abs( .tr. p - (5.0,2.5)) < 1.0e-6) & | |
10274 | + then | |
10275 | + if (base_cnt /= 4 .or. ext_cnt /= 2) call abort () | |
10276 | +! write(*,*) 'OK' | |
10277 | + else | |
10278 | + call abort() | |
10279 | +! write(*,*) 'FAIL' | |
10280 | + end if | |
10281 | +end program test_override | |
10282 | Index: gcc/testsuite/gfortran.dg/pr52678.f | |
10283 | =================================================================== | |
10284 | --- gcc/testsuite/gfortran.dg/pr52678.f (.../tags/gcc_4_7_0_release) (wersja 0) | |
10285 | +++ gcc/testsuite/gfortran.dg/pr52678.f (.../branches/gcc-4_7-branch) (wersja 187906) | |
10286 | @@ -0,0 +1,18 @@ | |
10287 | +! { dg-do compile } | |
10288 | +! { dg-options "-O -ftree-vectorize" } | |
10289 | + SUBROUTINE OpenAD_set_ref_state(DRF, RHOFACF, RHOFACC) | |
10290 | + real(8) DRF(1 : 15) | |
10291 | + real(8) RHOFACF(1 : 16) | |
10292 | + real(8) RHOFACC(1 : 15) | |
10293 | + integer, dimension(:), allocatable :: oad_it | |
10294 | + integer :: oad_it_ptr | |
10295 | + INTEGER(8) OpenAD_Symbol_188 | |
10296 | + INTEGER(4) K | |
10297 | + OpenAD_Symbol_188 = 0 | |
10298 | + DO K = 2, 15, 1 | |
10299 | + RHOFACF(INT(K)) = ((RHOFACC(K) * DRF(K + (-1)) + RHOFACC(K + | |
10300 | + + (-1)) * DRF(K)) /(DRF(K) + DRF(K + (-1)))) | |
10301 | + OpenAD_Symbol_188 = (INT(OpenAD_Symbol_188) + INT(1)) | |
10302 | + END DO | |
10303 | + oad_it(oad_it_ptr) = OpenAD_Symbol_188 | |
10304 | + end subroutine OpenAD_set_ref_state | |
10305 | Index: gcc/testsuite/gfortran.dg/use_only_6.f90 | |
10306 | =================================================================== | |
10307 | --- gcc/testsuite/gfortran.dg/use_only_6.f90 (.../tags/gcc_4_7_0_release) (wersja 0) | |
10308 | +++ gcc/testsuite/gfortran.dg/use_only_6.f90 (.../branches/gcc-4_7-branch) (wersja 187906) | |
10309 | @@ -0,0 +1,14 @@ | |
10310 | +! { dg-do compile } | |
10311 | +! PR 52668 - there used to be a bogus warning about not using b. | |
10312 | +! Original test case by Arnaud Desitter. | |
10313 | +module mm | |
10314 | + integer :: a, b | |
10315 | + common /mm1/ a, b | |
10316 | +end module mm | |
10317 | + | |
10318 | +subroutine aa() | |
10319 | + use mm, only: a | |
10320 | + implicit none | |
10321 | + a = 1 | |
10322 | +end subroutine aa | |
10323 | +! { dg-final { cleanup-modules "mm" } } | |
10324 | Index: gcc/testsuite/gfortran.dg/function_optimize_12.f90 | |
10325 | =================================================================== | |
10326 | --- gcc/testsuite/gfortran.dg/function_optimize_12.f90 (.../tags/gcc_4_7_0_release) (wersja 0) | |
10327 | +++ gcc/testsuite/gfortran.dg/function_optimize_12.f90 (.../branches/gcc-4_7-branch) (wersja 187906) | |
10328 | @@ -0,0 +1,12 @@ | |
10329 | +! { dg-do run } | |
10330 | +! { dg-options "-ffrontend-optimize" } | |
10331 | +! PR 53148 - this used to cause wrong code because the label was | |
10332 | +! placed after the statement assigning the new variables. | |
10333 | +program main | |
10334 | + integer :: n | |
10335 | + double precision x | |
10336 | + n = 3 | |
10337 | + goto 100 | |
10338 | +100 x = dble(n) + dble(n) | |
10339 | + if (x /= 6.d0) call abort | |
10340 | +end program main | |
10341 | Index: gcc/testsuite/gfortran.dg/constructor_8.f90 | |
10342 | =================================================================== | |
10343 | --- gcc/testsuite/gfortran.dg/constructor_8.f90 (.../tags/gcc_4_7_0_release) (wersja 0) | |
10344 | +++ gcc/testsuite/gfortran.dg/constructor_8.f90 (.../branches/gcc-4_7-branch) (wersja 187906) | |
10345 | @@ -0,0 +1,22 @@ | |
10346 | +! { dg-do compile } | |
10347 | +! { dg-options "-std=f95" } | |
10348 | +! | |
10349 | +! PR fortran/53111 | |
10350 | +! | |
10351 | +! Contributed by Jacob Middag, reduced by Janus Weil. | |
10352 | +! | |
10353 | + | |
10354 | +module a | |
10355 | + type :: my | |
10356 | + real :: x | |
10357 | + end type | |
10358 | +end module | |
10359 | + | |
10360 | +module b | |
10361 | + use a | |
10362 | +end module | |
10363 | + | |
10364 | +program test | |
10365 | + use a | |
10366 | + use b | |
10367 | +end program | |
10368 | Index: gcc/testsuite/gfortran.dg/pointer_intent_6.f90 | |
10369 | =================================================================== | |
10370 | --- gcc/testsuite/gfortran.dg/pointer_intent_6.f90 (.../tags/gcc_4_7_0_release) (wersja 0) | |
10371 | +++ gcc/testsuite/gfortran.dg/pointer_intent_6.f90 (.../branches/gcc-4_7-branch) (wersja 187906) | |
10372 | @@ -0,0 +1,19 @@ | |
10373 | +! { dg-do compile } | |
10374 | +! | |
10375 | +! PR fortran/52864 | |
10376 | +! | |
10377 | +! Assigning to an intent(in) pointer (which is valid). | |
10378 | +! | |
10379 | + program test | |
10380 | + type PoisFFT_Solver3D | |
10381 | + complex, dimension(:,:,:), & | |
10382 | + pointer :: work => null() | |
10383 | + end type PoisFFT_Solver3D | |
10384 | + contains | |
10385 | + subroutine PoisFFT_Solver3D_FullPeriodic(D, p) | |
10386 | + type(PoisFFT_Solver3D), intent(in) :: D | |
10387 | + real, intent(in), pointer :: p(:) | |
10388 | + D%work(i,j,k) = 0.0 | |
10389 | + p = 0.0 | |
10390 | + end subroutine | |
10391 | + end | |
10392 | Index: gcc/testsuite/gfortran.dg/pr52835.f90 | |
10393 | =================================================================== | |
10394 | --- gcc/testsuite/gfortran.dg/pr52835.f90 (.../tags/gcc_4_7_0_release) (wersja 0) | |
10395 | +++ gcc/testsuite/gfortran.dg/pr52835.f90 (.../branches/gcc-4_7-branch) (wersja 187906) | |
10396 | @@ -0,0 +1,16 @@ | |
10397 | +! PR tree-optimization/52835 | |
10398 | +! { dg-do compile } | |
10399 | +! { dg-options "-O3 -fdump-tree-optimized" } | |
10400 | + | |
10401 | +subroutine foo (x, y, z, n) | |
10402 | + integer :: n, i | |
10403 | + real :: x(n), y(n), z(n) | |
10404 | + do i = 1, n | |
10405 | + z(i) = 0.0 | |
10406 | + y(i) = 0.0 | |
10407 | + call bar (y(i), z(i), x(i)) | |
10408 | + end do | |
10409 | +end subroutine | |
10410 | + | |
10411 | +! { dg-final { scan-tree-dump "bar " "optimized" } } | |
10412 | +! { dg-final { cleanup-tree-dump "optimized" } } | |
10413 | Index: gcc/testsuite/gfortran.dg/realloc_on_assign_15.f90 | |
10414 | =================================================================== | |
10415 | --- gcc/testsuite/gfortran.dg/realloc_on_assign_15.f90 (.../tags/gcc_4_7_0_release) (wersja 0) | |
10416 | +++ gcc/testsuite/gfortran.dg/realloc_on_assign_15.f90 (.../branches/gcc-4_7-branch) (wersja 187906) | |
10417 | @@ -0,0 +1,40 @@ | |
10418 | +! { dg-do run } | |
10419 | +! | |
10420 | +! PR fortran/53389 | |
10421 | +! | |
10422 | +! The program was leaking memory before due to | |
10423 | +! realloc on assignment and nested functions. | |
10424 | +! | |
10425 | +module foo | |
10426 | + implicit none | |
10427 | + contains | |
10428 | + | |
10429 | + function filler(array, val) | |
10430 | + real, dimension(:), intent(in):: array | |
10431 | + real, dimension(size(array)):: filler | |
10432 | + real, intent(in):: val | |
10433 | + | |
10434 | + filler=val | |
10435 | + | |
10436 | + end function filler | |
10437 | +end module | |
10438 | + | |
10439 | +program test | |
10440 | + use foo | |
10441 | + implicit none | |
10442 | + | |
10443 | + real, dimension(:), allocatable:: x, y | |
10444 | + integer, parameter:: N=1000 !*1000 | |
10445 | + integer:: i | |
10446 | + | |
10447 | +! allocate( x(N) ) | |
10448 | + allocate( y(N) ) | |
10449 | + y=0.0 | |
10450 | + | |
10451 | + do i=1, N | |
10452 | +! print *,i | |
10453 | + x=filler(filler(y, real(2*i)), real(i)) | |
10454 | + y=y+x | |
10455 | + end do | |
10456 | + | |
10457 | +end program test | |
10458 | Index: gcc/testsuite/gfortran.dg/bessel_7.f90 | |
10459 | =================================================================== | |
10460 | --- gcc/testsuite/gfortran.dg/bessel_7.f90 (.../tags/gcc_4_7_0_release) (wersja 187906) | |
10461 | +++ gcc/testsuite/gfortran.dg/bessel_7.f90 (.../branches/gcc-4_7-branch) (wersja 187906) | |
10462 | @@ -16,7 +16,7 @@ | |
10463 | implicit none | |
10464 | real,parameter :: values(*) = [0.0, 0.5, 1.0, 0.9, 1.8,2.0,3.0,4.0,4.25,8.0,34.53, 475.78] | |
10465 | real,parameter :: myeps(size(values)) = epsilon(0.0) & | |
10466 | - * [2, 3, 4, 5, 8, 2, 12, 6, 7, 6, 31, 168 ] | |
10467 | + * [2, 3, 4, 5, 8, 2, 12, 6, 7, 6, 36, 168 ] | |
10468 | ! The following is sufficient for me - the values above are a bit | |
10469 | ! more tolerant | |
10470 | ! * [0, 0, 0, 3, 3, 0, 9, 0, 2, 1, 22, 130 ] | |
10471 | Index: gcc/testsuite/gfortran.dg/vect/pr52580.f | |
10472 | =================================================================== | |
10473 | --- gcc/testsuite/gfortran.dg/vect/pr52580.f (.../tags/gcc_4_7_0_release) (wersja 0) | |
10474 | +++ gcc/testsuite/gfortran.dg/vect/pr52580.f (.../branches/gcc-4_7-branch) (wersja 187906) | |
10475 | @@ -0,0 +1,33 @@ | |
10476 | +! { dg-do compile } | |
10477 | +! { dg-require-effective-target vect_double } | |
10478 | + SUBROUTINE CALC2 | |
10479 | + IMPLICIT REAL*8 (A-H, O-Z) | |
10480 | + PARAMETER (N1=1335, N2=1335) | |
10481 | + | |
10482 | + COMMON U(N1,N2), V(N1,N2), P(N1,N2), | |
10483 | + * UNEW(N1,N2), VNEW(N1,N2), | |
10484 | + 1 PNEW(N1,N2), UOLD(N1,N2), | |
10485 | + * VOLD(N1,N2), POLD(N1,N2), | |
10486 | + 2 CU(N1,N2), CV(N1,N2), | |
10487 | + * Z(N1,N2), H(N1,N2), PSI(N1,N2) | |
10488 | + COMMON /CONS/ DT,TDT,DX,DY,A,ALPHA,ITMAX,MPRINT,M,N,MP1, | |
10489 | + 1 NP1,EL,PI,TPI,DI,DJ,PCF | |
10490 | + TDTS8 = TDT/8.D0 | |
10491 | + TDTSDX = TDT/DX | |
10492 | + TDTSDY = TDT/DY | |
10493 | + | |
10494 | + DO 200 J=1,N | |
10495 | + DO 200 I=1,M | |
10496 | + UNEW(I+1,J) = UOLD(I+1,J)+ | |
10497 | + 1 TDTS8*(Z(I+1,J+1)+Z(I+1,J))*(CV(I+1,J+1)+CV(I,J+1)+CV(I,J) | |
10498 | + 2 +CV(I+1,J))-TDTSDX*(H(I+1,J)-H(I,J)) | |
10499 | + VNEW(I,J+1) = VOLD(I,J+1)-TDTS8*(Z(I+1,J+1)+Z(I,J+1)) | |
10500 | + 1 *(CU(I+1,J+1)+CU(I,J+1)+CU(I,J)+CU(I+1,J)) | |
10501 | + 2 -TDTSDY*(H(I,J+1)-H(I,J)) | |
10502 | + PNEW(I,J) = POLD(I,J)-TDTSDX*(CU(I+1,J)-CU(I,J)) | |
10503 | + 1 -TDTSDY*(CV(I,J+1)-CV(I,J)) | |
10504 | + 200 CONTINUE | |
10505 | + RETURN | |
10506 | + END | |
10507 | +! { dg-final { scan-tree-dump-times "LOOP VECTORIZED" 1 "vect" } } | |
10508 | +! { dg-final { cleanup-tree-dump "vect" } } | |
10509 | Index: gcc/testsuite/gcc.c-torture/execute/pr53160.c | |
10510 | =================================================================== | |
10511 | --- gcc/testsuite/gcc.c-torture/execute/pr53160.c (.../tags/gcc_4_7_0_release) (wersja 0) | |
10512 | +++ gcc/testsuite/gcc.c-torture/execute/pr53160.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
10513 | @@ -0,0 +1,35 @@ | |
10514 | +/* PR rtl-optimization/53160 */ | |
10515 | + | |
10516 | +extern void abort (void); | |
10517 | + | |
10518 | +int a, c = 1, d, e, g; | |
10519 | +volatile int b; | |
10520 | +volatile char f; | |
10521 | +long h; | |
10522 | +short i; | |
10523 | + | |
10524 | +void | |
10525 | +foo (void) | |
10526 | +{ | |
10527 | + for (e = 0; e; ++e) | |
10528 | + ; | |
10529 | +} | |
10530 | + | |
10531 | +int | |
10532 | +main () | |
10533 | +{ | |
10534 | + if (g) | |
10535 | + (void) b; | |
10536 | + foo (); | |
10537 | + for (d = 0; d >= 0; d--) | |
10538 | + { | |
10539 | + short j = f; | |
10540 | + int k = 0; | |
10541 | + i = j ? j : j << k; | |
10542 | + } | |
10543 | + h = c == 0 ? 0 : i; | |
10544 | + a = h; | |
10545 | + if (a != 0) | |
10546 | + abort (); | |
10547 | + return 0; | |
10548 | +} | |
10549 | Index: gcc/testsuite/gcc.c-torture/execute/pr53084.c | |
10550 | =================================================================== | |
10551 | --- gcc/testsuite/gcc.c-torture/execute/pr53084.c (.../tags/gcc_4_7_0_release) (wersja 0) | |
10552 | +++ gcc/testsuite/gcc.c-torture/execute/pr53084.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
10553 | @@ -0,0 +1,18 @@ | |
10554 | +/* PR middle-end/53084 */ | |
10555 | + | |
10556 | +extern void abort (void); | |
10557 | + | |
10558 | +__attribute__((noinline, noclone)) void | |
10559 | +bar (const char *p) | |
10560 | +{ | |
10561 | + if (p[0] != 'o' || p[1] != 'o' || p[2]) | |
10562 | + abort (); | |
10563 | +} | |
10564 | + | |
10565 | +int | |
10566 | +main () | |
10567 | +{ | |
10568 | + static const char *const foo[] = {"foo" + 1}; | |
10569 | + bar (foo[0]); | |
10570 | + return 0; | |
10571 | +} | |
10572 | Index: gcc/testsuite/gcc.c-torture/execute/20120427-1.c | |
10573 | =================================================================== | |
10574 | --- gcc/testsuite/gcc.c-torture/execute/20120427-1.c (.../tags/gcc_4_7_0_release) (wersja 0) | |
10575 | +++ gcc/testsuite/gcc.c-torture/execute/20120427-1.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
10576 | @@ -0,0 +1,36 @@ | |
10577 | +typedef struct sreal | |
10578 | +{ | |
10579 | + unsigned sig; /* Significant. */ | |
10580 | + int exp; /* Exponent. */ | |
10581 | +} sreal; | |
10582 | + | |
10583 | +sreal_compare (sreal *a, sreal *b) | |
10584 | +{ | |
10585 | + if (a->exp > b->exp) | |
10586 | + return 1; | |
10587 | + if (a->exp < b->exp) | |
10588 | + return -1; | |
10589 | + if (a->sig > b->sig) | |
10590 | + return 1; | |
10591 | + return -(a->sig < b->sig); | |
10592 | +} | |
10593 | + | |
10594 | +sreal a[] = { | |
10595 | + { 0, 0 }, | |
10596 | + { 1, 0 }, | |
10597 | + { 0, 1 }, | |
10598 | + { 1, 1 } | |
10599 | +}; | |
10600 | + | |
10601 | +int main() | |
10602 | +{ | |
10603 | + int i, j; | |
10604 | + for (i = 0; i <= 3; i++) { | |
10605 | + for (j = 0; j < 3; j++) { | |
10606 | + if (i < j && sreal_compare(&a[i], &a[j]) != -1) abort(); | |
10607 | + if (i == j && sreal_compare(&a[i], &a[j]) != 0) abort(); | |
10608 | + if (i > j && sreal_compare(&a[i], &a[j]) != 1) abort(); | |
10609 | + } | |
10610 | + } | |
10611 | + return 0; | |
10612 | +} | |
10613 | Index: gcc/testsuite/gcc.c-torture/execute/pr53465.c | |
10614 | =================================================================== | |
10615 | --- gcc/testsuite/gcc.c-torture/execute/pr53465.c (.../tags/gcc_4_7_0_release) (wersja 0) | |
10616 | +++ gcc/testsuite/gcc.c-torture/execute/pr53465.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
10617 | @@ -0,0 +1,30 @@ | |
10618 | +/* PR tree-optimization/53465 */ | |
10619 | + | |
10620 | +extern void abort (); | |
10621 | + | |
10622 | +static const int a[] = { 1, 2 }; | |
10623 | + | |
10624 | +void | |
10625 | +foo (const int *x, int y) | |
10626 | +{ | |
10627 | + int i; | |
10628 | + int b = 0; | |
10629 | + int c; | |
10630 | + for (i = 0; i < y; i++) | |
10631 | + { | |
10632 | + int d = x[i]; | |
10633 | + if (d == 0) | |
10634 | + break; | |
10635 | + if (b && d <= c) | |
10636 | + abort (); | |
10637 | + c = d; | |
10638 | + b = 1; | |
10639 | + } | |
10640 | +} | |
10641 | + | |
10642 | +int | |
10643 | +main () | |
10644 | +{ | |
10645 | + foo (a, 2); | |
10646 | + return 0; | |
10647 | +} | |
10648 | Index: gcc/testsuite/gcc.c-torture/compile/pr52891-1.c | |
10649 | =================================================================== | |
10650 | --- gcc/testsuite/gcc.c-torture/compile/pr52891-1.c (.../tags/gcc_4_7_0_release) (wersja 0) | |
10651 | +++ gcc/testsuite/gcc.c-torture/compile/pr52891-1.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
10652 | @@ -0,0 +1,20 @@ | |
10653 | +/* PR tree-optimizations/52891 */ | |
10654 | + | |
10655 | +struct S | |
10656 | +{ | |
10657 | + int a; | |
10658 | + struct T { unsigned c : 10; } b; | |
10659 | +} s; | |
10660 | + | |
10661 | +void | |
10662 | +bar (short x, short y, int **p) | |
10663 | +{ | |
10664 | + if ((x && y) + **p) | |
10665 | + while (1); | |
10666 | +} | |
10667 | + | |
10668 | +void | |
10669 | +foo (int **p) | |
10670 | +{ | |
10671 | + bar (s.a, s.b.c, p); | |
10672 | +} | |
10673 | Index: gcc/testsuite/gcc.c-torture/compile/pr53418-1.c | |
10674 | =================================================================== | |
10675 | --- gcc/testsuite/gcc.c-torture/compile/pr53418-1.c (.../tags/gcc_4_7_0_release) (wersja 0) | |
10676 | +++ gcc/testsuite/gcc.c-torture/compile/pr53418-1.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
10677 | @@ -0,0 +1,5 @@ | |
10678 | +void | |
10679 | +f (void) | |
10680 | +{ | |
10681 | + int i = (0 ? 1 : 0U / 0); | |
10682 | +} | |
10683 | Index: gcc/testsuite/gcc.c-torture/compile/pr53410-2.c | |
10684 | =================================================================== | |
10685 | --- gcc/testsuite/gcc.c-torture/compile/pr53410-2.c (.../tags/gcc_4_7_0_release) (wersja 0) | |
10686 | +++ gcc/testsuite/gcc.c-torture/compile/pr53410-2.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
10687 | @@ -0,0 +1,64 @@ | |
10688 | +/* PR tree-optimization/53410 */ | |
10689 | + | |
10690 | +typedef int V __attribute__((vector_size (4 * sizeof (int)))); | |
10691 | +typedef unsigned int W __attribute__((vector_size (4 * sizeof (int)))); | |
10692 | + | |
10693 | +void | |
10694 | +f1 (V *p) | |
10695 | +{ | |
10696 | + *p = (*p & ((V) { 1, 1, 1, 1 })) ^ ((V) { 1, 1, 1, 1}); | |
10697 | +} | |
10698 | + | |
10699 | +void | |
10700 | +f2 (V *p) | |
10701 | +{ | |
10702 | + *p = (*p ^ ((V) { 1, 1, 1, 1 })) & ((V) { 1, 1, 1, 1}); | |
10703 | +} | |
10704 | + | |
10705 | +void | |
10706 | +f3 (V *p) | |
10707 | +{ | |
10708 | + *p = (~*p) & ((V) { 1, 1, 1, 1 }); | |
10709 | +} | |
10710 | + | |
10711 | +void | |
10712 | +f4 (V *p, V *q) | |
10713 | +{ | |
10714 | + *p = (*p ^ *q) == *q; | |
10715 | +} | |
10716 | + | |
10717 | +void | |
10718 | +f5 (V *p, V *q) | |
10719 | +{ | |
10720 | + *p = (*p ^ *q) == *p; | |
10721 | +} | |
10722 | + | |
10723 | +void | |
10724 | +f6 (V *p, V *q, V *r) | |
10725 | +{ | |
10726 | + *p = (*p & *r) == (*q & *r); | |
10727 | +} | |
10728 | + | |
10729 | +void | |
10730 | +f7 (V *p, V *q, V *r) | |
10731 | +{ | |
10732 | + *p = (*p & *r) == (*r & *q); | |
10733 | +} | |
10734 | + | |
10735 | +void | |
10736 | +f8 (V *p, V *q, V *r) | |
10737 | +{ | |
10738 | + *p = (*r & *p) == (*q & *r); | |
10739 | +} | |
10740 | + | |
10741 | +void | |
10742 | +f9 (V *p, V *q, V *r) | |
10743 | +{ | |
10744 | + *p = (*r & *p) == (*r & *q); | |
10745 | +} | |
10746 | + | |
10747 | +void | |
10748 | +f10 (W *p, W *q) | |
10749 | +{ | |
10750 | + *p = *p < (((const W) { 1U, 1U, 1U, 1U }) << *q); | |
10751 | +} | |
10752 | Index: gcc/testsuite/gcc.c-torture/compile/limits-externdecl.c | |
10753 | =================================================================== | |
10754 | --- gcc/testsuite/gcc.c-torture/compile/limits-externdecl.c (.../tags/gcc_4_7_0_release) (wersja 0) | |
10755 | +++ gcc/testsuite/gcc.c-torture/compile/limits-externdecl.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
10756 | @@ -0,0 +1,56 @@ | |
10757 | +/* Inspired by the test case for PR middle-end/52640. */ | |
10758 | + | |
10759 | +typedef struct | |
10760 | +{ | |
10761 | + char *value; | |
10762 | +} REFERENCE; | |
10763 | + | |
10764 | +/* Add a few "extern int Xxxxxx ();" declarations. */ | |
10765 | +#undef DEF | |
10766 | +#undef LIM1 | |
10767 | +#undef LIM2 | |
10768 | +#undef LIM3 | |
10769 | +#undef LIM4 | |
10770 | +#undef LIM5 | |
10771 | +#undef LIM6 | |
10772 | +#define DEF(x) extern int x () | |
10773 | +#define LIM1(x) DEF(x##0); DEF(x##1); DEF(x##2); DEF(x##3); DEF(x##4); \ | |
10774 | + DEF(x##5); DEF(x##6); DEF(x##7); DEF(x##8); DEF(x##9); | |
10775 | +#define LIM2(x) LIM1(x##0) LIM1(x##1) LIM1(x##2) LIM1(x##3) LIM1(x##4) \ | |
10776 | + LIM1(x##5) LIM1(x##6) LIM1(x##7) LIM1(x##8) LIM1(x##9) | |
10777 | +#define LIM3(x) LIM2(x##0) LIM2(x##1) LIM2(x##2) LIM2(x##3) LIM2(x##4) \ | |
10778 | + LIM2(x##5) LIM2(x##6) LIM2(x##7) LIM2(x##8) LIM2(x##9) | |
10779 | +#define LIM4(x) LIM3(x##0) LIM3(x##1) LIM3(x##2) LIM3(x##3) LIM3(x##4) \ | |
10780 | + LIM3(x##5) LIM3(x##6) LIM3(x##7) LIM3(x##8) LIM3(x##9) | |
10781 | +#define LIM5(x) LIM4(x##0) LIM4(x##1) LIM4(x##2) LIM4(x##3) LIM4(x##4) \ | |
10782 | + LIM4(x##5) LIM4(x##6) LIM4(x##7) LIM4(x##8) LIM4(x##9) | |
10783 | +#define LIM6(x) LIM5(x##0) LIM5(x##1) LIM5(x##2) LIM5(x##3) LIM5(x##4) \ | |
10784 | + LIM5(x##5) LIM5(x##6) LIM5(x##7) LIM5(x##8) LIM5(x##9) | |
10785 | +LIM5 (X); | |
10786 | + | |
10787 | +/* Add references to them, or GCC will simply ignore the extern decls. */ | |
10788 | +#undef DEF | |
10789 | +#undef LIM1 | |
10790 | +#undef LIM2 | |
10791 | +#undef LIM3 | |
10792 | +#undef LIM4 | |
10793 | +#undef LIM5 | |
10794 | +#undef LIM6 | |
10795 | +#define DEF(x) (char *) x | |
10796 | +#define LIM1(x) DEF(x##0), DEF(x##1), DEF(x##2), DEF(x##3), DEF(x##4), \ | |
10797 | + DEF(x##5), DEF(x##6), DEF(x##7), DEF(x##8), DEF(x##9), | |
10798 | +#define LIM2(x) LIM1(x##0) LIM1(x##1) LIM1(x##2) LIM1(x##3) LIM1(x##4) \ | |
10799 | + LIM1(x##5) LIM1(x##6) LIM1(x##7) LIM1(x##8) LIM1(x##9) | |
10800 | +#define LIM3(x) LIM2(x##0) LIM2(x##1) LIM2(x##2) LIM2(x##3) LIM2(x##4) \ | |
10801 | + LIM2(x##5) LIM2(x##6) LIM2(x##7) LIM2(x##8) LIM2(x##9) | |
10802 | +#define LIM4(x) LIM3(x##0) LIM3(x##1) LIM3(x##2) LIM3(x##3) LIM3(x##4) \ | |
10803 | + LIM3(x##5) LIM3(x##6) LIM3(x##7) LIM3(x##8) LIM3(x##9) | |
10804 | +#define LIM5(x) LIM4(x##0) LIM4(x##1) LIM4(x##2) LIM4(x##3) LIM4(x##4) \ | |
10805 | + LIM4(x##5) LIM4(x##6) LIM4(x##7) LIM4(x##8) LIM4(x##9) | |
10806 | +#define LIM6(x) LIM5(x##0) LIM5(x##1) LIM5(x##2) LIM5(x##3) LIM5(x##4) \ | |
10807 | + LIM5(x##5) LIM5(x##6) LIM5(x##7) LIM5(x##8) LIM5(x##9) | |
10808 | +REFERENCE references[] = { | |
10809 | + LIM5 (X) | |
10810 | + 0 | |
10811 | +}; | |
10812 | + | |
10813 | Index: gcc/testsuite/gcc.c-torture/compile/pr53163.c | |
10814 | =================================================================== | |
10815 | --- gcc/testsuite/gcc.c-torture/compile/pr53163.c (.../tags/gcc_4_7_0_release) (wersja 0) | |
10816 | +++ gcc/testsuite/gcc.c-torture/compile/pr53163.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
10817 | @@ -0,0 +1,34 @@ | |
10818 | +/* PR tree-optimization/53163 */ | |
10819 | + | |
10820 | +struct S { int s; } b, f; | |
10821 | +int a, c; | |
10822 | + | |
10823 | +void | |
10824 | +foo (void) | |
10825 | +{ | |
10826 | + int d, e; | |
10827 | + for (d = 4; d < 19; ++d) | |
10828 | + for (e = 2; e >= 0; e--) | |
10829 | + { | |
10830 | + a = 0; | |
10831 | + a = 1; | |
10832 | + } | |
10833 | +} | |
10834 | + | |
10835 | +void | |
10836 | +bar (void) | |
10837 | +{ | |
10838 | + int g, h, i; | |
10839 | + for (i = 1; i >= 0; i--) | |
10840 | + { | |
10841 | + b = f; | |
10842 | + for (g = 0; g <= 1; g++) | |
10843 | + { | |
10844 | + if (c) | |
10845 | + break; | |
10846 | + for (h = 0; h <= 1; h++) | |
10847 | + foo (); | |
10848 | + foo (); | |
10849 | + } | |
10850 | + } | |
10851 | +} | |
10852 | Index: gcc/testsuite/gcc.c-torture/compile/pr52891-2.c | |
10853 | =================================================================== | |
10854 | --- gcc/testsuite/gcc.c-torture/compile/pr52891-2.c (.../tags/gcc_4_7_0_release) (wersja 0) | |
10855 | +++ gcc/testsuite/gcc.c-torture/compile/pr52891-2.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
10856 | @@ -0,0 +1,16 @@ | |
10857 | +/* PR tree-optimizations/52891 */ | |
10858 | + | |
10859 | +#if __SIZEOF_INT__ > 2 | |
10860 | +struct __attribute__((packed)) S { unsigned s : 22; }; | |
10861 | +#else | |
10862 | +struct __attribute__((packed)) S { unsigned s : 12; }; | |
10863 | +#endif | |
10864 | +struct __attribute__((packed)) T { struct S t; } c; | |
10865 | +int a, b, d; | |
10866 | + | |
10867 | +void | |
10868 | +foo (void) | |
10869 | +{ | |
10870 | + if (1 ? (!c.t.s & (d < 0)) < a : 0) | |
10871 | + b = 0; | |
10872 | +} | |
10873 | Index: gcc/testsuite/gcc.c-torture/compile/pr53410-1.c | |
10874 | =================================================================== | |
10875 | --- gcc/testsuite/gcc.c-torture/compile/pr53410-1.c (.../tags/gcc_4_7_0_release) (wersja 0) | |
10876 | +++ gcc/testsuite/gcc.c-torture/compile/pr53410-1.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
10877 | @@ -0,0 +1,10 @@ | |
10878 | +/* PR tree-optimization/53410 */ | |
10879 | + | |
10880 | +int *a, b, c, d; | |
10881 | + | |
10882 | +void | |
10883 | +foo (void) | |
10884 | +{ | |
10885 | + for (; d <= 0; d++) | |
10886 | + b &= ((a || d) ^ c) == 1; | |
10887 | +} | |
10888 | Index: gcc/testsuite/gcc.c-torture/compile/pr53418-2.c | |
10889 | =================================================================== | |
10890 | --- gcc/testsuite/gcc.c-torture/compile/pr53418-2.c (.../tags/gcc_4_7_0_release) (wersja 0) | |
10891 | +++ gcc/testsuite/gcc.c-torture/compile/pr53418-2.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
10892 | @@ -0,0 +1,5 @@ | |
10893 | +void | |
10894 | +f (void) | |
10895 | +{ | |
10896 | + int i = (1 ? 0U / 0 : 1); | |
10897 | +} | |
10898 | Index: gcc/testsuite/gcc.c-torture/compile/pr53409.c | |
10899 | =================================================================== | |
10900 | --- gcc/testsuite/gcc.c-torture/compile/pr53409.c (.../tags/gcc_4_7_0_release) (wersja 0) | |
10901 | +++ gcc/testsuite/gcc.c-torture/compile/pr53409.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
10902 | @@ -0,0 +1,19 @@ | |
10903 | +/* PR tree-optimization/53409 */ | |
10904 | + | |
10905 | +int a, c, d, e, f; | |
10906 | +int b[0]; | |
10907 | + | |
10908 | +int | |
10909 | +main () | |
10910 | +{ | |
10911 | + if (f) | |
10912 | + e = 0; | |
10913 | + int g = d; | |
10914 | + for (c = 0; c <= 1; c++) | |
10915 | + { | |
10916 | + for (a = 0; a <= 1; a = (char) a + 1) | |
10917 | + b[c] = g; | |
10918 | + a = 0; | |
10919 | + } | |
10920 | + return 0; | |
10921 | +} | |
10922 | Index: gcc/testsuite/gcc.c-torture/compile/pr52750.c | |
10923 | =================================================================== | |
10924 | --- gcc/testsuite/gcc.c-torture/compile/pr52750.c (.../tags/gcc_4_7_0_release) (wersja 0) | |
10925 | +++ gcc/testsuite/gcc.c-torture/compile/pr52750.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
10926 | @@ -0,0 +1,11 @@ | |
10927 | +/* PR middle-end/52750 */ | |
10928 | + | |
10929 | +typedef signed char V __attribute__((vector_size (32))); | |
10930 | + | |
10931 | +void | |
10932 | +foo (V *x) | |
10933 | +{ | |
10934 | + V m = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, | |
10935 | + 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31}; | |
10936 | + *x = __builtin_shuffle (*x, m); | |
10937 | +} | |
10938 | Index: gcc/testsuite/gcc.c-torture/compile/pr53187.c | |
10939 | =================================================================== | |
10940 | --- gcc/testsuite/gcc.c-torture/compile/pr53187.c (.../tags/gcc_4_7_0_release) (wersja 0) | |
10941 | +++ gcc/testsuite/gcc.c-torture/compile/pr53187.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
10942 | @@ -0,0 +1,11 @@ | |
10943 | +/* PR target/53187 */ | |
10944 | + | |
10945 | +void bar (int); | |
10946 | + | |
10947 | +void | |
10948 | +foo (int x, double y, double z) | |
10949 | +{ | |
10950 | + _Bool t = z >= y; | |
10951 | + if (!t || x) | |
10952 | + bar (t ? 1 : 16); | |
10953 | +} | |
10954 | Index: gcc/testsuite/gnat.dg/null_pointer_deref3.adb | |
10955 | =================================================================== | |
10956 | --- gcc/testsuite/gnat.dg/null_pointer_deref3.adb (.../tags/gcc_4_7_0_release) (wersja 0) | |
10957 | +++ gcc/testsuite/gnat.dg/null_pointer_deref3.adb (.../branches/gcc-4_7-branch) (wersja 187906) | |
10958 | @@ -0,0 +1,24 @@ | |
10959 | +-- { dg-do run } | |
10960 | +-- { dg-options "-O -gnatp" } | |
10961 | + | |
10962 | +-- This test requires architecture- and OS-specific support code for unwinding | |
10963 | +-- through signal frames (typically located in *-unwind.h) to pass. Feel free | |
10964 | +-- to disable it if this code hasn't been implemented yet. | |
10965 | + | |
10966 | +procedure Null_Pointer_Deref3 is | |
10967 | + | |
10968 | + procedure Leaf is | |
10969 | + type Int_Ptr is access all Integer; | |
10970 | + function n return Int_Ptr is | |
10971 | + begin return null; end; | |
10972 | + | |
10973 | + Data : Int_Ptr := n; | |
10974 | + begin | |
10975 | + Data.all := 0; | |
10976 | + end; | |
10977 | + | |
10978 | +begin | |
10979 | + Leaf; | |
10980 | +exception | |
10981 | + when others => null; | |
10982 | +end; | |
10983 | Index: gcc/testsuite/gnat.dg/lto11.adb | |
10984 | =================================================================== | |
10985 | --- gcc/testsuite/gnat.dg/lto11.adb (.../tags/gcc_4_7_0_release) (wersja 0) | |
10986 | +++ gcc/testsuite/gnat.dg/lto11.adb (.../branches/gcc-4_7-branch) (wersja 187906) | |
10987 | @@ -0,0 +1,20 @@ | |
10988 | +-- { dg-do compile } | |
10989 | +-- { dg-options "-flto" { target lto } } | |
10990 | + | |
10991 | +with Ada.Streams; use Ada.Streams; | |
10992 | + | |
10993 | +package body Lto11 is | |
10994 | + | |
10995 | + procedure Write | |
10996 | + (S : not null access Root_Stream_Type'Class; | |
10997 | + V : Vector) | |
10998 | + is | |
10999 | + subtype M_SEA is Stream_Element_Array (1 .. V'Size / Stream_Element'Size); | |
11000 | + Bytes : M_SEA; | |
11001 | + for Bytes'Address use V'Address; | |
11002 | + pragma Import (Ada, Bytes); | |
11003 | + begin | |
11004 | + Ada.Streams.Write (S.all, Bytes); | |
11005 | + end; | |
11006 | + | |
11007 | +end Lto11; | |
11008 | Index: gcc/testsuite/gnat.dg/lto11.ads | |
11009 | =================================================================== | |
11010 | --- gcc/testsuite/gnat.dg/lto11.ads (.../tags/gcc_4_7_0_release) (wersja 0) | |
11011 | +++ gcc/testsuite/gnat.dg/lto11.ads (.../branches/gcc-4_7-branch) (wersja 187906) | |
11012 | @@ -0,0 +1,9 @@ | |
11013 | +with Ada.Streams; use Ada.Streams; | |
11014 | + | |
11015 | +package Lto11 is | |
11016 | + | |
11017 | + type Vector is array (Positive range <>) of Float; | |
11018 | + | |
11019 | + procedure Write (S : not null access Root_Stream_Type'Class; V : Vector); | |
11020 | + | |
11021 | +end Lto11; | |
11022 | Index: gcc/testsuite/gnat.dg/controlled6.adb | |
11023 | =================================================================== | |
11024 | --- gcc/testsuite/gnat.dg/controlled6.adb (.../tags/gcc_4_7_0_release) (wersja 0) | |
11025 | +++ gcc/testsuite/gnat.dg/controlled6.adb (.../branches/gcc-4_7-branch) (wersja 187906) | |
11026 | @@ -0,0 +1,24 @@ | |
11027 | +-- { dg-do compile } | |
11028 | +-- { dg-options "-O -gnatn" } | |
11029 | + | |
11030 | +with Ada.Text_IO; use Ada.Text_IO; | |
11031 | +with Controlled6_Pkg; | |
11032 | +with Controlled6_Pkg.Iterators; | |
11033 | + | |
11034 | +procedure Controlled6 is | |
11035 | + | |
11036 | + type String_Access is access String; | |
11037 | + | |
11038 | + package My_Q is new Controlled6_Pkg (String_Access); | |
11039 | + package My_Iterators is new My_Q.Iterators (0); | |
11040 | + use My_Iterators; | |
11041 | + | |
11042 | + Iterator : Iterator_Type := Find; | |
11043 | + | |
11044 | +begin | |
11045 | + loop | |
11046 | + exit when Is_Null (Iterator); | |
11047 | + Put (Current (Iterator).all & ' '); | |
11048 | + Find_Next (Iterator); | |
11049 | + end loop; | |
11050 | +end; | |
11051 | Index: gcc/testsuite/gnat.dg/concat2.adb | |
11052 | =================================================================== | |
11053 | --- gcc/testsuite/gnat.dg/concat2.adb (.../tags/gcc_4_7_0_release) (wersja 0) | |
11054 | +++ gcc/testsuite/gnat.dg/concat2.adb (.../branches/gcc-4_7-branch) (wersja 187906) | |
11055 | @@ -0,0 +1,18 @@ | |
11056 | +with Text_IO; use Text_IO; | |
11057 | + | |
11058 | +package body Concat2 is | |
11059 | + | |
11060 | + function Get_Param return String is | |
11061 | + begin | |
11062 | + return ""; | |
11063 | + end; | |
11064 | + | |
11065 | + procedure Browse is | |
11066 | + Mode : constant String := Get_Param; | |
11067 | + Mode_Param : constant String := "MODE=" & Mode; | |
11068 | + begin | |
11069 | + Put_Line (Mode_Param); | |
11070 | + end; | |
11071 | + | |
11072 | +end Concat2; | |
11073 | + | |
11074 | Index: gcc/testsuite/gnat.dg/controlled6_pkg-iterators.adb | |
11075 | =================================================================== | |
11076 | --- gcc/testsuite/gnat.dg/controlled6_pkg-iterators.adb (.../tags/gcc_4_7_0_release) (wersja 0) | |
11077 | +++ gcc/testsuite/gnat.dg/controlled6_pkg-iterators.adb (.../branches/gcc-4_7-branch) (wersja 187906) | |
11078 | @@ -0,0 +1,21 @@ | |
11079 | +package body Controlled6_Pkg.Iterators is | |
11080 | + | |
11081 | + function Find return Iterator_Type is | |
11082 | + Iterator : Iterator_Type; | |
11083 | + begin | |
11084 | + return Iterator; | |
11085 | + end Find; | |
11086 | + | |
11087 | + function Current (Iterator : in Iterator_Type) return T is begin | |
11088 | + return Iterator.Current.Item; | |
11089 | + end Current; | |
11090 | + | |
11091 | + procedure Find_Next (Iterator : in out Iterator_Type) is begin | |
11092 | + Iterator.Current := null; | |
11093 | + end Find_Next; | |
11094 | + | |
11095 | + function Is_Null (Iterator : in Iterator_Type) return Boolean is begin | |
11096 | + return Iterator.Current = null; | |
11097 | + end Is_Null; | |
11098 | + | |
11099 | +end Controlled6_Pkg.Iterators; | |
11100 | Index: gcc/testsuite/gnat.dg/concat2.ads | |
11101 | =================================================================== | |
11102 | --- gcc/testsuite/gnat.dg/concat2.ads (.../tags/gcc_4_7_0_release) (wersja 0) | |
11103 | +++ gcc/testsuite/gnat.dg/concat2.ads (.../branches/gcc-4_7-branch) (wersja 187906) | |
11104 | @@ -0,0 +1,8 @@ | |
11105 | +-- { dg-do compile } | |
11106 | +-- { dg-options "-O" } | |
11107 | + | |
11108 | +package Concat2 is | |
11109 | + | |
11110 | + procedure Browse; | |
11111 | + | |
11112 | +end Concat2; | |
11113 | Index: gcc/testsuite/gnat.dg/controlled6_pkg-iterators.ads | |
11114 | =================================================================== | |
11115 | --- gcc/testsuite/gnat.dg/controlled6_pkg-iterators.ads (.../tags/gcc_4_7_0_release) (wersja 0) | |
11116 | +++ gcc/testsuite/gnat.dg/controlled6_pkg-iterators.ads (.../branches/gcc-4_7-branch) (wersja 187906) | |
11117 | @@ -0,0 +1,22 @@ | |
11118 | +with Ada.Finalization; | |
11119 | + | |
11120 | +generic | |
11121 | + | |
11122 | + I : Integer; | |
11123 | + | |
11124 | +package Controlled6_Pkg.Iterators is | |
11125 | + | |
11126 | + type Iterator_Type is new Ada.Finalization.Controlled with record | |
11127 | + Current : Node_Access_Type; | |
11128 | + end record; | |
11129 | + | |
11130 | + function Find return Iterator_Type; | |
11131 | + | |
11132 | + function Current (Iterator : in Iterator_Type) return T; | |
11133 | + pragma Inline (Current); | |
11134 | + | |
11135 | + procedure Find_Next (Iterator : in out Iterator_Type); | |
11136 | + | |
11137 | + function Is_Null (Iterator : in Iterator_Type) return Boolean; | |
11138 | + | |
11139 | +end Controlled6_Pkg.Iterators; | |
11140 | Index: gcc/testsuite/gnat.dg/lto13.adb | |
11141 | =================================================================== | |
11142 | --- gcc/testsuite/gnat.dg/lto13.adb (.../tags/gcc_4_7_0_release) (wersja 0) | |
11143 | +++ gcc/testsuite/gnat.dg/lto13.adb (.../branches/gcc-4_7-branch) (wersja 187906) | |
11144 | @@ -0,0 +1,9 @@ | |
11145 | +-- { dg-do link } | |
11146 | +-- { dg-options "-g -flto" { target lto } } | |
11147 | + | |
11148 | +with Lto13_Pkg; use Lto13_Pkg; | |
11149 | + | |
11150 | +procedure Lto13 is | |
11151 | +begin | |
11152 | + Proc; | |
11153 | +end; | |
11154 | Index: gcc/testsuite/gnat.dg/controlled6_pkg.ads | |
11155 | =================================================================== | |
11156 | --- gcc/testsuite/gnat.dg/controlled6_pkg.ads (.../tags/gcc_4_7_0_release) (wersja 0) | |
11157 | +++ gcc/testsuite/gnat.dg/controlled6_pkg.ads (.../branches/gcc-4_7-branch) (wersja 187906) | |
11158 | @@ -0,0 +1,15 @@ | |
11159 | +with Ada.Finalization; | |
11160 | + | |
11161 | +generic | |
11162 | + | |
11163 | + type T is private; | |
11164 | + | |
11165 | +package Controlled6_Pkg is | |
11166 | + | |
11167 | + type Node_Type is record | |
11168 | + Item : T; | |
11169 | + end record; | |
11170 | + | |
11171 | + type Node_Access_Type is access Node_Type; | |
11172 | + | |
11173 | +end Controlled6_Pkg; | |
11174 | Index: gcc/testsuite/gnat.dg/lto14.adb | |
11175 | =================================================================== | |
11176 | --- gcc/testsuite/gnat.dg/lto14.adb (.../tags/gcc_4_7_0_release) (wersja 0) | |
11177 | +++ gcc/testsuite/gnat.dg/lto14.adb (.../branches/gcc-4_7-branch) (wersja 187906) | |
11178 | @@ -0,0 +1,7 @@ | |
11179 | +-- { dg-do link } | |
11180 | +-- { dg-options "-largs -f -margs -flto" { target lto } } | |
11181 | + | |
11182 | +procedure Lto14 is | |
11183 | +begin | |
11184 | + null; | |
11185 | +end; | |
11186 | Index: gcc/testsuite/gnat.dg/lto13_pkg.adb | |
11187 | =================================================================== | |
11188 | --- gcc/testsuite/gnat.dg/lto13_pkg.adb (.../tags/gcc_4_7_0_release) (wersja 0) | |
11189 | +++ gcc/testsuite/gnat.dg/lto13_pkg.adb (.../branches/gcc-4_7-branch) (wersja 187906) | |
11190 | @@ -0,0 +1,10 @@ | |
11191 | +package body Lto13_Pkg is | |
11192 | + | |
11193 | + procedure Proc is | |
11194 | + begin | |
11195 | + raise Constraint_Error; | |
11196 | + end; | |
11197 | + | |
11198 | + type T is null record; | |
11199 | + | |
11200 | +end Lto13_Pkg; | |
11201 | Index: gcc/testsuite/gnat.dg/lto13_pkg.ads | |
11202 | =================================================================== | |
11203 | --- gcc/testsuite/gnat.dg/lto13_pkg.ads (.../tags/gcc_4_7_0_release) (wersja 0) | |
11204 | +++ gcc/testsuite/gnat.dg/lto13_pkg.ads (.../branches/gcc-4_7-branch) (wersja 187906) | |
11205 | @@ -0,0 +1,9 @@ | |
11206 | +package Lto13_Pkg is | |
11207 | + | |
11208 | + procedure Proc; | |
11209 | + | |
11210 | +private | |
11211 | + | |
11212 | + type T; | |
11213 | + | |
11214 | +end Lto13_Pkg; | |
11215 | Index: gcc/testsuite/gnat.dg/specs/lto12_pkg.ads | |
11216 | =================================================================== | |
11217 | --- gcc/testsuite/gnat.dg/specs/lto12_pkg.ads (.../tags/gcc_4_7_0_release) (wersja 0) | |
11218 | +++ gcc/testsuite/gnat.dg/specs/lto12_pkg.ads (.../branches/gcc-4_7-branch) (wersja 187906) | |
11219 | @@ -0,0 +1,14 @@ | |
11220 | +-- { dg-excess-errors "cannot generate code" } | |
11221 | + | |
11222 | +package Lto12_Pkg is | |
11223 | + | |
11224 | + type R (Kind : Boolean := False) is record | |
11225 | + case Kind is | |
11226 | + when True => I : Integer; | |
11227 | + when others => null; | |
11228 | + end case; | |
11229 | + end record; | |
11230 | + | |
11231 | + function F return R; | |
11232 | + | |
11233 | +end Lto12_Pkg; | |
11234 | Index: gcc/testsuite/gnat.dg/specs/lto12.ads | |
11235 | =================================================================== | |
11236 | --- gcc/testsuite/gnat.dg/specs/lto12.ads (.../tags/gcc_4_7_0_release) (wersja 0) | |
11237 | +++ gcc/testsuite/gnat.dg/specs/lto12.ads (.../branches/gcc-4_7-branch) (wersja 187906) | |
11238 | @@ -0,0 +1,10 @@ | |
11239 | +-- { dg-do compile } | |
11240 | +-- { dg-options "-flto" { target lto } } | |
11241 | + | |
11242 | +with Lto12_Pkg; use Lto12_Pkg; | |
11243 | + | |
11244 | +package Lto12 is | |
11245 | + | |
11246 | + C : constant R := F; | |
11247 | + | |
11248 | +end Lto12; | |
11249 | Index: gcc/testsuite/gcc.dg/pr49994-3.c | |
11250 | =================================================================== | |
11251 | --- gcc/testsuite/gcc.dg/pr49994-3.c (.../tags/gcc_4_7_0_release) (wersja 187906) | |
11252 | +++ gcc/testsuite/gcc.dg/pr49994-3.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
11253 | @@ -1,8 +1,7 @@ | |
11254 | /* { dg-do compile } */ | |
11255 | -/* { dg-options "-O2 -fsched2-use-superblocks -g" } */ | |
11256 | +/* { dg-options "-O2 -fsched2-use-superblocks -g -w" } */ | |
11257 | /* { dg-options "-O2 -fsched2-use-superblocks -g -mbackchain" { target s390*-*-* } } */ | |
11258 | /* { dg-require-effective-target scheduling } */ | |
11259 | -/* { dg-skip-if "PR testsuite/50722" { ia64-*-*-* hppa*-*-* *-*-hpux* } } */ | |
11260 | ||
11261 | void * | |
11262 | foo (int offset) | |
11263 | Index: gcc/testsuite/gcc.dg/pr52691.c | |
11264 | =================================================================== | |
11265 | --- gcc/testsuite/gcc.dg/pr52691.c (.../tags/gcc_4_7_0_release) (wersja 0) | |
11266 | +++ gcc/testsuite/gcc.dg/pr52691.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
11267 | @@ -0,0 +1,24 @@ | |
11268 | +/* PR middle-end/52691 */ | |
11269 | +/* { dg-do compile } */ | |
11270 | +/* { dg-options "-O2 -fdump-tree-optimized" } */ | |
11271 | + | |
11272 | +#include <stdarg.h> | |
11273 | + | |
11274 | +int | |
11275 | +foo (int a, ...) | |
11276 | +{ | |
11277 | + int b = 0, c = 0; | |
11278 | + va_list ap; | |
11279 | + va_start (ap, a); | |
11280 | + if (a > 1) | |
11281 | + b = va_arg (ap, double); | |
11282 | + if (a > 2) | |
11283 | + c = va_arg (ap, long long); | |
11284 | + va_end (ap); | |
11285 | + return a + b + c; | |
11286 | +} | |
11287 | + | |
11288 | +/* { dg-final { scan-tree-dump "__builtin_next_arg" "optimized" { target { { i?86-*-* x86_64-*-* } && ia32 } } } } */ | |
11289 | +/* { dg-final { scan-tree-dump "__builtin_next_arg" "optimized" { target { powerpc*-*-darwin* powerpc*-*-aix* } } } } */ | |
11290 | +/* { dg-final { scan-tree-dump "__builtin_next_arg" "optimized" { target { powerpc*-*-linux* && lp64 } } } } */ | |
11291 | +/* { dg-final { cleanup-tree-dump "optimized" } } */ | |
11292 | Index: gcc/testsuite/gcc.dg/pr52862.c | |
11293 | =================================================================== | |
11294 | --- gcc/testsuite/gcc.dg/pr52862.c (.../tags/gcc_4_7_0_release) (wersja 0) | |
11295 | +++ gcc/testsuite/gcc.dg/pr52862.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
11296 | @@ -0,0 +1,9 @@ | |
11297 | +/* { dg-do compile } */ | |
11298 | +/* { dg-options "-O" } */ | |
11299 | + | |
11300 | +void ASMAtomicWritePtrVoid(const void *pv); | |
11301 | +void rtThreadDestroy(void) | |
11302 | +{ | |
11303 | + void * const pvTypeChecked = ((void *)0); | |
11304 | + ASMAtomicWritePtrVoid((void *)(pvTypeChecked)); | |
11305 | +} | |
11306 | Index: gcc/testsuite/gcc.dg/pr52880.c | |
11307 | =================================================================== | |
11308 | --- gcc/testsuite/gcc.dg/pr52880.c (.../tags/gcc_4_7_0_release) (wersja 0) | |
11309 | +++ gcc/testsuite/gcc.dg/pr52880.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
11310 | @@ -0,0 +1,10 @@ | |
11311 | +/* PR c/52880 */ | |
11312 | +/* { dg-do compile } */ | |
11313 | +/* { dg-options "-Woverride-init" } */ | |
11314 | + | |
11315 | +struct A { int a; int b; }; | |
11316 | +struct B { struct A c; int d, e; }; | |
11317 | +struct B f = { .c.a = 0, .e = 1, .d = 2, .c.b = 3 }; | |
11318 | +struct C { int g; int h; }; | |
11319 | +struct D { int i; struct C j; int k; }; | |
11320 | +struct D l = { .j.g = 0, .k = 1, .i = 2, .j.h = 3 }; | |
11321 | Index: gcc/testsuite/gcc.dg/split-6.c | |
11322 | =================================================================== | |
11323 | --- gcc/testsuite/gcc.dg/split-6.c (.../tags/gcc_4_7_0_release) (wersja 0) | |
11324 | +++ gcc/testsuite/gcc.dg/split-6.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
11325 | @@ -0,0 +1,53 @@ | |
11326 | +/* { dg-do run } */ | |
11327 | +/* { dg-require-effective-target split_stack } */ | |
11328 | +/* { dg-options "-fsplit-stack" } */ | |
11329 | + | |
11330 | +/* This test is like split-3.c, but tests with a smaller stack frame, | |
11331 | + since that uses a different prologue. */ | |
11332 | + | |
11333 | +#include <stdarg.h> | |
11334 | +#include <stdlib.h> | |
11335 | + | |
11336 | +/* Use a noinline function to ensure that the buffer is not removed | |
11337 | + from the stack. */ | |
11338 | +static void use_buffer (char *buf) __attribute__ ((noinline)); | |
11339 | +static void | |
11340 | +use_buffer (char *buf) | |
11341 | +{ | |
11342 | + buf[0] = '\0'; | |
11343 | +} | |
11344 | + | |
11345 | +/* When using gold, the call to abort will force a stack split. */ | |
11346 | + | |
11347 | +static void | |
11348 | +down (int i, ...) | |
11349 | +{ | |
11350 | + char buf[1]; | |
11351 | + va_list ap; | |
11352 | + | |
11353 | + va_start (ap, i); | |
11354 | + if (va_arg (ap, int) != 1 | |
11355 | + || va_arg (ap, int) != 2 | |
11356 | + || va_arg (ap, int) != 3 | |
11357 | + || va_arg (ap, int) != 4 | |
11358 | + || va_arg (ap, int) != 5 | |
11359 | + || va_arg (ap, int) != 6 | |
11360 | + || va_arg (ap, int) != 7 | |
11361 | + || va_arg (ap, int) != 8 | |
11362 | + || va_arg (ap, int) != 9 | |
11363 | + || va_arg (ap, int) != 10) | |
11364 | + abort (); | |
11365 | + | |
11366 | + if (i > 0) | |
11367 | + { | |
11368 | + use_buffer (buf); | |
11369 | + down (i - 1, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10); | |
11370 | + } | |
11371 | +} | |
11372 | + | |
11373 | +int | |
11374 | +main (void) | |
11375 | +{ | |
11376 | + down (1000, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10); | |
11377 | + return 0; | |
11378 | +} | |
11379 | Index: gcc/testsuite/gcc.dg/pr53174.c | |
11380 | =================================================================== | |
11381 | --- gcc/testsuite/gcc.dg/pr53174.c (.../tags/gcc_4_7_0_release) (wersja 0) | |
11382 | +++ gcc/testsuite/gcc.dg/pr53174.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
11383 | @@ -0,0 +1,67 @@ | |
11384 | +/* PR debug/53174 */ | |
11385 | +/* { dg-do compile } */ | |
11386 | +/* { dg-options "-Ofast -g" } */ | |
11387 | + | |
11388 | +int w, h; | |
11389 | + | |
11390 | +void | |
11391 | +bar (float (*x)[4], int y, int z) | |
11392 | +{ | |
11393 | + int a, b, c, d, e, f, g; | |
11394 | + | |
11395 | + a = 2; | |
11396 | + b = 2; | |
11397 | + c = 274; | |
11398 | + d = 274; | |
11399 | + if (!z) | |
11400 | + a = 12; | |
11401 | + if (!y) | |
11402 | + b = 12; | |
11403 | + if (z + 266 >= h - 2) | |
11404 | + c = 8 + h - z; | |
11405 | + if (y + 266 >= w - 2) | |
11406 | + d = 8 + w - y; | |
11407 | + for (e = a; e < c; e++) | |
11408 | + for (f = b, g = e * 276 + f; f < d; f++, g++) | |
11409 | + { | |
11410 | + float (*h)[4] = x + (g - 277); | |
11411 | + float k = (*h)[0]; | |
11412 | + float l = (*h)[1]; | |
11413 | + float m = (*h)[2]; | |
11414 | + h++; | |
11415 | + k += (*h)[0]; | |
11416 | + l += (*h)[1]; | |
11417 | + m += (*h)[2]; | |
11418 | + h++; | |
11419 | + k += (*h)[0]; | |
11420 | + l += (*h)[1]; | |
11421 | + m += (*h)[2]; | |
11422 | + h += 274; | |
11423 | + k += (*h)[0]; | |
11424 | + l += (*h)[1]; | |
11425 | + m += (*h)[2]; | |
11426 | + h += 2; | |
11427 | + k += (*h)[0]; | |
11428 | + l += (*h)[1]; | |
11429 | + m += (*h)[2]; | |
11430 | + h += 274; | |
11431 | + k += (*h)[0]; | |
11432 | + l += (*h)[1]; | |
11433 | + m += (*h)[2]; | |
11434 | + h++; | |
11435 | + k += (*h)[0]; | |
11436 | + l += (*h)[1]; | |
11437 | + m += (*h)[2]; | |
11438 | + h++; | |
11439 | + k += (*h)[0]; | |
11440 | + l += (*h)[1]; | |
11441 | + m += (*h)[2]; | |
11442 | + k *= 0.125f; | |
11443 | + l *= 0.125f; | |
11444 | + m *= 0.125f; | |
11445 | + k = k + (x[g][1] - l); | |
11446 | + m = m + (x[g][1] - l); | |
11447 | + x[g][0] = k; | |
11448 | + x[g][2] = m; | |
11449 | + } | |
11450 | +} | |
11451 | Index: gcc/testsuite/gcc.dg/dll-8.c | |
11452 | =================================================================== | |
11453 | --- gcc/testsuite/gcc.dg/dll-8.c (.../tags/gcc_4_7_0_release) (wersja 187906) | |
11454 | +++ gcc/testsuite/gcc.dg/dll-8.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
11455 | ||
11456 | Zmiany atrybutów dla: gcc/testsuite/gcc.dg/dll-8.c | |
11457 | ___________________________________________________________________ | |
11458 | Deleted: svn:executable | |
11459 | ## -1 +0,0 ## | |
11460 | -* | |
11461 | \ No newline at end of property | |
11462 | Index: gcc/testsuite/gcc.dg/lto/pr53214_0.c | |
11463 | =================================================================== | |
11464 | --- gcc/testsuite/gcc.dg/lto/pr53214_0.c (.../tags/gcc_4_7_0_release) (wersja 0) | |
11465 | +++ gcc/testsuite/gcc.dg/lto/pr53214_0.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
11466 | @@ -0,0 +1,8 @@ | |
11467 | +/* { dg-lto-do run } */ | |
11468 | + | |
11469 | +double a(double) __attribute__ ((optimize(1), used)); | |
11470 | +double a(double r) | |
11471 | +{ | |
11472 | + return r; | |
11473 | +} | |
11474 | +int main () { return 0; } | |
11475 | Index: gcc/testsuite/gcc.dg/torture/pr52969.c | |
11476 | =================================================================== | |
11477 | --- gcc/testsuite/gcc.dg/torture/pr52969.c (.../tags/gcc_4_7_0_release) (wersja 0) | |
11478 | +++ gcc/testsuite/gcc.dg/torture/pr52969.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
11479 | @@ -0,0 +1,16 @@ | |
11480 | +/* { dg-do compile } */ | |
11481 | +/* { dg-options "-ftree-loop-if-convert-stores" } */ | |
11482 | + | |
11483 | +int a, b; | |
11484 | +float xsum[100]; | |
11485 | +void foo (float *cluster) | |
11486 | +{ | |
11487 | + int j; | |
11488 | + for (; a ; ++j) { | |
11489 | + xsum[j] = cluster[j]; | |
11490 | + if (xsum[j] > 0) | |
11491 | + xsum[j] = 0; | |
11492 | + } | |
11493 | + if (xsum[0]) | |
11494 | + b = 0; | |
11495 | +} | |
11496 | Index: gcc/testsuite/gcc.dg/torture/pr52693.c | |
11497 | =================================================================== | |
11498 | --- gcc/testsuite/gcc.dg/torture/pr52693.c (.../tags/gcc_4_7_0_release) (wersja 0) | |
11499 | +++ gcc/testsuite/gcc.dg/torture/pr52693.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
11500 | @@ -0,0 +1,33 @@ | |
11501 | +/* { dg-do run } */ | |
11502 | + | |
11503 | +struct pair | |
11504 | +{ | |
11505 | + int x; | |
11506 | + int y; | |
11507 | +}; | |
11508 | + | |
11509 | +struct array | |
11510 | +{ | |
11511 | + struct pair elems[ 2 ]; | |
11512 | + unsigned index; | |
11513 | +}; | |
11514 | + | |
11515 | +extern void abort (); | |
11516 | + | |
11517 | +void __attribute__ ((noinline,noclone)) | |
11518 | +test_results (int x1, int y1, int x2, int y2) | |
11519 | +{ | |
11520 | + if (x1 != x2 || y1 != y2) | |
11521 | + abort (); | |
11522 | +} | |
11523 | + | |
11524 | +int | |
11525 | +main (void) | |
11526 | +{ | |
11527 | + struct array arr = {{{1,2}, {3,4}}, 1}; | |
11528 | + struct pair last = arr.elems[arr.index]; | |
11529 | + | |
11530 | + test_results ( last.x, last.y, arr.elems[1].x, arr.elems[1].y); | |
11531 | + | |
11532 | + return 0; | |
11533 | +} | |
11534 | Index: gcc/testsuite/gcc.dg/torture/pr52406.c | |
11535 | =================================================================== | |
11536 | --- gcc/testsuite/gcc.dg/torture/pr52406.c (.../tags/gcc_4_7_0_release) (wersja 0) | |
11537 | +++ gcc/testsuite/gcc.dg/torture/pr52406.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
11538 | @@ -0,0 +1,29 @@ | |
11539 | +/* { dg-do run } */ | |
11540 | + | |
11541 | +extern void abort (void); | |
11542 | +struct { int f1; } a[2]; | |
11543 | + | |
11544 | +int *b, *const k = &a[1].f1; | |
11545 | +static int **c = &b; | |
11546 | + | |
11547 | +int e, f, d; | |
11548 | + | |
11549 | +int | |
11550 | +main () | |
11551 | +{ | |
11552 | + int **l = &b; | |
11553 | + *l = k; | |
11554 | + for (; d <= 0; d++) | |
11555 | + { | |
11556 | + int *j = &e; | |
11557 | + **c = 1; | |
11558 | + *l = k; | |
11559 | + *k ^= 0; | |
11560 | + f = **l; | |
11561 | + *j = f; | |
11562 | + } | |
11563 | + if (e != 1) | |
11564 | + abort (); | |
11565 | + return 0; | |
11566 | +} | |
11567 | + | |
11568 | Index: gcc/testsuite/gcc.dg/torture/pr53272-1.c | |
11569 | =================================================================== | |
11570 | --- gcc/testsuite/gcc.dg/torture/pr53272-1.c (.../tags/gcc_4_7_0_release) (wersja 0) | |
11571 | +++ gcc/testsuite/gcc.dg/torture/pr53272-1.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
11572 | @@ -0,0 +1,39 @@ | |
11573 | +/* { dg-do run } */ | |
11574 | +/* { dg-additional-sources "pr53272-2.c" } */ | |
11575 | +struct rtc_class_ops { | |
11576 | + int (*f)(void *, unsigned int enabled); | |
11577 | +}; | |
11578 | + | |
11579 | +struct rtc_device | |
11580 | +{ | |
11581 | + void *owner; | |
11582 | + const struct rtc_class_ops *ops; | |
11583 | + int ops_lock; | |
11584 | +}; | |
11585 | + | |
11586 | +__attribute__ ((__noinline__, __noclone__)) | |
11587 | +extern int foo(void *); | |
11588 | +__attribute__ ((__noinline__, __noclone__)) | |
11589 | +extern void foobar(void *); | |
11590 | + | |
11591 | +__attribute__ ((__noinline__, __noclone__)) | |
11592 | +int rtc_update_irq_enable(struct rtc_device *rtc, unsigned int enabled) | |
11593 | +{ | |
11594 | + int err; | |
11595 | + asm volatile (""); | |
11596 | + | |
11597 | + err = foo(&rtc->ops_lock); | |
11598 | + | |
11599 | + if (err) | |
11600 | + return err; | |
11601 | + | |
11602 | + if (!rtc->ops) | |
11603 | + err = -19; | |
11604 | + else if (!rtc->ops->f) | |
11605 | + err = -22; | |
11606 | + else | |
11607 | + err = rtc->ops->f(rtc->owner, enabled); | |
11608 | + | |
11609 | + foobar(&rtc->ops_lock); | |
11610 | + return err; | |
11611 | +} | |
11612 | Index: gcc/testsuite/gcc.dg/torture/pr53144.c | |
11613 | =================================================================== | |
11614 | --- gcc/testsuite/gcc.dg/torture/pr53144.c (.../tags/gcc_4_7_0_release) (wersja 0) | |
11615 | +++ gcc/testsuite/gcc.dg/torture/pr53144.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
11616 | @@ -0,0 +1,21 @@ | |
11617 | +/* { dg-do compile } */ | |
11618 | + | |
11619 | +typedef unsigned char __attribute__((vector_size(4))) uvec; | |
11620 | + | |
11621 | +int main (int argc, char *argv[]) { | |
11622 | + int i; | |
11623 | + int x = 0; | |
11624 | + uvec uc0 = (uvec) {argc, 1, 2, 10}; | |
11625 | + unsigned char uc1[4] = {0, 3, 2, 200}; | |
11626 | + signed char ucg[4] = {1, 0, 0, 0 }; | |
11627 | + signed char ucl[4] = {0, 1, 0, 1 }; | |
11628 | + | |
11629 | +#define uc0_ ((unsigned char *)&uc0) | |
11630 | + | |
11631 | + for (i = 0; i < 4; i ++) { | |
11632 | + x |= ucg[i] != (uc0_[i] > uc1[i]); | |
11633 | + x |= ucl[i] != (uc0_[i] < uc1[i]); | |
11634 | + } | |
11635 | + return x; | |
11636 | +} | |
11637 | + | |
11638 | Index: gcc/testsuite/gcc.dg/torture/pr53366-1.c | |
11639 | =================================================================== | |
11640 | --- gcc/testsuite/gcc.dg/torture/pr53366-1.c (.../tags/gcc_4_7_0_release) (wersja 0) | |
11641 | +++ gcc/testsuite/gcc.dg/torture/pr53366-1.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
11642 | @@ -0,0 +1,70 @@ | |
11643 | +/* PR tree-optimization/53366 */ | |
11644 | +/* { dg-do run } */ | |
11645 | + | |
11646 | +extern void abort (void); | |
11647 | + | |
11648 | +struct S { double v[3]; }; | |
11649 | +struct T { struct S r, i; }; | |
11650 | +struct U { struct T j[5]; }; | |
11651 | + | |
11652 | +void | |
11653 | +foo (struct U *__restrict p1, struct U *__restrict p2, | |
11654 | + struct S l1, struct S l2, struct S l3, struct S l4, | |
11655 | + const double _Complex * __restrict x, int y, int z) | |
11656 | +{ | |
11657 | + int i, j; | |
11658 | + while (y < z - 2) | |
11659 | + { | |
11660 | + for (j = 0; j < 5; ++j) | |
11661 | + { | |
11662 | + double a = __real__ x[5 * y + j]; | |
11663 | + double b = __imag__ x[5 * y + j]; | |
11664 | + double c = __real__ x[5 * (y + 2) + j]; | |
11665 | + double d = __imag__ x[5 * (y + 2) + j]; | |
11666 | + double e = __real__ x[5 * (y + 1) + j]; | |
11667 | + double f = __imag__ x[5 * (y + 1) + j]; | |
11668 | + double g = __real__ x[5 * (y + 3) + j]; | |
11669 | + double h = __imag__ x[5 * (y + 3) + j]; | |
11670 | + for (i = 0; i < 3; ++i) | |
11671 | + { | |
11672 | + p1->j[j].r.v[i] += l2.v[i] * a; | |
11673 | + p1->j[j].r.v[i] += l4.v[i] * c; | |
11674 | + p1->j[j].i.v[i] += l2.v[i] * b; | |
11675 | + p1->j[j].i.v[i] += l4.v[i] * d; | |
11676 | + p2->j[j].r.v[i] += l3.v[i] * e; | |
11677 | + p2->j[j].r.v[i] += l1.v[i] * g; | |
11678 | + p2->j[j].i.v[i] += l3.v[i] * f; | |
11679 | + p2->j[j].i.v[i] += l1.v[i] * h; | |
11680 | + } | |
11681 | + } | |
11682 | + y += 4; | |
11683 | + } | |
11684 | +} | |
11685 | + | |
11686 | +_Complex double x[5005]; | |
11687 | +struct U p1, p2; | |
11688 | + | |
11689 | +int | |
11690 | +main () | |
11691 | +{ | |
11692 | + int i, j; | |
11693 | + struct S l1, l2, l3, l4; | |
11694 | + for (i = 0; i < 5005; ++i) | |
11695 | + x[i] = i + 1.0iF * (2 * i); | |
11696 | + for (i = 0; i < 3; ++i) | |
11697 | + { | |
11698 | + l1.v[i] = 1; | |
11699 | + l2.v[i] = 2; | |
11700 | + l3.v[i] = 3; | |
11701 | + l4.v[i] = 4; | |
11702 | + } | |
11703 | + foo (&p1, &p2, l1, l2, l3, l4, x, 5, 1000); | |
11704 | + for (j = 0; j < 5; ++j) | |
11705 | + for (i = 0; i < 3; ++i) | |
11706 | + if (p1.j[j].r.v[i] != 3752430 + j * 1494.0 | |
11707 | + || p1.j[j].i.v[i] != p1.j[j].r.v[i] * 2 | |
11708 | + || p2.j[j].r.v[i] != 2502450 + j * 996.0 | |
11709 | + || p2.j[j].i.v[i] != p2.j[j].r.v[i] * 2) | |
11710 | + abort (); | |
11711 | + return 0; | |
11712 | +} | |
11713 | Index: gcc/testsuite/gcc.dg/torture/pr53272-2.c | |
11714 | =================================================================== | |
11715 | --- gcc/testsuite/gcc.dg/torture/pr53272-2.c (.../tags/gcc_4_7_0_release) (wersja 0) | |
11716 | +++ gcc/testsuite/gcc.dg/torture/pr53272-2.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
11717 | @@ -0,0 +1,39 @@ | |
11718 | +__attribute__ ((__noinline__, __noclone__)) | |
11719 | +int foo(void *x) | |
11720 | +{ | |
11721 | + asm (""); | |
11722 | + return *(int *) x != 42; | |
11723 | +} | |
11724 | + | |
11725 | +__attribute__ ((__noinline__, __noclone__)) | |
11726 | +void foobar(void *x) | |
11727 | +{ | |
11728 | + asm (""); | |
11729 | + if (foo(x)) | |
11730 | + __builtin_abort(); | |
11731 | +} | |
11732 | + | |
11733 | +struct rtc_class_ops { | |
11734 | + int (*f)(void *, unsigned int enabled); | |
11735 | +}; | |
11736 | + | |
11737 | +struct rtc_device | |
11738 | +{ | |
11739 | + void *owner; | |
11740 | + struct rtc_class_ops *ops; | |
11741 | + int ops_lock; | |
11742 | +}; | |
11743 | + | |
11744 | +extern __attribute__ ((__noinline__, __noclone__)) | |
11745 | +int rtc_update_irq_enable(struct rtc_device *rtc, unsigned int); | |
11746 | + | |
11747 | +int main(void) | |
11748 | +{ | |
11749 | + struct rtc_class_ops ops = {(void *) 0}; | |
11750 | + struct rtc_device dev1 = {0, &ops, 42}; | |
11751 | + | |
11752 | + if (rtc_update_irq_enable (&dev1, 1) != -22) | |
11753 | + __builtin_abort (); | |
11754 | + | |
11755 | + __builtin_exit (0); | |
11756 | +} | |
11757 | Index: gcc/testsuite/gcc.dg/torture/pr53120.c | |
11758 | =================================================================== | |
11759 | --- gcc/testsuite/gcc.dg/torture/pr53120.c (.../tags/gcc_4_7_0_release) (wersja 0) | |
11760 | +++ gcc/testsuite/gcc.dg/torture/pr53120.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
11761 | @@ -0,0 +1,110 @@ | |
11762 | +/* { dg-do compile } */ | |
11763 | +/* { dg-options "-fno-tree-sra" } */ | |
11764 | +typedef struct { | |
11765 | + unsigned int en : 1; | |
11766 | + unsigned int bit_order : 1; | |
11767 | + unsigned int scl_io : 1; | |
11768 | + unsigned int scl_inv : 1; | |
11769 | + unsigned int sda0_io : 1; | |
11770 | + unsigned int sda0_idle : 1; | |
11771 | + unsigned int sda1_io : 1; | |
11772 | + unsigned int sda1_idle : 1; | |
11773 | + unsigned int sda2_io : 1; | |
11774 | + unsigned int sda2_idle : 1; | |
11775 | + unsigned int sda3_io : 1; | |
11776 | + unsigned int sda3_idle : 1; | |
11777 | + unsigned int sda_sel : 2; | |
11778 | + unsigned int sen_idle : 1; | |
11779 | + unsigned int sen_inv : 1; | |
11780 | + unsigned int sen_sel : 2; | |
11781 | + unsigned int dummy1 : 14; | |
11782 | +} reg_gio_rw_i2c1_cfg; | |
11783 | + | |
11784 | +typedef struct { | |
11785 | + unsigned int data0 : 8; | |
11786 | + unsigned int data1 : 8; | |
11787 | + unsigned int data2 : 8; | |
11788 | + unsigned int data3 : 8; | |
11789 | +} reg_gio_rw_i2c1_data; | |
11790 | + | |
11791 | +typedef struct { | |
11792 | + unsigned int trf_bits : 6; | |
11793 | + unsigned int switch_dir : 6; | |
11794 | + unsigned int extra_start : 3; | |
11795 | + unsigned int early_end : 1; | |
11796 | + unsigned int start_stop : 1; | |
11797 | + unsigned int ack_dir0 : 1; | |
11798 | + unsigned int ack_dir1 : 1; | |
11799 | + unsigned int ack_dir2 : 1; | |
11800 | + unsigned int ack_dir3 : 1; | |
11801 | + unsigned int ack_dir4 : 1; | |
11802 | + unsigned int ack_dir5 : 1; | |
11803 | + unsigned int ack_bit : 1; | |
11804 | + unsigned int start_bit : 1; | |
11805 | + unsigned int freq : 2; | |
11806 | + unsigned int dummy1 : 5; | |
11807 | +} reg_gio_rw_i2c1_ctrl; | |
11808 | + | |
11809 | +extern reg_gio_rw_i2c1_cfg reg_gio; | |
11810 | +extern reg_gio_rw_i2c1_data reg_data; | |
11811 | +extern int reg_start; | |
11812 | +extern reg_gio_rw_i2c1_ctrl reg_ctrl; | |
11813 | + | |
11814 | +extern void foobar(void); | |
11815 | +extern void foo(int); | |
11816 | +extern void frob(unsigned int); | |
11817 | +extern void bar(int); | |
11818 | +extern void baz(void); | |
11819 | + | |
11820 | +unsigned int f(int *devspec, unsigned int addr) | |
11821 | +{ | |
11822 | + reg_gio_rw_i2c1_ctrl ctrl = {0}; | |
11823 | + reg_gio_rw_i2c1_data data = {0}; | |
11824 | + | |
11825 | + foobar(); | |
11826 | + | |
11827 | + static int first = 1; | |
11828 | + | |
11829 | + if (first) { | |
11830 | + reg_gio_rw_i2c1_cfg cfg = {0}; | |
11831 | + first = 0; | |
11832 | + | |
11833 | + foo(1); | |
11834 | + cfg.sda0_idle = 1; | |
11835 | + cfg.sda0_io = 0; | |
11836 | + cfg.scl_inv = 0; | |
11837 | + cfg.scl_io = 0; | |
11838 | + cfg.bit_order = 1; | |
11839 | + cfg.sda_sel = 0; | |
11840 | + cfg.sen_sel = 0; | |
11841 | + cfg.en = 1; | |
11842 | + reg_gio = cfg; | |
11843 | + } | |
11844 | + | |
11845 | + ctrl.freq = 1; | |
11846 | + ctrl.start_bit = 0; | |
11847 | + ctrl.ack_bit = 1; | |
11848 | + ctrl.ack_dir0 = 0; | |
11849 | + ctrl.ack_dir1 = 0; | |
11850 | + ctrl.ack_dir2 = 0; | |
11851 | + ctrl.ack_dir3 = 1; | |
11852 | + ctrl.ack_dir4 = 0; | |
11853 | + ctrl.ack_dir5 = 0; | |
11854 | + ctrl.start_stop = 1; | |
11855 | + ctrl.early_end = 0; | |
11856 | + ctrl.extra_start = 2; | |
11857 | + ctrl.switch_dir = 8*3; | |
11858 | + ctrl.trf_bits = 8*4; | |
11859 | + reg_ctrl = ctrl; | |
11860 | + frob(0xac); | |
11861 | + data.data0 = devspec[1] & 192; | |
11862 | + data.data1 = addr; | |
11863 | + data.data2 = devspec[1] | 0x01; | |
11864 | + reg_data = data; | |
11865 | + reg_start = 1; | |
11866 | + bar(100); | |
11867 | + data = reg_data; | |
11868 | + baz(); | |
11869 | + | |
11870 | + return data.data3; | |
11871 | +} | |
11872 | Index: gcc/testsuite/gcc.dg/torture/pr53366-2.c | |
11873 | =================================================================== | |
11874 | --- gcc/testsuite/gcc.dg/torture/pr53366-2.c (.../tags/gcc_4_7_0_release) (wersja 0) | |
11875 | +++ gcc/testsuite/gcc.dg/torture/pr53366-2.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
11876 | @@ -0,0 +1,43 @@ | |
11877 | +/* PR tree-optimization/53366 */ | |
11878 | +/* { dg-do run } */ | |
11879 | + | |
11880 | +extern void abort (void); | |
11881 | + | |
11882 | +struct T { float r[3], i[3]; }; | |
11883 | +struct U { struct T j[2]; }; | |
11884 | + | |
11885 | +void __attribute__ ((noinline)) | |
11886 | +foo (struct U *__restrict y, const float _Complex *__restrict x) | |
11887 | +{ | |
11888 | + int i, j; | |
11889 | + for (j = 0; j < 2; ++j) | |
11890 | + { | |
11891 | + float a = __real__ x[j]; | |
11892 | + float b = __imag__ x[j]; | |
11893 | + float c = __real__ x[j + 2]; | |
11894 | + float d = __imag__ x[j + 2]; | |
11895 | + for (i = 0; i < 3; ++i) | |
11896 | + { | |
11897 | + y->j[j].r[i] = y->j[j].r[i] + a + c; | |
11898 | + y->j[j].i[i] = y->j[j].i[i] + b + d; | |
11899 | + } | |
11900 | + } | |
11901 | +} | |
11902 | + | |
11903 | +_Complex float x[4]; | |
11904 | +struct U y; | |
11905 | + | |
11906 | +int | |
11907 | +main () | |
11908 | +{ | |
11909 | + int i, j; | |
11910 | + for (i = 0; i < 4; ++i) | |
11911 | + x[i] = i + 1.0iF * (2 * i); | |
11912 | + foo (&y, x); | |
11913 | + for (j = 0; j < 2; ++j) | |
11914 | + for (i = 0; i < 3; ++i) | |
11915 | + if (y.j[j].r[i] != __real__ (x[j] + x[j + 2]) | |
11916 | + || y.j[j].i[i] != __imag__ (x[j] + x[j + 2])) | |
11917 | + __builtin_abort (); | |
11918 | + return 0; | |
11919 | +} | |
11920 | Index: gcc/testsuite/gcc.dg/torture/pr51071-2.c | |
11921 | =================================================================== | |
11922 | --- gcc/testsuite/gcc.dg/torture/pr51071-2.c (.../tags/gcc_4_7_0_release) (wersja 0) | |
11923 | +++ gcc/testsuite/gcc.dg/torture/pr51071-2.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
11924 | @@ -0,0 +1,38 @@ | |
11925 | +/* { dg-do compile } */ | |
11926 | +/* { dg-options "-fno-delete-null-pointer-checks" } */ | |
11927 | + | |
11928 | +extern struct module __this_module; | |
11929 | +static inline void | |
11930 | +trace_module_get (struct module *mod, unsigned long ip) { } | |
11931 | +struct module; | |
11932 | +static inline __attribute__((no_instrument_function)) | |
11933 | +int try_module_get(struct module *module) | |
11934 | +{ | |
11935 | + int ret = 1; | |
11936 | + if (module) | |
11937 | + { | |
11938 | + if (module_is_live(module)) | |
11939 | + { | |
11940 | + __label__ __here; | |
11941 | + asm(""); | |
11942 | + __here: | |
11943 | + trace_module_get(module, (unsigned long)&&__here); | |
11944 | + } | |
11945 | + else | |
11946 | + ret = 0; | |
11947 | + } | |
11948 | + return ret; | |
11949 | +} | |
11950 | +struct net_device; | |
11951 | +struct net_device_ops { | |
11952 | + int (*ndo_open)(struct net_device *dev); | |
11953 | +}; | |
11954 | +int t3e3_open(struct net_device *dev) | |
11955 | +{ | |
11956 | + int ret = hdlc_open(dev); | |
11957 | + if (ret) | |
11958 | + return ret; | |
11959 | + try_module_get((&__this_module)); | |
11960 | + return 0; | |
11961 | +} | |
11962 | +const struct net_device_ops t3e3_ops = { .ndo_open = t3e3_open }; | |
11963 | Index: gcc/testsuite/gcc.dg/torture/pr52493.c | |
11964 | =================================================================== | |
11965 | --- gcc/testsuite/gcc.dg/torture/pr52493.c (.../tags/gcc_4_7_0_release) (wersja 0) | |
11966 | +++ gcc/testsuite/gcc.dg/torture/pr52493.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
11967 | @@ -0,0 +1,38 @@ | |
11968 | +/* { dg-do compile } */ | |
11969 | + | |
11970 | +struct Time { | |
11971 | + long int sec; | |
11972 | + long usec; | |
11973 | +}; | |
11974 | +struct Flow { | |
11975 | + unsigned short iif; | |
11976 | + struct Time mtime; | |
11977 | +}; | |
11978 | +struct NetFlow { | |
11979 | + unsigned MaxFlows; | |
11980 | + unsigned HeaderFields; | |
11981 | + unsigned short *HeaderFormat; | |
11982 | +}; | |
11983 | +static struct NetFlow *netflow; | |
11984 | +static struct Time start_time; | |
11985 | +static unsigned char emit_packet[1500]; | |
11986 | +inline long int cmpmtime(struct Time *t1, struct Time *t2) | |
11987 | +{ | |
11988 | + return (t1->sec - t2->sec) * 1000 + (t1->usec - t2->usec) / 1000; | |
11989 | +} | |
11990 | +static void fill(int fields, unsigned short *format, | |
11991 | + struct Flow *flow, void *p) | |
11992 | +{ | |
11993 | + int i; | |
11994 | + for (i = 0; i < fields; i++) | |
11995 | + if (format[i] == 21) | |
11996 | + { | |
11997 | + unsigned int __v; | |
11998 | + __v = cmpmtime(&flow->mtime, &start_time); | |
11999 | + *((unsigned int *) p) = __v; | |
12000 | + } | |
12001 | +} | |
12002 | +void emit_thread() | |
12003 | +{ | |
12004 | + fill(netflow->HeaderFields, netflow->HeaderFormat, 0, &emit_packet); | |
12005 | +} | |
12006 | Index: gcc/testsuite/gcc.dg/torture/pr52720.c | |
12007 | =================================================================== | |
12008 | --- gcc/testsuite/gcc.dg/torture/pr52720.c (.../tags/gcc_4_7_0_release) (wersja 0) | |
12009 | +++ gcc/testsuite/gcc.dg/torture/pr52720.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
12010 | @@ -0,0 +1,28 @@ | |
12011 | +/* { dg-do compile } */ | |
12012 | +/* { dg-options "-march=k8-sse3" { target x86_64-*-* } } */ | |
12013 | + | |
12014 | +struct alu_bank_swizzle { | |
12015 | + int hw_gpr[3][4]; | |
12016 | + int hw_cfile_addr[4]; | |
12017 | +}; | |
12018 | +static void init_bank_swizzle(struct alu_bank_swizzle *bs) | |
12019 | +{ | |
12020 | + int i, cycle, component; | |
12021 | + for (cycle = 0; cycle < 3; cycle++) | |
12022 | + for (component = 0; component < 4; component++) | |
12023 | + bs->hw_gpr[cycle][component] = -1; | |
12024 | + for (i = 0; i < 4; i++) | |
12025 | + bs->hw_cfile_addr[i] = -1; | |
12026 | +} | |
12027 | +int check_and_set_bank_swizzle(int max_slots, int *slots) | |
12028 | +{ | |
12029 | + struct alu_bank_swizzle bs; | |
12030 | + int i; | |
12031 | + for (i = 0; i < max_slots; i++) | |
12032 | + { | |
12033 | + init_bank_swizzle(&bs); | |
12034 | + if (slots[i]) | |
12035 | + check_vector(&bs); | |
12036 | + } | |
12037 | +} | |
12038 | + | |
12039 | Index: gcc/testsuite/gcc.dg/torture/pr53408.c | |
12040 | =================================================================== | |
12041 | --- gcc/testsuite/gcc.dg/torture/pr53408.c (.../tags/gcc_4_7_0_release) (wersja 0) | |
12042 | +++ gcc/testsuite/gcc.dg/torture/pr53408.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
12043 | @@ -0,0 +1,20 @@ | |
12044 | +/* { dg-do compile } */ | |
12045 | + | |
12046 | +int a, b, c, d, e; | |
12047 | +void | |
12048 | +fn1 () | |
12049 | +{ | |
12050 | + int f, g; | |
12051 | + char h = 0; | |
12052 | + b = 0; | |
12053 | + for (; b < 32; b++) | |
12054 | + { | |
12055 | + g = h > e ? h : h << 1; | |
12056 | + f = g && a ? 0 : 1; | |
12057 | + h = 1; | |
12058 | + for (; h > 0; h = h + 1) | |
12059 | + c = 0 < h | f; | |
12060 | + } | |
12061 | + if (h) | |
12062 | + d = 0; | |
12063 | +} | |
12064 | Index: gcc/testsuite/gcc.dg/torture/pr52943.c | |
12065 | =================================================================== | |
12066 | --- gcc/testsuite/gcc.dg/torture/pr52943.c (.../tags/gcc_4_7_0_release) (wersja 0) | |
12067 | +++ gcc/testsuite/gcc.dg/torture/pr52943.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
12068 | @@ -0,0 +1,20 @@ | |
12069 | +/* { dg-do run } */ | |
12070 | + | |
12071 | +extern void abort (void); | |
12072 | +int a[] = { 0, 0, 0, 6 }; | |
12073 | + | |
12074 | +int b; | |
12075 | +int | |
12076 | +main () | |
12077 | +{ | |
12078 | + for (;;) | |
12079 | + { | |
12080 | + b = 3; | |
12081 | + for (; b; b -= 1) | |
12082 | + a[b] = a[3] > 1; | |
12083 | + break; | |
12084 | + } | |
12085 | + if (a[1] != 0) | |
12086 | + abort (); | |
12087 | + return 0; | |
12088 | +} | |
12089 | Index: gcc/testsuite/gcc.dg/pr52734.c | |
12090 | =================================================================== | |
12091 | --- gcc/testsuite/gcc.dg/pr52734.c (.../tags/gcc_4_7_0_release) (wersja 0) | |
12092 | +++ gcc/testsuite/gcc.dg/pr52734.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
12093 | @@ -0,0 +1,35 @@ | |
12094 | +/* { dg-do run } */ | |
12095 | +/* { dg-options "-O2" } */ | |
12096 | + | |
12097 | +int bbb = 0; | |
12098 | + | |
12099 | +int __attribute__((noinline,noclone)) aaa(void) | |
12100 | +{ | |
12101 | + ++bbb; | |
12102 | + return 0; | |
12103 | +} | |
12104 | + | |
12105 | +int __attribute__((noinline,noclone)) ccc(void) | |
12106 | +{ | |
12107 | + int ddd; | |
12108 | + /* bbb == 0 */ | |
12109 | + if (aaa()) | |
12110 | + return bbb; | |
12111 | + | |
12112 | + /* bbb == 1 */ | |
12113 | + ddd = bbb; | |
12114 | + /* bbb == ddd == 1 */ | |
12115 | + if (aaa ()) | |
12116 | + return 0; | |
12117 | + /* bbb == 2, ddd == 1 */ | |
12118 | + | |
12119 | + return ddd; | |
12120 | +} | |
12121 | + | |
12122 | +int main(void) | |
12123 | +{ | |
12124 | + if (ccc() != 1) | |
12125 | + __builtin_abort(); | |
12126 | + return 0; | |
12127 | +} | |
12128 | + | |
12129 | Index: gcc/testsuite/gcc.dg/pr53358.c | |
12130 | =================================================================== | |
12131 | --- gcc/testsuite/gcc.dg/pr53358.c (.../tags/gcc_4_7_0_release) (wersja 0) | |
12132 | +++ gcc/testsuite/gcc.dg/pr53358.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
12133 | @@ -0,0 +1,22 @@ | |
12134 | +/* PR target/53358 */ | |
12135 | +/* { dg-do compile } */ | |
12136 | +/* { dg-options "-O2" } */ | |
12137 | +/* { dg-additional-options "-fpic" { target fpic } } */ | |
12138 | +/* { dg-additional-options "-mtune=pentium4" { target { { i?86-*-* x86_64-*-* } && ia32 } } } */ | |
12139 | + | |
12140 | +struct S { unsigned char s, t[17]; }; | |
12141 | +int bar (void); | |
12142 | + | |
12143 | +void | |
12144 | +foo (struct S *x) | |
12145 | +{ | |
12146 | + unsigned char i, z; | |
12147 | + if (bar ()) | |
12148 | + { | |
12149 | + z = bar (); | |
12150 | + bar (); | |
12151 | + x->s += z; | |
12152 | + for (i = 0; i < x->s; i++) | |
12153 | + x->t[i] = bar (); | |
12154 | + } | |
12155 | +} | |
12156 | Index: gcc/testsuite/gcc.dg/tm/indirect-2.c | |
12157 | =================================================================== | |
12158 | --- gcc/testsuite/gcc.dg/tm/indirect-2.c (.../tags/gcc_4_7_0_release) (wersja 0) | |
12159 | +++ gcc/testsuite/gcc.dg/tm/indirect-2.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
12160 | @@ -0,0 +1,15 @@ | |
12161 | +/* { dg-do compile } */ | |
12162 | +/* { dg-options "-fgnu-tm" } */ | |
12163 | + | |
12164 | +void __attribute__((transaction_safe)) | |
12165 | +foo(void); | |
12166 | + | |
12167 | +void __attribute__((transaction_safe)) | |
12168 | +set_fn(void) | |
12169 | +{ | |
12170 | + void __attribute__((transaction_safe)) (*fn)(void); | |
12171 | + fn = foo; | |
12172 | + fn(); | |
12173 | +} | |
12174 | + | |
12175 | +/* { dg-final { scan-assembler "_ITM_getTMCloneSafe" } } */ | |
12176 | Index: gcc/testsuite/gcc.dg/vect/vect-over-widen-1.c | |
12177 | =================================================================== | |
12178 | --- gcc/testsuite/gcc.dg/vect/vect-over-widen-1.c (.../tags/gcc_4_7_0_release) (wersja 187906) | |
12179 | +++ gcc/testsuite/gcc.dg/vect/vect-over-widen-1.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
12180 | @@ -58,7 +58,9 @@ | |
12181 | return 0; | |
12182 | } | |
12183 | ||
12184 | -/* { dg-final { scan-tree-dump-times "vect_recog_over_widening_pattern: detected" 4 "vect" { target {! vect_sizes_32B_16B} } } } */ | |
12185 | +/* { dg-final { scan-tree-dump-times "vect_recog_widen_shift_pattern: detected" 2 "vect" { target vect_widen_shift } } } */ | |
12186 | +/* { dg-final { scan-tree-dump-times "vect_recog_over_widening_pattern: detected" 2 "vect" { target vect_widen_shift } } } */ | |
12187 | +/* { dg-final { scan-tree-dump-times "vect_recog_over_widening_pattern: detected" 4 "vect" { target { { ! vect_sizes_32B_16B } && { ! vect_widen_shift } } } } } */ | |
12188 | /* { dg-final { scan-tree-dump-times "vect_recog_over_widening_pattern: detected" 8 "vect" { target vect_sizes_32B_16B } } } */ | |
12189 | /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */ | |
12190 | /* { dg-final { cleanup-tree-dump "vect" } } */ | |
12191 | Index: gcc/testsuite/gcc.dg/vect/vect-over-widen-1-big-array.c | |
12192 | =================================================================== | |
12193 | --- gcc/testsuite/gcc.dg/vect/vect-over-widen-1-big-array.c (.../tags/gcc_4_7_0_release) (wersja 187906) | |
12194 | +++ gcc/testsuite/gcc.dg/vect/vect-over-widen-1-big-array.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
12195 | @@ -58,7 +58,9 @@ | |
12196 | return 0; | |
12197 | } | |
12198 | ||
12199 | -/* { dg-final { scan-tree-dump-times "vect_recog_over_widening_pattern: detected" 4 "vect" } } */ | |
12200 | +/* { dg-final { scan-tree-dump-times "vect_recog_widen_shift_pattern: detected" 2 "vect" { target vect_widen_shift } } } */ | |
12201 | +/* { dg-final { scan-tree-dump-times "vect_recog_over_widening_pattern: detected" 2 "vect" { target vect_widen_shift } } } */ | |
12202 | +/* { dg-final { scan-tree-dump-times "vect_recog_over_widening_pattern: detected" 4 "vect" { target { ! vect_widen_shift } } } } */ | |
12203 | /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */ | |
12204 | /* { dg-final { cleanup-tree-dump "vect" } } */ | |
12205 | ||
12206 | Index: gcc/testsuite/gcc.dg/vect/vect-over-widen-4.c | |
12207 | =================================================================== | |
12208 | --- gcc/testsuite/gcc.dg/vect/vect-over-widen-4.c (.../tags/gcc_4_7_0_release) (wersja 187906) | |
12209 | +++ gcc/testsuite/gcc.dg/vect/vect-over-widen-4.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
12210 | @@ -62,7 +62,9 @@ | |
12211 | return 0; | |
12212 | } | |
12213 | ||
12214 | -/* { dg-final { scan-tree-dump-times "vect_recog_over_widening_pattern: detected" 4 "vect" { target {! vect_sizes_32B_16B } } } } */ | |
12215 | +/* { dg-final { scan-tree-dump-times "vect_recog_widen_shift_pattern: detected" 2 "vect" { target vect_widen_shift } } } */ | |
12216 | +/* { dg-final { scan-tree-dump-times "vect_recog_over_widening_pattern: detected" 2 "vect" { target vect_widen_shift } } } */ | |
12217 | +/* { dg-final { scan-tree-dump-times "vect_recog_over_widening_pattern: detected" 4 "vect" { target { { ! vect_sizes_32B_16B } && { ! vect_widen_shift } } } } } */ | |
12218 | /* { dg-final { scan-tree-dump-times "vect_recog_over_widening_pattern: detected" 8 "vect" { target vect_sizes_32B_16B } } } */ | |
12219 | /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */ | |
12220 | /* { dg-final { cleanup-tree-dump "vect" } } */ | |
12221 | Index: gcc/testsuite/gcc.dg/vect/vect-over-widen-4-big-array.c | |
12222 | =================================================================== | |
12223 | --- gcc/testsuite/gcc.dg/vect/vect-over-widen-4-big-array.c (.../tags/gcc_4_7_0_release) (wersja 187906) | |
12224 | +++ gcc/testsuite/gcc.dg/vect/vect-over-widen-4-big-array.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
12225 | @@ -62,7 +62,9 @@ | |
12226 | return 0; | |
12227 | } | |
12228 | ||
12229 | -/* { dg-final { scan-tree-dump-times "vect_recog_over_widening_pattern: detected" 4 "vect" } } */ | |
12230 | +/* { dg-final { scan-tree-dump-times "vect_recog_widen_shift_pattern: detected" 2 "vect" { target vect_widen_shift } } } */ | |
12231 | +/* { dg-final { scan-tree-dump-times "vect_recog_over_widening_pattern: detected" 2 "vect" { target vect_widen_shift } } } */ | |
12232 | +/* { dg-final { scan-tree-dump-times "vect_recog_over_widening_pattern: detected" 4 "vect" { target { ! vect_widen_shift } } } } */ | |
12233 | /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */ | |
12234 | /* { dg-final { cleanup-tree-dump "vect" } } */ | |
12235 | ||
12236 | Index: gcc/testsuite/gcc.dg/vect/pr52870.c | |
12237 | =================================================================== | |
12238 | --- gcc/testsuite/gcc.dg/vect/pr52870.c (.../tags/gcc_4_7_0_release) (wersja 0) | |
12239 | +++ gcc/testsuite/gcc.dg/vect/pr52870.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
12240 | @@ -0,0 +1,17 @@ | |
12241 | +/* { dg-do compile } */ | |
12242 | +/* { dg-options "-O1 -ftree-vectorize" } */ | |
12243 | + | |
12244 | +long | |
12245 | +test (int *x) | |
12246 | +{ | |
12247 | + unsigned long sx, xprec; | |
12248 | + | |
12249 | + sx = *x >= 0 ? *x : -*x; | |
12250 | + | |
12251 | + xprec = sx * 64; | |
12252 | + | |
12253 | + if (sx < 16384) | |
12254 | + foo (sx); | |
12255 | + | |
12256 | + return xprec; | |
12257 | +} | |
12258 | Index: gcc/testsuite/gcc.dg/pr53060.c | |
12259 | =================================================================== | |
12260 | --- gcc/testsuite/gcc.dg/pr53060.c (.../tags/gcc_4_7_0_release) (wersja 0) | |
12261 | +++ gcc/testsuite/gcc.dg/pr53060.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
12262 | @@ -0,0 +1,24 @@ | |
12263 | +/* { dg-do run } */ | |
12264 | + | |
12265 | +extern void abort (void); | |
12266 | + | |
12267 | +int f(void) { return 2; } | |
12268 | +unsigned int g(void) { return 5; } | |
12269 | +unsigned int h = 1; | |
12270 | + | |
12271 | +typedef unsigned int vec __attribute__((vector_size(16))); | |
12272 | + | |
12273 | +vec i = { 1, 2, 3, 4}; | |
12274 | + | |
12275 | +vec fv1(void) { return i + (h ? f() : g()); } | |
12276 | +vec fv2(void) { return (h ? f() : g()) + i; } | |
12277 | + | |
12278 | +int main() | |
12279 | +{ | |
12280 | + vec i, j; | |
12281 | + j = fv1(); | |
12282 | + if (j[0] != 3) abort(); | |
12283 | + i = fv2(); | |
12284 | + if (i[0] != 3) abort(); | |
12285 | + return 0; | |
12286 | +} | |
12287 | Index: gcc/testsuite/gcc.dg/Wunused-var-3.c | |
12288 | =================================================================== | |
12289 | --- gcc/testsuite/gcc.dg/Wunused-var-3.c (.../tags/gcc_4_7_0_release) (wersja 0) | |
12290 | +++ gcc/testsuite/gcc.dg/Wunused-var-3.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
12291 | @@ -0,0 +1,34 @@ | |
12292 | +/* PR c/52577 */ | |
12293 | +/* { dg-do compile } */ | |
12294 | +/* { dg-options "-Wunused" } */ | |
12295 | + | |
12296 | +typedef int V __attribute__((vector_size (sizeof (int) * 4))); | |
12297 | + | |
12298 | +void | |
12299 | +f1 (V *p) | |
12300 | +{ | |
12301 | + V mask = { 1, 2, 3, 0 }; | |
12302 | + *p = __builtin_shuffle (*p, mask); | |
12303 | +} | |
12304 | + | |
12305 | +void | |
12306 | +f2 (V *p, V *q) | |
12307 | +{ | |
12308 | + V mask = { 1, 2, 3, 0 }; | |
12309 | + *p = __builtin_shuffle (*p, *q, mask); | |
12310 | +} | |
12311 | + | |
12312 | +void | |
12313 | +f3 (V *p, V *mask) | |
12314 | +{ | |
12315 | + V a = { 1, 2, 3, 0 }; | |
12316 | + *p = __builtin_shuffle (a, *mask); | |
12317 | +} | |
12318 | + | |
12319 | +void | |
12320 | +f4 (V *p, V *mask) | |
12321 | +{ | |
12322 | + V a = { 1, 2, 3, 0 }; | |
12323 | + V b = { 2, 3, 4, 1 }; | |
12324 | + *p = __builtin_shuffle (a, b, *mask); | |
12325 | +} | |
12326 | Index: gcc/testsuite/ChangeLog | |
12327 | =================================================================== | |
12328 | --- gcc/testsuite/ChangeLog (.../tags/gcc_4_7_0_release) (wersja 187906) | |
12329 | +++ gcc/testsuite/ChangeLog (.../branches/gcc-4_7-branch) (wersja 187906) | |
12330 | @@ -1,3 +1,640 @@ | |
12331 | +2012-05-25 Ian Lance Taylor <iant@google.com> | |
12332 | + | |
12333 | + * gcc.dg/split-6.c: New test. | |
12334 | + | |
12335 | +2012-05-25 Eric Botcazou <ebotcazou@adacore.com> | |
12336 | + | |
12337 | + * gnat.dg/lto14.adb: New test. | |
12338 | + | |
12339 | +2012-05-24 Richard Guenther <rguenther@suse.de> | |
12340 | + | |
12341 | + PR middle-end/53460 | |
12342 | + * g++.dg/tree-prof/pr53460.C: New testcase. | |
12343 | + | |
12344 | +2012-05-24 Jakub Jelinek <jakub@redhat.com> | |
12345 | + | |
12346 | + PR tree-optimization/53465 | |
12347 | + * gcc.c-torture/execute/pr53465.c: New test. | |
12348 | + | |
12349 | +2012-05-23 Tobias Burnus <burnus@net-b.de> | |
12350 | + | |
12351 | + PR fortran/53389 | |
12352 | + * gfortran.dg/realloc_on_assign_15.f90: New. | |
12353 | + | |
12354 | +2012-05-22 Richard Guenther <rguenther@suse.de> | |
12355 | + | |
12356 | + PR tree-optimization/53408 | |
12357 | + * gcc.dg/torture/pr53408.c: New testcase. | |
12358 | + | |
12359 | +2012-05-22 Richard Guenther <rguenther@suse.de> | |
12360 | + | |
12361 | + PR middle-end/51071 | |
12362 | + * gcc.dg/torture/pr51071-2.c: New testcase. | |
12363 | + | |
12364 | +2012-05-21 Jakub Jelinek <jakub@redhat.com> | |
12365 | + | |
12366 | + PR tree-optimization/53366 | |
12367 | + * gcc.dg/torture/pr53366-1.c: New test. | |
12368 | + * gcc.dg/torture/pr53366-2.c: New test. | |
12369 | + * gcc.target/i386/pr53366-1.c: New test. | |
12370 | + * gcc.target/i386/pr53366-2.c: New test. | |
12371 | + | |
12372 | + PR tree-optimization/53409 | |
12373 | + * gcc.c-torture/compile/pr53409.c: New test. | |
12374 | + | |
12375 | + PR tree-optimization/53410 | |
12376 | + * gcc.c-torture/compile/pr53410-1.c: New test. | |
12377 | + * gcc.c-torture/compile/pr53410-2.c: New test. | |
12378 | + | |
12379 | +2012-05-21 Joseph Myers <joseph@codesourcery.com> | |
12380 | + | |
12381 | + PR c/53418 | |
12382 | + * gcc.c-torture/compile/pr53418-1.c, | |
12383 | + gcc.c-torture/compile/pr53418-2.c: New tests. | |
12384 | + | |
12385 | +2012-05-21 Patrick Marlier <patrick.marlier@gmail.com> | |
12386 | + | |
12387 | + * gcc.dg/tm/indirect-2.c: New test. | |
12388 | + | |
12389 | +2012-05-21 H.J. Lu <hongjiu.lu@intel.com> | |
12390 | + | |
12391 | + Backport from mainline | |
12392 | + 2012-05-21 Uros Bizjak <ubizjak@gmail.com> | |
12393 | + H.J. Lu <hongjiu.lu@intel.com> | |
12394 | + | |
12395 | + PR target/53416 | |
12396 | + * gcc.target/i386/pr53416.c: New file. | |
12397 | + | |
12398 | +2012-05-20 Eric Botcazou <ebotcazou@adacore.com> | |
12399 | + | |
12400 | + * gnat.dg/lto13.adb: New test. | |
12401 | + * gnat.dg/lto13_pkg.ad[sb]: New helper. | |
12402 | + | |
12403 | +2012-05-18 Eric Botcazou <ebotcazou@adacore.com> | |
12404 | + | |
12405 | + * gnat.dg/specs/lto12.ads: New test. | |
12406 | + * gnat.dg/specs/lto12_pkg.ads: New helper. | |
12407 | + | |
12408 | +2012-05-17 David S. Miller <davem@davemloft.net> | |
12409 | + | |
12410 | + * gfortran.dg/bessel_7.f90: Bump allowed precision to avoid | |
12411 | + failure on sparc-*-linux-gnu. | |
12412 | + | |
12413 | +2012-05-16 Richard Henderson <rth@redhat.com> | |
12414 | + | |
12415 | + PR debug/52727 | |
12416 | + * g++.dg/opt/pr52727.C: New testcase. | |
12417 | + | |
12418 | +2012-05-16 Richard Guenther <rguenther@suse.de> | |
12419 | + | |
12420 | + PR tree-optimization/53364 | |
12421 | + * g++.dg/torture/pr53364.C: New testcase. | |
12422 | + | |
12423 | +2012-05-15 Jakub Jelinek <jakub@redhat.com> | |
12424 | + | |
12425 | + PR target/53358 | |
12426 | + * gcc.dg/pr53358.c: New test. | |
12427 | + | |
12428 | +2012-05-14 Uros Bizjak <ubizjak@gmail.com> | |
12429 | + | |
12430 | + * gcc.target/i386/avx256-unaligned-load-[1234].c: Update scan strings. | |
12431 | + * gcc.target/i386/avx256-unaligned-store-[1234].c: Ditto. | |
12432 | + | |
12433 | +2012-05-12 Eric Botcazou <ebotcazou@adacore.com> | |
12434 | + | |
12435 | + * gnat.dg/null_pointer_deref3.adb: New test. | |
12436 | + | |
12437 | +2012-05-10 Paolo Carlini <paolo.carlini@oracle.com> | |
12438 | + | |
12439 | + PR c++/53301 | |
12440 | + * g++.dg/warn/Wzero-as-null-pointer-constant-6.C: New. | |
12441 | + | |
12442 | +2012-05-10 Eric Botcazou <ebotcazou@adacore.com> | |
12443 | + | |
12444 | + * gnat.dg/lto11.ad[sb]: New test. | |
12445 | + | |
12446 | +2012-05-08 Hans-Peter Nilsson <hp@axis.com> | |
12447 | + | |
12448 | + PR target/53272 | |
12449 | + * gcc.dg/torture/pr53272-1.c, gcc.dg/torture/pr53272-2.c: New test. | |
12450 | + | |
12451 | +2012-05-07 Jakub Jelinek <jakub@redhat.com> | |
12452 | + | |
12453 | + PR tree-optimization/53239 | |
12454 | + * g++.dg/opt/vrp3.C: New test. | |
12455 | + * g++.dg/opt/vrp3-aux.cc: New file. | |
12456 | + * g++.dg/opt/vrp3.h: New file. | |
12457 | + | |
12458 | +2012-05-07 Tobias Burnus <burnus@net-b.de> | |
12459 | + | |
12460 | + Backport from mainline: | |
12461 | + 2012-05-07 Tobias Burnus <burnus@net-b.de> | |
12462 | + | |
12463 | + PR fortran/53255 | |
12464 | + * gfortran.dg/typebound_operator_15.f90: New. | |
12465 | + | |
12466 | +2012-05-05 Tobias Burnus <burnus@net-b.de> | |
12467 | + | |
12468 | + Backport from mainline: | |
12469 | + 2012-05-04 Tobias Burnus <burnus@net-b.de> | |
12470 | + | |
12471 | + PR fortran/53111 | |
12472 | + * gfortran.dg/constructor_7.f90: New. | |
12473 | + * gfortran.dg/constructor_8.f90: New. | |
12474 | + | |
12475 | +2012-05-04 Ulrich Weigand <ulrich.weigand@linaro.org> | |
12476 | + | |
12477 | + Backport from mainline: | |
12478 | + | |
12479 | + 2012-05-04 Ulrich Weigand <ulrich.weigand@linaro.org> | |
12480 | + | |
12481 | + PR tree-optimization/52633 | |
12482 | + * gcc.dg/vect/vect-over-widen-1.c: Two patterns should now be | |
12483 | + recognized as widening shifts instead of over-widening. | |
12484 | + * gcc.dg/vect/vect-over-widen-1-big-array.c: Likewise. | |
12485 | + * gcc.dg/vect/vect-over-widen-4.c: Likewise. | |
12486 | + * gcc.dg/vect/vect-over-widen-4-big-array.c: Likewise. | |
12487 | + * gcc.target/arm/pr52633.c: New test. | |
12488 | + | |
12489 | + 2012-04-10 Ulrich Weigand <ulrich.weigand@linaro.org> | |
12490 | + | |
12491 | + PR tree-optimization/52870 | |
12492 | + * gcc.dg/vect/pr52870.c: New test. | |
12493 | + | |
12494 | +2012-05-04 Richard Guenther <rguenther@suse.de> | |
12495 | + | |
12496 | + * gcc.dg/lto/pr53214_0.c: New testcase. | |
12497 | + | |
12498 | +2012-05-04 Eric Botcazou <ebotcazou@adacore.com> | |
12499 | + | |
12500 | + * gcc.target/ia64/pr48496.c: New test. | |
12501 | + * gcc.target/ia64/pr52657.c: Likewise. | |
12502 | + | |
12503 | +2012-05-03 Michael Meissner <meissner@linux.vnet.ibm.com> | |
12504 | + | |
12505 | + Backport from mainline | |
12506 | + 2012-05-03 Michael Meissner <meissner@linux.vnet.ibm.com> | |
12507 | + | |
12508 | + PR target/53199 | |
12509 | + * gcc.target/powwerpc/pr53199.c: New file. | |
12510 | + | |
12511 | +2012-05-03 Martin Jambor <mjambor@suse.cz> | |
12512 | + | |
12513 | + Backport from mainline | |
12514 | + 2012-05-02 Martin Jambor <mjambor@suse.cz> | |
12515 | + | |
12516 | + PR lto/52605 | |
12517 | + * g++.dg/lto/pr52605_0.C: New test. | |
12518 | + | |
12519 | +2012-05-03 Paolo Carlini <paolo.carlini@oracle.com> | |
12520 | + | |
12521 | + PR c++/53186 | |
12522 | + * g++.dg/other/final2.C: New. | |
12523 | + | |
12524 | +2012-05-03 Jakub Jelinek <jakub@redhat.com> | |
12525 | + | |
12526 | + PR debug/53174 | |
12527 | + * gcc.dg/pr53174.c: New test. | |
12528 | + | |
12529 | + PR target/53187 | |
12530 | + * gcc.target/arm/pr53187.c: New test. | |
12531 | + * gcc.c-torture/compile/pr53187.c: New test. | |
12532 | + | |
12533 | +2012-05-03 Richard Guenther <rguenther@suse.de> | |
12534 | + | |
12535 | + PR tree-optimization/53144 | |
12536 | + * gcc.dg/torture/pr53144.c: New testcase. | |
12537 | + | |
12538 | +2012-05-02 Tobias Burnus <burnus@net-b.de> | |
12539 | + | |
12540 | + Backport from mainline | |
12541 | + 2012-04-16 Tobias Burnus <burnus@net-b.de> | |
12542 | + | |
12543 | + PR fortran/52864 | |
12544 | + * gfortran.dg/pointer_intent_6.f90: New. | |
12545 | + | |
12546 | +2012-05-02 Jakub Jelinek <jakub@redhat.com> | |
12547 | + | |
12548 | + PR tree-optimization/53163 | |
12549 | + * gcc.c-torture/compile/pr53163.c: New test. | |
12550 | + | |
12551 | + PR rtl-optimization/53160 | |
12552 | + * gcc.c-torture/execute/pr53160.c: New test. | |
12553 | + | |
12554 | +2012-04-30 Thomas Koenig <tkoenig@gcc.gnu.org> | |
12555 | + | |
12556 | + PR fortran/53148 | |
12557 | + Backport from trunk | |
12558 | + * gfortran.dg/function_optimize_12.f90: New test. | |
12559 | + | |
12560 | +2012-04-30 Uros Bizjak <ubizjak@gmail.com> | |
12561 | + | |
12562 | + Backport from mainline | |
12563 | + 2012-04-27 Paolo Bonzini <bonzini@gnu.org> | |
12564 | + | |
12565 | + PR target/53138 | |
12566 | + * gcc.c-torture/execute/20120427-1.c: New testcase. | |
12567 | + | |
12568 | +2012-04-26 Hans-Peter Nilsson <hp@axis.com> | |
12569 | + | |
12570 | + PR target/53120 | |
12571 | + * gcc.dg/torture/pr53120.c: New test. | |
12572 | + | |
12573 | +2012-04-25 Jakub Jelinek <jakub@redhat.com> | |
12574 | + | |
12575 | + PR c/52880 | |
12576 | + * gcc.dg/pr52880.c: New test. | |
12577 | + | |
12578 | +2012-04-24 Georg-Johann Lay <avr@gjlay.de> | |
12579 | + | |
12580 | + PR testsuite/52641 | |
12581 | + PR tree-optimizations/52891 | |
12582 | + | |
12583 | + * gcc.c-torture/compile/pr52891-2.c: Fix test for 16-bit int. | |
12584 | + | |
12585 | +2012-04-24 Richard Guenther <rguenther@suse.de> | |
12586 | + | |
12587 | + PR tree-optimization/53085 | |
12588 | + * g++.dg/torture/pr53085.C: New testcase. | |
12589 | + | |
12590 | +2012-04-23 Richard Guenther <rguenther@suse.de> | |
12591 | + | |
12592 | + PR c/53060 | |
12593 | + * gcc.dg/pr53060.c: New testcase. | |
12594 | + | |
12595 | +2012-04-23 Jakub Jelinek <jakub@redhat.com> | |
12596 | + | |
12597 | + PR tree-optimizations/52891 | |
12598 | + * gcc.c-torture/compile/pr52891-1.c: New test. | |
12599 | + * gcc.c-torture/compile/pr52891-2.c: New test. | |
12600 | + | |
12601 | +2012-04-20 Ian Lance Taylor <iant@google.com> | |
12602 | + | |
12603 | + * go.test/go-test.exp (go-set-goarch): Recognize powerpc*-*-*. | |
12604 | + (go-gc-tests): Skip nilptr.go on powerpc*-*-*. | |
12605 | + | |
12606 | +2012-04-17 Paolo Carlini <paolo.carlini@oracle.com> | |
12607 | + | |
12608 | + PR c++/53003 | |
12609 | + * g++.dg/parse/crash59.C: New. | |
12610 | + | |
12611 | +2012-04-16 Jason Merrill <jason@redhat.com> | |
12612 | + | |
12613 | + PR c++/38543 | |
12614 | + * g++.dg/cpp0x/variadic131.C: New. | |
12615 | + | |
12616 | +2012-04-16 Jason Merrill <jason@redhat.com> | |
12617 | + | |
12618 | + PR c++/50830 | |
12619 | + * g++.dg/cpp0x/variadic129.C: New. | |
12620 | + | |
12621 | + PR c++/50303 | |
12622 | + * g++.dg/cpp0x/variadic128.C: New. | |
12623 | + | |
12624 | +2012-04-16 Uros Bizjak <ubizjak@gmail.com> | |
12625 | + | |
12626 | + Backport from mainline | |
12627 | + 2012-04-12 Uros Bizjak <ubizjak@gmail.com> | |
12628 | + | |
12629 | + PR target/52932 | |
12630 | + * gcc.target/i386/avx2-vpermps-1.c (avx2_test): Use __m256i type for | |
12631 | + second function argument. | |
12632 | + * gcc.target/i386/avx2-vpermps-2.c (init_permps): Update declaration. | |
12633 | + (calc_permps): Update declaration. Calculate result correctly. | |
12634 | + (avx2_test): Change src2 type to union256i_d. | |
12635 | + * gcc.target/i386/avx2-vpermd-2.c (calc_permd): Calculate result | |
12636 | + correctly. | |
12637 | + | |
12638 | +2012-04-16 Martin Jambor <mjambor@suse.cz> | |
12639 | + | |
12640 | + Backported from mainline | |
12641 | + | |
12642 | + 2012-04-13 Martin Jambor <mjambor@suse.cz> | |
12643 | + PR middle-end/52939 | |
12644 | + | |
12645 | + * g++.dg/ipa/pr52939.C: New test. | |
12646 | + | |
12647 | +2012-04-15 Jason Merrill <jason@redhat.com> | |
12648 | + | |
12649 | + PR c++/52380 | |
12650 | + * g++.dg/cpp0x/variadic125.C: New. | |
12651 | + | |
12652 | + PR c++/52292 | |
12653 | + * g++.dg/cpp0x/variadic124.C: New. | |
12654 | + | |
12655 | +2012-04-15 Fabien Chêne <fabien@gcc.gnu.org> | |
12656 | + | |
12657 | + PR c++/52465 | |
12658 | + * g++.dg/lookup/using52.C: New. | |
12659 | + | |
12660 | +2012-04-13 Jason Merrill <jason@redhat.com> | |
12661 | + | |
12662 | + PR c++/52824 | |
12663 | + * g++.dg/cpp0x/variadic123.C: New. | |
12664 | + * g++.dg/cpp0x/alias-decl-15.C: Remove dg-errors. | |
12665 | + | |
12666 | +2012-04-11 Jason Merrill <jason@redhat.com> | |
12667 | + | |
12668 | + PR c++/52906 | |
12669 | + * g++.dg/ext/attrib45.C: New. | |
12670 | + | |
12671 | +2012-04-13 Tom de Vries <tom@codesourcery.com> | |
12672 | + | |
12673 | + Backport from mainline r186419. | |
12674 | + | |
12675 | + 2012-04-13 Tom de Vries <tom@codesourcery.com> | |
12676 | + | |
12677 | + * gcc.dg/pr52734.c: New test. | |
12678 | + | |
12679 | +2012-04-13 Richard Guenther <rguenther@suse.de> | |
12680 | + | |
12681 | + PR tree-optimization/52969 | |
12682 | + * gcc.dg/torture/pr52969.c: New testcase. | |
12683 | + | |
12684 | +2012-04-13 Richard Guenther <rguenther@suse.de> | |
12685 | + | |
12686 | + PR c/52862 | |
12687 | + * gcc.dg/pr52862.c: New testcase. | |
12688 | + | |
12689 | +2012-04-12 Michael Meissner <meissner@linux.vnet.ibm.com> | |
12690 | + | |
12691 | + Backport from mainline | |
12692 | + 2012-04-12 Michael Meissner <meissner@linux.vnet.ibm.com> | |
12693 | + | |
12694 | + PR target/52775 | |
12695 | + * gcc.target/powerpc/pr52775.c: New file. | |
12696 | + | |
12697 | +2012-04-12 Richard Guenther <rguenther@suse.de> | |
12698 | + | |
12699 | + PR tree-optimization/52943 | |
12700 | + * gcc.dg/torture/pr52943.c: New testcase. | |
12701 | + | |
12702 | +2012-04-09 Mike Stump <mikestump@comcast.net> | |
12703 | + | |
12704 | + * g++.dg/cpp0x/udlit-raw-op.C: Don't use CRLF endings. | |
12705 | + * gcc.dg/tree-ssa/vrp59.c: Likewise. | |
12706 | + * gcc.dg/tree-ssa/vrp60.c: Likewise. | |
12707 | + * gnat.dg/aggr11.adb: Likewise. | |
12708 | + * gnat.dg/aggr11_pkg.ads: Likewise. | |
12709 | + * gnat.dg/aggr15.adb: Likewise. | |
12710 | + * gnat.dg/aggr15.ads: Likewise. | |
12711 | + * gnat.dg/aggr17.adb: Likewise. | |
12712 | + * gnat.dg/aggr18.adb: Likewise. | |
12713 | + * gnat.dg/array14.adb: Likewise. | |
12714 | + * gnat.dg/array14.ads: Likewise. | |
12715 | + * gnat.dg/array14_pkg.ads: Likewise. | |
12716 | + * gnat.dg/array19.adb: Likewise. | |
12717 | + * gnat.dg/array19.ads: Likewise. | |
12718 | + * gnat.dg/discr27.adb: Likewise. | |
12719 | + * gnat.dg/discr27.ads: Likewise. | |
12720 | + * gnat.dg/discr35.adb: Likewise. | |
12721 | + * gnat.dg/discr35.ads: Likewise. | |
12722 | + * gnat.dg/discr6.adb: Likewise. | |
12723 | + * gnat.dg/discr6_pkg.ads: Likewise. | |
12724 | + * gnat.dg/import1.adb: Likewise. | |
12725 | + * gnat.dg/import1.ads: Likewise. | |
12726 | + * gnat.dg/loop_address2.adb: Likewise. | |
12727 | + * gnat.dg/opt7.adb: Likewise. | |
12728 | + * gnat.dg/opt7.ads: Likewise. | |
12729 | + * gnat.dg/pointer_variable_bounds.adb: Likewise. | |
12730 | + * gnat.dg/pointer_variable_bounds.ads: Likewise. | |
12731 | + * gnat.dg/rep_clause2.adb: Likewise. | |
12732 | + * gnat.dg/rep_clause2.ads: Likewise. | |
12733 | + * gnat.dg/slice2.adb: Likewise. | |
12734 | + * gnat.dg/slice2.ads: Likewise. | |
12735 | + * gnat.dg/slice6.adb: Likewise. | |
12736 | + * gnat.dg/slice6_pkg.ads: Likewise. | |
12737 | + * gnat.dg/specs/unchecked_union2.ads: Likewise. | |
12738 | + * gnat.dg/taft_type2.adb: Likewise. | |
12739 | + * gnat.dg/taft_type2.ads: Likewise. | |
12740 | + * gnat.dg/taft_type2_pkg.ads: Likewise. | |
12741 | + * gnat.dg/volatile10.adb: Likewise. | |
12742 | + * gnat.dg/volatile10_pkg.ads: Likewise. | |
12743 | + | |
12744 | + * gcc.dg/dll-8.c: Remove execute permissions. | |
12745 | + * g++.dg/ext/dllexport5.C: Likewise. | |
12746 | + | |
12747 | +2012-04-09 Eric Botcazou <ebotcazou@adacore.com> | |
12748 | + | |
12749 | + * lib/target-supports.exp (check_effective_target_sparc_v9): New. | |
12750 | + (check_effective_target_sync_long_long): Add SPARC case. | |
12751 | + (check_effective_target_sync_long_long_runtime): Likewise. | |
12752 | + (check_effective_target_sync_int_long): Adjust SPARC case. | |
12753 | + (check_effective_target_sync_char_short): Likewise. | |
12754 | + | |
12755 | +2012-04-07 Thomas Koenig <tkoenig@gcc.gnu.org> | |
12756 | + | |
12757 | + PR fortran/52893 | |
12758 | + Backport from trunk | |
12759 | + * gfortran.dg/function_optimize_11.f90: New test. | |
12760 | + | |
12761 | +2012-04-07 Thomas Koenig <tkoenig@gcc.gnu.org> | |
12762 | + | |
12763 | + PR fortran/52668 | |
12764 | + Backport from trunk | |
12765 | + * gfortran.dg/use_only_6.f90: New test. | |
12766 | + | |
12767 | +2012-04-06 Mike Stump <mikestump@comcast.net> | |
12768 | + | |
12769 | + PR testsuite/50722 | |
12770 | + * gcc.dg/pr49994-3.c: Use -w to squelch non-portable warnings. | |
12771 | + | |
12772 | +2012-04-05 Jason Merrill <jason@redhat.com> | |
12773 | + | |
12774 | + PR c++/52596 | |
12775 | + * g++.dg/template/qualified-id5.C: New. | |
12776 | + | |
12777 | +2012-04-03 Jason Merrill <jason@redhat.com> | |
12778 | + | |
12779 | + PR c++/52796 | |
12780 | + * g++.dg/cpp0x/variadic-value1.C: New. | |
12781 | + | |
12782 | +2012-04-03 Richard Guenther <rguenther@suse.de> | |
12783 | + | |
12784 | + Backport from mainline | |
12785 | + 2012-03-02 Richard Guenther <rguenther@suse.de> | |
12786 | + | |
12787 | + PR tree-optimization/52406 | |
12788 | + * gcc.dg/torture/pr52406.c: New testcase. | |
12789 | + | |
12790 | +2012-04-03 Richard Guenther <rguenther@suse.de> | |
12791 | + | |
12792 | + Backport from mainline | |
12793 | + 2012-03-15 Richard Guenther <rguenther@suse.de> | |
12794 | + | |
12795 | + PR middle-end/52580 | |
12796 | + * gfortran.dg/vect/pr52580.f: New testcase. | |
12797 | + | |
12798 | +2012-04-03 Richard Guenther <rguenther@suse.de> | |
12799 | + | |
12800 | + Backport from mainline | |
12801 | + 2012-03-06 Richard Guenther <rguenther@suse.de> | |
12802 | + | |
12803 | + PR middle-end/52493 | |
12804 | + * gcc.dg/torture/pr52493.c: New testcase. | |
12805 | + | |
12806 | + 2012-03-23 Richard Guenther <rguenther@suse.de> | |
12807 | + | |
12808 | + PR tree-optimization/52678 | |
12809 | + * gfortran.dg/pr52678.f: New testcase. | |
12810 | + | |
12811 | + 2012-03-26 Richard Guenther <rguenther@suse.de> | |
12812 | + | |
12813 | + PR tree-optimization/52701 | |
12814 | + * gfortran.dg/pr52701.f90: New testcase. | |
12815 | + | |
12816 | + 2012-03-30 Richard Guenther <rguenther@suse.de> | |
12817 | + | |
12818 | + PR tree-optimization/52754 | |
12819 | + * gcc.target/i386/pr52754.c: New testcase. | |
12820 | + | |
12821 | +2012-04-03 Jakub Jelinek <jakub@redhat.com> | |
12822 | + | |
12823 | + PR tree-optimization/52835 | |
12824 | + * gfortran.dg/pr52835.f90: New test. | |
12825 | + | |
12826 | +2012-03-31 Eric Botcazou <ebotcazou@adacore.com> | |
12827 | + | |
12828 | + * gnat.dg/controlled6.adb: New test. | |
12829 | + * gnat.dg/controlled6_pkg.ads: New helper. | |
12830 | + * gnat.dg/controlled6_pkg-iterators.ad[sb]: Likewise. | |
12831 | + | |
12832 | +2012-03-29 Meador Inge <meadori@codesourcery.com> | |
12833 | + | |
12834 | + PR c++/52672 | |
12835 | + * g++.dg/cpp0x/constexpr-52672.C: New testcase. | |
12836 | + | |
12837 | +2012-03-29 Paolo Carlini <paolo.carlini@oracle.com> | |
12838 | + | |
12839 | + PR c++/52718 | |
12840 | + * g++.dg/warn/Wzero-as-null-pointer-constant-5.C: New. | |
12841 | + | |
12842 | +2012-03-29 Jason Merrill <jason@redhat.com> | |
12843 | + | |
12844 | + PR c++/52685 | |
12845 | + * g++.dg/template/inherit8.C: New. | |
12846 | + | |
12847 | +2012-03-29 Jakub Jelinek <jakub@redhat.com> | |
12848 | + | |
12849 | + PR c++/52759 | |
12850 | + * g++.dg/ext/weak4.C: New test. | |
12851 | + | |
12852 | +2012-03-29 Jason Merrill <jason@redhat.com> | |
12853 | + | |
12854 | + PR c++/52743 | |
12855 | + * g++.dg/cpp0x/initlist-array3.C: New. | |
12856 | + | |
12857 | +2012-03-28 Jason Merrill <jason@redhat.com> | |
12858 | + | |
12859 | + PR c++/52746 | |
12860 | + * g++.dg/overload/virtual2.C: New. | |
12861 | + | |
12862 | +2012-03-28 Martin Jambor <mjambor@suse.cz> | |
12863 | + | |
12864 | + Backported from mainline | |
12865 | + 2012-03-27 Martin Jambor <mjambor@suse.cz> | |
12866 | + | |
12867 | + PR middle-end/52693 | |
12868 | + * gcc.dg/torture/pr52693.c: New test. | |
12869 | + | |
12870 | +2012-03-28 Jakub Jelinek <jakub@redhat.com> | |
12871 | + | |
12872 | + PR middle-end/52691 | |
12873 | + * gcc.dg/pr52691.c: New test. | |
12874 | + | |
12875 | + PR middle-end/52750 | |
12876 | + * gcc.c-torture/compile/pr52750.c: New test. | |
12877 | + | |
12878 | +2012-03-28 Georg-Johann Lay <avr@gjlay.de> | |
12879 | + | |
12880 | + Backport from 2012-03-28 mainline r185910. | |
12881 | + | |
12882 | + PR target/52692 | |
12883 | + * gcc.target/avr/torture/builtins-2.c: New test. | |
12884 | + | |
12885 | +2012-03-28 Jakub Jelinek <jakub@redhat.com> | |
12886 | + | |
12887 | + PR target/52736 | |
12888 | + * gcc.target/i386/pr52736.c: New test. | |
12889 | + | |
12890 | +2012-03-27 Richard Guenther <rguenther@suse.de> | |
12891 | + | |
12892 | + PR middle-end/52720 | |
12893 | + * gcc.dg/torture/pr52720.c: New testcase. | |
12894 | + | |
12895 | +2012-03-26 Georg-Johann Lay <avr@gjlay.de> | |
12896 | + | |
12897 | + Backport from 2012-03-26 mainline r185793. | |
12898 | + | |
12899 | + * gcc.target/avr/torture/avr-torture.exp (AVR_TORTURE_OPTIONS): | |
12900 | + Add "-Os -flto" to list. | |
12901 | + | |
12902 | +2012-03-25 Eric Botcazou <ebotcazou@adacore.com> | |
12903 | + | |
12904 | + * gnat.dg/concat2.ad[sb]: New test. | |
12905 | + | |
12906 | +2012-03-24 Steven Bosscher <steven@gcc.gnu.org> | |
12907 | + | |
12908 | + PR middle-end/52640 | |
12909 | + * gcc.c-torture/compile/limits-externdecl.c: New test. | |
12910 | + | |
12911 | +2012-03-22 Paolo Carlini <paolo.carlini@oracle.com> | |
12912 | + | |
12913 | + PR c++/52487 | |
12914 | + * g++.dg/cpp0x/lambda/lambda-ice7.C: New. | |
12915 | + | |
12916 | +2012-03-22 Tobias Burnus <burnus@net-b.de> | |
12917 | + | |
12918 | + PR fortran/52452 | |
12919 | + * gfortran.dg/intrinsic_8.f90: New. | |
12920 | + | |
12921 | +2012-03-22 Jakub Jelinek <jakub@redhat.com> | |
12922 | + | |
12923 | + PR c++/52671 | |
12924 | + * g++.dg/ext/attrib44.C: New test. | |
12925 | + | |
12926 | +2012-03-22 Jason Merrill <jason@redhat.com> | |
12927 | + | |
12928 | + * g++.dg/torture/pr52582.C: New. | |
12929 | + | |
12930 | +2012-03-22 Georg-Johann Lay <avr@gjlay.de> | |
12931 | + | |
12932 | + Backport from 2012-03-20 mainline r185583. | |
12933 | + | |
12934 | + * gcc.target/avr/progmem.h (pgm_read_char): Define depending on | |
12935 | + __AVR_HAVE_LPMX__ | |
12936 | + | |
12937 | + Backport from 2012-03-20 mainline r185570. | |
12938 | + | |
12939 | + PR target/49868 | |
12940 | + * gcc.target/avr/torture/addr-space-2.h: New file. | |
12941 | + * gcc.target/avr/torture/addr-space-2-g.h: New test. | |
12942 | + * gcc.target/avr/torture/addr-space-2-0.h: New test. | |
12943 | + * gcc.target/avr/torture/addr-space-2-1.h: New test. | |
12944 | + * gcc.target/avr/torture/addr-space-2-x.h: New test. | |
12945 | + | |
12946 | + Backport from 2012-03-12 mainline r185255. | |
12947 | + | |
12948 | + PR target/49868 | |
12949 | + * gcc.target/avr/torture/addr-space-1.h: New file. | |
12950 | + * gcc.target/avr/torture/addr-space-g.h: New test. | |
12951 | + * gcc.target/avr/torture/addr-space-0.h: New test. | |
12952 | + * gcc.target/avr/torture/addr-space-1.h: New test. | |
12953 | + * gcc.target/avr/torture/addr-space-x.h: New test. | |
12954 | + | |
12955 | +2012-03-22 Jakub Jelinek <jakub@redhat.com> | |
12956 | + | |
12957 | + Backported from mainline | |
12958 | + 2012-03-14 Jakub Jelinek <jakub@redhat.com> | |
12959 | + | |
12960 | + PR c++/52521 | |
12961 | + * g++.dg/cpp0x/udlit-args2.C: New test. | |
12962 | + | |
12963 | + 2012-03-13 Jakub Jelinek <jakub@redhat.com> | |
12964 | + | |
12965 | + PR c/52577 | |
12966 | + * gcc.dg/Wunused-var-3.c: New test. | |
12967 | + | |
12968 | 2012-03-22 Release Manager | |
12969 | ||
12970 | * GCC 4.7.0 released. | |
12971 | Index: gcc/testsuite/g++.dg/ext/weak4.C | |
12972 | =================================================================== | |
12973 | --- gcc/testsuite/g++.dg/ext/weak4.C (.../tags/gcc_4_7_0_release) (wersja 0) | |
12974 | +++ gcc/testsuite/g++.dg/ext/weak4.C (.../branches/gcc-4_7-branch) (wersja 187906) | |
12975 | @@ -0,0 +1,9 @@ | |
12976 | +// PR c++/52759 | |
12977 | +// { dg-do compile } | |
12978 | +// { dg-require-weak "" } | |
12979 | +// { dg-options "" } | |
12980 | +#pragma weak foo | |
12981 | +template <typename T> | |
12982 | +struct A { }; | |
12983 | +template <typename T> | |
12984 | +void bar (A<T> &); | |
12985 | Index: gcc/testsuite/g++.dg/ext/attrib44.C | |
12986 | =================================================================== | |
12987 | --- gcc/testsuite/g++.dg/ext/attrib44.C (.../tags/gcc_4_7_0_release) (wersja 0) | |
12988 | +++ gcc/testsuite/g++.dg/ext/attrib44.C (.../branches/gcc-4_7-branch) (wersja 187906) | |
12989 | @@ -0,0 +1,4 @@ | |
12990 | +// PR c++/52671 | |
12991 | +// { dg-do compile } | |
12992 | +__attribute__ ((deprecated)) enum E { E0 }; // { dg-warning "attribute ignored in declaration of" } | |
12993 | +// { dg-message "must follow the" "" { target *-*-* } 3 } | |
12994 | Index: gcc/testsuite/g++.dg/ext/attrib45.C | |
12995 | =================================================================== | |
12996 | --- gcc/testsuite/g++.dg/ext/attrib45.C (.../tags/gcc_4_7_0_release) (wersja 0) | |
12997 | +++ gcc/testsuite/g++.dg/ext/attrib45.C (.../branches/gcc-4_7-branch) (wersja 187906) | |
12998 | @@ -0,0 +1,3 @@ | |
12999 | +// PR c++/52906 | |
13000 | + | |
13001 | +__attribute__ ((__deprecated__)); // { dg-error "does not declare anything" } | |
13002 | Index: gcc/testsuite/g++.dg/ext/dllexport5.C | |
13003 | =================================================================== | |
13004 | --- gcc/testsuite/g++.dg/ext/dllexport5.C (.../tags/gcc_4_7_0_release) (wersja 187906) | |
13005 | +++ gcc/testsuite/g++.dg/ext/dllexport5.C (.../branches/gcc-4_7-branch) (wersja 187906) | |
13006 | ||
13007 | Zmiany atrybutów dla: gcc/testsuite/g++.dg/ext/dllexport5.C | |
13008 | ___________________________________________________________________ | |
13009 | Deleted: svn:executable | |
13010 | ## -1 +0,0 ## | |
13011 | -* | |
13012 | \ No newline at end of property | |
13013 | Index: gcc/testsuite/g++.dg/opt/vrp3-aux.cc | |
13014 | =================================================================== | |
13015 | --- gcc/testsuite/g++.dg/opt/vrp3-aux.cc (.../tags/gcc_4_7_0_release) (wersja 0) | |
13016 | +++ gcc/testsuite/g++.dg/opt/vrp3-aux.cc (.../branches/gcc-4_7-branch) (wersja 187906) | |
13017 | @@ -0,0 +1,21 @@ | |
13018 | +// { dg-do compile } | |
13019 | +// { dg-options "" } | |
13020 | + | |
13021 | +#include "vrp3.h" | |
13022 | + | |
13023 | +R::R () | |
13024 | +{ | |
13025 | + r1 = r2 = 1; | |
13026 | +} | |
13027 | + | |
13028 | +R::R (int n, int d) | |
13029 | +{ | |
13030 | + r1 = n; | |
13031 | + r2 = d; | |
13032 | +} | |
13033 | + | |
13034 | +int | |
13035 | +R::compare (R const &r, R const &s) | |
13036 | +{ | |
13037 | + return (int) (r.r1 * s.r2 - s.r1 * r.r2); | |
13038 | +} | |
13039 | Index: gcc/testsuite/g++.dg/opt/pr52727.C | |
13040 | =================================================================== | |
13041 | --- gcc/testsuite/g++.dg/opt/pr52727.C (.../tags/gcc_4_7_0_release) (wersja 0) | |
13042 | +++ gcc/testsuite/g++.dg/opt/pr52727.C (.../branches/gcc-4_7-branch) (wersja 187906) | |
13043 | @@ -0,0 +1,45 @@ | |
13044 | +// { dg-do compile } | |
13045 | +// { dg-options "-g -Os" } | |
13046 | + | |
13047 | +int grow (int); | |
13048 | +void fn (int); | |
13049 | +struct A { int a1, a2; }; | |
13050 | +template <typename T> | |
13051 | +struct B | |
13052 | +{ | |
13053 | + A *b; | |
13054 | + ~B () { b3 (b); } | |
13055 | + void b1 (int); | |
13056 | + void b2 (int); | |
13057 | + void b3 (A *); | |
13058 | +}; | |
13059 | +struct C { int c1, c2, c3; bool c4; }; | |
13060 | +int | |
13061 | +bar (int x) | |
13062 | +{ | |
13063 | + int y = x / 6; | |
13064 | + if (y > x / 2) | |
13065 | + return y; | |
13066 | + return 0; | |
13067 | +} | |
13068 | +void baz (double, double); | |
13069 | +void | |
13070 | +foo (const C *x, int y, int z) | |
13071 | +{ | |
13072 | + B<int> p; | |
13073 | + double r = y / 2; | |
13074 | + int w = bar (int (r)); | |
13075 | + double s = y / 2 + 0.5; | |
13076 | + double t = z / 2 + 0.5; | |
13077 | + int u = x->c3; | |
13078 | + int v = (x->c2 + u - 1 - x->c1) / u; | |
13079 | + p.b2 ((2 * v > p.b->a1 || (2 * v < p.b->a2 && 2 * v < (p.b->a1 >> 1))) | |
13080 | + ? grow (0) : p.b->a1); | |
13081 | + for (int i = 0; i <= v; ++i) | |
13082 | + { | |
13083 | + double l = x->c4 ? 4.5 - i * 6.2 / v : (3.1 - i * 31 / v) / 6; | |
13084 | + baz (s + (r - w) * l, t - (r - w) * l); | |
13085 | + } | |
13086 | +} | |
13087 | + | |
13088 | + | |
13089 | Index: gcc/testsuite/g++.dg/opt/vrp3.C | |
13090 | =================================================================== | |
13091 | --- gcc/testsuite/g++.dg/opt/vrp3.C (.../tags/gcc_4_7_0_release) (wersja 0) | |
13092 | +++ gcc/testsuite/g++.dg/opt/vrp3.C (.../branches/gcc-4_7-branch) (wersja 187906) | |
13093 | @@ -0,0 +1,47 @@ | |
13094 | +// PR tree-optimization/53239 | |
13095 | +// { dg-do run } | |
13096 | +// { dg-options "-O2" } | |
13097 | +// { dg-additional-sources "vrp3-aux.cc" } | |
13098 | + | |
13099 | +#include "vrp3.h" | |
13100 | + | |
13101 | +struct M | |
13102 | +{ | |
13103 | + M (R m); | |
13104 | + R val; | |
13105 | + static int compare (M const &, M const &); | |
13106 | +}; | |
13107 | + | |
13108 | +inline M const & | |
13109 | +min (M const & t1, M const & t2) | |
13110 | +{ | |
13111 | + return R::compare (t1.val, t2.val) < 0 ? t1 : t2; | |
13112 | +} | |
13113 | + | |
13114 | +M::M (R m) | |
13115 | +{ | |
13116 | + val = m; | |
13117 | +} | |
13118 | + | |
13119 | +M | |
13120 | +test (M *x) | |
13121 | +{ | |
13122 | + M n (R (0, 0)); | |
13123 | + | |
13124 | + for (int i = 0; i < 2; i++) | |
13125 | + { | |
13126 | + M p = x[i]; | |
13127 | + n = min (n, p); | |
13128 | + } | |
13129 | + | |
13130 | + if (n.val.r2 != 2 || n.val.r1 != 1) | |
13131 | + __builtin_abort (); | |
13132 | + return n; | |
13133 | +} | |
13134 | + | |
13135 | +int | |
13136 | +main () | |
13137 | +{ | |
13138 | + M x[2] = { M (R (1, 2)), M (R (1, 1)) }; | |
13139 | + test (x); | |
13140 | +} | |
13141 | Index: gcc/testsuite/g++.dg/opt/vrp3.h | |
13142 | =================================================================== | |
13143 | --- gcc/testsuite/g++.dg/opt/vrp3.h (.../tags/gcc_4_7_0_release) (wersja 0) | |
13144 | +++ gcc/testsuite/g++.dg/opt/vrp3.h (.../branches/gcc-4_7-branch) (wersja 187906) | |
13145 | @@ -0,0 +1,9 @@ | |
13146 | +struct R | |
13147 | +{ | |
13148 | + long long r1, r2; | |
13149 | + void copy (R const &r) { r1 = r.r1; r2 = r.r2; } | |
13150 | + R (); | |
13151 | + explicit R (int, int); | |
13152 | + R (R const &r) { copy (r); } | |
13153 | + static int compare (R const &, R const &); | |
13154 | +}; | |
13155 | Index: gcc/testsuite/g++.dg/tree-prof/pr53460.C | |
13156 | =================================================================== | |
13157 | --- gcc/testsuite/g++.dg/tree-prof/pr53460.C (.../tags/gcc_4_7_0_release) (wersja 0) | |
13158 | +++ gcc/testsuite/g++.dg/tree-prof/pr53460.C (.../branches/gcc-4_7-branch) (wersja 187906) | |
13159 | @@ -0,0 +1,25 @@ | |
13160 | +// { dg-options "-O" } | |
13161 | + | |
13162 | +template<typename T> class OwnPtr { | |
13163 | +public: | |
13164 | + ~OwnPtr(); | |
13165 | +}; | |
13166 | +template<class T> class GlyphMetricsMap { | |
13167 | +public: | |
13168 | + GlyphMetricsMap() { } | |
13169 | + OwnPtr<int> m_pages; | |
13170 | +}; | |
13171 | +class SimpleFontData { | |
13172 | +public: | |
13173 | + void boundsForGlyph() const; | |
13174 | +}; | |
13175 | +inline __attribute__((__always_inline__)) | |
13176 | +void SimpleFontData::boundsForGlyph() const | |
13177 | +{ | |
13178 | + new GlyphMetricsMap<int>; | |
13179 | +} | |
13180 | +void offsetToMiddleOfGlyph(const SimpleFontData* fontData) | |
13181 | +{ | |
13182 | + fontData->boundsForGlyph(); | |
13183 | +} | |
13184 | +int main() {} | |
13185 | Index: gcc/testsuite/g++.dg/lookup/using52.C | |
13186 | =================================================================== | |
13187 | --- gcc/testsuite/g++.dg/lookup/using52.C (.../tags/gcc_4_7_0_release) (wersja 0) | |
13188 | +++ gcc/testsuite/g++.dg/lookup/using52.C (.../branches/gcc-4_7-branch) (wersja 187906) | |
13189 | @@ -0,0 +1,16 @@ | |
13190 | +// { dg-do compile } | |
13191 | +// PR c++/52645 | |
13192 | + | |
13193 | +class A | |
13194 | +{ | |
13195 | +protected: | |
13196 | + struct B {}; | |
13197 | +}; | |
13198 | + | |
13199 | +class C : A | |
13200 | +{ | |
13201 | +protected: | |
13202 | + using A::B; | |
13203 | + | |
13204 | + struct D : public B {}; | |
13205 | +}; | |
13206 | Index: gcc/testsuite/g++.dg/other/final2.C | |
13207 | =================================================================== | |
13208 | --- gcc/testsuite/g++.dg/other/final2.C (.../tags/gcc_4_7_0_release) (wersja 0) | |
13209 | +++ gcc/testsuite/g++.dg/other/final2.C (.../branches/gcc-4_7-branch) (wersja 187906) | |
13210 | @@ -0,0 +1,27 @@ | |
13211 | +// PR c++/53186 | |
13212 | +// { dg-options "-fdump-tree-original -std=c++11" } | |
13213 | + | |
13214 | +struct F1 | |
13215 | +{ | |
13216 | + virtual void operator()() final; | |
13217 | + virtual operator int() final; | |
13218 | + virtual int operator++() final; | |
13219 | +}; | |
13220 | + | |
13221 | +struct F2 final | |
13222 | +{ | |
13223 | + virtual void operator()(); | |
13224 | + virtual operator int(); | |
13225 | + virtual int operator++(); | |
13226 | +}; | |
13227 | + | |
13228 | +void fooF1(F1& a) { a(); int m = a; ++a; } | |
13229 | +void fooF2(F2& a) { a(); int m = a; ++a; } | |
13230 | + | |
13231 | +// { dg-final { scan-tree-dump-times "F1::operator\\(\\)" 1 "original" } } | |
13232 | +// { dg-final { scan-tree-dump-times "F1::operator int" 1 "original" } } | |
13233 | +// { dg-final { scan-tree-dump-times "F1::operator\\+\\+" 1 "original" } } | |
13234 | +// { dg-final { scan-tree-dump-times "F2::operator\\(\\)" 1 "original" } } | |
13235 | +// { dg-final { scan-tree-dump-times "F2::operator int" 1 "original" } } | |
13236 | +// { dg-final { scan-tree-dump-times "F2::operator\\+\\+" 1 "original" } } | |
13237 | +// { dg-final { cleanup-tree-dump "original" } } | |
13238 | Index: gcc/testsuite/g++.dg/lto/pr52605_0.C | |
13239 | =================================================================== | |
13240 | --- gcc/testsuite/g++.dg/lto/pr52605_0.C (.../tags/gcc_4_7_0_release) (wersja 0) | |
13241 | +++ gcc/testsuite/g++.dg/lto/pr52605_0.C (.../branches/gcc-4_7-branch) (wersja 187906) | |
13242 | @@ -0,0 +1,39 @@ | |
13243 | +// { dg-lto-do link } | |
13244 | +// { dg-lto-options {{-flto -g}} } | |
13245 | + | |
13246 | +extern "C" void abort (void); | |
13247 | + | |
13248 | +class A | |
13249 | +{ | |
13250 | +public: | |
13251 | + virtual int foo (int i); | |
13252 | +}; | |
13253 | + | |
13254 | +int A::foo (int i) | |
13255 | +{ | |
13256 | + return i + 1; | |
13257 | +} | |
13258 | + | |
13259 | +int __attribute__ ((noinline,noclone)) get_input(void) | |
13260 | +{ | |
13261 | + return 1; | |
13262 | +} | |
13263 | + | |
13264 | +int main (int argc, char *argv[]) | |
13265 | +{ | |
13266 | + | |
13267 | + class B : public A | |
13268 | + { | |
13269 | + public: | |
13270 | + int bar (int i) | |
13271 | + { | |
13272 | + return foo (i) + 2; | |
13273 | + } | |
13274 | + }; | |
13275 | + class B b; | |
13276 | + | |
13277 | + if (b.bar (get_input ()) != 4) | |
13278 | + abort (); | |
13279 | + return 0; | |
13280 | +} | |
13281 | + | |
13282 | Index: gcc/testsuite/g++.dg/warn/Wzero-as-null-pointer-constant-5.C | |
13283 | =================================================================== | |
13284 | --- gcc/testsuite/g++.dg/warn/Wzero-as-null-pointer-constant-5.C (.../tags/gcc_4_7_0_release) (wersja 0) | |
13285 | +++ gcc/testsuite/g++.dg/warn/Wzero-as-null-pointer-constant-5.C (.../branches/gcc-4_7-branch) (wersja 187906) | |
13286 | @@ -0,0 +1,20 @@ | |
13287 | +// PR c++/52718 | |
13288 | +// { dg-options "-Wzero-as-null-pointer-constant" } | |
13289 | + | |
13290 | +struct foo | |
13291 | +{ | |
13292 | + foo(void* a = 0) {}; // { dg-warning "zero as null pointer" } | |
13293 | +}; | |
13294 | + | |
13295 | +void* fun(void* a = 0) {}; // { dg-warning "zero as null pointer" } | |
13296 | + | |
13297 | +struct bar: foo | |
13298 | +{ | |
13299 | + bar() {}; | |
13300 | +}; | |
13301 | + | |
13302 | +struct baz | |
13303 | +{ | |
13304 | + baz(const foo& f1 = foo(), | |
13305 | + void* f2 = fun()) {}; | |
13306 | +}; | |
13307 | Index: gcc/testsuite/g++.dg/warn/Wzero-as-null-pointer-constant-6.C | |
13308 | =================================================================== | |
13309 | --- gcc/testsuite/g++.dg/warn/Wzero-as-null-pointer-constant-6.C (.../tags/gcc_4_7_0_release) (wersja 0) | |
13310 | +++ gcc/testsuite/g++.dg/warn/Wzero-as-null-pointer-constant-6.C (.../branches/gcc-4_7-branch) (wersja 187906) | |
13311 | @@ -0,0 +1,6 @@ | |
13312 | +// PR c++/53301 | |
13313 | +// { dg-options "-Wzero-as-null-pointer-constant" } | |
13314 | + | |
13315 | +class x { public: x(int v) {} }; | |
13316 | + | |
13317 | +void foo(const x& = 0); | |
13318 | Index: gcc/testsuite/g++.dg/parse/crash59.C | |
13319 | =================================================================== | |
13320 | --- gcc/testsuite/g++.dg/parse/crash59.C (.../tags/gcc_4_7_0_release) (wersja 0) | |
13321 | +++ gcc/testsuite/g++.dg/parse/crash59.C (.../branches/gcc-4_7-branch) (wersja 187906) | |
13322 | @@ -0,0 +1,3 @@ | |
13323 | +// PR c++/53003 | |
13324 | + | |
13325 | +struct A{ void a{} return b // { dg-error "function definition|expected" } | |
13326 | Index: gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice7.C | |
13327 | =================================================================== | |
13328 | --- gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice7.C (.../tags/gcc_4_7_0_release) (wersja 0) | |
13329 | +++ gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice7.C (.../branches/gcc-4_7-branch) (wersja 187906) | |
13330 | @@ -0,0 +1,9 @@ | |
13331 | +// PR c++/52487 | |
13332 | +// { dg-options "-std=c++0x" } | |
13333 | + | |
13334 | +struct A; // { dg-error "forward declaration" } | |
13335 | + | |
13336 | +void foo(A& a) | |
13337 | +{ | |
13338 | + [=](){a;}; // { dg-error "invalid use of incomplete type" } | |
13339 | +} | |
13340 | Index: gcc/testsuite/g++.dg/cpp0x/alias-decl-15.C | |
13341 | =================================================================== | |
13342 | --- gcc/testsuite/g++.dg/cpp0x/alias-decl-15.C (.../tags/gcc_4_7_0_release) (wersja 187906) | |
13343 | +++ gcc/testsuite/g++.dg/cpp0x/alias-decl-15.C (.../branches/gcc-4_7-branch) (wersja 187906) | |
13344 | @@ -2,7 +2,7 @@ | |
13345 | // { dg-options "-std=c++0x" } | |
13346 | ||
13347 | template<class U, class V> //#1 | |
13348 | -struct foo {}; // { dg-error "provided for|foo" } | |
13349 | +struct foo {}; | |
13350 | ||
13351 | template<class U, class V=char> | |
13352 | struct P {}; | |
13353 | @@ -10,8 +10,8 @@ | |
13354 | template<template<class... U> class... TT> | |
13355 | struct bar { | |
13356 | template<class... Args> | |
13357 | - using mem = P<TT<Args...>...>;//#2 { dg-error "wrong number of|arguments" } | |
13358 | + using mem = P<TT<Args...>...>;//#2 | |
13359 | }; | |
13360 | ||
13361 | -bar<foo>::mem<int, char> b;//#3 { dg-error "invalid type" } | |
13362 | +bar<foo>::mem<int, char> b;//#3 | |
13363 | ||
13364 | Index: gcc/testsuite/g++.dg/cpp0x/variadic131.C | |
13365 | =================================================================== | |
13366 | --- gcc/testsuite/g++.dg/cpp0x/variadic131.C (.../tags/gcc_4_7_0_release) (wersja 0) | |
13367 | +++ gcc/testsuite/g++.dg/cpp0x/variadic131.C (.../branches/gcc-4_7-branch) (wersja 187906) | |
13368 | @@ -0,0 +1,11 @@ | |
13369 | +// PR c++/38543 | |
13370 | +// { dg-do compile { target c++11 } } | |
13371 | + | |
13372 | +template< typename ... T > void foo( T ... args ); | |
13373 | +template<> void foo( ){} | |
13374 | +template<> void foo(int,double){} | |
13375 | +int main() | |
13376 | +{ | |
13377 | + foo( 0, 0.0 ); | |
13378 | + return 55; | |
13379 | +} | |
13380 | Index: gcc/testsuite/g++.dg/cpp0x/constexpr-52672.C | |
13381 | =================================================================== | |
13382 | --- gcc/testsuite/g++.dg/cpp0x/constexpr-52672.C (.../tags/gcc_4_7_0_release) (wersja 0) | |
13383 | +++ gcc/testsuite/g++.dg/cpp0x/constexpr-52672.C (.../branches/gcc-4_7-branch) (wersja 187906) | |
13384 | @@ -0,0 +1,8 @@ | |
13385 | +// PR c++/52672 | |
13386 | +// { dg-do compile } | |
13387 | +// { dg-options "-std=c++11" } | |
13388 | + | |
13389 | +typedef unsigned long * ul_ptr; | |
13390 | +constexpr unsigned long a = *((ul_ptr)0x0); // { dg-error "" } | |
13391 | +constexpr unsigned long b = *((ul_ptr)(*((ul_ptr)0x0))); // { dg-error "" } | |
13392 | +constexpr unsigned long c = *((ul_ptr)*((ul_ptr)(*((ul_ptr)0x0)))); // { dg-error "" } | |
13393 | Index: gcc/testsuite/g++.dg/cpp0x/variadic123.C | |
13394 | =================================================================== | |
13395 | --- gcc/testsuite/g++.dg/cpp0x/variadic123.C (.../tags/gcc_4_7_0_release) (wersja 0) | |
13396 | +++ gcc/testsuite/g++.dg/cpp0x/variadic123.C (.../branches/gcc-4_7-branch) (wersja 187906) | |
13397 | @@ -0,0 +1,14 @@ | |
13398 | +// PR c++/52824 | |
13399 | +// { dg-do compile { target c++11 } } | |
13400 | + | |
13401 | +template<typename G, typename H> | |
13402 | +struct foo | |
13403 | +{}; | |
13404 | + | |
13405 | +template<typename... G> | |
13406 | +struct bar : foo<G...> | |
13407 | +{}; | |
13408 | + | |
13409 | +int main() { | |
13410 | + bar<int, float> f; | |
13411 | +} | |
13412 | Index: gcc/testsuite/g++.dg/cpp0x/variadic124.C | |
13413 | =================================================================== | |
13414 | --- gcc/testsuite/g++.dg/cpp0x/variadic124.C (.../tags/gcc_4_7_0_release) (wersja 0) | |
13415 | +++ gcc/testsuite/g++.dg/cpp0x/variadic124.C (.../branches/gcc-4_7-branch) (wersja 187906) | |
13416 | @@ -0,0 +1,29 @@ | |
13417 | +// PR c++/52292 | |
13418 | +// { dg-options -std=c++11 } | |
13419 | + | |
13420 | +template <template <typename...> class T> | |
13421 | +struct foo { | |
13422 | + template <typename... U> | |
13423 | + foo(T<U...> x) { } | |
13424 | +}; | |
13425 | + | |
13426 | +template <typename T> | |
13427 | +struct bar { | |
13428 | + bar(T x) : value(x) { } | |
13429 | + | |
13430 | + T value; | |
13431 | +}; | |
13432 | + | |
13433 | +struct generic : private foo<bar> { | |
13434 | + template <typename T> | |
13435 | + generic(bar<T> x) : foo(x) | |
13436 | + { | |
13437 | + } | |
13438 | + | |
13439 | +}; | |
13440 | + | |
13441 | +int main() | |
13442 | +{ | |
13443 | + bar<int> x(32); | |
13444 | + generic y(x); // FAILS | |
13445 | +} | |
13446 | Index: gcc/testsuite/g++.dg/cpp0x/initlist-array3.C | |
13447 | =================================================================== | |
13448 | --- gcc/testsuite/g++.dg/cpp0x/initlist-array3.C (.../tags/gcc_4_7_0_release) (wersja 0) | |
13449 | +++ gcc/testsuite/g++.dg/cpp0x/initlist-array3.C (.../branches/gcc-4_7-branch) (wersja 187906) | |
13450 | @@ -0,0 +1,10 @@ | |
13451 | +// PR c++/52743 | |
13452 | +// { dg-do compile { target c++11 } } | |
13453 | + | |
13454 | +void composite (int const (&) [2]); | |
13455 | +void composite (int const (&) [3]); | |
13456 | + | |
13457 | +int main () | |
13458 | +{ | |
13459 | + composite({0,1}); // { dg-error "ambiguous" } | |
13460 | +} | |
13461 | Index: gcc/testsuite/g++.dg/cpp0x/variadic125.C | |
13462 | =================================================================== | |
13463 | --- gcc/testsuite/g++.dg/cpp0x/variadic125.C (.../tags/gcc_4_7_0_release) (wersja 0) | |
13464 | +++ gcc/testsuite/g++.dg/cpp0x/variadic125.C (.../branches/gcc-4_7-branch) (wersja 187906) | |
13465 | @@ -0,0 +1,25 @@ | |
13466 | +// PR c++/52380 | |
13467 | +// { dg-do compile { target c++11 } } | |
13468 | + | |
13469 | +template<typename T> | |
13470 | +struct S | |
13471 | +{ | |
13472 | + template<typename U> | |
13473 | + struct Unary // Line 5 | |
13474 | + {}; | |
13475 | + | |
13476 | + template<unsigned, typename... Args> | |
13477 | + struct Dispatch // Line 9 | |
13478 | + : public Unary<Args...> | |
13479 | + {}; | |
13480 | + | |
13481 | + template<typename... Args> | |
13482 | + struct Variadic | |
13483 | + : public Dispatch<sizeof...(Args), Args...> | |
13484 | + {}; | |
13485 | +}; | |
13486 | + | |
13487 | +int main() | |
13488 | +{ | |
13489 | + S<void>::Variadic<void> z; | |
13490 | +} | |
13491 | Index: gcc/testsuite/g++.dg/cpp0x/variadic-value1.C | |
13492 | =================================================================== | |
13493 | --- gcc/testsuite/g++.dg/cpp0x/variadic-value1.C (.../tags/gcc_4_7_0_release) (wersja 0) | |
13494 | +++ gcc/testsuite/g++.dg/cpp0x/variadic-value1.C (.../branches/gcc-4_7-branch) (wersja 187906) | |
13495 | @@ -0,0 +1,24 @@ | |
13496 | +// PR c++/52796 | |
13497 | +// { dg-do run { target c++11 } } | |
13498 | + | |
13499 | +inline void *operator new(__SIZE_TYPE__ s, void *p) { return p; } | |
13500 | + | |
13501 | +struct A | |
13502 | +{ | |
13503 | + int i; | |
13504 | + template<class... Ts> | |
13505 | + A(Ts&&... ts): i(ts...) { } | |
13506 | +}; | |
13507 | + | |
13508 | +static union { | |
13509 | + unsigned char c[sizeof(A)]; | |
13510 | + int i; | |
13511 | +}; | |
13512 | + | |
13513 | +int main() | |
13514 | +{ | |
13515 | + i = 0xdeadbeef; | |
13516 | + new(c) A; | |
13517 | + if (i != 0) | |
13518 | + __builtin_abort(); | |
13519 | +} | |
13520 | Index: gcc/testsuite/g++.dg/cpp0x/udlit-args2.C | |
13521 | =================================================================== | |
13522 | --- gcc/testsuite/g++.dg/cpp0x/udlit-args2.C (.../tags/gcc_4_7_0_release) (wersja 0) | |
13523 | +++ gcc/testsuite/g++.dg/cpp0x/udlit-args2.C (.../branches/gcc-4_7-branch) (wersja 187906) | |
13524 | @@ -0,0 +1,15 @@ | |
13525 | +// PR c++/52521 | |
13526 | +// { dg-do compile } | |
13527 | +// { dg-options -std=c++11 } | |
13528 | + | |
13529 | +#include <cstddef> | |
13530 | + | |
13531 | +int operator "" _a (const char *); | |
13532 | +int operator "" _a (const char *, std::size_t); | |
13533 | +int a = 123_a; | |
13534 | +int a2 = "abc"_a; | |
13535 | + | |
13536 | +int operator "" _b (const char *, std::size_t); | |
13537 | +int operator "" _b (const char *); | |
13538 | +int b = 123_b; | |
13539 | +int b2 = "abc"_b; | |
13540 | Index: gcc/testsuite/g++.dg/cpp0x/variadic128.C | |
13541 | =================================================================== | |
13542 | --- gcc/testsuite/g++.dg/cpp0x/variadic128.C (.../tags/gcc_4_7_0_release) (wersja 0) | |
13543 | +++ gcc/testsuite/g++.dg/cpp0x/variadic128.C (.../branches/gcc-4_7-branch) (wersja 187906) | |
13544 | @@ -0,0 +1,16 @@ | |
13545 | +// PR c++/50303 | |
13546 | +// { dg-do compile { target c++11 } } | |
13547 | + | |
13548 | +template<typename Interface> | |
13549 | +struct A1 { | |
13550 | +}; | |
13551 | + | |
13552 | +template<template<class I> class... Actions> | |
13553 | +void g2() { | |
13554 | + g2<Actions...>(); | |
13555 | +} | |
13556 | + | |
13557 | +int main() | |
13558 | +{ | |
13559 | + g2<A1>(); | |
13560 | +} | |
13561 | Index: gcc/testsuite/g++.dg/cpp0x/variadic129.C | |
13562 | =================================================================== | |
13563 | --- gcc/testsuite/g++.dg/cpp0x/variadic129.C (.../tags/gcc_4_7_0_release) (wersja 0) | |
13564 | +++ gcc/testsuite/g++.dg/cpp0x/variadic129.C (.../branches/gcc-4_7-branch) (wersja 187906) | |
13565 | @@ -0,0 +1,19 @@ | |
13566 | +// PR c++/50830 | |
13567 | +// { dg-do compile { target c++11 } } | |
13568 | + | |
13569 | +template<template<class> class...> | |
13570 | +struct list_templates {}; | |
13571 | + | |
13572 | +template<class> | |
13573 | +struct aa {}; | |
13574 | + | |
13575 | +template<class... T> | |
13576 | +struct test {}; | |
13577 | + | |
13578 | +template<template<class> class... F, class T> | |
13579 | +struct test<list_templates<F...>, T> | |
13580 | +{ | |
13581 | + struct inner {}; | |
13582 | +}; | |
13583 | + | |
13584 | +test<list_templates<aa>, int> a4; // error | |
13585 | Index: gcc/testsuite/g++.dg/torture/pr53364.C | |
13586 | =================================================================== | |
13587 | --- gcc/testsuite/g++.dg/torture/pr53364.C (.../tags/gcc_4_7_0_release) (wersja 0) | |
13588 | +++ gcc/testsuite/g++.dg/torture/pr53364.C (.../branches/gcc-4_7-branch) (wersja 187906) | |
13589 | @@ -0,0 +1,37 @@ | |
13590 | +// { dg-do run } | |
13591 | + | |
13592 | +extern "C" void abort (void); | |
13593 | + | |
13594 | +template<typename _Tp> | |
13595 | +inline const _Tp& | |
13596 | +min(const _Tp& __a, const _Tp& __b) | |
13597 | +{ | |
13598 | + if (__b < __a) | |
13599 | + return __b; | |
13600 | + return __a; | |
13601 | +} | |
13602 | + | |
13603 | +struct A | |
13604 | +{ | |
13605 | + int m_x; | |
13606 | + | |
13607 | + explicit A(int x) : m_x(x) {} | |
13608 | + operator int() const { return m_x; } | |
13609 | +}; | |
13610 | + | |
13611 | +struct B : public A | |
13612 | +{ | |
13613 | +public: | |
13614 | + explicit B(int x) : A(x) {} | |
13615 | +}; | |
13616 | + | |
13617 | +int data = 1; | |
13618 | + | |
13619 | +int main() | |
13620 | +{ | |
13621 | + B b = B(10); | |
13622 | + b = min(b, B(data)); | |
13623 | + if (b != 1) | |
13624 | + abort (); | |
13625 | + return 0; | |
13626 | +} | |
13627 | Index: gcc/testsuite/g++.dg/torture/pr53085.C | |
13628 | =================================================================== | |
13629 | --- gcc/testsuite/g++.dg/torture/pr53085.C (.../tags/gcc_4_7_0_release) (wersja 0) | |
13630 | +++ gcc/testsuite/g++.dg/torture/pr53085.C (.../branches/gcc-4_7-branch) (wersja 187906) | |
13631 | @@ -0,0 +1,17 @@ | |
13632 | +// { dg-do compile } | |
13633 | +// { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } { "" } } | |
13634 | +// { dg-options "-fdump-tree-optimized" } | |
13635 | + | |
13636 | +class aa{ | |
13637 | + void f(); | |
13638 | +private: | |
13639 | + volatile int a; | |
13640 | +}; | |
13641 | + | |
13642 | +void aa::f(){ | |
13643 | + a=1; | |
13644 | + a=1; | |
13645 | +} | |
13646 | + | |
13647 | +// { dg-final { scan-tree-dump-times "a ={v} 1;" 2 "optimized" } } | |
13648 | +// { dg-final { cleanup-tree-dump "optimized" } } | |
13649 | Index: gcc/testsuite/g++.dg/torture/pr52582.C | |
13650 | =================================================================== | |
13651 | --- gcc/testsuite/g++.dg/torture/pr52582.C (.../tags/gcc_4_7_0_release) (wersja 0) | |
13652 | +++ gcc/testsuite/g++.dg/torture/pr52582.C (.../branches/gcc-4_7-branch) (wersja 187906) | |
13653 | @@ -0,0 +1,23 @@ | |
13654 | +// PR c++/52582 | |
13655 | + | |
13656 | +inline void *operator new (__SIZE_TYPE__, void *p) throw () | |
13657 | +{ | |
13658 | + return p; | |
13659 | +} | |
13660 | +struct B | |
13661 | +{ | |
13662 | + virtual ~B (); | |
13663 | + B (); | |
13664 | +}; | |
13665 | +struct A : B | |
13666 | +{ | |
13667 | + A () : B () {} | |
13668 | + virtual void bar (); | |
13669 | +}; | |
13670 | +void | |
13671 | +foo () | |
13672 | +{ | |
13673 | + char a[64]; | |
13674 | + B *b = new (&a) A (); | |
13675 | + b->~B (); | |
13676 | +} | |
13677 | Index: gcc/testsuite/g++.dg/ipa/pr52939.C | |
13678 | =================================================================== | |
13679 | --- gcc/testsuite/g++.dg/ipa/pr52939.C (.../tags/gcc_4_7_0_release) (wersja 0) | |
13680 | +++ gcc/testsuite/g++.dg/ipa/pr52939.C (.../branches/gcc-4_7-branch) (wersja 187906) | |
13681 | @@ -0,0 +1,58 @@ | |
13682 | +/* Verify that we do not ICE on invalid devirtualizations (which might | |
13683 | + be OK at run-time because never executed). */ | |
13684 | +/* { dg-do run } */ | |
13685 | +/* { dg-options "-O3 -fno-early-inlining -fno-inline" } */ | |
13686 | + | |
13687 | +extern "C" void abort (void); | |
13688 | + | |
13689 | +class A | |
13690 | +{ | |
13691 | +public: | |
13692 | + int data; | |
13693 | + virtual int foo (int i); | |
13694 | +}; | |
13695 | + | |
13696 | +class B : public A | |
13697 | +{ | |
13698 | +public: | |
13699 | + virtual int foo (int i); | |
13700 | + virtual int bar (int i); | |
13701 | +}; | |
13702 | + | |
13703 | +int A::foo (int i) | |
13704 | +{ | |
13705 | + return i + 1; | |
13706 | +} | |
13707 | + | |
13708 | +int B::foo (int i) | |
13709 | +{ | |
13710 | + return i + 2; | |
13711 | +} | |
13712 | + | |
13713 | +int B::bar (int i) | |
13714 | +{ | |
13715 | + return i + 3; | |
13716 | +} | |
13717 | + | |
13718 | +static int middleman (class A *obj, int i) | |
13719 | +{ | |
13720 | + class B *b = (class B *) obj; | |
13721 | + | |
13722 | + if (i != 1) | |
13723 | + return b->bar (i); | |
13724 | + else | |
13725 | + return i; | |
13726 | +} | |
13727 | + | |
13728 | +int __attribute__ ((noinline,noclone)) get_input(void) | |
13729 | +{ | |
13730 | + return 1; | |
13731 | +} | |
13732 | + | |
13733 | +int main (int argc, char *argv[]) | |
13734 | +{ | |
13735 | + class A o; | |
13736 | + if (middleman (&o, get_input ()) != 1) | |
13737 | + abort (); | |
13738 | + return 0; | |
13739 | +} | |
13740 | Index: gcc/testsuite/g++.dg/overload/virtual2.C | |
13741 | =================================================================== | |
13742 | --- gcc/testsuite/g++.dg/overload/virtual2.C (.../tags/gcc_4_7_0_release) (wersja 0) | |
13743 | +++ gcc/testsuite/g++.dg/overload/virtual2.C (.../branches/gcc-4_7-branch) (wersja 187906) | |
13744 | @@ -0,0 +1,31 @@ | |
13745 | +// PR c++/52746 | |
13746 | +// { dg-do run } | |
13747 | + | |
13748 | +extern "C" int printf(const char*,...); | |
13749 | +extern "C" void abort(); | |
13750 | +bool db; | |
13751 | + | |
13752 | +struct A | |
13753 | +{ | |
13754 | + virtual ~A() {} | |
13755 | +}; | |
13756 | + | |
13757 | +struct B : public A | |
13758 | +{ | |
13759 | + virtual ~B() { db = true; } | |
13760 | +}; | |
13761 | + | |
13762 | +template<int> void test() | |
13763 | +{ | |
13764 | + B * b = new B; | |
13765 | + A * a = b; | |
13766 | + a->~A(); | |
13767 | + ::operator delete(b); | |
13768 | +} | |
13769 | + | |
13770 | +int main() | |
13771 | +{ | |
13772 | + test<0>(); | |
13773 | + if (!db) | |
13774 | + abort(); | |
13775 | +} | |
13776 | Index: gcc/testsuite/g++.dg/template/inherit8.C | |
13777 | =================================================================== | |
13778 | --- gcc/testsuite/g++.dg/template/inherit8.C (.../tags/gcc_4_7_0_release) (wersja 0) | |
13779 | +++ gcc/testsuite/g++.dg/template/inherit8.C (.../branches/gcc-4_7-branch) (wersja 187906) | |
13780 | @@ -0,0 +1,13 @@ | |
13781 | +// PR c++/52685 | |
13782 | + | |
13783 | +template <typename T> | |
13784 | +struct A | |
13785 | +{ | |
13786 | + template <typename U> | |
13787 | + struct B : public A <B<U> > | |
13788 | + { | |
13789 | + struct C : public B<U> | |
13790 | + { | |
13791 | + }; | |
13792 | + }; | |
13793 | +}; | |
13794 | Index: gcc/testsuite/g++.dg/template/qualified-id5.C | |
13795 | =================================================================== | |
13796 | --- gcc/testsuite/g++.dg/template/qualified-id5.C (.../tags/gcc_4_7_0_release) (wersja 0) | |
13797 | +++ gcc/testsuite/g++.dg/template/qualified-id5.C (.../branches/gcc-4_7-branch) (wersja 187906) | |
13798 | @@ -0,0 +1,17 @@ | |
13799 | +// PR c++/52596 | |
13800 | + | |
13801 | +struct msgpack_zone_finalizer_array { | |
13802 | + int* tail; | |
13803 | +}; | |
13804 | +struct msgpack_zone { | |
13805 | + msgpack_zone_finalizer_array finalizer_array; | |
13806 | +}; | |
13807 | +struct zone : public msgpack_zone { | |
13808 | + template <typename T> T* allocate(); | |
13809 | + | |
13810 | +}; | |
13811 | +template <typename T> | |
13812 | +T* zone::allocate() | |
13813 | +{ | |
13814 | + --msgpack_zone::finalizer_array.tail; | |
13815 | +} | |
13816 | Index: gcc/cp/typeck.c | |
13817 | =================================================================== | |
13818 | --- gcc/cp/typeck.c (.../tags/gcc_4_7_0_release) (wersja 187906) | |
13819 | +++ gcc/cp/typeck.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
13820 | @@ -2410,6 +2410,11 @@ | |
13821 | tf_warning_or_error); | |
13822 | expr = (adjust_result_of_qualified_name_lookup | |
13823 | (expr, dtor_type, object_type)); | |
13824 | + if (scope == NULL_TREE) | |
13825 | + /* We need to call adjust_result_of_qualified_name_lookup in case the | |
13826 | + destructor names a base class, but we unset BASELINK_QUALIFIED_P so | |
13827 | + that we still get virtual function binding. */ | |
13828 | + BASELINK_QUALIFIED_P (expr) = false; | |
13829 | return expr; | |
13830 | } | |
13831 | ||
13832 | Index: gcc/cp/class.c | |
13833 | =================================================================== | |
13834 | --- gcc/cp/class.c (.../tags/gcc_4_7_0_release) (wersja 187906) | |
13835 | +++ gcc/cp/class.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
13836 | @@ -3145,8 +3145,9 @@ | |
13837 | CLASSTYPE_NON_AGGREGATE (t) = 1; | |
13838 | ||
13839 | /* If at least one non-static data member is non-literal, the whole | |
13840 | - class becomes non-literal. */ | |
13841 | - if (!literal_type_p (type)) | |
13842 | + class becomes non-literal. Note: if the type is incomplete we | |
13843 | + will complain later on. */ | |
13844 | + if (COMPLETE_TYPE_P (type) && !literal_type_p (type)) | |
13845 | CLASSTYPE_LITERAL_P (t) = false; | |
13846 | ||
13847 | /* A standard-layout class is a class that: | |
13848 | Index: gcc/cp/decl.c | |
13849 | =================================================================== | |
13850 | --- gcc/cp/decl.c (.../tags/gcc_4_7_0_release) (wersja 187906) | |
13851 | +++ gcc/cp/decl.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
13852 | @@ -4216,10 +4216,11 @@ | |
13853 | error ("%<constexpr%> cannot be used for type declarations"); | |
13854 | } | |
13855 | ||
13856 | - if (declspecs->attributes) | |
13857 | + if (declspecs->attributes && declared_type) | |
13858 | { | |
13859 | location_t loc = input_location; | |
13860 | - if (!CLASSTYPE_TEMPLATE_INSTANTIATION (declared_type)) | |
13861 | + if (!CLASS_TYPE_P (declared_type) | |
13862 | + || !CLASSTYPE_TEMPLATE_INSTANTIATION (declared_type)) | |
13863 | /* For a non-template class, use the name location; for a template | |
13864 | class (an explicit instantiation), use the current location. */ | |
13865 | input_location = location_of (declared_type); | |
13866 | @@ -4419,7 +4420,8 @@ | |
13867 | } | |
13868 | ||
13869 | /* If #pragma weak was used, mark the decl weak now. */ | |
13870 | - maybe_apply_pragma_weak (decl); | |
13871 | + if (!processing_template_decl) | |
13872 | + maybe_apply_pragma_weak (decl); | |
13873 | ||
13874 | if (TREE_CODE (decl) == FUNCTION_DECL | |
13875 | && DECL_DECLARED_INLINE_P (decl) | |
13876 | @@ -10574,6 +10576,17 @@ | |
13877 | return error_mark_node; | |
13878 | } | |
13879 | ||
13880 | + if (warn_zero_as_null_pointer_constant | |
13881 | + && c_inhibit_evaluation_warnings == 0 | |
13882 | + && (TYPE_PTR_P (decl_type) || TYPE_PTR_TO_MEMBER_P (decl_type)) | |
13883 | + && null_ptr_cst_p (arg) | |
13884 | + && !NULLPTR_TYPE_P (TREE_TYPE (arg))) | |
13885 | + { | |
13886 | + warning (OPT_Wzero_as_null_pointer_constant, | |
13887 | + "zero as null pointer constant"); | |
13888 | + return nullptr_node; | |
13889 | + } | |
13890 | + | |
13891 | /* [dcl.fct.default] | |
13892 | ||
13893 | Local variables shall not be used in default argument | |
13894 | Index: gcc/cp/method.c | |
13895 | =================================================================== | |
13896 | --- gcc/cp/method.c (.../tags/gcc_4_7_0_release) (wersja 187906) | |
13897 | +++ gcc/cp/method.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
13898 | @@ -1590,6 +1590,7 @@ | |
13899 | DECL_DELETED_FN (fn) = deleted_p; | |
13900 | DECL_DECLARED_CONSTEXPR_P (fn) = constexpr_p; | |
13901 | } | |
13902 | + DECL_EXTERNAL (fn) = true; | |
13903 | DECL_NOT_REALLY_EXTERN (fn) = 1; | |
13904 | DECL_DECLARED_INLINE_P (fn) = 1; | |
13905 | gcc_assert (!TREE_USED (fn)); | |
13906 | Index: gcc/cp/tree.c | |
13907 | =================================================================== | |
13908 | --- gcc/cp/tree.c (.../tags/gcc_4_7_0_release) (wersja 187906) | |
13909 | +++ gcc/cp/tree.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
13910 | @@ -150,8 +150,14 @@ | |
13911 | /* A scope ref in a template, left as SCOPE_REF to support later | |
13912 | access checking. */ | |
13913 | case SCOPE_REF: | |
13914 | - gcc_assert (!type_dependent_expression_p (CONST_CAST_TREE(ref))); | |
13915 | - return lvalue_kind (TREE_OPERAND (ref, 1)); | |
13916 | + { | |
13917 | + tree op = TREE_OPERAND (ref, 1); | |
13918 | + /* The member must be an lvalue; assume it isn't a bit-field. */ | |
13919 | + if (TREE_CODE (op) == IDENTIFIER_NODE) | |
13920 | + return clk_ordinary; | |
13921 | + gcc_assert (!type_dependent_expression_p (CONST_CAST_TREE (ref))); | |
13922 | + return lvalue_kind (op); | |
13923 | + } | |
13924 | ||
13925 | case MAX_EXPR: | |
13926 | case MIN_EXPR: | |
13927 | @@ -1228,12 +1234,11 @@ | |
13928 | TREE_CHAIN (*igo_prev) = new_binfo; | |
13929 | *igo_prev = new_binfo; | |
13930 | ||
13931 | - if (binfo) | |
13932 | + if (binfo && !BINFO_DEPENDENT_BASE_P (binfo)) | |
13933 | { | |
13934 | int ix; | |
13935 | tree base_binfo; | |
13936 | ||
13937 | - gcc_assert (!BINFO_DEPENDENT_BASE_P (binfo)); | |
13938 | gcc_assert (SAME_BINFO_TYPE_P (BINFO_TYPE (binfo), type)); | |
13939 | ||
13940 | BINFO_OFFSET (new_binfo) = BINFO_OFFSET (binfo); | |
13941 | @@ -1246,8 +1251,6 @@ | |
13942 | for (ix = 0; BINFO_BASE_ITERATE (binfo, ix, base_binfo); ix++) | |
13943 | { | |
13944 | tree new_base_binfo; | |
13945 | - | |
13946 | - gcc_assert (!BINFO_DEPENDENT_BASE_P (base_binfo)); | |
13947 | new_base_binfo = copy_binfo (base_binfo, BINFO_TYPE (base_binfo), | |
13948 | t, igo_prev, | |
13949 | BINFO_VIRTUAL_P (base_binfo)); | |
13950 | Index: gcc/cp/ChangeLog | |
13951 | =================================================================== | |
13952 | --- gcc/cp/ChangeLog (.../tags/gcc_4_7_0_release) (wersja 187906) | |
13953 | +++ gcc/cp/ChangeLog (.../branches/gcc-4_7-branch) (wersja 187906) | |
13954 | @@ -1,3 +1,144 @@ | |
13955 | +2012-05-15 Alexandre Oliva <aoliva@redhat.com> | |
13956 | + | |
13957 | + PR c++/53209 | |
13958 | + * pt.c (tsubst_decl): Bail out if argvec is error_mark_node. | |
13959 | + | |
13960 | +2012-05-10 Paolo Carlini <paolo.carlini@oracle.com> | |
13961 | + | |
13962 | + PR c++/53301 | |
13963 | + * decl.c (check_default_argument): Fix typo (POINTER_TYPE_P | |
13964 | + instead of TYPE_PTR_P) in zero-as-null-pointer-constant warning. | |
13965 | + | |
13966 | +2012-05-03 Paolo Carlini <paolo.carlini@oracle.com> | |
13967 | + | |
13968 | + PR c++/53186 | |
13969 | + * call.c (build_over_call): Handle final member functions | |
13970 | + and class types. | |
13971 | + (build_new_method_call_1): Do not handle here. | |
13972 | + | |
13973 | +2012-04-17 Paolo Carlini <paolo.carlini@oracle.com> | |
13974 | + | |
13975 | + PR c++/53003 | |
13976 | + * parser.c (cp_parser_member_declaration): Check that | |
13977 | + initializer_token_start is non null before dereferencing it. | |
13978 | + | |
13979 | +2012-04-16 Jason Merrill <jason@redhat.com> | |
13980 | + | |
13981 | + PR c++/38543 | |
13982 | + * pt.c (determine_specialization): Instead of comparing the number | |
13983 | + of parms, check that tsubst gives the right answer. | |
13984 | + | |
13985 | + PR c++/50830 | |
13986 | + * pt.c (convert_template_argument): Handle template template | |
13987 | + argument packs. | |
13988 | + | |
13989 | + PR c++/50303 | |
13990 | + * pt.c (tsubst_pack_expansion): Use tsubst_expr for template | |
13991 | + template parameters. | |
13992 | + | |
13993 | +2012-04-15 Jason Merrill <jason@redhat.com> | |
13994 | + | |
13995 | + PR c++/52292 | |
13996 | + PR c++/52380 | |
13997 | + * pt.c (coerce_template_parms): Even if we aren't converting we | |
13998 | + want to expand argument packs. | |
13999 | + | |
14000 | +2012-04-15 Fabien Chêne <fabien@gcc.gnu.org> | |
14001 | + | |
14002 | + PR c++/52465 | |
14003 | + * parser.c (cp_parser_class_name): Call strip_using_decl and | |
14004 | + return the target decl. | |
14005 | + * name-lookup.c (strip_using_decl): Returns NULL_TREE if the decl | |
14006 | + to be stripped is NULL_TREE. | |
14007 | + (qualify_lookup): Call strip_using_decl and perform some checks on | |
14008 | + the target decl. | |
14009 | + | |
14010 | +2012-04-13 Jason Merrill <jason@redhat.com> | |
14011 | + | |
14012 | + PR c++/52824 | |
14013 | + * pt.c (any_pack_expanson_args_p): New. | |
14014 | + (coerce_template_parms): Use it. | |
14015 | + | |
14016 | +2012-04-11 Jason Merrill <jason@redhat.com> | |
14017 | + | |
14018 | + PR c++/52906 | |
14019 | + * decl.c (check_tag_decl): Don't complain about attributes if we | |
14020 | + don't even have a type. | |
14021 | + | |
14022 | +2012-04-05 Jason Merrill <jason@redhat.com> | |
14023 | + | |
14024 | + PR c++/52596 | |
14025 | + * tree.c (lvalue_kind): Treat a deferred access control SCOPE_REF | |
14026 | + as an lvalue. | |
14027 | + | |
14028 | +2012-04-03 Jason Merrill <jason@redhat.com> | |
14029 | + | |
14030 | + PR c++/52796 | |
14031 | + * pt.c (tsubst_initializer_list): A pack expansion with no elements | |
14032 | + means value-initialization. | |
14033 | + | |
14034 | +2012-03-29 Meador Inge <meadori@codesourcery.com> | |
14035 | + | |
14036 | + PR c++/52672 | |
14037 | + * semantics.c (cxx_fold_indirect_ref): Don't attempt to fold | |
14038 | + stripped child trees that are not pointer types. | |
14039 | + | |
14040 | +2012-03-29 Paolo Carlini <paolo.carlini@oracle.com> | |
14041 | + | |
14042 | + PR c++/52718 | |
14043 | + * decl.c (check_default_argument): With -Wzero-as-null-pointer-constant | |
14044 | + warn for a zero as null pointer constant default argument. | |
14045 | + | |
14046 | +2012-03-29 Jason Merrill <jason@redhat.com> | |
14047 | + | |
14048 | + PR c++/52685 | |
14049 | + * tree.c (copy_binfo): Handle BINFO_DEPENDENT_BASE_P. | |
14050 | + | |
14051 | +2012-03-29 Jakub Jelinek <jakub@redhat.com> | |
14052 | + | |
14053 | + PR c++/52759 | |
14054 | + * decl.c (start_decl): Don't call maybe_apply_pragma_weak | |
14055 | + if processing_template_decl. | |
14056 | + | |
14057 | +2012-03-29 Jason Merrill <jason@redhat.com> | |
14058 | + | |
14059 | + PR c++/52743 | |
14060 | + * call.c (compare_ics): Handle ck_aggr like ck_list. | |
14061 | + | |
14062 | +2012-03-28 Jason Merrill <jason@redhat.com> | |
14063 | + | |
14064 | + PR c++/52746 | |
14065 | + * typeck.c (lookup_destructor): Clear BASELINK_QUALIFIED_P if | |
14066 | + we didn't get an explicit scope. | |
14067 | + * pt.c (tsubst_baselink): Likewise. | |
14068 | + | |
14069 | +2012-03-22 Paolo Carlini <paolo.carlini@oracle.com> | |
14070 | + | |
14071 | + PR c++/52487 | |
14072 | + * class.c (check_field_decls): Call literal_type_p only | |
14073 | + on complete types. | |
14074 | + | |
14075 | +2012-03-22 Jakub Jelinek <jakub@redhat.com> | |
14076 | + | |
14077 | + PR c++/52671 | |
14078 | + * decl.c (check_tag_decl): Only use CLASSTYPE_TEMPLATE_INSTANTIATION | |
14079 | + on CLASS_TYPE_P types. | |
14080 | + | |
14081 | +2012-03-22 Jason Merrill <jason@redhat.com> | |
14082 | + | |
14083 | + PR c++/52582 | |
14084 | + * method.c (implicitly_declare_fn): Set DECL_EXTERNAL. | |
14085 | + | |
14086 | +2012-03-22 Jakub Jelinek <jakub@redhat.com> | |
14087 | + | |
14088 | + Backported from mainline | |
14089 | + 2012-03-14 Jakub Jelinek <jakub@redhat.com> | |
14090 | + | |
14091 | + PR c++/52521 | |
14092 | + * parser.c (lookup_literal_operator): Return fn only if | |
14093 | + processed all arguments from args vector and argtypes is | |
14094 | + void_list_node. | |
14095 | + | |
14096 | 2012-03-22 Release Manager | |
14097 | ||
14098 | * GCC 4.7.0 released. | |
14099 | Index: gcc/cp/pt.c | |
14100 | =================================================================== | |
14101 | --- gcc/cp/pt.c (.../tags/gcc_4_7_0_release) (wersja 187906) | |
14102 | +++ gcc/cp/pt.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
14103 | @@ -1860,6 +1860,7 @@ | |
14104 | { | |
14105 | tree decl_arg_types; | |
14106 | tree fn_arg_types; | |
14107 | + tree insttype; | |
14108 | ||
14109 | /* In case of explicit specialization, we need to check if | |
14110 | the number of template headers appearing in the specialization | |
14111 | @@ -1927,7 +1928,8 @@ | |
14112 | template <> void f<int>(); | |
14113 | The specialization f<int> is invalid but is not caught | |
14114 | by get_bindings below. */ | |
14115 | - if (list_length (fn_arg_types) != list_length (decl_arg_types)) | |
14116 | + if (cxx_dialect < cxx11 | |
14117 | + && list_length (fn_arg_types) != list_length (decl_arg_types)) | |
14118 | continue; | |
14119 | ||
14120 | /* Function templates cannot be specializations; there are | |
14121 | @@ -1950,6 +1952,18 @@ | |
14122 | specialize TMPL will produce DECL. */ | |
14123 | continue; | |
14124 | ||
14125 | + if (cxx_dialect >= cxx11) | |
14126 | + { | |
14127 | + /* Make sure that the deduced arguments actually work. */ | |
14128 | + insttype = tsubst (TREE_TYPE (fn), targs, tf_none, NULL_TREE); | |
14129 | + if (insttype == error_mark_node) | |
14130 | + continue; | |
14131 | + fn_arg_types | |
14132 | + = skip_artificial_parms_for (fn, TYPE_ARG_TYPES (insttype)); | |
14133 | + if (!compparms (fn_arg_types, decl_arg_types)) | |
14134 | + continue; | |
14135 | + } | |
14136 | + | |
14137 | /* Save this template, and the arguments deduced. */ | |
14138 | templates = tree_cons (targs, fn, templates); | |
14139 | } | |
14140 | @@ -6437,6 +6451,7 @@ | |
14141 | is_tmpl_type = | |
14142 | ((TREE_CODE (arg) == TEMPLATE_DECL | |
14143 | && TREE_CODE (DECL_TEMPLATE_RESULT (arg)) == TYPE_DECL) | |
14144 | + || (requires_tmpl_type && TREE_CODE (arg) == TYPE_ARGUMENT_PACK) | |
14145 | || TREE_CODE (arg) == TEMPLATE_TEMPLATE_PARM | |
14146 | || TREE_CODE (arg) == UNBOUND_CLASS_TEMPLATE); | |
14147 | ||
14148 | @@ -6508,7 +6523,9 @@ | |
14149 | { | |
14150 | if (requires_tmpl_type) | |
14151 | { | |
14152 | - if (TREE_CODE (TREE_TYPE (arg)) == UNBOUND_CLASS_TEMPLATE) | |
14153 | + if (template_parameter_pack_p (parm) && ARGUMENT_PACK_P (orig_arg)) | |
14154 | + val = orig_arg; | |
14155 | + else if (TREE_CODE (TREE_TYPE (arg)) == UNBOUND_CLASS_TEMPLATE) | |
14156 | /* The number of argument required is not known yet. | |
14157 | Just accept it for now. */ | |
14158 | val = TREE_TYPE (arg); | |
14159 | @@ -6734,6 +6751,20 @@ | |
14160 | return argument_pack; | |
14161 | } | |
14162 | ||
14163 | +/* Returns true if the template argument vector ARGS contains | |
14164 | + any pack expansions, false otherwise. */ | |
14165 | + | |
14166 | +static bool | |
14167 | +any_pack_expanson_args_p (tree args) | |
14168 | +{ | |
14169 | + int i; | |
14170 | + if (args) | |
14171 | + for (i = 0; i < TREE_VEC_LENGTH (args); ++i) | |
14172 | + if (PACK_EXPANSION_P (TREE_VEC_ELT (args, i))) | |
14173 | + return true; | |
14174 | + return false; | |
14175 | +} | |
14176 | + | |
14177 | /* Convert all template arguments to their appropriate types, and | |
14178 | return a vector containing the innermost resulting template | |
14179 | arguments. If any error occurs, return error_mark_node. Error and | |
14180 | @@ -6799,6 +6830,7 @@ | |
14181 | if ((nargs > nparms && !variadic_p) | |
14182 | || (nargs < nparms - variadic_p | |
14183 | && require_all_args | |
14184 | + && !any_pack_expanson_args_p (inner_args) | |
14185 | && (!use_default_args | |
14186 | || (TREE_VEC_ELT (parms, nargs) != error_mark_node | |
14187 | && !TREE_PURPOSE (TREE_VEC_ELT (parms, nargs)))))) | |
14188 | @@ -6876,7 +6908,7 @@ | |
14189 | { | |
14190 | /* We don't know how many args we have yet, just | |
14191 | use the unconverted ones for now. */ | |
14192 | - new_inner_args = args; | |
14193 | + new_inner_args = inner_args; | |
14194 | break; | |
14195 | } | |
14196 | } | |
14197 | @@ -9548,7 +9580,7 @@ | |
14198 | } | |
14199 | ||
14200 | /* Substitute into the PATTERN with the altered arguments. */ | |
14201 | - if (TREE_CODE (t) == EXPR_PACK_EXPANSION) | |
14202 | + if (!TYPE_P (pattern)) | |
14203 | TREE_VEC_ELT (result, i) = | |
14204 | tsubst_expr (pattern, args, complain, in_decl, | |
14205 | /*integral_constant_expression_p=*/false); | |
14206 | @@ -10636,6 +10668,8 @@ | |
14207 | tmpl = DECL_TI_TEMPLATE (t); | |
14208 | gen_tmpl = most_general_template (tmpl); | |
14209 | argvec = tsubst (DECL_TI_ARGS (t), args, complain, in_decl); | |
14210 | + if (argvec == error_mark_node) | |
14211 | + RETURN (error_mark_node); | |
14212 | hash = hash_tmpl_and_args (gen_tmpl, argvec); | |
14213 | spec = retrieve_specialization (gen_tmpl, argvec, hash); | |
14214 | } | |
14215 | @@ -11858,6 +11892,7 @@ | |
14216 | tree optype; | |
14217 | tree template_args = 0; | |
14218 | bool template_id_p = false; | |
14219 | + bool qualified = BASELINK_QUALIFIED_P (baselink); | |
14220 | ||
14221 | /* A baselink indicates a function from a base class. Both the | |
14222 | BASELINK_ACCESS_BINFO and the base class referenced may | |
14223 | @@ -11906,9 +11941,12 @@ | |
14224 | ||
14225 | if (!object_type) | |
14226 | object_type = current_class_type; | |
14227 | - return adjust_result_of_qualified_name_lookup (baselink, | |
14228 | - qualifying_scope, | |
14229 | - object_type); | |
14230 | + | |
14231 | + if (qualified) | |
14232 | + baselink = adjust_result_of_qualified_name_lookup (baselink, | |
14233 | + qualifying_scope, | |
14234 | + object_type); | |
14235 | + return baselink; | |
14236 | } | |
14237 | ||
14238 | /* Like tsubst_expr for a SCOPE_REF, given by QUALIFIED_ID. DONE is | |
14239 | @@ -18979,6 +19017,7 @@ | |
14240 | } | |
14241 | else | |
14242 | { | |
14243 | + tree tmp; | |
14244 | decl = tsubst_copy (TREE_PURPOSE (t), argvec, | |
14245 | tf_warning_or_error, NULL_TREE); | |
14246 | ||
14247 | @@ -18987,10 +19026,17 @@ | |
14248 | in_base_initializer = 1; | |
14249 | ||
14250 | init = TREE_VALUE (t); | |
14251 | + tmp = init; | |
14252 | if (init != void_type_node) | |
14253 | init = tsubst_expr (init, argvec, | |
14254 | tf_warning_or_error, NULL_TREE, | |
14255 | /*integral_constant_expression_p=*/false); | |
14256 | + if (init == NULL_TREE && tmp != NULL_TREE) | |
14257 | + /* If we had an initializer but it instantiated to nothing, | |
14258 | + value-initialize the object. This will only occur when | |
14259 | + the initializer was a pack expansion where the parameter | |
14260 | + packs used in that expansion were of length zero. */ | |
14261 | + init = void_type_node; | |
14262 | in_base_initializer = 0; | |
14263 | } | |
14264 | ||
14265 | Index: gcc/cp/semantics.c | |
14266 | =================================================================== | |
14267 | --- gcc/cp/semantics.c (.../tags/gcc_4_7_0_release) (wersja 187906) | |
14268 | +++ gcc/cp/semantics.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
14269 | @@ -7202,7 +7202,8 @@ | |
14270 | sub = op0; | |
14271 | STRIP_NOPS (sub); | |
14272 | subtype = TREE_TYPE (sub); | |
14273 | - gcc_assert (POINTER_TYPE_P (subtype)); | |
14274 | + if (!POINTER_TYPE_P (subtype)) | |
14275 | + return NULL_TREE; | |
14276 | ||
14277 | if (TREE_CODE (sub) == ADDR_EXPR) | |
14278 | { | |
14279 | Index: gcc/cp/parser.c | |
14280 | =================================================================== | |
14281 | --- gcc/cp/parser.c (.../tags/gcc_4_7_0_release) (wersja 187906) | |
14282 | +++ gcc/cp/parser.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
14283 | @@ -1,6 +1,6 @@ | |
14284 | /* C++ Parser. | |
14285 | Copyright (C) 2000, 2001, 2002, 2003, 2004, | |
14286 | - 2005, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. | |
14287 | + 2005, 2007, 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc. | |
14288 | Written by Mark Mitchell <mark@codesourcery.com>. | |
14289 | ||
14290 | This file is part of GCC. | |
14291 | @@ -3581,7 +3581,13 @@ | |
14292 | TREE_TYPE (tparm)))) | |
14293 | found = false; | |
14294 | } | |
14295 | - if (found) | |
14296 | + if (found | |
14297 | + && ix == VEC_length (tree, args) | |
14298 | + /* May be this should be sufficient_parms_p instead, | |
14299 | + depending on how exactly should user-defined literals | |
14300 | + work in presence of default arguments on the literal | |
14301 | + operator parameters. */ | |
14302 | + && argtypes == void_list_node) | |
14303 | return fn; | |
14304 | } | |
14305 | } | |
14306 | @@ -17835,6 +17841,8 @@ | |
14307 | decl = TYPE_NAME (decl); | |
14308 | } | |
14309 | ||
14310 | + decl = strip_using_decl (decl); | |
14311 | + | |
14312 | /* Check to see that it is really the name of a class. */ | |
14313 | if (TREE_CODE (decl) == TEMPLATE_ID_EXPR | |
14314 | && TREE_CODE (TREE_OPERAND (decl, 0)) == IDENTIFIER_NODE | |
14315 | @@ -19097,7 +19105,7 @@ | |
14316 | possible that this fact is an oversight in the | |
14317 | standard, since a pure function may be defined | |
14318 | outside of the class-specifier. */ | |
14319 | - if (initializer) | |
14320 | + if (initializer && initializer_token_start) | |
14321 | error_at (initializer_token_start->location, | |
14322 | "pure-specifier on function-definition"); | |
14323 | decl = cp_parser_save_member_function_body (parser, | |
14324 | Index: gcc/cp/call.c | |
14325 | =================================================================== | |
14326 | --- gcc/cp/call.c (.../tags/gcc_4_7_0_release) (wersja 187906) | |
14327 | +++ gcc/cp/call.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
14328 | @@ -6464,6 +6464,12 @@ | |
14329 | return error_mark_node; | |
14330 | } | |
14331 | ||
14332 | + /* See if the function member or the whole class type is declared | |
14333 | + final and the call can be devirtualized. */ | |
14334 | + if (DECL_FINAL_P (fn) | |
14335 | + || CLASSTYPE_FINAL (TYPE_METHOD_BASETYPE (TREE_TYPE (fn)))) | |
14336 | + flags |= LOOKUP_NONVIRTUAL; | |
14337 | + | |
14338 | /* [class.mfct.nonstatic]: If a nonstatic member function of a class | |
14339 | X is called for an object that is not of type X, or of a type | |
14340 | derived from X, the behavior is undefined. | |
14341 | @@ -7324,8 +7330,7 @@ | |
14342 | /* Optimize away vtable lookup if we know that this function | |
14343 | can't be overridden. */ | |
14344 | if (DECL_VINDEX (fn) && ! (flags & LOOKUP_NONVIRTUAL) | |
14345 | - && (resolves_to_fixed_type_p (instance, 0) | |
14346 | - || DECL_FINAL_P (fn) || CLASSTYPE_FINAL (basetype))) | |
14347 | + && resolves_to_fixed_type_p (instance, 0)) | |
14348 | flags |= LOOKUP_NONVIRTUAL; | |
14349 | if (explicit_targs) | |
14350 | flags |= LOOKUP_EXPLICIT_TMPL_ARGS; | |
14351 | @@ -7615,7 +7620,7 @@ | |
14352 | Specifically, we need to do the reference binding comparison at the | |
14353 | end of this function. */ | |
14354 | ||
14355 | - if (ics1->user_conv_p || ics1->kind == ck_list) | |
14356 | + if (ics1->user_conv_p || ics1->kind == ck_list || ics1->kind == ck_aggr) | |
14357 | { | |
14358 | conversion *t1; | |
14359 | conversion *t2; | |
14360 | Index: gcc/cp/name-lookup.c | |
14361 | =================================================================== | |
14362 | --- gcc/cp/name-lookup.c (.../tags/gcc_4_7_0_release) (wersja 187906) | |
14363 | +++ gcc/cp/name-lookup.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
14364 | @@ -1,5 +1,5 @@ | |
14365 | /* Definitions for C++ name lookup routines. | |
14366 | - Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 | |
14367 | + Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 | |
14368 | Free Software Foundation, Inc. | |
14369 | Contributed by Gabriel Dos Reis <gdr@integrable-solutions.net> | |
14370 | ||
14371 | @@ -400,6 +400,9 @@ | |
14372 | tree | |
14373 | strip_using_decl (tree decl) | |
14374 | { | |
14375 | + if (decl == NULL_TREE) | |
14376 | + return NULL_TREE; | |
14377 | + | |
14378 | while (TREE_CODE (decl) == USING_DECL && !DECL_DEPENDENT_P (decl)) | |
14379 | decl = USING_DECL_DECLS (decl); | |
14380 | return decl; | |
14381 | @@ -4115,9 +4118,13 @@ | |
14382 | return false; | |
14383 | if ((flags & LOOKUP_PREFER_NAMESPACES) && TREE_CODE (val) == NAMESPACE_DECL) | |
14384 | return true; | |
14385 | - if ((flags & LOOKUP_PREFER_TYPES) | |
14386 | - && (TREE_CODE (val) == TYPE_DECL || TREE_CODE (val) == TEMPLATE_DECL)) | |
14387 | - return true; | |
14388 | + if (flags & LOOKUP_PREFER_TYPES) | |
14389 | + { | |
14390 | + tree target_val = strip_using_decl (val); | |
14391 | + if (TREE_CODE (target_val) == TYPE_DECL | |
14392 | + || TREE_CODE (target_val) == TEMPLATE_DECL) | |
14393 | + return true; | |
14394 | + } | |
14395 | if (flags & (LOOKUP_PREFER_NAMESPACES | LOOKUP_PREFER_TYPES)) | |
14396 | return false; | |
14397 | /* Look through lambda things that we shouldn't be able to see. */ | |
14398 | Index: gcc/tree-ssa-ccp.c | |
14399 | =================================================================== | |
14400 | --- gcc/tree-ssa-ccp.c (.../tags/gcc_4_7_0_release) (wersja 187906) | |
14401 | +++ gcc/tree-ssa-ccp.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
14402 | @@ -1764,23 +1764,25 @@ | |
14403 | } | |
14404 | ||
14405 | /* Find a BUILT_IN_STACK_SAVE dominating gsi_stmt (I), and insert | |
14406 | - a clobber of VAR before each matching BUILT_IN_STACK_RESTORE. */ | |
14407 | + a clobber of VAR before each matching BUILT_IN_STACK_RESTORE. | |
14408 | ||
14409 | + It is possible that BUILT_IN_STACK_SAVE cannot be find in a dominator when a | |
14410 | + previous pass (such as DOM) duplicated it along multiple paths to a BB. In | |
14411 | + that case the function gives up without inserting the clobbers. */ | |
14412 | + | |
14413 | static void | |
14414 | insert_clobbers_for_var (gimple_stmt_iterator i, tree var) | |
14415 | { | |
14416 | - bool save_found; | |
14417 | gimple stmt; | |
14418 | tree saved_val; | |
14419 | htab_t visited = NULL; | |
14420 | ||
14421 | - for (save_found = false; !gsi_end_p (i); gsi_prev_dom_bb_nondebug (&i)) | |
14422 | + for (; !gsi_end_p (i); gsi_prev_dom_bb_nondebug (&i)) | |
14423 | { | |
14424 | stmt = gsi_stmt (i); | |
14425 | ||
14426 | if (!gimple_call_builtin_p (stmt, BUILT_IN_STACK_SAVE)) | |
14427 | continue; | |
14428 | - save_found = true; | |
14429 | ||
14430 | saved_val = gimple_call_lhs (stmt); | |
14431 | if (saved_val == NULL_TREE) | |
14432 | @@ -1792,7 +1794,6 @@ | |
14433 | ||
14434 | if (visited != NULL) | |
14435 | htab_delete (visited); | |
14436 | - gcc_assert (save_found); | |
14437 | } | |
14438 | ||
14439 | /* Detects a __builtin_alloca_with_align with constant size argument. Declares | |
14440 | @@ -2288,7 +2289,7 @@ | |
14441 | case BUILT_IN_VA_START: | |
14442 | if (!va_list_simple_ptr | |
14443 | || targetm.expand_builtin_va_start != NULL | |
14444 | - || builtin_decl_explicit_p (BUILT_IN_NEXT_ARG)) | |
14445 | + || !builtin_decl_explicit_p (BUILT_IN_NEXT_ARG)) | |
14446 | return NULL_TREE; | |
14447 | ||
14448 | if (gimple_call_num_args (call) != 2) | |
14449 | Index: gcc/tree-ssa-alias.c | |
14450 | =================================================================== | |
14451 | --- gcc/tree-ssa-alias.c (.../tags/gcc_4_7_0_release) (wersja 187906) | |
14452 | +++ gcc/tree-ssa-alias.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
14453 | @@ -236,17 +236,6 @@ | |
14454 | STRIP_NOPS (ptr1); | |
14455 | STRIP_NOPS (ptr2); | |
14456 | ||
14457 | - /* Anything we do not explicilty handle aliases. */ | |
14458 | - if ((TREE_CODE (ptr1) != SSA_NAME | |
14459 | - && TREE_CODE (ptr1) != ADDR_EXPR | |
14460 | - && TREE_CODE (ptr1) != POINTER_PLUS_EXPR) | |
14461 | - || (TREE_CODE (ptr2) != SSA_NAME | |
14462 | - && TREE_CODE (ptr2) != ADDR_EXPR | |
14463 | - && TREE_CODE (ptr2) != POINTER_PLUS_EXPR) | |
14464 | - || !POINTER_TYPE_P (TREE_TYPE (ptr1)) | |
14465 | - || !POINTER_TYPE_P (TREE_TYPE (ptr2))) | |
14466 | - return true; | |
14467 | - | |
14468 | /* Disregard pointer offsetting. */ | |
14469 | if (TREE_CODE (ptr1) == POINTER_PLUS_EXPR) | |
14470 | { | |
14471 | @@ -275,7 +264,7 @@ | |
14472 | if (base | |
14473 | && (TREE_CODE (base) == MEM_REF | |
14474 | || TREE_CODE (base) == TARGET_MEM_REF)) | |
14475 | - ptr1 = TREE_OPERAND (base, 0); | |
14476 | + return ptr_derefs_may_alias_p (TREE_OPERAND (base, 0), ptr2); | |
14477 | else if (base | |
14478 | && DECL_P (base)) | |
14479 | return ptr_deref_may_alias_decl_p (ptr2, base); | |
14480 | @@ -288,7 +277,7 @@ | |
14481 | if (base | |
14482 | && (TREE_CODE (base) == MEM_REF | |
14483 | || TREE_CODE (base) == TARGET_MEM_REF)) | |
14484 | - ptr2 = TREE_OPERAND (base, 0); | |
14485 | + return ptr_derefs_may_alias_p (ptr1, TREE_OPERAND (base, 0)); | |
14486 | else if (base | |
14487 | && DECL_P (base)) | |
14488 | return ptr_deref_may_alias_decl_p (ptr1, base); | |
14489 | @@ -296,6 +285,13 @@ | |
14490 | return true; | |
14491 | } | |
14492 | ||
14493 | + /* From here we require SSA name pointers. Anything else aliases. */ | |
14494 | + if (TREE_CODE (ptr1) != SSA_NAME | |
14495 | + || TREE_CODE (ptr2) != SSA_NAME | |
14496 | + || !POINTER_TYPE_P (TREE_TYPE (ptr1)) | |
14497 | + || !POINTER_TYPE_P (TREE_TYPE (ptr2))) | |
14498 | + return true; | |
14499 | + | |
14500 | /* We may end up with two empty points-to solutions for two same pointers. | |
14501 | In this case we still want to say both pointers alias, so shortcut | |
14502 | that here. */ | |
14503 | @@ -808,8 +804,7 @@ | |
14504 | ||
14505 | /* If either reference is view-converted, give up now. */ | |
14506 | if (same_type_for_tbaa (TREE_TYPE (base1), TREE_TYPE (ptrtype1)) != 1 | |
14507 | - || same_type_for_tbaa (TREE_TYPE (dbase2), | |
14508 | - TREE_TYPE (reference_alias_ptr_type (dbase2))) != 1) | |
14509 | + || same_type_for_tbaa (TREE_TYPE (dbase2), TREE_TYPE (base2)) != 1) | |
14510 | return true; | |
14511 | ||
14512 | /* If both references are through the same type, they do not alias | |
14513 | Index: gcc/ipa-inline.c | |
14514 | =================================================================== | |
14515 | --- gcc/ipa-inline.c (.../tags/gcc_4_7_0_release) (wersja 187906) | |
14516 | +++ gcc/ipa-inline.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
14517 | @@ -220,8 +220,8 @@ | |
14518 | if (dump_file) | |
14519 | { | |
14520 | fprintf (dump_file, " not inlinable: %s/%i -> %s/%i, %s\n", | |
14521 | - cgraph_node_name (e->caller), e->caller->uid, | |
14522 | - cgraph_node_name (e->callee), e->callee->uid, | |
14523 | + xstrdup (cgraph_node_name (e->caller)), e->caller->uid, | |
14524 | + xstrdup (cgraph_node_name (e->callee)), e->callee->uid, | |
14525 | cgraph_inline_failed_string (e->inline_failed)); | |
14526 | } | |
14527 | } | |
14528 | @@ -423,8 +423,8 @@ | |
14529 | if (dump_file) | |
14530 | fprintf (dump_file, " will not early inline: %s/%i->%s/%i, " | |
14531 | "call is cold and code would grow by %i\n", | |
14532 | - cgraph_node_name (e->caller), e->caller->uid, | |
14533 | - cgraph_node_name (callee), callee->uid, | |
14534 | + xstrdup (cgraph_node_name (e->caller)), e->caller->uid, | |
14535 | + xstrdup (cgraph_node_name (callee)), callee->uid, | |
14536 | growth); | |
14537 | want_inline = false; | |
14538 | } | |
14539 | @@ -434,8 +434,8 @@ | |
14540 | if (dump_file) | |
14541 | fprintf (dump_file, " will not early inline: %s/%i->%s/%i, " | |
14542 | "callee is not leaf and code would grow by %i\n", | |
14543 | - cgraph_node_name (e->caller), e->caller->uid, | |
14544 | - cgraph_node_name (callee), callee->uid, | |
14545 | + xstrdup (cgraph_node_name (e->caller)), e->caller->uid, | |
14546 | + xstrdup (cgraph_node_name (callee)), callee->uid, | |
14547 | growth); | |
14548 | want_inline = false; | |
14549 | } | |
14550 | @@ -444,8 +444,8 @@ | |
14551 | if (dump_file) | |
14552 | fprintf (dump_file, " will not early inline: %s/%i->%s/%i, " | |
14553 | "growth %i exceeds --param early-inlining-insns\n", | |
14554 | - cgraph_node_name (e->caller), e->caller->uid, | |
14555 | - cgraph_node_name (callee), callee->uid, | |
14556 | + xstrdup (cgraph_node_name (e->caller)), e->caller->uid, | |
14557 | + xstrdup (cgraph_node_name (callee)), callee->uid, | |
14558 | growth); | |
14559 | want_inline = false; | |
14560 | } | |
14561 | @@ -754,8 +754,8 @@ | |
14562 | if (dump) | |
14563 | { | |
14564 | fprintf (dump_file, " Badness calculation for %s -> %s\n", | |
14565 | - cgraph_node_name (edge->caller), | |
14566 | - cgraph_node_name (callee)); | |
14567 | + xstrdup (cgraph_node_name (edge->caller)), | |
14568 | + xstrdup (cgraph_node_name (callee))); | |
14569 | fprintf (dump_file, " size growth %i, time growth %i\n", | |
14570 | growth, | |
14571 | time_growth); | |
14572 | @@ -910,8 +910,10 @@ | |
14573 | { | |
14574 | fprintf (dump_file, | |
14575 | " decreasing badness %s/%i -> %s/%i, %i to %i\n", | |
14576 | - cgraph_node_name (edge->caller), edge->caller->uid, | |
14577 | - cgraph_node_name (edge->callee), edge->callee->uid, | |
14578 | + xstrdup (cgraph_node_name (edge->caller)), | |
14579 | + edge->caller->uid, | |
14580 | + xstrdup (cgraph_node_name (edge->callee)), | |
14581 | + edge->callee->uid, | |
14582 | (int)n->key, | |
14583 | badness); | |
14584 | } | |
14585 | @@ -925,8 +927,10 @@ | |
14586 | { | |
14587 | fprintf (dump_file, | |
14588 | " enqueuing call %s/%i -> %s/%i, badness %i\n", | |
14589 | - cgraph_node_name (edge->caller), edge->caller->uid, | |
14590 | - cgraph_node_name (edge->callee), edge->callee->uid, | |
14591 | + xstrdup (cgraph_node_name (edge->caller)), | |
14592 | + edge->caller->uid, | |
14593 | + xstrdup (cgraph_node_name (edge->callee)), | |
14594 | + edge->callee->uid, | |
14595 | badness); | |
14596 | } | |
14597 | edge->aux = fibheap_insert (heap, badness, edge); | |
14598 | @@ -1608,8 +1612,8 @@ | |
14599 | if (dump_file) | |
14600 | fprintf (dump_file, | |
14601 | "Not inlining %s into %s to avoid cycle.\n", | |
14602 | - cgraph_node_name (callee), | |
14603 | - cgraph_node_name (e->caller)); | |
14604 | + xstrdup (cgraph_node_name (callee)), | |
14605 | + xstrdup (cgraph_node_name (e->caller))); | |
14606 | e->inline_failed = CIF_RECURSIVE_INLINING; | |
14607 | continue; | |
14608 | } | |
14609 | @@ -1649,8 +1653,8 @@ | |
14610 | recursing through the original node if the node was cloned. */ | |
14611 | if (dump_file) | |
14612 | fprintf (dump_file, " Inlining %s into %s.\n", | |
14613 | - cgraph_node_name (callee), | |
14614 | - cgraph_node_name (e->caller)); | |
14615 | + xstrdup (cgraph_node_name (callee)), | |
14616 | + xstrdup (cgraph_node_name (e->caller))); | |
14617 | orig_callee = callee; | |
14618 | inline_call (e, true, NULL, NULL); | |
14619 | if (e->callee != orig_callee) | |
14620 | @@ -1752,7 +1756,8 @@ | |
14621 | { | |
14622 | fprintf (dump_file, | |
14623 | "\nInlining %s size %i.\n", | |
14624 | - cgraph_node_name (node), inline_summary (node)->size); | |
14625 | + cgraph_node_name (node), | |
14626 | + inline_summary (node)->size); | |
14627 | fprintf (dump_file, | |
14628 | " Called once from %s %i insns.\n", | |
14629 | cgraph_node_name (node->callers->caller), | |
14630 | @@ -1815,8 +1820,8 @@ | |
14631 | ||
14632 | if (dump_file) | |
14633 | fprintf (dump_file, " Inlining %s into %s (always_inline).\n", | |
14634 | - cgraph_node_name (e->callee), | |
14635 | - cgraph_node_name (e->caller)); | |
14636 | + xstrdup (cgraph_node_name (e->callee)), | |
14637 | + xstrdup (cgraph_node_name (e->caller))); | |
14638 | inline_call (e, true, NULL, NULL); | |
14639 | inlined = true; | |
14640 | } | |
14641 | @@ -1865,8 +1870,8 @@ | |
14642 | ||
14643 | if (dump_file) | |
14644 | fprintf (dump_file, " Inlining %s into %s.\n", | |
14645 | - cgraph_node_name (callee), | |
14646 | - cgraph_node_name (e->caller)); | |
14647 | + xstrdup (cgraph_node_name (callee)), | |
14648 | + xstrdup (cgraph_node_name (e->caller))); | |
14649 | inline_call (e, true, NULL, NULL); | |
14650 | inlined = true; | |
14651 | } | |
14652 | Index: gcc/config.in | |
14653 | =================================================================== | |
14654 | --- gcc/config.in (.../tags/gcc_4_7_0_release) (wersja 187906) | |
14655 | +++ gcc/config.in (.../branches/gcc-4_7-branch) (wersja 187906) | |
14656 | @@ -1091,7 +1091,7 @@ | |
14657 | #endif | |
14658 | ||
14659 | ||
14660 | -/* Define if using GNU as. */ | |
14661 | +/* Define to 1 if using GNU as. */ | |
14662 | #ifndef USED_FOR_TARGET | |
14663 | #undef HAVE_GNU_AS | |
14664 | #endif | |
14665 | @@ -1103,7 +1103,7 @@ | |
14666 | #endif | |
14667 | ||
14668 | ||
14669 | -/* Define if using GNU ld. */ | |
14670 | +/* Define to 1 if using GNU ld. */ | |
14671 | #ifndef USED_FOR_TARGET | |
14672 | #undef HAVE_GNU_LD | |
14673 | #endif | |
14674 | Index: gcc/jump.c | |
14675 | =================================================================== | |
14676 | --- gcc/jump.c (.../tags/gcc_4_7_0_release) (wersja 187906) | |
14677 | +++ gcc/jump.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
14678 | @@ -1252,6 +1252,26 @@ | |
14679 | if (next != 0 && BARRIER_P (next)) | |
14680 | delete_insn (next); | |
14681 | ||
14682 | + /* If this is a call, then we have to remove the var tracking note | |
14683 | + for the call arguments. */ | |
14684 | + | |
14685 | + if (CALL_P (insn) | |
14686 | + || (NONJUMP_INSN_P (insn) | |
14687 | + && GET_CODE (PATTERN (insn)) == SEQUENCE | |
14688 | + && CALL_P (XVECEXP (PATTERN (insn), 0, 0)))) | |
14689 | + { | |
14690 | + rtx p = insn; | |
14691 | + | |
14692 | + for (p = NEXT_INSN (p); | |
14693 | + p && NOTE_P (p); | |
14694 | + p = NEXT_INSN (p)) | |
14695 | + if (NOTE_KIND (p) == NOTE_INSN_CALL_ARG_LOCATION) | |
14696 | + { | |
14697 | + remove_insn (p); | |
14698 | + break; | |
14699 | + } | |
14700 | + } | |
14701 | + | |
14702 | /* If deleting a jump, decrement the count of the label, | |
14703 | and delete the label if it is now unused. */ | |
14704 | ||
14705 | Index: gcc/dwarf2out.c | |
14706 | =================================================================== | |
14707 | --- gcc/dwarf2out.c (.../tags/gcc_4_7_0_release) (wersja 187906) | |
14708 | +++ gcc/dwarf2out.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
14709 | @@ -3134,6 +3134,12 @@ | |
14710 | defines/undefines (and file start/end markers). */ | |
14711 | static GTY (()) VEC (macinfo_entry, gc) * macinfo_table; | |
14712 | ||
14713 | +/* True if .debug_macinfo or .debug_macros section is going to be | |
14714 | + emitted. */ | |
14715 | +#define have_macinfo \ | |
14716 | + (debug_info_level >= DINFO_LEVEL_VERBOSE \ | |
14717 | + && !VEC_empty (macinfo_entry, macinfo_table)) | |
14718 | + | |
14719 | /* Array of dies for which we should generate .debug_ranges info. */ | |
14720 | static GTY ((length ("ranges_table_allocated"))) dw_ranges_ref ranges_table; | |
14721 | ||
14722 | @@ -19889,7 +19895,9 @@ | |
14723 | return; | |
14724 | ||
14725 | /* For local statics lookup proper context die. */ | |
14726 | - if (TREE_STATIC (decl) && decl_function_context (decl)) | |
14727 | + if (TREE_STATIC (decl) | |
14728 | + && DECL_CONTEXT (decl) | |
14729 | + && TREE_CODE (DECL_CONTEXT (decl)) == FUNCTION_DECL) | |
14730 | context_die = lookup_decl_die (DECL_CONTEXT (decl)); | |
14731 | ||
14732 | /* If we are in terse mode, don't generate any DIEs to represent any | |
14733 | @@ -20653,7 +20661,7 @@ | |
14734 | macinfo_entry e; | |
14735 | /* Insert a dummy first entry to be able to optimize the whole | |
14736 | predefined macro block using DW_MACRO_GNU_transparent_include. */ | |
14737 | - if (VEC_empty (macinfo_entry, macinfo_table) && lineno == 0) | |
14738 | + if (VEC_empty (macinfo_entry, macinfo_table) && lineno <= 1) | |
14739 | { | |
14740 | e.code = 0; | |
14741 | e.lineno = 0; | |
14742 | @@ -20680,7 +20688,7 @@ | |
14743 | macinfo_entry e; | |
14744 | /* Insert a dummy first entry to be able to optimize the whole | |
14745 | predefined macro block using DW_MACRO_GNU_transparent_include. */ | |
14746 | - if (VEC_empty (macinfo_entry, macinfo_table) && lineno == 0) | |
14747 | + if (VEC_empty (macinfo_entry, macinfo_table) && lineno <= 1) | |
14748 | { | |
14749 | e.code = 0; | |
14750 | e.lineno = 0; | |
14751 | @@ -20819,13 +20827,13 @@ | |
14752 | ||
14753 | /* Optimize only if there are at least two consecutive define/undef ops, | |
14754 | and either all of them are before first DW_MACINFO_start_file | |
14755 | - with lineno 0 (i.e. predefined macro block), or all of them are | |
14756 | + with lineno {0,1} (i.e. predefined macro block), or all of them are | |
14757 | in some included header file. */ | |
14758 | if (second->code != DW_MACINFO_define && second->code != DW_MACINFO_undef) | |
14759 | return 0; | |
14760 | if (VEC_empty (macinfo_entry, files)) | |
14761 | { | |
14762 | - if (first->lineno != 0 || second->lineno != 0) | |
14763 | + if (first->lineno > 1 || second->lineno > 1) | |
14764 | return 0; | |
14765 | } | |
14766 | else if (first->lineno == 0) | |
14767 | @@ -20838,7 +20846,7 @@ | |
14768 | for (i = idx; VEC_iterate (macinfo_entry, macinfo_table, i, cur); i++) | |
14769 | if (cur->code != DW_MACINFO_define && cur->code != DW_MACINFO_undef) | |
14770 | break; | |
14771 | - else if (first->lineno == 0 && cur->lineno != 0) | |
14772 | + else if (VEC_empty (macinfo_entry, files) && cur->lineno > 1) | |
14773 | break; | |
14774 | else | |
14775 | { | |
14776 | @@ -20852,7 +20860,7 @@ | |
14777 | ||
14778 | /* From the containing include filename (if any) pick up just | |
14779 | usable characters from its basename. */ | |
14780 | - if (first->lineno == 0) | |
14781 | + if (VEC_empty (macinfo_entry, files)) | |
14782 | base = ""; | |
14783 | else | |
14784 | base = lbasename (VEC_last (macinfo_entry, files)->info); | |
14785 | @@ -22689,7 +22697,7 @@ | |
14786 | add_AT_lineptr (comp_unit_die (), DW_AT_stmt_list, | |
14787 | debug_line_section_label); | |
14788 | ||
14789 | - if (debug_info_level >= DINFO_LEVEL_VERBOSE) | |
14790 | + if (have_macinfo) | |
14791 | add_AT_macptr (comp_unit_die (), | |
14792 | dwarf_strict ? DW_AT_macro_info : DW_AT_GNU_macros, | |
14793 | macinfo_section_label); | |
14794 | @@ -22724,8 +22732,8 @@ | |
14795 | htab_delete (comdat_type_table); | |
14796 | ||
14797 | /* Output the main compilation unit if non-empty or if .debug_macinfo | |
14798 | - will be emitted. */ | |
14799 | - output_comp_unit (comp_unit_die (), debug_info_level >= DINFO_LEVEL_VERBOSE); | |
14800 | + or .debug_macro will be emitted. */ | |
14801 | + output_comp_unit (comp_unit_die (), have_macinfo); | |
14802 | ||
14803 | /* Output the abbreviation table. */ | |
14804 | if (abbrev_die_table_in_use != 1) | |
14805 | @@ -22805,12 +22813,11 @@ | |
14806 | } | |
14807 | ||
14808 | /* Have to end the macro section. */ | |
14809 | - if (debug_info_level >= DINFO_LEVEL_VERBOSE) | |
14810 | + if (have_macinfo) | |
14811 | { | |
14812 | switch_to_section (debug_macinfo_section); | |
14813 | ASM_OUTPUT_LABEL (asm_out_file, macinfo_section_label); | |
14814 | - if (!VEC_empty (macinfo_entry, macinfo_table)) | |
14815 | - output_macinfo (); | |
14816 | + output_macinfo (); | |
14817 | dw2_asm_output_data (1, 0, "End compilation unit"); | |
14818 | } | |
14819 | ||
14820 | Index: gcc/go/lang.opt | |
14821 | =================================================================== | |
14822 | --- gcc/go/lang.opt (.../tags/gcc_4_7_0_release) (wersja 187906) | |
14823 | +++ gcc/go/lang.opt (.../branches/gcc-4_7-branch) (wersja 187906) | |
14824 | @@ -1,6 +1,6 @@ | |
14825 | ; lang.opt -- Options for the gcc Go front end. | |
14826 | ||
14827 | -; Copyright (C) 2009, 2010, 2011 Free Software Foundation, Inc. | |
14828 | +; Copyright (C) 2009, 2010, 2011, 2012 Free Software Foundation, Inc. | |
14829 | ; | |
14830 | ; This file is part of GCC. | |
14831 | ; | |
14832 | @@ -37,6 +37,14 @@ | |
14833 | Go | |
14834 | ; Documented in c.opt | |
14835 | ||
14836 | +fgo-check-divide-zero | |
14837 | +Go Var(go_check_divide_zero) Init(1) | |
14838 | +Add explicit checks for division by zero | |
14839 | + | |
14840 | +fgo-check-divide-overflow | |
14841 | +Go Var(go_check_divide_overflow) Init(1) | |
14842 | +Add explicit checks for division overflow in INT_MIN / -1 | |
14843 | + | |
14844 | fgo-dump- | |
14845 | Go Joined RejectNegative | |
14846 | -fgo-dump-<type> Dump Go frontend internal information | |
14847 | @@ -45,6 +53,10 @@ | |
14848 | Go Joined RejectNegative | |
14849 | -fgo-optimize-<type> Turn on optimization passes in the frontend | |
14850 | ||
14851 | +fgo-pkgpath= | |
14852 | +Go Joined RejectNegative | |
14853 | +-fgo-pkgpath=<string> Set Go package path | |
14854 | + | |
14855 | fgo-prefix= | |
14856 | Go Joined RejectNegative | |
14857 | -fgo-prefix=<string> Set package-specific prefix for exported Go names | |
14858 | Index: gcc/go/go-gcc.cc | |
14859 | =================================================================== | |
14860 | --- gcc/go/go-gcc.cc (.../tags/gcc_4_7_0_release) (wersja 187906) | |
14861 | +++ gcc/go/go-gcc.cc (.../branches/gcc-4_7-branch) (wersja 187906) | |
14862 | @@ -271,7 +271,7 @@ | |
14863 | ||
14864 | Bvariable* | |
14865 | global_variable(const std::string& package_name, | |
14866 | - const std::string& unique_prefix, | |
14867 | + const std::string& pkgpath, | |
14868 | const std::string& name, | |
14869 | Btype* btype, | |
14870 | bool is_external, | |
14871 | @@ -1281,7 +1281,7 @@ | |
14872 | ||
14873 | Bvariable* | |
14874 | Gcc_backend::global_variable(const std::string& package_name, | |
14875 | - const std::string& unique_prefix, | |
14876 | + const std::string& pkgpath, | |
14877 | const std::string& name, | |
14878 | Btype* btype, | |
14879 | bool is_external, | |
14880 | @@ -1310,9 +1310,9 @@ | |
14881 | { | |
14882 | TREE_PUBLIC(decl) = 1; | |
14883 | ||
14884 | - std::string asm_name(unique_prefix); | |
14885 | + std::string asm_name(pkgpath); | |
14886 | asm_name.push_back('.'); | |
14887 | - asm_name.append(var_name); | |
14888 | + asm_name.append(name); | |
14889 | SET_DECL_ASSEMBLER_NAME(decl, get_identifier_from_string(asm_name)); | |
14890 | } | |
14891 | TREE_USED(decl) = 1; | |
14892 | Index: gcc/go/ChangeLog | |
14893 | =================================================================== | |
14894 | --- gcc/go/ChangeLog (.../tags/gcc_4_7_0_release) (wersja 187906) | |
14895 | +++ gcc/go/ChangeLog (.../branches/gcc-4_7-branch) (wersja 187906) | |
14896 | @@ -1,3 +1,29 @@ | |
14897 | +2012-05-09 Ian Lance Taylor <iant@google.com> | |
14898 | + | |
14899 | + * lang.opt: Add -fgo-pkgpath. | |
14900 | + * go-lang.c (go_pkgpath): New static variable. | |
14901 | + (go_prefix): New static variable. | |
14902 | + (go_langhook_init): Pass go_pkgpath and go_prefix to | |
14903 | + go_create_gogo. | |
14904 | + (go_langhook_handle_option): Handle -fgo-pkgpath. Change | |
14905 | + -fgo-prefix handling to just set go_prefix. | |
14906 | + * go-c.h (go_set_prefix): Don't declare. | |
14907 | + (go_create_gogo): Add pkgpath and prefix to declaration. | |
14908 | + * go-gcc.cc (Gcc_backend::global_variable): Change unique_prefix | |
14909 | + to pkgpath. Don't include the package name in the asm name. | |
14910 | + * gccgo.texi (Invoking gccgo): Document -fgo-pkgpath. Update the | |
14911 | + docs for -fgo-prefix. | |
14912 | + | |
14913 | +2012-04-23 Ian Lance Taylor <iant@google.com> | |
14914 | + | |
14915 | + * go-lang.c (go_langhook_init): Set MPFR precision to 256. | |
14916 | + | |
14917 | +2012-04-20 Ian Lance Taylor <iant@google.com> | |
14918 | + | |
14919 | + * lang.opt: Add -fgo-check-divide-zero and | |
14920 | + -fgo-check-divide-overflow. | |
14921 | + * gccgo.texi (Invoking gccgo): Document new options. | |
14922 | + | |
14923 | 2012-03-22 Release Manager | |
14924 | ||
14925 | * GCC 4.7.0 released. | |
14926 | Index: gcc/go/gccgo.texi | |
14927 | =================================================================== | |
14928 | --- gcc/go/gccgo.texi (.../tags/gcc_4_7_0_release) (wersja 187906) | |
14929 | +++ gcc/go/gccgo.texi (.../branches/gcc-4_7-branch) (wersja 187906) | |
14930 | @@ -12,7 +12,7 @@ | |
14931 | @include gcc-common.texi | |
14932 | ||
14933 | @c Copyright years for this manual. | |
14934 | -@set copyrights-go 2010 | |
14935 | +@set copyrights-go 2010, 2011, 2012 | |
14936 | ||
14937 | @copying | |
14938 | @c man begin COPYRIGHT | |
14939 | @@ -157,15 +157,33 @@ | |
14940 | When linking, specify a library search directory, as with | |
14941 | @command{gcc}. | |
14942 | ||
14943 | +@item -fgo-pkgpath=@var{string} | |
14944 | +@cindex @option{-fgo-pkgpath} | |
14945 | +Set the package path to use. This sets the value returned by the | |
14946 | +PkgPath method of reflect.Type objects. It is also used for the names | |
14947 | +of globally visible symbols. The argument to this option should | |
14948 | +normally be the string that will be used to import this package after | |
14949 | +it has been installed; in other words, a pathname within the | |
14950 | +directories specified by the @option{-I} option. | |
14951 | + | |
14952 | @item -fgo-prefix=@var{string} | |
14953 | @cindex @option{-fgo-prefix} | |
14954 | +An alternative to @option{-fgo-pkgpath}. The argument will be | |
14955 | +combined with the package name from the source file to produce the | |
14956 | +package path. If @option{-fgo-pkgpath} is used, @option{-fgo-prefix} | |
14957 | +will be ignored. | |
14958 | + | |
14959 | Go permits a single program to include more than one package with the | |
14960 | -same name. This option is required to make this work with | |
14961 | -@command{gccgo}. The argument to this option may be any string. Each | |
14962 | -package with the same name must use a distinct @option{-fgo-prefix} | |
14963 | -option. The argument is typically the full path under which the | |
14964 | -package will be installed, as that must obviously be unique. | |
14965 | +same name in the @code{package} clause in the source file, though | |
14966 | +obviously the two packages must be imported using different pathnames. | |
14967 | +In order for this to work with @command{gccgo}, either | |
14968 | +@option{-fgo-pkgpath} or @option{-fgo-prefix} must be specified when | |
14969 | +compiling a package. | |
14970 | ||
14971 | +Using either @option{-fgo-pkgpath} or @option{-fgo-prefix} disables | |
14972 | +the special treatment of the @code{main} package and permits that | |
14973 | +package to be imported like any other. | |
14974 | + | |
14975 | @item -frequire-return-statement | |
14976 | @itemx -fno-require-return-statement | |
14977 | @cindex @option{-frequire-return-statement} | |
14978 | @@ -174,6 +192,31 @@ | |
14979 | more return parameters but lack an explicit @code{return} statement. | |
14980 | This warning may be disabled using | |
14981 | @option{-fno-require-return-statement}. | |
14982 | + | |
14983 | +@item -fgo-check-divide-zero | |
14984 | +@cindex @option{-fgo-check-divide-zero} | |
14985 | +@cindex @option{-fno-go-check-divide-zero} | |
14986 | +Add explicit checks for division by zero. In Go a division (or | |
14987 | +modulos) by zero causes a panic. On Unix systems this is detected in | |
14988 | +the runtime by catching the @code{SIGFPE} signal. Some processors, | |
14989 | +such as PowerPC, do not generate a SIGFPE on division by zero. Some | |
14990 | +runtimes do not generate a signal that can be caught. On those | |
14991 | +systems, this option may be used. Or the checks may be removed via | |
14992 | +@option{-fno-go-check-divide-zero}. This option is currently on by | |
14993 | +default, but in the future may be off by default on systems that do | |
14994 | +not require it. | |
14995 | + | |
14996 | +@item -fgo-check-divide-overflow | |
14997 | +@cindex @option{-fgo-check-divide-overflow} | |
14998 | +@cindex @option{-fno-go-check-divide-overflow} | |
14999 | +Add explicit checks for division overflow. For example, division | |
15000 | +overflow occurs when computing @code{INT_MIN / -1}. In Go this should | |
15001 | +be wrapped, to produce @code{INT_MIN}. Some processors, such as x86, | |
15002 | +generate a trap on division overflow. On those systems, this option | |
15003 | +may be used. Or the checks may be removed via | |
15004 | +@option{-fno-go-check-divide-overflow}. This option is currently on | |
15005 | +by default, but in the future may be off by default on systems that do | |
15006 | +not require it. | |
15007 | @end table | |
15008 | ||
15009 | @c man end | |
15010 | Index: gcc/go/go-lang.c | |
15011 | =================================================================== | |
15012 | --- gcc/go/go-lang.c (.../tags/gcc_4_7_0_release) (wersja 187906) | |
15013 | +++ gcc/go/go-lang.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
15014 | @@ -81,6 +81,11 @@ | |
15015 | int dummy; | |
15016 | }; | |
15017 | ||
15018 | +/* Option information we need to pass to go_create_gogo. */ | |
15019 | + | |
15020 | +static const char *go_pkgpath = NULL; | |
15021 | +static const char *go_prefix = NULL; | |
15022 | + | |
15023 | /* Language hooks. */ | |
15024 | ||
15025 | static bool | |
15026 | @@ -96,14 +101,14 @@ | |
15027 | to, e.g., unsigned_char_type_node) but before calling | |
15028 | build_common_builtin_nodes (because it calls, indirectly, | |
15029 | go_type_for_size). */ | |
15030 | - go_create_gogo (INT_TYPE_SIZE, POINTER_SIZE); | |
15031 | + go_create_gogo (INT_TYPE_SIZE, POINTER_SIZE, go_pkgpath, go_prefix); | |
15032 | ||
15033 | build_common_builtin_nodes (); | |
15034 | ||
15035 | /* The default precision for floating point numbers. This is used | |
15036 | for floating point constants with abstract type. This may | |
15037 | eventually be controllable by a command line option. */ | |
15038 | - mpfr_set_default_prec (128); | |
15039 | + mpfr_set_default_prec (256); | |
15040 | ||
15041 | /* Go uses exceptions. */ | |
15042 | using_eh_for_cleanups (); | |
15043 | @@ -227,8 +232,12 @@ | |
15044 | ret = go_enable_optimize (arg) ? true : false; | |
15045 | break; | |
15046 | ||
15047 | + case OPT_fgo_pkgpath_: | |
15048 | + go_pkgpath = arg; | |
15049 | + break; | |
15050 | + | |
15051 | case OPT_fgo_prefix_: | |
15052 | - go_set_prefix (arg); | |
15053 | + go_prefix = arg; | |
15054 | break; | |
15055 | ||
15056 | default: | |
15057 | Index: gcc/go/gofrontend/gogo.cc | |
15058 | =================================================================== | |
15059 | --- gcc/go/gofrontend/gogo.cc (.../tags/gcc_4_7_0_release) (wersja 187906) | |
15060 | +++ gcc/go/gofrontend/gogo.cc (.../branches/gcc-4_7-branch) (wersja 187906) | |
15061 | @@ -32,11 +32,16 @@ | |
15062 | imported_unsafe_(false), | |
15063 | packages_(), | |
15064 | init_functions_(), | |
15065 | + var_deps_(), | |
15066 | need_init_fn_(false), | |
15067 | init_fn_name_(), | |
15068 | imported_init_fns_(), | |
15069 | - unique_prefix_(), | |
15070 | - unique_prefix_specified_(false), | |
15071 | + pkgpath_(), | |
15072 | + pkgpath_symbol_(), | |
15073 | + prefix_(), | |
15074 | + pkgpath_set_(false), | |
15075 | + pkgpath_from_option_(false), | |
15076 | + prefix_from_option_(false), | |
15077 | verify_types_(), | |
15078 | interface_types_(), | |
15079 | specific_type_functions_(), | |
15080 | @@ -232,6 +237,72 @@ | |
15081 | this->globals_->add_function_declaration("delete", NULL, delete_type, loc); | |
15082 | } | |
15083 | ||
15084 | +// Convert a pkgpath into a string suitable for a symbol. Note that | |
15085 | +// this transformation is convenient but imperfect. A -fgo-pkgpath | |
15086 | +// option of a/b_c will conflict with a -fgo-pkgpath option of a_b/c, | |
15087 | +// possibly leading to link time errors. | |
15088 | + | |
15089 | +std::string | |
15090 | +Gogo::pkgpath_for_symbol(const std::string& pkgpath) | |
15091 | +{ | |
15092 | + std::string s = pkgpath; | |
15093 | + for (size_t i = 0; i < s.length(); ++i) | |
15094 | + { | |
15095 | + char c = s[i]; | |
15096 | + if ((c >= 'a' && c <= 'z') | |
15097 | + || (c >= 'A' && c <= 'Z') | |
15098 | + || (c >= '0' && c <= '9') | |
15099 | + || c == '_' | |
15100 | + || c == '.' | |
15101 | + || c == '$') | |
15102 | + ; | |
15103 | + else | |
15104 | + s[i] = '_'; | |
15105 | + } | |
15106 | + return s; | |
15107 | +} | |
15108 | + | |
15109 | +// Get the package path to use for type reflection data. This should | |
15110 | +// ideally be unique across the entire link. | |
15111 | + | |
15112 | +const std::string& | |
15113 | +Gogo::pkgpath() const | |
15114 | +{ | |
15115 | + go_assert(this->pkgpath_set_); | |
15116 | + return this->pkgpath_; | |
15117 | +} | |
15118 | + | |
15119 | +// Set the package path from the -fgo-pkgpath command line option. | |
15120 | + | |
15121 | +void | |
15122 | +Gogo::set_pkgpath(const std::string& arg) | |
15123 | +{ | |
15124 | + go_assert(!this->pkgpath_set_); | |
15125 | + this->pkgpath_ = arg; | |
15126 | + this->pkgpath_set_ = true; | |
15127 | + this->pkgpath_from_option_ = true; | |
15128 | +} | |
15129 | + | |
15130 | +// Get the package path to use for symbol names. | |
15131 | + | |
15132 | +const std::string& | |
15133 | +Gogo::pkgpath_symbol() const | |
15134 | +{ | |
15135 | + go_assert(this->pkgpath_set_); | |
15136 | + return this->pkgpath_symbol_; | |
15137 | +} | |
15138 | + | |
15139 | +// Set the unique prefix to use to determine the package path, from | |
15140 | +// the -fgo-prefix command line option. | |
15141 | + | |
15142 | +void | |
15143 | +Gogo::set_prefix(const std::string& arg) | |
15144 | +{ | |
15145 | + go_assert(!this->prefix_from_option_); | |
15146 | + this->prefix_ = arg; | |
15147 | + this->prefix_from_option_ = true; | |
15148 | +} | |
15149 | + | |
15150 | // Munge name for use in an error message. | |
15151 | ||
15152 | std::string | |
15153 | @@ -246,7 +317,7 @@ | |
15154 | Gogo::package_name() const | |
15155 | { | |
15156 | go_assert(this->package_ != NULL); | |
15157 | - return this->package_->name(); | |
15158 | + return this->package_->package_name(); | |
15159 | } | |
15160 | ||
15161 | // Set the package name. | |
15162 | @@ -255,24 +326,29 @@ | |
15163 | Gogo::set_package_name(const std::string& package_name, | |
15164 | Location location) | |
15165 | { | |
15166 | - if (this->package_ != NULL && this->package_->name() != package_name) | |
15167 | + if (this->package_ != NULL) | |
15168 | { | |
15169 | - error_at(location, "expected package %<%s%>", | |
15170 | - Gogo::message_name(this->package_->name()).c_str()); | |
15171 | + if (this->package_->package_name() != package_name) | |
15172 | + error_at(location, "expected package %<%s%>", | |
15173 | + Gogo::message_name(this->package_->package_name()).c_str()); | |
15174 | return; | |
15175 | } | |
15176 | ||
15177 | - // If the user did not specify a unique prefix, we always use "go". | |
15178 | - // This in effect requires that the package name be unique. | |
15179 | - if (this->unique_prefix_.empty()) | |
15180 | - this->unique_prefix_ = "go"; | |
15181 | + // Now that we know the name of the package we are compiling, set | |
15182 | + // the package path to use for reflect.Type.PkgPath and global | |
15183 | + // symbol names. | |
15184 | + if (!this->pkgpath_set_) | |
15185 | + { | |
15186 | + if (!this->prefix_from_option_) | |
15187 | + this->prefix_ = "go"; | |
15188 | + this->pkgpath_ = this->prefix_ + '.' + package_name; | |
15189 | + this->pkgpath_set_ = true; | |
15190 | + } | |
15191 | ||
15192 | - this->package_ = this->register_package(package_name, this->unique_prefix_, | |
15193 | - location); | |
15194 | + this->pkgpath_symbol_ = Gogo::pkgpath_for_symbol(this->pkgpath_); | |
15195 | ||
15196 | - // We used to permit people to qualify symbols with the current | |
15197 | - // package name (e.g., P.x), but we no longer do. | |
15198 | - // this->globals_->add_package(package_name, this->package_); | |
15199 | + this->package_ = this->register_package(this->pkgpath_, location); | |
15200 | + this->package_->set_package_name(package_name, location); | |
15201 | ||
15202 | if (this->is_main_package()) | |
15203 | { | |
15204 | @@ -286,12 +362,14 @@ | |
15205 | } | |
15206 | ||
15207 | // Return whether this is the "main" package. This is not true if | |
15208 | -// -fgo-prefix was used. | |
15209 | +// -fgo-pkgpath or -fgo-prefix was used. | |
15210 | ||
15211 | bool | |
15212 | Gogo::is_main_package() const | |
15213 | { | |
15214 | - return this->package_name() == "main" && !this->unique_prefix_specified_; | |
15215 | + return (this->package_name() == "main" | |
15216 | + && !this->pkgpath_from_option_ | |
15217 | + && !this->prefix_from_option_); | |
15218 | } | |
15219 | ||
15220 | // Import a package. | |
15221 | @@ -318,7 +396,8 @@ | |
15222 | bool is_ln_exported = is_local_name_exported; | |
15223 | if (ln.empty()) | |
15224 | { | |
15225 | - ln = package->name(); | |
15226 | + ln = package->package_name(); | |
15227 | + go_assert(!ln.empty()); | |
15228 | is_ln_exported = Lex::is_exported_name(ln); | |
15229 | } | |
15230 | if (ln == ".") | |
15231 | @@ -352,11 +431,10 @@ | |
15232 | Package* package = imp.import(this, local_name, is_local_name_exported); | |
15233 | if (package != NULL) | |
15234 | { | |
15235 | - if (package->name() == this->package_name() | |
15236 | - && package->unique_prefix() == this->unique_prefix()) | |
15237 | + if (package->pkgpath() == this->pkgpath()) | |
15238 | error_at(location, | |
15239 | - ("imported package uses same package name and prefix " | |
15240 | - "as package being compiled (see -fgo-prefix option)")); | |
15241 | + ("imported package uses same package path as package " | |
15242 | + "being compiled (see -fgo-pkgpath option)")); | |
15243 | ||
15244 | this->imports_.insert(std::make_pair(filename, package)); | |
15245 | package->set_is_imported(); | |
15246 | @@ -509,38 +587,21 @@ | |
15247 | Gogo::add_imported_package(const std::string& real_name, | |
15248 | const std::string& alias_arg, | |
15249 | bool is_alias_exported, | |
15250 | - const std::string& unique_prefix, | |
15251 | + const std::string& pkgpath, | |
15252 | Location location, | |
15253 | bool* padd_to_globals) | |
15254 | { | |
15255 | - // FIXME: Now that we compile packages as a whole, should we permit | |
15256 | - // importing the current package? | |
15257 | - if (this->package_name() == real_name | |
15258 | - && this->unique_prefix() == unique_prefix) | |
15259 | - { | |
15260 | - *padd_to_globals = false; | |
15261 | - if (!alias_arg.empty() && alias_arg != ".") | |
15262 | - { | |
15263 | - std::string alias = this->pack_hidden_name(alias_arg, | |
15264 | - is_alias_exported); | |
15265 | - this->package_->bindings()->add_package(alias, this->package_); | |
15266 | - } | |
15267 | - return this->package_; | |
15268 | - } | |
15269 | - else if (alias_arg == ".") | |
15270 | - { | |
15271 | - *padd_to_globals = true; | |
15272 | - return this->register_package(real_name, unique_prefix, location); | |
15273 | - } | |
15274 | + Package* ret = this->register_package(pkgpath, location); | |
15275 | + ret->set_package_name(real_name, location); | |
15276 | + | |
15277 | + *padd_to_globals = false; | |
15278 | + | |
15279 | + if (alias_arg == ".") | |
15280 | + *padd_to_globals = true; | |
15281 | else if (alias_arg == "_") | |
15282 | - { | |
15283 | - Package* ret = this->register_package(real_name, unique_prefix, location); | |
15284 | - ret->set_uses_sink_alias(); | |
15285 | - return ret; | |
15286 | - } | |
15287 | + ret->set_uses_sink_alias(); | |
15288 | else | |
15289 | { | |
15290 | - *padd_to_globals = false; | |
15291 | std::string alias = alias_arg; | |
15292 | if (alias.empty()) | |
15293 | { | |
15294 | @@ -548,57 +609,37 @@ | |
15295 | is_alias_exported = Lex::is_exported_name(alias); | |
15296 | } | |
15297 | alias = this->pack_hidden_name(alias, is_alias_exported); | |
15298 | - Named_object* no = this->add_package(real_name, alias, unique_prefix, | |
15299 | - location); | |
15300 | + Named_object* no = this->package_->bindings()->add_package(alias, ret); | |
15301 | if (!no->is_package()) | |
15302 | return NULL; | |
15303 | - return no->package_value(); | |
15304 | } | |
15305 | -} | |
15306 | ||
15307 | -// Add a package. | |
15308 | - | |
15309 | -Named_object* | |
15310 | -Gogo::add_package(const std::string& real_name, const std::string& alias, | |
15311 | - const std::string& unique_prefix, Location location) | |
15312 | -{ | |
15313 | - go_assert(this->in_global_scope()); | |
15314 | - | |
15315 | - // Register the package. Note that we might have already seen it in | |
15316 | - // an earlier import. | |
15317 | - Package* package = this->register_package(real_name, unique_prefix, location); | |
15318 | - | |
15319 | - return this->package_->bindings()->add_package(alias, package); | |
15320 | + return ret; | |
15321 | } | |
15322 | ||
15323 | // Register a package. This package may or may not be imported. This | |
15324 | // returns the Package structure for the package, creating if it | |
15325 | -// necessary. | |
15326 | +// necessary. LOCATION is the location of the import statement that | |
15327 | +// led us to see this package. | |
15328 | ||
15329 | Package* | |
15330 | -Gogo::register_package(const std::string& package_name, | |
15331 | - const std::string& unique_prefix, | |
15332 | - Location location) | |
15333 | +Gogo::register_package(const std::string& pkgpath, Location location) | |
15334 | { | |
15335 | - go_assert(!unique_prefix.empty() && !package_name.empty()); | |
15336 | - std::string name = unique_prefix + '.' + package_name; | |
15337 | Package* package = NULL; | |
15338 | std::pair<Packages::iterator, bool> ins = | |
15339 | - this->packages_.insert(std::make_pair(name, package)); | |
15340 | + this->packages_.insert(std::make_pair(pkgpath, package)); | |
15341 | if (!ins.second) | |
15342 | { | |
15343 | // We have seen this package name before. | |
15344 | package = ins.first->second; | |
15345 | - go_assert(package != NULL); | |
15346 | - go_assert(package->name() == package_name | |
15347 | - && package->unique_prefix() == unique_prefix); | |
15348 | + go_assert(package != NULL && package->pkgpath() == pkgpath); | |
15349 | if (Linemap::is_unknown_location(package->location())) | |
15350 | package->set_location(location); | |
15351 | } | |
15352 | else | |
15353 | { | |
15354 | // First time we have seen this package name. | |
15355 | - package = new Package(package_name, unique_prefix, location); | |
15356 | + package = new Package(pkgpath, location); | |
15357 | go_assert(ins.first->second == NULL); | |
15358 | ins.first->second = package; | |
15359 | } | |
15360 | @@ -1150,7 +1191,7 @@ | |
15361 | && !package->uses_sink_alias() | |
15362 | && !saw_errors()) | |
15363 | error_at(package->location(), "imported and not used: %s", | |
15364 | - Gogo::message_name(package->name()).c_str()); | |
15365 | + Gogo::message_name(package->package_name()).c_str()); | |
15366 | package->clear_is_imported(); | |
15367 | package->clear_uses_sink_alias(); | |
15368 | package->clear_used(); | |
15369 | @@ -1653,8 +1694,12 @@ | |
15370 | } | |
15371 | ||
15372 | case Type::TYPE_STRUCT: | |
15373 | + // Traverse the field types first in case there is an embedded | |
15374 | + // field with methods that the struct should inherit. | |
15375 | + if (t->struct_type()->traverse_field_types(this) == TRAVERSE_EXIT) | |
15376 | + return TRAVERSE_EXIT; | |
15377 | t->struct_type()->finalize_methods(this->gogo_); | |
15378 | - break; | |
15379 | + return TRAVERSE_SKIP_COMPONENTS; | |
15380 | ||
15381 | default: | |
15382 | break; | |
15383 | @@ -2212,13 +2257,19 @@ | |
15384 | Expression::traverse(&init, &find_eval_ordering); | |
15385 | } | |
15386 | ||
15387 | - if (find_eval_ordering.size() <= 1) | |
15388 | - { | |
15389 | - // If there is only one expression with a side-effect, we can | |
15390 | - // leave it in place. | |
15391 | - return TRAVERSE_CONTINUE; | |
15392 | - } | |
15393 | + size_t c = find_eval_ordering.size(); | |
15394 | + if (c == 0) | |
15395 | + return TRAVERSE_CONTINUE; | |
15396 | ||
15397 | + // If there is only one expression with a side-effect, we can | |
15398 | + // usually leave it in place. However, for an assignment statement, | |
15399 | + // we need to evaluate an expression on the right hand side before | |
15400 | + // we evaluate any index expression on the left hand side, so for | |
15401 | + // that case we always move the expression. Otherwise we mishandle | |
15402 | + // m[0] = len(m) where m is a map. | |
15403 | + if (c == 1 && s->classification() != Statement::STATEMENT_ASSIGNMENT) | |
15404 | + return TRAVERSE_CONTINUE; | |
15405 | + | |
15406 | bool is_thunk = s->thunk_statement() != NULL; | |
15407 | for (Find_eval_ordering::const_iterator p = find_eval_ordering.begin(); | |
15408 | p != find_eval_ordering.end(); | |
15409 | @@ -2811,27 +2862,6 @@ | |
15410 | this->traverse(&traverse); | |
15411 | } | |
15412 | ||
15413 | -// Get the unique prefix to use before all exported symbols. This | |
15414 | -// must be unique across the entire link. | |
15415 | - | |
15416 | -const std::string& | |
15417 | -Gogo::unique_prefix() const | |
15418 | -{ | |
15419 | - go_assert(!this->unique_prefix_.empty()); | |
15420 | - return this->unique_prefix_; | |
15421 | -} | |
15422 | - | |
15423 | -// Set the unique prefix to use before all exported symbols. This | |
15424 | -// comes from the command line option -fgo-prefix=XXX. | |
15425 | - | |
15426 | -void | |
15427 | -Gogo::set_unique_prefix(const std::string& arg) | |
15428 | -{ | |
15429 | - go_assert(this->unique_prefix_.empty()); | |
15430 | - this->unique_prefix_ = arg; | |
15431 | - this->unique_prefix_specified_ = true; | |
15432 | -} | |
15433 | - | |
15434 | // Work out the package priority. It is one more than the maximum | |
15435 | // priority of an imported package. | |
15436 | ||
15437 | @@ -2859,7 +2889,7 @@ | |
15438 | Export exp(&stream); | |
15439 | exp.register_builtin_types(this); | |
15440 | exp.export_globals(this->package_name(), | |
15441 | - this->unique_prefix(), | |
15442 | + this->pkgpath(), | |
15443 | this->package_priority(), | |
15444 | this->imports_, | |
15445 | (this->need_init_fn_ && !this->is_main_package() | |
15446 | @@ -3810,6 +3840,10 @@ | |
15447 | Variable::lower_init_expression(Gogo* gogo, Named_object* function, | |
15448 | Statement_inserter* inserter) | |
15449 | { | |
15450 | + Named_object* dep = gogo->var_depends_on(this); | |
15451 | + if (dep != NULL && dep->is_variable()) | |
15452 | + dep->var_value()->lower_init_expression(gogo, function, inserter); | |
15453 | + | |
15454 | if (this->init_ != NULL && !this->init_is_lowered_) | |
15455 | { | |
15456 | if (this->seen_) | |
15457 | @@ -4184,10 +4218,10 @@ | |
15458 | if (this->is_global_) | |
15459 | bvar = backend->global_variable((package == NULL | |
15460 | ? gogo->package_name() | |
15461 | - : package->name()), | |
15462 | + : package->package_name()), | |
15463 | (package == NULL | |
15464 | - ? gogo->unique_prefix() | |
15465 | - : package->unique_prefix()), | |
15466 | + ? gogo->pkgpath_symbol() | |
15467 | + : package->pkgpath_symbol()), | |
15468 | n, | |
15469 | btype, | |
15470 | package != NULL, | |
15471 | @@ -4541,7 +4575,12 @@ | |
15472 | { | |
15473 | if (this->package_ == NULL) | |
15474 | return Gogo::message_name(this->name_); | |
15475 | - std::string ret = Gogo::message_name(this->package_->name()); | |
15476 | + std::string ret; | |
15477 | + if (this->package_->has_package_name()) | |
15478 | + ret = this->package_->package_name(); | |
15479 | + else | |
15480 | + ret = this->package_->pkgpath(); | |
15481 | + ret = Gogo::message_name(ret); | |
15482 | ret += '.'; | |
15483 | ret += Gogo::message_name(this->name_); | |
15484 | return ret; | |
15485 | @@ -4931,11 +4970,6 @@ | |
15486 | break; | |
15487 | ||
15488 | case Named_object::NAMED_OBJECT_PACKAGE: | |
15489 | - if (new_object->is_package() | |
15490 | - && (old_object->package_value()->name() | |
15491 | - == new_object->package_value()->name())) | |
15492 | - return old_object; | |
15493 | - | |
15494 | break; | |
15495 | } | |
15496 | ||
15497 | @@ -5203,15 +5237,31 @@ | |
15498 | ||
15499 | // Class Package. | |
15500 | ||
15501 | -Package::Package(const std::string& name, const std::string& unique_prefix, | |
15502 | - Location location) | |
15503 | - : name_(name), unique_prefix_(unique_prefix), bindings_(new Bindings(NULL)), | |
15504 | - priority_(0), location_(location), used_(false), is_imported_(false), | |
15505 | +Package::Package(const std::string& pkgpath, Location location) | |
15506 | + : pkgpath_(pkgpath), pkgpath_symbol_(Gogo::pkgpath_for_symbol(pkgpath)), | |
15507 | + package_name_(), bindings_(new Bindings(NULL)), priority_(0), | |
15508 | + location_(location), used_(false), is_imported_(false), | |
15509 | uses_sink_alias_(false) | |
15510 | { | |
15511 | - go_assert(!name.empty() && !unique_prefix.empty()); | |
15512 | + go_assert(!pkgpath.empty()); | |
15513 | + | |
15514 | } | |
15515 | ||
15516 | +// Set the package name. | |
15517 | + | |
15518 | +void | |
15519 | +Package::set_package_name(const std::string& package_name, Location location) | |
15520 | +{ | |
15521 | + go_assert(!package_name.empty()); | |
15522 | + if (this->package_name_.empty()) | |
15523 | + this->package_name_ = package_name; | |
15524 | + else if (this->package_name_ != package_name) | |
15525 | + error_at(location, | |
15526 | + "saw two different packages with the same package path %s: %s, %s", | |
15527 | + this->pkgpath_.c_str(), this->package_name_.c_str(), | |
15528 | + package_name.c_str()); | |
15529 | +} | |
15530 | + | |
15531 | // Set the priority. We may see multiple priorities for an imported | |
15532 | // package; we want to use the largest one. | |
15533 | ||
15534 | Index: gcc/go/gofrontend/gogo.h | |
15535 | =================================================================== | |
15536 | --- gcc/go/gofrontend/gogo.h (.../tags/gcc_4_7_0_release) (wersja 187906) | |
15537 | +++ gcc/go/gofrontend/gogo.h (.../branches/gcc-4_7-branch) (wersja 187906) | |
15538 | @@ -138,16 +138,14 @@ | |
15539 | is_main_package() const; | |
15540 | ||
15541 | // If necessary, adjust the name to use for a hidden symbol. We add | |
15542 | - // a prefix of the package name, so that hidden symbols in different | |
15543 | - // packages do not collide. | |
15544 | + // the package name, so that hidden symbols in different packages do | |
15545 | + // not collide. | |
15546 | std::string | |
15547 | pack_hidden_name(const std::string& name, bool is_exported) const | |
15548 | { | |
15549 | return (is_exported | |
15550 | ? name | |
15551 | - : ('.' + this->unique_prefix() | |
15552 | - + '.' + this->package_name() | |
15553 | - + '.' + name)); | |
15554 | + : '.' + this->pkgpath() + '.' + name); | |
15555 | } | |
15556 | ||
15557 | // Unpack a name which may have been hidden. Returns the | |
15558 | @@ -161,9 +159,9 @@ | |
15559 | is_hidden_name(const std::string& name) | |
15560 | { return name[0] == '.'; } | |
15561 | ||
15562 | - // Return the package prefix of a hidden name. | |
15563 | + // Return the package path of a hidden name. | |
15564 | static std::string | |
15565 | - hidden_name_prefix(const std::string& name) | |
15566 | + hidden_name_pkgpath(const std::string& name) | |
15567 | { | |
15568 | go_assert(Gogo::is_hidden_name(name)); | |
15569 | return name.substr(1, name.rfind('.') - 1); | |
15570 | @@ -183,14 +181,31 @@ | |
15571 | && name[name.length() - 2] == '.'); | |
15572 | } | |
15573 | ||
15574 | - // Return the unique prefix to use for all exported symbols. | |
15575 | + // Convert a pkgpath into a string suitable for a symbol | |
15576 | + static std::string | |
15577 | + pkgpath_for_symbol(const std::string& pkgpath); | |
15578 | + | |
15579 | + // Return the package path to use for reflect.Type.PkgPath. | |
15580 | const std::string& | |
15581 | - unique_prefix() const; | |
15582 | + pkgpath() const; | |
15583 | ||
15584 | - // Set the unique prefix. | |
15585 | + // Return the package path to use for a symbol name. | |
15586 | + const std::string& | |
15587 | + pkgpath_symbol() const; | |
15588 | + | |
15589 | + // Set the package path from a command line option. | |
15590 | void | |
15591 | - set_unique_prefix(const std::string&); | |
15592 | + set_pkgpath(const std::string&); | |
15593 | ||
15594 | + // Set the prefix from a command line option. | |
15595 | + void | |
15596 | + set_prefix(const std::string&); | |
15597 | + | |
15598 | + // Return whether pkgpath was set from a command line option. | |
15599 | + bool | |
15600 | + pkgpath_from_option() const | |
15601 | + { return this->pkgpath_from_option_; } | |
15602 | + | |
15603 | // Return the priority to use for the package we are compiling. | |
15604 | // This is two more than the largest priority of any package we | |
15605 | // import. | |
15606 | @@ -229,7 +244,7 @@ | |
15607 | Package* | |
15608 | add_imported_package(const std::string& real_name, const std::string& alias, | |
15609 | bool is_alias_exported, | |
15610 | - const std::string& unique_prefix, | |
15611 | + const std::string& pkgpath, | |
15612 | Location location, | |
15613 | bool* padd_to_globals); | |
15614 | ||
15615 | @@ -237,8 +252,7 @@ | |
15616 | // This returns the Package structure for the package, creating if | |
15617 | // it necessary. | |
15618 | Package* | |
15619 | - register_package(const std::string& name, const std::string& unique_prefix, | |
15620 | - Location); | |
15621 | + register_package(const std::string& pkgpath, Location); | |
15622 | ||
15623 | // Start compiling a function. ADD_METHOD_TO_TYPE is true if a | |
15624 | // method function should be added to the type of its receiver. | |
15625 | @@ -384,6 +398,23 @@ | |
15626 | void | |
15627 | clear_file_scope(); | |
15628 | ||
15629 | + // Record that VAR1 must be initialized after VAR2. This is used | |
15630 | + // when VAR2 does not appear in VAR1's INIT or PREINIT. | |
15631 | + void | |
15632 | + record_var_depends_on(Variable* var1, Named_object* var2) | |
15633 | + { | |
15634 | + go_assert(this->var_deps_.find(var1) == this->var_deps_.end()); | |
15635 | + this->var_deps_[var1] = var2; | |
15636 | + } | |
15637 | + | |
15638 | + // Return the variable that VAR depends on, or NULL if none. | |
15639 | + Named_object* | |
15640 | + var_depends_on(Variable* var) const | |
15641 | + { | |
15642 | + Var_deps::const_iterator p = this->var_deps_.find(var); | |
15643 | + return p != this->var_deps_.end() ? p->second : NULL; | |
15644 | + } | |
15645 | + | |
15646 | // Queue up a type-specific function to be written out. This is | |
15647 | // used when a type-specific function is needed when not at the top | |
15648 | // level. | |
15649 | @@ -592,11 +623,6 @@ | |
15650 | void | |
15651 | import_unsafe(const std::string&, bool is_exported, Location); | |
15652 | ||
15653 | - // Add a new imported package. | |
15654 | - Named_object* | |
15655 | - add_package(const std::string& real_name, const std::string& alias, | |
15656 | - const std::string& unique_prefix, Location location); | |
15657 | - | |
15658 | // Return the current binding contour. | |
15659 | Bindings* | |
15660 | current_bindings(); | |
15661 | @@ -639,8 +665,9 @@ | |
15662 | // Type used to map package names to packages. | |
15663 | typedef std::map<std::string, Package*> Packages; | |
15664 | ||
15665 | - // Type used to map special names in the sys package. | |
15666 | - typedef std::map<std::string, std::string> Sys_names; | |
15667 | + // Type used to map variables to the function calls that set them. | |
15668 | + // This is used for initialization dependency analysis. | |
15669 | + typedef std::map<Variable*, Named_object*> Var_deps; | |
15670 | ||
15671 | // Type used to queue writing a type specific function. | |
15672 | struct Specific_type_function | |
15673 | @@ -683,16 +710,28 @@ | |
15674 | Packages packages_; | |
15675 | // The functions named "init", if there are any. | |
15676 | std::vector<Named_object*> init_functions_; | |
15677 | + // A mapping from variables to the function calls that initialize | |
15678 | + // them, if it is not stored in the variable's init or preinit. | |
15679 | + // This is used for dependency analysis. | |
15680 | + Var_deps var_deps_; | |
15681 | // Whether we need a magic initialization function. | |
15682 | bool need_init_fn_; | |
15683 | // The name of the magic initialization function. | |
15684 | std::string init_fn_name_; | |
15685 | // A list of import control variables for packages that we import. | |
15686 | std::set<Import_init> imported_init_fns_; | |
15687 | - // The unique prefix used for all global symbols. | |
15688 | - std::string unique_prefix_; | |
15689 | - // Whether an explicit unique prefix was set by -fgo-prefix. | |
15690 | - bool unique_prefix_specified_; | |
15691 | + // The package path used for reflection data. | |
15692 | + std::string pkgpath_; | |
15693 | + // The package path to use for a symbol name. | |
15694 | + std::string pkgpath_symbol_; | |
15695 | + // The prefix to use for symbols, from the -fgo-prefix option. | |
15696 | + std::string prefix_; | |
15697 | + // Whether pkgpath_ has been set. | |
15698 | + bool pkgpath_set_; | |
15699 | + // Whether an explicit package path was set by -fgo-pkgpath. | |
15700 | + bool pkgpath_from_option_; | |
15701 | + // Whether an explicit prefix was set by -fgo-prefix. | |
15702 | + bool prefix_from_option_; | |
15703 | // A list of types to verify. | |
15704 | std::vector<Type*> verify_types_; | |
15705 | // A list of interface types defined while parsing. | |
15706 | @@ -2387,28 +2426,37 @@ | |
15707 | class Package | |
15708 | { | |
15709 | public: | |
15710 | - Package(const std::string& name, const std::string& unique_prefix, | |
15711 | - Location location); | |
15712 | + Package(const std::string& pkgpath, Location location); | |
15713 | ||
15714 | - // The real name of this package. This may be different from the | |
15715 | - // name in the associated Named_object if the import statement used | |
15716 | - // an alias. | |
15717 | + // Get the package path used for all symbols exported from this | |
15718 | + // package. | |
15719 | const std::string& | |
15720 | - name() const | |
15721 | - { return this->name_; } | |
15722 | + pkgpath() const | |
15723 | + { return this->pkgpath_; } | |
15724 | ||
15725 | + // Return the package path to use for a symbol name. | |
15726 | + const std::string& | |
15727 | + pkgpath_symbol() const | |
15728 | + { return this->pkgpath_symbol_; } | |
15729 | + | |
15730 | // Return the location of the import statement. | |
15731 | Location | |
15732 | location() const | |
15733 | { return this->location_; } | |
15734 | ||
15735 | - // Get the unique prefix used for all symbols exported from this | |
15736 | - // package. | |
15737 | + // Return whether we know the name of this package yet. | |
15738 | + bool | |
15739 | + has_package_name() const | |
15740 | + { return !this->package_name_.empty(); } | |
15741 | + | |
15742 | + // The name that this package uses in its package clause. This may | |
15743 | + // be different from the name in the associated Named_object if the | |
15744 | + // import statement used an alias. | |
15745 | const std::string& | |
15746 | - unique_prefix() const | |
15747 | + package_name() const | |
15748 | { | |
15749 | - go_assert(!this->unique_prefix_.empty()); | |
15750 | - return this->unique_prefix_; | |
15751 | + go_assert(!this->package_name_.empty()); | |
15752 | + return this->package_name_; | |
15753 | } | |
15754 | ||
15755 | // The priority of this package. The init function of packages with | |
15756 | @@ -2478,9 +2526,13 @@ | |
15757 | lookup(const std::string& name) const | |
15758 | { return this->bindings_->lookup(name); } | |
15759 | ||
15760 | - // Set the location of the package. This is used if it is seen in a | |
15761 | - // different import before it is really imported. | |
15762 | + // Set the name of the package. | |
15763 | void | |
15764 | + set_package_name(const std::string& name, Location); | |
15765 | + | |
15766 | + // Set the location of the package. This is used to record the most | |
15767 | + // recent import location. | |
15768 | + void | |
15769 | set_location(Location location) | |
15770 | { this->location_ = location; } | |
15771 | ||
15772 | @@ -2515,10 +2567,13 @@ | |
15773 | determine_types(); | |
15774 | ||
15775 | private: | |
15776 | - // The real name of this package. | |
15777 | - std::string name_; | |
15778 | - // The unique prefix for all exported global symbols. | |
15779 | - std::string unique_prefix_; | |
15780 | + // The package path for type reflection data. | |
15781 | + std::string pkgpath_; | |
15782 | + // The package path for symbol names. | |
15783 | + std::string pkgpath_symbol_; | |
15784 | + // The name that this package uses in the package clause. This may | |
15785 | + // be the empty string if it is not yet known. | |
15786 | + std::string package_name_; | |
15787 | // The names in this package. | |
15788 | Bindings* bindings_; | |
15789 | // The priority of this package. A package has a priority higher | |
15790 | @@ -2791,6 +2846,9 @@ | |
15791 | // Channel capacity out of bounds in make: negative or overflow. | |
15792 | static const int RUNTIME_ERROR_MAKE_CHAN_OUT_OF_BOUNDS = 9; | |
15793 | ||
15794 | +// Division by zero. | |
15795 | +static const int RUNTIME_ERROR_DIVISION_BY_ZERO = 10; | |
15796 | + | |
15797 | // This is used by some of the langhooks. | |
15798 | extern Gogo* go_get_gogo(); | |
15799 | ||
15800 | Index: gcc/go/gofrontend/go.cc | |
15801 | =================================================================== | |
15802 | --- gcc/go/gofrontend/go.cc (.../tags/gcc_4_7_0_release) (wersja 187906) | |
15803 | +++ gcc/go/gofrontend/go.cc (.../branches/gcc-4_7-branch) (wersja 187906) | |
15804 | @@ -13,11 +13,6 @@ | |
15805 | #include "backend.h" | |
15806 | #include "gogo.h" | |
15807 | ||
15808 | -// The unique prefix to use for exported symbols. This is set during | |
15809 | -// option processing. | |
15810 | - | |
15811 | -static std::string unique_prefix; | |
15812 | - | |
15813 | // The data structures we build to represent the file. | |
15814 | static Gogo* gogo; | |
15815 | ||
15816 | @@ -25,38 +20,22 @@ | |
15817 | ||
15818 | GO_EXTERN_C | |
15819 | void | |
15820 | -go_create_gogo(int int_type_size, int pointer_size) | |
15821 | +go_create_gogo(int int_type_size, int pointer_size, const char *pkgpath, | |
15822 | + const char *prefix) | |
15823 | { | |
15824 | go_assert(::gogo == NULL); | |
15825 | Linemap* linemap = go_get_linemap(); | |
15826 | ::gogo = new Gogo(go_get_backend(), linemap, int_type_size, pointer_size); | |
15827 | - if (!unique_prefix.empty()) | |
15828 | - ::gogo->set_unique_prefix(unique_prefix); | |
15829 | ||
15830 | + if (pkgpath != NULL) | |
15831 | + ::gogo->set_pkgpath(pkgpath); | |
15832 | + else if (prefix != NULL) | |
15833 | + ::gogo->set_prefix(prefix); | |
15834 | + | |
15835 | // FIXME: This should be in the gcc dependent code. | |
15836 | ::gogo->define_builtin_function_trees(); | |
15837 | } | |
15838 | ||
15839 | -// Set the unique prefix we use for exported symbols. | |
15840 | - | |
15841 | -GO_EXTERN_C | |
15842 | -void | |
15843 | -go_set_prefix(const char* arg) | |
15844 | -{ | |
15845 | - unique_prefix = arg; | |
15846 | - for (size_t i = 0; i < unique_prefix.length(); ++i) | |
15847 | - { | |
15848 | - char c = unique_prefix[i]; | |
15849 | - if ((c >= 'a' && c <= 'z') | |
15850 | - || (c >= 'A' && c <= 'Z') | |
15851 | - || (c >= '0' && c <= '9') | |
15852 | - || c == '_') | |
15853 | - ; | |
15854 | - else | |
15855 | - unique_prefix[i] = '_'; | |
15856 | - } | |
15857 | -} | |
15858 | - | |
15859 | // Parse the input files. | |
15860 | ||
15861 | GO_EXTERN_C | |
15862 | Index: gcc/go/gofrontend/types.h | |
15863 | =================================================================== | |
15864 | --- gcc/go/gofrontend/types.h (.../tags/gcc_4_7_0_release) (wersja 187906) | |
15865 | +++ gcc/go/gofrontend/types.h (.../branches/gcc-4_7-branch) (wersja 187906) | |
15866 | @@ -680,6 +680,14 @@ | |
15867 | complex_type() const | |
15868 | { return this->convert<const Complex_type, TYPE_COMPLEX>(); } | |
15869 | ||
15870 | + // Return whether this is a numeric type. | |
15871 | + bool | |
15872 | + is_numeric_type() const | |
15873 | + { | |
15874 | + Type_classification tc = this->base()->classification_; | |
15875 | + return tc == TYPE_INTEGER || tc == TYPE_FLOAT || tc == TYPE_COMPLEX; | |
15876 | + } | |
15877 | + | |
15878 | // Return true if this is a boolean type. | |
15879 | bool | |
15880 | is_boolean_type() const | |
15881 | Index: gcc/go/gofrontend/parse.cc | |
15882 | =================================================================== | |
15883 | --- gcc/go/gofrontend/parse.cc (.../tags/gcc_4_7_0_release) (wersja 187906) | |
15884 | +++ gcc/go/gofrontend/parse.cc (.../branches/gcc-4_7-branch) (wersja 187906) | |
15885 | @@ -126,18 +126,22 @@ | |
15886 | ||
15887 | // ExpressionList = Expression { "," Expression } . | |
15888 | ||
15889 | +// If MAY_BE_COMPOSITE_LIT is true, an expression may be a composite | |
15890 | +// literal. | |
15891 | + | |
15892 | // If MAY_BE_SINK is true, the expressions in the list may be "_". | |
15893 | ||
15894 | Expression_list* | |
15895 | -Parse::expression_list(Expression* first, bool may_be_sink) | |
15896 | +Parse::expression_list(Expression* first, bool may_be_sink, | |
15897 | + bool may_be_composite_lit) | |
15898 | { | |
15899 | Expression_list* ret = new Expression_list(); | |
15900 | if (first != NULL) | |
15901 | ret->push_back(first); | |
15902 | while (true) | |
15903 | { | |
15904 | - ret->push_back(this->expression(PRECEDENCE_NORMAL, may_be_sink, true, | |
15905 | - NULL)); | |
15906 | + ret->push_back(this->expression(PRECEDENCE_NORMAL, may_be_sink, | |
15907 | + may_be_composite_lit, NULL)); | |
15908 | ||
15909 | const Token* token = this->peek_token(); | |
15910 | if (!token->is_op(OPERATOR_COMMA)) | |
15911 | @@ -319,13 +323,13 @@ | |
15912 | && package->name() != this->gogo_->package_name()) | |
15913 | { | |
15914 | // Check whether the name is there but hidden. | |
15915 | - std::string s = ('.' + package->package_value()->unique_prefix() | |
15916 | - + '.' + package->package_value()->name() | |
15917 | + std::string s = ('.' + package->package_value()->pkgpath() | |
15918 | + '.' + name); | |
15919 | named_object = package->package_value()->lookup(s); | |
15920 | if (named_object != NULL) | |
15921 | { | |
15922 | - const std::string& packname(package->package_value()->name()); | |
15923 | + Package* p = package->package_value(); | |
15924 | + const std::string& packname(p->package_name()); | |
15925 | error_at(location, "invalid reference to hidden type %<%s.%s%>", | |
15926 | Gogo::message_name(packname).c_str(), | |
15927 | Gogo::message_name(name).c_str()); | |
15928 | @@ -341,7 +345,7 @@ | |
15929 | named_object = this->gogo_->add_unknown_name(name, location); | |
15930 | else | |
15931 | { | |
15932 | - const std::string& packname(package->package_value()->name()); | |
15933 | + const std::string& packname(package->package_value()->package_name()); | |
15934 | error_at(location, "reference to undefined identifier %<%s.%s%>", | |
15935 | Gogo::message_name(packname).c_str(), | |
15936 | Gogo::message_name(name).c_str()); | |
15937 | @@ -1425,7 +1429,7 @@ | |
15938 | else | |
15939 | { | |
15940 | this->advance_token(); | |
15941 | - expr_list = this->expression_list(NULL, false); | |
15942 | + expr_list = this->expression_list(NULL, false, true); | |
15943 | *last_type = type; | |
15944 | if (*last_expr_list != NULL) | |
15945 | delete *last_expr_list; | |
15946 | @@ -1575,13 +1579,13 @@ | |
15947 | if (this->peek_token()->is_op(OPERATOR_EQ)) | |
15948 | { | |
15949 | this->advance_token(); | |
15950 | - init = this->expression_list(NULL, false); | |
15951 | + init = this->expression_list(NULL, false, true); | |
15952 | } | |
15953 | } | |
15954 | else | |
15955 | { | |
15956 | this->advance_token(); | |
15957 | - init = this->expression_list(NULL, false); | |
15958 | + init = this->expression_list(NULL, false, true); | |
15959 | } | |
15960 | ||
15961 | this->init_vars(&til, type, init, false, location); | |
15962 | @@ -1667,6 +1671,7 @@ | |
15963 | // the right number of values, but it might. Declare the variables, | |
15964 | // and then assign the results of the call to them. | |
15965 | ||
15966 | + Named_object* first_var = NULL; | |
15967 | unsigned int index = 0; | |
15968 | bool any_new = false; | |
15969 | for (Typed_identifier_list::const_iterator pv = vars->begin(); | |
15970 | @@ -1674,7 +1679,22 @@ | |
15971 | ++pv, ++index) | |
15972 | { | |
15973 | Expression* init = Expression::make_call_result(call, index); | |
15974 | - this->init_var(*pv, type, init, is_coloneq, false, &any_new); | |
15975 | + Named_object* no = this->init_var(*pv, type, init, is_coloneq, false, | |
15976 | + &any_new); | |
15977 | + | |
15978 | + if (this->gogo_->in_global_scope() && no->is_variable()) | |
15979 | + { | |
15980 | + if (first_var == NULL) | |
15981 | + first_var = no; | |
15982 | + else | |
15983 | + { | |
15984 | + // The subsequent vars have an implicit dependency on | |
15985 | + // the first one, so that everything gets initialized in | |
15986 | + // the right order and so that we detect cycles | |
15987 | + // correctly. | |
15988 | + this->gogo_->record_var_depends_on(no->var_value(), first_var); | |
15989 | + } | |
15990 | + } | |
15991 | } | |
15992 | ||
15993 | if (is_coloneq && !any_new) | |
15994 | @@ -1972,6 +1992,9 @@ | |
15995 | // In order to support both "a, b := 1, 0" and "a, b = 1, 0" we accept | |
15996 | // tuple assignments here as well. | |
15997 | ||
15998 | +// If MAY_BE_COMPOSITE_LIT is true, the expression on the right hand | |
15999 | +// side may be a composite literal. | |
16000 | + | |
16001 | // If P_RANGE_CLAUSE is not NULL, then this will recognize a | |
16002 | // RangeClause. | |
16003 | ||
16004 | @@ -1981,6 +2004,7 @@ | |
16005 | void | |
16006 | Parse::simple_var_decl_or_assignment(const std::string& name, | |
16007 | Location location, | |
16008 | + bool may_be_composite_lit, | |
16009 | Range_clause* p_range_clause, | |
16010 | Type_switch* p_type_switch) | |
16011 | { | |
16012 | @@ -2037,14 +2061,15 @@ | |
16013 | exprs->push_back(this->id_to_expression(p->name(), | |
16014 | p->location())); | |
16015 | ||
16016 | - Expression_list* more_exprs = this->expression_list(NULL, true); | |
16017 | + Expression_list* more_exprs = | |
16018 | + this->expression_list(NULL, true, may_be_composite_lit); | |
16019 | for (Expression_list::const_iterator p = more_exprs->begin(); | |
16020 | p != more_exprs->end(); | |
16021 | ++p) | |
16022 | exprs->push_back(*p); | |
16023 | delete more_exprs; | |
16024 | ||
16025 | - this->tuple_assignment(exprs, p_range_clause); | |
16026 | + this->tuple_assignment(exprs, may_be_composite_lit, p_range_clause); | |
16027 | return; | |
16028 | } | |
16029 | } | |
16030 | @@ -2060,11 +2085,12 @@ | |
16031 | ||
16032 | Expression_list* init; | |
16033 | if (p_type_switch == NULL) | |
16034 | - init = this->expression_list(NULL, false); | |
16035 | + init = this->expression_list(NULL, false, may_be_composite_lit); | |
16036 | else | |
16037 | { | |
16038 | bool is_type_switch = false; | |
16039 | - Expression* expr = this->expression(PRECEDENCE_NORMAL, false, true, | |
16040 | + Expression* expr = this->expression(PRECEDENCE_NORMAL, false, | |
16041 | + may_be_composite_lit, | |
16042 | &is_type_switch); | |
16043 | if (is_type_switch) | |
16044 | { | |
16045 | @@ -2083,7 +2109,7 @@ | |
16046 | else | |
16047 | { | |
16048 | this->advance_token(); | |
16049 | - init = this->expression_list(expr, false); | |
16050 | + init = this->expression_list(expr, false, may_be_composite_lit); | |
16051 | } | |
16052 | } | |
16053 | ||
16054 | @@ -2358,7 +2384,7 @@ | |
16055 | { | |
16056 | go_assert(package != NULL); | |
16057 | error_at(location, "invalid reference to hidden type %<%s.%s%>", | |
16058 | - Gogo::message_name(package->name()).c_str(), | |
16059 | + Gogo::message_name(package->package_name()).c_str(), | |
16060 | Gogo::message_name(id).c_str()); | |
16061 | return Expression::make_error(location); | |
16062 | } | |
16063 | @@ -2368,7 +2394,7 @@ | |
16064 | { | |
16065 | if (package != NULL) | |
16066 | { | |
16067 | - std::string n1 = Gogo::message_name(package->name()); | |
16068 | + std::string n1 = Gogo::message_name(package->package_name()); | |
16069 | std::string n2 = Gogo::message_name(id); | |
16070 | if (!is_exported) | |
16071 | error_at(location, | |
16072 | @@ -2865,7 +2891,16 @@ | |
16073 | { | |
16074 | if (this->peek_token()->is_op(OPERATOR_LCURLY)) | |
16075 | { | |
16076 | - if (is_parenthesized) | |
16077 | + if (!may_be_composite_lit) | |
16078 | + { | |
16079 | + Type* t = ret->type(); | |
16080 | + if (t->named_type() != NULL | |
16081 | + || t->forward_declaration_type() != NULL) | |
16082 | + error_at(start_loc, | |
16083 | + _("parentheses required around this composite literal" | |
16084 | + "to avoid parsing ambiguity")); | |
16085 | + } | |
16086 | + else if (is_parenthesized) | |
16087 | error_at(start_loc, | |
16088 | "cannot parenthesize type in composite literal"); | |
16089 | ret = this->composite_lit(ret->type(), 0, ret->location()); | |
16090 | @@ -3040,7 +3075,7 @@ | |
16091 | const Token* token = this->advance_token(); | |
16092 | if (!token->is_op(OPERATOR_RPAREN)) | |
16093 | { | |
16094 | - args = this->expression_list(NULL, false); | |
16095 | + args = this->expression_list(NULL, false, true); | |
16096 | token = this->peek_token(); | |
16097 | if (token->is_op(OPERATOR_ELLIPSIS)) | |
16098 | { | |
16099 | @@ -3553,6 +3588,7 @@ | |
16100 | { | |
16101 | identifier = this->gogo_->pack_hidden_name(identifier, is_exported); | |
16102 | this->simple_var_decl_or_assignment(identifier, location, | |
16103 | + may_be_composite_lit, | |
16104 | p_range_clause, | |
16105 | (token->is_op(OPERATOR_COLONEQ) | |
16106 | ? p_type_switch | |
16107 | @@ -3588,7 +3624,7 @@ | |
16108 | this->inc_dec_stat(this->verify_not_sink(exp)); | |
16109 | else if (token->is_op(OPERATOR_COMMA) | |
16110 | || token->is_op(OPERATOR_EQ)) | |
16111 | - this->assignment(exp, p_range_clause); | |
16112 | + this->assignment(exp, may_be_composite_lit, p_range_clause); | |
16113 | else if (token->is_op(OPERATOR_PLUSEQ) | |
16114 | || token->is_op(OPERATOR_MINUSEQ) | |
16115 | || token->is_op(OPERATOR_OREQ) | |
16116 | @@ -3600,7 +3636,8 @@ | |
16117 | || token->is_op(OPERATOR_RSHIFTEQ) | |
16118 | || token->is_op(OPERATOR_ANDEQ) | |
16119 | || token->is_op(OPERATOR_BITCLEAREQ)) | |
16120 | - this->assignment(this->verify_not_sink(exp), p_range_clause); | |
16121 | + this->assignment(this->verify_not_sink(exp), may_be_composite_lit, | |
16122 | + p_range_clause); | |
16123 | else if (return_exp != NULL) | |
16124 | return this->verify_not_sink(exp); | |
16125 | else | |
16126 | @@ -3706,11 +3743,15 @@ | |
16127 | ||
16128 | // EXP is an expression that we have already parsed. | |
16129 | ||
16130 | +// If MAY_BE_COMPOSITE_LIT is true, an expression on the right hand | |
16131 | +// side may be a composite literal. | |
16132 | + | |
16133 | // If RANGE_CLAUSE is not NULL, then this will recognize a | |
16134 | // RangeClause. | |
16135 | ||
16136 | void | |
16137 | -Parse::assignment(Expression* expr, Range_clause* p_range_clause) | |
16138 | +Parse::assignment(Expression* expr, bool may_be_composite_lit, | |
16139 | + Range_clause* p_range_clause) | |
16140 | { | |
16141 | Expression_list* vars; | |
16142 | if (!this->peek_token()->is_op(OPERATOR_COMMA)) | |
16143 | @@ -3721,20 +3762,24 @@ | |
16144 | else | |
16145 | { | |
16146 | this->advance_token(); | |
16147 | - vars = this->expression_list(expr, true); | |
16148 | + vars = this->expression_list(expr, true, may_be_composite_lit); | |
16149 | } | |
16150 | ||
16151 | - this->tuple_assignment(vars, p_range_clause); | |
16152 | + this->tuple_assignment(vars, may_be_composite_lit, p_range_clause); | |
16153 | } | |
16154 | ||
16155 | // An assignment statement. LHS is the list of expressions which | |
16156 | // appear on the left hand side. | |
16157 | ||
16158 | +// If MAY_BE_COMPOSITE_LIT is true, an expression on the right hand | |
16159 | +// side may be a composite literal. | |
16160 | + | |
16161 | // If RANGE_CLAUSE is not NULL, then this will recognize a | |
16162 | // RangeClause. | |
16163 | ||
16164 | void | |
16165 | -Parse::tuple_assignment(Expression_list* lhs, Range_clause* p_range_clause) | |
16166 | +Parse::tuple_assignment(Expression_list* lhs, bool may_be_composite_lit, | |
16167 | + Range_clause* p_range_clause) | |
16168 | { | |
16169 | const Token* token = this->peek_token(); | |
16170 | if (!token->is_op(OPERATOR_EQ) | |
16171 | @@ -3766,7 +3811,8 @@ | |
16172 | return; | |
16173 | } | |
16174 | ||
16175 | - Expression_list* vals = this->expression_list(NULL, false); | |
16176 | + Expression_list* vals = this->expression_list(NULL, false, | |
16177 | + may_be_composite_lit); | |
16178 | ||
16179 | // We've parsed everything; check for errors. | |
16180 | if (lhs == NULL || vals == NULL) | |
16181 | @@ -3935,7 +3981,7 @@ | |
16182 | this->advance_token(); | |
16183 | Expression_list* vals = NULL; | |
16184 | if (this->expression_may_start_here()) | |
16185 | - vals = this->expression_list(NULL, false); | |
16186 | + vals = this->expression_list(NULL, false, true); | |
16187 | this->gogo_->add_statement(Statement::make_return_statement(vals, location)); | |
16188 | ||
16189 | if (vals == NULL | |
16190 | @@ -3971,7 +4017,7 @@ | |
16191 | ||
16192 | bool saw_simple_stat = false; | |
16193 | Expression* cond = NULL; | |
16194 | - bool saw_send_stmt; | |
16195 | + bool saw_send_stmt = false; | |
16196 | if (this->simple_stat_may_start_here()) | |
16197 | { | |
16198 | cond = this->simple_stat(false, &saw_send_stmt, NULL, NULL); | |
16199 | @@ -4296,7 +4342,7 @@ | |
16200 | if (token->is_keyword(KEYWORD_CASE)) | |
16201 | { | |
16202 | this->advance_token(); | |
16203 | - return this->expression_list(NULL, false); | |
16204 | + return this->expression_list(NULL, false, true); | |
16205 | } | |
16206 | else if (token->is_keyword(KEYWORD_DEFAULT)) | |
16207 | { | |
16208 | Index: gcc/go/gofrontend/export.cc | |
16209 | =================================================================== | |
16210 | --- gcc/go/gofrontend/export.cc (.../tags/gcc_4_7_0_release) (wersja 187906) | |
16211 | +++ gcc/go/gofrontend/export.cc (.../branches/gcc-4_7-branch) (wersja 187906) | |
16212 | @@ -33,7 +33,7 @@ | |
16213 | // Constructor. | |
16214 | ||
16215 | Export::Export(Stream* stream) | |
16216 | - : stream_(stream), type_refs_(), type_index_(1) | |
16217 | + : stream_(stream), type_refs_(), type_index_(1), packages_() | |
16218 | { | |
16219 | } | |
16220 | ||
16221 | @@ -91,7 +91,7 @@ | |
16222 | ||
16223 | void | |
16224 | Export::export_globals(const std::string& package_name, | |
16225 | - const std::string& unique_prefix, | |
16226 | + const std::string& pkgpath, | |
16227 | int package_priority, | |
16228 | const std::map<std::string, Package*>& imports, | |
16229 | const std::string& import_init_fn, | |
16230 | @@ -140,9 +140,9 @@ | |
16231 | this->write_string(package_name); | |
16232 | this->write_c_string(";\n"); | |
16233 | ||
16234 | - // The unique prefix. This prefix is used for all global symbols. | |
16235 | - this->write_c_string("prefix "); | |
16236 | - this->write_string(unique_prefix); | |
16237 | + // The package path, used for all global symbols. | |
16238 | + this->write_c_string("pkgpath "); | |
16239 | + this->write_string(pkgpath); | |
16240 | this->write_c_string(";\n"); | |
16241 | ||
16242 | // The package priority. | |
16243 | @@ -209,12 +209,14 @@ | |
16244 | ++p) | |
16245 | { | |
16246 | this->write_c_string("import "); | |
16247 | - this->write_string(p->second->name()); | |
16248 | + this->write_string(p->second->package_name()); | |
16249 | this->write_c_string(" "); | |
16250 | - this->write_string(p->second->unique_prefix()); | |
16251 | + this->write_string(p->second->pkgpath()); | |
16252 | this->write_c_string(" \""); | |
16253 | this->write_string(p->first); | |
16254 | this->write_c_string("\";\n"); | |
16255 | + | |
16256 | + this->packages_.insert(p->second); | |
16257 | } | |
16258 | } | |
16259 | ||
16260 | @@ -333,7 +335,7 @@ | |
16261 | { | |
16262 | // The builtin types should have been predefined. | |
16263 | go_assert(!Linemap::is_predeclared_location(named_type->location()) | |
16264 | - || (named_type->named_object()->package()->name() | |
16265 | + || (named_type->named_object()->package()->package_name() | |
16266 | == "unsafe")); | |
16267 | named_object = named_type->named_object(); | |
16268 | } | |
16269 | @@ -345,15 +347,26 @@ | |
16270 | std::string s = "\""; | |
16271 | if (package != NULL && !Gogo::is_hidden_name(named_object->name())) | |
16272 | { | |
16273 | - s += package->unique_prefix(); | |
16274 | + s += package->pkgpath(); | |
16275 | s += '.'; | |
16276 | - s += package->name(); | |
16277 | - s += '.'; | |
16278 | } | |
16279 | s += named_object->name(); | |
16280 | s += "\" "; | |
16281 | this->write_string(s); | |
16282 | ||
16283 | + // It is possible that this type was imported indirectly, and is | |
16284 | + // not in a package in the import list. If we have not | |
16285 | + // mentioned this package before, write out the package name | |
16286 | + // here so that any package importing this one will know it. | |
16287 | + if (package != NULL | |
16288 | + && this->packages_.find(package) == this->packages_.end()) | |
16289 | + { | |
16290 | + this->write_c_string("\""); | |
16291 | + this->write_string(package->package_name()); | |
16292 | + this->packages_.insert(package); | |
16293 | + this->write_c_string("\" "); | |
16294 | + } | |
16295 | + | |
16296 | // We must add a named type to the table now, since the | |
16297 | // definition of the type may refer to the named type via a | |
16298 | // pointer. | |
16299 | Index: gcc/go/gofrontend/unsafe.cc | |
16300 | =================================================================== | |
16301 | --- gcc/go/gofrontend/unsafe.cc (.../tags/gcc_4_7_0_release) (wersja 187906) | |
16302 | +++ gcc/go/gofrontend/unsafe.cc (.../branches/gcc-4_7-branch) (wersja 187906) | |
16303 | @@ -22,8 +22,8 @@ | |
16304 | bool add_to_globals; | |
16305 | Package* package = this->add_imported_package("unsafe", local_name, | |
16306 | is_local_name_exported, | |
16307 | - "libgo_unsafe", | |
16308 | - location, &add_to_globals); | |
16309 | + "unsafe", location, | |
16310 | + &add_to_globals); | |
16311 | ||
16312 | if (package == NULL) | |
16313 | { | |
16314 | @@ -57,11 +57,11 @@ | |
16315 | if (add_to_globals) | |
16316 | this->add_named_type(pointer_type); | |
16317 | ||
16318 | - Type* int_type = this->lookup_global("int")->type_value(); | |
16319 | + Type* uintptr_type = Type::lookup_integer_type("uintptr"); | |
16320 | ||
16321 | // Sizeof. | |
16322 | Typed_identifier_list* results = new Typed_identifier_list; | |
16323 | - results->push_back(Typed_identifier("", int_type, bloc)); | |
16324 | + results->push_back(Typed_identifier("", uintptr_type, bloc)); | |
16325 | Function_type* fntype = Type::make_function_type(NULL, NULL, results, bloc); | |
16326 | fntype->set_is_builtin(); | |
16327 | no = bindings->add_function_declaration("Sizeof", package, fntype, bloc); | |
16328 | @@ -70,7 +70,7 @@ | |
16329 | ||
16330 | // Offsetof. | |
16331 | results = new Typed_identifier_list; | |
16332 | - results->push_back(Typed_identifier("", int_type, bloc)); | |
16333 | + results->push_back(Typed_identifier("", uintptr_type, bloc)); | |
16334 | fntype = Type::make_function_type(NULL, NULL, results, bloc); | |
16335 | fntype->set_is_varargs(); | |
16336 | fntype->set_is_builtin(); | |
16337 | @@ -80,7 +80,7 @@ | |
16338 | ||
16339 | // Alignof. | |
16340 | results = new Typed_identifier_list; | |
16341 | - results->push_back(Typed_identifier("", int_type, bloc)); | |
16342 | + results->push_back(Typed_identifier("", uintptr_type, bloc)); | |
16343 | fntype = Type::make_function_type(NULL, NULL, results, bloc); | |
16344 | fntype->set_is_varargs(); | |
16345 | fntype->set_is_builtin(); | |
16346 | Index: gcc/go/gofrontend/export.h | |
16347 | =================================================================== | |
16348 | --- gcc/go/gofrontend/export.h (.../tags/gcc_4_7_0_release) (wersja 187906) | |
16349 | +++ gcc/go/gofrontend/export.h (.../branches/gcc-4_7-branch) (wersja 187906) | |
16350 | @@ -117,7 +117,7 @@ | |
16351 | // Export the identifiers in BINDINGS which are marked for export. | |
16352 | // The exporting is done via a series of calls to THIS->STREAM_. If | |
16353 | // is nothing to export, this->stream_->write will not be called. | |
16354 | - // UNIQUE_PREFIX is a prefix for all global symbols. | |
16355 | + // PKGPATH is the package path. | |
16356 | // PACKAGE_PRIORITY is the priority to use for this package. | |
16357 | // IMPORT_INIT_FN is the name of the import initialization function | |
16358 | // for this package; it will be empty if none is needed. | |
16359 | @@ -125,7 +125,7 @@ | |
16360 | // imported packages. | |
16361 | void | |
16362 | export_globals(const std::string& package_name, | |
16363 | - const std::string& unique_prefix, | |
16364 | + const std::string& pkgpath, | |
16365 | int package_priority, | |
16366 | const std::map<std::string, Package*>& imports, | |
16367 | const std::string& import_init_fn, | |
16368 | @@ -182,6 +182,8 @@ | |
16369 | Type_refs type_refs_; | |
16370 | // Index number of next type. | |
16371 | int type_index_; | |
16372 | + // Packages we have written out. | |
16373 | + Unordered_set(const Package*) packages_; | |
16374 | }; | |
16375 | ||
16376 | // An export streamer which puts the export stream in a named section. | |
16377 | Index: gcc/go/gofrontend/expressions.h | |
16378 | =================================================================== | |
16379 | --- gcc/go/gofrontend/expressions.h (.../tags/gcc_4_7_0_release) (wersja 187906) | |
16380 | +++ gcc/go/gofrontend/expressions.h (.../branches/gcc-4_7-branch) (wersja 187906) | |
16381 | @@ -18,6 +18,9 @@ | |
16382 | class Statement_inserter; | |
16383 | class Type; | |
16384 | struct Type_context; | |
16385 | +class Integer_type; | |
16386 | +class Float_type; | |
16387 | +class Complex_type; | |
16388 | class Function_type; | |
16389 | class Map_type; | |
16390 | class Struct_type; | |
16391 | @@ -38,6 +41,7 @@ | |
16392 | class Interface_field_reference_expression; | |
16393 | class Type_guard_expression; | |
16394 | class Receive_expression; | |
16395 | +class Numeric_constant; | |
16396 | class Named_object; | |
16397 | class Export; | |
16398 | class Import; | |
16399 | @@ -342,31 +346,12 @@ | |
16400 | is_constant() const | |
16401 | { return this->do_is_constant(); } | |
16402 | ||
16403 | - // If this is not a constant expression with integral type, return | |
16404 | - // false. If it is one, return true, and set VAL to the value. VAL | |
16405 | - // should already be initialized. If this returns true, it sets | |
16406 | - // *PTYPE to the type of the value, or NULL for an abstract type. | |
16407 | - // If IOTA_IS_CONSTANT is true, then an iota expression is assumed | |
16408 | - // to have its final value. | |
16409 | + // If this is not a numeric constant, return false. If it is one, | |
16410 | + // return true, and set VAL to hold the value. | |
16411 | bool | |
16412 | - integer_constant_value(bool iota_is_constant, mpz_t val, Type** ptype) const; | |
16413 | + numeric_constant_value(Numeric_constant* val) const | |
16414 | + { return this->do_numeric_constant_value(val); } | |
16415 | ||
16416 | - // If this is not a constant expression with floating point type, | |
16417 | - // return false. If it is one, return true, and set VAL to the | |
16418 | - // value. VAL should already be initialized. If this returns true, | |
16419 | - // it sets *PTYPE to the type of the value, or NULL for an abstract | |
16420 | - // type. | |
16421 | - bool | |
16422 | - float_constant_value(mpfr_t val, Type** ptype) const; | |
16423 | - | |
16424 | - // If this is not a constant expression with complex type, return | |
16425 | - // false. If it is one, return true, and set REAL and IMAG to the | |
16426 | - // value. REAL and IMAG should already be initialized. If this | |
16427 | - // return strue, it sets *PTYPE to the type of the value, or NULL | |
16428 | - // for an abstract type. | |
16429 | - bool | |
16430 | - complex_constant_value(mpfr_t real, mpfr_t imag, Type** ptype) const; | |
16431 | - | |
16432 | // If this is not a constant expression with string type, return | |
16433 | // false. If it is one, return true, and set VAL to the value. | |
16434 | bool | |
16435 | @@ -691,24 +676,12 @@ | |
16436 | do_is_constant() const | |
16437 | { return false; } | |
16438 | ||
16439 | - // Return whether this is a constant expression of integral type, | |
16440 | - // and set VAL to the value. | |
16441 | + // Return whether this is a constant expression of numeric type, and | |
16442 | + // set the Numeric_constant to the value. | |
16443 | virtual bool | |
16444 | - do_integer_constant_value(bool, mpz_t, Type**) const | |
16445 | + do_numeric_constant_value(Numeric_constant*) const | |
16446 | { return false; } | |
16447 | ||
16448 | - // Return whether this is a constant expression of floating point | |
16449 | - // type, and set VAL to the value. | |
16450 | - virtual bool | |
16451 | - do_float_constant_value(mpfr_t, Type**) const | |
16452 | - { return false; } | |
16453 | - | |
16454 | - // Return whether this is a constant expression of complex type, and | |
16455 | - // set REAL and IMAGE to the value. | |
16456 | - virtual bool | |
16457 | - do_complex_constant_value(mpfr_t, mpfr_t, Type**) const | |
16458 | - { return false; } | |
16459 | - | |
16460 | // Return whether this is a constant expression of string type, and | |
16461 | // set VAL to the value. | |
16462 | virtual bool | |
16463 | @@ -869,6 +842,11 @@ | |
16464 | bool | |
16465 | contains_error() const; | |
16466 | ||
16467 | + // Retrieve an element by index. | |
16468 | + Expression*& | |
16469 | + at(size_t i) | |
16470 | + { return this->entries_.at(i); } | |
16471 | + | |
16472 | // Return the first and last elements. | |
16473 | Expression*& | |
16474 | front() | |
16475 | @@ -1189,43 +1167,22 @@ | |
16476 | right() | |
16477 | { return this->right_; } | |
16478 | ||
16479 | - // Apply binary opcode OP to LEFT_VAL and RIGHT_VAL, setting VAL. | |
16480 | - // LEFT_TYPE is the type of LEFT_VAL, RIGHT_TYPE is the type of | |
16481 | - // RIGHT_VAL; LEFT_TYPE and/or RIGHT_TYPE may be NULL. Return true | |
16482 | - // if this could be done, false if not. | |
16483 | + // Apply binary opcode OP to LEFT_NC and RIGHT_NC, setting NC. | |
16484 | + // Return true if this could be done, false if not. Issue errors at | |
16485 | + // LOCATION as appropriate. | |
16486 | static bool | |
16487 | - eval_integer(Operator op, Type* left_type, mpz_t left_val, | |
16488 | - Type* right_type, mpz_t right_val, Location, | |
16489 | - mpz_t val); | |
16490 | + eval_constant(Operator op, Numeric_constant* left_nc, | |
16491 | + Numeric_constant* right_nc, Location location, | |
16492 | + Numeric_constant* nc); | |
16493 | ||
16494 | - // Apply binary opcode OP to LEFT_VAL and RIGHT_VAL, setting VAL. | |
16495 | - // Return true if this could be done, false if not. | |
16496 | + // Compare constants LEFT_NC and RIGHT_NC according to OP, setting | |
16497 | + // *RESULT. Return true if this could be done, false if not. Issue | |
16498 | + // errors at LOCATION as appropriate. | |
16499 | static bool | |
16500 | - eval_float(Operator op, Type* left_type, mpfr_t left_val, | |
16501 | - Type* right_type, mpfr_t right_val, mpfr_t val, | |
16502 | - Location); | |
16503 | + compare_constant(Operator op, Numeric_constant* left_nc, | |
16504 | + Numeric_constant* right_nc, Location location, | |
16505 | + bool* result); | |
16506 | ||
16507 | - // Apply binary opcode OP to LEFT_REAL/LEFT_IMAG and | |
16508 | - // RIGHT_REAL/RIGHT_IMAG, setting REAL/IMAG. Return true if this | |
16509 | - // could be done, false if not. | |
16510 | - static bool | |
16511 | - eval_complex(Operator op, Type* left_type, mpfr_t left_real, | |
16512 | - mpfr_t left_imag, Type* right_type, mpfr_t right_real, | |
16513 | - mpfr_t right_imag, mpfr_t real, mpfr_t imag, Location); | |
16514 | - | |
16515 | - // Compare integer constants according to OP. | |
16516 | - static bool | |
16517 | - compare_integer(Operator op, mpz_t left_val, mpz_t right_val); | |
16518 | - | |
16519 | - // Compare floating point constants according to OP. | |
16520 | - static bool | |
16521 | - compare_float(Operator op, Type* type, mpfr_t left_val, mpfr_t right_val); | |
16522 | - | |
16523 | - // Compare complex constants according to OP. | |
16524 | - static bool | |
16525 | - compare_complex(Operator op, Type* type, mpfr_t left_real, mpfr_t left_imag, | |
16526 | - mpfr_t right_val, mpfr_t right_imag); | |
16527 | - | |
16528 | static Expression* | |
16529 | do_import(Import*); | |
16530 | ||
16531 | @@ -1246,14 +1203,8 @@ | |
16532 | { return this->left_->is_constant() && this->right_->is_constant(); } | |
16533 | ||
16534 | bool | |
16535 | - do_integer_constant_value(bool, mpz_t val, Type**) const; | |
16536 | + do_numeric_constant_value(Numeric_constant*) const; | |
16537 | ||
16538 | - bool | |
16539 | - do_float_constant_value(mpfr_t val, Type**) const; | |
16540 | - | |
16541 | - bool | |
16542 | - do_complex_constant_value(mpfr_t real, mpfr_t imag, Type**) const; | |
16543 | - | |
16544 | void | |
16545 | do_discarding_value(); | |
16546 | ||
16547 | @@ -1283,6 +1234,34 @@ | |
16548 | do_dump_expression(Ast_dump_context*) const; | |
16549 | ||
16550 | private: | |
16551 | + static bool | |
16552 | + operation_type(Operator op, Type* left_type, Type* right_type, | |
16553 | + Type** result_type); | |
16554 | + | |
16555 | + static bool | |
16556 | + cmp_to_bool(Operator op, int cmp); | |
16557 | + | |
16558 | + static bool | |
16559 | + eval_integer(Operator op, const Numeric_constant*, const Numeric_constant*, | |
16560 | + Location, Numeric_constant*); | |
16561 | + | |
16562 | + static bool | |
16563 | + eval_float(Operator op, const Numeric_constant*, const Numeric_constant*, | |
16564 | + Location, Numeric_constant*); | |
16565 | + | |
16566 | + static bool | |
16567 | + eval_complex(Operator op, const Numeric_constant*, const Numeric_constant*, | |
16568 | + Location, Numeric_constant*); | |
16569 | + | |
16570 | + static bool | |
16571 | + compare_integer(const Numeric_constant*, const Numeric_constant*, int*); | |
16572 | + | |
16573 | + static bool | |
16574 | + compare_float(const Numeric_constant*, const Numeric_constant *, int*); | |
16575 | + | |
16576 | + static bool | |
16577 | + compare_complex(const Numeric_constant*, const Numeric_constant*, int*); | |
16578 | + | |
16579 | Expression* | |
16580 | lower_struct_comparison(Gogo*, Statement_inserter*); | |
16581 | ||
16582 | @@ -2101,4 +2080,173 @@ | |
16583 | Expression* channel_; | |
16584 | }; | |
16585 | ||
16586 | +// A numeric constant. This is used both for untyped constants and | |
16587 | +// for constants that have a type. | |
16588 | + | |
16589 | +class Numeric_constant | |
16590 | +{ | |
16591 | + public: | |
16592 | + Numeric_constant() | |
16593 | + : classification_(NC_INVALID), type_(NULL) | |
16594 | + { } | |
16595 | + | |
16596 | + ~Numeric_constant(); | |
16597 | + | |
16598 | + Numeric_constant(const Numeric_constant&); | |
16599 | + | |
16600 | + Numeric_constant& operator=(const Numeric_constant&); | |
16601 | + | |
16602 | + // Set to an unsigned long value. | |
16603 | + void | |
16604 | + set_unsigned_long(Type*, unsigned long); | |
16605 | + | |
16606 | + // Set to an integer value. | |
16607 | + void | |
16608 | + set_int(Type*, const mpz_t); | |
16609 | + | |
16610 | + // Set to a rune value. | |
16611 | + void | |
16612 | + set_rune(Type*, const mpz_t); | |
16613 | + | |
16614 | + // Set to a floating point value. | |
16615 | + void | |
16616 | + set_float(Type*, const mpfr_t); | |
16617 | + | |
16618 | + // Set to a complex value. | |
16619 | + void | |
16620 | + set_complex(Type*, const mpfr_t, const mpfr_t); | |
16621 | + | |
16622 | + // Classifiers. | |
16623 | + bool | |
16624 | + is_int() const | |
16625 | + { return this->classification_ == Numeric_constant::NC_INT; } | |
16626 | + | |
16627 | + bool | |
16628 | + is_rune() const | |
16629 | + { return this->classification_ == Numeric_constant::NC_RUNE; } | |
16630 | + | |
16631 | + bool | |
16632 | + is_float() const | |
16633 | + { return this->classification_ == Numeric_constant::NC_FLOAT; } | |
16634 | + | |
16635 | + bool | |
16636 | + is_complex() const | |
16637 | + { return this->classification_ == Numeric_constant::NC_COMPLEX; } | |
16638 | + | |
16639 | + // Value retrievers. These will initialize the values as well as | |
16640 | + // set them. GET_INT is only valid if IS_INT returns true, and | |
16641 | + // likewise respectively. | |
16642 | + void | |
16643 | + get_int(mpz_t*) const; | |
16644 | + | |
16645 | + void | |
16646 | + get_rune(mpz_t*) const; | |
16647 | + | |
16648 | + void | |
16649 | + get_float(mpfr_t*) const; | |
16650 | + | |
16651 | + void | |
16652 | + get_complex(mpfr_t*, mpfr_t*) const; | |
16653 | + | |
16654 | + // Codes returned by to_unsigned_long. | |
16655 | + enum To_unsigned_long | |
16656 | + { | |
16657 | + // Value is integer and fits in unsigned long. | |
16658 | + NC_UL_VALID, | |
16659 | + // Value is not integer. | |
16660 | + NC_UL_NOTINT, | |
16661 | + // Value is integer but is negative. | |
16662 | + NC_UL_NEGATIVE, | |
16663 | + // Value is non-negative integer but does not fit in unsigned | |
16664 | + // long. | |
16665 | + NC_UL_BIG | |
16666 | + }; | |
16667 | + | |
16668 | + // If the value can be expressed as an integer that fits in an | |
16669 | + // unsigned long, set *VAL and return NC_UL_VALID. Otherwise return | |
16670 | + // one of the other To_unsigned_long codes. | |
16671 | + To_unsigned_long | |
16672 | + to_unsigned_long(unsigned long* val) const; | |
16673 | + | |
16674 | + // If the value can be expressed as an int, return true and | |
16675 | + // initialize and set VAL. This will return false for a value with | |
16676 | + // an explicit float or complex type, even if the value is integral. | |
16677 | + bool | |
16678 | + to_int(mpz_t* val) const; | |
16679 | + | |
16680 | + // If the value can be expressed as a float, return true and | |
16681 | + // initialize and set VAL. | |
16682 | + bool | |
16683 | + to_float(mpfr_t* val) const; | |
16684 | + | |
16685 | + // If the value can be expressed as a complex, return true and | |
16686 | + // initialize and set VR and VI. | |
16687 | + bool | |
16688 | + to_complex(mpfr_t* vr, mpfr_t* vi) const; | |
16689 | + | |
16690 | + // Get the type. | |
16691 | + Type* | |
16692 | + type() const; | |
16693 | + | |
16694 | + // If the constant can be expressed in TYPE, then set the type of | |
16695 | + // the constant to TYPE and return true. Otherwise return false, | |
16696 | + // and, if ISSUE_ERROR is true, issue an error message. LOCATION is | |
16697 | + // the location to use for the error. | |
16698 | + bool | |
16699 | + set_type(Type* type, bool issue_error, Location location); | |
16700 | + | |
16701 | + // Return an Expression for this value. | |
16702 | + Expression* | |
16703 | + expression(Location) const; | |
16704 | + | |
16705 | + private: | |
16706 | + void | |
16707 | + clear(); | |
16708 | + | |
16709 | + To_unsigned_long | |
16710 | + mpz_to_unsigned_long(const mpz_t ival, unsigned long *val) const; | |
16711 | + | |
16712 | + To_unsigned_long | |
16713 | + mpfr_to_unsigned_long(const mpfr_t fval, unsigned long *val) const; | |
16714 | + | |
16715 | + bool | |
16716 | + check_int_type(Integer_type*, bool, Location) const; | |
16717 | + | |
16718 | + bool | |
16719 | + check_float_type(Float_type*, bool, Location) const; | |
16720 | + | |
16721 | + bool | |
16722 | + check_complex_type(Complex_type*, bool, Location) const; | |
16723 | + | |
16724 | + // The kinds of constants. | |
16725 | + enum Classification | |
16726 | + { | |
16727 | + NC_INVALID, | |
16728 | + NC_RUNE, | |
16729 | + NC_INT, | |
16730 | + NC_FLOAT, | |
16731 | + NC_COMPLEX | |
16732 | + }; | |
16733 | + | |
16734 | + // The kind of constant. | |
16735 | + Classification classification_; | |
16736 | + // The value. | |
16737 | + union | |
16738 | + { | |
16739 | + // If NC_INT or NC_RUNE. | |
16740 | + mpz_t int_val; | |
16741 | + // If NC_FLOAT. | |
16742 | + mpfr_t float_val; | |
16743 | + // If NC_COMPLEX. | |
16744 | + struct | |
16745 | + { | |
16746 | + mpfr_t real; | |
16747 | + mpfr_t imag; | |
16748 | + } complex_val; | |
16749 | + } u_; | |
16750 | + // The type if there is one. This will be NULL for an untyped | |
16751 | + // constant. | |
16752 | + Type* type_; | |
16753 | +}; | |
16754 | + | |
16755 | #endif // !defined(GO_EXPRESSIONS_H) | |
16756 | Index: gcc/go/gofrontend/statements.cc | |
16757 | =================================================================== | |
16758 | --- gcc/go/gofrontend/statements.cc (.../tags/gcc_4_7_0_release) (wersja 187906) | |
16759 | +++ gcc/go/gofrontend/statements.cc (.../branches/gcc-4_7-branch) (wersja 187906) | |
16760 | @@ -3214,10 +3214,9 @@ | |
16761 | size_t | |
16762 | Case_clauses::Hash_integer_value::operator()(Expression* pe) const | |
16763 | { | |
16764 | - Type* itype; | |
16765 | + Numeric_constant nc; | |
16766 | mpz_t ival; | |
16767 | - mpz_init(ival); | |
16768 | - if (!pe->integer_constant_value(true, ival, &itype)) | |
16769 | + if (!pe->numeric_constant_value(&nc) || !nc.to_int(&ival)) | |
16770 | go_unreachable(); | |
16771 | size_t ret = mpz_get_ui(ival); | |
16772 | mpz_clear(ival); | |
16773 | @@ -3236,14 +3235,14 @@ | |
16774 | bool | |
16775 | Case_clauses::Eq_integer_value::operator()(Expression* a, Expression* b) const | |
16776 | { | |
16777 | - Type* atype; | |
16778 | - Type* btype; | |
16779 | + Numeric_constant anc; | |
16780 | mpz_t aval; | |
16781 | + Numeric_constant bnc; | |
16782 | mpz_t bval; | |
16783 | - mpz_init(aval); | |
16784 | - mpz_init(bval); | |
16785 | - if (!a->integer_constant_value(true, aval, &atype) | |
16786 | - || !b->integer_constant_value(true, bval, &btype)) | |
16787 | + if (!a->numeric_constant_value(&anc) | |
16788 | + || !anc.to_int(&aval) | |
16789 | + || !b->numeric_constant_value(&bnc) | |
16790 | + || !bnc.to_int(&bval)) | |
16791 | go_unreachable(); | |
16792 | bool ret = mpz_cmp(aval, bval) == 0; | |
16793 | mpz_clear(aval); | |
16794 | @@ -3431,18 +3430,17 @@ | |
16795 | Expression* e = *p; | |
16796 | if (e->classification() != Expression::EXPRESSION_INTEGER) | |
16797 | { | |
16798 | - Type* itype; | |
16799 | + Numeric_constant nc; | |
16800 | mpz_t ival; | |
16801 | - mpz_init(ival); | |
16802 | - if (!(*p)->integer_constant_value(true, ival, &itype)) | |
16803 | + if (!(*p)->numeric_constant_value(&nc) || !nc.to_int(&ival)) | |
16804 | { | |
16805 | // Something went wrong. This can happen with a | |
16806 | // negative constant and an unsigned switch value. | |
16807 | go_assert(saw_errors()); | |
16808 | continue; | |
16809 | } | |
16810 | - go_assert(itype != NULL); | |
16811 | - e = Expression::make_integer(&ival, itype, e->location()); | |
16812 | + go_assert(nc.type() != NULL); | |
16813 | + e = Expression::make_integer(&ival, nc.type(), e->location()); | |
16814 | mpz_clear(ival); | |
16815 | } | |
16816 | ||
16817 | Index: gcc/go/gofrontend/gogo-tree.cc | |
16818 | =================================================================== | |
16819 | --- gcc/go/gofrontend/gogo-tree.cc (.../tags/gcc_4_7_0_release) (wersja 187906) | |
16820 | +++ gcc/go/gofrontend/gogo-tree.cc (.../branches/gcc-4_7-branch) (wersja 187906) | |
16821 | @@ -260,9 +260,7 @@ | |
16822 | } | |
16823 | else | |
16824 | { | |
16825 | - std::string s = this->unique_prefix(); | |
16826 | - s.append(1, '.'); | |
16827 | - s.append(this->package_name()); | |
16828 | + std::string s = this->pkgpath_symbol(); | |
16829 | s.append("..import"); | |
16830 | this->init_fn_name_ = s; | |
16831 | } | |
16832 | @@ -403,7 +401,7 @@ | |
16833 | ||
16834 | // Build a constructor for the struct. | |
16835 | ||
16836 | - VEC(constructor_elt,gc*) root_list_init = VEC_alloc(constructor_elt, gc, 2); | |
16837 | + VEC(constructor_elt,gc)* root_list_init = VEC_alloc(constructor_elt, gc, 2); | |
16838 | ||
16839 | elt = VEC_quick_push(constructor_elt, root_list_init, NULL); | |
16840 | field = TYPE_FIELDS(root_list_type); | |
16841 | @@ -591,10 +589,11 @@ | |
16842 | return TRAVERSE_CONTINUE; | |
16843 | } | |
16844 | ||
16845 | -// Return true if EXPR refers to VAR. | |
16846 | +// Return true if EXPR, PREINIT, or DEP refers to VAR. | |
16847 | ||
16848 | static bool | |
16849 | -expression_requires(Expression* expr, Block* preinit, Named_object* var) | |
16850 | +expression_requires(Expression* expr, Block* preinit, Named_object* dep, | |
16851 | + Named_object* var) | |
16852 | { | |
16853 | Find_var::Seen_objects seen_objects; | |
16854 | Find_var find_var(var, &seen_objects); | |
16855 | @@ -602,7 +601,15 @@ | |
16856 | Expression::traverse(&expr, &find_var); | |
16857 | if (preinit != NULL) | |
16858 | preinit->traverse(&find_var); | |
16859 | - | |
16860 | + if (dep != NULL) | |
16861 | + { | |
16862 | + Expression* init = dep->var_value()->init(); | |
16863 | + if (init != NULL) | |
16864 | + Expression::traverse(&init, &find_var); | |
16865 | + if (dep->var_value()->has_pre_init()) | |
16866 | + dep->var_value()->preinit()->traverse(&find_var); | |
16867 | + } | |
16868 | + | |
16869 | return find_var.found(); | |
16870 | } | |
16871 | ||
16872 | @@ -659,7 +666,7 @@ | |
16873 | // variable V2 then we initialize V1 after V2. | |
16874 | ||
16875 | static void | |
16876 | -sort_var_inits(Var_inits* var_inits) | |
16877 | +sort_var_inits(Gogo* gogo, Var_inits* var_inits) | |
16878 | { | |
16879 | Var_inits ready; | |
16880 | while (!var_inits->empty()) | |
16881 | @@ -668,6 +675,7 @@ | |
16882 | Named_object* var = p1->var(); | |
16883 | Expression* init = var->var_value()->init(); | |
16884 | Block* preinit = var->var_value()->preinit(); | |
16885 | + Named_object* dep = gogo->var_depends_on(var->var_value()); | |
16886 | ||
16887 | // Start walking through the list to see which variables VAR | |
16888 | // needs to wait for. We can skip P1->WAITING variables--that | |
16889 | @@ -679,20 +687,22 @@ | |
16890 | ||
16891 | for (; p2 != var_inits->end(); ++p2) | |
16892 | { | |
16893 | - if (expression_requires(init, preinit, p2->var())) | |
16894 | + Named_object* p2var = p2->var(); | |
16895 | + if (expression_requires(init, preinit, dep, p2var)) | |
16896 | { | |
16897 | // Check for cycles. | |
16898 | - if (expression_requires(p2->var()->var_value()->init(), | |
16899 | - p2->var()->var_value()->preinit(), | |
16900 | + if (expression_requires(p2var->var_value()->init(), | |
16901 | + p2var->var_value()->preinit(), | |
16902 | + gogo->var_depends_on(p2var->var_value()), | |
16903 | var)) | |
16904 | { | |
16905 | error_at(var->location(), | |
16906 | ("initialization expressions for %qs and " | |
16907 | "%qs depend upon each other"), | |
16908 | var->message_name().c_str(), | |
16909 | - p2->var()->message_name().c_str()); | |
16910 | + p2var->message_name().c_str()); | |
16911 | inform(p2->var()->location(), "%qs defined here", | |
16912 | - p2->var()->message_name().c_str()); | |
16913 | + p2var->message_name().c_str()); | |
16914 | p2 = var_inits->end(); | |
16915 | } | |
16916 | else | |
16917 | @@ -715,9 +725,11 @@ | |
16918 | // VAR does not depends upon any other initialization expressions. | |
16919 | ||
16920 | // Check for a loop of VAR on itself. We only do this if | |
16921 | - // INIT is not NULL; when INIT is NULL, it means that | |
16922 | - // PREINIT sets VAR, which we will interpret as a loop. | |
16923 | - if (init != NULL && expression_requires(init, preinit, var)) | |
16924 | + // INIT is not NULL and there is no dependency; when INIT is | |
16925 | + // NULL, it means that PREINIT sets VAR, which we will | |
16926 | + // interpret as a loop. | |
16927 | + if (init != NULL && dep == NULL | |
16928 | + && expression_requires(init, preinit, NULL, var)) | |
16929 | error_at(var->location(), | |
16930 | "initialization expression for %qs depends upon itself", | |
16931 | var->message_name().c_str()); | |
16932 | @@ -784,7 +796,7 @@ | |
16933 | } | |
16934 | ||
16935 | // There is nothing useful we can output for constants which | |
16936 | - // have ideal or non-integeral type. | |
16937 | + // have ideal or non-integral type. | |
16938 | if (no->is_const()) | |
16939 | { | |
16940 | Type* type = no->const_value()->type(); | |
16941 | @@ -835,7 +847,9 @@ | |
16942 | ; | |
16943 | else if (TREE_CONSTANT(init)) | |
16944 | { | |
16945 | - if (expression_requires(no->var_value()->init(), NULL, no)) | |
16946 | + if (expression_requires(no->var_value()->init(), NULL, | |
16947 | + this->var_depends_on(no->var_value()), | |
16948 | + no)) | |
16949 | error_at(no->location(), | |
16950 | "initialization expression for %qs depends " | |
16951 | "upon itself", | |
16952 | @@ -880,6 +894,14 @@ | |
16953 | else | |
16954 | var_inits.push_back(Var_init(no, var_init_tree)); | |
16955 | } | |
16956 | + else if (this->var_depends_on(no->var_value()) != NULL) | |
16957 | + { | |
16958 | + // This variable is initialized from something that is | |
16959 | + // not in its init or preinit. This variable needs to | |
16960 | + // participate in dependency analysis sorting, in case | |
16961 | + // some other variable depends on this one. | |
16962 | + var_inits.push_back(Var_init(no, integer_zero_node)); | |
16963 | + } | |
16964 | ||
16965 | if (!is_sink && no->var_value()->type()->has_pointer()) | |
16966 | var_gc.push_back(no); | |
16967 | @@ -897,7 +919,7 @@ | |
16968 | // workable order. | |
16969 | if (!var_inits.empty()) | |
16970 | { | |
16971 | - sort_var_inits(&var_inits); | |
16972 | + sort_var_inits(this, &var_inits); | |
16973 | for (Var_inits::const_iterator p = var_inits.begin(); | |
16974 | p != var_inits.end(); | |
16975 | ++p) | |
16976 | @@ -961,7 +983,7 @@ | |
16977 | if (this->package_ == NULL) | |
16978 | package_name = gogo->package_name(); | |
16979 | else | |
16980 | - package_name = this->package_->name(); | |
16981 | + package_name = this->package_->package_name(); | |
16982 | ||
16983 | decl_name = package_name + '.' + Gogo::unpack_hidden_name(this->name_); | |
16984 | ||
16985 | @@ -982,7 +1004,7 @@ | |
16986 | { | |
16987 | const Named_object* in_function = this->type_value()->in_function(); | |
16988 | if (in_function != NULL) | |
16989 | - decl_name += '$' + in_function->name(); | |
16990 | + decl_name += '$' + Gogo::unpack_hidden_name(in_function->name()); | |
16991 | } | |
16992 | return get_identifier_from_string(decl_name); | |
16993 | } | |
16994 | @@ -1254,9 +1276,15 @@ | |
16995 | || this->type_->is_method()) | |
16996 | { | |
16997 | TREE_PUBLIC(decl) = 1; | |
16998 | - std::string asm_name = gogo->unique_prefix(); | |
16999 | + std::string asm_name = gogo->pkgpath_symbol(); | |
17000 | asm_name.append(1, '.'); | |
17001 | - asm_name.append(IDENTIFIER_POINTER(id), IDENTIFIER_LENGTH(id)); | |
17002 | + asm_name.append(Gogo::unpack_hidden_name(no->name())); | |
17003 | + if (this->type_->is_method()) | |
17004 | + { | |
17005 | + asm_name.append(1, '.'); | |
17006 | + Type* rtype = this->type_->receiver()->type(); | |
17007 | + asm_name.append(rtype->mangled_name(gogo)); | |
17008 | + } | |
17009 | SET_DECL_ASSEMBLER_NAME(decl, | |
17010 | get_identifier_from_string(asm_name)); | |
17011 | } | |
17012 | @@ -1359,10 +1387,16 @@ | |
17013 | if (this->asm_name_.empty()) | |
17014 | { | |
17015 | std::string asm_name = (no->package() == NULL | |
17016 | - ? gogo->unique_prefix() | |
17017 | - : no->package()->unique_prefix()); | |
17018 | + ? gogo->pkgpath_symbol() | |
17019 | + : no->package()->pkgpath_symbol()); | |
17020 | asm_name.append(1, '.'); | |
17021 | - asm_name.append(IDENTIFIER_POINTER(id), IDENTIFIER_LENGTH(id)); | |
17022 | + asm_name.append(Gogo::unpack_hidden_name(no->name())); | |
17023 | + if (this->fntype_->is_method()) | |
17024 | + { | |
17025 | + asm_name.append(1, '.'); | |
17026 | + Type* rtype = this->fntype_->receiver()->type(); | |
17027 | + asm_name.append(rtype->mangled_name(gogo)); | |
17028 | + } | |
17029 | SET_DECL_ASSEMBLER_NAME(decl, | |
17030 | get_identifier_from_string(asm_name)); | |
17031 | } | |
17032 | Index: gcc/go/gofrontend/lex.cc | |
17033 | =================================================================== | |
17034 | --- gcc/go/gofrontend/lex.cc (.../tags/gcc_4_7_0_release) (wersja 187906) | |
17035 | +++ gcc/go/gofrontend/lex.cc (.../branches/gcc-4_7-branch) (wersja 187906) | |
17036 | @@ -1012,7 +1012,9 @@ | |
17037 | } | |
17038 | } | |
17039 | ||
17040 | - if (*p != '.' && *p != 'i' && !Lex::could_be_exponent(p, pend)) | |
17041 | + // A partial token that looks like an octal literal might actually be the | |
17042 | + // beginning of a floating-point or imaginary literal. | |
17043 | + if (base == 16 || (*p != '.' && *p != 'i' && !Lex::could_be_exponent(p, pend))) | |
17044 | { | |
17045 | std::string s(pnum, p - pnum); | |
17046 | mpz_t val; | |
17047 | Index: gcc/go/gofrontend/backend.h | |
17048 | =================================================================== | |
17049 | --- gcc/go/gofrontend/backend.h (.../tags/gcc_4_7_0_release) (wersja 187906) | |
17050 | +++ gcc/go/gofrontend/backend.h (.../branches/gcc-4_7-branch) (wersja 187906) | |
17051 | @@ -321,16 +321,16 @@ | |
17052 | error_variable() = 0; | |
17053 | ||
17054 | // Create a global variable. PACKAGE_NAME is the name of the | |
17055 | - // package where the variable is defined. UNIQUE_PREFIX is the | |
17056 | - // prefix for that package, from the -fgo-prefix option. NAME is | |
17057 | - // the name of the variable. BTYPE is the type of the variable. | |
17058 | - // IS_EXTERNAL is true if the variable is defined in some other | |
17059 | - // package. IS_HIDDEN is true if the variable is not exported (name | |
17060 | - // begins with a lower case letter). LOCATION is where the variable | |
17061 | - // was defined. | |
17062 | + // package where the variable is defined. PKGPATH is the package | |
17063 | + // path for that package, from the -fgo-pkgpath or -fgo-prefix | |
17064 | + // option. NAME is the name of the variable. BTYPE is the type of | |
17065 | + // the variable. IS_EXTERNAL is true if the variable is defined in | |
17066 | + // some other package. IS_HIDDEN is true if the variable is not | |
17067 | + // exported (name begins with a lower case letter). LOCATION is | |
17068 | + // where the variable was defined. | |
17069 | virtual Bvariable* | |
17070 | global_variable(const std::string& package_name, | |
17071 | - const std::string& unique_prefix, | |
17072 | + const std::string& pkgpath, | |
17073 | const std::string& name, | |
17074 | Btype* btype, | |
17075 | bool is_external, | |
17076 | Index: gcc/go/gofrontend/types.cc | |
17077 | =================================================================== | |
17078 | --- gcc/go/gofrontend/types.cc (.../tags/gcc_4_7_0_release) (wersja 187906) | |
17079 | +++ gcc/go/gofrontend/types.cc (.../branches/gcc-4_7-branch) (wersja 187906) | |
17080 | @@ -1301,23 +1301,31 @@ | |
17081 | go_assert(in_function == NULL); | |
17082 | else | |
17083 | { | |
17084 | - const std::string& unique_prefix(no->package() == NULL | |
17085 | - ? gogo->unique_prefix() | |
17086 | - : no->package()->unique_prefix()); | |
17087 | - const std::string& package_name(no->package() == NULL | |
17088 | - ? gogo->package_name() | |
17089 | - : no->package()->name()); | |
17090 | - ret.append(unique_prefix); | |
17091 | + const std::string& pkgpath(no->package() == NULL | |
17092 | + ? gogo->pkgpath_symbol() | |
17093 | + : no->package()->pkgpath_symbol()); | |
17094 | + ret.append(pkgpath); | |
17095 | ret.append(1, '.'); | |
17096 | - ret.append(package_name); | |
17097 | - ret.append(1, '.'); | |
17098 | if (in_function != NULL) | |
17099 | { | |
17100 | ret.append(Gogo::unpack_hidden_name(in_function->name())); | |
17101 | ret.append(1, '.'); | |
17102 | } | |
17103 | } | |
17104 | - ret.append(no->name()); | |
17105 | + | |
17106 | + // FIXME: This adds in pkgpath twice for hidden symbols, which is | |
17107 | + // pointless. | |
17108 | + const std::string& name(no->name()); | |
17109 | + if (!Gogo::is_hidden_name(name)) | |
17110 | + ret.append(name); | |
17111 | + else | |
17112 | + { | |
17113 | + ret.append(1, '.'); | |
17114 | + ret.append(Gogo::pkgpath_for_symbol(Gogo::hidden_name_pkgpath(name))); | |
17115 | + ret.append(1, '.'); | |
17116 | + ret.append(Gogo::unpack_hidden_name(name)); | |
17117 | + } | |
17118 | + | |
17119 | return ret; | |
17120 | } | |
17121 | ||
17122 | @@ -1740,7 +1748,7 @@ | |
17123 | base_name = name->name(); | |
17124 | const Named_object* in_function = name->in_function(); | |
17125 | if (in_function != NULL) | |
17126 | - base_name += '$' + in_function->name(); | |
17127 | + base_name += '$' + Gogo::unpack_hidden_name(in_function->name()); | |
17128 | } | |
17129 | std::string hash_name = base_name + "$hash"; | |
17130 | std::string equal_name = base_name + "$equal"; | |
17131 | @@ -1977,15 +1985,10 @@ | |
17132 | else | |
17133 | { | |
17134 | const Package* package = no->package(); | |
17135 | - const std::string& unique_prefix(package == NULL | |
17136 | - ? gogo->unique_prefix() | |
17137 | - : package->unique_prefix()); | |
17138 | - const std::string& package_name(package == NULL | |
17139 | - ? gogo->package_name() | |
17140 | - : package->name()); | |
17141 | - n.assign(unique_prefix); | |
17142 | - n.append(1, '.'); | |
17143 | - n.append(package_name); | |
17144 | + const std::string& pkgpath(package == NULL | |
17145 | + ? gogo->pkgpath() | |
17146 | + : package->pkgpath()); | |
17147 | + n.assign(pkgpath); | |
17148 | if (name->in_function() != NULL) | |
17149 | { | |
17150 | n.append(1, '.'); | |
17151 | @@ -2096,7 +2099,8 @@ | |
17152 | vals->push_back(Expression::make_nil(bloc)); | |
17153 | else | |
17154 | { | |
17155 | - s = Expression::make_string(Gogo::hidden_name_prefix(method_name), bloc); | |
17156 | + s = Expression::make_string(Gogo::hidden_name_pkgpath(method_name), | |
17157 | + bloc); | |
17158 | vals->push_back(Expression::make_unary(OPERATOR_AND, s, bloc)); | |
17159 | } | |
17160 | ||
17161 | @@ -2230,15 +2234,13 @@ | |
17162 | return true; | |
17163 | else | |
17164 | { | |
17165 | + Numeric_constant nc; | |
17166 | + if (!at->length()->numeric_constant_value(&nc)) | |
17167 | + return false; | |
17168 | mpz_t ival; | |
17169 | - mpz_init(ival); | |
17170 | - Type* dummy; | |
17171 | - bool length_known = at->length()->integer_constant_value(true, | |
17172 | - ival, | |
17173 | - &dummy); | |
17174 | + if (!nc.to_int(&ival)) | |
17175 | + return false; | |
17176 | mpz_clear(ival); | |
17177 | - if (!length_known) | |
17178 | - return false; | |
17179 | return at->element_type()->is_backend_type_size_known(gogo); | |
17180 | } | |
17181 | } | |
17182 | @@ -4670,7 +4672,7 @@ | |
17183 | fvals->push_back(Expression::make_nil(bloc)); | |
17184 | else | |
17185 | { | |
17186 | - std::string n = Gogo::hidden_name_prefix(pf->field_name()); | |
17187 | + std::string n = Gogo::hidden_name_pkgpath(pf->field_name()); | |
17188 | Expression* s = Expression::make_string(n, bloc); | |
17189 | fvals->push_back(Expression::make_unary(OPERATOR_AND, s, bloc)); | |
17190 | } | |
17191 | @@ -5106,17 +5108,22 @@ | |
17192 | // Try to determine the lengths. If we can't, assume the arrays | |
17193 | // are not identical. | |
17194 | bool ret = false; | |
17195 | - mpz_t v1; | |
17196 | - mpz_init(v1); | |
17197 | - Type* type1; | |
17198 | - mpz_t v2; | |
17199 | - mpz_init(v2); | |
17200 | - Type* type2; | |
17201 | - if (l1->integer_constant_value(true, v1, &type1) | |
17202 | - && l2->integer_constant_value(true, v2, &type2)) | |
17203 | - ret = mpz_cmp(v1, v2) == 0; | |
17204 | - mpz_clear(v1); | |
17205 | - mpz_clear(v2); | |
17206 | + Numeric_constant nc1, nc2; | |
17207 | + if (l1->numeric_constant_value(&nc1) | |
17208 | + && l2->numeric_constant_value(&nc2)) | |
17209 | + { | |
17210 | + mpz_t v1; | |
17211 | + if (nc1.to_int(&v1)) | |
17212 | + { | |
17213 | + mpz_t v2; | |
17214 | + if (nc2.to_int(&v2)) | |
17215 | + { | |
17216 | + ret = mpz_cmp(v1, v2) == 0; | |
17217 | + mpz_clear(v2); | |
17218 | + } | |
17219 | + mpz_clear(v1); | |
17220 | + } | |
17221 | + } | |
17222 | return ret; | |
17223 | } | |
17224 | ||
17225 | @@ -5154,58 +5161,44 @@ | |
17226 | return false; | |
17227 | } | |
17228 | ||
17229 | - mpz_t val; | |
17230 | - mpz_init(val); | |
17231 | - Type* vt; | |
17232 | - if (!this->length_->integer_constant_value(true, val, &vt)) | |
17233 | + Numeric_constant nc; | |
17234 | + if (!this->length_->numeric_constant_value(&nc)) | |
17235 | { | |
17236 | - mpfr_t fval; | |
17237 | - mpfr_init(fval); | |
17238 | - if (!this->length_->float_constant_value(fval, &vt)) | |
17239 | - { | |
17240 | - if (this->length_->type()->integer_type() != NULL | |
17241 | - || this->length_->type()->float_type() != NULL) | |
17242 | - error_at(this->length_->location(), | |
17243 | - "array bound is not constant"); | |
17244 | - else | |
17245 | - error_at(this->length_->location(), | |
17246 | - "array bound is not numeric"); | |
17247 | - mpfr_clear(fval); | |
17248 | - mpz_clear(val); | |
17249 | - return false; | |
17250 | - } | |
17251 | - if (!mpfr_integer_p(fval)) | |
17252 | - { | |
17253 | - error_at(this->length_->location(), | |
17254 | - "array bound truncated to integer"); | |
17255 | - mpfr_clear(fval); | |
17256 | - mpz_clear(val); | |
17257 | - return false; | |
17258 | - } | |
17259 | - mpz_init(val); | |
17260 | - mpfr_get_z(val, fval, GMP_RNDN); | |
17261 | - mpfr_clear(fval); | |
17262 | + if (this->length_->type()->integer_type() != NULL | |
17263 | + || this->length_->type()->float_type() != NULL) | |
17264 | + error_at(this->length_->location(), "array bound is not constant"); | |
17265 | + else | |
17266 | + error_at(this->length_->location(), "array bound is not numeric"); | |
17267 | + return false; | |
17268 | } | |
17269 | ||
17270 | - if (mpz_sgn(val) < 0) | |
17271 | + unsigned long val; | |
17272 | + switch (nc.to_unsigned_long(&val)) | |
17273 | { | |
17274 | + case Numeric_constant::NC_UL_VALID: | |
17275 | + break; | |
17276 | + case Numeric_constant::NC_UL_NOTINT: | |
17277 | + error_at(this->length_->location(), "array bound truncated to integer"); | |
17278 | + return false; | |
17279 | + case Numeric_constant::NC_UL_NEGATIVE: | |
17280 | error_at(this->length_->location(), "negative array bound"); | |
17281 | - mpz_clear(val); | |
17282 | return false; | |
17283 | + case Numeric_constant::NC_UL_BIG: | |
17284 | + error_at(this->length_->location(), "array bound overflows"); | |
17285 | + return false; | |
17286 | + default: | |
17287 | + go_unreachable(); | |
17288 | } | |
17289 | ||
17290 | Type* int_type = Type::lookup_integer_type("int"); | |
17291 | - int tbits = int_type->integer_type()->bits(); | |
17292 | - int vbits = mpz_sizeinbase(val, 2); | |
17293 | - if (vbits + 1 > tbits) | |
17294 | + unsigned int tbits = int_type->integer_type()->bits(); | |
17295 | + if (sizeof(val) <= tbits * 8 | |
17296 | + && val >> (tbits - 1) != 0) | |
17297 | { | |
17298 | error_at(this->length_->location(), "array bound overflows"); | |
17299 | - mpz_clear(val); | |
17300 | return false; | |
17301 | } | |
17302 | ||
17303 | - mpz_clear(val); | |
17304 | - | |
17305 | return true; | |
17306 | } | |
17307 | ||
17308 | @@ -5457,11 +5450,16 @@ | |
17309 | go_assert(this->length_ != NULL); | |
17310 | if (this->length_tree_ == NULL_TREE) | |
17311 | { | |
17312 | + Numeric_constant nc; | |
17313 | mpz_t val; | |
17314 | - mpz_init(val); | |
17315 | - Type* t; | |
17316 | - if (this->length_->integer_constant_value(true, val, &t)) | |
17317 | + if (this->length_->numeric_constant_value(&nc) && nc.to_int(&val)) | |
17318 | { | |
17319 | + if (mpz_sgn(val) < 0) | |
17320 | + { | |
17321 | + this->length_tree_ = error_mark_node; | |
17322 | + return this->length_tree_; | |
17323 | + } | |
17324 | + Type* t = nc.type(); | |
17325 | if (t == NULL) | |
17326 | t = Type::lookup_integer_type("int"); | |
17327 | else if (t->is_abstract()) | |
17328 | @@ -5472,8 +5470,6 @@ | |
17329 | } | |
17330 | else | |
17331 | { | |
17332 | - mpz_clear(val); | |
17333 | - | |
17334 | // Make up a translation context for the array length | |
17335 | // expression. FIXME: This won't work in general. | |
17336 | Translate_context context(gogo, NULL, NULL, NULL); | |
17337 | @@ -5824,23 +5820,17 @@ | |
17338 | ret->push_back('['); | |
17339 | if (this->length_ != NULL) | |
17340 | { | |
17341 | - mpz_t val; | |
17342 | - mpz_init(val); | |
17343 | - Type* type; | |
17344 | - if (!this->length_->integer_constant_value(true, val, &type)) | |
17345 | - error_at(this->length_->location(), | |
17346 | - "array length must be integer constant expression"); | |
17347 | - else if (mpz_cmp_si(val, 0) < 0) | |
17348 | - error_at(this->length_->location(), "array length is negative"); | |
17349 | - else if (mpz_cmp_ui(val, mpz_get_ui(val)) != 0) | |
17350 | - error_at(this->length_->location(), "array length is too large"); | |
17351 | + Numeric_constant nc; | |
17352 | + unsigned long val; | |
17353 | + if (!this->length_->numeric_constant_value(&nc) | |
17354 | + || nc.to_unsigned_long(&val) != Numeric_constant::NC_UL_VALID) | |
17355 | + error_at(this->length_->location(), "invalid array length"); | |
17356 | else | |
17357 | { | |
17358 | char buf[50]; | |
17359 | - snprintf(buf, sizeof buf, "%lu", mpz_get_ui(val)); | |
17360 | + snprintf(buf, sizeof buf, "%lu", val); | |
17361 | ret->append(buf); | |
17362 | } | |
17363 | - mpz_clear(val); | |
17364 | } | |
17365 | ret->push_back(']'); | |
17366 | ||
17367 | @@ -5856,23 +5846,17 @@ | |
17368 | this->append_mangled_name(this->element_type_, gogo, ret); | |
17369 | if (this->length_ != NULL) | |
17370 | { | |
17371 | - mpz_t val; | |
17372 | - mpz_init(val); | |
17373 | - Type* type; | |
17374 | - if (!this->length_->integer_constant_value(true, val, &type)) | |
17375 | - error_at(this->length_->location(), | |
17376 | - "array length must be integer constant expression"); | |
17377 | - else if (mpz_cmp_si(val, 0) < 0) | |
17378 | - error_at(this->length_->location(), "array length is negative"); | |
17379 | - else if (mpz_cmp_ui(val, mpz_get_ui(val)) != 0) | |
17380 | - error_at(this->length_->location(), "array size is too large"); | |
17381 | + Numeric_constant nc; | |
17382 | + unsigned long val; | |
17383 | + if (!this->length_->numeric_constant_value(&nc) | |
17384 | + || nc.to_unsigned_long(&val) != Numeric_constant::NC_UL_VALID) | |
17385 | + error_at(this->length_->location(), "invalid array length"); | |
17386 | else | |
17387 | { | |
17388 | char buf[50]; | |
17389 | - snprintf(buf, sizeof buf, "%lu", mpz_get_ui(val)); | |
17390 | + snprintf(buf, sizeof buf, "%lu", val); | |
17391 | ret->append(buf); | |
17392 | } | |
17393 | - mpz_clear(val); | |
17394 | } | |
17395 | ret->push_back('e'); | |
17396 | } | |
17397 | @@ -6576,7 +6560,11 @@ | |
17398 | Interface_type::is_identical(const Interface_type* t, | |
17399 | bool errors_are_identical) const | |
17400 | { | |
17401 | - go_assert(this->methods_are_finalized_ && t->methods_are_finalized_); | |
17402 | + // If methods have not been finalized, then we are asking whether | |
17403 | + // func redeclarations are the same. This is an error, so for | |
17404 | + // simplicity we say they are never the same. | |
17405 | + if (!this->methods_are_finalized_ || !t->methods_are_finalized_) | |
17406 | + return false; | |
17407 | ||
17408 | // We require the same methods with the same types. The methods | |
17409 | // have already been sorted. | |
17410 | @@ -7072,7 +7060,7 @@ | |
17411 | mvals->push_back(Expression::make_nil(bloc)); | |
17412 | else | |
17413 | { | |
17414 | - s = Gogo::hidden_name_prefix(pm->name()); | |
17415 | + s = Gogo::hidden_name_pkgpath(pm->name()); | |
17416 | e = Expression::make_string(s, bloc); | |
17417 | mvals->push_back(Expression::make_unary(OPERATOR_AND, e, bloc)); | |
17418 | } | |
17419 | @@ -7121,11 +7109,15 @@ | |
17420 | { | |
17421 | if (!Gogo::is_hidden_name(p->name())) | |
17422 | ret->append(p->name()); | |
17423 | + else if (gogo->pkgpath_from_option()) | |
17424 | + ret->append(p->name().substr(1)); | |
17425 | else | |
17426 | { | |
17427 | - // This matches what the gc compiler does. | |
17428 | - std::string prefix = Gogo::hidden_name_prefix(p->name()); | |
17429 | - ret->append(prefix.substr(prefix.find('.') + 1)); | |
17430 | + // If no -fgo-pkgpath option, backward compatibility | |
17431 | + // for how this used to work before -fgo-pkgpath was | |
17432 | + // introduced. | |
17433 | + std::string pkgpath = Gogo::hidden_name_pkgpath(p->name()); | |
17434 | + ret->append(pkgpath.substr(pkgpath.find('.') + 1)); | |
17435 | ret->push_back('.'); | |
17436 | ret->append(Gogo::unpack_hidden_name(p->name())); | |
17437 | } | |
17438 | @@ -7955,20 +7947,14 @@ | |
17439 | // where we are going to be comparing named types for equality. In | |
17440 | // other cases, which are cases where the runtime is going to | |
17441 | // compare hash codes to see if the types are the same, we need to | |
17442 | - // include the package prefix and name in the hash. | |
17443 | + // include the pkgpath in the hash. | |
17444 | if (gogo != NULL && !Gogo::is_hidden_name(name) && !this->is_builtin()) | |
17445 | { | |
17446 | const Package* package = this->named_object()->package(); | |
17447 | if (package == NULL) | |
17448 | - { | |
17449 | - ret = Type::hash_string(gogo->unique_prefix(), ret); | |
17450 | - ret = Type::hash_string(gogo->package_name(), ret); | |
17451 | - } | |
17452 | + ret = Type::hash_string(gogo->pkgpath(), ret); | |
17453 | else | |
17454 | - { | |
17455 | - ret = Type::hash_string(package->unique_prefix(), ret); | |
17456 | - ret = Type::hash_string(package->name(), ret); | |
17457 | - } | |
17458 | + ret = Type::hash_string(package->pkgpath(), ret); | |
17459 | } | |
17460 | ||
17461 | return ret; | |
17462 | @@ -8340,11 +8326,16 @@ | |
17463 | } | |
17464 | if (!this->is_builtin()) | |
17465 | { | |
17466 | + // We handle -fgo-prefix and -fgo-pkgpath differently here for | |
17467 | + // compatibility with how the compiler worked before | |
17468 | + // -fgo-pkgpath was introduced. | |
17469 | const Package* package = this->named_object_->package(); | |
17470 | - if (package != NULL) | |
17471 | - ret->append(package->name()); | |
17472 | + if (gogo->pkgpath_from_option()) | |
17473 | + ret->append(package != NULL ? package->pkgpath() : gogo->pkgpath()); | |
17474 | else | |
17475 | - ret->append(gogo->package_name()); | |
17476 | + ret->append(package != NULL | |
17477 | + ? package->package_name() | |
17478 | + : gogo->package_name()); | |
17479 | ret->push_back('.'); | |
17480 | } | |
17481 | if (this->in_function_ != NULL) | |
17482 | @@ -8371,16 +8362,11 @@ | |
17483 | go_assert(this->in_function_ == NULL); | |
17484 | else | |
17485 | { | |
17486 | - const std::string& unique_prefix(no->package() == NULL | |
17487 | - ? gogo->unique_prefix() | |
17488 | - : no->package()->unique_prefix()); | |
17489 | - const std::string& package_name(no->package() == NULL | |
17490 | - ? gogo->package_name() | |
17491 | - : no->package()->name()); | |
17492 | - name = unique_prefix; | |
17493 | + const std::string& pkgpath(no->package() == NULL | |
17494 | + ? gogo->pkgpath_symbol() | |
17495 | + : no->package()->pkgpath_symbol()); | |
17496 | + name = pkgpath; | |
17497 | name.append(1, '.'); | |
17498 | - name.append(package_name); | |
17499 | - name.append(1, '.'); | |
17500 | if (this->in_function_ != NULL) | |
17501 | { | |
17502 | name.append(Gogo::unpack_hidden_name(this->in_function_->name())); | |
17503 | @@ -9503,9 +9489,9 @@ | |
17504 | const Named_object* no = this->named_object(); | |
17505 | std::string name; | |
17506 | if (no->package() == NULL) | |
17507 | - name = gogo->package_name(); | |
17508 | + name = gogo->pkgpath_symbol(); | |
17509 | else | |
17510 | - name = no->package()->name(); | |
17511 | + name = no->package()->pkgpath_symbol(); | |
17512 | name += '.'; | |
17513 | name += Gogo::unpack_hidden_name(no->name()); | |
17514 | char buf[20]; | |
17515 | Index: gcc/go/gofrontend/import.cc | |
17516 | =================================================================== | |
17517 | --- gcc/go/gofrontend/import.cc (.../tags/gcc_4_7_0_release) (wersja 187906) | |
17518 | +++ gcc/go/gofrontend/import.cc (.../branches/gcc-4_7-branch) (wersja 187906) | |
17519 | @@ -281,13 +281,24 @@ | |
17520 | std::string package_name = this->read_identifier(); | |
17521 | this->require_c_string(";\n"); | |
17522 | ||
17523 | - this->require_c_string("prefix "); | |
17524 | - std::string unique_prefix = this->read_identifier(); | |
17525 | - this->require_c_string(";\n"); | |
17526 | + std::string pkgpath; | |
17527 | + if (this->match_c_string("prefix ")) | |
17528 | + { | |
17529 | + this->advance(7); | |
17530 | + std::string unique_prefix = this->read_identifier(); | |
17531 | + this->require_c_string(";\n"); | |
17532 | + pkgpath = unique_prefix + '.' + package_name; | |
17533 | + } | |
17534 | + else | |
17535 | + { | |
17536 | + this->require_c_string("pkgpath "); | |
17537 | + pkgpath = this->read_identifier(); | |
17538 | + this->require_c_string(";\n"); | |
17539 | + } | |
17540 | ||
17541 | this->package_ = gogo->add_imported_package(package_name, local_name, | |
17542 | is_local_name_exported, | |
17543 | - unique_prefix, | |
17544 | + pkgpath, | |
17545 | this->location_, | |
17546 | &this->add_to_globals_); | |
17547 | if (this->package_ == NULL) | |
17548 | @@ -353,10 +364,18 @@ | |
17549 | Import::read_one_import() | |
17550 | { | |
17551 | this->require_c_string("import "); | |
17552 | + std::string package_name = this->read_identifier(); | |
17553 | + this->require_c_string(" "); | |
17554 | + std::string pkgpath = this->read_identifier(); | |
17555 | + this->require_c_string(" \""); | |
17556 | Stream* stream = this->stream_; | |
17557 | - while (stream->peek_char() != ';') | |
17558 | + while (stream->peek_char() != '"') | |
17559 | stream->advance(1); | |
17560 | - this->require_c_string(";\n"); | |
17561 | + this->require_c_string("\";\n"); | |
17562 | + | |
17563 | + Package* p = this->gogo_->register_package(pkgpath, | |
17564 | + Linemap::unknown_location()); | |
17565 | + p->set_package_name(package_name, this->location()); | |
17566 | } | |
17567 | ||
17568 | // Read the list of import control functions. | |
17569 | @@ -572,55 +591,50 @@ | |
17570 | while ((c = stream->get_char()) != '"') | |
17571 | type_name += c; | |
17572 | ||
17573 | - // If this type is in the current package, the name will be | |
17574 | - // .PREFIX.PACKAGE.NAME or simply NAME with no dots. Otherwise, a | |
17575 | - // non-hidden symbol will be PREFIX.PACKAGE.NAME and a hidden symbol | |
17576 | - // will be .PREFIX.PACKAGE.NAME. | |
17577 | - std::string package_name; | |
17578 | - std::string unique_prefix; | |
17579 | + // If this type is in the package we are currently importing, the | |
17580 | + // name will be .PKGPATH.NAME or simply NAME with no dots. | |
17581 | + // Otherwise, a non-hidden symbol will be PKGPATH.NAME and a hidden | |
17582 | + // symbol will be .PKGPATH.NAME. | |
17583 | + std::string pkgpath; | |
17584 | if (type_name.find('.') != std::string::npos) | |
17585 | { | |
17586 | - bool is_hidden = false; | |
17587 | size_t start = 0; | |
17588 | if (type_name[0] == '.') | |
17589 | - { | |
17590 | - ++start; | |
17591 | - is_hidden = true; | |
17592 | - } | |
17593 | - size_t dot1 = type_name.find('.', start); | |
17594 | - size_t dot2; | |
17595 | - if (dot1 == std::string::npos) | |
17596 | - dot2 = std::string::npos; | |
17597 | - else | |
17598 | - dot2 = type_name.find('.', dot1 + 1); | |
17599 | - if (dot1 == std::string::npos || dot2 == std::string::npos) | |
17600 | - { | |
17601 | - error_at(this->location_, | |
17602 | - ("error at import data at %d: missing dot in type name"), | |
17603 | - stream->pos()); | |
17604 | - stream->set_saw_error(); | |
17605 | - } | |
17606 | - else | |
17607 | - { | |
17608 | - unique_prefix = type_name.substr(start, dot1 - start); | |
17609 | - package_name = type_name.substr(dot1 + 1, dot2 - (dot1 + 1)); | |
17610 | - } | |
17611 | - if (!is_hidden) | |
17612 | - type_name.erase(0, dot2 + 1); | |
17613 | + start = 1; | |
17614 | + size_t dot = type_name.rfind('.'); | |
17615 | + pkgpath = type_name.substr(start, dot - start); | |
17616 | + if (type_name[0] != '.') | |
17617 | + type_name.erase(0, dot + 1); | |
17618 | } | |
17619 | ||
17620 | this->require_c_string(" "); | |
17621 | ||
17622 | + // The package name may follow. This is the name of the package in | |
17623 | + // the package clause of that package. The type name will include | |
17624 | + // the pkgpath, which may be different. | |
17625 | + std::string package_name; | |
17626 | + if (stream->peek_char() == '"') | |
17627 | + { | |
17628 | + stream->advance(1); | |
17629 | + while ((c = stream->get_char()) != '"') | |
17630 | + package_name += c; | |
17631 | + this->require_c_string(" "); | |
17632 | + } | |
17633 | + | |
17634 | // Declare the type in the appropriate package. If we haven't seen | |
17635 | // it before, mark it as invisible. We declare it before we read | |
17636 | // the actual definition of the type, since the definition may refer | |
17637 | // to the type itself. | |
17638 | Package* package; | |
17639 | - if (package_name.empty()) | |
17640 | + if (pkgpath.empty() || pkgpath == this->gogo_->pkgpath()) | |
17641 | package = this->package_; | |
17642 | else | |
17643 | - package = this->gogo_->register_package(package_name, unique_prefix, | |
17644 | - Linemap::unknown_location()); | |
17645 | + { | |
17646 | + package = this->gogo_->register_package(pkgpath, | |
17647 | + Linemap::unknown_location()); | |
17648 | + if (!package_name.empty()) | |
17649 | + package->set_package_name(package_name, this->location()); | |
17650 | + } | |
17651 | ||
17652 | Named_object* no = package->bindings()->lookup(type_name); | |
17653 | if (no == NULL) | |
17654 | @@ -628,8 +642,7 @@ | |
17655 | else if (!no->is_type_declaration() && !no->is_type()) | |
17656 | { | |
17657 | error_at(this->location_, "imported %<%s.%s%> both type and non-type", | |
17658 | - Gogo::message_name(package->name()).c_str(), | |
17659 | - Gogo::message_name(type_name).c_str()); | |
17660 | + pkgpath.c_str(), Gogo::message_name(type_name).c_str()); | |
17661 | stream->set_saw_error(); | |
17662 | return Type::make_error_type(); | |
17663 | } | |
17664 | @@ -669,6 +682,9 @@ | |
17665 | // This type has not yet been imported. | |
17666 | ntype->clear_is_visible(); | |
17667 | ||
17668 | + if (!type->is_undefined() && type->interface_type() != NULL) | |
17669 | + this->gogo_->record_interface_type(type->interface_type()); | |
17670 | + | |
17671 | type = ntype; | |
17672 | } | |
17673 | else if (no->is_type()) | |
17674 | @@ -769,9 +785,7 @@ | |
17675 | if (ret == "?") | |
17676 | ret.clear(); | |
17677 | else if (!Lex::is_exported_name(ret)) | |
17678 | - ret = ('.' + this->package_->unique_prefix() | |
17679 | - + '.' + this->package_->name() | |
17680 | - + '.' + ret); | |
17681 | + ret = '.' + this->package_->pkgpath() + '.' + ret; | |
17682 | return ret; | |
17683 | } | |
17684 | ||
17685 | Index: gcc/go/gofrontend/parse.h | |
17686 | =================================================================== | |
17687 | --- gcc/go/gofrontend/parse.h (.../tags/gcc_4_7_0_release) (wersja 187906) | |
17688 | +++ gcc/go/gofrontend/parse.h (.../branches/gcc-4_7-branch) (wersja 187906) | |
17689 | @@ -162,7 +162,8 @@ | |
17690 | ||
17691 | // Parser nonterminals. | |
17692 | void identifier_list(Typed_identifier_list*); | |
17693 | - Expression_list* expression_list(Expression*, bool may_be_sink); | |
17694 | + Expression_list* expression_list(Expression*, bool may_be_sink, | |
17695 | + bool may_be_composite_lit); | |
17696 | bool qualified_ident(std::string*, Named_object**); | |
17697 | Type* type(); | |
17698 | bool type_may_start_here(); | |
17699 | @@ -207,6 +208,7 @@ | |
17700 | bool is_coloneq, bool type_from_init, bool* is_new); | |
17701 | Named_object* create_dummy_global(Type*, Expression*, Location); | |
17702 | void simple_var_decl_or_assignment(const std::string&, Location, | |
17703 | + bool may_be_composite_lit, | |
17704 | Range_clause*, Type_switch*); | |
17705 | void function_decl(); | |
17706 | Typed_identifier* receiver(); | |
17707 | @@ -239,8 +241,9 @@ | |
17708 | void expression_stat(Expression*); | |
17709 | void send_stmt(Expression*); | |
17710 | void inc_dec_stat(Expression*); | |
17711 | - void assignment(Expression*, Range_clause*); | |
17712 | - void tuple_assignment(Expression_list*, Range_clause*); | |
17713 | + void assignment(Expression*, bool may_be_composite_lit, Range_clause*); | |
17714 | + void tuple_assignment(Expression_list*, bool may_be_composite_lit, | |
17715 | + Range_clause*); | |
17716 | void send(); | |
17717 | void go_or_defer_stat(); | |
17718 | void return_stat(); | |
17719 | Index: gcc/go/gofrontend/expressions.cc | |
17720 | =================================================================== | |
17721 | --- gcc/go/gofrontend/expressions.cc (.../tags/gcc_4_7_0_release) (wersja 187906) | |
17722 | +++ gcc/go/gofrontend/expressions.cc (.../branches/gcc-4_7-branch) (wersja 187906) | |
17723 | @@ -6,6 +6,8 @@ | |
17724 | ||
17725 | #include "go-system.h" | |
17726 | ||
17727 | +#include <algorithm> | |
17728 | + | |
17729 | #include <gmp.h> | |
17730 | ||
17731 | #ifndef ENABLE_BUILD_WITH_CXX | |
17732 | @@ -50,57 +52,6 @@ | |
17733 | { | |
17734 | } | |
17735 | ||
17736 | -// If this expression has a constant integer value, return it. | |
17737 | - | |
17738 | -bool | |
17739 | -Expression::integer_constant_value(bool iota_is_constant, mpz_t val, | |
17740 | - Type** ptype) const | |
17741 | -{ | |
17742 | - *ptype = NULL; | |
17743 | - return this->do_integer_constant_value(iota_is_constant, val, ptype); | |
17744 | -} | |
17745 | - | |
17746 | -// If this expression has a constant floating point value, return it. | |
17747 | - | |
17748 | -bool | |
17749 | -Expression::float_constant_value(mpfr_t val, Type** ptype) const | |
17750 | -{ | |
17751 | - *ptype = NULL; | |
17752 | - if (this->do_float_constant_value(val, ptype)) | |
17753 | - return true; | |
17754 | - mpz_t ival; | |
17755 | - mpz_init(ival); | |
17756 | - Type* t; | |
17757 | - bool ret; | |
17758 | - if (!this->do_integer_constant_value(false, ival, &t)) | |
17759 | - ret = false; | |
17760 | - else | |
17761 | - { | |
17762 | - mpfr_set_z(val, ival, GMP_RNDN); | |
17763 | - ret = true; | |
17764 | - } | |
17765 | - mpz_clear(ival); | |
17766 | - return ret; | |
17767 | -} | |
17768 | - | |
17769 | -// If this expression has a constant complex value, return it. | |
17770 | - | |
17771 | -bool | |
17772 | -Expression::complex_constant_value(mpfr_t real, mpfr_t imag, | |
17773 | - Type** ptype) const | |
17774 | -{ | |
17775 | - *ptype = NULL; | |
17776 | - if (this->do_complex_constant_value(real, imag, ptype)) | |
17777 | - return true; | |
17778 | - Type *t; | |
17779 | - if (this->float_constant_value(real, &t)) | |
17780 | - { | |
17781 | - mpfr_set_ui(imag, 0, GMP_RNDN); | |
17782 | - return true; | |
17783 | - } | |
17784 | - return false; | |
17785 | -} | |
17786 | - | |
17787 | // Traverse the expressions. | |
17788 | ||
17789 | int | |
17790 | @@ -824,27 +775,12 @@ | |
17791 | { return true; } | |
17792 | ||
17793 | bool | |
17794 | - do_integer_constant_value(bool, mpz_t val, Type**) const | |
17795 | + do_numeric_constant_value(Numeric_constant* nc) const | |
17796 | { | |
17797 | - mpz_set_ui(val, 0); | |
17798 | + nc->set_unsigned_long(NULL, 0); | |
17799 | return true; | |
17800 | } | |
17801 | ||
17802 | - bool | |
17803 | - do_float_constant_value(mpfr_t val, Type**) const | |
17804 | - { | |
17805 | - mpfr_set_ui(val, 0, GMP_RNDN); | |
17806 | - return true; | |
17807 | - } | |
17808 | - | |
17809 | - bool | |
17810 | - do_complex_constant_value(mpfr_t real, mpfr_t imag, Type**) const | |
17811 | - { | |
17812 | - mpfr_set_ui(real, 0, GMP_RNDN); | |
17813 | - mpfr_set_ui(imag, 0, GMP_RNDN); | |
17814 | - return true; | |
17815 | - } | |
17816 | - | |
17817 | void | |
17818 | do_discarding_value() | |
17819 | { } | |
17820 | @@ -1376,31 +1312,19 @@ | |
17821 | && TREE_CODE(TREE_OPERAND(fnaddr, 0)) == FUNCTION_DECL); | |
17822 | TREE_ADDRESSABLE(TREE_OPERAND(fnaddr, 0)) = 1; | |
17823 | ||
17824 | - // For a normal non-nested function call, that is all we have to do. | |
17825 | - if (!this->function_->is_function() | |
17826 | - || this->function_->func_value()->enclosing() == NULL) | |
17827 | - { | |
17828 | - go_assert(this->closure_ == NULL); | |
17829 | - return fnaddr; | |
17830 | - } | |
17831 | + // If there is no closure, that is all have to do. | |
17832 | + if (this->closure_ == NULL) | |
17833 | + return fnaddr; | |
17834 | ||
17835 | - // For a nested function call, we have to always allocate a | |
17836 | - // trampoline. If we don't always allocate, then closures will not | |
17837 | - // be reliably distinct. | |
17838 | - Expression* closure = this->closure_; | |
17839 | - tree closure_tree; | |
17840 | - if (closure == NULL) | |
17841 | - closure_tree = null_pointer_node; | |
17842 | - else | |
17843 | - { | |
17844 | - // Get the value of the closure. This will be a pointer to | |
17845 | - // space allocated on the heap. | |
17846 | - closure_tree = closure->get_tree(context); | |
17847 | - if (closure_tree == error_mark_node) | |
17848 | - return error_mark_node; | |
17849 | - go_assert(POINTER_TYPE_P(TREE_TYPE(closure_tree))); | |
17850 | - } | |
17851 | + go_assert(this->function_->func_value()->enclosing() != NULL); | |
17852 | ||
17853 | + // Get the value of the closure. This will be a pointer to space | |
17854 | + // allocated on the heap. | |
17855 | + tree closure_tree = this->closure_->get_tree(context); | |
17856 | + if (closure_tree == error_mark_node) | |
17857 | + return error_mark_node; | |
17858 | + go_assert(POINTER_TYPE_P(TREE_TYPE(closure_tree))); | |
17859 | + | |
17860 | // Now we need to build some code on the heap. This code will load | |
17861 | // the static chain pointer with the closure and then jump to the | |
17862 | // body of the function. The normal gcc approach is to build the | |
17863 | @@ -1759,10 +1683,6 @@ | |
17864 | static Expression* | |
17865 | do_import(Import*); | |
17866 | ||
17867 | - // Return whether VAL fits in the type. | |
17868 | - static bool | |
17869 | - check_constant(mpz_t val, Type*, Location); | |
17870 | - | |
17871 | // Write VAL to string dump. | |
17872 | static void | |
17873 | export_integer(String_dump* exp, const mpz_t val); | |
17874 | @@ -1777,7 +1697,7 @@ | |
17875 | { return true; } | |
17876 | ||
17877 | bool | |
17878 | - do_integer_constant_value(bool, mpz_t val, Type** ptype) const; | |
17879 | + do_numeric_constant_value(Numeric_constant* nc) const; | |
17880 | ||
17881 | Type* | |
17882 | do_type(); | |
17883 | @@ -1817,15 +1737,16 @@ | |
17884 | bool is_character_constant_; | |
17885 | }; | |
17886 | ||
17887 | -// Return an integer constant value. | |
17888 | +// Return a numeric constant for this expression. We have to mark | |
17889 | +// this as a character when appropriate. | |
17890 | ||
17891 | bool | |
17892 | -Integer_expression::do_integer_constant_value(bool, mpz_t val, | |
17893 | - Type** ptype) const | |
17894 | +Integer_expression::do_numeric_constant_value(Numeric_constant* nc) const | |
17895 | { | |
17896 | - if (this->type_ != NULL) | |
17897 | - *ptype = this->type_; | |
17898 | - mpz_set(val, this->val_); | |
17899 | + if (this->is_character_constant_) | |
17900 | + nc->set_rune(this->type_, this->val_); | |
17901 | + else | |
17902 | + nc->set_int(this->type_, this->val_); | |
17903 | return true; | |
17904 | } | |
17905 | ||
17906 | @@ -1853,10 +1774,7 @@ | |
17907 | { | |
17908 | if (this->type_ != NULL && !this->type_->is_abstract()) | |
17909 | ; | |
17910 | - else if (context->type != NULL | |
17911 | - && (context->type->integer_type() != NULL | |
17912 | - || context->type->float_type() != NULL | |
17913 | - || context->type->complex_type() != NULL)) | |
17914 | + else if (context->type != NULL && context->type->is_numeric_type()) | |
17915 | this->type_ = context->type; | |
17916 | else if (!context->may_be_abstract) | |
17917 | { | |
17918 | @@ -1867,55 +1785,20 @@ | |
17919 | } | |
17920 | } | |
17921 | ||
17922 | -// Return true if the integer VAL fits in the range of the type TYPE. | |
17923 | -// Otherwise give an error and return false. TYPE may be NULL. | |
17924 | - | |
17925 | -bool | |
17926 | -Integer_expression::check_constant(mpz_t val, Type* type, | |
17927 | - Location location) | |
17928 | -{ | |
17929 | - if (type == NULL) | |
17930 | - return true; | |
17931 | - Integer_type* itype = type->integer_type(); | |
17932 | - if (itype == NULL || itype->is_abstract()) | |
17933 | - return true; | |
17934 | - | |
17935 | - int bits = mpz_sizeinbase(val, 2); | |
17936 | - | |
17937 | - if (itype->is_unsigned()) | |
17938 | - { | |
17939 | - // For an unsigned type we can only accept a nonnegative number, | |
17940 | - // and we must be able to represent at least BITS. | |
17941 | - if (mpz_sgn(val) >= 0 | |
17942 | - && bits <= itype->bits()) | |
17943 | - return true; | |
17944 | - } | |
17945 | - else | |
17946 | - { | |
17947 | - // For a signed type we need an extra bit to indicate the sign. | |
17948 | - // We have to handle the most negative integer specially. | |
17949 | - if (bits + 1 <= itype->bits() | |
17950 | - || (bits <= itype->bits() | |
17951 | - && mpz_sgn(val) < 0 | |
17952 | - && (mpz_scan1(val, 0) | |
17953 | - == static_cast<unsigned long>(itype->bits() - 1)) | |
17954 | - && mpz_scan0(val, itype->bits()) == ULONG_MAX)) | |
17955 | - return true; | |
17956 | - } | |
17957 | - | |
17958 | - error_at(location, "integer constant overflow"); | |
17959 | - return false; | |
17960 | -} | |
17961 | - | |
17962 | // Check the type of an integer constant. | |
17963 | ||
17964 | void | |
17965 | Integer_expression::do_check_types(Gogo*) | |
17966 | { | |
17967 | - if (this->type_ == NULL) | |
17968 | + Type* type = this->type_; | |
17969 | + if (type == NULL) | |
17970 | return; | |
17971 | - if (!Integer_expression::check_constant(this->val_, this->type_, | |
17972 | - this->location())) | |
17973 | + Numeric_constant nc; | |
17974 | + if (this->is_character_constant_) | |
17975 | + nc.set_rune(NULL, this->val_); | |
17976 | + else | |
17977 | + nc.set_int(NULL, this->val_); | |
17978 | + if (!nc.set_type(type, true, this->location())) | |
17979 | this->set_is_error(); | |
17980 | } | |
17981 | ||
17982 | @@ -2117,14 +2000,6 @@ | |
17983 | mpfr_init_set(this->val_, *val, GMP_RNDN); | |
17984 | } | |
17985 | ||
17986 | - // Constrain VAL to fit into TYPE. | |
17987 | - static void | |
17988 | - constrain_float(mpfr_t val, Type* type); | |
17989 | - | |
17990 | - // Return whether VAL fits in the type. | |
17991 | - static bool | |
17992 | - check_constant(mpfr_t val, Type*, Location); | |
17993 | - | |
17994 | // Write VAL to export data. | |
17995 | static void | |
17996 | export_float(String_dump* exp, const mpfr_t val); | |
17997 | @@ -2139,7 +2014,11 @@ | |
17998 | { return true; } | |
17999 | ||
18000 | bool | |
18001 | - do_float_constant_value(mpfr_t val, Type**) const; | |
18002 | + do_numeric_constant_value(Numeric_constant* nc) const | |
18003 | + { | |
18004 | + nc->set_float(this->type_, this->val_); | |
18005 | + return true; | |
18006 | + } | |
18007 | ||
18008 | Type* | |
18009 | do_type(); | |
18010 | @@ -2171,27 +2050,6 @@ | |
18011 | Type* type_; | |
18012 | }; | |
18013 | ||
18014 | -// Constrain VAL to fit into TYPE. | |
18015 | - | |
18016 | -void | |
18017 | -Float_expression::constrain_float(mpfr_t val, Type* type) | |
18018 | -{ | |
18019 | - Float_type* ftype = type->float_type(); | |
18020 | - if (ftype != NULL && !ftype->is_abstract()) | |
18021 | - mpfr_prec_round(val, ftype->bits(), GMP_RNDN); | |
18022 | -} | |
18023 | - | |
18024 | -// Return a floating point constant value. | |
18025 | - | |
18026 | -bool | |
18027 | -Float_expression::do_float_constant_value(mpfr_t val, Type** ptype) const | |
18028 | -{ | |
18029 | - if (this->type_ != NULL) | |
18030 | - *ptype = this->type_; | |
18031 | - mpfr_set(val, this->val_, GMP_RNDN); | |
18032 | - return true; | |
18033 | -} | |
18034 | - | |
18035 | // Return the current type. If we haven't set the type yet, we return | |
18036 | // an abstract float type. | |
18037 | ||
18038 | @@ -2220,73 +2078,18 @@ | |
18039 | this->type_ = Type::lookup_float_type("float64"); | |
18040 | } | |
18041 | ||
18042 | -// Return true if the floating point value VAL fits in the range of | |
18043 | -// the type TYPE. Otherwise give an error and return false. TYPE may | |
18044 | -// be NULL. | |
18045 | - | |
18046 | -bool | |
18047 | -Float_expression::check_constant(mpfr_t val, Type* type, | |
18048 | - Location location) | |
18049 | -{ | |
18050 | - if (type == NULL) | |
18051 | - return true; | |
18052 | - Float_type* ftype = type->float_type(); | |
18053 | - if (ftype == NULL || ftype->is_abstract()) | |
18054 | - return true; | |
18055 | - | |
18056 | - // A NaN or Infinity always fits in the range of the type. | |
18057 | - if (mpfr_nan_p(val) || mpfr_inf_p(val) || mpfr_zero_p(val)) | |
18058 | - return true; | |
18059 | - | |
18060 | - mp_exp_t exp = mpfr_get_exp(val); | |
18061 | - mp_exp_t max_exp; | |
18062 | - switch (ftype->bits()) | |
18063 | - { | |
18064 | - case 32: | |
18065 | - max_exp = 128; | |
18066 | - break; | |
18067 | - case 64: | |
18068 | - max_exp = 1024; | |
18069 | - break; | |
18070 | - default: | |
18071 | - go_unreachable(); | |
18072 | - } | |
18073 | - if (exp > max_exp) | |
18074 | - { | |
18075 | - error_at(location, "floating point constant overflow"); | |
18076 | - return false; | |
18077 | - } | |
18078 | - return true; | |
18079 | -} | |
18080 | - | |
18081 | // Check the type of a float value. | |
18082 | ||
18083 | void | |
18084 | Float_expression::do_check_types(Gogo*) | |
18085 | { | |
18086 | - if (this->type_ == NULL) | |
18087 | + Type* type = this->type_; | |
18088 | + if (type == NULL) | |
18089 | return; | |
18090 | - | |
18091 | - if (!Float_expression::check_constant(this->val_, this->type_, | |
18092 | - this->location())) | |
18093 | + Numeric_constant nc; | |
18094 | + nc.set_float(NULL, this->val_); | |
18095 | + if (!nc.set_type(this->type_, true, this->location())) | |
18096 | this->set_is_error(); | |
18097 | - | |
18098 | - Integer_type* integer_type = this->type_->integer_type(); | |
18099 | - if (integer_type != NULL) | |
18100 | - { | |
18101 | - if (!mpfr_integer_p(this->val_)) | |
18102 | - this->report_error(_("floating point constant truncated to integer")); | |
18103 | - else | |
18104 | - { | |
18105 | - go_assert(!integer_type->is_abstract()); | |
18106 | - mpz_t ival; | |
18107 | - mpz_init(ival); | |
18108 | - mpfr_get_z(ival, this->val_, GMP_RNDN); | |
18109 | - Integer_expression::check_constant(ival, integer_type, | |
18110 | - this->location()); | |
18111 | - mpz_clear(ival); | |
18112 | - } | |
18113 | - } | |
18114 | } | |
18115 | ||
18116 | // Get a tree for a float constant. | |
18117 | @@ -2371,14 +2174,6 @@ | |
18118 | mpfr_init_set(this->imag_, *imag, GMP_RNDN); | |
18119 | } | |
18120 | ||
18121 | - // Constrain REAL/IMAG to fit into TYPE. | |
18122 | - static void | |
18123 | - constrain_complex(mpfr_t real, mpfr_t imag, Type* type); | |
18124 | - | |
18125 | - // Return whether REAL/IMAG fits in the type. | |
18126 | - static bool | |
18127 | - check_constant(mpfr_t real, mpfr_t imag, Type*, Location); | |
18128 | - | |
18129 | // Write REAL/IMAG to string dump. | |
18130 | static void | |
18131 | export_complex(String_dump* exp, const mpfr_t real, const mpfr_t val); | |
18132 | @@ -2394,7 +2189,11 @@ | |
18133 | { return true; } | |
18134 | ||
18135 | bool | |
18136 | - do_complex_constant_value(mpfr_t real, mpfr_t imag, Type**) const; | |
18137 | + do_numeric_constant_value(Numeric_constant* nc) const | |
18138 | + { | |
18139 | + nc->set_complex(this->type_, this->real_, this->imag_); | |
18140 | + return true; | |
18141 | + } | |
18142 | ||
18143 | Type* | |
18144 | do_type(); | |
18145 | @@ -2430,32 +2229,6 @@ | |
18146 | Type* type_; | |
18147 | }; | |
18148 | ||
18149 | -// Constrain REAL/IMAG to fit into TYPE. | |
18150 | - | |
18151 | -void | |
18152 | -Complex_expression::constrain_complex(mpfr_t real, mpfr_t imag, Type* type) | |
18153 | -{ | |
18154 | - Complex_type* ctype = type->complex_type(); | |
18155 | - if (ctype != NULL && !ctype->is_abstract()) | |
18156 | - { | |
18157 | - mpfr_prec_round(real, ctype->bits() / 2, GMP_RNDN); | |
18158 | - mpfr_prec_round(imag, ctype->bits() / 2, GMP_RNDN); | |
18159 | - } | |
18160 | -} | |
18161 | - | |
18162 | -// Return a complex constant value. | |
18163 | - | |
18164 | -bool | |
18165 | -Complex_expression::do_complex_constant_value(mpfr_t real, mpfr_t imag, | |
18166 | - Type** ptype) const | |
18167 | -{ | |
18168 | - if (this->type_ != NULL) | |
18169 | - *ptype = this->type_; | |
18170 | - mpfr_set(real, this->real_, GMP_RNDN); | |
18171 | - mpfr_set(imag, this->imag_, GMP_RNDN); | |
18172 | - return true; | |
18173 | -} | |
18174 | - | |
18175 | // Return the current type. If we haven't set the type yet, we return | |
18176 | // an abstract complex type. | |
18177 | ||
18178 | @@ -2482,65 +2255,17 @@ | |
18179 | this->type_ = Type::lookup_complex_type("complex128"); | |
18180 | } | |
18181 | ||
18182 | -// Return true if the complex value REAL/IMAG fits in the range of the | |
18183 | -// type TYPE. Otherwise give an error and return false. TYPE may be | |
18184 | -// NULL. | |
18185 | - | |
18186 | -bool | |
18187 | -Complex_expression::check_constant(mpfr_t real, mpfr_t imag, Type* type, | |
18188 | - Location location) | |
18189 | -{ | |
18190 | - if (type == NULL) | |
18191 | - return true; | |
18192 | - Complex_type* ctype = type->complex_type(); | |
18193 | - if (ctype == NULL || ctype->is_abstract()) | |
18194 | - return true; | |
18195 | - | |
18196 | - mp_exp_t max_exp; | |
18197 | - switch (ctype->bits()) | |
18198 | - { | |
18199 | - case 64: | |
18200 | - max_exp = 128; | |
18201 | - break; | |
18202 | - case 128: | |
18203 | - max_exp = 1024; | |
18204 | - break; | |
18205 | - default: | |
18206 | - go_unreachable(); | |
18207 | - } | |
18208 | - | |
18209 | - // A NaN or Infinity always fits in the range of the type. | |
18210 | - if (!mpfr_nan_p(real) && !mpfr_inf_p(real) && !mpfr_zero_p(real)) | |
18211 | - { | |
18212 | - if (mpfr_get_exp(real) > max_exp) | |
18213 | - { | |
18214 | - error_at(location, "complex real part constant overflow"); | |
18215 | - return false; | |
18216 | - } | |
18217 | - } | |
18218 | - | |
18219 | - if (!mpfr_nan_p(imag) && !mpfr_inf_p(imag) && !mpfr_zero_p(imag)) | |
18220 | - { | |
18221 | - if (mpfr_get_exp(imag) > max_exp) | |
18222 | - { | |
18223 | - error_at(location, "complex imaginary part constant overflow"); | |
18224 | - return false; | |
18225 | - } | |
18226 | - } | |
18227 | - | |
18228 | - return true; | |
18229 | -} | |
18230 | - | |
18231 | // Check the type of a complex value. | |
18232 | ||
18233 | void | |
18234 | Complex_expression::do_check_types(Gogo*) | |
18235 | { | |
18236 | - if (this->type_ == NULL) | |
18237 | + Type* type = this->type_; | |
18238 | + if (type == NULL) | |
18239 | return; | |
18240 | - | |
18241 | - if (!Complex_expression::check_constant(this->real_, this->imag_, | |
18242 | - this->type_, this->location())) | |
18243 | + Numeric_constant nc; | |
18244 | + nc.set_complex(NULL, this->real_, this->imag_); | |
18245 | + if (!nc.set_type(this->type_, true, this->location())) | |
18246 | this->set_is_error(); | |
18247 | } | |
18248 | ||
18249 | @@ -2665,18 +2390,11 @@ | |
18250 | { return true; } | |
18251 | ||
18252 | bool | |
18253 | - do_integer_constant_value(bool, mpz_t val, Type**) const; | |
18254 | + do_numeric_constant_value(Numeric_constant* nc) const; | |
18255 | ||
18256 | bool | |
18257 | - do_float_constant_value(mpfr_t val, Type**) const; | |
18258 | + do_string_constant_value(std::string* val) const; | |
18259 | ||
18260 | - bool | |
18261 | - do_complex_constant_value(mpfr_t real, mpfr_t imag, Type**) const; | |
18262 | - | |
18263 | - bool | |
18264 | - do_string_constant_value(std::string* val) const | |
18265 | - { return this->constant_->const_value()->expr()->string_constant_value(val); } | |
18266 | - | |
18267 | Type* | |
18268 | do_type(); | |
18269 | ||
18270 | @@ -2755,110 +2473,49 @@ | |
18271 | return this; | |
18272 | } | |
18273 | ||
18274 | -// Return an integer constant value. | |
18275 | +// Return a numeric constant value. | |
18276 | ||
18277 | bool | |
18278 | -Const_expression::do_integer_constant_value(bool iota_is_constant, mpz_t val, | |
18279 | - Type** ptype) const | |
18280 | +Const_expression::do_numeric_constant_value(Numeric_constant* nc) const | |
18281 | { | |
18282 | if (this->seen_) | |
18283 | return false; | |
18284 | ||
18285 | - Type* ctype; | |
18286 | - if (this->type_ != NULL) | |
18287 | - ctype = this->type_; | |
18288 | - else | |
18289 | - ctype = this->constant_->const_value()->type(); | |
18290 | - if (ctype != NULL && ctype->integer_type() == NULL) | |
18291 | - return false; | |
18292 | - | |
18293 | Expression* e = this->constant_->const_value()->expr(); | |
18294 | - | |
18295 | + | |
18296 | this->seen_ = true; | |
18297 | ||
18298 | - Type* t; | |
18299 | - bool r = e->integer_constant_value(iota_is_constant, val, &t); | |
18300 | + bool r = e->numeric_constant_value(nc); | |
18301 | ||
18302 | this->seen_ = false; | |
18303 | ||
18304 | - if (r | |
18305 | - && ctype != NULL | |
18306 | - && !Integer_expression::check_constant(val, ctype, this->location())) | |
18307 | - return false; | |
18308 | - | |
18309 | - *ptype = ctype != NULL ? ctype : t; | |
18310 | - return r; | |
18311 | -} | |
18312 | - | |
18313 | -// Return a floating point constant value. | |
18314 | - | |
18315 | -bool | |
18316 | -Const_expression::do_float_constant_value(mpfr_t val, Type** ptype) const | |
18317 | -{ | |
18318 | - if (this->seen_) | |
18319 | - return false; | |
18320 | - | |
18321 | Type* ctype; | |
18322 | if (this->type_ != NULL) | |
18323 | ctype = this->type_; | |
18324 | else | |
18325 | ctype = this->constant_->const_value()->type(); | |
18326 | - if (ctype != NULL && ctype->float_type() == NULL) | |
18327 | - return false; | |
18328 | - | |
18329 | - this->seen_ = true; | |
18330 | - | |
18331 | - Type* t; | |
18332 | - bool r = this->constant_->const_value()->expr()->float_constant_value(val, | |
18333 | - &t); | |
18334 | - | |
18335 | - this->seen_ = false; | |
18336 | - | |
18337 | if (r && ctype != NULL) | |
18338 | { | |
18339 | - if (!Float_expression::check_constant(val, ctype, this->location())) | |
18340 | + if (!nc->set_type(ctype, false, this->location())) | |
18341 | return false; | |
18342 | - Float_expression::constrain_float(val, ctype); | |
18343 | } | |
18344 | - *ptype = ctype != NULL ? ctype : t; | |
18345 | + | |
18346 | return r; | |
18347 | } | |
18348 | ||
18349 | -// Return a complex constant value. | |
18350 | - | |
18351 | bool | |
18352 | -Const_expression::do_complex_constant_value(mpfr_t real, mpfr_t imag, | |
18353 | - Type **ptype) const | |
18354 | +Const_expression::do_string_constant_value(std::string* val) const | |
18355 | { | |
18356 | if (this->seen_) | |
18357 | return false; | |
18358 | ||
18359 | - Type* ctype; | |
18360 | - if (this->type_ != NULL) | |
18361 | - ctype = this->type_; | |
18362 | - else | |
18363 | - ctype = this->constant_->const_value()->type(); | |
18364 | - if (ctype != NULL && ctype->complex_type() == NULL) | |
18365 | - return false; | |
18366 | + Expression* e = this->constant_->const_value()->expr(); | |
18367 | ||
18368 | this->seen_ = true; | |
18369 | - | |
18370 | - Type *t; | |
18371 | - bool r = this->constant_->const_value()->expr()->complex_constant_value(real, | |
18372 | - imag, | |
18373 | - &t); | |
18374 | - | |
18375 | + bool ok = e->string_constant_value(val); | |
18376 | this->seen_ = false; | |
18377 | ||
18378 | - if (r && ctype != NULL) | |
18379 | - { | |
18380 | - if (!Complex_expression::check_constant(real, imag, ctype, | |
18381 | - this->location())) | |
18382 | - return false; | |
18383 | - Complex_expression::constrain_complex(real, imag, ctype); | |
18384 | - } | |
18385 | - *ptype = ctype != NULL ? ctype : t; | |
18386 | - return r; | |
18387 | + return ok; | |
18388 | } | |
18389 | ||
18390 | // Return the type of the const reference. | |
18391 | @@ -2909,12 +2566,8 @@ | |
18392 | if (ctype != NULL && !ctype->is_abstract()) | |
18393 | ; | |
18394 | else if (context->type != NULL | |
18395 | - && (context->type->integer_type() != NULL | |
18396 | - || context->type->float_type() != NULL | |
18397 | - || context->type->complex_type() != NULL) | |
18398 | - && (cetype->integer_type() != NULL | |
18399 | - || cetype->float_type() != NULL | |
18400 | - || cetype->complex_type() != NULL)) | |
18401 | + && context->type->is_numeric_type() | |
18402 | + && cetype->is_numeric_type()) | |
18403 | this->type_ = context->type; | |
18404 | else if (context->type != NULL | |
18405 | && context->type->is_string_type() | |
18406 | @@ -2976,35 +2629,15 @@ | |
18407 | ||
18408 | this->check_for_init_loop(); | |
18409 | ||
18410 | - if (this->type_ == NULL || this->type_->is_abstract()) | |
18411 | - return; | |
18412 | - | |
18413 | - // Check for integer overflow. | |
18414 | - if (this->type_->integer_type() != NULL) | |
18415 | + // Check that numeric constant fits in type. | |
18416 | + if (this->type_ != NULL && this->type_->is_numeric_type()) | |
18417 | { | |
18418 | - mpz_t ival; | |
18419 | - mpz_init(ival); | |
18420 | - Type* dummy; | |
18421 | - if (!this->integer_constant_value(true, ival, &dummy)) | |
18422 | + Numeric_constant nc; | |
18423 | + if (this->constant_->const_value()->expr()->numeric_constant_value(&nc)) | |
18424 | { | |
18425 | - mpfr_t fval; | |
18426 | - mpfr_init(fval); | |
18427 | - Expression* cexpr = this->constant_->const_value()->expr(); | |
18428 | - if (cexpr->float_constant_value(fval, &dummy)) | |
18429 | - { | |
18430 | - if (!mpfr_integer_p(fval)) | |
18431 | - this->report_error(_("floating point constant " | |
18432 | - "truncated to integer")); | |
18433 | - else | |
18434 | - { | |
18435 | - mpfr_get_z(ival, fval, GMP_RNDN); | |
18436 | - Integer_expression::check_constant(ival, this->type_, | |
18437 | - this->location()); | |
18438 | - } | |
18439 | - } | |
18440 | - mpfr_clear(fval); | |
18441 | + if (!nc.set_type(this->type_, true, this->location())) | |
18442 | + this->set_is_error(); | |
18443 | } | |
18444 | - mpz_clear(ival); | |
18445 | } | |
18446 | } | |
18447 | ||
18448 | @@ -3028,41 +2661,18 @@ | |
18449 | // object is an abstract int or float, we try to get the abstract | |
18450 | // value. Otherwise we may lose something in the conversion. | |
18451 | if (this->type_ != NULL | |
18452 | + && this->type_->is_numeric_type() | |
18453 | && (this->constant_->const_value()->type() == NULL | |
18454 | || this->constant_->const_value()->type()->is_abstract())) | |
18455 | { | |
18456 | Expression* expr = this->constant_->const_value()->expr(); | |
18457 | - mpz_t ival; | |
18458 | - mpz_init(ival); | |
18459 | - Type* t; | |
18460 | - if (expr->integer_constant_value(true, ival, &t)) | |
18461 | + Numeric_constant nc; | |
18462 | + if (expr->numeric_constant_value(&nc) | |
18463 | + && nc.set_type(this->type_, false, this->location())) | |
18464 | { | |
18465 | - tree ret = Expression::integer_constant_tree(ival, type_tree); | |
18466 | - mpz_clear(ival); | |
18467 | - return ret; | |
18468 | + Expression* e = nc.expression(this->location()); | |
18469 | + return e->get_tree(context); | |
18470 | } | |
18471 | - mpz_clear(ival); | |
18472 | - | |
18473 | - mpfr_t fval; | |
18474 | - mpfr_init(fval); | |
18475 | - if (expr->float_constant_value(fval, &t)) | |
18476 | - { | |
18477 | - tree ret = Expression::float_constant_tree(fval, type_tree); | |
18478 | - mpfr_clear(fval); | |
18479 | - return ret; | |
18480 | - } | |
18481 | - | |
18482 | - mpfr_t imag; | |
18483 | - mpfr_init(imag); | |
18484 | - if (expr->complex_constant_value(fval, imag, &t)) | |
18485 | - { | |
18486 | - tree ret = Expression::complex_constant_tree(fval, imag, type_tree); | |
18487 | - mpfr_clear(fval); | |
18488 | - mpfr_clear(imag); | |
18489 | - return ret; | |
18490 | - } | |
18491 | - mpfr_clear(imag); | |
18492 | - mpfr_clear(fval); | |
18493 | } | |
18494 | ||
18495 | tree const_tree = this->constant_->get_tree(gogo, context->function()); | |
18496 | @@ -3279,15 +2889,9 @@ | |
18497 | { return this->expr_->is_constant(); } | |
18498 | ||
18499 | bool | |
18500 | - do_integer_constant_value(bool, mpz_t, Type**) const; | |
18501 | + do_numeric_constant_value(Numeric_constant*) const; | |
18502 | ||
18503 | bool | |
18504 | - do_float_constant_value(mpfr_t, Type**) const; | |
18505 | - | |
18506 | - bool | |
18507 | - do_complex_constant_value(mpfr_t, mpfr_t, Type**) const; | |
18508 | - | |
18509 | - bool | |
18510 | do_string_constant_value(std::string*) const; | |
18511 | ||
18512 | Type* | |
18513 | @@ -3351,84 +2955,17 @@ | |
18514 | Expression* val = this->expr_; | |
18515 | Location location = this->location(); | |
18516 | ||
18517 | - if (type->integer_type() != NULL) | |
18518 | + if (type->is_numeric_type()) | |
18519 | { | |
18520 | - mpz_t ival; | |
18521 | - mpz_init(ival); | |
18522 | - Type* dummy; | |
18523 | - if (val->integer_constant_value(false, ival, &dummy)) | |
18524 | + Numeric_constant nc; | |
18525 | + if (val->numeric_constant_value(&nc)) | |
18526 | { | |
18527 | - if (!Integer_expression::check_constant(ival, type, location)) | |
18528 | - mpz_set_ui(ival, 0); | |
18529 | - Expression* ret = Expression::make_integer(&ival, type, location); | |
18530 | - mpz_clear(ival); | |
18531 | - return ret; | |
18532 | + if (!nc.set_type(type, true, location)) | |
18533 | + return Expression::make_error(location); | |
18534 | + return nc.expression(location); | |
18535 | } | |
18536 | - | |
18537 | - mpfr_t fval; | |
18538 | - mpfr_init(fval); | |
18539 | - if (val->float_constant_value(fval, &dummy)) | |
18540 | - { | |
18541 | - if (!mpfr_integer_p(fval)) | |
18542 | - { | |
18543 | - error_at(location, | |
18544 | - "floating point constant truncated to integer"); | |
18545 | - return Expression::make_error(location); | |
18546 | - } | |
18547 | - mpfr_get_z(ival, fval, GMP_RNDN); | |
18548 | - if (!Integer_expression::check_constant(ival, type, location)) | |
18549 | - mpz_set_ui(ival, 0); | |
18550 | - Expression* ret = Expression::make_integer(&ival, type, location); | |
18551 | - mpfr_clear(fval); | |
18552 | - mpz_clear(ival); | |
18553 | - return ret; | |
18554 | - } | |
18555 | - mpfr_clear(fval); | |
18556 | - mpz_clear(ival); | |
18557 | } | |
18558 | ||
18559 | - if (type->float_type() != NULL) | |
18560 | - { | |
18561 | - mpfr_t fval; | |
18562 | - mpfr_init(fval); | |
18563 | - Type* dummy; | |
18564 | - if (val->float_constant_value(fval, &dummy)) | |
18565 | - { | |
18566 | - if (!Float_expression::check_constant(fval, type, location)) | |
18567 | - mpfr_set_ui(fval, 0, GMP_RNDN); | |
18568 | - Float_expression::constrain_float(fval, type); | |
18569 | - Expression *ret = Expression::make_float(&fval, type, location); | |
18570 | - mpfr_clear(fval); | |
18571 | - return ret; | |
18572 | - } | |
18573 | - mpfr_clear(fval); | |
18574 | - } | |
18575 | - | |
18576 | - if (type->complex_type() != NULL) | |
18577 | - { | |
18578 | - mpfr_t real; | |
18579 | - mpfr_t imag; | |
18580 | - mpfr_init(real); | |
18581 | - mpfr_init(imag); | |
18582 | - Type* dummy; | |
18583 | - if (val->complex_constant_value(real, imag, &dummy)) | |
18584 | - { | |
18585 | - if (!Complex_expression::check_constant(real, imag, type, location)) | |
18586 | - { | |
18587 | - mpfr_set_ui(real, 0, GMP_RNDN); | |
18588 | - mpfr_set_ui(imag, 0, GMP_RNDN); | |
18589 | - } | |
18590 | - Complex_expression::constrain_complex(real, imag, type); | |
18591 | - Expression* ret = Expression::make_complex(&real, &imag, type, | |
18592 | - location); | |
18593 | - mpfr_clear(real); | |
18594 | - mpfr_clear(imag); | |
18595 | - return ret; | |
18596 | - } | |
18597 | - mpfr_clear(real); | |
18598 | - mpfr_clear(imag); | |
18599 | - } | |
18600 | - | |
18601 | if (type->is_slice_type()) | |
18602 | { | |
18603 | Type* element_type = type->array_type()->element_type()->forwarded(); | |
18604 | @@ -3491,120 +3028,19 @@ | |
18605 | return this; | |
18606 | } | |
18607 | ||
18608 | -// Return the constant integer value if there is one. | |
18609 | +// Return the constant numeric value if there is one. | |
18610 | ||
18611 | bool | |
18612 | -Type_conversion_expression::do_integer_constant_value(bool iota_is_constant, | |
18613 | - mpz_t val, | |
18614 | - Type** ptype) const | |
18615 | +Type_conversion_expression::do_numeric_constant_value( | |
18616 | + Numeric_constant* nc) const | |
18617 | { | |
18618 | - if (this->type_->integer_type() == NULL) | |
18619 | + if (!this->type_->is_numeric_type()) | |
18620 | return false; | |
18621 | - | |
18622 | - mpz_t ival; | |
18623 | - mpz_init(ival); | |
18624 | - Type* dummy; | |
18625 | - if (this->expr_->integer_constant_value(iota_is_constant, ival, &dummy)) | |
18626 | - { | |
18627 | - if (!Integer_expression::check_constant(ival, this->type_, | |
18628 | - this->location())) | |
18629 | - { | |
18630 | - mpz_clear(ival); | |
18631 | - return false; | |
18632 | - } | |
18633 | - mpz_set(val, ival); | |
18634 | - mpz_clear(ival); | |
18635 | - *ptype = this->type_; | |
18636 | - return true; | |
18637 | - } | |
18638 | - mpz_clear(ival); | |
18639 | - | |
18640 | - mpfr_t fval; | |
18641 | - mpfr_init(fval); | |
18642 | - if (this->expr_->float_constant_value(fval, &dummy)) | |
18643 | - { | |
18644 | - mpfr_get_z(val, fval, GMP_RNDN); | |
18645 | - mpfr_clear(fval); | |
18646 | - if (!Integer_expression::check_constant(val, this->type_, | |
18647 | - this->location())) | |
18648 | - return false; | |
18649 | - *ptype = this->type_; | |
18650 | - return true; | |
18651 | - } | |
18652 | - mpfr_clear(fval); | |
18653 | - | |
18654 | - return false; | |
18655 | -} | |
18656 | - | |
18657 | -// Return the constant floating point value if there is one. | |
18658 | - | |
18659 | -bool | |
18660 | -Type_conversion_expression::do_float_constant_value(mpfr_t val, | |
18661 | - Type** ptype) const | |
18662 | -{ | |
18663 | - if (this->type_->float_type() == NULL) | |
18664 | + if (!this->expr_->numeric_constant_value(nc)) | |
18665 | return false; | |
18666 | - | |
18667 | - mpfr_t fval; | |
18668 | - mpfr_init(fval); | |
18669 | - Type* dummy; | |
18670 | - if (this->expr_->float_constant_value(fval, &dummy)) | |
18671 | - { | |
18672 | - if (!Float_expression::check_constant(fval, this->type_, | |
18673 | - this->location())) | |
18674 | - { | |
18675 | - mpfr_clear(fval); | |
18676 | - return false; | |
18677 | - } | |
18678 | - mpfr_set(val, fval, GMP_RNDN); | |
18679 | - mpfr_clear(fval); | |
18680 | - Float_expression::constrain_float(val, this->type_); | |
18681 | - *ptype = this->type_; | |
18682 | - return true; | |
18683 | - } | |
18684 | - mpfr_clear(fval); | |
18685 | - | |
18686 | - return false; | |
18687 | + return nc->set_type(this->type_, false, this->location()); | |
18688 | } | |
18689 | ||
18690 | -// Return the constant complex value if there is one. | |
18691 | - | |
18692 | -bool | |
18693 | -Type_conversion_expression::do_complex_constant_value(mpfr_t real, | |
18694 | - mpfr_t imag, | |
18695 | - Type **ptype) const | |
18696 | -{ | |
18697 | - if (this->type_->complex_type() == NULL) | |
18698 | - return false; | |
18699 | - | |
18700 | - mpfr_t rval; | |
18701 | - mpfr_t ival; | |
18702 | - mpfr_init(rval); | |
18703 | - mpfr_init(ival); | |
18704 | - Type* dummy; | |
18705 | - if (this->expr_->complex_constant_value(rval, ival, &dummy)) | |
18706 | - { | |
18707 | - if (!Complex_expression::check_constant(rval, ival, this->type_, | |
18708 | - this->location())) | |
18709 | - { | |
18710 | - mpfr_clear(rval); | |
18711 | - mpfr_clear(ival); | |
18712 | - return false; | |
18713 | - } | |
18714 | - mpfr_set(real, rval, GMP_RNDN); | |
18715 | - mpfr_set(imag, ival, GMP_RNDN); | |
18716 | - mpfr_clear(rval); | |
18717 | - mpfr_clear(ival); | |
18718 | - Complex_expression::constrain_complex(real, imag, this->type_); | |
18719 | - *ptype = this->type_; | |
18720 | - return true; | |
18721 | - } | |
18722 | - mpfr_clear(rval); | |
18723 | - mpfr_clear(ival); | |
18724 | - | |
18725 | - return false; | |
18726 | -} | |
18727 | - | |
18728 | // Return the constant string value if there is one. | |
18729 | ||
18730 | bool | |
18731 | @@ -3613,20 +3049,17 @@ | |
18732 | if (this->type_->is_string_type() | |
18733 | && this->expr_->type()->integer_type() != NULL) | |
18734 | { | |
18735 | - mpz_t ival; | |
18736 | - mpz_init(ival); | |
18737 | - Type* dummy; | |
18738 | - if (this->expr_->integer_constant_value(false, ival, &dummy)) | |
18739 | + Numeric_constant nc; | |
18740 | + if (this->expr_->numeric_constant_value(&nc)) | |
18741 | { | |
18742 | - unsigned long ulval = mpz_get_ui(ival); | |
18743 | - if (mpz_cmp_ui(ival, ulval) == 0) | |
18744 | + unsigned long ival; | |
18745 | + if (nc.to_unsigned_long(&ival) == Numeric_constant::NC_UL_VALID) | |
18746 | { | |
18747 | - Lex::append_char(ulval, true, val, this->location()); | |
18748 | - mpz_clear(ival); | |
18749 | + val->clear(); | |
18750 | + Lex::append_char(ival, true, val, this->location()); | |
18751 | return true; | |
18752 | } | |
18753 | } | |
18754 | - mpz_clear(ival); | |
18755 | } | |
18756 | ||
18757 | // FIXME: Could handle conversion from const []int here. | |
18758 | @@ -4041,23 +3474,12 @@ | |
18759 | this->create_temp_ = true; | |
18760 | } | |
18761 | ||
18762 | - // Apply unary opcode OP to UVAL, setting VAL. Return true if this | |
18763 | - // could be done, false if not. | |
18764 | + // Apply unary opcode OP to UNC, setting NC. Return true if this | |
18765 | + // could be done, false if not. Issue errors for overflow. | |
18766 | static bool | |
18767 | - eval_integer(Operator op, Type* utype, mpz_t uval, mpz_t val, | |
18768 | - Location); | |
18769 | + eval_constant(Operator op, const Numeric_constant* unc, | |
18770 | + Location, Numeric_constant* nc); | |
18771 | ||
18772 | - // Apply unary opcode OP to UVAL, setting VAL. Return true if this | |
18773 | - // could be done, false if not. | |
18774 | - static bool | |
18775 | - eval_float(Operator op, mpfr_t uval, mpfr_t val); | |
18776 | - | |
18777 | - // Apply unary opcode OP to UREAL/UIMAG, setting REAL/IMAG. Return | |
18778 | - // true if this could be done, false if not. | |
18779 | - static bool | |
18780 | - eval_complex(Operator op, mpfr_t ureal, mpfr_t uimag, mpfr_t real, | |
18781 | - mpfr_t imag); | |
18782 | - | |
18783 | static Expression* | |
18784 | do_import(Import*); | |
18785 | ||
18786 | @@ -4073,14 +3495,8 @@ | |
18787 | do_is_constant() const; | |
18788 | ||
18789 | bool | |
18790 | - do_integer_constant_value(bool, mpz_t, Type**) const; | |
18791 | + do_numeric_constant_value(Numeric_constant*) const; | |
18792 | ||
18793 | - bool | |
18794 | - do_float_constant_value(mpfr_t, Type**) const; | |
18795 | - | |
18796 | - bool | |
18797 | - do_complex_constant_value(mpfr_t, mpfr_t, Type**) const; | |
18798 | - | |
18799 | Type* | |
18800 | do_type(); | |
18801 | ||
18802 | @@ -4178,63 +3594,15 @@ | |
18803 | return Expression::make_error(this->location()); | |
18804 | } | |
18805 | ||
18806 | - if (op == OPERATOR_PLUS || op == OPERATOR_MINUS | |
18807 | - || op == OPERATOR_NOT || op == OPERATOR_XOR) | |
18808 | + if (op == OPERATOR_PLUS || op == OPERATOR_MINUS || op == OPERATOR_XOR) | |
18809 | { | |
18810 | - Expression* ret = NULL; | |
18811 | - | |
18812 | - mpz_t eval; | |
18813 | - mpz_init(eval); | |
18814 | - Type* etype; | |
18815 | - if (expr->integer_constant_value(false, eval, &etype)) | |
18816 | + Numeric_constant nc; | |
18817 | + if (expr->numeric_constant_value(&nc)) | |
18818 | { | |
18819 | - mpz_t val; | |
18820 | - mpz_init(val); | |
18821 | - if (Unary_expression::eval_integer(op, etype, eval, val, loc)) | |
18822 | - ret = Expression::make_integer(&val, etype, loc); | |
18823 | - mpz_clear(val); | |
18824 | + Numeric_constant result; | |
18825 | + if (Unary_expression::eval_constant(op, &nc, loc, &result)) | |
18826 | + return result.expression(loc); | |
18827 | } | |
18828 | - mpz_clear(eval); | |
18829 | - if (ret != NULL) | |
18830 | - return ret; | |
18831 | - | |
18832 | - if (op == OPERATOR_PLUS || op == OPERATOR_MINUS) | |
18833 | - { | |
18834 | - mpfr_t fval; | |
18835 | - mpfr_init(fval); | |
18836 | - Type* ftype; | |
18837 | - if (expr->float_constant_value(fval, &ftype)) | |
18838 | - { | |
18839 | - mpfr_t val; | |
18840 | - mpfr_init(val); | |
18841 | - if (Unary_expression::eval_float(op, fval, val)) | |
18842 | - ret = Expression::make_float(&val, ftype, loc); | |
18843 | - mpfr_clear(val); | |
18844 | - } | |
18845 | - if (ret != NULL) | |
18846 | - { | |
18847 | - mpfr_clear(fval); | |
18848 | - return ret; | |
18849 | - } | |
18850 | - | |
18851 | - mpfr_t ival; | |
18852 | - mpfr_init(ival); | |
18853 | - if (expr->complex_constant_value(fval, ival, &ftype)) | |
18854 | - { | |
18855 | - mpfr_t real; | |
18856 | - mpfr_t imag; | |
18857 | - mpfr_init(real); | |
18858 | - mpfr_init(imag); | |
18859 | - if (Unary_expression::eval_complex(op, fval, ival, real, imag)) | |
18860 | - ret = Expression::make_complex(&real, &imag, ftype, loc); | |
18861 | - mpfr_clear(real); | |
18862 | - mpfr_clear(imag); | |
18863 | - } | |
18864 | - mpfr_clear(ival); | |
18865 | - mpfr_clear(fval); | |
18866 | - if (ret != NULL) | |
18867 | - return ret; | |
18868 | - } | |
18869 | } | |
18870 | ||
18871 | return this; | |
18872 | @@ -4269,199 +3637,174 @@ | |
18873 | return this->expr_->is_constant(); | |
18874 | } | |
18875 | ||
18876 | -// Apply unary opcode OP to UVAL, setting VAL. UTYPE is the type of | |
18877 | -// UVAL, if known; it may be NULL. Return true if this could be done, | |
18878 | -// false if not. | |
18879 | +// Apply unary opcode OP to UNC, setting NC. Return true if this | |
18880 | +// could be done, false if not. Issue errors for overflow. | |
18881 | ||
18882 | bool | |
18883 | -Unary_expression::eval_integer(Operator op, Type* utype, mpz_t uval, mpz_t val, | |
18884 | - Location location) | |
18885 | +Unary_expression::eval_constant(Operator op, const Numeric_constant* unc, | |
18886 | + Location location, Numeric_constant* nc) | |
18887 | { | |
18888 | switch (op) | |
18889 | { | |
18890 | case OPERATOR_PLUS: | |
18891 | - mpz_set(val, uval); | |
18892 | + *nc = *unc; | |
18893 | return true; | |
18894 | + | |
18895 | case OPERATOR_MINUS: | |
18896 | - mpz_neg(val, uval); | |
18897 | - return Integer_expression::check_constant(val, utype, location); | |
18898 | - case OPERATOR_NOT: | |
18899 | - mpz_set_ui(val, mpz_cmp_si(uval, 0) == 0 ? 1 : 0); | |
18900 | - return true; | |
18901 | - case OPERATOR_XOR: | |
18902 | - if (utype == NULL | |
18903 | - || utype->integer_type() == NULL | |
18904 | - || utype->integer_type()->is_abstract()) | |
18905 | - mpz_com(val, uval); | |
18906 | + if (unc->is_int() || unc->is_rune()) | |
18907 | + break; | |
18908 | + else if (unc->is_float()) | |
18909 | + { | |
18910 | + mpfr_t uval; | |
18911 | + unc->get_float(&uval); | |
18912 | + mpfr_t val; | |
18913 | + mpfr_init(val); | |
18914 | + mpfr_neg(val, uval, GMP_RNDN); | |
18915 | + nc->set_float(unc->type(), val); | |
18916 | + mpfr_clear(uval); | |
18917 | + mpfr_clear(val); | |
18918 | + return true; | |
18919 | + } | |
18920 | + else if (unc->is_complex()) | |
18921 | + { | |
18922 | + mpfr_t ureal, uimag; | |
18923 | + unc->get_complex(&ureal, &uimag); | |
18924 | + mpfr_t real, imag; | |
18925 | + mpfr_init(real); | |
18926 | + mpfr_init(imag); | |
18927 | + mpfr_neg(real, ureal, GMP_RNDN); | |
18928 | + mpfr_neg(imag, uimag, GMP_RNDN); | |
18929 | + nc->set_complex(unc->type(), real, imag); | |
18930 | + mpfr_clear(ureal); | |
18931 | + mpfr_clear(uimag); | |
18932 | + mpfr_clear(real); | |
18933 | + mpfr_clear(imag); | |
18934 | + return true; | |
18935 | + } | |
18936 | else | |
18937 | - { | |
18938 | - // The number of HOST_WIDE_INTs that it takes to represent | |
18939 | - // UVAL. | |
18940 | - size_t count = ((mpz_sizeinbase(uval, 2) | |
18941 | - + HOST_BITS_PER_WIDE_INT | |
18942 | - - 1) | |
18943 | - / HOST_BITS_PER_WIDE_INT); | |
18944 | + go_unreachable(); | |
18945 | ||
18946 | - unsigned HOST_WIDE_INT* phwi = new unsigned HOST_WIDE_INT[count]; | |
18947 | - memset(phwi, 0, count * sizeof(HOST_WIDE_INT)); | |
18948 | + case OPERATOR_XOR: | |
18949 | + break; | |
18950 | ||
18951 | - size_t obits = utype->integer_type()->bits(); | |
18952 | - | |
18953 | - if (!utype->integer_type()->is_unsigned() | |
18954 | - && mpz_sgn(uval) < 0) | |
18955 | - { | |
18956 | - mpz_t adj; | |
18957 | - mpz_init_set_ui(adj, 1); | |
18958 | - mpz_mul_2exp(adj, adj, obits); | |
18959 | - mpz_add(uval, uval, adj); | |
18960 | - mpz_clear(adj); | |
18961 | - } | |
18962 | - | |
18963 | - size_t ecount; | |
18964 | - mpz_export(phwi, &ecount, -1, sizeof(HOST_WIDE_INT), 0, 0, uval); | |
18965 | - go_assert(ecount <= count); | |
18966 | - | |
18967 | - // Trim down to the number of words required by the type. | |
18968 | - size_t ocount = ((obits + HOST_BITS_PER_WIDE_INT - 1) | |
18969 | - / HOST_BITS_PER_WIDE_INT); | |
18970 | - go_assert(ocount <= count); | |
18971 | - | |
18972 | - for (size_t i = 0; i < ocount; ++i) | |
18973 | - phwi[i] = ~phwi[i]; | |
18974 | - | |
18975 | - size_t clearbits = ocount * HOST_BITS_PER_WIDE_INT - obits; | |
18976 | - if (clearbits != 0) | |
18977 | - phwi[ocount - 1] &= (((unsigned HOST_WIDE_INT) (HOST_WIDE_INT) -1) | |
18978 | - >> clearbits); | |
18979 | - | |
18980 | - mpz_import(val, ocount, -1, sizeof(HOST_WIDE_INT), 0, 0, phwi); | |
18981 | - | |
18982 | - if (!utype->integer_type()->is_unsigned() | |
18983 | - && mpz_tstbit(val, obits - 1)) | |
18984 | - { | |
18985 | - mpz_t adj; | |
18986 | - mpz_init_set_ui(adj, 1); | |
18987 | - mpz_mul_2exp(adj, adj, obits); | |
18988 | - mpz_sub(val, val, adj); | |
18989 | - mpz_clear(adj); | |
18990 | - } | |
18991 | - | |
18992 | - delete[] phwi; | |
18993 | - } | |
18994 | - return Integer_expression::check_constant(val, utype, location); | |
18995 | + case OPERATOR_NOT: | |
18996 | case OPERATOR_AND: | |
18997 | case OPERATOR_MULT: | |
18998 | return false; | |
18999 | + | |
19000 | default: | |
19001 | go_unreachable(); | |
19002 | } | |
19003 | -} | |
19004 | ||
19005 | -// Apply unary opcode OP to UVAL, setting VAL. Return true if this | |
19006 | -// could be done, false if not. | |
19007 | + if (!unc->is_int() && !unc->is_rune()) | |
19008 | + return false; | |
19009 | ||
19010 | -bool | |
19011 | -Unary_expression::eval_float(Operator op, mpfr_t uval, mpfr_t val) | |
19012 | -{ | |
19013 | + mpz_t uval; | |
19014 | + if (unc->is_rune()) | |
19015 | + unc->get_rune(&uval); | |
19016 | + else | |
19017 | + unc->get_int(&uval); | |
19018 | + mpz_t val; | |
19019 | + mpz_init(val); | |
19020 | + | |
19021 | switch (op) | |
19022 | { | |
19023 | - case OPERATOR_PLUS: | |
19024 | - mpfr_set(val, uval, GMP_RNDN); | |
19025 | - return true; | |
19026 | case OPERATOR_MINUS: | |
19027 | - mpfr_neg(val, uval, GMP_RNDN); | |
19028 | - return true; | |
19029 | + mpz_neg(val, uval); | |
19030 | + break; | |
19031 | + | |
19032 | case OPERATOR_NOT: | |
19033 | + mpz_set_ui(val, mpz_cmp_si(uval, 0) == 0 ? 1 : 0); | |
19034 | + break; | |
19035 | + | |
19036 | case OPERATOR_XOR: | |
19037 | - case OPERATOR_AND: | |
19038 | - case OPERATOR_MULT: | |
19039 | - return false; | |
19040 | - default: | |
19041 | - go_unreachable(); | |
19042 | - } | |
19043 | -} | |
19044 | + { | |
19045 | + Type* utype = unc->type(); | |
19046 | + if (utype->integer_type() == NULL | |
19047 | + || utype->integer_type()->is_abstract()) | |
19048 | + mpz_com(val, uval); | |
19049 | + else | |
19050 | + { | |
19051 | + // The number of HOST_WIDE_INTs that it takes to represent | |
19052 | + // UVAL. | |
19053 | + size_t count = ((mpz_sizeinbase(uval, 2) | |
19054 | + + HOST_BITS_PER_WIDE_INT | |
19055 | + - 1) | |
19056 | + / HOST_BITS_PER_WIDE_INT); | |
19057 | ||
19058 | -// Apply unary opcode OP to RVAL/IVAL, setting REAL/IMAG. Return true | |
19059 | -// if this could be done, false if not. | |
19060 | + unsigned HOST_WIDE_INT* phwi = new unsigned HOST_WIDE_INT[count]; | |
19061 | + memset(phwi, 0, count * sizeof(HOST_WIDE_INT)); | |
19062 | ||
19063 | -bool | |
19064 | -Unary_expression::eval_complex(Operator op, mpfr_t rval, mpfr_t ival, | |
19065 | - mpfr_t real, mpfr_t imag) | |
19066 | -{ | |
19067 | - switch (op) | |
19068 | - { | |
19069 | - case OPERATOR_PLUS: | |
19070 | - mpfr_set(real, rval, GMP_RNDN); | |
19071 | - mpfr_set(imag, ival, GMP_RNDN); | |
19072 | - return true; | |
19073 | - case OPERATOR_MINUS: | |
19074 | - mpfr_neg(real, rval, GMP_RNDN); | |
19075 | - mpfr_neg(imag, ival, GMP_RNDN); | |
19076 | - return true; | |
19077 | - case OPERATOR_NOT: | |
19078 | - case OPERATOR_XOR: | |
19079 | - case OPERATOR_AND: | |
19080 | - case OPERATOR_MULT: | |
19081 | - return false; | |
19082 | + size_t obits = utype->integer_type()->bits(); | |
19083 | + | |
19084 | + if (!utype->integer_type()->is_unsigned() && mpz_sgn(uval) < 0) | |
19085 | + { | |
19086 | + mpz_t adj; | |
19087 | + mpz_init_set_ui(adj, 1); | |
19088 | + mpz_mul_2exp(adj, adj, obits); | |
19089 | + mpz_add(uval, uval, adj); | |
19090 | + mpz_clear(adj); | |
19091 | + } | |
19092 | + | |
19093 | + size_t ecount; | |
19094 | + mpz_export(phwi, &ecount, -1, sizeof(HOST_WIDE_INT), 0, 0, uval); | |
19095 | + go_assert(ecount <= count); | |
19096 | + | |
19097 | + // Trim down to the number of words required by the type. | |
19098 | + size_t ocount = ((obits + HOST_BITS_PER_WIDE_INT - 1) | |
19099 | + / HOST_BITS_PER_WIDE_INT); | |
19100 | + go_assert(ocount <= count); | |
19101 | + | |
19102 | + for (size_t i = 0; i < ocount; ++i) | |
19103 | + phwi[i] = ~phwi[i]; | |
19104 | + | |
19105 | + size_t clearbits = ocount * HOST_BITS_PER_WIDE_INT - obits; | |
19106 | + if (clearbits != 0) | |
19107 | + phwi[ocount - 1] &= (((unsigned HOST_WIDE_INT) (HOST_WIDE_INT) -1) | |
19108 | + >> clearbits); | |
19109 | + | |
19110 | + mpz_import(val, ocount, -1, sizeof(HOST_WIDE_INT), 0, 0, phwi); | |
19111 | + | |
19112 | + if (!utype->integer_type()->is_unsigned() | |
19113 | + && mpz_tstbit(val, obits - 1)) | |
19114 | + { | |
19115 | + mpz_t adj; | |
19116 | + mpz_init_set_ui(adj, 1); | |
19117 | + mpz_mul_2exp(adj, adj, obits); | |
19118 | + mpz_sub(val, val, adj); | |
19119 | + mpz_clear(adj); | |
19120 | + } | |
19121 | + | |
19122 | + delete[] phwi; | |
19123 | + } | |
19124 | + } | |
19125 | + break; | |
19126 | + | |
19127 | default: | |
19128 | go_unreachable(); | |
19129 | } | |
19130 | -} | |
19131 | ||
19132 | -// Return the integral constant value of a unary expression, if it has one. | |
19133 | + if (unc->is_rune()) | |
19134 | + nc->set_rune(NULL, val); | |
19135 | + else | |
19136 | + nc->set_int(NULL, val); | |
19137 | ||
19138 | -bool | |
19139 | -Unary_expression::do_integer_constant_value(bool iota_is_constant, mpz_t val, | |
19140 | - Type** ptype) const | |
19141 | -{ | |
19142 | - mpz_t uval; | |
19143 | - mpz_init(uval); | |
19144 | - bool ret; | |
19145 | - if (!this->expr_->integer_constant_value(iota_is_constant, uval, ptype)) | |
19146 | - ret = false; | |
19147 | - else | |
19148 | - ret = Unary_expression::eval_integer(this->op_, *ptype, uval, val, | |
19149 | - this->location()); | |
19150 | mpz_clear(uval); | |
19151 | - return ret; | |
19152 | -} | |
19153 | + mpz_clear(val); | |
19154 | ||
19155 | -// Return the floating point constant value of a unary expression, if | |
19156 | -// it has one. | |
19157 | - | |
19158 | -bool | |
19159 | -Unary_expression::do_float_constant_value(mpfr_t val, Type** ptype) const | |
19160 | -{ | |
19161 | - mpfr_t uval; | |
19162 | - mpfr_init(uval); | |
19163 | - bool ret; | |
19164 | - if (!this->expr_->float_constant_value(uval, ptype)) | |
19165 | - ret = false; | |
19166 | - else | |
19167 | - ret = Unary_expression::eval_float(this->op_, uval, val); | |
19168 | - mpfr_clear(uval); | |
19169 | - return ret; | |
19170 | + return nc->set_type(unc->type(), true, location); | |
19171 | } | |
19172 | ||
19173 | -// Return the complex constant value of a unary expression, if it has | |
19174 | -// one. | |
19175 | +// Return the integral constant value of a unary expression, if it has one. | |
19176 | ||
19177 | bool | |
19178 | -Unary_expression::do_complex_constant_value(mpfr_t real, mpfr_t imag, | |
19179 | - Type** ptype) const | |
19180 | +Unary_expression::do_numeric_constant_value(Numeric_constant* nc) const | |
19181 | { | |
19182 | - mpfr_t rval; | |
19183 | - mpfr_t ival; | |
19184 | - mpfr_init(rval); | |
19185 | - mpfr_init(ival); | |
19186 | - bool ret; | |
19187 | - if (!this->expr_->complex_constant_value(rval, ival, ptype)) | |
19188 | - ret = false; | |
19189 | - else | |
19190 | - ret = Unary_expression::eval_complex(this->op_, rval, ival, real, imag); | |
19191 | - mpfr_clear(rval); | |
19192 | - mpfr_clear(ival); | |
19193 | - return ret; | |
19194 | + Numeric_constant unc; | |
19195 | + if (!this->expr_->numeric_constant_value(&unc)) | |
19196 | + return false; | |
19197 | + return Unary_expression::eval_constant(this->op_, &unc, this->location(), | |
19198 | + nc); | |
19199 | } | |
19200 | ||
19201 | // Return the type of a unary expression. | |
19202 | @@ -4558,6 +3901,10 @@ | |
19203 | break; | |
19204 | ||
19205 | case OPERATOR_NOT: | |
19206 | + if (!type->is_boolean_type()) | |
19207 | + this->report_error(_("expected boolean type")); | |
19208 | + break; | |
19209 | + | |
19210 | case OPERATOR_XOR: | |
19211 | if (type->integer_type() == NULL | |
19212 | && !type->is_boolean_type()) | |
19213 | @@ -4685,19 +4032,50 @@ | |
19214 | ||
19215 | if (this->create_temp_ | |
19216 | && !TREE_ADDRESSABLE(TREE_TYPE(expr)) | |
19217 | - && !DECL_P(expr) | |
19218 | + && (TREE_CODE(expr) == CONST_DECL || !DECL_P(expr)) | |
19219 | && TREE_CODE(expr) != INDIRECT_REF | |
19220 | && TREE_CODE(expr) != COMPONENT_REF) | |
19221 | { | |
19222 | - tree tmp = create_tmp_var(TREE_TYPE(expr), get_name(expr)); | |
19223 | - DECL_IGNORED_P(tmp) = 1; | |
19224 | - DECL_INITIAL(tmp) = expr; | |
19225 | - TREE_ADDRESSABLE(tmp) = 1; | |
19226 | - return build2_loc(loc.gcc_location(), COMPOUND_EXPR, | |
19227 | - build_pointer_type(TREE_TYPE(expr)), | |
19228 | - build1_loc(loc.gcc_location(), DECL_EXPR, | |
19229 | - void_type_node, tmp), | |
19230 | - build_fold_addr_expr_loc(loc.gcc_location(), tmp)); | |
19231 | + if (current_function_decl != NULL) | |
19232 | + { | |
19233 | + tree tmp = create_tmp_var(TREE_TYPE(expr), get_name(expr)); | |
19234 | + DECL_IGNORED_P(tmp) = 1; | |
19235 | + DECL_INITIAL(tmp) = expr; | |
19236 | + TREE_ADDRESSABLE(tmp) = 1; | |
19237 | + return build2_loc(loc.gcc_location(), COMPOUND_EXPR, | |
19238 | + build_pointer_type(TREE_TYPE(expr)), | |
19239 | + build1_loc(loc.gcc_location(), DECL_EXPR, | |
19240 | + void_type_node, tmp), | |
19241 | + build_fold_addr_expr_loc(loc.gcc_location(), | |
19242 | + tmp)); | |
19243 | + } | |
19244 | + else | |
19245 | + { | |
19246 | + tree tmp = build_decl(loc.gcc_location(), VAR_DECL, | |
19247 | + create_tmp_var_name("A"), TREE_TYPE(expr)); | |
19248 | + DECL_EXTERNAL(tmp) = 0; | |
19249 | + TREE_PUBLIC(tmp) = 0; | |
19250 | + TREE_STATIC(tmp) = 1; | |
19251 | + DECL_ARTIFICIAL(tmp) = 1; | |
19252 | + TREE_ADDRESSABLE(tmp) = 1; | |
19253 | + tree make_tmp; | |
19254 | + if (!TREE_CONSTANT(expr)) | |
19255 | + make_tmp = fold_build2_loc(loc.gcc_location(), INIT_EXPR, | |
19256 | + void_type_node, tmp, expr); | |
19257 | + else | |
19258 | + { | |
19259 | + TREE_READONLY(tmp) = 1; | |
19260 | + TREE_CONSTANT(tmp) = 1; | |
19261 | + DECL_INITIAL(tmp) = expr; | |
19262 | + make_tmp = NULL_TREE; | |
19263 | + } | |
19264 | + rest_of_decl_compilation(tmp, 1, 0); | |
19265 | + tree addr = build_fold_addr_expr_loc(loc.gcc_location(), tmp); | |
19266 | + if (make_tmp == NULL_TREE) | |
19267 | + return addr; | |
19268 | + return build2_loc(loc.gcc_location(), COMPOUND_EXPR, | |
19269 | + TREE_TYPE(addr), make_tmp, addr); | |
19270 | + } | |
19271 | } | |
19272 | ||
19273 | return build_fold_addr_expr_loc(loc.gcc_location(), expr); | |
19274 | @@ -4854,124 +4232,239 @@ | |
19275 | return Expression::traverse(&this->right_, traverse); | |
19276 | } | |
19277 | ||
19278 | -// Compare integer constants according to OP. | |
19279 | +// Return the type to use for a binary operation on operands of | |
19280 | +// LEFT_TYPE and RIGHT_TYPE. These are the types of constants and as | |
19281 | +// such may be NULL or abstract. | |
19282 | ||
19283 | bool | |
19284 | -Binary_expression::compare_integer(Operator op, mpz_t left_val, | |
19285 | - mpz_t right_val) | |
19286 | +Binary_expression::operation_type(Operator op, Type* left_type, | |
19287 | + Type* right_type, Type** result_type) | |
19288 | { | |
19289 | - int i = mpz_cmp(left_val, right_val); | |
19290 | + if (left_type != right_type | |
19291 | + && !left_type->is_abstract() | |
19292 | + && !right_type->is_abstract() | |
19293 | + && left_type->base() != right_type->base() | |
19294 | + && op != OPERATOR_LSHIFT | |
19295 | + && op != OPERATOR_RSHIFT) | |
19296 | + { | |
19297 | + // May be a type error--let it be diagnosed elsewhere. | |
19298 | + return false; | |
19299 | + } | |
19300 | + | |
19301 | + if (op == OPERATOR_LSHIFT || op == OPERATOR_RSHIFT) | |
19302 | + { | |
19303 | + if (left_type->integer_type() != NULL) | |
19304 | + *result_type = left_type; | |
19305 | + else | |
19306 | + *result_type = Type::make_abstract_integer_type(); | |
19307 | + } | |
19308 | + else if (!left_type->is_abstract() && left_type->named_type() != NULL) | |
19309 | + *result_type = left_type; | |
19310 | + else if (!right_type->is_abstract() && right_type->named_type() != NULL) | |
19311 | + *result_type = right_type; | |
19312 | + else if (!left_type->is_abstract()) | |
19313 | + *result_type = left_type; | |
19314 | + else if (!right_type->is_abstract()) | |
19315 | + *result_type = right_type; | |
19316 | + else if (left_type->complex_type() != NULL) | |
19317 | + *result_type = left_type; | |
19318 | + else if (right_type->complex_type() != NULL) | |
19319 | + *result_type = right_type; | |
19320 | + else if (left_type->float_type() != NULL) | |
19321 | + *result_type = left_type; | |
19322 | + else if (right_type->float_type() != NULL) | |
19323 | + *result_type = right_type; | |
19324 | + else if (left_type->integer_type() != NULL | |
19325 | + && left_type->integer_type()->is_rune()) | |
19326 | + *result_type = left_type; | |
19327 | + else if (right_type->integer_type() != NULL | |
19328 | + && right_type->integer_type()->is_rune()) | |
19329 | + *result_type = right_type; | |
19330 | + else | |
19331 | + *result_type = left_type; | |
19332 | + | |
19333 | + return true; | |
19334 | +} | |
19335 | + | |
19336 | +// Convert an integer comparison code and an operator to a boolean | |
19337 | +// value. | |
19338 | + | |
19339 | +bool | |
19340 | +Binary_expression::cmp_to_bool(Operator op, int cmp) | |
19341 | +{ | |
19342 | switch (op) | |
19343 | { | |
19344 | case OPERATOR_EQEQ: | |
19345 | - return i == 0; | |
19346 | + return cmp == 0; | |
19347 | + break; | |
19348 | case OPERATOR_NOTEQ: | |
19349 | - return i != 0; | |
19350 | + return cmp != 0; | |
19351 | + break; | |
19352 | case OPERATOR_LT: | |
19353 | - return i < 0; | |
19354 | + return cmp < 0; | |
19355 | + break; | |
19356 | case OPERATOR_LE: | |
19357 | - return i <= 0; | |
19358 | + return cmp <= 0; | |
19359 | case OPERATOR_GT: | |
19360 | - return i > 0; | |
19361 | + return cmp > 0; | |
19362 | case OPERATOR_GE: | |
19363 | - return i >= 0; | |
19364 | + return cmp >= 0; | |
19365 | default: | |
19366 | go_unreachable(); | |
19367 | } | |
19368 | } | |
19369 | ||
19370 | -// Compare floating point constants according to OP. | |
19371 | +// Compare constants according to OP. | |
19372 | ||
19373 | bool | |
19374 | -Binary_expression::compare_float(Operator op, Type* type, mpfr_t left_val, | |
19375 | - mpfr_t right_val) | |
19376 | +Binary_expression::compare_constant(Operator op, Numeric_constant* left_nc, | |
19377 | + Numeric_constant* right_nc, | |
19378 | + Location location, bool* result) | |
19379 | { | |
19380 | - int i; | |
19381 | - if (type == NULL) | |
19382 | - i = mpfr_cmp(left_val, right_val); | |
19383 | + Type* left_type = left_nc->type(); | |
19384 | + Type* right_type = right_nc->type(); | |
19385 | + | |
19386 | + Type* type; | |
19387 | + if (!Binary_expression::operation_type(op, left_type, right_type, &type)) | |
19388 | + return false; | |
19389 | + | |
19390 | + // When comparing an untyped operand to a typed operand, we are | |
19391 | + // effectively coercing the untyped operand to the other operand's | |
19392 | + // type, so make sure that is valid. | |
19393 | + if (!left_nc->set_type(type, true, location) | |
19394 | + || !right_nc->set_type(type, true, location)) | |
19395 | + return false; | |
19396 | + | |
19397 | + bool ret; | |
19398 | + int cmp; | |
19399 | + if (type->complex_type() != NULL) | |
19400 | + { | |
19401 | + if (op != OPERATOR_EQEQ && op != OPERATOR_NOTEQ) | |
19402 | + return false; | |
19403 | + ret = Binary_expression::compare_complex(left_nc, right_nc, &cmp); | |
19404 | + } | |
19405 | + else if (type->float_type() != NULL) | |
19406 | + ret = Binary_expression::compare_float(left_nc, right_nc, &cmp); | |
19407 | else | |
19408 | + ret = Binary_expression::compare_integer(left_nc, right_nc, &cmp); | |
19409 | + | |
19410 | + if (ret) | |
19411 | + *result = Binary_expression::cmp_to_bool(op, cmp); | |
19412 | + | |
19413 | + return ret; | |
19414 | +} | |
19415 | + | |
19416 | +// Compare integer constants. | |
19417 | + | |
19418 | +bool | |
19419 | +Binary_expression::compare_integer(const Numeric_constant* left_nc, | |
19420 | + const Numeric_constant* right_nc, | |
19421 | + int* cmp) | |
19422 | +{ | |
19423 | + mpz_t left_val; | |
19424 | + if (!left_nc->to_int(&left_val)) | |
19425 | + return false; | |
19426 | + mpz_t right_val; | |
19427 | + if (!right_nc->to_int(&right_val)) | |
19428 | { | |
19429 | - mpfr_t lv; | |
19430 | - mpfr_init_set(lv, left_val, GMP_RNDN); | |
19431 | - mpfr_t rv; | |
19432 | - mpfr_init_set(rv, right_val, GMP_RNDN); | |
19433 | - Float_expression::constrain_float(lv, type); | |
19434 | - Float_expression::constrain_float(rv, type); | |
19435 | - i = mpfr_cmp(lv, rv); | |
19436 | - mpfr_clear(lv); | |
19437 | - mpfr_clear(rv); | |
19438 | + mpz_clear(left_val); | |
19439 | + return false; | |
19440 | } | |
19441 | - switch (op) | |
19442 | + | |
19443 | + *cmp = mpz_cmp(left_val, right_val); | |
19444 | + | |
19445 | + mpz_clear(left_val); | |
19446 | + mpz_clear(right_val); | |
19447 | + | |
19448 | + return true; | |
19449 | +} | |
19450 | + | |
19451 | +// Compare floating point constants. | |
19452 | + | |
19453 | +bool | |
19454 | +Binary_expression::compare_float(const Numeric_constant* left_nc, | |
19455 | + const Numeric_constant* right_nc, | |
19456 | + int* cmp) | |
19457 | +{ | |
19458 | + mpfr_t left_val; | |
19459 | + if (!left_nc->to_float(&left_val)) | |
19460 | + return false; | |
19461 | + mpfr_t right_val; | |
19462 | + if (!right_nc->to_float(&right_val)) | |
19463 | { | |
19464 | - case OPERATOR_EQEQ: | |
19465 | - return i == 0; | |
19466 | - case OPERATOR_NOTEQ: | |
19467 | - return i != 0; | |
19468 | - case OPERATOR_LT: | |
19469 | - return i < 0; | |
19470 | - case OPERATOR_LE: | |
19471 | - return i <= 0; | |
19472 | - case OPERATOR_GT: | |
19473 | - return i > 0; | |
19474 | - case OPERATOR_GE: | |
19475 | - return i >= 0; | |
19476 | - default: | |
19477 | - go_unreachable(); | |
19478 | + mpfr_clear(left_val); | |
19479 | + return false; | |
19480 | } | |
19481 | + | |
19482 | + // We already coerced both operands to the same type. If that type | |
19483 | + // is not an abstract type, we need to round the values accordingly. | |
19484 | + Type* type = left_nc->type(); | |
19485 | + if (!type->is_abstract() && type->float_type() != NULL) | |
19486 | + { | |
19487 | + int bits = type->float_type()->bits(); | |
19488 | + mpfr_prec_round(left_val, bits, GMP_RNDN); | |
19489 | + mpfr_prec_round(right_val, bits, GMP_RNDN); | |
19490 | + } | |
19491 | + | |
19492 | + *cmp = mpfr_cmp(left_val, right_val); | |
19493 | + | |
19494 | + mpfr_clear(left_val); | |
19495 | + mpfr_clear(right_val); | |
19496 | + | |
19497 | + return true; | |
19498 | } | |
19499 | ||
19500 | -// Compare complex constants according to OP. Complex numbers may | |
19501 | -// only be compared for equality. | |
19502 | +// Compare complex constants. Complex numbers may only be compared | |
19503 | +// for equality. | |
19504 | ||
19505 | bool | |
19506 | -Binary_expression::compare_complex(Operator op, Type* type, | |
19507 | - mpfr_t left_real, mpfr_t left_imag, | |
19508 | - mpfr_t right_real, mpfr_t right_imag) | |
19509 | +Binary_expression::compare_complex(const Numeric_constant* left_nc, | |
19510 | + const Numeric_constant* right_nc, | |
19511 | + int* cmp) | |
19512 | { | |
19513 | - bool is_equal; | |
19514 | - if (type == NULL) | |
19515 | - is_equal = (mpfr_cmp(left_real, right_real) == 0 | |
19516 | - && mpfr_cmp(left_imag, right_imag) == 0); | |
19517 | - else | |
19518 | + mpfr_t left_real, left_imag; | |
19519 | + if (!left_nc->to_complex(&left_real, &left_imag)) | |
19520 | + return false; | |
19521 | + mpfr_t right_real, right_imag; | |
19522 | + if (!right_nc->to_complex(&right_real, &right_imag)) | |
19523 | { | |
19524 | - mpfr_t lr; | |
19525 | - mpfr_t li; | |
19526 | - mpfr_init_set(lr, left_real, GMP_RNDN); | |
19527 | - mpfr_init_set(li, left_imag, GMP_RNDN); | |
19528 | - mpfr_t rr; | |
19529 | - mpfr_t ri; | |
19530 | - mpfr_init_set(rr, right_real, GMP_RNDN); | |
19531 | - mpfr_init_set(ri, right_imag, GMP_RNDN); | |
19532 | - Complex_expression::constrain_complex(lr, li, type); | |
19533 | - Complex_expression::constrain_complex(rr, ri, type); | |
19534 | - is_equal = mpfr_cmp(lr, rr) == 0 && mpfr_cmp(li, ri) == 0; | |
19535 | - mpfr_clear(lr); | |
19536 | - mpfr_clear(li); | |
19537 | - mpfr_clear(rr); | |
19538 | - mpfr_clear(ri); | |
19539 | + mpfr_clear(left_real); | |
19540 | + mpfr_clear(left_imag); | |
19541 | + return false; | |
19542 | } | |
19543 | - switch (op) | |
19544 | + | |
19545 | + // We already coerced both operands to the same type. If that type | |
19546 | + // is not an abstract type, we need to round the values accordingly. | |
19547 | + Type* type = left_nc->type(); | |
19548 | + if (!type->is_abstract() && type->complex_type() != NULL) | |
19549 | { | |
19550 | - case OPERATOR_EQEQ: | |
19551 | - return is_equal; | |
19552 | - case OPERATOR_NOTEQ: | |
19553 | - return !is_equal; | |
19554 | - default: | |
19555 | - go_unreachable(); | |
19556 | + int bits = type->complex_type()->bits(); | |
19557 | + mpfr_prec_round(left_real, bits / 2, GMP_RNDN); | |
19558 | + mpfr_prec_round(left_imag, bits / 2, GMP_RNDN); | |
19559 | + mpfr_prec_round(right_real, bits / 2, GMP_RNDN); | |
19560 | + mpfr_prec_round(right_imag, bits / 2, GMP_RNDN); | |
19561 | } | |
19562 | + | |
19563 | + *cmp = (mpfr_cmp(left_real, right_real) != 0 | |
19564 | + || mpfr_cmp(left_imag, right_imag) != 0); | |
19565 | + | |
19566 | + mpfr_clear(left_real); | |
19567 | + mpfr_clear(left_imag); | |
19568 | + mpfr_clear(right_real); | |
19569 | + mpfr_clear(right_imag); | |
19570 | + | |
19571 | + return true; | |
19572 | } | |
19573 | ||
19574 | -// Apply binary opcode OP to LEFT_VAL and RIGHT_VAL, setting VAL. | |
19575 | -// LEFT_TYPE is the type of LEFT_VAL, RIGHT_TYPE is the type of | |
19576 | -// RIGHT_VAL; LEFT_TYPE and/or RIGHT_TYPE may be NULL. Return true if | |
19577 | -// this could be done, false if not. | |
19578 | +// Apply binary opcode OP to LEFT_NC and RIGHT_NC, setting NC. Return | |
19579 | +// true if this could be done, false if not. Issue errors at LOCATION | |
19580 | +// as appropriate. | |
19581 | ||
19582 | bool | |
19583 | -Binary_expression::eval_integer(Operator op, Type* left_type, mpz_t left_val, | |
19584 | - Type* right_type, mpz_t right_val, | |
19585 | - Location location, mpz_t val) | |
19586 | +Binary_expression::eval_constant(Operator op, Numeric_constant* left_nc, | |
19587 | + Numeric_constant* right_nc, | |
19588 | + Location location, Numeric_constant* nc) | |
19589 | { | |
19590 | - bool is_shift_op = false; | |
19591 | switch (op) | |
19592 | { | |
19593 | case OPERATOR_OROR: | |
19594 | @@ -4982,9 +4475,68 @@ | |
19595 | case OPERATOR_LE: | |
19596 | case OPERATOR_GT: | |
19597 | case OPERATOR_GE: | |
19598 | - // These return boolean values. We should probably handle them | |
19599 | - // anyhow in case a type conversion is used on the result. | |
19600 | + // These return boolean values and as such must be handled | |
19601 | + // elsewhere. | |
19602 | + go_unreachable(); | |
19603 | + default: | |
19604 | + break; | |
19605 | + } | |
19606 | + | |
19607 | + Type* left_type = left_nc->type(); | |
19608 | + Type* right_type = right_nc->type(); | |
19609 | + | |
19610 | + Type* type; | |
19611 | + if (!Binary_expression::operation_type(op, left_type, right_type, &type)) | |
19612 | + return false; | |
19613 | + | |
19614 | + bool is_shift = op == OPERATOR_LSHIFT || op == OPERATOR_RSHIFT; | |
19615 | + | |
19616 | + // When combining an untyped operand with a typed operand, we are | |
19617 | + // effectively coercing the untyped operand to the other operand's | |
19618 | + // type, so make sure that is valid. | |
19619 | + if (!left_nc->set_type(type, true, location)) | |
19620 | + return false; | |
19621 | + if (!is_shift && !right_nc->set_type(type, true, location)) | |
19622 | + return false; | |
19623 | + | |
19624 | + bool r; | |
19625 | + if (type->complex_type() != NULL) | |
19626 | + r = Binary_expression::eval_complex(op, left_nc, right_nc, location, nc); | |
19627 | + else if (type->float_type() != NULL) | |
19628 | + r = Binary_expression::eval_float(op, left_nc, right_nc, location, nc); | |
19629 | + else | |
19630 | + r = Binary_expression::eval_integer(op, left_nc, right_nc, location, nc); | |
19631 | + | |
19632 | + if (r) | |
19633 | + r = nc->set_type(type, true, location); | |
19634 | + | |
19635 | + return r; | |
19636 | +} | |
19637 | + | |
19638 | +// Apply binary opcode OP to LEFT_NC and RIGHT_NC, setting NC, using | |
19639 | +// integer operations. Return true if this could be done, false if | |
19640 | +// not. | |
19641 | + | |
19642 | +bool | |
19643 | +Binary_expression::eval_integer(Operator op, const Numeric_constant* left_nc, | |
19644 | + const Numeric_constant* right_nc, | |
19645 | + Location location, Numeric_constant* nc) | |
19646 | +{ | |
19647 | + mpz_t left_val; | |
19648 | + if (!left_nc->to_int(&left_val)) | |
19649 | + return false; | |
19650 | + mpz_t right_val; | |
19651 | + if (!right_nc->to_int(&right_val)) | |
19652 | + { | |
19653 | + mpz_clear(left_val); | |
19654 | return false; | |
19655 | + } | |
19656 | + | |
19657 | + mpz_t val; | |
19658 | + mpz_init(val); | |
19659 | + | |
19660 | + switch (op) | |
19661 | + { | |
19662 | case OPERATOR_PLUS: | |
19663 | mpz_add(val, left_val, right_val); | |
19664 | break; | |
19665 | @@ -5007,7 +4559,6 @@ | |
19666 | { | |
19667 | error_at(location, "division by zero"); | |
19668 | mpz_set_ui(val, 0); | |
19669 | - return true; | |
19670 | } | |
19671 | break; | |
19672 | case OPERATOR_MOD: | |
19673 | @@ -5017,20 +4568,18 @@ | |
19674 | { | |
19675 | error_at(location, "division by zero"); | |
19676 | mpz_set_ui(val, 0); | |
19677 | - return true; | |
19678 | } | |
19679 | break; | |
19680 | case OPERATOR_LSHIFT: | |
19681 | { | |
19682 | unsigned long shift = mpz_get_ui(right_val); | |
19683 | - if (mpz_cmp_ui(right_val, shift) != 0 || shift > 0x100000) | |
19684 | + if (mpz_cmp_ui(right_val, shift) == 0 && shift <= 0x100000) | |
19685 | + mpz_mul_2exp(val, left_val, shift); | |
19686 | + else | |
19687 | { | |
19688 | error_at(location, "shift count overflow"); | |
19689 | mpz_set_ui(val, 0); | |
19690 | - return true; | |
19691 | } | |
19692 | - mpz_mul_2exp(val, left_val, shift); | |
19693 | - is_shift_op = true; | |
19694 | break; | |
19695 | } | |
19696 | break; | |
19697 | @@ -5041,13 +4590,14 @@ | |
19698 | { | |
19699 | error_at(location, "shift count overflow"); | |
19700 | mpz_set_ui(val, 0); | |
19701 | - return true; | |
19702 | } | |
19703 | - if (mpz_cmp_ui(left_val, 0) >= 0) | |
19704 | - mpz_tdiv_q_2exp(val, left_val, shift); | |
19705 | else | |
19706 | - mpz_fdiv_q_2exp(val, left_val, shift); | |
19707 | - is_shift_op = true; | |
19708 | + { | |
19709 | + if (mpz_cmp_ui(left_val, 0) >= 0) | |
19710 | + mpz_tdiv_q_2exp(val, left_val, shift); | |
19711 | + else | |
19712 | + mpz_fdiv_q_2exp(val, left_val, shift); | |
19713 | + } | |
19714 | break; | |
19715 | } | |
19716 | break; | |
19717 | @@ -5067,63 +4617,47 @@ | |
19718 | go_unreachable(); | |
19719 | } | |
19720 | ||
19721 | - Type* type = left_type; | |
19722 | - if (!is_shift_op) | |
19723 | - { | |
19724 | - if (type == NULL) | |
19725 | - type = right_type; | |
19726 | - else if (type != right_type && right_type != NULL) | |
19727 | - { | |
19728 | - if (type->is_abstract()) | |
19729 | - type = right_type; | |
19730 | - else if (!right_type->is_abstract()) | |
19731 | - { | |
19732 | - // This look like a type error which should be diagnosed | |
19733 | - // elsewhere. Don't do anything here, to avoid an | |
19734 | - // unhelpful chain of error messages. | |
19735 | - return true; | |
19736 | - } | |
19737 | - } | |
19738 | - } | |
19739 | + mpz_clear(left_val); | |
19740 | + mpz_clear(right_val); | |
19741 | ||
19742 | - if (type != NULL && !type->is_abstract()) | |
19743 | - { | |
19744 | - // We have to check the operands too, as we have implicitly | |
19745 | - // coerced them to TYPE. | |
19746 | - if ((type != left_type | |
19747 | - && !Integer_expression::check_constant(left_val, type, location)) | |
19748 | - || (!is_shift_op | |
19749 | - && type != right_type | |
19750 | - && !Integer_expression::check_constant(right_val, type, | |
19751 | - location)) | |
19752 | - || !Integer_expression::check_constant(val, type, location)) | |
19753 | - mpz_set_ui(val, 0); | |
19754 | - } | |
19755 | + if (left_nc->is_rune() | |
19756 | + || (op != OPERATOR_LSHIFT | |
19757 | + && op != OPERATOR_RSHIFT | |
19758 | + && right_nc->is_rune())) | |
19759 | + nc->set_rune(NULL, val); | |
19760 | + else | |
19761 | + nc->set_int(NULL, val); | |
19762 | ||
19763 | + mpz_clear(val); | |
19764 | + | |
19765 | return true; | |
19766 | } | |
19767 | ||
19768 | -// Apply binary opcode OP to LEFT_VAL and RIGHT_VAL, setting VAL. | |
19769 | -// Return true if this could be done, false if not. | |
19770 | +// Apply binary opcode OP to LEFT_NC and RIGHT_NC, setting NC, using | |
19771 | +// floating point operations. Return true if this could be done, | |
19772 | +// false if not. | |
19773 | ||
19774 | bool | |
19775 | -Binary_expression::eval_float(Operator op, Type* left_type, mpfr_t left_val, | |
19776 | - Type* right_type, mpfr_t right_val, | |
19777 | - mpfr_t val, Location location) | |
19778 | +Binary_expression::eval_float(Operator op, const Numeric_constant* left_nc, | |
19779 | + const Numeric_constant* right_nc, | |
19780 | + Location location, Numeric_constant* nc) | |
19781 | { | |
19782 | + mpfr_t left_val; | |
19783 | + if (!left_nc->to_float(&left_val)) | |
19784 | + return false; | |
19785 | + mpfr_t right_val; | |
19786 | + if (!right_nc->to_float(&right_val)) | |
19787 | + { | |
19788 | + mpfr_clear(left_val); | |
19789 | + return false; | |
19790 | + } | |
19791 | + | |
19792 | + mpfr_t val; | |
19793 | + mpfr_init(val); | |
19794 | + | |
19795 | + bool ret = true; | |
19796 | switch (op) | |
19797 | { | |
19798 | - case OPERATOR_OROR: | |
19799 | - case OPERATOR_ANDAND: | |
19800 | - case OPERATOR_EQEQ: | |
19801 | - case OPERATOR_NOTEQ: | |
19802 | - case OPERATOR_LT: | |
19803 | - case OPERATOR_LE: | |
19804 | - case OPERATOR_GT: | |
19805 | - case OPERATOR_GE: | |
19806 | - // These return boolean values. We should probably handle them | |
19807 | - // anyhow in case a type conversion is used on the result. | |
19808 | - return false; | |
19809 | case OPERATOR_PLUS: | |
19810 | mpfr_add(val, left_val, right_val, GMP_RNDN); | |
19811 | break; | |
19812 | @@ -5134,78 +4668,64 @@ | |
19813 | case OPERATOR_XOR: | |
19814 | case OPERATOR_AND: | |
19815 | case OPERATOR_BITCLEAR: | |
19816 | - return false; | |
19817 | + case OPERATOR_MOD: | |
19818 | + case OPERATOR_LSHIFT: | |
19819 | + case OPERATOR_RSHIFT: | |
19820 | + mpfr_set_ui(val, 0, GMP_RNDN); | |
19821 | + ret = false; | |
19822 | + break; | |
19823 | case OPERATOR_MULT: | |
19824 | mpfr_mul(val, left_val, right_val, GMP_RNDN); | |
19825 | break; | |
19826 | case OPERATOR_DIV: | |
19827 | - if (mpfr_zero_p(right_val)) | |
19828 | - error_at(location, "division by zero"); | |
19829 | - mpfr_div(val, left_val, right_val, GMP_RNDN); | |
19830 | + if (!mpfr_zero_p(right_val)) | |
19831 | + mpfr_div(val, left_val, right_val, GMP_RNDN); | |
19832 | + else | |
19833 | + { | |
19834 | + error_at(location, "division by zero"); | |
19835 | + mpfr_set_ui(val, 0, GMP_RNDN); | |
19836 | + } | |
19837 | break; | |
19838 | - case OPERATOR_MOD: | |
19839 | - return false; | |
19840 | - case OPERATOR_LSHIFT: | |
19841 | - case OPERATOR_RSHIFT: | |
19842 | - return false; | |
19843 | default: | |
19844 | go_unreachable(); | |
19845 | } | |
19846 | ||
19847 | - Type* type = left_type; | |
19848 | - if (type == NULL) | |
19849 | - type = right_type; | |
19850 | - else if (type != right_type && right_type != NULL) | |
19851 | - { | |
19852 | - if (type->is_abstract()) | |
19853 | - type = right_type; | |
19854 | - else if (!right_type->is_abstract()) | |
19855 | - { | |
19856 | - // This looks like a type error which should be diagnosed | |
19857 | - // elsewhere. Don't do anything here, to avoid an unhelpful | |
19858 | - // chain of error messages. | |
19859 | - return true; | |
19860 | - } | |
19861 | - } | |
19862 | + mpfr_clear(left_val); | |
19863 | + mpfr_clear(right_val); | |
19864 | ||
19865 | - if (type != NULL && !type->is_abstract()) | |
19866 | - { | |
19867 | - if ((type != left_type | |
19868 | - && !Float_expression::check_constant(left_val, type, location)) | |
19869 | - || (type != right_type | |
19870 | - && !Float_expression::check_constant(right_val, type, | |
19871 | - location)) | |
19872 | - || !Float_expression::check_constant(val, type, location)) | |
19873 | - mpfr_set_ui(val, 0, GMP_RNDN); | |
19874 | - } | |
19875 | + nc->set_float(NULL, val); | |
19876 | + mpfr_clear(val); | |
19877 | ||
19878 | - return true; | |
19879 | + return ret; | |
19880 | } | |
19881 | ||
19882 | -// Apply binary opcode OP to LEFT_REAL/LEFT_IMAG and | |
19883 | -// RIGHT_REAL/RIGHT_IMAG, setting REAL/IMAG. Return true if this | |
19884 | -// could be done, false if not. | |
19885 | +// Apply binary opcode OP to LEFT_NC and RIGHT_NC, setting NC, using | |
19886 | +// complex operations. Return true if this could be done, false if | |
19887 | +// not. | |
19888 | ||
19889 | bool | |
19890 | -Binary_expression::eval_complex(Operator op, Type* left_type, | |
19891 | - mpfr_t left_real, mpfr_t left_imag, | |
19892 | - Type *right_type, | |
19893 | - mpfr_t right_real, mpfr_t right_imag, | |
19894 | - mpfr_t real, mpfr_t imag, | |
19895 | - Location location) | |
19896 | +Binary_expression::eval_complex(Operator op, const Numeric_constant* left_nc, | |
19897 | + const Numeric_constant* right_nc, | |
19898 | + Location location, Numeric_constant* nc) | |
19899 | { | |
19900 | + mpfr_t left_real, left_imag; | |
19901 | + if (!left_nc->to_complex(&left_real, &left_imag)) | |
19902 | + return false; | |
19903 | + mpfr_t right_real, right_imag; | |
19904 | + if (!right_nc->to_complex(&right_real, &right_imag)) | |
19905 | + { | |
19906 | + mpfr_clear(left_real); | |
19907 | + mpfr_clear(left_imag); | |
19908 | + return false; | |
19909 | + } | |
19910 | + | |
19911 | + mpfr_t real, imag; | |
19912 | + mpfr_init(real); | |
19913 | + mpfr_init(imag); | |
19914 | + | |
19915 | + bool ret = true; | |
19916 | switch (op) | |
19917 | { | |
19918 | - case OPERATOR_OROR: | |
19919 | - case OPERATOR_ANDAND: | |
19920 | - case OPERATOR_EQEQ: | |
19921 | - case OPERATOR_NOTEQ: | |
19922 | - case OPERATOR_LT: | |
19923 | - case OPERATOR_LE: | |
19924 | - case OPERATOR_GT: | |
19925 | - case OPERATOR_GE: | |
19926 | - // These return boolean values and must be handled differently. | |
19927 | - return false; | |
19928 | case OPERATOR_PLUS: | |
19929 | mpfr_add(real, left_real, right_real, GMP_RNDN); | |
19930 | mpfr_add(imag, left_imag, right_imag, GMP_RNDN); | |
19931 | @@ -5218,7 +4738,13 @@ | |
19932 | case OPERATOR_XOR: | |
19933 | case OPERATOR_AND: | |
19934 | case OPERATOR_BITCLEAR: | |
19935 | - return false; | |
19936 | + case OPERATOR_MOD: | |
19937 | + case OPERATOR_LSHIFT: | |
19938 | + case OPERATOR_RSHIFT: | |
19939 | + mpfr_set_ui(real, 0, GMP_RNDN); | |
19940 | + mpfr_set_ui(imag, 0, GMP_RNDN); | |
19941 | + ret = false; | |
19942 | + break; | |
19943 | case OPERATOR_MULT: | |
19944 | { | |
19945 | // You might think that multiplying two complex numbers would | |
19946 | @@ -5371,7 +4897,12 @@ | |
19947 | // scale the values to try to avoid this. | |
19948 | ||
19949 | if (mpfr_zero_p(right_real) && mpfr_zero_p(right_imag)) | |
19950 | - error_at(location, "division by zero"); | |
19951 | + { | |
19952 | + error_at(location, "division by zero"); | |
19953 | + mpfr_set_ui(real, 0, GMP_RNDN); | |
19954 | + mpfr_set_ui(imag, 0, GMP_RNDN); | |
19955 | + break; | |
19956 | + } | |
19957 | ||
19958 | mpfr_t rra; | |
19959 | mpfr_t ria; | |
19960 | @@ -5502,48 +5033,20 @@ | |
19961 | mpfr_clear(ria); | |
19962 | } | |
19963 | break; | |
19964 | - case OPERATOR_MOD: | |
19965 | - return false; | |
19966 | - case OPERATOR_LSHIFT: | |
19967 | - case OPERATOR_RSHIFT: | |
19968 | - return false; | |
19969 | default: | |
19970 | go_unreachable(); | |
19971 | } | |
19972 | ||
19973 | - Type* type = left_type; | |
19974 | - if (type == NULL) | |
19975 | - type = right_type; | |
19976 | - else if (type != right_type && right_type != NULL) | |
19977 | - { | |
19978 | - if (type->is_abstract()) | |
19979 | - type = right_type; | |
19980 | - else if (!right_type->is_abstract()) | |
19981 | - { | |
19982 | - // This looks like a type error which should be diagnosed | |
19983 | - // elsewhere. Don't do anything here, to avoid an unhelpful | |
19984 | - // chain of error messages. | |
19985 | - return true; | |
19986 | - } | |
19987 | - } | |
19988 | + mpfr_clear(left_real); | |
19989 | + mpfr_clear(left_imag); | |
19990 | + mpfr_clear(right_real); | |
19991 | + mpfr_clear(right_imag); | |
19992 | ||
19993 | - if (type != NULL && !type->is_abstract()) | |
19994 | - { | |
19995 | - if ((type != left_type | |
19996 | - && !Complex_expression::check_constant(left_real, left_imag, | |
19997 | - type, location)) | |
19998 | - || (type != right_type | |
19999 | - && !Complex_expression::check_constant(right_real, right_imag, | |
20000 | - type, location)) | |
20001 | - || !Complex_expression::check_constant(real, imag, type, | |
20002 | - location)) | |
20003 | - { | |
20004 | - mpfr_set_ui(real, 0, GMP_RNDN); | |
20005 | - mpfr_set_ui(imag, 0, GMP_RNDN); | |
20006 | - } | |
20007 | - } | |
20008 | + nc->set_complex(NULL, real, imag); | |
20009 | + mpfr_clear(real); | |
20010 | + mpfr_clear(imag); | |
20011 | ||
20012 | - return true; | |
20013 | + return ret; | |
20014 | } | |
20015 | ||
20016 | // Lower a binary expression. We have to evaluate constant | |
20017 | @@ -5566,290 +5069,36 @@ | |
20018 | || op == OPERATOR_GT | |
20019 | || op == OPERATOR_GE); | |
20020 | ||
20021 | - // Integer constant expressions. | |
20022 | + // Numeric constant expressions. | |
20023 | { | |
20024 | - mpz_t left_val; | |
20025 | - mpz_init(left_val); | |
20026 | - Type* left_type; | |
20027 | - mpz_t right_val; | |
20028 | - mpz_init(right_val); | |
20029 | - Type* right_type; | |
20030 | - if (left->integer_constant_value(false, left_val, &left_type) | |
20031 | - && right->integer_constant_value(false, right_val, &right_type)) | |
20032 | + Numeric_constant left_nc; | |
20033 | + Numeric_constant right_nc; | |
20034 | + if (left->numeric_constant_value(&left_nc) | |
20035 | + && right->numeric_constant_value(&right_nc)) | |
20036 | { | |
20037 | - Expression* ret = NULL; | |
20038 | - if (left_type != right_type | |
20039 | - && left_type != NULL | |
20040 | - && !left_type->is_abstract() | |
20041 | - && right_type != NULL | |
20042 | - && !right_type->is_abstract() | |
20043 | - && left_type->base() != right_type->base() | |
20044 | - && op != OPERATOR_LSHIFT | |
20045 | - && op != OPERATOR_RSHIFT) | |
20046 | + if (is_comparison) | |
20047 | { | |
20048 | - // May be a type error--let it be diagnosed later. | |
20049 | - return this; | |
20050 | + bool result; | |
20051 | + if (!Binary_expression::compare_constant(op, &left_nc, | |
20052 | + &right_nc, location, | |
20053 | + &result)) | |
20054 | + return this; | |
20055 | + return Expression::make_cast(Type::lookup_bool_type(), | |
20056 | + Expression::make_boolean(result, | |
20057 | + location), | |
20058 | + location); | |
20059 | } | |
20060 | - else if (is_comparison) | |
20061 | - { | |
20062 | - bool b = Binary_expression::compare_integer(op, left_val, | |
20063 | - right_val); | |
20064 | - ret = Expression::make_cast(Type::lookup_bool_type(), | |
20065 | - Expression::make_boolean(b, location), | |
20066 | - location); | |
20067 | - } | |
20068 | else | |
20069 | { | |
20070 | - mpz_t val; | |
20071 | - mpz_init(val); | |
20072 | - | |
20073 | - if (Binary_expression::eval_integer(op, left_type, left_val, | |
20074 | - right_type, right_val, | |
20075 | - location, val)) | |
20076 | - { | |
20077 | - go_assert(op != OPERATOR_OROR && op != OPERATOR_ANDAND); | |
20078 | - Type* type; | |
20079 | - if (op == OPERATOR_LSHIFT || op == OPERATOR_RSHIFT) | |
20080 | - type = left_type; | |
20081 | - else if (left_type == NULL) | |
20082 | - type = right_type; | |
20083 | - else if (right_type == NULL) | |
20084 | - type = left_type; | |
20085 | - else if (!left_type->is_abstract() | |
20086 | - && left_type->named_type() != NULL) | |
20087 | - type = left_type; | |
20088 | - else if (!right_type->is_abstract() | |
20089 | - && right_type->named_type() != NULL) | |
20090 | - type = right_type; | |
20091 | - else if (!left_type->is_abstract()) | |
20092 | - type = left_type; | |
20093 | - else if (!right_type->is_abstract()) | |
20094 | - type = right_type; | |
20095 | - else if (left_type->float_type() != NULL) | |
20096 | - type = left_type; | |
20097 | - else if (right_type->float_type() != NULL) | |
20098 | - type = right_type; | |
20099 | - else if (left_type->complex_type() != NULL) | |
20100 | - type = left_type; | |
20101 | - else if (right_type->complex_type() != NULL) | |
20102 | - type = right_type; | |
20103 | - else | |
20104 | - type = left_type; | |
20105 | - | |
20106 | - bool is_character = false; | |
20107 | - if (type == NULL) | |
20108 | - { | |
20109 | - Type* t = this->left_->type(); | |
20110 | - if (t->integer_type() != NULL | |
20111 | - && t->integer_type()->is_rune()) | |
20112 | - is_character = true; | |
20113 | - else if (op != OPERATOR_LSHIFT && op != OPERATOR_RSHIFT) | |
20114 | - { | |
20115 | - t = this->right_->type(); | |
20116 | - if (t->integer_type() != NULL | |
20117 | - && t->integer_type()->is_rune()) | |
20118 | - is_character = true; | |
20119 | - } | |
20120 | - } | |
20121 | - | |
20122 | - if (is_character) | |
20123 | - ret = Expression::make_character(&val, type, location); | |
20124 | - else | |
20125 | - ret = Expression::make_integer(&val, type, location); | |
20126 | - } | |
20127 | - | |
20128 | - mpz_clear(val); | |
20129 | + Numeric_constant nc; | |
20130 | + if (!Binary_expression::eval_constant(op, &left_nc, &right_nc, | |
20131 | + location, &nc)) | |
20132 | + return this; | |
20133 | + return nc.expression(location); | |
20134 | } | |
20135 | - | |
20136 | - if (ret != NULL) | |
20137 | - { | |
20138 | - mpz_clear(right_val); | |
20139 | - mpz_clear(left_val); | |
20140 | - return ret; | |
20141 | - } | |
20142 | } | |
20143 | - mpz_clear(right_val); | |
20144 | - mpz_clear(left_val); | |
20145 | } | |
20146 | ||
20147 | - // Floating point constant expressions. | |
20148 | - { | |
20149 | - mpfr_t left_val; | |
20150 | - mpfr_init(left_val); | |
20151 | - Type* left_type; | |
20152 | - mpfr_t right_val; | |
20153 | - mpfr_init(right_val); | |
20154 | - Type* right_type; | |
20155 | - if (left->float_constant_value(left_val, &left_type) | |
20156 | - && right->float_constant_value(right_val, &right_type)) | |
20157 | - { | |
20158 | - Expression* ret = NULL; | |
20159 | - if (left_type != right_type | |
20160 | - && left_type != NULL | |
20161 | - && right_type != NULL | |
20162 | - && left_type->base() != right_type->base() | |
20163 | - && op != OPERATOR_LSHIFT | |
20164 | - && op != OPERATOR_RSHIFT) | |
20165 | - { | |
20166 | - // May be a type error--let it be diagnosed later. | |
20167 | - return this; | |
20168 | - } | |
20169 | - else if (is_comparison) | |
20170 | - { | |
20171 | - bool b = Binary_expression::compare_float(op, | |
20172 | - (left_type != NULL | |
20173 | - ? left_type | |
20174 | - : right_type), | |
20175 | - left_val, right_val); | |
20176 | - ret = Expression::make_boolean(b, location); | |
20177 | - } | |
20178 | - else | |
20179 | - { | |
20180 | - mpfr_t val; | |
20181 | - mpfr_init(val); | |
20182 | - | |
20183 | - if (Binary_expression::eval_float(op, left_type, left_val, | |
20184 | - right_type, right_val, val, | |
20185 | - location)) | |
20186 | - { | |
20187 | - go_assert(op != OPERATOR_OROR && op != OPERATOR_ANDAND | |
20188 | - && op != OPERATOR_LSHIFT && op != OPERATOR_RSHIFT); | |
20189 | - Type* type; | |
20190 | - if (left_type == NULL) | |
20191 | - type = right_type; | |
20192 | - else if (right_type == NULL) | |
20193 | - type = left_type; | |
20194 | - else if (!left_type->is_abstract() | |
20195 | - && left_type->named_type() != NULL) | |
20196 | - type = left_type; | |
20197 | - else if (!right_type->is_abstract() | |
20198 | - && right_type->named_type() != NULL) | |
20199 | - type = right_type; | |
20200 | - else if (!left_type->is_abstract()) | |
20201 | - type = left_type; | |
20202 | - else if (!right_type->is_abstract()) | |
20203 | - type = right_type; | |
20204 | - else if (left_type->float_type() != NULL) | |
20205 | - type = left_type; | |
20206 | - else if (right_type->float_type() != NULL) | |
20207 | - type = right_type; | |
20208 | - else | |
20209 | - type = left_type; | |
20210 | - ret = Expression::make_float(&val, type, location); | |
20211 | - } | |
20212 | - | |
20213 | - mpfr_clear(val); | |
20214 | - } | |
20215 | - | |
20216 | - if (ret != NULL) | |
20217 | - { | |
20218 | - mpfr_clear(right_val); | |
20219 | - mpfr_clear(left_val); | |
20220 | - return ret; | |
20221 | - } | |
20222 | - } | |
20223 | - mpfr_clear(right_val); | |
20224 | - mpfr_clear(left_val); | |
20225 | - } | |
20226 | - | |
20227 | - // Complex constant expressions. | |
20228 | - { | |
20229 | - mpfr_t left_real; | |
20230 | - mpfr_t left_imag; | |
20231 | - mpfr_init(left_real); | |
20232 | - mpfr_init(left_imag); | |
20233 | - Type* left_type; | |
20234 | - | |
20235 | - mpfr_t right_real; | |
20236 | - mpfr_t right_imag; | |
20237 | - mpfr_init(right_real); | |
20238 | - mpfr_init(right_imag); | |
20239 | - Type* right_type; | |
20240 | - | |
20241 | - if (left->complex_constant_value(left_real, left_imag, &left_type) | |
20242 | - && right->complex_constant_value(right_real, right_imag, &right_type)) | |
20243 | - { | |
20244 | - Expression* ret = NULL; | |
20245 | - if (left_type != right_type | |
20246 | - && left_type != NULL | |
20247 | - && right_type != NULL | |
20248 | - && left_type->base() != right_type->base()) | |
20249 | - { | |
20250 | - // May be a type error--let it be diagnosed later. | |
20251 | - return this; | |
20252 | - } | |
20253 | - else if (op == OPERATOR_EQEQ || op == OPERATOR_NOTEQ) | |
20254 | - { | |
20255 | - bool b = Binary_expression::compare_complex(op, | |
20256 | - (left_type != NULL | |
20257 | - ? left_type | |
20258 | - : right_type), | |
20259 | - left_real, | |
20260 | - left_imag, | |
20261 | - right_real, | |
20262 | - right_imag); | |
20263 | - ret = Expression::make_boolean(b, location); | |
20264 | - } | |
20265 | - else | |
20266 | - { | |
20267 | - mpfr_t real; | |
20268 | - mpfr_t imag; | |
20269 | - mpfr_init(real); | |
20270 | - mpfr_init(imag); | |
20271 | - | |
20272 | - if (Binary_expression::eval_complex(op, left_type, | |
20273 | - left_real, left_imag, | |
20274 | - right_type, | |
20275 | - right_real, right_imag, | |
20276 | - real, imag, | |
20277 | - location)) | |
20278 | - { | |
20279 | - go_assert(op != OPERATOR_OROR && op != OPERATOR_ANDAND | |
20280 | - && op != OPERATOR_LSHIFT && op != OPERATOR_RSHIFT); | |
20281 | - Type* type; | |
20282 | - if (left_type == NULL) | |
20283 | - type = right_type; | |
20284 | - else if (right_type == NULL) | |
20285 | - type = left_type; | |
20286 | - else if (!left_type->is_abstract() | |
20287 | - && left_type->named_type() != NULL) | |
20288 | - type = left_type; | |
20289 | - else if (!right_type->is_abstract() | |
20290 | - && right_type->named_type() != NULL) | |
20291 | - type = right_type; | |
20292 | - else if (!left_type->is_abstract()) | |
20293 | - type = left_type; | |
20294 | - else if (!right_type->is_abstract()) | |
20295 | - type = right_type; | |
20296 | - else if (left_type->complex_type() != NULL) | |
20297 | - type = left_type; | |
20298 | - else if (right_type->complex_type() != NULL) | |
20299 | - type = right_type; | |
20300 | - else | |
20301 | - type = left_type; | |
20302 | - ret = Expression::make_complex(&real, &imag, type, | |
20303 | - location); | |
20304 | - } | |
20305 | - mpfr_clear(real); | |
20306 | - mpfr_clear(imag); | |
20307 | - } | |
20308 | - | |
20309 | - if (ret != NULL) | |
20310 | - { | |
20311 | - mpfr_clear(left_real); | |
20312 | - mpfr_clear(left_imag); | |
20313 | - mpfr_clear(right_real); | |
20314 | - mpfr_clear(right_imag); | |
20315 | - return ret; | |
20316 | - } | |
20317 | - } | |
20318 | - | |
20319 | - mpfr_clear(left_real); | |
20320 | - mpfr_clear(left_imag); | |
20321 | - mpfr_clear(right_real); | |
20322 | - mpfr_clear(right_imag); | |
20323 | - } | |
20324 | - | |
20325 | // String constant expressions. | |
20326 | if (left->type()->is_string_type() && right->type()->is_string_type()) | |
20327 | { | |
20328 | @@ -5864,79 +5113,15 @@ | |
20329 | else if (is_comparison) | |
20330 | { | |
20331 | int cmp = left_string.compare(right_string); | |
20332 | - bool r; | |
20333 | - switch (op) | |
20334 | - { | |
20335 | - case OPERATOR_EQEQ: | |
20336 | - r = cmp == 0; | |
20337 | - break; | |
20338 | - case OPERATOR_NOTEQ: | |
20339 | - r = cmp != 0; | |
20340 | - break; | |
20341 | - case OPERATOR_LT: | |
20342 | - r = cmp < 0; | |
20343 | - break; | |
20344 | - case OPERATOR_LE: | |
20345 | - r = cmp <= 0; | |
20346 | - break; | |
20347 | - case OPERATOR_GT: | |
20348 | - r = cmp > 0; | |
20349 | - break; | |
20350 | - case OPERATOR_GE: | |
20351 | - r = cmp >= 0; | |
20352 | - break; | |
20353 | - default: | |
20354 | - go_unreachable(); | |
20355 | - } | |
20356 | - return Expression::make_boolean(r, location); | |
20357 | + bool r = Binary_expression::cmp_to_bool(op, cmp); | |
20358 | + return Expression::make_cast(Type::lookup_bool_type(), | |
20359 | + Expression::make_boolean(r, | |
20360 | + location), | |
20361 | + location); | |
20362 | } | |
20363 | } | |
20364 | } | |
20365 | ||
20366 | - // Special case for shift of a floating point constant. | |
20367 | - if (op == OPERATOR_LSHIFT || op == OPERATOR_RSHIFT) | |
20368 | - { | |
20369 | - mpfr_t left_val; | |
20370 | - mpfr_init(left_val); | |
20371 | - Type* left_type; | |
20372 | - mpz_t right_val; | |
20373 | - mpz_init(right_val); | |
20374 | - Type* right_type; | |
20375 | - if (left->float_constant_value(left_val, &left_type) | |
20376 | - && right->integer_constant_value(false, right_val, &right_type) | |
20377 | - && mpfr_integer_p(left_val) | |
20378 | - && (left_type == NULL | |
20379 | - || left_type->is_abstract() | |
20380 | - || left_type->integer_type() != NULL)) | |
20381 | - { | |
20382 | - mpz_t left_int; | |
20383 | - mpz_init(left_int); | |
20384 | - mpfr_get_z(left_int, left_val, GMP_RNDN); | |
20385 | - | |
20386 | - mpz_t val; | |
20387 | - mpz_init(val); | |
20388 | - | |
20389 | - Expression* ret = NULL; | |
20390 | - if (Binary_expression::eval_integer(op, left_type, left_int, | |
20391 | - right_type, right_val, | |
20392 | - location, val)) | |
20393 | - ret = Expression::make_integer(&val, left_type, location); | |
20394 | - | |
20395 | - mpz_clear(left_int); | |
20396 | - mpz_clear(val); | |
20397 | - | |
20398 | - if (ret != NULL) | |
20399 | - { | |
20400 | - mpfr_clear(left_val); | |
20401 | - mpz_clear(right_val); | |
20402 | - return ret; | |
20403 | - } | |
20404 | - } | |
20405 | - | |
20406 | - mpfr_clear(left_val); | |
20407 | - mpz_clear(right_val); | |
20408 | - } | |
20409 | - | |
20410 | // Lower struct and array comparisons. | |
20411 | if (op == OPERATOR_EQEQ || op == OPERATOR_NOTEQ) | |
20412 | { | |
20413 | @@ -6114,156 +5299,32 @@ | |
20414 | return Expression::make_cast(unsafe_pointer_type, expr, loc); | |
20415 | } | |
20416 | ||
20417 | -// Return the integer constant value, if it has one. | |
20418 | +// Return the numeric constant value, if it has one. | |
20419 | ||
20420 | bool | |
20421 | -Binary_expression::do_integer_constant_value(bool iota_is_constant, mpz_t val, | |
20422 | - Type** ptype) const | |
20423 | +Binary_expression::do_numeric_constant_value(Numeric_constant* nc) const | |
20424 | { | |
20425 | - mpz_t left_val; | |
20426 | - mpz_init(left_val); | |
20427 | - Type* left_type; | |
20428 | - if (!this->left_->integer_constant_value(iota_is_constant, left_val, | |
20429 | - &left_type)) | |
20430 | - { | |
20431 | - mpz_clear(left_val); | |
20432 | - return false; | |
20433 | - } | |
20434 | + Operator op = this->op_; | |
20435 | ||
20436 | - mpz_t right_val; | |
20437 | - mpz_init(right_val); | |
20438 | - Type* right_type; | |
20439 | - if (!this->right_->integer_constant_value(iota_is_constant, right_val, | |
20440 | - &right_type)) | |
20441 | - { | |
20442 | - mpz_clear(right_val); | |
20443 | - mpz_clear(left_val); | |
20444 | - return false; | |
20445 | - } | |
20446 | + if (op == OPERATOR_EQEQ | |
20447 | + || op == OPERATOR_NOTEQ | |
20448 | + || op == OPERATOR_LT | |
20449 | + || op == OPERATOR_LE | |
20450 | + || op == OPERATOR_GT | |
20451 | + || op == OPERATOR_GE) | |
20452 | + return false; | |
20453 | ||
20454 | - bool ret; | |
20455 | - if (left_type != right_type | |
20456 | - && left_type != NULL | |
20457 | - && right_type != NULL | |
20458 | - && left_type->base() != right_type->base() | |
20459 | - && this->op_ != OPERATOR_RSHIFT | |
20460 | - && this->op_ != OPERATOR_LSHIFT) | |
20461 | - ret = false; | |
20462 | - else | |
20463 | - ret = Binary_expression::eval_integer(this->op_, left_type, left_val, | |
20464 | - right_type, right_val, | |
20465 | - this->location(), val); | |
20466 | + Numeric_constant left_nc; | |
20467 | + if (!this->left_->numeric_constant_value(&left_nc)) | |
20468 | + return false; | |
20469 | + Numeric_constant right_nc; | |
20470 | + if (!this->right_->numeric_constant_value(&right_nc)) | |
20471 | + return false; | |
20472 | ||
20473 | - mpz_clear(right_val); | |
20474 | - mpz_clear(left_val); | |
20475 | - | |
20476 | - if (ret) | |
20477 | - *ptype = left_type; | |
20478 | - | |
20479 | - return ret; | |
20480 | + return Binary_expression::eval_constant(op, &left_nc, &right_nc, | |
20481 | + this->location(), nc); | |
20482 | } | |
20483 | ||
20484 | -// Return the floating point constant value, if it has one. | |
20485 | - | |
20486 | -bool | |
20487 | -Binary_expression::do_float_constant_value(mpfr_t val, Type** ptype) const | |
20488 | -{ | |
20489 | - mpfr_t left_val; | |
20490 | - mpfr_init(left_val); | |
20491 | - Type* left_type; | |
20492 | - if (!this->left_->float_constant_value(left_val, &left_type)) | |
20493 | - { | |
20494 | - mpfr_clear(left_val); | |
20495 | - return false; | |
20496 | - } | |
20497 | - | |
20498 | - mpfr_t right_val; | |
20499 | - mpfr_init(right_val); | |
20500 | - Type* right_type; | |
20501 | - if (!this->right_->float_constant_value(right_val, &right_type)) | |
20502 | - { | |
20503 | - mpfr_clear(right_val); | |
20504 | - mpfr_clear(left_val); | |
20505 | - return false; | |
20506 | - } | |
20507 | - | |
20508 | - bool ret; | |
20509 | - if (left_type != right_type | |
20510 | - && left_type != NULL | |
20511 | - && right_type != NULL | |
20512 | - && left_type->base() != right_type->base()) | |
20513 | - ret = false; | |
20514 | - else | |
20515 | - ret = Binary_expression::eval_float(this->op_, left_type, left_val, | |
20516 | - right_type, right_val, | |
20517 | - val, this->location()); | |
20518 | - | |
20519 | - mpfr_clear(left_val); | |
20520 | - mpfr_clear(right_val); | |
20521 | - | |
20522 | - if (ret) | |
20523 | - *ptype = left_type; | |
20524 | - | |
20525 | - return ret; | |
20526 | -} | |
20527 | - | |
20528 | -// Return the complex constant value, if it has one. | |
20529 | - | |
20530 | -bool | |
20531 | -Binary_expression::do_complex_constant_value(mpfr_t real, mpfr_t imag, | |
20532 | - Type** ptype) const | |
20533 | -{ | |
20534 | - mpfr_t left_real; | |
20535 | - mpfr_t left_imag; | |
20536 | - mpfr_init(left_real); | |
20537 | - mpfr_init(left_imag); | |
20538 | - Type* left_type; | |
20539 | - if (!this->left_->complex_constant_value(left_real, left_imag, &left_type)) | |
20540 | - { | |
20541 | - mpfr_clear(left_real); | |
20542 | - mpfr_clear(left_imag); | |
20543 | - return false; | |
20544 | - } | |
20545 | - | |
20546 | - mpfr_t right_real; | |
20547 | - mpfr_t right_imag; | |
20548 | - mpfr_init(right_real); | |
20549 | - mpfr_init(right_imag); | |
20550 | - Type* right_type; | |
20551 | - if (!this->right_->complex_constant_value(right_real, right_imag, | |
20552 | - &right_type)) | |
20553 | - { | |
20554 | - mpfr_clear(left_real); | |
20555 | - mpfr_clear(left_imag); | |
20556 | - mpfr_clear(right_real); | |
20557 | - mpfr_clear(right_imag); | |
20558 | - return false; | |
20559 | - } | |
20560 | - | |
20561 | - bool ret; | |
20562 | - if (left_type != right_type | |
20563 | - && left_type != NULL | |
20564 | - && right_type != NULL | |
20565 | - && left_type->base() != right_type->base()) | |
20566 | - ret = false; | |
20567 | - else | |
20568 | - ret = Binary_expression::eval_complex(this->op_, left_type, | |
20569 | - left_real, left_imag, | |
20570 | - right_type, | |
20571 | - right_real, right_imag, | |
20572 | - real, imag, | |
20573 | - this->location()); | |
20574 | - mpfr_clear(left_real); | |
20575 | - mpfr_clear(left_imag); | |
20576 | - mpfr_clear(right_real); | |
20577 | - mpfr_clear(right_imag); | |
20578 | - | |
20579 | - if (ret) | |
20580 | - *ptype = left_type; | |
20581 | - | |
20582 | - return ret; | |
20583 | -} | |
20584 | - | |
20585 | // Note that the value is being discarded. | |
20586 | ||
20587 | void | |
20588 | @@ -6305,41 +5366,13 @@ | |
20589 | case OPERATOR_AND: | |
20590 | case OPERATOR_BITCLEAR: | |
20591 | { | |
20592 | - Type* left_type = this->left_->type(); | |
20593 | - Type* right_type = this->right_->type(); | |
20594 | - if (left_type->is_error()) | |
20595 | - return left_type; | |
20596 | - else if (right_type->is_error()) | |
20597 | - return right_type; | |
20598 | - else if (!Type::are_compatible_for_binop(left_type, right_type)) | |
20599 | - { | |
20600 | - this->report_error(_("incompatible types in binary expression")); | |
20601 | - return Type::make_error_type(); | |
20602 | - } | |
20603 | - else if (!left_type->is_abstract() && left_type->named_type() != NULL) | |
20604 | - return left_type; | |
20605 | - else if (!right_type->is_abstract() && right_type->named_type() != NULL) | |
20606 | - return right_type; | |
20607 | - else if (!left_type->is_abstract()) | |
20608 | - return left_type; | |
20609 | - else if (!right_type->is_abstract()) | |
20610 | - return right_type; | |
20611 | - else if (left_type->complex_type() != NULL) | |
20612 | - return left_type; | |
20613 | - else if (right_type->complex_type() != NULL) | |
20614 | - return right_type; | |
20615 | - else if (left_type->float_type() != NULL) | |
20616 | - return left_type; | |
20617 | - else if (right_type->float_type() != NULL) | |
20618 | - return right_type; | |
20619 | - else if (left_type->integer_type() != NULL | |
20620 | - && left_type->integer_type()->is_rune()) | |
20621 | - return left_type; | |
20622 | - else if (right_type->integer_type() != NULL | |
20623 | - && right_type->integer_type()->is_rune()) | |
20624 | - return right_type; | |
20625 | - else | |
20626 | - return left_type; | |
20627 | + Type* type; | |
20628 | + if (!Binary_expression::operation_type(this->op_, | |
20629 | + this->left_->type(), | |
20630 | + this->right_->type(), | |
20631 | + &type)) | |
20632 | + return Type::make_error_type(); | |
20633 | + return type; | |
20634 | } | |
20635 | ||
20636 | case OPERATOR_LSHIFT: | |
20637 | @@ -6604,21 +5637,25 @@ | |
20638 | this->report_error(_("shift count not unsigned integer")); | |
20639 | else | |
20640 | { | |
20641 | - mpz_t val; | |
20642 | - mpz_init(val); | |
20643 | - Type* type; | |
20644 | - if (this->right_->integer_constant_value(true, val, &type)) | |
20645 | + Numeric_constant nc; | |
20646 | + if (this->right_->numeric_constant_value(&nc)) | |
20647 | { | |
20648 | - if (mpz_sgn(val) < 0) | |
20649 | + mpz_t val; | |
20650 | + if (!nc.to_int(&val)) | |
20651 | + this->report_error(_("shift count not unsigned integer")); | |
20652 | + else | |
20653 | { | |
20654 | - this->report_error(_("negative shift count")); | |
20655 | - mpz_set_ui(val, 0); | |
20656 | - Location rloc = this->right_->location(); | |
20657 | - this->right_ = Expression::make_integer(&val, right_type, | |
20658 | - rloc); | |
20659 | + if (mpz_sgn(val) < 0) | |
20660 | + { | |
20661 | + this->report_error(_("negative shift count")); | |
20662 | + mpz_set_ui(val, 0); | |
20663 | + Location rloc = this->right_->location(); | |
20664 | + this->right_ = Expression::make_integer(&val, right_type, | |
20665 | + rloc); | |
20666 | + } | |
20667 | + mpz_clear(val); | |
20668 | } | |
20669 | } | |
20670 | - mpz_clear(val); | |
20671 | } | |
20672 | } | |
20673 | } | |
20674 | @@ -6637,6 +5674,7 @@ | |
20675 | enum tree_code code; | |
20676 | bool use_left_type = true; | |
20677 | bool is_shift_op = false; | |
20678 | + bool is_idiv_op = false; | |
20679 | switch (this->op_) | |
20680 | { | |
20681 | case OPERATOR_EQEQ: | |
20682 | @@ -6679,11 +5717,15 @@ | |
20683 | if (t->float_type() != NULL || t->complex_type() != NULL) | |
20684 | code = RDIV_EXPR; | |
20685 | else | |
20686 | - code = TRUNC_DIV_EXPR; | |
20687 | + { | |
20688 | + code = TRUNC_DIV_EXPR; | |
20689 | + is_idiv_op = true; | |
20690 | + } | |
20691 | } | |
20692 | break; | |
20693 | case OPERATOR_MOD: | |
20694 | code = TRUNC_MOD_EXPR; | |
20695 | + is_idiv_op = true; | |
20696 | break; | |
20697 | case OPERATOR_LSHIFT: | |
20698 | code = LSHIFT_EXPR; | |
20699 | @@ -6704,6 +5746,7 @@ | |
20700 | go_unreachable(); | |
20701 | } | |
20702 | ||
20703 | + location_t gccloc = this->location().gcc_location(); | |
20704 | tree type = use_left_type ? TREE_TYPE(left) : TREE_TYPE(right); | |
20705 | ||
20706 | if (this->left_->type()->is_string_type()) | |
20707 | @@ -6731,28 +5774,27 @@ | |
20708 | } | |
20709 | ||
20710 | tree eval_saved = NULL_TREE; | |
20711 | - if (is_shift_op) | |
20712 | + if (is_shift_op | |
20713 | + || (is_idiv_op && (go_check_divide_zero || go_check_divide_overflow))) | |
20714 | { | |
20715 | // Make sure the values are evaluated. | |
20716 | - if (!DECL_P(left) && TREE_SIDE_EFFECTS(left)) | |
20717 | + if (!DECL_P(left)) | |
20718 | { | |
20719 | left = save_expr(left); | |
20720 | eval_saved = left; | |
20721 | } | |
20722 | - if (!DECL_P(right) && TREE_SIDE_EFFECTS(right)) | |
20723 | + if (!DECL_P(right)) | |
20724 | { | |
20725 | right = save_expr(right); | |
20726 | if (eval_saved == NULL_TREE) | |
20727 | eval_saved = right; | |
20728 | else | |
20729 | - eval_saved = fold_build2_loc(this->location().gcc_location(), | |
20730 | - COMPOUND_EXPR, | |
20731 | + eval_saved = fold_build2_loc(gccloc, COMPOUND_EXPR, | |
20732 | void_type_node, eval_saved, right); | |
20733 | } | |
20734 | } | |
20735 | ||
20736 | - tree ret = fold_build2_loc(this->location().gcc_location(), | |
20737 | - code, | |
20738 | + tree ret = fold_build2_loc(gccloc, code, | |
20739 | compute_type != NULL_TREE ? compute_type : type, | |
20740 | left, right); | |
20741 | ||
20742 | @@ -6770,41 +5812,118 @@ | |
20743 | tree compare = fold_build2(LT_EXPR, boolean_type_node, right, | |
20744 | build_int_cst_type(TREE_TYPE(right), bits)); | |
20745 | ||
20746 | - tree overflow_result = fold_convert_loc(this->location().gcc_location(), | |
20747 | - TREE_TYPE(left), | |
20748 | + tree overflow_result = fold_convert_loc(gccloc, TREE_TYPE(left), | |
20749 | integer_zero_node); | |
20750 | if (this->op_ == OPERATOR_RSHIFT | |
20751 | && !this->left_->type()->integer_type()->is_unsigned()) | |
20752 | { | |
20753 | tree neg = | |
20754 | - fold_build2_loc(this->location().gcc_location(), LT_EXPR, | |
20755 | - boolean_type_node, left, | |
20756 | - fold_convert_loc(this->location().gcc_location(), | |
20757 | - TREE_TYPE(left), | |
20758 | + fold_build2_loc(gccloc, LT_EXPR, boolean_type_node, | |
20759 | + left, | |
20760 | + fold_convert_loc(gccloc, TREE_TYPE(left), | |
20761 | integer_zero_node)); | |
20762 | tree neg_one = | |
20763 | - fold_build2_loc(this->location().gcc_location(), | |
20764 | - MINUS_EXPR, TREE_TYPE(left), | |
20765 | - fold_convert_loc(this->location().gcc_location(), | |
20766 | - TREE_TYPE(left), | |
20767 | + fold_build2_loc(gccloc, MINUS_EXPR, TREE_TYPE(left), | |
20768 | + fold_convert_loc(gccloc, TREE_TYPE(left), | |
20769 | integer_zero_node), | |
20770 | - fold_convert_loc(this->location().gcc_location(), | |
20771 | - TREE_TYPE(left), | |
20772 | + fold_convert_loc(gccloc, TREE_TYPE(left), | |
20773 | integer_one_node)); | |
20774 | overflow_result = | |
20775 | - fold_build3_loc(this->location().gcc_location(), COND_EXPR, | |
20776 | - TREE_TYPE(left), neg, neg_one, | |
20777 | - overflow_result); | |
20778 | + fold_build3_loc(gccloc, COND_EXPR, TREE_TYPE(left), | |
20779 | + neg, neg_one, overflow_result); | |
20780 | } | |
20781 | ||
20782 | - ret = fold_build3_loc(this->location().gcc_location(), COND_EXPR, | |
20783 | - TREE_TYPE(left), compare, ret, overflow_result); | |
20784 | + ret = fold_build3_loc(gccloc, COND_EXPR, TREE_TYPE(left), | |
20785 | + compare, ret, overflow_result); | |
20786 | ||
20787 | if (eval_saved != NULL_TREE) | |
20788 | - ret = fold_build2_loc(this->location().gcc_location(), COMPOUND_EXPR, | |
20789 | - TREE_TYPE(ret), eval_saved, ret); | |
20790 | + ret = fold_build2_loc(gccloc, COMPOUND_EXPR, TREE_TYPE(ret), | |
20791 | + eval_saved, ret); | |
20792 | } | |
20793 | ||
20794 | + // Add checks for division by zero and division overflow as needed. | |
20795 | + if (is_idiv_op) | |
20796 | + { | |
20797 | + if (go_check_divide_zero) | |
20798 | + { | |
20799 | + // right == 0 | |
20800 | + tree check = fold_build2_loc(gccloc, EQ_EXPR, boolean_type_node, | |
20801 | + right, | |
20802 | + fold_convert_loc(gccloc, | |
20803 | + TREE_TYPE(right), | |
20804 | + integer_zero_node)); | |
20805 | + | |
20806 | + // __go_runtime_error(RUNTIME_ERROR_DIVISION_BY_ZERO), 0 | |
20807 | + int errcode = RUNTIME_ERROR_DIVISION_BY_ZERO; | |
20808 | + tree panic = fold_build2_loc(gccloc, COMPOUND_EXPR, TREE_TYPE(ret), | |
20809 | + Gogo::runtime_error(errcode, | |
20810 | + this->location()), | |
20811 | + fold_convert_loc(gccloc, TREE_TYPE(ret), | |
20812 | + integer_zero_node)); | |
20813 | + | |
20814 | + // right == 0 ? (__go_runtime_error(...), 0) : ret | |
20815 | + ret = fold_build3_loc(gccloc, COND_EXPR, TREE_TYPE(ret), | |
20816 | + check, panic, ret); | |
20817 | + } | |
20818 | + | |
20819 | + if (go_check_divide_overflow) | |
20820 | + { | |
20821 | + // right == -1 | |
20822 | + // FIXME: It would be nice to say that this test is expected | |
20823 | + // to return false. | |
20824 | + tree m1 = integer_minus_one_node; | |
20825 | + tree check = fold_build2_loc(gccloc, EQ_EXPR, boolean_type_node, | |
20826 | + right, | |
20827 | + fold_convert_loc(gccloc, | |
20828 | + TREE_TYPE(right), | |
20829 | + m1)); | |
20830 | + | |
20831 | + tree overflow; | |
20832 | + if (TYPE_UNSIGNED(TREE_TYPE(ret))) | |
20833 | + { | |
20834 | + // An unsigned -1 is the largest possible number, so | |
20835 | + // dividing is always 1 or 0. | |
20836 | + tree cmp = fold_build2_loc(gccloc, EQ_EXPR, boolean_type_node, | |
20837 | + left, right); | |
20838 | + if (this->op_ == OPERATOR_DIV) | |
20839 | + overflow = fold_build3_loc(gccloc, COND_EXPR, TREE_TYPE(ret), | |
20840 | + cmp, | |
20841 | + fold_convert_loc(gccloc, | |
20842 | + TREE_TYPE(ret), | |
20843 | + integer_one_node), | |
20844 | + fold_convert_loc(gccloc, | |
20845 | + TREE_TYPE(ret), | |
20846 | + integer_zero_node)); | |
20847 | + else | |
20848 | + overflow = fold_build3_loc(gccloc, COND_EXPR, TREE_TYPE(ret), | |
20849 | + cmp, | |
20850 | + fold_convert_loc(gccloc, | |
20851 | + TREE_TYPE(ret), | |
20852 | + integer_zero_node), | |
20853 | + left); | |
20854 | + } | |
20855 | + else | |
20856 | + { | |
20857 | + // Computing left / -1 is the same as computing - left, | |
20858 | + // which does not overflow since Go sets -fwrapv. | |
20859 | + if (this->op_ == OPERATOR_DIV) | |
20860 | + overflow = fold_build1_loc(gccloc, NEGATE_EXPR, TREE_TYPE(left), | |
20861 | + left); | |
20862 | + else | |
20863 | + overflow = integer_zero_node; | |
20864 | + } | |
20865 | + overflow = fold_convert_loc(gccloc, TREE_TYPE(ret), overflow); | |
20866 | + | |
20867 | + // right == -1 ? - left : ret | |
20868 | + ret = fold_build3_loc(gccloc, COND_EXPR, TREE_TYPE(ret), | |
20869 | + check, overflow, ret); | |
20870 | + } | |
20871 | + | |
20872 | + if (eval_saved != NULL_TREE) | |
20873 | + ret = fold_build2_loc(gccloc, COMPOUND_EXPR, TREE_TYPE(ret), | |
20874 | + eval_saved, ret); | |
20875 | + } | |
20876 | + | |
20877 | return ret; | |
20878 | } | |
20879 | ||
20880 | @@ -7094,7 +6213,9 @@ | |
20881 | make_tmp = NULL_TREE; | |
20882 | arg = right_tree; | |
20883 | } | |
20884 | - else if (TREE_ADDRESSABLE(TREE_TYPE(right_tree)) || DECL_P(right_tree)) | |
20885 | + else if (TREE_ADDRESSABLE(TREE_TYPE(right_tree)) | |
20886 | + || (TREE_CODE(right_tree) != CONST_DECL | |
20887 | + && DECL_P(right_tree))) | |
20888 | { | |
20889 | make_tmp = NULL_TREE; | |
20890 | arg = build_fold_addr_expr_loc(location.gcc_location(), right_tree); | |
20891 | @@ -7390,14 +6511,8 @@ | |
20892 | do_is_constant() const; | |
20893 | ||
20894 | bool | |
20895 | - do_integer_constant_value(bool, mpz_t, Type**) const; | |
20896 | + do_numeric_constant_value(Numeric_constant*) const; | |
20897 | ||
20898 | - bool | |
20899 | - do_float_constant_value(mpfr_t, Type**) const; | |
20900 | - | |
20901 | - bool | |
20902 | - do_complex_constant_value(mpfr_t, mpfr_t, Type**) const; | |
20903 | - | |
20904 | void | |
20905 | do_discarding_value(); | |
20906 | ||
20907 | @@ -7619,7 +6734,7 @@ | |
20908 | if (this->code_ == BUILTIN_LEN || this->code_ == BUILTIN_CAP) | |
20909 | { | |
20910 | Expression* arg = this->one_arg(); | |
20911 | - if (!arg->is_constant()) | |
20912 | + if (arg != NULL && !arg->is_constant()) | |
20913 | { | |
20914 | Find_call_expression find_call; | |
20915 | Expression::traverse(&arg, &find_call); | |
20916 | @@ -7628,37 +6743,9 @@ | |
20917 | } | |
20918 | } | |
20919 | ||
20920 | - mpz_t ival; | |
20921 | - mpz_init(ival); | |
20922 | - Type* type; | |
20923 | - if (this->integer_constant_value(true, ival, &type)) | |
20924 | - { | |
20925 | - Expression* ret = Expression::make_integer(&ival, type, loc); | |
20926 | - mpz_clear(ival); | |
20927 | - return ret; | |
20928 | - } | |
20929 | - mpz_clear(ival); | |
20930 | - | |
20931 | - mpfr_t rval; | |
20932 | - mpfr_init(rval); | |
20933 | - if (this->float_constant_value(rval, &type)) | |
20934 | - { | |
20935 | - Expression* ret = Expression::make_float(&rval, type, loc); | |
20936 | - mpfr_clear(rval); | |
20937 | - return ret; | |
20938 | - } | |
20939 | - | |
20940 | - mpfr_t imag; | |
20941 | - mpfr_init(imag); | |
20942 | - if (this->complex_constant_value(rval, imag, &type)) | |
20943 | - { | |
20944 | - Expression* ret = Expression::make_complex(&rval, &imag, type, loc); | |
20945 | - mpfr_clear(rval); | |
20946 | - mpfr_clear(imag); | |
20947 | - return ret; | |
20948 | - } | |
20949 | - mpfr_clear(rval); | |
20950 | - mpfr_clear(imag); | |
20951 | + Numeric_constant nc; | |
20952 | + if (this->numeric_constant_value(&nc)) | |
20953 | + return nc.expression(loc); | |
20954 | } | |
20955 | ||
20956 | switch (this->code_) | |
20957 | @@ -7906,43 +6993,14 @@ | |
20958 | return true; | |
20959 | ||
20960 | // Check for a floating point constant with integer value. | |
20961 | - mpfr_t fval; | |
20962 | - mpfr_init(fval); | |
20963 | - | |
20964 | - Type* dummy; | |
20965 | - if (e->float_constant_value(fval, &dummy) && mpfr_integer_p(fval)) | |
20966 | + Numeric_constant nc; | |
20967 | + mpz_t ival; | |
20968 | + if (e->numeric_constant_value(&nc) && nc.to_int(&ival)) | |
20969 | { | |
20970 | - mpz_t ival; | |
20971 | - mpz_init(ival); | |
20972 | - | |
20973 | - bool ok = false; | |
20974 | - | |
20975 | - mpfr_clear_overflow(); | |
20976 | - mpfr_clear_erangeflag(); | |
20977 | - mpfr_get_z(ival, fval, GMP_RNDN); | |
20978 | - if (!mpfr_overflow_p() | |
20979 | - && !mpfr_erangeflag_p() | |
20980 | - && mpz_sgn(ival) >= 0) | |
20981 | - { | |
20982 | - Named_type* ntype = Type::lookup_integer_type("int"); | |
20983 | - Integer_type* inttype = ntype->integer_type(); | |
20984 | - mpz_t max; | |
20985 | - mpz_init_set_ui(max, 1); | |
20986 | - mpz_mul_2exp(max, max, inttype->bits() - 1); | |
20987 | - ok = mpz_cmp(ival, max) < 0; | |
20988 | - mpz_clear(max); | |
20989 | - } | |
20990 | mpz_clear(ival); | |
20991 | - | |
20992 | - if (ok) | |
20993 | - { | |
20994 | - mpfr_clear(fval); | |
20995 | - return true; | |
20996 | - } | |
20997 | + return true; | |
20998 | } | |
20999 | ||
21000 | - mpfr_clear(fval); | |
21001 | - | |
21002 | return false; | |
21003 | } | |
21004 | ||
21005 | @@ -7996,7 +7054,7 @@ | |
21006 | Builtin_call_expression::one_arg() const | |
21007 | { | |
21008 | const Expression_list* args = this->args(); | |
21009 | - if (args->size() != 1) | |
21010 | + if (args == NULL || args->size() != 1) | |
21011 | return NULL; | |
21012 | return args->front(); | |
21013 | } | |
21014 | @@ -8073,12 +7131,10 @@ | |
21015 | return false; | |
21016 | } | |
21017 | ||
21018 | -// Return an integer constant value if possible. | |
21019 | +// Return a numeric constant if possible. | |
21020 | ||
21021 | bool | |
21022 | -Builtin_call_expression::do_integer_constant_value(bool iota_is_constant, | |
21023 | - mpz_t val, | |
21024 | - Type** ptype) const | |
21025 | +Builtin_call_expression::do_numeric_constant_value(Numeric_constant* nc) const | |
21026 | { | |
21027 | if (this->code_ == BUILTIN_LEN | |
21028 | || this->code_ == BUILTIN_CAP) | |
21029 | @@ -8093,8 +7149,8 @@ | |
21030 | std::string sval; | |
21031 | if (arg->string_constant_value(&sval)) | |
21032 | { | |
21033 | - mpz_set_ui(val, sval.length()); | |
21034 | - *ptype = Type::lookup_integer_type("int"); | |
21035 | + nc->set_unsigned_long(Type::lookup_integer_type("int"), | |
21036 | + sval.length()); | |
21037 | return true; | |
21038 | } | |
21039 | } | |
21040 | @@ -8111,13 +7167,15 @@ | |
21041 | return false; | |
21042 | Expression* e = arg_type->array_type()->length(); | |
21043 | this->seen_ = true; | |
21044 | - bool r = e->integer_constant_value(iota_is_constant, val, ptype); | |
21045 | + bool r = e->numeric_constant_value(nc); | |
21046 | this->seen_ = false; | |
21047 | if (r) | |
21048 | { | |
21049 | - *ptype = Type::lookup_integer_type("int"); | |
21050 | - return true; | |
21051 | + if (!nc->set_type(Type::lookup_integer_type("int"), false, | |
21052 | + this->location())) | |
21053 | + r = false; | |
21054 | } | |
21055 | + return r; | |
21056 | } | |
21057 | } | |
21058 | else if (this->code_ == BUILTIN_SIZEOF | |
21059 | @@ -8158,8 +7216,8 @@ | |
21060 | else | |
21061 | go_unreachable(); | |
21062 | ||
21063 | - mpz_set_ui(val, ret); | |
21064 | - *ptype = NULL; | |
21065 | + nc->set_unsigned_long(Type::lookup_integer_type("uintptr"), | |
21066 | + static_cast<unsigned long>(ret)); | |
21067 | return true; | |
21068 | } | |
21069 | else if (this->code_ == BUILTIN_OFFSETOF) | |
21070 | @@ -8181,88 +7239,73 @@ | |
21071 | farg->field_index(), | |
21072 | &offset)) | |
21073 | return false; | |
21074 | - mpz_set_ui(val, offset); | |
21075 | + nc->set_unsigned_long(Type::lookup_integer_type("uintptr"), | |
21076 | + static_cast<unsigned long>(offset)); | |
21077 | return true; | |
21078 | } | |
21079 | - return false; | |
21080 | -} | |
21081 | - | |
21082 | -// Return a floating point constant value if possible. | |
21083 | - | |
21084 | -bool | |
21085 | -Builtin_call_expression::do_float_constant_value(mpfr_t val, | |
21086 | - Type** ptype) const | |
21087 | -{ | |
21088 | - if (this->code_ == BUILTIN_REAL || this->code_ == BUILTIN_IMAG) | |
21089 | + else if (this->code_ == BUILTIN_REAL || this->code_ == BUILTIN_IMAG) | |
21090 | { | |
21091 | Expression* arg = this->one_arg(); | |
21092 | if (arg == NULL) | |
21093 | return false; | |
21094 | ||
21095 | + Numeric_constant argnc; | |
21096 | + if (!arg->numeric_constant_value(&argnc)) | |
21097 | + return false; | |
21098 | + | |
21099 | mpfr_t real; | |
21100 | mpfr_t imag; | |
21101 | - mpfr_init(real); | |
21102 | - mpfr_init(imag); | |
21103 | + if (!argnc.to_complex(&real, &imag)) | |
21104 | + return false; | |
21105 | ||
21106 | - bool ret = false; | |
21107 | - Type* type; | |
21108 | - if (arg->complex_constant_value(real, imag, &type)) | |
21109 | - { | |
21110 | - if (this->code_ == BUILTIN_REAL) | |
21111 | - mpfr_set(val, real, GMP_RNDN); | |
21112 | - else | |
21113 | - mpfr_set(val, imag, GMP_RNDN); | |
21114 | - *ptype = Builtin_call_expression::real_imag_type(type); | |
21115 | - ret = true; | |
21116 | - } | |
21117 | - | |
21118 | - mpfr_clear(real); | |
21119 | - mpfr_clear(imag); | |
21120 | - return ret; | |
21121 | + Type* type = Builtin_call_expression::real_imag_type(argnc.type()); | |
21122 | + if (this->code_ == BUILTIN_REAL) | |
21123 | + nc->set_float(type, real); | |
21124 | + else | |
21125 | + nc->set_float(type, imag); | |
21126 | + return true; | |
21127 | } | |
21128 | - | |
21129 | - return false; | |
21130 | -} | |
21131 | - | |
21132 | -// Return a complex constant value if possible. | |
21133 | - | |
21134 | -bool | |
21135 | -Builtin_call_expression::do_complex_constant_value(mpfr_t real, mpfr_t imag, | |
21136 | - Type** ptype) const | |
21137 | -{ | |
21138 | - if (this->code_ == BUILTIN_COMPLEX) | |
21139 | + else if (this->code_ == BUILTIN_COMPLEX) | |
21140 | { | |
21141 | const Expression_list* args = this->args(); | |
21142 | if (args == NULL || args->size() != 2) | |
21143 | return false; | |
21144 | ||
21145 | + Numeric_constant rnc; | |
21146 | + if (!args->front()->numeric_constant_value(&rnc)) | |
21147 | + return false; | |
21148 | + Numeric_constant inc; | |
21149 | + if (!args->back()->numeric_constant_value(&inc)) | |
21150 | + return false; | |
21151 | + | |
21152 | + if (rnc.type() != NULL | |
21153 | + && !rnc.type()->is_abstract() | |
21154 | + && inc.type() != NULL | |
21155 | + && !inc.type()->is_abstract() | |
21156 | + && !Type::are_identical(rnc.type(), inc.type(), false, NULL)) | |
21157 | + return false; | |
21158 | + | |
21159 | mpfr_t r; | |
21160 | - mpfr_init(r); | |
21161 | - Type* rtype; | |
21162 | - if (!args->front()->float_constant_value(r, &rtype)) | |
21163 | + if (!rnc.to_float(&r)) | |
21164 | + return false; | |
21165 | + mpfr_t i; | |
21166 | + if (!inc.to_float(&i)) | |
21167 | { | |
21168 | mpfr_clear(r); | |
21169 | return false; | |
21170 | } | |
21171 | ||
21172 | - mpfr_t i; | |
21173 | - mpfr_init(i); | |
21174 | + Type* arg_type = rnc.type(); | |
21175 | + if (arg_type == NULL || arg_type->is_abstract()) | |
21176 | + arg_type = inc.type(); | |
21177 | ||
21178 | - bool ret = false; | |
21179 | - Type* itype; | |
21180 | - if (args->back()->float_constant_value(i, &itype) | |
21181 | - && Type::are_identical(rtype, itype, false, NULL)) | |
21182 | - { | |
21183 | - mpfr_set(real, r, GMP_RNDN); | |
21184 | - mpfr_set(imag, i, GMP_RNDN); | |
21185 | - *ptype = Builtin_call_expression::complex_type(rtype); | |
21186 | - ret = true; | |
21187 | - } | |
21188 | + Type* type = Builtin_call_expression::complex_type(arg_type); | |
21189 | + nc->set_complex(type, r, i); | |
21190 | ||
21191 | mpfr_clear(r); | |
21192 | mpfr_clear(i); | |
21193 | ||
21194 | - return ret; | |
21195 | + return true; | |
21196 | } | |
21197 | ||
21198 | return false; | |
21199 | @@ -8330,10 +7373,12 @@ | |
21200 | case BUILTIN_CAP: | |
21201 | case BUILTIN_COPY: | |
21202 | case BUILTIN_LEN: | |
21203 | + return Type::lookup_integer_type("int"); | |
21204 | + | |
21205 | case BUILTIN_ALIGNOF: | |
21206 | case BUILTIN_OFFSETOF: | |
21207 | case BUILTIN_SIZEOF: | |
21208 | - return Type::lookup_integer_type("int"); | |
21209 | + return Type::lookup_integer_type("uintptr"); | |
21210 | ||
21211 | case BUILTIN_CLOSE: | |
21212 | case BUILTIN_DELETE: | |
21213 | @@ -8461,15 +7506,19 @@ | |
21214 | { | |
21215 | if (atype->integer_type() != NULL) | |
21216 | { | |
21217 | - mpz_t val; | |
21218 | - mpz_init(val); | |
21219 | - Type* dummy; | |
21220 | - if (this->integer_constant_value(true, val, &dummy) | |
21221 | - && mpz_sgn(val) >= 0) | |
21222 | - want_type = Type::lookup_integer_type("uint64"); | |
21223 | - else | |
21224 | + Numeric_constant nc; | |
21225 | + if (this->numeric_constant_value(&nc)) | |
21226 | + { | |
21227 | + mpz_t val; | |
21228 | + if (nc.to_int(&val)) | |
21229 | + { | |
21230 | + if (mpz_sgn(val) >= 0) | |
21231 | + want_type = Type::lookup_integer_type("uint64"); | |
21232 | + mpz_clear(val); | |
21233 | + } | |
21234 | + } | |
21235 | + if (want_type == NULL) | |
21236 | want_type = Type::lookup_integer_type("int64"); | |
21237 | - mpz_clear(val); | |
21238 | } | |
21239 | else if (atype->float_type() != NULL) | |
21240 | want_type = Type::lookup_float_type("float64"); | |
21241 | @@ -8521,6 +7570,8 @@ | |
21242 | void | |
21243 | Builtin_call_expression::do_check_types(Gogo*) | |
21244 | { | |
21245 | + if (this->is_error_expression()) | |
21246 | + return; | |
21247 | switch (this->code_) | |
21248 | { | |
21249 | case BUILTIN_INVALID: | |
21250 | @@ -9148,20 +8199,17 @@ | |
21251 | case BUILTIN_OFFSETOF: | |
21252 | case BUILTIN_ALIGNOF: | |
21253 | { | |
21254 | - mpz_t val; | |
21255 | - mpz_init(val); | |
21256 | - Type* dummy; | |
21257 | - bool b = this->integer_constant_value(true, val, &dummy); | |
21258 | - if (!b) | |
21259 | + Numeric_constant nc; | |
21260 | + unsigned long val; | |
21261 | + if (!this->numeric_constant_value(&nc) | |
21262 | + || nc.to_unsigned_long(&val) != Numeric_constant::NC_UL_VALID) | |
21263 | { | |
21264 | go_assert(saw_errors()); | |
21265 | return error_mark_node; | |
21266 | } | |
21267 | - Type* int_type = Type::lookup_integer_type("int"); | |
21268 | - tree type = type_to_tree(int_type->get_backend(gogo)); | |
21269 | - tree ret = Expression::integer_constant_tree(val, type); | |
21270 | - mpz_clear(val); | |
21271 | - return ret; | |
21272 | + Type* uintptr_type = Type::lookup_integer_type("uintptr"); | |
21273 | + tree type = type_to_tree(uintptr_type->get_backend(gogo)); | |
21274 | + return build_int_cst(type, val); | |
21275 | } | |
21276 | ||
21277 | case BUILTIN_COPY: | |
21278 | @@ -9376,51 +8424,38 @@ | |
21279 | void | |
21280 | Builtin_call_expression::do_export(Export* exp) const | |
21281 | { | |
21282 | - bool ok = false; | |
21283 | + Numeric_constant nc; | |
21284 | + if (!this->numeric_constant_value(&nc)) | |
21285 | + { | |
21286 | + error_at(this->location(), "value is not constant"); | |
21287 | + return; | |
21288 | + } | |
21289 | ||
21290 | - mpz_t val; | |
21291 | - mpz_init(val); | |
21292 | - Type* dummy; | |
21293 | - if (this->integer_constant_value(true, val, &dummy)) | |
21294 | + if (nc.is_int()) | |
21295 | { | |
21296 | + mpz_t val; | |
21297 | + nc.get_int(&val); | |
21298 | Integer_expression::export_integer(exp, val); | |
21299 | - ok = true; | |
21300 | + mpz_clear(val); | |
21301 | } | |
21302 | - mpz_clear(val); | |
21303 | - | |
21304 | - if (!ok) | |
21305 | + else if (nc.is_float()) | |
21306 | { | |
21307 | mpfr_t fval; | |
21308 | - mpfr_init(fval); | |
21309 | - if (this->float_constant_value(fval, &dummy)) | |
21310 | - { | |
21311 | - Float_expression::export_float(exp, fval); | |
21312 | - ok = true; | |
21313 | - } | |
21314 | + nc.get_float(&fval); | |
21315 | + Float_expression::export_float(exp, fval); | |
21316 | mpfr_clear(fval); | |
21317 | } | |
21318 | - | |
21319 | - if (!ok) | |
21320 | + else if (nc.is_complex()) | |
21321 | { | |
21322 | mpfr_t real; | |
21323 | mpfr_t imag; | |
21324 | - mpfr_init(real); | |
21325 | - mpfr_init(imag); | |
21326 | - if (this->complex_constant_value(real, imag, &dummy)) | |
21327 | - { | |
21328 | - Complex_expression::export_complex(exp, real, imag); | |
21329 | - ok = true; | |
21330 | - } | |
21331 | + Complex_expression::export_complex(exp, real, imag); | |
21332 | mpfr_clear(real); | |
21333 | mpfr_clear(imag); | |
21334 | } | |
21335 | + else | |
21336 | + go_unreachable(); | |
21337 | ||
21338 | - if (!ok) | |
21339 | - { | |
21340 | - error_at(this->location(), "value is not constant"); | |
21341 | - return; | |
21342 | - } | |
21343 | - | |
21344 | // A trailing space lets us reliably identify the end of the number. | |
21345 | exp->write_c_string(" "); | |
21346 | } | |
21347 | @@ -9635,7 +8670,14 @@ | |
21348 | new_args->push_back(*pa); | |
21349 | else if (this->is_varargs_) | |
21350 | { | |
21351 | - this->report_error(_("too many arguments")); | |
21352 | + if ((*pa)->type()->is_slice_type()) | |
21353 | + this->report_error(_("too many arguments")); | |
21354 | + else | |
21355 | + { | |
21356 | + error_at(this->location(), | |
21357 | + _("invalid use of %<...%> with non-slice")); | |
21358 | + this->set_is_error(); | |
21359 | + } | |
21360 | return; | |
21361 | } | |
21362 | else | |
21363 | @@ -9880,6 +8922,9 @@ | |
21364 | void | |
21365 | Call_expression::do_check_types(Gogo*) | |
21366 | { | |
21367 | + if (this->classification() == EXPRESSION_ERROR) | |
21368 | + return; | |
21369 | + | |
21370 | Function_type* fntype = this->get_function_type(); | |
21371 | if (fntype == NULL) | |
21372 | { | |
21373 | @@ -9915,7 +8960,17 @@ | |
21374 | } | |
21375 | ||
21376 | // Note that varargs was handled by the lower_varargs() method, so | |
21377 | - // we don't have to worry about it here. | |
21378 | + // we don't have to worry about it here unless something is wrong. | |
21379 | + if (this->is_varargs_ && !this->varargs_are_lowered_) | |
21380 | + { | |
21381 | + if (!fntype->is_varargs()) | |
21382 | + { | |
21383 | + error_at(this->location(), | |
21384 | + _("invalid use of %<...%> calling non-variadic function")); | |
21385 | + this->set_is_error(); | |
21386 | + return; | |
21387 | + } | |
21388 | + } | |
21389 | ||
21390 | const Typed_identifier_list* parameters = fntype->parameters(); | |
21391 | if (this->args_ == NULL) | |
21392 | @@ -10197,7 +9252,7 @@ | |
21393 | ref->set_is_lvalue(); | |
21394 | tree temp_tree = ref->get_tree(context); | |
21395 | if (temp_tree == error_mark_node) | |
21396 | - continue; | |
21397 | + return error_mark_node; | |
21398 | ||
21399 | tree val_tree = build3_loc(loc.gcc_location(), COMPONENT_REF, | |
21400 | TREE_TYPE(field), call_tree, field, NULL_TREE); | |
21401 | @@ -10660,16 +9715,14 @@ | |
21402 | unsigned int int_bits = | |
21403 | Type::lookup_integer_type("int")->integer_type()->bits(); | |
21404 | ||
21405 | - Type* dummy; | |
21406 | + Numeric_constant lvalnc; | |
21407 | mpz_t lval; | |
21408 | - mpz_init(lval); | |
21409 | bool lval_valid = (array_type->length() != NULL | |
21410 | - && array_type->length()->integer_constant_value(true, | |
21411 | - lval, | |
21412 | - &dummy)); | |
21413 | + && array_type->length()->numeric_constant_value(&lvalnc) | |
21414 | + && lvalnc.to_int(&lval)); | |
21415 | + Numeric_constant inc; | |
21416 | mpz_t ival; | |
21417 | - mpz_init(ival); | |
21418 | - if (this->start_->integer_constant_value(true, ival, &dummy)) | |
21419 | + if (this->start_->numeric_constant_value(&inc) && inc.to_int(&ival)) | |
21420 | { | |
21421 | if (mpz_sgn(ival) < 0 | |
21422 | || mpz_sizeinbase(ival, 2) >= int_bits | |
21423 | @@ -10681,22 +9734,26 @@ | |
21424 | error_at(this->start_->location(), "array index out of bounds"); | |
21425 | this->set_is_error(); | |
21426 | } | |
21427 | + mpz_clear(ival); | |
21428 | } | |
21429 | if (this->end_ != NULL && !this->end_->is_nil_expression()) | |
21430 | { | |
21431 | - if (this->end_->integer_constant_value(true, ival, &dummy)) | |
21432 | + Numeric_constant enc; | |
21433 | + mpz_t eval; | |
21434 | + if (this->end_->numeric_constant_value(&enc) && enc.to_int(&eval)) | |
21435 | { | |
21436 | - if (mpz_sgn(ival) < 0 | |
21437 | - || mpz_sizeinbase(ival, 2) >= int_bits | |
21438 | - || (lval_valid && mpz_cmp(ival, lval) > 0)) | |
21439 | + if (mpz_sgn(eval) < 0 | |
21440 | + || mpz_sizeinbase(eval, 2) >= int_bits | |
21441 | + || (lval_valid && mpz_cmp(eval, lval) > 0)) | |
21442 | { | |
21443 | error_at(this->end_->location(), "array index out of bounds"); | |
21444 | this->set_is_error(); | |
21445 | } | |
21446 | + mpz_clear(eval); | |
21447 | } | |
21448 | } | |
21449 | - mpz_clear(ival); | |
21450 | - mpz_clear(lval); | |
21451 | + if (lval_valid) | |
21452 | + mpz_clear(lval); | |
21453 | ||
21454 | // A slice of an array requires an addressable array. A slice of a | |
21455 | // slice is always possible. | |
21456 | @@ -11071,10 +10128,9 @@ | |
21457 | std::string sval; | |
21458 | bool sval_valid = this->string_->string_constant_value(&sval); | |
21459 | ||
21460 | + Numeric_constant inc; | |
21461 | mpz_t ival; | |
21462 | - mpz_init(ival); | |
21463 | - Type* dummy; | |
21464 | - if (this->start_->integer_constant_value(true, ival, &dummy)) | |
21465 | + if (this->start_->numeric_constant_value(&inc) && inc.to_int(&ival)) | |
21466 | { | |
21467 | if (mpz_sgn(ival) < 0 | |
21468 | || (sval_valid && mpz_cmp_ui(ival, sval.length()) >= 0)) | |
21469 | @@ -11082,20 +10138,23 @@ | |
21470 | error_at(this->start_->location(), "string index out of bounds"); | |
21471 | this->set_is_error(); | |
21472 | } | |
21473 | + mpz_clear(ival); | |
21474 | } | |
21475 | if (this->end_ != NULL && !this->end_->is_nil_expression()) | |
21476 | { | |
21477 | - if (this->end_->integer_constant_value(true, ival, &dummy)) | |
21478 | + Numeric_constant enc; | |
21479 | + mpz_t eval; | |
21480 | + if (this->end_->numeric_constant_value(&enc) && enc.to_int(&eval)) | |
21481 | { | |
21482 | - if (mpz_sgn(ival) < 0 | |
21483 | - || (sval_valid && mpz_cmp_ui(ival, sval.length()) > 0)) | |
21484 | + if (mpz_sgn(eval) < 0 | |
21485 | + || (sval_valid && mpz_cmp_ui(eval, sval.length()) > 0)) | |
21486 | { | |
21487 | error_at(this->end_->location(), "string index out of bounds"); | |
21488 | this->set_is_error(); | |
21489 | } | |
21490 | + mpz_clear(eval); | |
21491 | } | |
21492 | } | |
21493 | - mpz_clear(ival); | |
21494 | } | |
21495 | ||
21496 | // Get a tree for a string index. | |
21497 | @@ -11667,7 +10726,8 @@ | |
21498 | tree | |
21499 | Interface_field_reference_expression::do_get_tree(Translate_context*) | |
21500 | { | |
21501 | - go_unreachable(); | |
21502 | + error_at(this->location(), "reference to method other than calling it"); | |
21503 | + return error_mark_node; | |
21504 | } | |
21505 | ||
21506 | // Dump ast representation for an interface field reference. | |
21507 | @@ -12052,9 +11112,15 @@ | |
21508 | Struct_construction_expression(Type* type, Expression_list* vals, | |
21509 | Location location) | |
21510 | : Expression(EXPRESSION_STRUCT_CONSTRUCTION, location), | |
21511 | - type_(type), vals_(vals) | |
21512 | + type_(type), vals_(vals), traverse_order_(NULL) | |
21513 | { } | |
21514 | ||
21515 | + // Set the traversal order, used to ensure that we implement the | |
21516 | + // order of evaluation rules. Takes ownership of the argument. | |
21517 | + void | |
21518 | + set_traverse_order(std::vector<int>* traverse_order) | |
21519 | + { this->traverse_order_ = traverse_order; } | |
21520 | + | |
21521 | // Return whether this is a constant initializer. | |
21522 | bool | |
21523 | is_constant_struct() const; | |
21524 | @@ -12076,8 +11142,12 @@ | |
21525 | Expression* | |
21526 | do_copy() | |
21527 | { | |
21528 | - return new Struct_construction_expression(this->type_, this->vals_->copy(), | |
21529 | - this->location()); | |
21530 | + Struct_construction_expression* ret = | |
21531 | + new Struct_construction_expression(this->type_, this->vals_->copy(), | |
21532 | + this->location()); | |
21533 | + if (this->traverse_order_ != NULL) | |
21534 | + ret->set_traverse_order(this->traverse_order_); | |
21535 | + return ret; | |
21536 | } | |
21537 | ||
21538 | tree | |
21539 | @@ -12095,6 +11165,9 @@ | |
21540 | // The list of values, in order of the fields in the struct. A NULL | |
21541 | // entry means that the field should be zero-initialized. | |
21542 | Expression_list* vals_; | |
21543 | + // If not NULL, the order in which to traverse vals_. This is used | |
21544 | + // so that we implement the order of evaluation rules correctly. | |
21545 | + std::vector<int>* traverse_order_; | |
21546 | }; | |
21547 | ||
21548 | // Traversal. | |
21549 | @@ -12102,9 +11175,26 @@ | |
21550 | int | |
21551 | Struct_construction_expression::do_traverse(Traverse* traverse) | |
21552 | { | |
21553 | - if (this->vals_ != NULL | |
21554 | - && this->vals_->traverse(traverse) == TRAVERSE_EXIT) | |
21555 | - return TRAVERSE_EXIT; | |
21556 | + if (this->vals_ != NULL) | |
21557 | + { | |
21558 | + if (this->traverse_order_ == NULL) | |
21559 | + { | |
21560 | + if (this->vals_->traverse(traverse) == TRAVERSE_EXIT) | |
21561 | + return TRAVERSE_EXIT; | |
21562 | + } | |
21563 | + else | |
21564 | + { | |
21565 | + for (std::vector<int>::const_iterator p = | |
21566 | + this->traverse_order_->begin(); | |
21567 | + p != this->traverse_order_->end(); | |
21568 | + ++p) | |
21569 | + { | |
21570 | + if (Expression::traverse(&this->vals_->at(*p), traverse) | |
21571 | + == TRAVERSE_EXIT) | |
21572 | + return TRAVERSE_EXIT; | |
21573 | + } | |
21574 | + } | |
21575 | + } | |
21576 | if (Type::traverse(this->type_, traverse) == TRAVERSE_EXIT) | |
21577 | return TRAVERSE_EXIT; | |
21578 | return TRAVERSE_CONTINUE; | |
21579 | @@ -12331,11 +11421,12 @@ | |
21580 | { | |
21581 | protected: | |
21582 | Array_construction_expression(Expression_classification classification, | |
21583 | - Type* type, Expression_list* vals, | |
21584 | - Location location) | |
21585 | + Type* type, | |
21586 | + const std::vector<unsigned long>* indexes, | |
21587 | + Expression_list* vals, Location location) | |
21588 | : Expression(classification, location), | |
21589 | - type_(type), vals_(vals) | |
21590 | - { } | |
21591 | + type_(type), indexes_(indexes), vals_(vals) | |
21592 | + { go_assert(indexes == NULL || indexes->size() == vals->size()); } | |
21593 | ||
21594 | public: | |
21595 | // Return whether this is a constant initializer. | |
21596 | @@ -12364,6 +11455,11 @@ | |
21597 | void | |
21598 | do_export(Export*) const; | |
21599 | ||
21600 | + // The indexes. | |
21601 | + const std::vector<unsigned long>* | |
21602 | + indexes() | |
21603 | + { return this->indexes_; } | |
21604 | + | |
21605 | // The list of values. | |
21606 | Expression_list* | |
21607 | vals() | |
21608 | @@ -12379,7 +11475,10 @@ | |
21609 | private: | |
21610 | // The type of the array to construct. | |
21611 | Type* type_; | |
21612 | - // The list of values. | |
21613 | + // The list of indexes into the array, one for each value. This may | |
21614 | + // be NULL, in which case the indexes start at zero and increment. | |
21615 | + const std::vector<unsigned long>* indexes_; | |
21616 | + // The list of values. This may be NULL if there are no values. | |
21617 | Expression_list* vals_; | |
21618 | }; | |
21619 | ||
21620 | @@ -12462,20 +11561,6 @@ | |
21621 | this->set_is_error(); | |
21622 | } | |
21623 | } | |
21624 | - | |
21625 | - Expression* length = at->length(); | |
21626 | - if (length != NULL && !length->is_error_expression()) | |
21627 | - { | |
21628 | - mpz_t val; | |
21629 | - mpz_init(val); | |
21630 | - Type* type; | |
21631 | - if (at->length()->integer_constant_value(true, val, &type)) | |
21632 | - { | |
21633 | - if (this->vals_->size() > mpz_get_ui(val)) | |
21634 | - this->report_error(_("too many elements in composite literal")); | |
21635 | - } | |
21636 | - mpz_clear(val); | |
21637 | - } | |
21638 | } | |
21639 | ||
21640 | // Get a constructor tree for the array values. | |
21641 | @@ -12493,12 +11578,22 @@ | |
21642 | if (this->vals_ != NULL) | |
21643 | { | |
21644 | size_t i = 0; | |
21645 | + std::vector<unsigned long>::const_iterator pi; | |
21646 | + if (this->indexes_ != NULL) | |
21647 | + pi = this->indexes_->begin(); | |
21648 | for (Expression_list::const_iterator pv = this->vals_->begin(); | |
21649 | pv != this->vals_->end(); | |
21650 | ++pv, ++i) | |
21651 | { | |
21652 | + if (this->indexes_ != NULL) | |
21653 | + go_assert(pi != this->indexes_->end()); | |
21654 | constructor_elt* elt = VEC_quick_push(constructor_elt, values, NULL); | |
21655 | - elt->index = size_int(i); | |
21656 | + | |
21657 | + if (this->indexes_ == NULL) | |
21658 | + elt->index = size_int(i); | |
21659 | + else | |
21660 | + elt->index = size_int(*pi); | |
21661 | + | |
21662 | if (*pv == NULL) | |
21663 | { | |
21664 | Gogo* gogo = context->gogo(); | |
21665 | @@ -12519,7 +11614,11 @@ | |
21666 | return error_mark_node; | |
21667 | if (!TREE_CONSTANT(elt->value)) | |
21668 | is_constant = false; | |
21669 | + if (this->indexes_ != NULL) | |
21670 | + ++pi; | |
21671 | } | |
21672 | + if (this->indexes_ != NULL) | |
21673 | + go_assert(pi == this->indexes_->end()); | |
21674 | } | |
21675 | ||
21676 | tree ret = build_constructor(type_tree, values); | |
21677 | @@ -12537,13 +11636,28 @@ | |
21678 | exp->write_type(this->type_); | |
21679 | if (this->vals_ != NULL) | |
21680 | { | |
21681 | + std::vector<unsigned long>::const_iterator pi; | |
21682 | + if (this->indexes_ != NULL) | |
21683 | + pi = this->indexes_->begin(); | |
21684 | for (Expression_list::const_iterator pv = this->vals_->begin(); | |
21685 | pv != this->vals_->end(); | |
21686 | ++pv) | |
21687 | { | |
21688 | exp->write_c_string(", "); | |
21689 | + | |
21690 | + if (this->indexes_ != NULL) | |
21691 | + { | |
21692 | + char buf[100]; | |
21693 | + snprintf(buf, sizeof buf, "%lu", *pi); | |
21694 | + exp->write_c_string(buf); | |
21695 | + exp->write_c_string(":"); | |
21696 | + } | |
21697 | + | |
21698 | if (*pv != NULL) | |
21699 | (*pv)->export_expression(exp); | |
21700 | + | |
21701 | + if (this->indexes_ != NULL) | |
21702 | + ++pi; | |
21703 | } | |
21704 | } | |
21705 | exp->write_c_string(")"); | |
21706 | @@ -12555,8 +11669,7 @@ | |
21707 | Array_construction_expression::do_dump_expression( | |
21708 | Ast_dump_context* ast_dump_context) const | |
21709 | { | |
21710 | - Expression* length = this->type_->array_type() != NULL ? | |
21711 | - this->type_->array_type()->length() : NULL; | |
21712 | + Expression* length = this->type_->array_type()->length(); | |
21713 | ||
21714 | ast_dump_context->ostream() << "[" ; | |
21715 | if (length != NULL) | |
21716 | @@ -12566,7 +11679,22 @@ | |
21717 | ast_dump_context->ostream() << "]" ; | |
21718 | ast_dump_context->dump_type(this->type_); | |
21719 | ast_dump_context->ostream() << "{" ; | |
21720 | - ast_dump_context->dump_expression_list(this->vals_); | |
21721 | + if (this->indexes_ == NULL) | |
21722 | + ast_dump_context->dump_expression_list(this->vals_); | |
21723 | + else | |
21724 | + { | |
21725 | + Expression_list::const_iterator pv = this->vals_->begin(); | |
21726 | + for (std::vector<unsigned long>::const_iterator pi = | |
21727 | + this->indexes_->begin(); | |
21728 | + pi != this->indexes_->end(); | |
21729 | + ++pi, ++pv) | |
21730 | + { | |
21731 | + if (pi != this->indexes_->begin()) | |
21732 | + ast_dump_context->ostream() << ", "; | |
21733 | + ast_dump_context->ostream() << *pi << ':'; | |
21734 | + ast_dump_context->dump_expression(*pv); | |
21735 | + } | |
21736 | + } | |
21737 | ast_dump_context->ostream() << "}" ; | |
21738 | ||
21739 | } | |
21740 | @@ -12577,20 +11705,19 @@ | |
21741 | public Array_construction_expression | |
21742 | { | |
21743 | public: | |
21744 | - Fixed_array_construction_expression(Type* type, Expression_list* vals, | |
21745 | - Location location) | |
21746 | + Fixed_array_construction_expression(Type* type, | |
21747 | + const std::vector<unsigned long>* indexes, | |
21748 | + Expression_list* vals, Location location) | |
21749 | : Array_construction_expression(EXPRESSION_FIXED_ARRAY_CONSTRUCTION, | |
21750 | - type, vals, location) | |
21751 | - { | |
21752 | - go_assert(type->array_type() != NULL | |
21753 | - && type->array_type()->length() != NULL); | |
21754 | - } | |
21755 | + type, indexes, vals, location) | |
21756 | + { go_assert(type->array_type() != NULL && !type->is_slice_type()); } | |
21757 | ||
21758 | protected: | |
21759 | Expression* | |
21760 | do_copy() | |
21761 | { | |
21762 | return new Fixed_array_construction_expression(this->type(), | |
21763 | + this->indexes(), | |
21764 | (this->vals() == NULL | |
21765 | ? NULL | |
21766 | : this->vals()->copy()), | |
21767 | @@ -12599,9 +11726,6 @@ | |
21768 | ||
21769 | tree | |
21770 | do_get_tree(Translate_context*); | |
21771 | - | |
21772 | - void | |
21773 | - do_dump_expression(Ast_dump_context*); | |
21774 | }; | |
21775 | ||
21776 | // Return a tree for constructing a fixed array. | |
21777 | @@ -12614,35 +11738,17 @@ | |
21778 | return this->get_constructor_tree(context, type_to_tree(btype)); | |
21779 | } | |
21780 | ||
21781 | -// Dump ast representation of an array construction expressin. | |
21782 | - | |
21783 | -void | |
21784 | -Fixed_array_construction_expression::do_dump_expression( | |
21785 | - Ast_dump_context* ast_dump_context) | |
21786 | -{ | |
21787 | - | |
21788 | - ast_dump_context->ostream() << "["; | |
21789 | - ast_dump_context->dump_expression (this->type()->array_type()->length()); | |
21790 | - ast_dump_context->ostream() << "]"; | |
21791 | - ast_dump_context->dump_type(this->type()); | |
21792 | - ast_dump_context->ostream() << "{"; | |
21793 | - ast_dump_context->dump_expression_list(this->vals()); | |
21794 | - ast_dump_context->ostream() << "}"; | |
21795 | - | |
21796 | -} | |
21797 | // Construct an open array. | |
21798 | ||
21799 | class Open_array_construction_expression : public Array_construction_expression | |
21800 | { | |
21801 | public: | |
21802 | - Open_array_construction_expression(Type* type, Expression_list* vals, | |
21803 | - Location location) | |
21804 | + Open_array_construction_expression(Type* type, | |
21805 | + const std::vector<unsigned long>* indexes, | |
21806 | + Expression_list* vals, Location location) | |
21807 | : Array_construction_expression(EXPRESSION_OPEN_ARRAY_CONSTRUCTION, | |
21808 | - type, vals, location) | |
21809 | - { | |
21810 | - go_assert(type->array_type() != NULL | |
21811 | - && type->array_type()->length() == NULL); | |
21812 | - } | |
21813 | + type, indexes, vals, location) | |
21814 | + { go_assert(type->is_slice_type()); } | |
21815 | ||
21816 | protected: | |
21817 | // Note that taking the address of an open array literal is invalid. | |
21818 | @@ -12651,6 +11757,7 @@ | |
21819 | do_copy() | |
21820 | { | |
21821 | return new Open_array_construction_expression(this->type(), | |
21822 | + this->indexes(), | |
21823 | (this->vals() == NULL | |
21824 | ? NULL | |
21825 | : this->vals()->copy()), | |
21826 | @@ -12702,13 +11809,18 @@ | |
21827 | } | |
21828 | else | |
21829 | { | |
21830 | - tree max = size_int(this->vals()->size() - 1); | |
21831 | + unsigned long max_index; | |
21832 | + if (this->indexes() == NULL) | |
21833 | + max_index = this->vals()->size() - 1; | |
21834 | + else | |
21835 | + max_index = this->indexes()->back(); | |
21836 | + tree max_tree = size_int(max_index); | |
21837 | tree constructor_type = build_array_type(element_type_tree, | |
21838 | - build_index_type(max)); | |
21839 | + build_index_type(max_tree)); | |
21840 | if (constructor_type == error_mark_node) | |
21841 | return error_mark_node; | |
21842 | values = this->get_constructor_tree(context, constructor_type); | |
21843 | - length_tree = size_int(this->vals()->size()); | |
21844 | + length_tree = size_int(max_index + 1); | |
21845 | } | |
21846 | ||
21847 | if (values == error_mark_node) | |
21848 | @@ -12816,7 +11928,7 @@ | |
21849 | Location location) | |
21850 | { | |
21851 | go_assert(type->is_slice_type()); | |
21852 | - return new Open_array_construction_expression(type, vals, location); | |
21853 | + return new Open_array_construction_expression(type, NULL, vals, location); | |
21854 | } | |
21855 | ||
21856 | // Construct a map. | |
21857 | @@ -13170,7 +12282,7 @@ | |
21858 | lower_array(Type*); | |
21859 | ||
21860 | Expression* | |
21861 | - make_array(Type*, Expression_list*); | |
21862 | + make_array(Type*, const std::vector<unsigned long>*, Expression_list*); | |
21863 | ||
21864 | Expression* | |
21865 | lower_map(Gogo*, Named_object*, Statement_inserter*, Type*); | |
21866 | @@ -13285,6 +12397,7 @@ | |
21867 | ||
21868 | size_t field_count = st->field_count(); | |
21869 | std::vector<Expression*> vals(field_count); | |
21870 | + std::vector<int>* traverse_order = new(std::vector<int>); | |
21871 | Expression_list::const_iterator p = this->vals_->begin(); | |
21872 | while (p != this->vals_->end()) | |
21873 | { | |
21874 | @@ -13437,6 +12550,7 @@ | |
21875 | type->named_type()->message_name().c_str()); | |
21876 | ||
21877 | vals[index] = val; | |
21878 | + traverse_order->push_back(index); | |
21879 | } | |
21880 | ||
21881 | Expression_list* list = new Expression_list; | |
21882 | @@ -13444,9 +12558,23 @@ | |
21883 | for (size_t i = 0; i < field_count; ++i) | |
21884 | list->push_back(vals[i]); | |
21885 | ||
21886 | - return new Struct_construction_expression(type, list, location); | |
21887 | + Struct_construction_expression* ret = | |
21888 | + new Struct_construction_expression(type, list, location); | |
21889 | + ret->set_traverse_order(traverse_order); | |
21890 | + return ret; | |
21891 | } | |
21892 | ||
21893 | +// Used to sort an index/value array. | |
21894 | + | |
21895 | +class Index_value_compare | |
21896 | +{ | |
21897 | + public: | |
21898 | + bool | |
21899 | + operator()(const std::pair<unsigned long, Expression*>& a, | |
21900 | + const std::pair<unsigned long, Expression*>& b) | |
21901 | + { return a.first < b.first; } | |
21902 | +}; | |
21903 | + | |
21904 | // Lower an array composite literal. | |
21905 | ||
21906 | Expression* | |
21907 | @@ -13454,10 +12582,13 @@ | |
21908 | { | |
21909 | Location location = this->location(); | |
21910 | if (this->vals_ == NULL || !this->has_keys_) | |
21911 | - return this->make_array(type, this->vals_); | |
21912 | + return this->make_array(type, NULL, this->vals_); | |
21913 | ||
21914 | - std::vector<Expression*> vals; | |
21915 | - vals.reserve(this->vals_->size()); | |
21916 | + std::vector<unsigned long>* indexes = new std::vector<unsigned long>; | |
21917 | + indexes->reserve(this->vals_->size()); | |
21918 | + bool indexes_out_of_order = false; | |
21919 | + Expression_list* vals = new Expression_list(); | |
21920 | + vals->reserve(this->vals_->size()); | |
21921 | unsigned long index = 0; | |
21922 | Expression_list::const_iterator p = this->vals_->begin(); | |
21923 | while (p != this->vals_->end()) | |
21924 | @@ -13470,104 +12601,141 @@ | |
21925 | ||
21926 | ++p; | |
21927 | ||
21928 | - if (index_expr != NULL) | |
21929 | + if (index_expr == NULL) | |
21930 | { | |
21931 | - mpz_t ival; | |
21932 | - mpz_init(ival); | |
21933 | + if (!indexes->empty()) | |
21934 | + indexes->push_back(index); | |
21935 | + } | |
21936 | + else | |
21937 | + { | |
21938 | + if (indexes->empty() && !vals->empty()) | |
21939 | + { | |
21940 | + for (size_t i = 0; i < vals->size(); ++i) | |
21941 | + indexes->push_back(i); | |
21942 | + } | |
21943 | ||
21944 | - Type* dummy; | |
21945 | - if (!index_expr->integer_constant_value(true, ival, &dummy)) | |
21946 | + Numeric_constant nc; | |
21947 | + if (!index_expr->numeric_constant_value(&nc)) | |
21948 | { | |
21949 | - mpz_clear(ival); | |
21950 | error_at(index_expr->location(), | |
21951 | "index expression is not integer constant"); | |
21952 | return Expression::make_error(location); | |
21953 | } | |
21954 | ||
21955 | - if (mpz_sgn(ival) < 0) | |
21956 | + switch (nc.to_unsigned_long(&index)) | |
21957 | { | |
21958 | - mpz_clear(ival); | |
21959 | + case Numeric_constant::NC_UL_VALID: | |
21960 | + break; | |
21961 | + case Numeric_constant::NC_UL_NOTINT: | |
21962 | + error_at(index_expr->location(), | |
21963 | + "index expression is not integer constant"); | |
21964 | + return Expression::make_error(location); | |
21965 | + case Numeric_constant::NC_UL_NEGATIVE: | |
21966 | error_at(index_expr->location(), "index expression is negative"); | |
21967 | return Expression::make_error(location); | |
21968 | - } | |
21969 | - | |
21970 | - index = mpz_get_ui(ival); | |
21971 | - if (mpz_cmp_ui(ival, index) != 0) | |
21972 | - { | |
21973 | - mpz_clear(ival); | |
21974 | + case Numeric_constant::NC_UL_BIG: | |
21975 | error_at(index_expr->location(), "index value overflow"); | |
21976 | return Expression::make_error(location); | |
21977 | + default: | |
21978 | + go_unreachable(); | |
21979 | } | |
21980 | ||
21981 | Named_type* ntype = Type::lookup_integer_type("int"); | |
21982 | Integer_type* inttype = ntype->integer_type(); | |
21983 | - mpz_t max; | |
21984 | - mpz_init_set_ui(max, 1); | |
21985 | - mpz_mul_2exp(max, max, inttype->bits() - 1); | |
21986 | - bool ok = mpz_cmp(ival, max) < 0; | |
21987 | - mpz_clear(max); | |
21988 | - if (!ok) | |
21989 | + if (sizeof(index) <= static_cast<size_t>(inttype->bits() * 8) | |
21990 | + && index >> (inttype->bits() - 1) != 0) | |
21991 | { | |
21992 | - mpz_clear(ival); | |
21993 | error_at(index_expr->location(), "index value overflow"); | |
21994 | return Expression::make_error(location); | |
21995 | } | |
21996 | ||
21997 | - mpz_clear(ival); | |
21998 | - | |
21999 | - // FIXME: Our representation isn't very good; this avoids | |
22000 | - // thrashing. | |
22001 | - if (index > 0x1000000) | |
22002 | + if (std::find(indexes->begin(), indexes->end(), index) | |
22003 | + != indexes->end()) | |
22004 | { | |
22005 | - error_at(index_expr->location(), "index too large for compiler"); | |
22006 | + error_at(index_expr->location(), "duplicate value for index %lu", | |
22007 | + index); | |
22008 | return Expression::make_error(location); | |
22009 | } | |
22010 | - } | |
22011 | ||
22012 | - if (index == vals.size()) | |
22013 | - vals.push_back(val); | |
22014 | - else | |
22015 | - { | |
22016 | - if (index > vals.size()) | |
22017 | - { | |
22018 | - vals.reserve(index + 32); | |
22019 | - vals.resize(index + 1, static_cast<Expression*>(NULL)); | |
22020 | - } | |
22021 | - if (vals[index] != NULL) | |
22022 | - { | |
22023 | - error_at((index_expr != NULL | |
22024 | - ? index_expr->location() | |
22025 | - : val->location()), | |
22026 | - "duplicate value for index %lu", | |
22027 | - index); | |
22028 | - return Expression::make_error(location); | |
22029 | - } | |
22030 | - vals[index] = val; | |
22031 | + if (!indexes->empty() && index < indexes->back()) | |
22032 | + indexes_out_of_order = true; | |
22033 | + | |
22034 | + indexes->push_back(index); | |
22035 | } | |
22036 | ||
22037 | + vals->push_back(val); | |
22038 | + | |
22039 | ++index; | |
22040 | } | |
22041 | ||
22042 | - size_t size = vals.size(); | |
22043 | - Expression_list* list = new Expression_list; | |
22044 | - list->reserve(size); | |
22045 | - for (size_t i = 0; i < size; ++i) | |
22046 | - list->push_back(vals[i]); | |
22047 | + if (indexes->empty()) | |
22048 | + { | |
22049 | + delete indexes; | |
22050 | + indexes = NULL; | |
22051 | + } | |
22052 | ||
22053 | - return this->make_array(type, list); | |
22054 | + if (indexes_out_of_order) | |
22055 | + { | |
22056 | + typedef std::vector<std::pair<unsigned long, Expression*> > V; | |
22057 | + | |
22058 | + V v; | |
22059 | + v.reserve(indexes->size()); | |
22060 | + std::vector<unsigned long>::const_iterator pi = indexes->begin(); | |
22061 | + for (Expression_list::const_iterator pe = vals->begin(); | |
22062 | + pe != vals->end(); | |
22063 | + ++pe, ++pi) | |
22064 | + v.push_back(std::make_pair(*pi, *pe)); | |
22065 | + | |
22066 | + std::sort(v.begin(), v.end(), Index_value_compare()); | |
22067 | + | |
22068 | + delete indexes; | |
22069 | + delete vals; | |
22070 | + indexes = new std::vector<unsigned long>(); | |
22071 | + indexes->reserve(v.size()); | |
22072 | + vals = new Expression_list(); | |
22073 | + vals->reserve(v.size()); | |
22074 | + | |
22075 | + for (V::const_iterator p = v.begin(); p != v.end(); ++p) | |
22076 | + { | |
22077 | + indexes->push_back(p->first); | |
22078 | + vals->push_back(p->second); | |
22079 | + } | |
22080 | + } | |
22081 | + | |
22082 | + return this->make_array(type, indexes, vals); | |
22083 | } | |
22084 | ||
22085 | // Actually build the array composite literal. This handles | |
22086 | // [...]{...}. | |
22087 | ||
22088 | Expression* | |
22089 | -Composite_literal_expression::make_array(Type* type, Expression_list* vals) | |
22090 | +Composite_literal_expression::make_array( | |
22091 | + Type* type, | |
22092 | + const std::vector<unsigned long>* indexes, | |
22093 | + Expression_list* vals) | |
22094 | { | |
22095 | Location location = this->location(); | |
22096 | Array_type* at = type->array_type(); | |
22097 | + | |
22098 | if (at->length() != NULL && at->length()->is_nil_expression()) | |
22099 | { | |
22100 | - size_t size = vals == NULL ? 0 : vals->size(); | |
22101 | + size_t size; | |
22102 | + if (vals == NULL) | |
22103 | + size = 0; | |
22104 | + else if (indexes != NULL) | |
22105 | + size = indexes->back() + 1; | |
22106 | + else | |
22107 | + { | |
22108 | + size = vals->size(); | |
22109 | + Integer_type* it = Type::lookup_integer_type("int")->integer_type(); | |
22110 | + if (sizeof(size) <= static_cast<size_t>(it->bits() * 8) | |
22111 | + && size >> (it->bits() - 1) != 0) | |
22112 | + { | |
22113 | + error_at(location, "too many elements in composite literal"); | |
22114 | + return Expression::make_error(location); | |
22115 | + } | |
22116 | + } | |
22117 | + | |
22118 | mpz_t vlen; | |
22119 | mpz_init_set_ui(vlen, size); | |
22120 | Expression* elen = Expression::make_integer(&vlen, NULL, location); | |
22121 | @@ -13575,10 +12743,43 @@ | |
22122 | at = Type::make_array_type(at->element_type(), elen); | |
22123 | type = at; | |
22124 | } | |
22125 | + else if (at->length() != NULL | |
22126 | + && !at->length()->is_error_expression() | |
22127 | + && this->vals_ != NULL) | |
22128 | + { | |
22129 | + Numeric_constant nc; | |
22130 | + unsigned long val; | |
22131 | + if (at->length()->numeric_constant_value(&nc) | |
22132 | + && nc.to_unsigned_long(&val) == Numeric_constant::NC_UL_VALID) | |
22133 | + { | |
22134 | + if (indexes == NULL) | |
22135 | + { | |
22136 | + if (this->vals_->size() > val) | |
22137 | + { | |
22138 | + error_at(location, "too many elements in composite literal"); | |
22139 | + return Expression::make_error(location); | |
22140 | + } | |
22141 | + } | |
22142 | + else | |
22143 | + { | |
22144 | + unsigned long max = indexes->back(); | |
22145 | + if (max >= val) | |
22146 | + { | |
22147 | + error_at(location, | |
22148 | + ("some element keys in composite literal " | |
22149 | + "are out of range")); | |
22150 | + return Expression::make_error(location); | |
22151 | + } | |
22152 | + } | |
22153 | + } | |
22154 | + } | |
22155 | + | |
22156 | if (at->length() != NULL) | |
22157 | - return new Fixed_array_construction_expression(type, vals, location); | |
22158 | + return new Fixed_array_construction_expression(type, indexes, vals, | |
22159 | + location); | |
22160 | else | |
22161 | - return new Open_array_construction_expression(type, vals, location); | |
22162 | + return new Open_array_construction_expression(type, indexes, vals, | |
22163 | + location); | |
22164 | } | |
22165 | ||
22166 | // Lower a map composite literal. | |
22167 | @@ -14449,3 +13650,600 @@ | |
22168 | return true; | |
22169 | return false; | |
22170 | } | |
22171 | + | |
22172 | +// Class Numeric_constant. | |
22173 | + | |
22174 | +// Destructor. | |
22175 | + | |
22176 | +Numeric_constant::~Numeric_constant() | |
22177 | +{ | |
22178 | + this->clear(); | |
22179 | +} | |
22180 | + | |
22181 | +// Copy constructor. | |
22182 | + | |
22183 | +Numeric_constant::Numeric_constant(const Numeric_constant& a) | |
22184 | + : classification_(a.classification_), type_(a.type_) | |
22185 | +{ | |
22186 | + switch (a.classification_) | |
22187 | + { | |
22188 | + case NC_INVALID: | |
22189 | + break; | |
22190 | + case NC_INT: | |
22191 | + case NC_RUNE: | |
22192 | + mpz_init_set(this->u_.int_val, a.u_.int_val); | |
22193 | + break; | |
22194 | + case NC_FLOAT: | |
22195 | + mpfr_init_set(this->u_.float_val, a.u_.float_val, GMP_RNDN); | |
22196 | + break; | |
22197 | + case NC_COMPLEX: | |
22198 | + mpfr_init_set(this->u_.complex_val.real, a.u_.complex_val.real, | |
22199 | + GMP_RNDN); | |
22200 | + mpfr_init_set(this->u_.complex_val.imag, a.u_.complex_val.imag, | |
22201 | + GMP_RNDN); | |
22202 | + break; | |
22203 | + default: | |
22204 | + go_unreachable(); | |
22205 | + } | |
22206 | +} | |
22207 | + | |
22208 | +// Assignment operator. | |
22209 | + | |
22210 | +Numeric_constant& | |
22211 | +Numeric_constant::operator=(const Numeric_constant& a) | |
22212 | +{ | |
22213 | + this->clear(); | |
22214 | + this->classification_ = a.classification_; | |
22215 | + this->type_ = a.type_; | |
22216 | + switch (a.classification_) | |
22217 | + { | |
22218 | + case NC_INVALID: | |
22219 | + break; | |
22220 | + case NC_INT: | |
22221 | + case NC_RUNE: | |
22222 | + mpz_init_set(this->u_.int_val, a.u_.int_val); | |
22223 | + break; | |
22224 | + case NC_FLOAT: | |
22225 | + mpfr_init_set(this->u_.float_val, a.u_.float_val, GMP_RNDN); | |
22226 | + break; | |
22227 | + case NC_COMPLEX: | |
22228 | + mpfr_init_set(this->u_.complex_val.real, a.u_.complex_val.real, | |
22229 | + GMP_RNDN); | |
22230 | + mpfr_init_set(this->u_.complex_val.imag, a.u_.complex_val.imag, | |
22231 | + GMP_RNDN); | |
22232 | + break; | |
22233 | + default: | |
22234 | + go_unreachable(); | |
22235 | + } | |
22236 | + return *this; | |
22237 | +} | |
22238 | + | |
22239 | +// Clear the contents. | |
22240 | + | |
22241 | +void | |
22242 | +Numeric_constant::clear() | |
22243 | +{ | |
22244 | + switch (this->classification_) | |
22245 | + { | |
22246 | + case NC_INVALID: | |
22247 | + break; | |
22248 | + case NC_INT: | |
22249 | + case NC_RUNE: | |
22250 | + mpz_clear(this->u_.int_val); | |
22251 | + break; | |
22252 | + case NC_FLOAT: | |
22253 | + mpfr_clear(this->u_.float_val); | |
22254 | + break; | |
22255 | + case NC_COMPLEX: | |
22256 | + mpfr_clear(this->u_.complex_val.real); | |
22257 | + mpfr_clear(this->u_.complex_val.imag); | |
22258 | + break; | |
22259 | + default: | |
22260 | + go_unreachable(); | |
22261 | + } | |
22262 | + this->classification_ = NC_INVALID; | |
22263 | +} | |
22264 | + | |
22265 | +// Set to an unsigned long value. | |
22266 | + | |
22267 | +void | |
22268 | +Numeric_constant::set_unsigned_long(Type* type, unsigned long val) | |
22269 | +{ | |
22270 | + this->clear(); | |
22271 | + this->classification_ = NC_INT; | |
22272 | + this->type_ = type; | |
22273 | + mpz_init_set_ui(this->u_.int_val, val); | |
22274 | +} | |
22275 | + | |
22276 | +// Set to an integer value. | |
22277 | + | |
22278 | +void | |
22279 | +Numeric_constant::set_int(Type* type, const mpz_t val) | |
22280 | +{ | |
22281 | + this->clear(); | |
22282 | + this->classification_ = NC_INT; | |
22283 | + this->type_ = type; | |
22284 | + mpz_init_set(this->u_.int_val, val); | |
22285 | +} | |
22286 | + | |
22287 | +// Set to a rune value. | |
22288 | + | |
22289 | +void | |
22290 | +Numeric_constant::set_rune(Type* type, const mpz_t val) | |
22291 | +{ | |
22292 | + this->clear(); | |
22293 | + this->classification_ = NC_RUNE; | |
22294 | + this->type_ = type; | |
22295 | + mpz_init_set(this->u_.int_val, val); | |
22296 | +} | |
22297 | + | |
22298 | +// Set to a floating point value. | |
22299 | + | |
22300 | +void | |
22301 | +Numeric_constant::set_float(Type* type, const mpfr_t val) | |
22302 | +{ | |
22303 | + this->clear(); | |
22304 | + this->classification_ = NC_FLOAT; | |
22305 | + this->type_ = type; | |
22306 | + // Numeric constants do not have negative zero values, so remove | |
22307 | + // them here. They also don't have infinity or NaN values, but we | |
22308 | + // should never see them here. | |
22309 | + if (mpfr_zero_p(val)) | |
22310 | + mpfr_init_set_ui(this->u_.float_val, 0, GMP_RNDN); | |
22311 | + else | |
22312 | + mpfr_init_set(this->u_.float_val, val, GMP_RNDN); | |
22313 | +} | |
22314 | + | |
22315 | +// Set to a complex value. | |
22316 | + | |
22317 | +void | |
22318 | +Numeric_constant::set_complex(Type* type, const mpfr_t real, const mpfr_t imag) | |
22319 | +{ | |
22320 | + this->clear(); | |
22321 | + this->classification_ = NC_COMPLEX; | |
22322 | + this->type_ = type; | |
22323 | + mpfr_init_set(this->u_.complex_val.real, real, GMP_RNDN); | |
22324 | + mpfr_init_set(this->u_.complex_val.imag, imag, GMP_RNDN); | |
22325 | +} | |
22326 | + | |
22327 | +// Get an int value. | |
22328 | + | |
22329 | +void | |
22330 | +Numeric_constant::get_int(mpz_t* val) const | |
22331 | +{ | |
22332 | + go_assert(this->is_int()); | |
22333 | + mpz_init_set(*val, this->u_.int_val); | |
22334 | +} | |
22335 | + | |
22336 | +// Get a rune value. | |
22337 | + | |
22338 | +void | |
22339 | +Numeric_constant::get_rune(mpz_t* val) const | |
22340 | +{ | |
22341 | + go_assert(this->is_rune()); | |
22342 | + mpz_init_set(*val, this->u_.int_val); | |
22343 | +} | |
22344 | + | |
22345 | +// Get a floating point value. | |
22346 | + | |
22347 | +void | |
22348 | +Numeric_constant::get_float(mpfr_t* val) const | |
22349 | +{ | |
22350 | + go_assert(this->is_float()); | |
22351 | + mpfr_init_set(*val, this->u_.float_val, GMP_RNDN); | |
22352 | +} | |
22353 | + | |
22354 | +// Get a complex value. | |
22355 | + | |
22356 | +void | |
22357 | +Numeric_constant::get_complex(mpfr_t* real, mpfr_t* imag) const | |
22358 | +{ | |
22359 | + go_assert(this->is_complex()); | |
22360 | + mpfr_init_set(*real, this->u_.complex_val.real, GMP_RNDN); | |
22361 | + mpfr_init_set(*imag, this->u_.complex_val.imag, GMP_RNDN); | |
22362 | +} | |
22363 | + | |
22364 | +// Express value as unsigned long if possible. | |
22365 | + | |
22366 | +Numeric_constant::To_unsigned_long | |
22367 | +Numeric_constant::to_unsigned_long(unsigned long* val) const | |
22368 | +{ | |
22369 | + switch (this->classification_) | |
22370 | + { | |
22371 | + case NC_INT: | |
22372 | + case NC_RUNE: | |
22373 | + return this->mpz_to_unsigned_long(this->u_.int_val, val); | |
22374 | + case NC_FLOAT: | |
22375 | + return this->mpfr_to_unsigned_long(this->u_.float_val, val); | |
22376 | + case NC_COMPLEX: | |
22377 | + if (!mpfr_zero_p(this->u_.complex_val.imag)) | |
22378 | + return NC_UL_NOTINT; | |
22379 | + return this->mpfr_to_unsigned_long(this->u_.complex_val.real, val); | |
22380 | + default: | |
22381 | + go_unreachable(); | |
22382 | + } | |
22383 | +} | |
22384 | + | |
22385 | +// Express integer value as unsigned long if possible. | |
22386 | + | |
22387 | +Numeric_constant::To_unsigned_long | |
22388 | +Numeric_constant::mpz_to_unsigned_long(const mpz_t ival, | |
22389 | + unsigned long *val) const | |
22390 | +{ | |
22391 | + if (mpz_sgn(ival) < 0) | |
22392 | + return NC_UL_NEGATIVE; | |
22393 | + unsigned long ui = mpz_get_ui(ival); | |
22394 | + if (mpz_cmp_ui(ival, ui) != 0) | |
22395 | + return NC_UL_BIG; | |
22396 | + *val = ui; | |
22397 | + return NC_UL_VALID; | |
22398 | +} | |
22399 | + | |
22400 | +// Express floating point value as unsigned long if possible. | |
22401 | + | |
22402 | +Numeric_constant::To_unsigned_long | |
22403 | +Numeric_constant::mpfr_to_unsigned_long(const mpfr_t fval, | |
22404 | + unsigned long *val) const | |
22405 | +{ | |
22406 | + if (!mpfr_integer_p(fval)) | |
22407 | + return NC_UL_NOTINT; | |
22408 | + mpz_t ival; | |
22409 | + mpz_init(ival); | |
22410 | + mpfr_get_z(ival, fval, GMP_RNDN); | |
22411 | + To_unsigned_long ret = this->mpz_to_unsigned_long(ival, val); | |
22412 | + mpz_clear(ival); | |
22413 | + return ret; | |
22414 | +} | |
22415 | + | |
22416 | +// Convert value to integer if possible. | |
22417 | + | |
22418 | +bool | |
22419 | +Numeric_constant::to_int(mpz_t* val) const | |
22420 | +{ | |
22421 | + switch (this->classification_) | |
22422 | + { | |
22423 | + case NC_INT: | |
22424 | + case NC_RUNE: | |
22425 | + mpz_init_set(*val, this->u_.int_val); | |
22426 | + return true; | |
22427 | + case NC_FLOAT: | |
22428 | + if (!mpfr_integer_p(this->u_.float_val)) | |
22429 | + return false; | |
22430 | + mpz_init(*val); | |
22431 | + mpfr_get_z(*val, this->u_.float_val, GMP_RNDN); | |
22432 | + return true; | |
22433 | + case NC_COMPLEX: | |
22434 | + if (!mpfr_zero_p(this->u_.complex_val.imag) | |
22435 | + || !mpfr_integer_p(this->u_.complex_val.real)) | |
22436 | + return false; | |
22437 | + mpz_init(*val); | |
22438 | + mpfr_get_z(*val, this->u_.complex_val.real, GMP_RNDN); | |
22439 | + return true; | |
22440 | + default: | |
22441 | + go_unreachable(); | |
22442 | + } | |
22443 | +} | |
22444 | + | |
22445 | +// Convert value to floating point if possible. | |
22446 | + | |
22447 | +bool | |
22448 | +Numeric_constant::to_float(mpfr_t* val) const | |
22449 | +{ | |
22450 | + switch (this->classification_) | |
22451 | + { | |
22452 | + case NC_INT: | |
22453 | + case NC_RUNE: | |
22454 | + mpfr_init_set_z(*val, this->u_.int_val, GMP_RNDN); | |
22455 | + return true; | |
22456 | + case NC_FLOAT: | |
22457 | + mpfr_init_set(*val, this->u_.float_val, GMP_RNDN); | |
22458 | + return true; | |
22459 | + case NC_COMPLEX: | |
22460 | + if (!mpfr_zero_p(this->u_.complex_val.imag)) | |
22461 | + return false; | |
22462 | + mpfr_init_set(*val, this->u_.complex_val.real, GMP_RNDN); | |
22463 | + return true; | |
22464 | + default: | |
22465 | + go_unreachable(); | |
22466 | + } | |
22467 | +} | |
22468 | + | |
22469 | +// Convert value to complex. | |
22470 | + | |
22471 | +bool | |
22472 | +Numeric_constant::to_complex(mpfr_t* vr, mpfr_t* vi) const | |
22473 | +{ | |
22474 | + switch (this->classification_) | |
22475 | + { | |
22476 | + case NC_INT: | |
22477 | + case NC_RUNE: | |
22478 | + mpfr_init_set_z(*vr, this->u_.int_val, GMP_RNDN); | |
22479 | + mpfr_init_set_ui(*vi, 0, GMP_RNDN); | |
22480 | + return true; | |
22481 | + case NC_FLOAT: | |
22482 | + mpfr_init_set(*vr, this->u_.float_val, GMP_RNDN); | |
22483 | + mpfr_init_set_ui(*vi, 0, GMP_RNDN); | |
22484 | + return true; | |
22485 | + case NC_COMPLEX: | |
22486 | + mpfr_init_set(*vr, this->u_.complex_val.real, GMP_RNDN); | |
22487 | + mpfr_init_set(*vi, this->u_.complex_val.imag, GMP_RNDN); | |
22488 | + return true; | |
22489 | + default: | |
22490 | + go_unreachable(); | |
22491 | + } | |
22492 | +} | |
22493 | + | |
22494 | +// Get the type. | |
22495 | + | |
22496 | +Type* | |
22497 | +Numeric_constant::type() const | |
22498 | +{ | |
22499 | + if (this->type_ != NULL) | |
22500 | + return this->type_; | |
22501 | + switch (this->classification_) | |
22502 | + { | |
22503 | + case NC_INT: | |
22504 | + return Type::make_abstract_integer_type(); | |
22505 | + case NC_RUNE: | |
22506 | + return Type::make_abstract_character_type(); | |
22507 | + case NC_FLOAT: | |
22508 | + return Type::make_abstract_float_type(); | |
22509 | + case NC_COMPLEX: | |
22510 | + return Type::make_abstract_complex_type(); | |
22511 | + default: | |
22512 | + go_unreachable(); | |
22513 | + } | |
22514 | +} | |
22515 | + | |
22516 | +// If the constant can be expressed in TYPE, then set the type of the | |
22517 | +// constant to TYPE and return true. Otherwise return false, and, if | |
22518 | +// ISSUE_ERROR is true, report an appropriate error message. | |
22519 | + | |
22520 | +bool | |
22521 | +Numeric_constant::set_type(Type* type, bool issue_error, Location loc) | |
22522 | +{ | |
22523 | + bool ret; | |
22524 | + if (type == NULL) | |
22525 | + ret = true; | |
22526 | + else if (type->integer_type() != NULL) | |
22527 | + ret = this->check_int_type(type->integer_type(), issue_error, loc); | |
22528 | + else if (type->float_type() != NULL) | |
22529 | + ret = this->check_float_type(type->float_type(), issue_error, loc); | |
22530 | + else if (type->complex_type() != NULL) | |
22531 | + ret = this->check_complex_type(type->complex_type(), issue_error, loc); | |
22532 | + else | |
22533 | + go_unreachable(); | |
22534 | + if (ret) | |
22535 | + this->type_ = type; | |
22536 | + return ret; | |
22537 | +} | |
22538 | + | |
22539 | +// Check whether the constant can be expressed in an integer type. | |
22540 | + | |
22541 | +bool | |
22542 | +Numeric_constant::check_int_type(Integer_type* type, bool issue_error, | |
22543 | + Location location) const | |
22544 | +{ | |
22545 | + mpz_t val; | |
22546 | + switch (this->classification_) | |
22547 | + { | |
22548 | + case NC_INT: | |
22549 | + case NC_RUNE: | |
22550 | + mpz_init_set(val, this->u_.int_val); | |
22551 | + break; | |
22552 | + | |
22553 | + case NC_FLOAT: | |
22554 | + if (!mpfr_integer_p(this->u_.float_val)) | |
22555 | + { | |
22556 | + if (issue_error) | |
22557 | + error_at(location, "floating point constant truncated to integer"); | |
22558 | + return false; | |
22559 | + } | |
22560 | + mpz_init(val); | |
22561 | + mpfr_get_z(val, this->u_.float_val, GMP_RNDN); | |
22562 | + break; | |
22563 | + | |
22564 | + case NC_COMPLEX: | |
22565 | + if (!mpfr_integer_p(this->u_.complex_val.real) | |
22566 | + || !mpfr_zero_p(this->u_.complex_val.imag)) | |
22567 | + { | |
22568 | + if (issue_error) | |
22569 | + error_at(location, "complex constant truncated to integer"); | |
22570 | + return false; | |
22571 | + } | |
22572 | + mpz_init(val); | |
22573 | + mpfr_get_z(val, this->u_.complex_val.real, GMP_RNDN); | |
22574 | + break; | |
22575 | + | |
22576 | + default: | |
22577 | + go_unreachable(); | |
22578 | + } | |
22579 | + | |
22580 | + bool ret; | |
22581 | + if (type->is_abstract()) | |
22582 | + ret = true; | |
22583 | + else | |
22584 | + { | |
22585 | + int bits = mpz_sizeinbase(val, 2); | |
22586 | + if (type->is_unsigned()) | |
22587 | + { | |
22588 | + // For an unsigned type we can only accept a nonnegative | |
22589 | + // number, and we must be able to represents at least BITS. | |
22590 | + ret = mpz_sgn(val) >= 0 && bits <= type->bits(); | |
22591 | + } | |
22592 | + else | |
22593 | + { | |
22594 | + // For a signed type we need an extra bit to indicate the | |
22595 | + // sign. We have to handle the most negative integer | |
22596 | + // specially. | |
22597 | + ret = (bits + 1 <= type->bits() | |
22598 | + || (bits <= type->bits() | |
22599 | + && mpz_sgn(val) < 0 | |
22600 | + && (mpz_scan1(val, 0) | |
22601 | + == static_cast<unsigned long>(type->bits() - 1)) | |
22602 | + && mpz_scan0(val, type->bits()) == ULONG_MAX)); | |
22603 | + } | |
22604 | + } | |
22605 | + | |
22606 | + if (!ret && issue_error) | |
22607 | + error_at(location, "integer constant overflow"); | |
22608 | + | |
22609 | + return ret; | |
22610 | +} | |
22611 | + | |
22612 | +// Check whether the constant can be expressed in a floating point | |
22613 | +// type. | |
22614 | + | |
22615 | +bool | |
22616 | +Numeric_constant::check_float_type(Float_type* type, bool issue_error, | |
22617 | + Location location) const | |
22618 | +{ | |
22619 | + mpfr_t val; | |
22620 | + switch (this->classification_) | |
22621 | + { | |
22622 | + case NC_INT: | |
22623 | + case NC_RUNE: | |
22624 | + mpfr_init_set_z(val, this->u_.int_val, GMP_RNDN); | |
22625 | + break; | |
22626 | + | |
22627 | + case NC_FLOAT: | |
22628 | + mpfr_init_set(val, this->u_.float_val, GMP_RNDN); | |
22629 | + break; | |
22630 | + | |
22631 | + case NC_COMPLEX: | |
22632 | + if (!mpfr_zero_p(this->u_.complex_val.imag)) | |
22633 | + { | |
22634 | + if (issue_error) | |
22635 | + error_at(location, "complex constant truncated to float"); | |
22636 | + return false; | |
22637 | + } | |
22638 | + mpfr_init_set(val, this->u_.complex_val.real, GMP_RNDN); | |
22639 | + break; | |
22640 | + | |
22641 | + default: | |
22642 | + go_unreachable(); | |
22643 | + } | |
22644 | + | |
22645 | + bool ret; | |
22646 | + if (type->is_abstract()) | |
22647 | + ret = true; | |
22648 | + else if (mpfr_nan_p(val) || mpfr_inf_p(val) || mpfr_zero_p(val)) | |
22649 | + { | |
22650 | + // A NaN or Infinity always fits in the range of the type. | |
22651 | + ret = true; | |
22652 | + } | |
22653 | + else | |
22654 | + { | |
22655 | + mp_exp_t exp = mpfr_get_exp(val); | |
22656 | + mp_exp_t max_exp; | |
22657 | + switch (type->bits()) | |
22658 | + { | |
22659 | + case 32: | |
22660 | + max_exp = 128; | |
22661 | + break; | |
22662 | + case 64: | |
22663 | + max_exp = 1024; | |
22664 | + break; | |
22665 | + default: | |
22666 | + go_unreachable(); | |
22667 | + } | |
22668 | + | |
22669 | + ret = exp <= max_exp; | |
22670 | + } | |
22671 | + | |
22672 | + mpfr_clear(val); | |
22673 | + | |
22674 | + if (!ret && issue_error) | |
22675 | + error_at(location, "floating point constant overflow"); | |
22676 | + | |
22677 | + return ret; | |
22678 | +} | |
22679 | + | |
22680 | +// Check whether the constant can be expressed in a complex type. | |
22681 | + | |
22682 | +bool | |
22683 | +Numeric_constant::check_complex_type(Complex_type* type, bool issue_error, | |
22684 | + Location location) const | |
22685 | +{ | |
22686 | + if (type->is_abstract()) | |
22687 | + return true; | |
22688 | + | |
22689 | + mp_exp_t max_exp; | |
22690 | + switch (type->bits()) | |
22691 | + { | |
22692 | + case 64: | |
22693 | + max_exp = 128; | |
22694 | + break; | |
22695 | + case 128: | |
22696 | + max_exp = 1024; | |
22697 | + break; | |
22698 | + default: | |
22699 | + go_unreachable(); | |
22700 | + } | |
22701 | + | |
22702 | + mpfr_t real; | |
22703 | + switch (this->classification_) | |
22704 | + { | |
22705 | + case NC_INT: | |
22706 | + case NC_RUNE: | |
22707 | + mpfr_init_set_z(real, this->u_.int_val, GMP_RNDN); | |
22708 | + break; | |
22709 | + | |
22710 | + case NC_FLOAT: | |
22711 | + mpfr_init_set(real, this->u_.float_val, GMP_RNDN); | |
22712 | + break; | |
22713 | + | |
22714 | + case NC_COMPLEX: | |
22715 | + if (!mpfr_nan_p(this->u_.complex_val.imag) | |
22716 | + && !mpfr_inf_p(this->u_.complex_val.imag) | |
22717 | + && !mpfr_zero_p(this->u_.complex_val.imag)) | |
22718 | + { | |
22719 | + if (mpfr_get_exp(this->u_.complex_val.imag) > max_exp) | |
22720 | + { | |
22721 | + if (issue_error) | |
22722 | + error_at(location, "complex imaginary part overflow"); | |
22723 | + return false; | |
22724 | + } | |
22725 | + } | |
22726 | + mpfr_init_set(real, this->u_.complex_val.real, GMP_RNDN); | |
22727 | + break; | |
22728 | + | |
22729 | + default: | |
22730 | + go_unreachable(); | |
22731 | + } | |
22732 | + | |
22733 | + bool ret; | |
22734 | + if (mpfr_nan_p(real) || mpfr_inf_p(real) || mpfr_zero_p(real)) | |
22735 | + ret = true; | |
22736 | + else | |
22737 | + ret = mpfr_get_exp(real) <= max_exp; | |
22738 | + | |
22739 | + mpfr_clear(real); | |
22740 | + | |
22741 | + if (!ret && issue_error) | |
22742 | + error_at(location, "complex real part overflow"); | |
22743 | + | |
22744 | + return ret; | |
22745 | +} | |
22746 | + | |
22747 | +// Return an Expression for this value. | |
22748 | + | |
22749 | +Expression* | |
22750 | +Numeric_constant::expression(Location loc) const | |
22751 | +{ | |
22752 | + switch (this->classification_) | |
22753 | + { | |
22754 | + case NC_INT: | |
22755 | + return Expression::make_integer(&this->u_.int_val, this->type_, loc); | |
22756 | + case NC_RUNE: | |
22757 | + return Expression::make_character(&this->u_.int_val, this->type_, loc); | |
22758 | + case NC_FLOAT: | |
22759 | + return Expression::make_float(&this->u_.float_val, this->type_, loc); | |
22760 | + case NC_COMPLEX: | |
22761 | + return Expression::make_complex(&this->u_.complex_val.real, | |
22762 | + &this->u_.complex_val.imag, | |
22763 | + this->type_, loc); | |
22764 | + default: | |
22765 | + go_unreachable(); | |
22766 | + } | |
22767 | +} | |
22768 | Index: gcc/go/go-c.h | |
22769 | =================================================================== | |
22770 | --- gcc/go/go-c.h (.../tags/gcc_4_7_0_release) (wersja 187906) | |
22771 | +++ gcc/go/go-c.h (.../branches/gcc-4_7-branch) (wersja 187906) | |
22772 | @@ -38,11 +38,11 @@ | |
22773 | ||
22774 | extern int go_enable_dump (const char*); | |
22775 | extern int go_enable_optimize (const char*); | |
22776 | -extern void go_set_prefix (const char*); | |
22777 | ||
22778 | extern void go_add_search_path (const char*); | |
22779 | ||
22780 | -extern void go_create_gogo (int int_type_size, int pointer_size); | |
22781 | +extern void go_create_gogo (int int_type_size, int pointer_size, | |
22782 | + const char* pkgpath, const char *prefix); | |
22783 | ||
22784 | extern void go_parse_input_files (const char**, unsigned int, | |
22785 | bool only_check_syntax, | |
22786 | Index: gcc/recog.c | |
22787 | =================================================================== | |
22788 | --- gcc/recog.c (.../tags/gcc_4_7_0_release) (wersja 187906) | |
22789 | +++ gcc/recog.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
22790 | @@ -2673,6 +2673,16 @@ | |
22791 | /* Every address operand can be reloaded to fit. */ | |
22792 | && strict < 0) | |
22793 | win = 1; | |
22794 | + /* Cater to architectures like IA-64 that define extra memory | |
22795 | + constraints without using define_memory_constraint. */ | |
22796 | + else if (reload_in_progress | |
22797 | + && REG_P (op) | |
22798 | + && REGNO (op) >= FIRST_PSEUDO_REGISTER | |
22799 | + && reg_renumber[REGNO (op)] < 0 | |
22800 | + && reg_equiv_mem (REGNO (op)) != 0 | |
22801 | + && EXTRA_CONSTRAINT_STR | |
22802 | + (reg_equiv_mem (REGNO (op)), c, p)) | |
22803 | + win = 1; | |
22804 | #endif | |
22805 | break; | |
22806 | } | |
22807 | Index: gcc/ada/a-zchuni.adb | |
22808 | =================================================================== | |
22809 | --- gcc/ada/a-zchuni.adb (.../tags/gcc_4_7_0_release) (wersja 187906) | |
22810 | +++ gcc/ada/a-zchuni.adb (.../branches/gcc-4_7-branch) (wersja 187906) | |
22811 | ||
22812 | Zmiany atrybutów dla: gcc/ada/a-zchuni.adb | |
22813 | ___________________________________________________________________ | |
22814 | Deleted: svn:executable | |
22815 | ## -1 +0,0 ## | |
22816 | -* | |
22817 | \ No newline at end of property | |
22818 | Index: gcc/ada/a-zchuni.ads | |
22819 | =================================================================== | |
22820 | --- gcc/ada/a-zchuni.ads (.../tags/gcc_4_7_0_release) (wersja 187906) | |
22821 | +++ gcc/ada/a-zchuni.ads (.../branches/gcc-4_7-branch) (wersja 187906) | |
22822 | ||
22823 | Zmiany atrybutów dla: gcc/ada/a-zchuni.ads | |
22824 | ___________________________________________________________________ | |
22825 | Deleted: svn:executable | |
22826 | ## -1 +0,0 ## | |
22827 | -* | |
22828 | \ No newline at end of property | |
22829 | Index: gcc/ada/s-tasloc.adb | |
22830 | =================================================================== | |
22831 | --- gcc/ada/s-tasloc.adb (.../tags/gcc_4_7_0_release) (wersja 187906) | |
22832 | +++ gcc/ada/s-tasloc.adb (.../branches/gcc-4_7-branch) (wersja 187906) | |
22833 | ||
22834 | Zmiany atrybutów dla: gcc/ada/s-tasloc.adb | |
22835 | ___________________________________________________________________ | |
22836 | Deleted: svn:executable | |
22837 | ## -1 +0,0 ## | |
22838 | -* | |
22839 | \ No newline at end of property | |
22840 | Index: gcc/ada/s-tasloc.ads | |
22841 | =================================================================== | |
22842 | --- gcc/ada/s-tasloc.ads (.../tags/gcc_4_7_0_release) (wersja 187906) | |
22843 | +++ gcc/ada/s-tasloc.ads (.../branches/gcc-4_7-branch) (wersja 187906) | |
22844 | ||
22845 | Zmiany atrybutów dla: gcc/ada/s-tasloc.ads | |
22846 | ___________________________________________________________________ | |
22847 | Deleted: svn:executable | |
22848 | ## -1 +0,0 ## | |
22849 | -* | |
22850 | \ No newline at end of property | |
22851 | Index: gcc/ada/s-string.adb | |
22852 | =================================================================== | |
22853 | --- gcc/ada/s-string.adb (.../tags/gcc_4_7_0_release) (wersja 187906) | |
22854 | +++ gcc/ada/s-string.adb (.../branches/gcc-4_7-branch) (wersja 187906) | |
22855 | ||
22856 | Zmiany atrybutów dla: gcc/ada/s-string.adb | |
22857 | ___________________________________________________________________ | |
22858 | Deleted: svn:executable | |
22859 | ## -1 +0,0 ## | |
22860 | -* | |
22861 | \ No newline at end of property | |
22862 | Index: gcc/ada/a-envvar.adb | |
22863 | =================================================================== | |
22864 | --- gcc/ada/a-envvar.adb (.../tags/gcc_4_7_0_release) (wersja 187906) | |
22865 | +++ gcc/ada/a-envvar.adb (.../branches/gcc-4_7-branch) (wersja 187906) | |
22866 | ||
22867 | Zmiany atrybutów dla: gcc/ada/a-envvar.adb | |
22868 | ___________________________________________________________________ | |
22869 | Deleted: svn:executable | |
22870 | ## -1 +0,0 ## | |
22871 | -* | |
22872 | \ No newline at end of property | |
22873 | Index: gcc/ada/s-string.ads | |
22874 | =================================================================== | |
22875 | --- gcc/ada/s-string.ads (.../tags/gcc_4_7_0_release) (wersja 187906) | |
22876 | +++ gcc/ada/s-string.ads (.../branches/gcc-4_7-branch) (wersja 187906) | |
22877 | ||
22878 | Zmiany atrybutów dla: gcc/ada/s-string.ads | |
22879 | ___________________________________________________________________ | |
22880 | Deleted: svn:executable | |
22881 | ## -1 +0,0 ## | |
22882 | -* | |
22883 | \ No newline at end of property | |
22884 | Index: gcc/ada/a-envvar.ads | |
22885 | =================================================================== | |
22886 | --- gcc/ada/a-envvar.ads (.../tags/gcc_4_7_0_release) (wersja 187906) | |
22887 | +++ gcc/ada/a-envvar.ads (.../branches/gcc-4_7-branch) (wersja 187906) | |
22888 | ||
22889 | Zmiany atrybutów dla: gcc/ada/a-envvar.ads | |
22890 | ___________________________________________________________________ | |
22891 | Deleted: svn:executable | |
22892 | ## -1 +0,0 ## | |
22893 | -* | |
22894 | \ No newline at end of property | |
22895 | Index: gcc/ada/sem_aux.adb | |
22896 | =================================================================== | |
22897 | --- gcc/ada/sem_aux.adb (.../tags/gcc_4_7_0_release) (wersja 187906) | |
22898 | +++ gcc/ada/sem_aux.adb (.../branches/gcc-4_7-branch) (wersja 187906) | |
22899 | ||
22900 | Zmiany atrybutów dla: gcc/ada/sem_aux.adb | |
22901 | ___________________________________________________________________ | |
22902 | Deleted: svn:executable | |
22903 | ## -1 +0,0 ## | |
22904 | -* | |
22905 | \ No newline at end of property | |
22906 | Index: gcc/ada/g-wispch.adb | |
22907 | =================================================================== | |
22908 | --- gcc/ada/g-wispch.adb (.../tags/gcc_4_7_0_release) (wersja 187906) | |
22909 | +++ gcc/ada/g-wispch.adb (.../branches/gcc-4_7-branch) (wersja 187906) | |
22910 | ||
22911 | Zmiany atrybutów dla: gcc/ada/g-wispch.adb | |
22912 | ___________________________________________________________________ | |
22913 | Deleted: svn:executable | |
22914 | ## -1 +0,0 ## | |
22915 | -* | |
22916 | \ No newline at end of property | |
22917 | Index: gcc/ada/sem_aux.ads | |
22918 | =================================================================== | |
22919 | --- gcc/ada/sem_aux.ads (.../tags/gcc_4_7_0_release) (wersja 187906) | |
22920 | +++ gcc/ada/sem_aux.ads (.../branches/gcc-4_7-branch) (wersja 187906) | |
22921 | ||
22922 | Zmiany atrybutów dla: gcc/ada/sem_aux.ads | |
22923 | ___________________________________________________________________ | |
22924 | Deleted: svn:executable | |
22925 | ## -1 +0,0 ## | |
22926 | -* | |
22927 | \ No newline at end of property | |
22928 | Index: gcc/ada/g-wispch.ads | |
22929 | =================================================================== | |
22930 | --- gcc/ada/g-wispch.ads (.../tags/gcc_4_7_0_release) (wersja 187906) | |
22931 | +++ gcc/ada/g-wispch.ads (.../branches/gcc-4_7-branch) (wersja 187906) | |
22932 | ||
22933 | Zmiany atrybutów dla: gcc/ada/g-wispch.ads | |
22934 | ___________________________________________________________________ | |
22935 | Deleted: svn:executable | |
22936 | ## -1 +0,0 ## | |
22937 | -* | |
22938 | \ No newline at end of property | |
22939 | Index: gcc/ada/a-tirsfi.adb | |
22940 | =================================================================== | |
22941 | --- gcc/ada/a-tirsfi.adb (.../tags/gcc_4_7_0_release) (wersja 187906) | |
22942 | +++ gcc/ada/a-tirsfi.adb (.../branches/gcc-4_7-branch) (wersja 187906) | |
22943 | ||
22944 | Zmiany atrybutów dla: gcc/ada/a-tirsfi.adb | |
22945 | ___________________________________________________________________ | |
22946 | Deleted: svn:executable | |
22947 | ## -1 +0,0 ## | |
22948 | -* | |
22949 | \ No newline at end of property | |
22950 | Index: gcc/ada/a-tirsfi.ads | |
22951 | =================================================================== | |
22952 | --- gcc/ada/a-tirsfi.ads (.../tags/gcc_4_7_0_release) (wersja 187906) | |
22953 | +++ gcc/ada/a-tirsfi.ads (.../branches/gcc-4_7-branch) (wersja 187906) | |
22954 | ||
22955 | Zmiany atrybutów dla: gcc/ada/a-tirsfi.ads | |
22956 | ___________________________________________________________________ | |
22957 | Deleted: svn:executable | |
22958 | ## -1 +0,0 ## | |
22959 | -* | |
22960 | \ No newline at end of property | |
22961 | Index: gcc/ada/g-encstr.adb | |
22962 | =================================================================== | |
22963 | --- gcc/ada/g-encstr.adb (.../tags/gcc_4_7_0_release) (wersja 187906) | |
22964 | +++ gcc/ada/g-encstr.adb (.../branches/gcc-4_7-branch) (wersja 187906) | |
22965 | ||
22966 | Zmiany atrybutów dla: gcc/ada/g-encstr.adb | |
22967 | ___________________________________________________________________ | |
22968 | Deleted: svn:executable | |
22969 | ## -1 +0,0 ## | |
22970 | -* | |
22971 | \ No newline at end of property | |
22972 | Index: gcc/ada/g-encstr.ads | |
22973 | =================================================================== | |
22974 | --- gcc/ada/g-encstr.ads (.../tags/gcc_4_7_0_release) (wersja 187906) | |
22975 | +++ gcc/ada/g-encstr.ads (.../branches/gcc-4_7-branch) (wersja 187906) | |
22976 | ||
22977 | Zmiany atrybutów dla: gcc/ada/g-encstr.ads | |
22978 | ___________________________________________________________________ | |
22979 | Deleted: svn:executable | |
22980 | ## -1 +0,0 ## | |
22981 | -* | |
22982 | \ No newline at end of property | |
22983 | Index: gcc/ada/s-regpat.adb | |
22984 | =================================================================== | |
22985 | --- gcc/ada/s-regpat.adb (.../tags/gcc_4_7_0_release) (wersja 187906) | |
22986 | +++ gcc/ada/s-regpat.adb (.../branches/gcc-4_7-branch) (wersja 187906) | |
22987 | ||
22988 | Zmiany atrybutów dla: gcc/ada/s-regpat.adb | |
22989 | ___________________________________________________________________ | |
22990 | Deleted: svn:executable | |
22991 | ## -1 +0,0 ## | |
22992 | -* | |
22993 | \ No newline at end of property | |
22994 | Index: gcc/ada/s-regpat.ads | |
22995 | =================================================================== | |
22996 | --- gcc/ada/s-regpat.ads (.../tags/gcc_4_7_0_release) (wersja 187906) | |
22997 | +++ gcc/ada/s-regpat.ads (.../branches/gcc-4_7-branch) (wersja 187906) | |
22998 | ||
22999 | Zmiany atrybutów dla: gcc/ada/s-regpat.ads | |
23000 | ___________________________________________________________________ | |
23001 | Deleted: svn:executable | |
23002 | ## -1 +0,0 ## | |
23003 | -* | |
23004 | \ No newline at end of property | |
23005 | Index: gcc/ada/a-zrstfi.adb | |
23006 | =================================================================== | |
23007 | --- gcc/ada/a-zrstfi.adb (.../tags/gcc_4_7_0_release) (wersja 187906) | |
23008 | +++ gcc/ada/a-zrstfi.adb (.../branches/gcc-4_7-branch) (wersja 187906) | |
23009 | ||
23010 | Zmiany atrybutów dla: gcc/ada/a-zrstfi.adb | |
23011 | ___________________________________________________________________ | |
23012 | Deleted: svn:executable | |
23013 | ## -1 +0,0 ## | |
23014 | -* | |
23015 | \ No newline at end of property | |
23016 | Index: gcc/ada/a-zrstfi.ads | |
23017 | =================================================================== | |
23018 | --- gcc/ada/a-zrstfi.ads (.../tags/gcc_4_7_0_release) (wersja 187906) | |
23019 | +++ gcc/ada/a-zrstfi.ads (.../branches/gcc-4_7-branch) (wersja 187906) | |
23020 | ||
23021 | Zmiany atrybutów dla: gcc/ada/a-zrstfi.ads | |
23022 | ___________________________________________________________________ | |
23023 | Deleted: svn:executable | |
23024 | ## -1 +0,0 ## | |
23025 | -* | |
23026 | \ No newline at end of property | |
23027 | Index: gcc/ada/sem_prag.adb | |
23028 | =================================================================== | |
23029 | --- gcc/ada/sem_prag.adb (.../tags/gcc_4_7_0_release) (wersja 187906) | |
23030 | +++ gcc/ada/sem_prag.adb (.../branches/gcc-4_7-branch) (wersja 187906) | |
23031 | @@ -2972,16 +2972,29 @@ | |
23032 | Set_Has_Delayed_Freeze (E); | |
23033 | end if; | |
23034 | ||
23035 | - -- An interesting improvement here. If an object of type X is | |
23036 | - -- declared atomic, and the type X is not atomic, that's a | |
23037 | + -- An interesting improvement here. If an object of composite | |
23038 | + -- type X is declared atomic, and the type X isn't, that's a | |
23039 | -- pity, since it may not have appropriate alignment etc. We | |
23040 | -- can rescue this in the special case where the object and | |
23041 | -- type are in the same unit by just setting the type as | |
23042 | -- atomic, so that the back end will process it as atomic. | |
23043 | ||
23044 | + -- Note: we used to do this for elementary types as well, | |
23045 | + -- but that turns out to be a bad idea and can have unwanted | |
23046 | + -- effects, most notably if the type is elementary, the object | |
23047 | + -- a simple component within a record, and both are in a spec: | |
23048 | + -- every object of this type in the entire program will be | |
23049 | + -- treated as atomic, thus incurring a potentially costly | |
23050 | + -- synchronization operation for every access. | |
23051 | + | |
23052 | + -- Of course it would be best if the back end could just adjust | |
23053 | + -- the alignment etc for the specific object, but that's not | |
23054 | + -- something we are capable of doing at this point. | |
23055 | + | |
23056 | Utyp := Underlying_Type (Etype (E)); | |
23057 | ||
23058 | if Present (Utyp) | |
23059 | + and then Is_Composite_Type (Utyp) | |
23060 | and then Sloc (E) > No_Location | |
23061 | and then Sloc (Utyp) > No_Location | |
23062 | and then | |
23063 | Index: gcc/ada/a-suezst.adb | |
23064 | =================================================================== | |
23065 | --- gcc/ada/a-suezst.adb (.../tags/gcc_4_7_0_release) (wersja 187906) | |
23066 | +++ gcc/ada/a-suezst.adb (.../branches/gcc-4_7-branch) (wersja 187906) | |
23067 | ||
23068 | Zmiany atrybutów dla: gcc/ada/a-suezst.adb | |
23069 | ___________________________________________________________________ | |
23070 | Deleted: svn:executable | |
23071 | ## -1 +0,0 ## | |
23072 | -* | |
23073 | \ No newline at end of property | |
23074 | Index: gcc/ada/a-suezst.ads | |
23075 | =================================================================== | |
23076 | --- gcc/ada/a-suezst.ads (.../tags/gcc_4_7_0_release) (wersja 187906) | |
23077 | +++ gcc/ada/a-suezst.ads (.../branches/gcc-4_7-branch) (wersja 187906) | |
23078 | ||
23079 | Zmiany atrybutów dla: gcc/ada/a-suezst.ads | |
23080 | ___________________________________________________________________ | |
23081 | Deleted: svn:executable | |
23082 | ## -1 +0,0 ## | |
23083 | -* | |
23084 | \ No newline at end of property | |
23085 | Index: gcc/ada/a-zchhan.adb | |
23086 | =================================================================== | |
23087 | --- gcc/ada/a-zchhan.adb (.../tags/gcc_4_7_0_release) (wersja 187906) | |
23088 | +++ gcc/ada/a-zchhan.adb (.../branches/gcc-4_7-branch) (wersja 187906) | |
23089 | ||
23090 | Zmiany atrybutów dla: gcc/ada/a-zchhan.adb | |
23091 | ___________________________________________________________________ | |
23092 | Deleted: svn:executable | |
23093 | ## -1 +0,0 ## | |
23094 | -* | |
23095 | \ No newline at end of property | |
23096 | Index: gcc/ada/a-zchhan.ads | |
23097 | =================================================================== | |
23098 | --- gcc/ada/a-zchhan.ads (.../tags/gcc_4_7_0_release) (wersja 187906) | |
23099 | +++ gcc/ada/a-zchhan.ads (.../branches/gcc-4_7-branch) (wersja 187906) | |
23100 | ||
23101 | Zmiany atrybutów dla: gcc/ada/a-zchhan.ads | |
23102 | ___________________________________________________________________ | |
23103 | Deleted: svn:executable | |
23104 | ## -1 +0,0 ## | |
23105 | -* | |
23106 | \ No newline at end of property | |
23107 | Index: gcc/ada/mlib-utl.adb | |
23108 | =================================================================== | |
23109 | --- gcc/ada/mlib-utl.adb (.../tags/gcc_4_7_0_release) (wersja 187906) | |
23110 | +++ gcc/ada/mlib-utl.adb (.../branches/gcc-4_7-branch) (wersja 187906) | |
23111 | @@ -6,7 +6,7 @@ | |
23112 | -- -- | |
23113 | -- B o d y -- | |
23114 | -- -- | |
23115 | --- Copyright (C) 2002-2011, AdaCore -- | |
23116 | +-- Copyright (C) 2002-2012, AdaCore -- | |
23117 | -- -- | |
23118 | -- GNAT is free software; you can redistribute it and/or modify it under -- | |
23119 | -- terms of the GNU General Public License as published by the Free Soft- -- | |
23120 | @@ -31,8 +31,6 @@ | |
23121 | ||
23122 | with Interfaces.C.Strings; use Interfaces.C.Strings; | |
23123 | ||
23124 | -with System; | |
23125 | - | |
23126 | package body MLib.Utl is | |
23127 | ||
23128 | Adalib_Path : String_Access := null; | |
23129 | @@ -353,16 +351,13 @@ | |
23130 | -- Pointer to a string representing the linker option which specifies | |
23131 | -- the response file. | |
23132 | ||
23133 | - Using_GNU_Linker : Boolean; | |
23134 | - for Using_GNU_Linker'Size use Character'Size; | |
23135 | - pragma Import (C, Using_GNU_Linker, "__gnat_using_gnu_linker"); | |
23136 | - -- Predicate indicating whether this target uses the GNU linker. In | |
23137 | - -- this case we must output a GNU linker compatible response file. | |
23138 | + Object_File_Option : constant String := Value (Object_File_Option_Ptr); | |
23139 | + -- The linker option which specifies the response file as a string | |
23140 | ||
23141 | - Opening : aliased constant String := """"; | |
23142 | - Closing : aliased constant String := '"' & ASCII.LF; | |
23143 | - -- Needed to quote object paths in object list files when GNU linker | |
23144 | - -- is used. | |
23145 | + Using_GNU_response_file : constant Boolean := | |
23146 | + Object_File_Option'Length > 0 | |
23147 | + and then Object_File_Option (Object_File_Option'Last) = '@'; | |
23148 | + -- Whether a GNU response file is used | |
23149 | ||
23150 | Tname : String_Access; | |
23151 | Tname_FD : File_Descriptor := Invalid_FD; | |
23152 | @@ -390,7 +385,7 @@ | |
23153 | ||
23154 | Position : Object_Position; | |
23155 | ||
23156 | - procedure Write_RF (A : System.Address; N : Integer); | |
23157 | + procedure Write_RF (S : String); | |
23158 | -- Write a string to the response file and check if it was successful. | |
23159 | -- Fail the program if it was not successful (disk full). | |
23160 | ||
23161 | @@ -398,12 +393,38 @@ | |
23162 | -- Write_RF -- | |
23163 | -------------- | |
23164 | ||
23165 | - procedure Write_RF (A : System.Address; N : Integer) is | |
23166 | - Status : Integer; | |
23167 | + procedure Write_RF (S : String) is | |
23168 | + Success : Boolean := True; | |
23169 | begin | |
23170 | - Status := Write (Tname_FD, A, N); | |
23171 | + -- If a GNU response file is used, space and backslash need to be | |
23172 | + -- escaped because they are interpreted as a string separator and | |
23173 | + -- an escape character respectively by the underlying mechanism. | |
23174 | + -- On the other hand, quote and double-quote are not escaped since | |
23175 | + -- they are interpreted as string delimiters on both sides. | |
23176 | ||
23177 | - if Status /= N then | |
23178 | + if Using_GNU_response_file then | |
23179 | + for I in S'Range loop | |
23180 | + if S (I) = ' ' or else S (I) = '\' then | |
23181 | + if Write (Tname_FD, ASCII.BACK_SLASH'Address, 1) /= 1 then | |
23182 | + Success := False; | |
23183 | + end if; | |
23184 | + end if; | |
23185 | + | |
23186 | + if Write (Tname_FD, S (I)'Address, 1) /= 1 then | |
23187 | + Success := False; | |
23188 | + end if; | |
23189 | + end loop; | |
23190 | + else | |
23191 | + if Write (Tname_FD, S'Address, S'Length) /= S'Length then | |
23192 | + Success := False; | |
23193 | + end if; | |
23194 | + end if; | |
23195 | + | |
23196 | + if Write (Tname_FD, ASCII.LF'Address, 1) /= 1 then | |
23197 | + Success := False; | |
23198 | + end if; | |
23199 | + | |
23200 | + if not Success then | |
23201 | Fail ("cannot generate response file to link library: disk full"); | |
23202 | end if; | |
23203 | end Write_RF; | |
23204 | @@ -529,53 +550,10 @@ | |
23205 | ||
23206 | Create_Temp_File (Tname_FD, Tname); | |
23207 | ||
23208 | - -- If target is using the GNU linker we must add a special header | |
23209 | - -- and footer in the response file. | |
23210 | - | |
23211 | - -- The syntax is : INPUT (object1.o object2.o ... ) | |
23212 | - | |
23213 | - -- Because the GNU linker does not like name with characters such | |
23214 | - -- as '!', we must put the object paths between double quotes. | |
23215 | - | |
23216 | - if Using_GNU_Linker then | |
23217 | - declare | |
23218 | - GNU_Header : aliased constant String := "INPUT ("; | |
23219 | - | |
23220 | - begin | |
23221 | - Write_RF (GNU_Header'Address, GNU_Header'Length); | |
23222 | - end; | |
23223 | - end if; | |
23224 | - | |
23225 | for J in Objects'Range loop | |
23226 | - -- Opening quote for GNU linker | |
23227 | - | |
23228 | - if Using_GNU_Linker then | |
23229 | - Write_RF (Opening'Address, 1); | |
23230 | - end if; | |
23231 | - | |
23232 | - Write_RF (Objects (J).all'Address, Objects (J).all'Length); | |
23233 | - | |
23234 | - -- Closing quote for GNU linker | |
23235 | - | |
23236 | - if Using_GNU_Linker then | |
23237 | - Write_RF (Closing'Address, 2); | |
23238 | - | |
23239 | - else | |
23240 | - Write_RF (ASCII.LF'Address, 1); | |
23241 | - end if; | |
23242 | + Write_RF (Objects (J).all); | |
23243 | end loop; | |
23244 | ||
23245 | - -- Handle GNU linker response file footer | |
23246 | - | |
23247 | - if Using_GNU_Linker then | |
23248 | - declare | |
23249 | - GNU_Footer : aliased constant String := ")"; | |
23250 | - | |
23251 | - begin | |
23252 | - Write_RF (GNU_Footer'Address, GNU_Footer'Length); | |
23253 | - end; | |
23254 | - end if; | |
23255 | - | |
23256 | Close (Tname_FD, Closing_Status); | |
23257 | ||
23258 | if not Closing_Status then | |
23259 | @@ -583,8 +561,7 @@ | |
23260 | end if; | |
23261 | ||
23262 | A := A + 1; | |
23263 | - Arguments (A) := | |
23264 | - new String'(Value (Object_File_Option_Ptr) & Tname.all); | |
23265 | + Arguments (A) := new String'(Object_File_Option & Tname.all); | |
23266 | ||
23267 | else | |
23268 | A := A + Objects'Length; | |
23269 | @@ -596,17 +573,15 @@ | |
23270 | ||
23271 | Spawn (Driver.all, Arguments (1 .. A), Success); | |
23272 | ||
23273 | - if Tname /= null then | |
23274 | - Delete_File (Tname.all, Closing_Status); | |
23275 | + if Success then | |
23276 | + -- Delete the temporary file used in conjunction with linking | |
23277 | + -- if one was created. | |
23278 | ||
23279 | - if not Closing_Status then | |
23280 | - Write_Str ("warning: could not delete response file """); | |
23281 | - Write_Str (Tname.all); | |
23282 | - Write_Line (""" to link library"); | |
23283 | + if Tname_FD /= Invalid_FD then | |
23284 | + Delete_File (Tname.all); | |
23285 | end if; | |
23286 | - end if; | |
23287 | ||
23288 | - if not Success then | |
23289 | + else | |
23290 | if Driver_Name = No_Name then | |
23291 | Fail (Gcc_Name.all & " execution error"); | |
23292 | else | |
23293 | Index: gcc/ada/gnatlink.adb | |
23294 | =================================================================== | |
23295 | --- gcc/ada/gnatlink.adb (.../tags/gcc_4_7_0_release) (wersja 187906) | |
23296 | +++ gcc/ada/gnatlink.adb (.../branches/gcc-4_7-branch) (wersja 187906) | |
23297 | @@ -178,6 +178,19 @@ | |
23298 | -- Predicate indicating whether the linker has an option whereby the | |
23299 | -- names of object files can be passed to the linker in a file. | |
23300 | ||
23301 | + Object_File_Option_Ptr : Interfaces.C.Strings.chars_ptr; | |
23302 | + pragma Import (C, Object_File_Option_Ptr, "__gnat_object_file_option"); | |
23303 | + -- Pointer to a string representing the linker option which specifies | |
23304 | + -- the response file. | |
23305 | + | |
23306 | + Object_File_Option : constant String := Value (Object_File_Option_Ptr); | |
23307 | + -- The linker option which specifies the response file as a string | |
23308 | + | |
23309 | + Using_GNU_response_file : constant Boolean := | |
23310 | + Object_File_Option'Length > 0 | |
23311 | + and then Object_File_Option (Object_File_Option'Last) = '@'; | |
23312 | + -- Whether a GNU response file is used | |
23313 | + | |
23314 | Object_List_File_Required : Boolean := False; | |
23315 | -- Set to True to force generation of a response file | |
23316 | ||
23317 | @@ -760,28 +773,12 @@ | |
23318 | -- Pointer to string specifying the default extension for | |
23319 | -- object libraries, e.g. Unix uses ".a", VMS uses ".olb". | |
23320 | ||
23321 | - Object_File_Option_Ptr : Interfaces.C.Strings.chars_ptr; | |
23322 | - pragma Import (C, Object_File_Option_Ptr, "__gnat_object_file_option"); | |
23323 | - -- Pointer to a string representing the linker option which specifies | |
23324 | - -- the response file. | |
23325 | - | |
23326 | - Using_GNU_Linker : Boolean; | |
23327 | - for Using_GNU_Linker'Size use Character'Size; | |
23328 | - pragma Import (C, Using_GNU_Linker, "__gnat_using_gnu_linker"); | |
23329 | - -- Predicate indicating whether this target uses the GNU linker. In | |
23330 | - -- this case we must output a GNU linker compatible response file. | |
23331 | - | |
23332 | Separate_Run_Path_Options : Boolean; | |
23333 | for Separate_Run_Path_Options'Size use Character'Size; | |
23334 | pragma Import | |
23335 | (C, Separate_Run_Path_Options, "__gnat_separate_run_path_options"); | |
23336 | -- Whether separate rpath options should be emitted for each directory | |
23337 | ||
23338 | - Opening : aliased constant String := """"; | |
23339 | - Closing : aliased constant String := '"' & ASCII.LF; | |
23340 | - -- Needed to quote object paths in object list files when GNU linker | |
23341 | - -- is used. | |
23342 | - | |
23343 | procedure Get_Next_Line; | |
23344 | -- Read the next line from the binder file without the line | |
23345 | -- terminator. | |
23346 | @@ -804,6 +801,10 @@ | |
23347 | -- after Store_File_Context. The binder file context will be restored | |
23348 | -- with the data stored by the last Store_File_Context call. | |
23349 | ||
23350 | + procedure Write_RF (S : String); | |
23351 | + -- Write a string to the response file and check if it was successful. | |
23352 | + -- Fail the program if it was not successful (disk full). | |
23353 | + | |
23354 | ------------------- | |
23355 | -- Get_Next_Line -- | |
23356 | ------------------- | |
23357 | @@ -897,6 +898,46 @@ | |
23358 | end if; | |
23359 | end Store_File_Context; | |
23360 | ||
23361 | + -------------- | |
23362 | + -- Write_RF -- | |
23363 | + -------------- | |
23364 | + | |
23365 | + procedure Write_RF (S : String) is | |
23366 | + Success : Boolean := True; | |
23367 | + begin | |
23368 | + -- If a GNU response file is used, space and backslash need to be | |
23369 | + -- escaped because they are interpreted as a string separator and | |
23370 | + -- an escape character respectively by the underlying mechanism. | |
23371 | + -- On the other hand, quote and double-quote are not escaped since | |
23372 | + -- they are interpreted as string delimiters on both sides. | |
23373 | + | |
23374 | + if Using_GNU_response_file then | |
23375 | + for I in S'Range loop | |
23376 | + if S (I) = ' ' or else S (I) = '\' then | |
23377 | + if Write (Tname_FD, ASCII.BACK_SLASH'Address, 1) /= 1 then | |
23378 | + Success := False; | |
23379 | + end if; | |
23380 | + end if; | |
23381 | + | |
23382 | + if Write (Tname_FD, S (I)'Address, 1) /= 1 then | |
23383 | + Success := False; | |
23384 | + end if; | |
23385 | + end loop; | |
23386 | + else | |
23387 | + if Write (Tname_FD, S'Address, S'Length) /= S'Length then | |
23388 | + Success := False; | |
23389 | + end if; | |
23390 | + end if; | |
23391 | + | |
23392 | + if Write (Tname_FD, ASCII.LF'Address, 1) /= 1 then | |
23393 | + Success := False; | |
23394 | + end if; | |
23395 | + | |
23396 | + if not Success then | |
23397 | + Exit_With_Error ("Error generating response file: disk full"); | |
23398 | + end if; | |
23399 | + end Write_RF; | |
23400 | + | |
23401 | -- Start of processing for Process_Binder_File | |
23402 | ||
23403 | begin | |
23404 | @@ -985,61 +1026,14 @@ | |
23405 | -- ??? Status of Write and Close operations should be checked, and | |
23406 | -- failure should occur if a status is wrong. | |
23407 | ||
23408 | - -- If target is using the GNU linker we must add a special header | |
23409 | - -- and footer in the response file. | |
23410 | - | |
23411 | - -- The syntax is : INPUT (object1.o object2.o ... ) | |
23412 | - | |
23413 | - -- Because the GNU linker does not like name with characters such | |
23414 | - -- as '!', we must put the object paths between double quotes. | |
23415 | - | |
23416 | - if Using_GNU_Linker then | |
23417 | - declare | |
23418 | - GNU_Header : aliased constant String := "INPUT ("; | |
23419 | - | |
23420 | - begin | |
23421 | - Status := Write (Tname_FD, GNU_Header'Address, | |
23422 | - GNU_Header'Length); | |
23423 | - end; | |
23424 | - end if; | |
23425 | - | |
23426 | for J in Objs_Begin .. Objs_End loop | |
23427 | + Write_RF (Linker_Objects.Table (J).all); | |
23428 | ||
23429 | - -- Opening quote for GNU linker | |
23430 | - | |
23431 | - if Using_GNU_Linker then | |
23432 | - Status := Write (Tname_FD, Opening'Address, 1); | |
23433 | - end if; | |
23434 | - | |
23435 | - Status := Write (Tname_FD, Linker_Objects.Table (J).all'Address, | |
23436 | - Linker_Objects.Table (J).all'Length); | |
23437 | - | |
23438 | - -- Closing quote for GNU linker | |
23439 | - | |
23440 | - if Using_GNU_Linker then | |
23441 | - Status := Write (Tname_FD, Closing'Address, 2); | |
23442 | - | |
23443 | - else | |
23444 | - Status := Write (Tname_FD, ASCII.LF'Address, 1); | |
23445 | - end if; | |
23446 | - | |
23447 | Response_File_Objects.Increment_Last; | |
23448 | Response_File_Objects.Table (Response_File_Objects.Last) := | |
23449 | Linker_Objects.Table (J); | |
23450 | end loop; | |
23451 | ||
23452 | - -- Handle GNU linker response file footer | |
23453 | - | |
23454 | - if Using_GNU_Linker then | |
23455 | - declare | |
23456 | - GNU_Footer : aliased constant String := ")"; | |
23457 | - | |
23458 | - begin | |
23459 | - Status := Write (Tname_FD, GNU_Footer'Address, | |
23460 | - GNU_Footer'Length); | |
23461 | - end; | |
23462 | - end if; | |
23463 | - | |
23464 | Close (Tname_FD, Closing_Status); | |
23465 | ||
23466 | -- Add the special objects list file option together with the name | |
23467 | @@ -1047,7 +1041,7 @@ | |
23468 | -- file table. | |
23469 | ||
23470 | Linker_Objects.Table (Objs_Begin) := | |
23471 | - new String'(Value (Object_File_Option_Ptr) & | |
23472 | + new String'(Object_File_Option & | |
23473 | Tname (Tname'First .. Tname'Last - 1)); | |
23474 | ||
23475 | -- The slots containing these object file names are then removed | |
23476 | @@ -2213,14 +2207,15 @@ | |
23477 | ||
23478 | System.OS_Lib.Spawn (Linker_Path.all, Args, Success); | |
23479 | ||
23480 | - -- Delete the temporary file used in conjunction with linking if | |
23481 | - -- one was created. See Process_Bind_File for details. | |
23482 | + if Success then | |
23483 | + -- Delete the temporary file used in conjunction with linking | |
23484 | + -- if one was created. See Process_Bind_File for details. | |
23485 | ||
23486 | - if Tname_FD /= Invalid_FD then | |
23487 | - Delete (Tname); | |
23488 | - end if; | |
23489 | + if Tname_FD /= Invalid_FD then | |
23490 | + Delete (Tname); | |
23491 | + end if; | |
23492 | ||
23493 | - if not Success then | |
23494 | + else | |
23495 | Error_Msg ("error when calling " & Linker_Path.all); | |
23496 | Exit_Program (E_Fatal); | |
23497 | end if; | |
23498 | Index: gcc/ada/a-suenco.adb | |
23499 | =================================================================== | |
23500 | --- gcc/ada/a-suenco.adb (.../tags/gcc_4_7_0_release) (wersja 187906) | |
23501 | +++ gcc/ada/a-suenco.adb (.../branches/gcc-4_7-branch) (wersja 187906) | |
23502 | ||
23503 | Zmiany atrybutów dla: gcc/ada/a-suenco.adb | |
23504 | ___________________________________________________________________ | |
23505 | Deleted: svn:executable | |
23506 | ## -1 +0,0 ## | |
23507 | -* | |
23508 | \ No newline at end of property | |
23509 | Index: gcc/ada/a-suenco.ads | |
23510 | =================================================================== | |
23511 | --- gcc/ada/a-suenco.ads (.../tags/gcc_4_7_0_release) (wersja 187906) | |
23512 | +++ gcc/ada/a-suenco.ads (.../branches/gcc-4_7-branch) (wersja 187906) | |
23513 | ||
23514 | Zmiany atrybutów dla: gcc/ada/a-suenco.ads | |
23515 | ___________________________________________________________________ | |
23516 | Deleted: svn:executable | |
23517 | ## -1 +0,0 ## | |
23518 | -* | |
23519 | \ No newline at end of property | |
23520 | Index: gcc/ada/a-chacon.adb | |
23521 | =================================================================== | |
23522 | --- gcc/ada/a-chacon.adb (.../tags/gcc_4_7_0_release) (wersja 187906) | |
23523 | +++ gcc/ada/a-chacon.adb (.../branches/gcc-4_7-branch) (wersja 187906) | |
23524 | ||
23525 | Zmiany atrybutów dla: gcc/ada/a-chacon.adb | |
23526 | ___________________________________________________________________ | |
23527 | Deleted: svn:executable | |
23528 | ## -1 +0,0 ## | |
23529 | -* | |
23530 | \ No newline at end of property | |
23531 | Index: gcc/ada/a-chacon.ads | |
23532 | =================================================================== | |
23533 | --- gcc/ada/a-chacon.ads (.../tags/gcc_4_7_0_release) (wersja 187906) | |
23534 | +++ gcc/ada/a-chacon.ads (.../branches/gcc-4_7-branch) (wersja 187906) | |
23535 | ||
23536 | Zmiany atrybutów dla: gcc/ada/a-chacon.ads | |
23537 | ___________________________________________________________________ | |
23538 | Deleted: svn:executable | |
23539 | ## -1 +0,0 ## | |
23540 | -* | |
23541 | \ No newline at end of property | |
23542 | Index: gcc/ada/a-lcteio.ads | |
23543 | =================================================================== | |
23544 | --- gcc/ada/a-lcteio.ads (.../tags/gcc_4_7_0_release) (wersja 187906) | |
23545 | +++ gcc/ada/a-lcteio.ads (.../branches/gcc-4_7-branch) (wersja 187906) | |
23546 | ||
23547 | Zmiany atrybutów dla: gcc/ada/a-lcteio.ads | |
23548 | ___________________________________________________________________ | |
23549 | Deleted: svn:executable | |
23550 | ## -1 +0,0 ## | |
23551 | -* | |
23552 | \ No newline at end of property | |
23553 | Index: gcc/ada/a-fzteio.ads | |
23554 | =================================================================== | |
23555 | --- gcc/ada/a-fzteio.ads (.../tags/gcc_4_7_0_release) (wersja 187906) | |
23556 | +++ gcc/ada/a-fzteio.ads (.../branches/gcc-4_7-branch) (wersja 187906) | |
23557 | ||
23558 | Zmiany atrybutów dla: gcc/ada/a-fzteio.ads | |
23559 | ___________________________________________________________________ | |
23560 | Deleted: svn:executable | |
23561 | ## -1 +0,0 ## | |
23562 | -* | |
23563 | \ No newline at end of property | |
23564 | Index: gcc/ada/s-inmaop-vxworks.adb | |
23565 | =================================================================== | |
23566 | --- gcc/ada/s-inmaop-vxworks.adb (.../tags/gcc_4_7_0_release) (wersja 187906) | |
23567 | +++ gcc/ada/s-inmaop-vxworks.adb (.../branches/gcc-4_7-branch) (wersja 187906) | |
23568 | ||
23569 | Zmiany atrybutów dla: gcc/ada/s-inmaop-vxworks.adb | |
23570 | ___________________________________________________________________ | |
23571 | Deleted: svn:executable | |
23572 | ## -1 +0,0 ## | |
23573 | -* | |
23574 | \ No newline at end of property | |
23575 | Index: gcc/ada/g-decstr.adb | |
23576 | =================================================================== | |
23577 | --- gcc/ada/g-decstr.adb (.../tags/gcc_4_7_0_release) (wersja 187906) | |
23578 | +++ gcc/ada/g-decstr.adb (.../branches/gcc-4_7-branch) (wersja 187906) | |
23579 | ||
23580 | Zmiany atrybutów dla: gcc/ada/g-decstr.adb | |
23581 | ___________________________________________________________________ | |
23582 | Deleted: svn:executable | |
23583 | ## -1 +0,0 ## | |
23584 | -* | |
23585 | \ No newline at end of property | |
23586 | Index: gcc/ada/g-decstr.ads | |
23587 | =================================================================== | |
23588 | --- gcc/ada/g-decstr.ads (.../tags/gcc_4_7_0_release) (wersja 187906) | |
23589 | +++ gcc/ada/g-decstr.ads (.../branches/gcc-4_7-branch) (wersja 187906) | |
23590 | ||
23591 | Zmiany atrybutów dla: gcc/ada/g-decstr.ads | |
23592 | ___________________________________________________________________ | |
23593 | Deleted: svn:executable | |
23594 | ## -1 +0,0 ## | |
23595 | -* | |
23596 | \ No newline at end of property | |
23597 | Index: gcc/ada/a-coteio.ads | |
23598 | =================================================================== | |
23599 | --- gcc/ada/a-coteio.ads (.../tags/gcc_4_7_0_release) (wersja 187906) | |
23600 | +++ gcc/ada/a-coteio.ads (.../branches/gcc-4_7-branch) (wersja 187906) | |
23601 | ||
23602 | Zmiany atrybutów dla: gcc/ada/a-coteio.ads | |
23603 | ___________________________________________________________________ | |
23604 | Deleted: svn:executable | |
23605 | ## -1 +0,0 ## | |
23606 | -* | |
23607 | \ No newline at end of property | |
23608 | Index: gcc/ada/s-except.adb | |
23609 | =================================================================== | |
23610 | --- gcc/ada/s-except.adb (.../tags/gcc_4_7_0_release) (wersja 187906) | |
23611 | +++ gcc/ada/s-except.adb (.../branches/gcc-4_7-branch) (wersja 187906) | |
23612 | ||
23613 | Zmiany atrybutów dla: gcc/ada/s-except.adb | |
23614 | ___________________________________________________________________ | |
23615 | Deleted: svn:executable | |
23616 | ## -1 +0,0 ## | |
23617 | -* | |
23618 | \ No newline at end of property | |
23619 | Index: gcc/ada/g-spchge.adb | |
23620 | =================================================================== | |
23621 | --- gcc/ada/g-spchge.adb (.../tags/gcc_4_7_0_release) (wersja 187906) | |
23622 | +++ gcc/ada/g-spchge.adb (.../branches/gcc-4_7-branch) (wersja 187906) | |
23623 | ||
23624 | Zmiany atrybutów dla: gcc/ada/g-spchge.adb | |
23625 | ___________________________________________________________________ | |
23626 | Deleted: svn:executable | |
23627 | ## -1 +0,0 ## | |
23628 | -* | |
23629 | \ No newline at end of property | |
23630 | Index: gcc/ada/ChangeLog | |
23631 | =================================================================== | |
23632 | --- gcc/ada/ChangeLog (.../tags/gcc_4_7_0_release) (wersja 187906) | |
23633 | +++ gcc/ada/ChangeLog (.../branches/gcc-4_7-branch) (wersja 187906) | |
23634 | @@ -1,3 +1,154 @@ | |
23635 | +2012-05-25 Eric Botcazou <ebotcazou@adacore.com> | |
23636 | + | |
23637 | + PR ada/52362 | |
23638 | + * link.c (__gnat_object_file_option): Set to "-Wl,@" for GNU linker. | |
23639 | + (__gnat_using_gnu_linker): Delete. | |
23640 | + * gnatlink.adb (Gnatlink): Declare Object_File_Option_Ptr here... | |
23641 | + Declare Object_File_Option string constant and Using_GNU_response_file | |
23642 | + boolean constant. | |
23643 | + (Process_Binder_File): ...instead of here. Delete Using_GNU_Linker, | |
23644 | + Opening and Closing local variables. Do not handle the GNU linker | |
23645 | + specially. | |
23646 | + (Write_RF): New procedure to write into the response file. Escape some | |
23647 | + characters if a GNU response file is used. Keep track of error status. | |
23648 | + Invoke Write_RF to write into the response file. Delete the file only | |
23649 | + if the link was successful. | |
23650 | + * mlib-utl.adb: Do not `with' package System. | |
23651 | + (Gcc): Likewise. Declare Object_File_Option string constant and | |
23652 | + Using_GNU_response_file boolean constant. | |
23653 | + (Write_RF): Take a string instead of address and length. Escape some | |
23654 | + characters if a GNU response file is used. | |
23655 | + Invoke Write_RF to write into the response file. Delete the file only | |
23656 | + if the link was successful. Do not warn if it cannot be deleted. | |
23657 | + | |
23658 | +2012-05-20 Eric Botcazou <ebotcazou@adacore.com> | |
23659 | + | |
23660 | + * gcc-interface/utils.c (gnat_write_global_declarations): Put a name | |
23661 | + on the dummy global variable. | |
23662 | + | |
23663 | +2012-05-19 Eric Botcazou <ebotcazou@adacore.com> | |
23664 | + | |
23665 | + * gcc-interface/decl.c (Has_Thiscall_Convention): New macro. | |
23666 | + (gnat_to_gnu_entity) <E_Subprogram_Type>: Test it to set the thiscall | |
23667 | + calling convention | |
23668 | + (get_minimal_subprog_decl): Likewise. | |
23669 | + (gnat_first_param_is_class): New predicate. | |
23670 | + | |
23671 | + Backport from mainline | |
23672 | + 2012-05-15 Javier Miranda <miranda@adacore.com> | |
23673 | + | |
23674 | + * exp_ch3.adb (Build_Offset_To_Top): Modify the | |
23675 | + expansion of the offset_to_top functions to ensure that their | |
23676 | + profile is conformant with the profile specified in Ada.Tags. No | |
23677 | + change in functionality. | |
23678 | + | |
23679 | +2012-05-18 Eric Botcazou <ebotcazou@adacore.com> | |
23680 | + | |
23681 | + * gcc-interface/decl.c (gnat_to_gnu_entity) <object>: For an object at | |
23682 | + global level with unconstrained nominal subtype and a non-fixed size, | |
23683 | + make a variable for the size. | |
23684 | + | |
23685 | +2012-05-15 Andris Pavenis <andris.pavenis@iki.fi> | |
23686 | + | |
23687 | + PR ada/52494 | |
23688 | + * s-taprop-dummy.adb (Specific): New package. | |
23689 | + | |
23690 | +2012-05-15 Eric Botcazou <ebotcazou@adacore.com> | |
23691 | + | |
23692 | + * sem_prag.adb (Process_Atomic_Shared_Volatile): Propagate | |
23693 | + atomicity from an object to its underlying type only if it | |
23694 | + is composite. | |
23695 | + | |
23696 | +2012-05-06 Pascal Obry <obry@adacore.com> | |
23697 | + | |
23698 | + Revert | |
23699 | + 2012-02-24 Dave Korn <dave.korn.cygwin@gmail.com> | |
23700 | + | |
23701 | + * gcc-interface/Makefile.in (WIN_SO_PREFIX [windows targets]): New | |
23702 | + Windows-specific make variable. | |
23703 | + (WIN_SO_INSTALL_DIR [windows targets]): Likewise. | |
23704 | + (install-gnatlib): Respect the above during installation when set, | |
23705 | + and also install any windows import library that has been built. | |
23706 | + (gnatlib-shared-win32): Use WIN_SO_PREFIX to name output DLL and also | |
23707 | + build a corresponding import library. | |
23708 | + | |
23709 | +2012-04-30 Eric Botcazou <ebotcazou@adacore.com> | |
23710 | + | |
23711 | + * gcc-interface/utils.c (finish_record_type): Force the traditional GCC | |
23712 | + layout for bitfields on the type if it is packed or has a representation | |
23713 | + clause and an alternate layout is available. | |
23714 | + | |
23715 | +2012-04-09 Mike Stump <mikestump@comcast.net> | |
23716 | + | |
23717 | + * a-assert.ads: Remove execute permission. | |
23718 | + * a-chacon.ads: Likewise. | |
23719 | + * a-coteio.ads: Likewise. | |
23720 | + * a-envvar.ads: Likewise. | |
23721 | + * a-exetim-mingw.ads: Likewise. | |
23722 | + * a-fzteio.ads: Likewise. | |
23723 | + * a-izteio.ads: Likewise. | |
23724 | + * a-lcteio.ads: Likewise. | |
23725 | + * a-llctio.ads: Likewise. | |
23726 | + * a-scteio.ads: Likewise. | |
23727 | + * a-suenco.ads: Likewise. | |
23728 | + * a-suenst.ads: Likewise. | |
23729 | + * a-suewst.ads: Likewise. | |
23730 | + * a-suezst.ads: Likewise. | |
23731 | + * a-tirsfi.ads: Likewise. | |
23732 | + * a-wichha.ads: Likewise. | |
23733 | + * a-zchara.ads: Likewise. | |
23734 | + * a-zchhan.ads: Likewise. | |
23735 | + * a-zchuni.ads: Likewise. | |
23736 | + * a-zrstfi.ads: Likewise. | |
23737 | + * aspects.ads: Likewise. | |
23738 | + * g-byorma.ads: Likewise. | |
23739 | + * g-decstr.ads: Likewise. | |
23740 | + * g-encstr.ads: Likewise. | |
23741 | + * g-spchge.ads: Likewise. | |
23742 | + * g-u3spch.ads: Likewise. | |
23743 | + * g-wispch.ads: Likewise. | |
23744 | + * g-zspche.ads: Likewise. | |
23745 | + * namet-sp.ads: Likewise. | |
23746 | + * s-os_lib.ads: Likewise. | |
23747 | + * s-regexp.ads: Likewise. | |
23748 | + * s-regpat.ads: Likewise. | |
23749 | + * s-string.ads: Likewise. | |
23750 | + * s-tasloc.ads: Likewise. | |
23751 | + * s-utf_32.ads: Likewise. | |
23752 | + * sem_aux.ads: Likewise. | |
23753 | + * a-assert.adb: Likewise. | |
23754 | + * a-chacon.adb: Likewise. | |
23755 | + * a-envvar.adb: Likewise. | |
23756 | + * a-exetim-mingw.adb: Likewise. | |
23757 | + * a-suenco.adb: Likewise. | |
23758 | + * a-suenst.adb: Likewise. | |
23759 | + * a-suewst.adb: Likewise. | |
23760 | + * a-suezst.adb: Likewise. | |
23761 | + * a-tirsfi.adb: Likewise. | |
23762 | + * a-wichha.adb: Likewise. | |
23763 | + * a-zchhan.adb: Likewise. | |
23764 | + * a-zchuni.adb: Likewise. | |
23765 | + * a-zrstfi.adb: Likewise. | |
23766 | + * aspects.adb: Likewise. | |
23767 | + * g-byorma.adb: Likewise. | |
23768 | + * g-decstr.adb: Likewise. | |
23769 | + * g-encstr.adb: Likewise. | |
23770 | + * g-spchge.adb: Likewise. | |
23771 | + * g-u3spch.adb: Likewise. | |
23772 | + * g-wispch.adb: Likewise. | |
23773 | + * g-zspche.adb: Likewise. | |
23774 | + * namet-sp.adb: Likewise. | |
23775 | + * s-except.adb: Likewise. | |
23776 | + * s-inmaop-vxworks.adb: Likewise. | |
23777 | + * s-os_lib.adb: Likewise. | |
23778 | + * s-regexp.adb: Likewise. | |
23779 | + * s-regpat.adb: Likewise. | |
23780 | + * s-string.adb: Likewise. | |
23781 | + * s-tasloc.adb: Likewise. | |
23782 | + * s-utf_32.adb: Likewise. | |
23783 | + * s-wchcon.adb: Likewise. | |
23784 | + * sem_aux.adb: Likewise. | |
23785 | + | |
23786 | 2012-03-22 Release Manager | |
23787 | ||
23788 | * GCC 4.7.0 released. | |
23789 | Index: gcc/ada/g-spchge.ads | |
23790 | =================================================================== | |
23791 | --- gcc/ada/g-spchge.ads (.../tags/gcc_4_7_0_release) (wersja 187906) | |
23792 | +++ gcc/ada/g-spchge.ads (.../branches/gcc-4_7-branch) (wersja 187906) | |
23793 | ||
23794 | Zmiany atrybutów dla: gcc/ada/g-spchge.ads | |
23795 | ___________________________________________________________________ | |
23796 | Deleted: svn:executable | |
23797 | ## -1 +0,0 ## | |
23798 | -* | |
23799 | \ No newline at end of property | |
23800 | Index: gcc/ada/g-u3spch.adb | |
23801 | =================================================================== | |
23802 | --- gcc/ada/g-u3spch.adb (.../tags/gcc_4_7_0_release) (wersja 187906) | |
23803 | +++ gcc/ada/g-u3spch.adb (.../branches/gcc-4_7-branch) (wersja 187906) | |
23804 | ||
23805 | Zmiany atrybutów dla: gcc/ada/g-u3spch.adb | |
23806 | ___________________________________________________________________ | |
23807 | Deleted: svn:executable | |
23808 | ## -1 +0,0 ## | |
23809 | -* | |
23810 | \ No newline at end of property | |
23811 | Index: gcc/ada/g-u3spch.ads | |
23812 | =================================================================== | |
23813 | --- gcc/ada/g-u3spch.ads (.../tags/gcc_4_7_0_release) (wersja 187906) | |
23814 | +++ gcc/ada/g-u3spch.ads (.../branches/gcc-4_7-branch) (wersja 187906) | |
23815 | ||
23816 | Zmiany atrybutów dla: gcc/ada/g-u3spch.ads | |
23817 | ___________________________________________________________________ | |
23818 | Deleted: svn:executable | |
23819 | ## -1 +0,0 ## | |
23820 | -* | |
23821 | \ No newline at end of property | |
23822 | Index: gcc/ada/s-utf_32.adb | |
23823 | =================================================================== | |
23824 | --- gcc/ada/s-utf_32.adb (.../tags/gcc_4_7_0_release) (wersja 187906) | |
23825 | +++ gcc/ada/s-utf_32.adb (.../branches/gcc-4_7-branch) (wersja 187906) | |
23826 | ||
23827 | Zmiany atrybutów dla: gcc/ada/s-utf_32.adb | |
23828 | ___________________________________________________________________ | |
23829 | Deleted: svn:executable | |
23830 | ## -1 +0,0 ## | |
23831 | -* | |
23832 | \ No newline at end of property | |
23833 | Index: gcc/ada/s-utf_32.ads | |
23834 | =================================================================== | |
23835 | --- gcc/ada/s-utf_32.ads (.../tags/gcc_4_7_0_release) (wersja 187906) | |
23836 | +++ gcc/ada/s-utf_32.ads (.../branches/gcc-4_7-branch) (wersja 187906) | |
23837 | ||
23838 | Zmiany atrybutów dla: gcc/ada/s-utf_32.ads | |
23839 | ___________________________________________________________________ | |
23840 | Deleted: svn:executable | |
23841 | ## -1 +0,0 ## | |
23842 | -* | |
23843 | \ No newline at end of property | |
23844 | Index: gcc/ada/aspects.adb | |
23845 | =================================================================== | |
23846 | --- gcc/ada/aspects.adb (.../tags/gcc_4_7_0_release) (wersja 187906) | |
23847 | +++ gcc/ada/aspects.adb (.../branches/gcc-4_7-branch) (wersja 187906) | |
23848 | ||
23849 | Zmiany atrybutów dla: gcc/ada/aspects.adb | |
23850 | ___________________________________________________________________ | |
23851 | Deleted: svn:executable | |
23852 | ## -1 +0,0 ## | |
23853 | -* | |
23854 | \ No newline at end of property | |
23855 | Index: gcc/ada/aspects.ads | |
23856 | =================================================================== | |
23857 | --- gcc/ada/aspects.ads (.../tags/gcc_4_7_0_release) (wersja 187906) | |
23858 | +++ gcc/ada/aspects.ads (.../branches/gcc-4_7-branch) (wersja 187906) | |
23859 | ||
23860 | Zmiany atrybutów dla: gcc/ada/aspects.ads | |
23861 | ___________________________________________________________________ | |
23862 | Deleted: svn:executable | |
23863 | ## -1 +0,0 ## | |
23864 | -* | |
23865 | \ No newline at end of property | |
23866 | Index: gcc/ada/a-izteio.ads | |
23867 | =================================================================== | |
23868 | --- gcc/ada/a-izteio.ads (.../tags/gcc_4_7_0_release) (wersja 187906) | |
23869 | +++ gcc/ada/a-izteio.ads (.../branches/gcc-4_7-branch) (wersja 187906) | |
23870 | ||
23871 | Zmiany atrybutów dla: gcc/ada/a-izteio.ads | |
23872 | ___________________________________________________________________ | |
23873 | Deleted: svn:executable | |
23874 | ## -1 +0,0 ## | |
23875 | -* | |
23876 | \ No newline at end of property | |
23877 | Index: gcc/ada/g-byorma.adb | |
23878 | =================================================================== | |
23879 | --- gcc/ada/g-byorma.adb (.../tags/gcc_4_7_0_release) (wersja 187906) | |
23880 | +++ gcc/ada/g-byorma.adb (.../branches/gcc-4_7-branch) (wersja 187906) | |
23881 | ||
23882 | Zmiany atrybutów dla: gcc/ada/g-byorma.adb | |
23883 | ___________________________________________________________________ | |
23884 | Deleted: svn:executable | |
23885 | ## -1 +0,0 ## | |
23886 | -* | |
23887 | \ No newline at end of property | |
23888 | Index: gcc/ada/g-byorma.ads | |
23889 | =================================================================== | |
23890 | --- gcc/ada/g-byorma.ads (.../tags/gcc_4_7_0_release) (wersja 187906) | |
23891 | +++ gcc/ada/g-byorma.ads (.../branches/gcc-4_7-branch) (wersja 187906) | |
23892 | ||
23893 | Zmiany atrybutów dla: gcc/ada/g-byorma.ads | |
23894 | ___________________________________________________________________ | |
23895 | Deleted: svn:executable | |
23896 | ## -1 +0,0 ## | |
23897 | -* | |
23898 | \ No newline at end of property | |
23899 | Index: gcc/ada/s-regexp.adb | |
23900 | =================================================================== | |
23901 | --- gcc/ada/s-regexp.adb (.../tags/gcc_4_7_0_release) (wersja 187906) | |
23902 | +++ gcc/ada/s-regexp.adb (.../branches/gcc-4_7-branch) (wersja 187906) | |
23903 | ||
23904 | Zmiany atrybutów dla: gcc/ada/s-regexp.adb | |
23905 | ___________________________________________________________________ | |
23906 | Deleted: svn:executable | |
23907 | ## -1 +0,0 ## | |
23908 | -* | |
23909 | \ No newline at end of property | |
23910 | Index: gcc/ada/s-regexp.ads | |
23911 | =================================================================== | |
23912 | --- gcc/ada/s-regexp.ads (.../tags/gcc_4_7_0_release) (wersja 187906) | |
23913 | +++ gcc/ada/s-regexp.ads (.../branches/gcc-4_7-branch) (wersja 187906) | |
23914 | ||
23915 | Zmiany atrybutów dla: gcc/ada/s-regexp.ads | |
23916 | ___________________________________________________________________ | |
23917 | Deleted: svn:executable | |
23918 | ## -1 +0,0 ## | |
23919 | -* | |
23920 | \ No newline at end of property | |
23921 | Index: gcc/ada/a-suenst.adb | |
23922 | =================================================================== | |
23923 | --- gcc/ada/a-suenst.adb (.../tags/gcc_4_7_0_release) (wersja 187906) | |
23924 | +++ gcc/ada/a-suenst.adb (.../branches/gcc-4_7-branch) (wersja 187906) | |
23925 | ||
23926 | Zmiany atrybutów dla: gcc/ada/a-suenst.adb | |
23927 | ___________________________________________________________________ | |
23928 | Deleted: svn:executable | |
23929 | ## -1 +0,0 ## | |
23930 | -* | |
23931 | \ No newline at end of property | |
23932 | Index: gcc/ada/a-suenst.ads | |
23933 | =================================================================== | |
23934 | --- gcc/ada/a-suenst.ads (.../tags/gcc_4_7_0_release) (wersja 187906) | |
23935 | +++ gcc/ada/a-suenst.ads (.../branches/gcc-4_7-branch) (wersja 187906) | |
23936 | ||
23937 | Zmiany atrybutów dla: gcc/ada/a-suenst.ads | |
23938 | ___________________________________________________________________ | |
23939 | Deleted: svn:executable | |
23940 | ## -1 +0,0 ## | |
23941 | -* | |
23942 | \ No newline at end of property | |
23943 | Index: gcc/ada/s-wchcon.adb | |
23944 | =================================================================== | |
23945 | --- gcc/ada/s-wchcon.adb (.../tags/gcc_4_7_0_release) (wersja 187906) | |
23946 | +++ gcc/ada/s-wchcon.adb (.../branches/gcc-4_7-branch) (wersja 187906) | |
23947 | ||
23948 | Zmiany atrybutów dla: gcc/ada/s-wchcon.adb | |
23949 | ___________________________________________________________________ | |
23950 | Deleted: svn:executable | |
23951 | ## -1 +0,0 ## | |
23952 | -* | |
23953 | \ No newline at end of property | |
23954 | Index: gcc/ada/g-zspche.adb | |
23955 | =================================================================== | |
23956 | --- gcc/ada/g-zspche.adb (.../tags/gcc_4_7_0_release) (wersja 187906) | |
23957 | +++ gcc/ada/g-zspche.adb (.../branches/gcc-4_7-branch) (wersja 187906) | |
23958 | ||
23959 | Zmiany atrybutów dla: gcc/ada/g-zspche.adb | |
23960 | ___________________________________________________________________ | |
23961 | Deleted: svn:executable | |
23962 | ## -1 +0,0 ## | |
23963 | -* | |
23964 | \ No newline at end of property | |
23965 | Index: gcc/ada/a-llctio.ads | |
23966 | =================================================================== | |
23967 | --- gcc/ada/a-llctio.ads (.../tags/gcc_4_7_0_release) (wersja 187906) | |
23968 | +++ gcc/ada/a-llctio.ads (.../branches/gcc-4_7-branch) (wersja 187906) | |
23969 | ||
23970 | Zmiany atrybutów dla: gcc/ada/a-llctio.ads | |
23971 | ___________________________________________________________________ | |
23972 | Deleted: svn:executable | |
23973 | ## -1 +0,0 ## | |
23974 | -* | |
23975 | \ No newline at end of property | |
23976 | Index: gcc/ada/g-zspche.ads | |
23977 | =================================================================== | |
23978 | --- gcc/ada/g-zspche.ads (.../tags/gcc_4_7_0_release) (wersja 187906) | |
23979 | +++ gcc/ada/g-zspche.ads (.../branches/gcc-4_7-branch) (wersja 187906) | |
23980 | ||
23981 | Zmiany atrybutów dla: gcc/ada/g-zspche.ads | |
23982 | ___________________________________________________________________ | |
23983 | Deleted: svn:executable | |
23984 | ## -1 +0,0 ## | |
23985 | -* | |
23986 | \ No newline at end of property | |
23987 | Index: gcc/ada/a-exetim-mingw.adb | |
23988 | =================================================================== | |
23989 | --- gcc/ada/a-exetim-mingw.adb (.../tags/gcc_4_7_0_release) (wersja 187906) | |
23990 | +++ gcc/ada/a-exetim-mingw.adb (.../branches/gcc-4_7-branch) (wersja 187906) | |
23991 | ||
23992 | Zmiany atrybutów dla: gcc/ada/a-exetim-mingw.adb | |
23993 | ___________________________________________________________________ | |
23994 | Deleted: svn:executable | |
23995 | ## -1 +0,0 ## | |
23996 | -* | |
23997 | \ No newline at end of property | |
23998 | Index: gcc/ada/a-exetim-mingw.ads | |
23999 | =================================================================== | |
24000 | --- gcc/ada/a-exetim-mingw.ads (.../tags/gcc_4_7_0_release) (wersja 187906) | |
24001 | +++ gcc/ada/a-exetim-mingw.ads (.../branches/gcc-4_7-branch) (wersja 187906) | |
24002 | ||
24003 | Zmiany atrybutów dla: gcc/ada/a-exetim-mingw.ads | |
24004 | ___________________________________________________________________ | |
24005 | Deleted: svn:executable | |
24006 | ## -1 +0,0 ## | |
24007 | -* | |
24008 | \ No newline at end of property | |
24009 | Index: gcc/ada/a-wichha.adb | |
24010 | =================================================================== | |
24011 | --- gcc/ada/a-wichha.adb (.../tags/gcc_4_7_0_release) (wersja 187906) | |
24012 | +++ gcc/ada/a-wichha.adb (.../branches/gcc-4_7-branch) (wersja 187906) | |
24013 | ||
24014 | Zmiany atrybutów dla: gcc/ada/a-wichha.adb | |
24015 | ___________________________________________________________________ | |
24016 | Deleted: svn:executable | |
24017 | ## -1 +0,0 ## | |
24018 | -* | |
24019 | \ No newline at end of property | |
24020 | Index: gcc/ada/a-wichha.ads | |
24021 | =================================================================== | |
24022 | --- gcc/ada/a-wichha.ads (.../tags/gcc_4_7_0_release) (wersja 187906) | |
24023 | +++ gcc/ada/a-wichha.ads (.../branches/gcc-4_7-branch) (wersja 187906) | |
24024 | ||
24025 | Zmiany atrybutów dla: gcc/ada/a-wichha.ads | |
24026 | ___________________________________________________________________ | |
24027 | Deleted: svn:executable | |
24028 | ## -1 +0,0 ## | |
24029 | -* | |
24030 | \ No newline at end of property | |
24031 | Index: gcc/ada/gcc-interface/utils.c | |
24032 | =================================================================== | |
24033 | --- gcc/ada/gcc-interface/utils.c (.../tags/gcc_4_7_0_release) (wersja 187906) | |
24034 | +++ gcc/ada/gcc-interface/utils.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
24035 | @@ -704,6 +704,19 @@ | |
24036 | case where there is a rep clause but all fields have errors and | |
24037 | no longer have a position. */ | |
24038 | TYPE_SIZE (record_type) = 0; | |
24039 | + | |
24040 | + /* Ensure we use the traditional GCC layout for bitfields when we need | |
24041 | + to pack the record type or have a representation clause. The other | |
24042 | + possible layout (Microsoft C compiler), if available, would prevent | |
24043 | + efficient packing in almost all cases. */ | |
24044 | +#ifdef TARGET_MS_BITFIELD_LAYOUT | |
24045 | + if (TARGET_MS_BITFIELD_LAYOUT && TYPE_PACKED (record_type)) | |
24046 | + decl_attributes (&record_type, | |
24047 | + tree_cons (get_identifier ("gcc_struct"), | |
24048 | + NULL_TREE, NULL_TREE), | |
24049 | + ATTR_FLAG_TYPE_IN_PLACE); | |
24050 | +#endif | |
24051 | + | |
24052 | layout_type (record_type); | |
24053 | } | |
24054 | ||
24055 | @@ -4896,8 +4909,12 @@ | |
24056 | if (!VEC_empty (tree, types_used_by_cur_var_decl)) | |
24057 | { | |
24058 | struct varpool_node *node; | |
24059 | + char *label; | |
24060 | + | |
24061 | + ASM_FORMAT_PRIVATE_NAME (label, first_global_object_name, 0); | |
24062 | dummy_global | |
24063 | - = build_decl (BUILTINS_LOCATION, VAR_DECL, NULL_TREE, void_type_node); | |
24064 | + = build_decl (BUILTINS_LOCATION, VAR_DECL, get_identifier (label), | |
24065 | + void_type_node); | |
24066 | TREE_STATIC (dummy_global) = 1; | |
24067 | TREE_ASM_WRITTEN (dummy_global) = 1; | |
24068 | node = varpool_node (dummy_global); | |
24069 | Index: gcc/ada/gcc-interface/Makefile.in | |
24070 | =================================================================== | |
24071 | --- gcc/ada/gcc-interface/Makefile.in (.../tags/gcc_4_7_0_release) (wersja 187906) | |
24072 | +++ gcc/ada/gcc-interface/Makefile.in (.../branches/gcc-4_7-branch) (wersja 187906) | |
24073 | @@ -1589,19 +1589,16 @@ | |
24074 | # the Cygwin port has always been a CygMing frankenhybrid and it is | |
24075 | # a long-term project to disentangle them. | |
24076 | ifeq ($(strip $(filter-out cygwin%,$(osys))),) | |
24077 | - WIN_SO_PREFIX=cyg | |
24078 | LIBGNAT_TARGET_PAIRS = \ | |
24079 | s-memory.adb<s-memory.adb \ | |
24080 | g-socthi.ads<g-socthi.ads \ | |
24081 | g-socthi.adb<g-socthi.adb | |
24082 | else | |
24083 | - WIN_SO_PREFIX=lib | |
24084 | LIBGNAT_TARGET_PAIRS = \ | |
24085 | s-memory.adb<s-memory-mingw.adb \ | |
24086 | g-socthi.ads<g-socthi-mingw.ads \ | |
24087 | g-socthi.adb<g-socthi-mingw.adb | |
24088 | endif | |
24089 | - WIN_SO_INSTALL_DIR = $(bindir) | |
24090 | LIBGNAT_TARGET_PAIRS += \ | |
24091 | a-dirval.adb<a-dirval-mingw.adb \ | |
24092 | a-excpol.adb<a-excpol-abort.adb \ | |
24093 | @@ -2452,14 +2449,11 @@ | |
24094 | # for shared libraries on some targets, e.g. on HP-UX where the x | |
24095 | # permission is required. | |
24096 | # Also install the .dSYM directories if they exist (these directories | |
24097 | -# contain the debug information for the shared libraries on darwin), | |
24098 | -# and the windows import libraries if they exist. | |
24099 | - libpfx=$(if $(WIN_SO_PREFIX),$(WIN_SO_PREFIX),lib); \ | |
24100 | - librtlobjdir=$(if $(WIN_SO_INSTALL_DIR),$(WIN_SO_INSTALL_DIR),$(ADA_RTL_OBJ_DIR)); \ | |
24101 | +# contain the debug information for the shared libraries on darwin) | |
24102 | for file in gnat gnarl; do \ | |
24103 | - if [ -f $(RTSDIR)/$${libpfx}$${file}$(hyphen)$(LIBRARY_VERSION)$(soext) ]; then \ | |
24104 | - $(INSTALL) $(RTSDIR)/$${libpfx}$${file}$(hyphen)$(LIBRARY_VERSION)$(soext) \ | |
24105 | - $(DESTDIR)$${librtlobjdir}; \ | |
24106 | + if [ -f $(RTSDIR)/lib$${file}$(hyphen)$(LIBRARY_VERSION)$(soext) ]; then \ | |
24107 | + $(INSTALL) $(RTSDIR)/lib$${file}$(hyphen)$(LIBRARY_VERSION)$(soext) \ | |
24108 | + $(DESTDIR)$(ADA_RTL_OBJ_DIR); \ | |
24109 | fi; \ | |
24110 | if [ -f $(RTSDIR)/lib$${file}$(soext) ]; then \ | |
24111 | $(LN_S) lib$${file}$(hyphen)$(LIBRARY_VERSION)$(soext) \ | |
24112 | @@ -2469,10 +2463,6 @@ | |
24113 | $(CP) -r $(RTSDIR)/lib$${file}$(hyphen)$(LIBRARY_VERSION)$(soext).dSYM \ | |
24114 | $(DESTDIR)$(ADA_RTL_OBJ_DIR); \ | |
24115 | fi; \ | |
24116 | - if [ -f $(RTSDIR)/lib$${file}$(hyphen)$(LIBRARY_VERSION)$(soext)$(arext) ]; then \ | |
24117 | - $(INSTALL_DATA) $(RTSDIR)/lib$${file}$(hyphen)$(LIBRARY_VERSION)$(soext)$(arext) \ | |
24118 | - $(DESTDIR)$(ADA_RTL_OBJ_DIR); \ | |
24119 | - fi; \ | |
24120 | done | |
24121 | # This copy must be done preserving the date on the original file. | |
24122 | for file in $(RTSDIR)/*.ad?; do \ | |
24123 | @@ -2684,18 +2674,16 @@ | |
24124 | cd $(RTSDIR); `echo "$(GCC_FOR_TARGET)" \ | |
24125 | | sed -e 's,\./xgcc,../../xgcc,' -e 's,-B\./,-B../../,'` -shared -shared-libgcc \ | |
24126 | $(PICFLAG_FOR_TARGET) \ | |
24127 | - -o $(WIN_SO_PREFIX)gnat$(hyphen)$(LIBRARY_VERSION)$(soext) \ | |
24128 | - -Wl,-out-implib,libgnat$(hyphen)$(LIBRARY_VERSION)$(soext)$(arext) \ | |
24129 | + -o libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) \ | |
24130 | $(GNATRTL_NONTASKING_OBJS) $(LIBGNAT_OBJS) \ | |
24131 | - $(SO_OPTS)$(WIN_SO_PREFIX)gnat$(hyphen)$(LIBRARY_VERSION)$(soext) $(MISCLIB) | |
24132 | + $(SO_OPTS)libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) $(MISCLIB) | |
24133 | cd $(RTSDIR); `echo "$(GCC_FOR_TARGET)" \ | |
24134 | | sed -e 's,\./xgcc,../../xgcc,' -e 's,-B\./,-B../../,'` -shared -shared-libgcc \ | |
24135 | $(PICFLAG_FOR_TARGET) \ | |
24136 | - -o $(WIN_SO_PREFIX)gnarl$(hyphen)$(LIBRARY_VERSION)$(soext) \ | |
24137 | - -Wl,-out-implib,libgnarl$(hyphen)$(LIBRARY_VERSION)$(soext)$(arext) \ | |
24138 | + -o libgnarl$(hyphen)$(LIBRARY_VERSION)$(soext) \ | |
24139 | $(GNATRTL_TASKING_OBJS) \ | |
24140 | - $(SO_OPTS)$(WIN_SO_PREFIX)gnarl$(hyphen)$(LIBRARY_VERSION)$(soext) \ | |
24141 | - $(THREADSLIB) -L. -lgnat$(hyphen)$(LIBRARY_VERSION) | |
24142 | + $(SO_OPTS)libgnarl$(hyphen)$(LIBRARY_VERSION)$(soext) \ | |
24143 | + $(THREADSLIB) -Wl,libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) | |
24144 | ||
24145 | gnatlib-shared-darwin: | |
24146 | $(MAKE) $(FLAGS_TO_PASS) \ | |
24147 | Index: gcc/ada/gcc-interface/decl.c | |
24148 | =================================================================== | |
24149 | --- gcc/ada/gcc-interface/decl.c (.../tags/gcc_4_7_0_release) (wersja 187906) | |
24150 | +++ gcc/ada/gcc-interface/decl.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
24151 | @@ -50,19 +50,23 @@ | |
24152 | #include "ada-tree.h" | |
24153 | #include "gigi.h" | |
24154 | ||
24155 | -/* Convention_Stdcall should be processed in a specific way on 32 bits | |
24156 | - Windows targets only. The macro below is a helper to avoid having to | |
24157 | - check for a Windows specific attribute throughout this unit. */ | |
24158 | +/* "stdcall" and "thiscall" conventions should be processed in a specific way | |
24159 | + on 32-bit x86/Windows only. The macros below are helpers to avoid having | |
24160 | + to check for a Windows specific attribute throughout this unit. */ | |
24161 | ||
24162 | #if TARGET_DLLIMPORT_DECL_ATTRIBUTES | |
24163 | #ifdef TARGET_64BIT | |
24164 | #define Has_Stdcall_Convention(E) \ | |
24165 | (!TARGET_64BIT && Convention (E) == Convention_Stdcall) | |
24166 | +#define Has_Thiscall_Convention(E) \ | |
24167 | + (!TARGET_64BIT && gnat_first_param_is_class (E)) | |
24168 | #else | |
24169 | #define Has_Stdcall_Convention(E) (Convention (E) == Convention_Stdcall) | |
24170 | +#define Has_Thiscall_Convention(E) (gnat_first_param_is_class (E)) | |
24171 | #endif | |
24172 | #else | |
24173 | #define Has_Stdcall_Convention(E) 0 | |
24174 | +#define Has_Thiscall_Convention(E) 0 | |
24175 | #endif | |
24176 | ||
24177 | /* Stack realignment is necessary for functions with foreign conventions when | |
24178 | @@ -140,6 +144,7 @@ | |
24179 | ||
24180 | static void relate_alias_sets (tree, tree, enum alias_set_op); | |
24181 | ||
24182 | +static bool gnat_first_param_is_class (Entity_Id) ATTRIBUTE_UNUSED; | |
24183 | static bool allocatable_size_p (tree, bool); | |
24184 | static void prepend_one_attribute_to (struct attrib **, | |
24185 | enum attr_type, tree, tree, Node_Id); | |
24186 | @@ -778,6 +783,14 @@ | |
24187 | gnu_size = max_size (TYPE_SIZE (gnu_type), true); | |
24188 | mutable_p = true; | |
24189 | } | |
24190 | + | |
24191 | + /* If we are at global level and the size isn't constant, call | |
24192 | + elaborate_expression_1 to make a variable for it rather than | |
24193 | + calculating it each time. */ | |
24194 | + if (global_bindings_p () && !TREE_CONSTANT (gnu_size)) | |
24195 | + gnu_size = elaborate_expression_1 (gnu_size, gnat_entity, | |
24196 | + get_identifier ("SIZE"), | |
24197 | + definition, false); | |
24198 | } | |
24199 | ||
24200 | /* If the size is zero byte, make it one byte since some linkers have | |
24201 | @@ -4402,6 +4415,11 @@ | |
24202 | (&attr_list, ATTR_MACHINE_ATTRIBUTE, | |
24203 | get_identifier ("stdcall"), NULL_TREE, | |
24204 | gnat_entity); | |
24205 | + else if (Has_Thiscall_Convention (gnat_entity)) | |
24206 | + prepend_one_attribute_to | |
24207 | + (&attr_list, ATTR_MACHINE_ATTRIBUTE, | |
24208 | + get_identifier ("thiscall"), NULL_TREE, | |
24209 | + gnat_entity); | |
24210 | ||
24211 | /* If we should request stack realignment for a foreign convention | |
24212 | subprogram, do so. Note that this applies to task entry points in | |
24213 | @@ -5282,6 +5300,10 @@ | |
24214 | prepend_one_attribute_to (&attr_list, ATTR_MACHINE_ATTRIBUTE, | |
24215 | get_identifier ("stdcall"), NULL_TREE, | |
24216 | gnat_entity); | |
24217 | + else if (Has_Thiscall_Convention (gnat_entity)) | |
24218 | + prepend_one_attribute_to (&attr_list, ATTR_MACHINE_ATTRIBUTE, | |
24219 | + get_identifier ("thiscall"), NULL_TREE, | |
24220 | + gnat_entity); | |
24221 | ||
24222 | if (No (Interface_Name (gnat_entity)) && gnu_ext_name == gnu_entity_name) | |
24223 | gnu_ext_name = NULL_TREE; | |
24224 | @@ -5330,6 +5352,63 @@ | |
24225 | } | |
24226 | } | |
24227 | ||
24228 | +/* Return whether the E_Subprogram_Type/E_Function/E_Procedure GNAT_ENTITY has | |
24229 | + a first parameter with a class or equivalent type. | |
24230 | + | |
24231 | + We use the predicate on 32-bit x86/Windows to find out whether we need to | |
24232 | + use the "thiscall" calling convention for GNAT_ENTITY. This convention is | |
24233 | + the one set for C++ methods (functions with METHOD_TYPE) by the back-end. | |
24234 | + Now in Ada primitive operations are regular subprograms (e.g. you can have | |
24235 | + common pointers to both) so we cannot compute an equivalent of METHOD_TYPE | |
24236 | + and so we set the calling convention in an uniform way. */ | |
24237 | + | |
24238 | +static bool | |
24239 | +gnat_first_param_is_class (Entity_Id gnat_entity) | |
24240 | +{ | |
24241 | + Entity_Id gnat_param = First_Formal_With_Extras (gnat_entity); | |
24242 | + Entity_Id gnat_type; | |
24243 | + Node_Id node; | |
24244 | + | |
24245 | + if (No (gnat_param)) | |
24246 | + return false; | |
24247 | + | |
24248 | + gnat_type = Underlying_Type (Etype (gnat_param)); | |
24249 | + | |
24250 | + /* This is the main case. Note that we must return the same value for | |
24251 | + regular tagged types and CW types since dispatching calls have a CW | |
24252 | + type on the caller side and a tagged type on the callee side. */ | |
24253 | + if (Is_Tagged_Type (gnat_type)) | |
24254 | + return True; | |
24255 | + | |
24256 | + /* C++ classes with no virtual functions can be imported as limited | |
24257 | + record types, but we need to return true for the constructors. */ | |
24258 | + if (Is_CPP_Class (gnat_type)) | |
24259 | + return True; | |
24260 | + | |
24261 | + /* The language-level "protected" calling convention doesn't distinguish | |
24262 | + tagged protected types from non-tagged protected types (e.g. you can | |
24263 | + have common pointers to both) so we must use a single low-level calling | |
24264 | + convention for it. Since tagged protected types can be derived from | |
24265 | + simple limited interfaces, we need to pick the calling convention of | |
24266 | + the latters. */ | |
24267 | + if (Is_Protected_Record_Type (gnat_type)) | |
24268 | + return True; | |
24269 | + | |
24270 | + /* If this is the special E_Subprogram_Type built for the declaration of | |
24271 | + an access to protected subprogram type, the first parameter will have | |
24272 | + type Address, but we must return true to be consistent with above. */ | |
24273 | + if (Is_Itype (gnat_entity) | |
24274 | + && Present (node = Associated_Node_For_Itype (gnat_entity)) | |
24275 | + && Nkind (node) == N_Full_Type_Declaration | |
24276 | + && Ekind (Defining_Identifier (node)) == E_Access_Subprogram_Type | |
24277 | + && Present (node = Original_Access_Type (Defining_Identifier (node))) | |
24278 | + && (Ekind (node) == E_Access_Protected_Subprogram_Type | |
24279 | + || Ekind (node) == E_Anonymous_Access_Protected_Subprogram_Type)) | |
24280 | + return True; | |
24281 | + | |
24282 | + return False; | |
24283 | +} | |
24284 | + | |
24285 | /* Finalize the processing of From_With_Type incomplete types. */ | |
24286 | ||
24287 | void | |
24288 | Index: gcc/ada/namet-sp.adb | |
24289 | =================================================================== | |
24290 | --- gcc/ada/namet-sp.adb (.../tags/gcc_4_7_0_release) (wersja 187906) | |
24291 | +++ gcc/ada/namet-sp.adb (.../branches/gcc-4_7-branch) (wersja 187906) | |
24292 | ||
24293 | Zmiany atrybutów dla: gcc/ada/namet-sp.adb | |
24294 | ___________________________________________________________________ | |
24295 | Deleted: svn:executable | |
24296 | ## -1 +0,0 ## | |
24297 | -* | |
24298 | \ No newline at end of property | |
24299 | Index: gcc/ada/namet-sp.ads | |
24300 | =================================================================== | |
24301 | --- gcc/ada/namet-sp.ads (.../tags/gcc_4_7_0_release) (wersja 187906) | |
24302 | +++ gcc/ada/namet-sp.ads (.../branches/gcc-4_7-branch) (wersja 187906) | |
24303 | ||
24304 | Zmiany atrybutów dla: gcc/ada/namet-sp.ads | |
24305 | ___________________________________________________________________ | |
24306 | Deleted: svn:executable | |
24307 | ## -1 +0,0 ## | |
24308 | -* | |
24309 | \ No newline at end of property | |
24310 | Index: gcc/ada/a-assert.adb | |
24311 | =================================================================== | |
24312 | --- gcc/ada/a-assert.adb (.../tags/gcc_4_7_0_release) (wersja 187906) | |
24313 | +++ gcc/ada/a-assert.adb (.../branches/gcc-4_7-branch) (wersja 187906) | |
24314 | ||
24315 | Zmiany atrybutów dla: gcc/ada/a-assert.adb | |
24316 | ___________________________________________________________________ | |
24317 | Deleted: svn:executable | |
24318 | ## -1 +0,0 ## | |
24319 | -* | |
24320 | \ No newline at end of property | |
24321 | Index: gcc/ada/a-assert.ads | |
24322 | =================================================================== | |
24323 | --- gcc/ada/a-assert.ads (.../tags/gcc_4_7_0_release) (wersja 187906) | |
24324 | +++ gcc/ada/a-assert.ads (.../branches/gcc-4_7-branch) (wersja 187906) | |
24325 | ||
24326 | Zmiany atrybutów dla: gcc/ada/a-assert.ads | |
24327 | ___________________________________________________________________ | |
24328 | Deleted: svn:executable | |
24329 | ## -1 +0,0 ## | |
24330 | -* | |
24331 | \ No newline at end of property | |
24332 | Index: gcc/ada/a-suewst.adb | |
24333 | =================================================================== | |
24334 | --- gcc/ada/a-suewst.adb (.../tags/gcc_4_7_0_release) (wersja 187906) | |
24335 | +++ gcc/ada/a-suewst.adb (.../branches/gcc-4_7-branch) (wersja 187906) | |
24336 | ||
24337 | Zmiany atrybutów dla: gcc/ada/a-suewst.adb | |
24338 | ___________________________________________________________________ | |
24339 | Deleted: svn:executable | |
24340 | ## -1 +0,0 ## | |
24341 | -* | |
24342 | \ No newline at end of property | |
24343 | Index: gcc/ada/a-suewst.ads | |
24344 | =================================================================== | |
24345 | --- gcc/ada/a-suewst.ads (.../tags/gcc_4_7_0_release) (wersja 187906) | |
24346 | +++ gcc/ada/a-suewst.ads (.../branches/gcc-4_7-branch) (wersja 187906) | |
24347 | ||
24348 | Zmiany atrybutów dla: gcc/ada/a-suewst.ads | |
24349 | ___________________________________________________________________ | |
24350 | Deleted: svn:executable | |
24351 | ## -1 +0,0 ## | |
24352 | -* | |
24353 | \ No newline at end of property | |
24354 | Index: gcc/ada/a-scteio.ads | |
24355 | =================================================================== | |
24356 | --- gcc/ada/a-scteio.ads (.../tags/gcc_4_7_0_release) (wersja 187906) | |
24357 | +++ gcc/ada/a-scteio.ads (.../branches/gcc-4_7-branch) (wersja 187906) | |
24358 | ||
24359 | Zmiany atrybutów dla: gcc/ada/a-scteio.ads | |
24360 | ___________________________________________________________________ | |
24361 | Deleted: svn:executable | |
24362 | ## -1 +0,0 ## | |
24363 | -* | |
24364 | \ No newline at end of property | |
24365 | Index: gcc/ada/exp_ch3.adb | |
24366 | =================================================================== | |
24367 | --- gcc/ada/exp_ch3.adb (.../tags/gcc_4_7_0_release) (wersja 187906) | |
24368 | +++ gcc/ada/exp_ch3.adb (.../branches/gcc-4_7-branch) (wersja 187906) | |
24369 | @@ -1883,9 +1883,10 @@ | |
24370 | ||
24371 | procedure Build_Offset_To_Top_Function (Iface_Comp : Entity_Id); | |
24372 | -- Generate: | |
24373 | - -- function Fxx (O : in Rec_Typ) return Storage_Offset is | |
24374 | + -- function Fxx (O : Address) return Storage_Offset is | |
24375 | + -- type Acc is access all <Typ>; | |
24376 | -- begin | |
24377 | - -- return O.Iface_Comp'Position; | |
24378 | + -- return Acc!(O).Iface_Comp'Position; | |
24379 | -- end Fxx; | |
24380 | ||
24381 | ---------------------------------- | |
24382 | @@ -1896,6 +1897,7 @@ | |
24383 | Body_Node : Node_Id; | |
24384 | Func_Id : Entity_Id; | |
24385 | Spec_Node : Node_Id; | |
24386 | + Acc_Type : Entity_Id; | |
24387 | ||
24388 | begin | |
24389 | Func_Id := Make_Temporary (Loc, 'F'); | |
24390 | @@ -1912,7 +1914,7 @@ | |
24391 | Make_Defining_Identifier (Loc, Name_uO), | |
24392 | In_Present => True, | |
24393 | Parameter_Type => | |
24394 | - New_Reference_To (Rec_Type, Loc)))); | |
24395 | + New_Reference_To (RTE (RE_Address), Loc)))); | |
24396 | Set_Result_Definition (Spec_Node, | |
24397 | New_Reference_To (RTE (RE_Storage_Offset), Loc)); | |
24398 | ||
24399 | @@ -1924,7 +1926,19 @@ | |
24400 | ||
24401 | Body_Node := New_Node (N_Subprogram_Body, Loc); | |
24402 | Set_Specification (Body_Node, Spec_Node); | |
24403 | - Set_Declarations (Body_Node, New_List); | |
24404 | + | |
24405 | + Acc_Type := Make_Temporary (Loc, 'T'); | |
24406 | + Set_Declarations (Body_Node, New_List ( | |
24407 | + Make_Full_Type_Declaration (Loc, | |
24408 | + Defining_Identifier => Acc_Type, | |
24409 | + Type_Definition => | |
24410 | + Make_Access_To_Object_Definition (Loc, | |
24411 | + All_Present => True, | |
24412 | + Null_Exclusion_Present => False, | |
24413 | + Constant_Present => False, | |
24414 | + Subtype_Indication => | |
24415 | + New_Reference_To (Rec_Type, Loc))))); | |
24416 | + | |
24417 | Set_Handled_Statement_Sequence (Body_Node, | |
24418 | Make_Handled_Sequence_Of_Statements (Loc, | |
24419 | Statements => New_List ( | |
24420 | @@ -1933,7 +1947,9 @@ | |
24421 | Make_Attribute_Reference (Loc, | |
24422 | Prefix => | |
24423 | Make_Selected_Component (Loc, | |
24424 | - Prefix => Make_Identifier (Loc, Name_uO), | |
24425 | + Prefix => | |
24426 | + Unchecked_Convert_To (Acc_Type, | |
24427 | + Make_Identifier (Loc, Name_uO)), | |
24428 | Selector_Name => | |
24429 | New_Reference_To (Iface_Comp, Loc)), | |
24430 | Attribute_Name => Name_Position))))); | |
24431 | Index: gcc/ada/s-os_lib.adb | |
24432 | =================================================================== | |
24433 | --- gcc/ada/s-os_lib.adb (.../tags/gcc_4_7_0_release) (wersja 187906) | |
24434 | +++ gcc/ada/s-os_lib.adb (.../branches/gcc-4_7-branch) (wersja 187906) | |
24435 | ||
24436 | Zmiany atrybutów dla: gcc/ada/s-os_lib.adb | |
24437 | ___________________________________________________________________ | |
24438 | Deleted: svn:executable | |
24439 | ## -1 +0,0 ## | |
24440 | -* | |
24441 | \ No newline at end of property | |
24442 | Index: gcc/ada/s-os_lib.ads | |
24443 | =================================================================== | |
24444 | --- gcc/ada/s-os_lib.ads (.../tags/gcc_4_7_0_release) (wersja 187906) | |
24445 | +++ gcc/ada/s-os_lib.ads (.../branches/gcc-4_7-branch) (wersja 187906) | |
24446 | ||
24447 | Zmiany atrybutów dla: gcc/ada/s-os_lib.ads | |
24448 | ___________________________________________________________________ | |
24449 | Deleted: svn:executable | |
24450 | ## -1 +0,0 ## | |
24451 | -* | |
24452 | \ No newline at end of property | |
24453 | Index: gcc/ada/s-taprop-dummy.adb | |
24454 | =================================================================== | |
24455 | --- gcc/ada/s-taprop-dummy.adb (.../tags/gcc_4_7_0_release) (wersja 187906) | |
24456 | +++ gcc/ada/s-taprop-dummy.adb (.../branches/gcc-4_7-branch) (wersja 187906) | |
24457 | @@ -6,7 +6,7 @@ | |
24458 | -- -- | |
24459 | -- B o d y -- | |
24460 | -- -- | |
24461 | --- Copyright (C) 1992-2011, Free Software Foundation, Inc. -- | |
24462 | +-- Copyright (C) 1992-2012, Free Software Foundation, Inc. -- | |
24463 | -- -- | |
24464 | -- GNARL is free software; you can redistribute it and/or modify it under -- | |
24465 | -- terms of the GNU General Public License as published by the Free Soft- -- | |
24466 | @@ -46,6 +46,28 @@ | |
24467 | pragma Warnings (Off); | |
24468 | -- Turn off warnings since so many unreferenced parameters | |
24469 | ||
24470 | + -------------------- | |
24471 | + -- Local Packages -- | |
24472 | + -------------------- | |
24473 | + | |
24474 | + package Specific is | |
24475 | + | |
24476 | + procedure Set (Self_Id : Task_Id); | |
24477 | + pragma Inline (Set); | |
24478 | + -- Set the self id for the current task | |
24479 | + | |
24480 | + end Specific; | |
24481 | + | |
24482 | + package body Specific is | |
24483 | + | |
24484 | + procedure Set (Self_Id : Task_Id) is | |
24485 | + begin | |
24486 | + null; | |
24487 | + end Set; | |
24488 | + | |
24489 | + end Specific; | |
24490 | + -- The body of this package is target specific | |
24491 | + | |
24492 | ---------------------------------- | |
24493 | -- ATCB allocation/deallocation -- | |
24494 | ---------------------------------- | |
24495 | Index: gcc/ada/a-zchara.ads | |
24496 | =================================================================== | |
24497 | --- gcc/ada/a-zchara.ads (.../tags/gcc_4_7_0_release) (wersja 187906) | |
24498 | +++ gcc/ada/a-zchara.ads (.../branches/gcc-4_7-branch) (wersja 187906) | |
24499 | ||
24500 | Zmiany atrybutów dla: gcc/ada/a-zchara.ads | |
24501 | ___________________________________________________________________ | |
24502 | Deleted: svn:executable | |
24503 | ## -1 +0,0 ## | |
24504 | -* | |
24505 | \ No newline at end of property | |
24506 | Index: gcc/ada/link.c | |
24507 | =================================================================== | |
24508 | --- gcc/ada/link.c (.../tags/gcc_4_7_0_release) (wersja 187906) | |
24509 | +++ gcc/ada/link.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
24510 | @@ -72,27 +72,12 @@ | |
24511 | /* shared_libgcc_default gives the system dependent link method that */ | |
24512 | /* be used by default for linking libgcc (shared or static) */ | |
24513 | ||
24514 | -/* using_gnu_linker is set to 1 when the GNU linker is used under this */ | |
24515 | -/* target. */ | |
24516 | - | |
24517 | /* separate_run_path_options is set to 1 when separate "rpath" arguments */ | |
24518 | /* must be passed to the linker for each directory in the rpath. */ | |
24519 | ||
24520 | /* default_libgcc_subdir is the subdirectory name (from the installation */ | |
24521 | /* root) where we may find a shared libgcc to use by default. */ | |
24522 | ||
24523 | -/* RESPONSE FILE & GNU LINKER */ | |
24524 | -/* -------------------------- */ | |
24525 | -/* objlist_file_supported and using_gnu_link used together tell gnatlink */ | |
24526 | -/* to generate a GNU style response file. Note that object_file_option */ | |
24527 | -/* must be set to "" in this case, since no option is required for a */ | |
24528 | -/* response file to be passed to GNU ld. With a GNU linker we use the */ | |
24529 | -/* linker script to implement the response file feature. Any file passed */ | |
24530 | -/* in the GNU ld command line with an unknown extension is supposed to be */ | |
24531 | -/* a linker script. Each linker script augment the current configuration. */ | |
24532 | -/* The format of such response file is as follow : */ | |
24533 | -/* INPUT (obj1.p obj2.o ...) */ | |
24534 | - | |
24535 | #define SHARED 'H' | |
24536 | #define STATIC 'T' | |
24537 | ||
24538 | @@ -103,7 +88,6 @@ | |
24539 | unsigned char __gnat_objlist_file_supported = 1; | |
24540 | char __gnat_shared_libgnat_default = STATIC; | |
24541 | char __gnat_shared_libgcc_default = STATIC; | |
24542 | -unsigned char __gnat_using_gnu_linker = 0; | |
24543 | const char *__gnat_object_library_extension = ".a"; | |
24544 | unsigned char __gnat_separate_run_path_options = 0; | |
24545 | const char *__gnat_default_libgcc_subdir = "lib"; | |
24546 | @@ -115,7 +99,6 @@ | |
24547 | unsigned char __gnat_objlist_file_supported = 1; | |
24548 | char __gnat_shared_libgnat_default = STATIC; | |
24549 | char __gnat_shared_libgcc_default = STATIC; | |
24550 | -unsigned char __gnat_using_gnu_linker = 0; | |
24551 | const char *__gnat_object_library_extension = ".a"; | |
24552 | unsigned char __gnat_separate_run_path_options = 0; | |
24553 | ||
24554 | @@ -129,13 +112,12 @@ | |
24555 | #endif | |
24556 | ||
24557 | #elif defined (__WIN32) | |
24558 | -const char *__gnat_object_file_option = ""; | |
24559 | +const char *__gnat_object_file_option = "-Wl,@"; | |
24560 | const char *__gnat_run_path_option = ""; | |
24561 | int __gnat_link_max = 30000; | |
24562 | unsigned char __gnat_objlist_file_supported = 1; | |
24563 | char __gnat_shared_libgnat_default = STATIC; | |
24564 | char __gnat_shared_libgcc_default = STATIC; | |
24565 | -unsigned char __gnat_using_gnu_linker = 1; | |
24566 | const char *__gnat_object_library_extension = ".a"; | |
24567 | unsigned char __gnat_separate_run_path_options = 0; | |
24568 | const char *__gnat_default_libgcc_subdir = "lib"; | |
24569 | @@ -147,19 +129,17 @@ | |
24570 | unsigned char __gnat_objlist_file_supported = 1; | |
24571 | char __gnat_shared_libgnat_default = STATIC; | |
24572 | char __gnat_shared_libgcc_default = STATIC; | |
24573 | -unsigned char __gnat_using_gnu_linker = 0; | |
24574 | const char *__gnat_object_library_extension = ".a"; | |
24575 | unsigned char __gnat_separate_run_path_options = 0; | |
24576 | const char *__gnat_default_libgcc_subdir = "lib"; | |
24577 | ||
24578 | #elif defined (__FreeBSD__) | |
24579 | -const char *__gnat_object_file_option = ""; | |
24580 | +const char *__gnat_object_file_option = "-Wl,@"; | |
24581 | const char *__gnat_run_path_option = "-Wl,-rpath,"; | |
24582 | char __gnat_shared_libgnat_default = STATIC; | |
24583 | char __gnat_shared_libgcc_default = STATIC; | |
24584 | int __gnat_link_max = 8192; | |
24585 | unsigned char __gnat_objlist_file_supported = 1; | |
24586 | -unsigned char __gnat_using_gnu_linker = 1; | |
24587 | const char *__gnat_object_library_extension = ".a"; | |
24588 | unsigned char __gnat_separate_run_path_options = 0; | |
24589 | const char *__gnat_default_libgcc_subdir = "lib"; | |
24590 | @@ -171,19 +151,17 @@ | |
24591 | char __gnat_shared_libgcc_default = SHARED; | |
24592 | int __gnat_link_max = 262144; | |
24593 | unsigned char __gnat_objlist_file_supported = 1; | |
24594 | -unsigned char __gnat_using_gnu_linker = 0; | |
24595 | const char *__gnat_object_library_extension = ".a"; | |
24596 | unsigned char __gnat_separate_run_path_options = 1; | |
24597 | const char *__gnat_default_libgcc_subdir = "lib"; | |
24598 | ||
24599 | #elif defined (linux) || defined(__GLIBC__) | |
24600 | -const char *__gnat_object_file_option = ""; | |
24601 | +const char *__gnat_object_file_option = "-Wl,@"; | |
24602 | const char *__gnat_run_path_option = "-Wl,-rpath,"; | |
24603 | char __gnat_shared_libgnat_default = STATIC; | |
24604 | char __gnat_shared_libgcc_default = STATIC; | |
24605 | int __gnat_link_max = 8192; | |
24606 | unsigned char __gnat_objlist_file_supported = 1; | |
24607 | -unsigned char __gnat_using_gnu_linker = 1; | |
24608 | const char *__gnat_object_library_extension = ".a"; | |
24609 | unsigned char __gnat_separate_run_path_options = 0; | |
24610 | #if defined (__x86_64) | |
24611 | @@ -202,7 +180,6 @@ | |
24612 | char __gnat_shared_libgcc_default = STATIC; | |
24613 | int __gnat_link_max = 15000; | |
24614 | const unsigned char __gnat_objlist_file_supported = 1; | |
24615 | -unsigned char __gnat_using_gnu_linker = 0; | |
24616 | const char *__gnat_object_library_extension = ".a"; | |
24617 | unsigned char __gnat_separate_run_path_options = 0; | |
24618 | const char *__gnat_default_libgcc_subdir = "lib"; | |
24619 | @@ -211,13 +188,12 @@ | |
24620 | /* These are the settings for all systems that use gnu ld. GNU style response | |
24621 | file is supported, the shared library default is STATIC. */ | |
24622 | ||
24623 | -const char *__gnat_object_file_option = ""; | |
24624 | +const char *__gnat_object_file_option = "-Wl,@"; | |
24625 | const char *__gnat_run_path_option = ""; | |
24626 | char __gnat_shared_libgnat_default = STATIC; | |
24627 | char __gnat_shared_libgcc_default = STATIC; | |
24628 | int __gnat_link_max = 8192; | |
24629 | unsigned char __gnat_objlist_file_supported = 1; | |
24630 | -unsigned char __gnat_using_gnu_linker = 1; | |
24631 | const char *__gnat_object_library_extension = ".a"; | |
24632 | unsigned char __gnat_separate_run_path_options = 0; | |
24633 | const char *__gnat_default_libgcc_subdir = "lib"; | |
24634 | @@ -229,7 +205,6 @@ | |
24635 | char __gnat_shared_libgcc_default = STATIC; | |
24636 | int __gnat_link_max = 2147483647; | |
24637 | unsigned char __gnat_objlist_file_supported = 0; | |
24638 | -unsigned char __gnat_using_gnu_linker = 0; | |
24639 | const char *__gnat_object_library_extension = ".olb"; | |
24640 | unsigned char __gnat_separate_run_path_options = 0; | |
24641 | const char *__gnat_default_libgcc_subdir = "lib"; | |
24642 | @@ -241,7 +216,6 @@ | |
24643 | char __gnat_shared_libgcc_default = STATIC; | |
24644 | int __gnat_link_max = 2147483647; | |
24645 | unsigned char __gnat_objlist_file_supported = 0; | |
24646 | -unsigned char __gnat_using_gnu_linker = 0; | |
24647 | const char *__gnat_object_library_extension = ".a"; | |
24648 | unsigned char __gnat_separate_run_path_options = 0; | |
24649 | #if defined (__sparc_v9__) || defined (__sparcv9) | |
24650 | @@ -259,7 +233,6 @@ | |
24651 | char __gnat_shared_libgcc_default = STATIC; | |
24652 | int __gnat_link_max = 2147483647; | |
24653 | unsigned char __gnat_objlist_file_supported = 0; | |
24654 | -unsigned char __gnat_using_gnu_linker = 0; | |
24655 | const char *__gnat_object_library_extension = ".a"; | |
24656 | unsigned char __gnat_separate_run_path_options = 0; | |
24657 | const char *__gnat_default_libgcc_subdir = "lib"; | |
24658 | @@ -274,7 +247,6 @@ | |
24659 | char __gnat_shared_libgcc_default = STATIC; | |
24660 | int __gnat_link_max = 2147483647; | |
24661 | unsigned char __gnat_objlist_file_supported = 0; | |
24662 | -unsigned char __gnat_using_gnu_linker = 0; | |
24663 | const char *__gnat_object_library_extension = ".a"; | |
24664 | unsigned char __gnat_separate_run_path_options = 0; | |
24665 | const char *__gnat_default_libgcc_subdir = "lib"; | |
24666 | Index: gcc/fortran/trans-array.c | |
24667 | =================================================================== | |
24668 | --- gcc/fortran/trans-array.c (.../tags/gcc_4_7_0_release) (wersja 187906) | |
24669 | +++ gcc/fortran/trans-array.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
24670 | @@ -2401,6 +2401,11 @@ | |
24671 | bool skip_nested = false; | |
24672 | int n; | |
24673 | ||
24674 | + /* Don't evaluate the arguments for realloc_lhs_loop_for_fcn_call; otherwise, | |
24675 | + arguments could get evaluated multiple times. */ | |
24676 | + if (ss->is_alloc_lhs) | |
24677 | + return; | |
24678 | + | |
24679 | outer_loop = outermost_loop (loop); | |
24680 | ||
24681 | /* TODO: This can generate bad code if there are ordering dependencies, | |
24682 | Index: gcc/fortran/ChangeLog | |
24683 | =================================================================== | |
24684 | --- gcc/fortran/ChangeLog (.../tags/gcc_4_7_0_release) (wersja 187906) | |
24685 | +++ gcc/fortran/ChangeLog (.../branches/gcc-4_7-branch) (wersja 187906) | |
24686 | @@ -1,3 +1,63 @@ | |
24687 | +2012-05-23 Tobias Burnus <burnus@net-b.de> | |
24688 | + | |
24689 | + PR fortran/53389 | |
24690 | + * trans-array.c (gfc_add_loop_ss_code): Don't evaluate expression, if | |
24691 | + ss->is_alloc_lhs is set. | |
24692 | + | |
24693 | +2012-05-07 Tobias Burnus <burnus@net-b.de> | |
24694 | + | |
24695 | + Backport from mainline: | |
24696 | + 2012-05-07 Tobias Burnus <burnus@net-b.de> | |
24697 | + | |
24698 | + PR fortran/53255 | |
24699 | + * resolve.c (resolve_typebound_static): Fix handling | |
24700 | + of overridden specific to generic operator. | |
24701 | + | |
24702 | +2012-05-05 Tobias Burnus <burnus@net-b.de> | |
24703 | + | |
24704 | + Backport from mainline: | |
24705 | + 2012-05-04 Tobias Burnus <burnus@net-b.de> | |
24706 | + | |
24707 | + PR fortran/53111 | |
24708 | + * resolve.c (resolve_fl_derived): Fix -std=f95 | |
24709 | + diagnostic for generic vs. DT names. | |
24710 | + | |
24711 | +2012-05-02 Tobias Burnus <burnus@net-b.de> | |
24712 | + | |
24713 | + Backport from mainline | |
24714 | + 2012-04-12 Tobias Burnus <burnus@net-b.de> | |
24715 | + | |
24716 | + PR fortran/52864 | |
24717 | + * expr.c (gfc_check_vardef_context): Fix assignment check for | |
24718 | + pointer components. | |
24719 | + | |
24720 | +2012-04-30 Thomas Koenig <tkoenig@gcc.gnu.org> | |
24721 | + | |
24722 | + PR fortran/53148 | |
24723 | + Backport from trunk | |
24724 | + * frontend-passes.c (create_var): If the statement has a label, | |
24725 | + put the label around the block. | |
24726 | + | |
24727 | +2012-04-07 Thomas Koenig <tkoenig@gcc.gnu.org> | |
24728 | + | |
24729 | + PR fortran/52893 | |
24730 | + Backport from trunk | |
24731 | + * frontend-passes.c: Keep track of wether we are in an implicit | |
24732 | + DO loop; do not do function elimination if we are. | |
24733 | + | |
24734 | +2012-04-07 Thomas Koenig <tkoenig@gcc.gnu.org> | |
24735 | + | |
24736 | + PR fortran/52668 | |
24737 | + Backport from trunk | |
24738 | + * module.c: Only mark symbols as use_only if they have been | |
24739 | + imported via an only list. | |
24740 | + | |
24741 | +2012-03-22 Tobias Burnus <burnus@net-b.de> | |
24742 | + | |
24743 | + PR fortran/52452 | |
24744 | + * resolve.c (resolve_intrinsic): Don't search for a | |
24745 | + function if we know that it is a subroutine. | |
24746 | + | |
24747 | 2012-03-22 Release Manager | |
24748 | ||
24749 | * GCC 4.7.0 released. | |
24750 | Index: gcc/fortran/expr.c | |
24751 | =================================================================== | |
24752 | --- gcc/fortran/expr.c (.../tags/gcc_4_7_0_release) (wersja 187906) | |
24753 | +++ gcc/fortran/expr.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
24754 | @@ -4654,7 +4654,11 @@ | |
24755 | if (ptr_component && ref->type == REF_COMPONENT) | |
24756 | check_intentin = false; | |
24757 | if (ref->type == REF_COMPONENT && ref->u.c.component->attr.pointer) | |
24758 | - ptr_component = true; | |
24759 | + { | |
24760 | + ptr_component = true; | |
24761 | + if (!pointer) | |
24762 | + check_intentin = false; | |
24763 | + } | |
24764 | } | |
24765 | if (check_intentin && sym->attr.intent == INTENT_IN) | |
24766 | { | |
24767 | Index: gcc/fortran/module.c | |
24768 | =================================================================== | |
24769 | --- gcc/fortran/module.c (.../tags/gcc_4_7_0_release) (wersja 187906) | |
24770 | +++ gcc/fortran/module.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
24771 | @@ -4388,9 +4388,24 @@ | |
24772 | ||
24773 | /* Mark as only or rename for later diagnosis for explicitly imported | |
24774 | but not used warnings; don't mark internal symbols such as __vtab, | |
24775 | - __def_init etc. */ | |
24776 | + __def_init etc. Only mark them if they have been explicitly loaded. */ | |
24777 | + | |
24778 | if (only_flag && sym->name[0] != '_' && sym->name[1] != '_') | |
24779 | - sym->attr.use_only = 1; | |
24780 | + { | |
24781 | + gfc_use_rename *u; | |
24782 | + | |
24783 | + /* Search the use/rename list for the variable; if the variable is | |
24784 | + found, mark it. */ | |
24785 | + for (u = gfc_rename_list; u; u = u->next) | |
24786 | + { | |
24787 | + if (strcmp (u->use_name, sym->name) == 0) | |
24788 | + { | |
24789 | + sym->attr.use_only = 1; | |
24790 | + break; | |
24791 | + } | |
24792 | + } | |
24793 | + } | |
24794 | + | |
24795 | if (p->u.rsym.renamed) | |
24796 | sym->attr.use_rename = 1; | |
24797 | ||
24798 | Index: gcc/fortran/frontend-passes.c | |
24799 | =================================================================== | |
24800 | --- gcc/fortran/frontend-passes.c (.../tags/gcc_4_7_0_release) (wersja 187906) | |
24801 | +++ gcc/fortran/frontend-passes.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
24802 | @@ -70,6 +70,10 @@ | |
24803 | ||
24804 | static bool in_omp_workshare; | |
24805 | ||
24806 | +/* Keep track of iterators for array constructors. */ | |
24807 | + | |
24808 | +static int iterator_level; | |
24809 | + | |
24810 | /* Entry point - run all passes for a namespace. So far, only an | |
24811 | optimization pass is run. */ | |
24812 | ||
24813 | @@ -179,6 +183,12 @@ | |
24814 | if (forall_level > 0) | |
24815 | return 0; | |
24816 | ||
24817 | + /* Function elimination inside an iterator could lead to functions | |
24818 | + which depend on iterator variables being moved outside. */ | |
24819 | + | |
24820 | + if (iterator_level > 0) | |
24821 | + return 0; | |
24822 | + | |
24823 | /* If we don't know the shape at compile time, we create an allocatable | |
24824 | temporary variable to hold the intermediate result, but only if | |
24825 | allocation on assignment is active. */ | |
24826 | @@ -260,6 +270,16 @@ | |
24827 | inserted_block->ext.block.assoc = NULL; | |
24828 | ||
24829 | ns->code = *current_code; | |
24830 | + | |
24831 | + /* If the statement has a label, make sure it is transferred to | |
24832 | + the newly created block. */ | |
24833 | + | |
24834 | + if ((*current_code)->here) | |
24835 | + { | |
24836 | + inserted_block->here = (*current_code)->here; | |
24837 | + (*current_code)->here = NULL; | |
24838 | + } | |
24839 | + | |
24840 | inserted_block->next = (*current_code)->next; | |
24841 | changed_statement = &(inserted_block->ext.block.ns->code); | |
24842 | (*current_code)->next = NULL; | |
24843 | @@ -581,6 +601,7 @@ | |
24844 | ||
24845 | current_ns = ns; | |
24846 | forall_level = 0; | |
24847 | + iterator_level = 0; | |
24848 | in_omp_workshare = false; | |
24849 | ||
24850 | gfc_code_walker (&ns->code, convert_do_while, dummy_expr_callback, NULL); | |
24851 | @@ -1140,9 +1161,13 @@ | |
24852 | for (c = gfc_constructor_first ((*e)->value.constructor); c; | |
24853 | c = gfc_constructor_next (c)) | |
24854 | { | |
24855 | - WALK_SUBEXPR (c->expr); | |
24856 | - if (c->iterator != NULL) | |
24857 | + if (c->iterator == NULL) | |
24858 | + WALK_SUBEXPR (c->expr); | |
24859 | + else | |
24860 | { | |
24861 | + iterator_level ++; | |
24862 | + WALK_SUBEXPR (c->expr); | |
24863 | + iterator_level --; | |
24864 | WALK_SUBEXPR (c->iterator->var); | |
24865 | WALK_SUBEXPR (c->iterator->start); | |
24866 | WALK_SUBEXPR (c->iterator->end); | |
24867 | Index: gcc/fortran/resolve.c | |
24868 | =================================================================== | |
24869 | --- gcc/fortran/resolve.c (.../tags/gcc_4_7_0_release) (wersja 187906) | |
24870 | +++ gcc/fortran/resolve.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
24871 | @@ -1496,7 +1496,7 @@ | |
24872 | ||
24873 | if (sym->intmod_sym_id) | |
24874 | isym = gfc_intrinsic_function_by_id ((gfc_isym_id) sym->intmod_sym_id); | |
24875 | - else | |
24876 | + else if (!sym->attr.subroutine) | |
24877 | isym = gfc_find_function (sym->name); | |
24878 | ||
24879 | if (isym) | |
24880 | @@ -5624,12 +5624,11 @@ | |
24881 | e->value.compcall.actual = NULL; | |
24882 | ||
24883 | /* If we find a deferred typebound procedure, check for derived types | |
24884 | - that an over-riding typebound procedure has not been missed. */ | |
24885 | - if (e->value.compcall.tbp->deferred | |
24886 | - && e->value.compcall.name | |
24887 | - && !e->value.compcall.tbp->non_overridable | |
24888 | - && e->value.compcall.base_object | |
24889 | - && e->value.compcall.base_object->ts.type == BT_DERIVED) | |
24890 | + that an overriding typebound procedure has not been missed. */ | |
24891 | + if (e->value.compcall.name | |
24892 | + && !e->value.compcall.tbp->non_overridable | |
24893 | + && e->value.compcall.base_object | |
24894 | + && e->value.compcall.base_object->ts.type == BT_DERIVED) | |
24895 | { | |
24896 | gfc_symtree *st; | |
24897 | gfc_symbol *derived; | |
24898 | @@ -11991,6 +11990,8 @@ | |
24899 | if (!sym->attr.is_class) | |
24900 | gfc_find_symbol (sym->name, sym->ns, 0, &gen_dt); | |
24901 | if (gen_dt && gen_dt->generic && gen_dt->generic->next | |
24902 | + && (!gen_dt->generic->sym->attr.use_assoc | |
24903 | + || gen_dt->generic->sym->module != gen_dt->generic->next->sym->module) | |
24904 | && gfc_notify_std (GFC_STD_F2003, "Fortran 2003: Generic name '%s' of " | |
24905 | "function '%s' at %L being the same name as derived " | |
24906 | "type at %L", sym->name, | |
24907 | Index: gcc/configure.ac | |
24908 | =================================================================== | |
24909 | --- gcc/configure.ac (.../tags/gcc_4_7_0_release) (wersja 187906) | |
24910 | +++ gcc/configure.ac (.../branches/gcc-4_7-branch) (wersja 187906) | |
24911 | @@ -213,9 +213,6 @@ | |
24912 | [Define to enable the use of a default linker.]) | |
24913 | fi | |
24914 | ||
24915 | -gnu_ld=`if test x"$gnu_ld_flag" = x"yes"; then echo 1; else echo 0; fi` | |
24916 | -AC_DEFINE_UNQUOTED(HAVE_GNU_LD, $gnu_ld, [Define if using GNU ld.]) | |
24917 | - | |
24918 | AC_MSG_CHECKING([whether a default linker was specified]) | |
24919 | if test x"${DEFAULT_LINKER+set}" = x"set"; then | |
24920 | if test x"$gnu_ld_flag" = x"no"; then | |
24921 | @@ -256,9 +253,6 @@ | |
24922 | [Define to enable the use of a default assembler.]) | |
24923 | fi | |
24924 | ||
24925 | -gnu_as=`if test x"$gas_flag" = x"yes"; then echo 1; else echo 0; fi` | |
24926 | -AC_DEFINE_UNQUOTED(HAVE_GNU_AS, $gnu_as, [Define if using GNU as.]) | |
24927 | - | |
24928 | AC_MSG_CHECKING([whether a default assembler was specified]) | |
24929 | if test x"${DEFAULT_ASSEMBLER+set}" = x"set"; then | |
24930 | if test x"$gas_flag" = x"no"; then | |
24931 | @@ -1336,6 +1330,12 @@ | |
24932 | efficiently supported by the host hardware.]) | |
24933 | fi | |
24934 | ||
24935 | +gnu_ld_bool=`if test x"$gnu_ld" = x"yes"; then echo 1; else echo 0; fi` | |
24936 | +AC_DEFINE_UNQUOTED(HAVE_GNU_LD, $gnu_ld_bool, [Define to 1 if using GNU ld.]) | |
24937 | + | |
24938 | +gnu_as_bool=`if test x"$gas" = x"yes"; then echo 1; else echo 0; fi` | |
24939 | +AC_DEFINE_UNQUOTED(HAVE_GNU_AS, $gnu_as_bool, [Define to 1 if using GNU as.]) | |
24940 | + | |
24941 | count=a | |
24942 | for f in $host_xm_file; do | |
24943 | count=${count}x | |
24944 | @@ -4430,7 +4430,15 @@ | |
24945 | fi | |
24946 | ||
24947 | case "$target:$tm_file" in | |
24948 | - powerpc64*-*-linux* | powerpc*-*-linux*rs6000/biarch64.h*) | |
24949 | + powerpc64-*-freebsd* | powerpc64*-*-linux* | powerpc*-*-linux*rs6000/biarch64.h*) | |
24950 | + case "$target" in | |
24951 | + *-*-linux*) | |
24952 | + emul_name="-melf64ppc" | |
24953 | + ;; | |
24954 | + *-*-freebsd*) | |
24955 | + emul_name="-melf64ppc_fbsd" | |
24956 | + ;; | |
24957 | + esac | |
24958 | AC_CACHE_CHECK(linker support for omitting dot symbols, | |
24959 | gcc_cv_ld_no_dot_syms, | |
24960 | [gcc_cv_ld_no_dot_syms=no | |
24961 | @@ -4457,7 +4465,7 @@ | |
24962 | EOF | |
24963 | if $gcc_cv_as -a64 -o conftest1.o conftest1.s > /dev/null 2>&1 \ | |
24964 | && $gcc_cv_as -a64 -o conftest2.o conftest2.s > /dev/null 2>&1 \ | |
24965 | - && $gcc_cv_ld -melf64ppc -o conftest conftest1.o conftest2.o > /dev/null 2>&1; then | |
24966 | + && $gcc_cv_ld $emul_name -o conftest conftest1.o conftest2.o > /dev/null 2>&1; then | |
24967 | gcc_cv_ld_no_dot_syms=yes | |
24968 | fi | |
24969 | rm -f conftest conftest1.o conftest2.o conftest1.s conftest2.s | |
24970 | @@ -4487,7 +4495,7 @@ | |
24971 | ld 9,ie0@got@tprel@l(9) | |
24972 | EOF | |
24973 | if $gcc_cv_as -a64 -o conftest.o conftest.s > /dev/null 2>&1 \ | |
24974 | - && $gcc_cv_ld -melf64ppc --no-toc-sort -o conftest conftest.o > /dev/null 2>&1; then | |
24975 | + && $gcc_cv_ld $emul_name --no-toc-sort -o conftest conftest.o > /dev/null 2>&1; then | |
24976 | gcc_cv_ld_large_toc=yes | |
24977 | fi | |
24978 | rm -f conftest conftest.o conftest.s | |
24979 | Index: gcc/BASE-VER | |
24980 | =================================================================== | |
24981 | --- gcc/BASE-VER (.../tags/gcc_4_7_0_release) (wersja 187906) | |
24982 | +++ gcc/BASE-VER (.../branches/gcc-4_7-branch) (wersja 187906) | |
24983 | @@ -1 +1 @@ | |
24984 | -4.7.0 | |
24985 | +4.7.1 | |
24986 | Index: gcc/function.c | |
24987 | =================================================================== | |
24988 | --- gcc/function.c (.../tags/gcc_4_7_0_release) (wersja 187906) | |
24989 | +++ gcc/function.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
24990 | @@ -5287,6 +5287,10 @@ | |
24991 | if (CALL_P (insn)) | |
24992 | return !SIBLING_CALL_P (insn); | |
24993 | ||
24994 | + /* We need a frame to get the unique CFA expected by the unwinder. */ | |
24995 | + if (cfun->can_throw_non_call_exceptions && can_throw_internal (insn)) | |
24996 | + return true; | |
24997 | + | |
24998 | CLEAR_HARD_REG_SET (hardregs); | |
24999 | for (df_rec = DF_INSN_DEFS (insn); *df_rec; df_rec++) | |
25000 | { | |
25001 | Index: gcc/gcc-ar.c | |
25002 | =================================================================== | |
25003 | --- gcc/gcc-ar.c (.../tags/gcc_4_7_0_release) (wersja 187906) | |
25004 | +++ gcc/gcc-ar.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
25005 | @@ -1,5 +1,5 @@ | |
25006 | /* Wrapper for ar/ranlib/nm to pass the LTO plugin. | |
25007 | - Copyright (C) 2011 Free Software Foundation, Inc. | |
25008 | + Copyright (C) 2011, 2012 Free Software Foundation, Inc. | |
25009 | Contributed by Andi Kleen. | |
25010 | ||
25011 | This file is part of GCC. | |
25012 | @@ -52,11 +52,16 @@ | |
25013 | /* XXX implement more magic from gcc.c? */ | |
25014 | nprefix = getenv ("GCC_EXEC_PREFIX"); | |
25015 | if (!nprefix) | |
25016 | + nprefix = av[0]; | |
25017 | + else | |
25018 | + nprefix = concat (nprefix, "gcc-" PERSONALITY, NULL); | |
25019 | + | |
25020 | + nprefix = make_relative_prefix (nprefix, | |
25021 | + standard_bin_prefix, | |
25022 | + standard_libexec_prefix); | |
25023 | + if (nprefix == NULL) | |
25024 | nprefix = standard_libexec_prefix; | |
25025 | ||
25026 | - nprefix = make_relative_prefix (av[0], | |
25027 | - standard_bin_prefix, | |
25028 | - nprefix); | |
25029 | plugin = concat (nprefix, | |
25030 | dir_separator, | |
25031 | DEFAULT_TARGET_MACHINE, | |
25032 | @@ -65,7 +70,7 @@ | |
25033 | dir_separator, | |
25034 | LTOPLUGINSONAME, | |
25035 | NULL); | |
25036 | - if (access (plugin, X_OK)) | |
25037 | + if (access (plugin, R_OK)) | |
25038 | { | |
25039 | fprintf (stderr, "%s: Cannot find plugin %s\n", av[0], plugin); | |
25040 | exit (1); | |
25041 | Index: gcc/tree-vectorizer.h | |
25042 | =================================================================== | |
25043 | --- gcc/tree-vectorizer.h (.../tags/gcc_4_7_0_release) (wersja 187906) | |
25044 | +++ gcc/tree-vectorizer.h (.../branches/gcc-4_7-branch) (wersja 187906) | |
25045 | @@ -476,6 +476,13 @@ | |
25046 | tree dr_step; | |
25047 | tree dr_aligned_to; | |
25048 | ||
25049 | + /* For loop PHI nodes, the evolution part of it. This makes sure | |
25050 | + this information is still available in vect_update_ivs_after_vectorizer | |
25051 | + where we may not be able to re-analyze the PHI nodes evolution as | |
25052 | + peeling for the prologue loop can make it unanalyzable. The evolution | |
25053 | + part is still correct though. */ | |
25054 | + tree loop_phi_evolution_part; | |
25055 | + | |
25056 | /* Used for various bookkeeping purposes, generally holding a pointer to | |
25057 | some other stmt S that is in some way "related" to this stmt. | |
25058 | Current use of this field is: | |
25059 | @@ -572,6 +579,7 @@ | |
25060 | #define STMT_VINFO_GROUP_SAME_DR_STMT(S) (S)->same_dr_stmt | |
25061 | #define STMT_VINFO_GROUP_READ_WRITE_DEPENDENCE(S) (S)->read_write_dep | |
25062 | #define STMT_VINFO_STRIDED_ACCESS(S) ((S)->first_element != NULL && (S)->data_ref_info) | |
25063 | +#define STMT_VINFO_LOOP_PHI_EVOLUTION_PART(S) (S)->loop_phi_evolution_part | |
25064 | ||
25065 | #define GROUP_FIRST_ELEMENT(S) (S)->first_element | |
25066 | #define GROUP_NEXT_ELEMENT(S) (S)->next_element | |
25067 | Index: gcc/tree-if-conv.c | |
25068 | =================================================================== | |
25069 | --- gcc/tree-if-conv.c (.../tags/gcc_4_7_0_release) (wersja 187906) | |
25070 | +++ gcc/tree-if-conv.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
25071 | @@ -1543,11 +1543,19 @@ | |
25072 | gimple_stmt_iterator gsi; | |
25073 | basic_block bb = ifc_bbs[i]; | |
25074 | tree cond = bb_predicate (bb); | |
25075 | + bool swap; | |
25076 | gimple stmt; | |
25077 | ||
25078 | if (is_true_predicate (cond)) | |
25079 | continue; | |
25080 | ||
25081 | + swap = false; | |
25082 | + if (TREE_CODE (cond) == TRUTH_NOT_EXPR) | |
25083 | + { | |
25084 | + swap = true; | |
25085 | + cond = TREE_OPERAND (cond, 0); | |
25086 | + } | |
25087 | + | |
25088 | for (gsi = gsi_start_bb (bb); !gsi_end_p (gsi); gsi_next (&gsi)) | |
25089 | if ((stmt = gsi_stmt (gsi)) | |
25090 | && gimple_assign_single_p (stmt) | |
25091 | @@ -1559,6 +1567,15 @@ | |
25092 | ||
25093 | lhs = ifc_temp_var (type, unshare_expr (lhs), &gsi); | |
25094 | rhs = ifc_temp_var (type, unshare_expr (rhs), &gsi); | |
25095 | + if (swap) | |
25096 | + { | |
25097 | + tree tem = lhs; | |
25098 | + lhs = rhs; | |
25099 | + rhs = tem; | |
25100 | + } | |
25101 | + cond = force_gimple_operand_gsi_1 (&gsi, unshare_expr (cond), | |
25102 | + is_gimple_condexpr, NULL_TREE, | |
25103 | + true, GSI_SAME_STMT); | |
25104 | rhs = build3 (COND_EXPR, type, unshare_expr (cond), rhs, lhs); | |
25105 | gimple_assign_set_rhs1 (stmt, ifc_temp_var (type, rhs, &gsi)); | |
25106 | update_stmt (stmt); | |
25107 | Index: gcc/tree-vect-loop.c | |
25108 | =================================================================== | |
25109 | --- gcc/tree-vect-loop.c (.../tags/gcc_4_7_0_release) (wersja 187906) | |
25110 | +++ gcc/tree-vect-loop.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
25111 | @@ -565,11 +565,15 @@ | |
25112 | /* Analyze the evolution function. */ | |
25113 | access_fn = analyze_scalar_evolution (loop, def); | |
25114 | if (access_fn) | |
25115 | - STRIP_NOPS (access_fn); | |
25116 | - if (access_fn && vect_print_dump_info (REPORT_DETAILS)) | |
25117 | { | |
25118 | - fprintf (vect_dump, "Access function of PHI: "); | |
25119 | - print_generic_expr (vect_dump, access_fn, TDF_SLIM); | |
25120 | + STRIP_NOPS (access_fn); | |
25121 | + if (vect_print_dump_info (REPORT_DETAILS)) | |
25122 | + { | |
25123 | + fprintf (vect_dump, "Access function of PHI: "); | |
25124 | + print_generic_expr (vect_dump, access_fn, TDF_SLIM); | |
25125 | + } | |
25126 | + STMT_VINFO_LOOP_PHI_EVOLUTION_PART (stmt_vinfo) | |
25127 | + = evolution_part_in_loop_num (access_fn, loop->num); | |
25128 | } | |
25129 | ||
25130 | if (!access_fn | |
25131 | @@ -579,6 +583,8 @@ | |
25132 | continue; | |
25133 | } | |
25134 | ||
25135 | + gcc_assert (STMT_VINFO_LOOP_PHI_EVOLUTION_PART (stmt_vinfo) != NULL_TREE); | |
25136 | + | |
25137 | if (vect_print_dump_info (REPORT_DETAILS)) | |
25138 | fprintf (vect_dump, "Detected induction."); | |
25139 | STMT_VINFO_DEF_TYPE (stmt_vinfo) = vect_induction_def; | |
25140 | @@ -1320,7 +1326,9 @@ | |
25141 | return false; | |
25142 | ||
25143 | op_def_stmt = SSA_NAME_DEF_STMT (phi_op); | |
25144 | - if (!op_def_stmt || !vinfo_for_stmt (op_def_stmt)) | |
25145 | + if (!op_def_stmt | |
25146 | + || !flow_bb_inside_loop_p (loop, gimple_bb (op_def_stmt)) | |
25147 | + || !vinfo_for_stmt (op_def_stmt)) | |
25148 | return false; | |
25149 | ||
25150 | if (STMT_VINFO_RELEVANT (vinfo_for_stmt (op_def_stmt)) | |
25151 | @@ -5042,12 +5050,46 @@ | |
25152 | tree vec_def; | |
25153 | ||
25154 | gcc_assert (ncopies >= 1); | |
25155 | - /* FORNOW. This restriction should be relaxed. */ | |
25156 | - if (nested_in_vect_loop_p (loop, phi) && ncopies > 1) | |
25157 | + /* FORNOW. These restrictions should be relaxed. */ | |
25158 | + if (nested_in_vect_loop_p (loop, phi)) | |
25159 | { | |
25160 | - if (vect_print_dump_info (REPORT_DETAILS)) | |
25161 | - fprintf (vect_dump, "multiple types in nested loop."); | |
25162 | - return false; | |
25163 | + imm_use_iterator imm_iter; | |
25164 | + use_operand_p use_p; | |
25165 | + gimple exit_phi; | |
25166 | + edge latch_e; | |
25167 | + tree loop_arg; | |
25168 | + | |
25169 | + if (ncopies > 1) | |
25170 | + { | |
25171 | + if (vect_print_dump_info (REPORT_DETAILS)) | |
25172 | + fprintf (vect_dump, "multiple types in nested loop."); | |
25173 | + return false; | |
25174 | + } | |
25175 | + | |
25176 | + exit_phi = NULL; | |
25177 | + latch_e = loop_latch_edge (loop->inner); | |
25178 | + loop_arg = PHI_ARG_DEF_FROM_EDGE (phi, latch_e); | |
25179 | + FOR_EACH_IMM_USE_FAST (use_p, imm_iter, loop_arg) | |
25180 | + { | |
25181 | + if (!flow_bb_inside_loop_p (loop->inner, | |
25182 | + gimple_bb (USE_STMT (use_p)))) | |
25183 | + { | |
25184 | + exit_phi = USE_STMT (use_p); | |
25185 | + break; | |
25186 | + } | |
25187 | + } | |
25188 | + if (exit_phi) | |
25189 | + { | |
25190 | + stmt_vec_info exit_phi_vinfo = vinfo_for_stmt (exit_phi); | |
25191 | + if (!(STMT_VINFO_RELEVANT_P (exit_phi_vinfo) | |
25192 | + && !STMT_VINFO_LIVE_P (exit_phi_vinfo))) | |
25193 | + { | |
25194 | + if (vect_print_dump_info (REPORT_DETAILS)) | |
25195 | + fprintf (vect_dump, "inner-loop induction only used outside " | |
25196 | + "of the outer vectorized loop."); | |
25197 | + return false; | |
25198 | + } | |
25199 | + } | |
25200 | } | |
25201 | ||
25202 | if (!STMT_VINFO_RELEVANT_P (stmt_info)) | |
25203 | Index: gcc/tree-data-ref.c | |
25204 | =================================================================== | |
25205 | --- gcc/tree-data-ref.c (.../tags/gcc_4_7_0_release) (wersja 187906) | |
25206 | +++ gcc/tree-data-ref.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
25207 | @@ -856,7 +856,7 @@ | |
25208 | dr_analyze_indices (struct data_reference *dr, loop_p nest, loop_p loop) | |
25209 | { | |
25210 | VEC (tree, heap) *access_fns = NULL; | |
25211 | - tree ref, *aref, op; | |
25212 | + tree ref, op; | |
25213 | tree base, off, access_fn; | |
25214 | basic_block before_loop; | |
25215 | ||
25216 | @@ -869,7 +869,7 @@ | |
25217 | return; | |
25218 | } | |
25219 | ||
25220 | - ref = unshare_expr (DR_REF (dr)); | |
25221 | + ref = DR_REF (dr); | |
25222 | before_loop = block_before_loop (nest); | |
25223 | ||
25224 | /* REALPART_EXPR and IMAGPART_EXPR can be handled like accesses | |
25225 | @@ -887,61 +887,84 @@ | |
25226 | } | |
25227 | ||
25228 | /* Analyze access functions of dimensions we know to be independent. */ | |
25229 | - aref = &ref; | |
25230 | - while (handled_component_p (*aref)) | |
25231 | + while (handled_component_p (ref)) | |
25232 | { | |
25233 | - if (TREE_CODE (*aref) == ARRAY_REF) | |
25234 | + if (TREE_CODE (ref) == ARRAY_REF) | |
25235 | { | |
25236 | - op = TREE_OPERAND (*aref, 1); | |
25237 | + op = TREE_OPERAND (ref, 1); | |
25238 | access_fn = analyze_scalar_evolution (loop, op); | |
25239 | access_fn = instantiate_scev (before_loop, loop, access_fn); | |
25240 | VEC_safe_push (tree, heap, access_fns, access_fn); | |
25241 | - /* For ARRAY_REFs the base is the reference with the index replaced | |
25242 | - by zero if we can not strip it as the outermost component. */ | |
25243 | - if (*aref == ref) | |
25244 | - { | |
25245 | - *aref = TREE_OPERAND (*aref, 0); | |
25246 | - continue; | |
25247 | - } | |
25248 | - else | |
25249 | - TREE_OPERAND (*aref, 1) = build_int_cst (TREE_TYPE (op), 0); | |
25250 | } | |
25251 | + else if (TREE_CODE (ref) == COMPONENT_REF | |
25252 | + && TREE_CODE (TREE_TYPE (TREE_OPERAND (ref, 0))) == RECORD_TYPE) | |
25253 | + { | |
25254 | + /* For COMPONENT_REFs of records (but not unions!) use the | |
25255 | + FIELD_DECL offset as constant access function so we can | |
25256 | + disambiguate a[i].f1 and a[i].f2. */ | |
25257 | + tree off = component_ref_field_offset (ref); | |
25258 | + off = size_binop (PLUS_EXPR, | |
25259 | + size_binop (MULT_EXPR, | |
25260 | + fold_convert (bitsizetype, off), | |
25261 | + bitsize_int (BITS_PER_UNIT)), | |
25262 | + DECL_FIELD_BIT_OFFSET (TREE_OPERAND (ref, 1))); | |
25263 | + VEC_safe_push (tree, heap, access_fns, off); | |
25264 | + } | |
25265 | + else | |
25266 | + /* If we have an unhandled component we could not translate | |
25267 | + to an access function stop analyzing. We have determined | |
25268 | + our base object in this case. */ | |
25269 | + break; | |
25270 | ||
25271 | - aref = &TREE_OPERAND (*aref, 0); | |
25272 | + ref = TREE_OPERAND (ref, 0); | |
25273 | } | |
25274 | ||
25275 | /* If the address operand of a MEM_REF base has an evolution in the | |
25276 | analyzed nest, add it as an additional independent access-function. */ | |
25277 | - if (TREE_CODE (*aref) == MEM_REF) | |
25278 | + if (TREE_CODE (ref) == MEM_REF) | |
25279 | { | |
25280 | - op = TREE_OPERAND (*aref, 0); | |
25281 | + op = TREE_OPERAND (ref, 0); | |
25282 | access_fn = analyze_scalar_evolution (loop, op); | |
25283 | access_fn = instantiate_scev (before_loop, loop, access_fn); | |
25284 | if (TREE_CODE (access_fn) == POLYNOMIAL_CHREC) | |
25285 | { | |
25286 | tree orig_type; | |
25287 | + tree memoff = TREE_OPERAND (ref, 1); | |
25288 | base = initial_condition (access_fn); | |
25289 | orig_type = TREE_TYPE (base); | |
25290 | STRIP_USELESS_TYPE_CONVERSION (base); | |
25291 | split_constant_offset (base, &base, &off); | |
25292 | /* Fold the MEM_REF offset into the evolutions initial | |
25293 | value to make more bases comparable. */ | |
25294 | - if (!integer_zerop (TREE_OPERAND (*aref, 1))) | |
25295 | + if (!integer_zerop (memoff)) | |
25296 | { | |
25297 | off = size_binop (PLUS_EXPR, off, | |
25298 | - fold_convert (ssizetype, | |
25299 | - TREE_OPERAND (*aref, 1))); | |
25300 | - TREE_OPERAND (*aref, 1) | |
25301 | - = build_int_cst (TREE_TYPE (TREE_OPERAND (*aref, 1)), 0); | |
25302 | + fold_convert (ssizetype, memoff)); | |
25303 | + memoff = build_int_cst (TREE_TYPE (memoff), 0); | |
25304 | } | |
25305 | access_fn = chrec_replace_initial_condition | |
25306 | (access_fn, fold_convert (orig_type, off)); | |
25307 | - *aref = fold_build2_loc (EXPR_LOCATION (*aref), | |
25308 | - MEM_REF, TREE_TYPE (*aref), | |
25309 | - base, TREE_OPERAND (*aref, 1)); | |
25310 | + /* ??? This is still not a suitable base object for | |
25311 | + dr_may_alias_p - the base object needs to be an | |
25312 | + access that covers the object as whole. With | |
25313 | + an evolution in the pointer this cannot be | |
25314 | + guaranteed. | |
25315 | + As a band-aid, mark the access so we can special-case | |
25316 | + it in dr_may_alias_p. */ | |
25317 | + ref = fold_build2_loc (EXPR_LOCATION (ref), | |
25318 | + MEM_REF, TREE_TYPE (ref), | |
25319 | + base, memoff); | |
25320 | + DR_UNCONSTRAINED_BASE (dr) = true; | |
25321 | VEC_safe_push (tree, heap, access_fns, access_fn); | |
25322 | } | |
25323 | } | |
25324 | + else if (DECL_P (ref)) | |
25325 | + { | |
25326 | + /* Canonicalize DR_BASE_OBJECT to MEM_REF form. */ | |
25327 | + ref = build2 (MEM_REF, TREE_TYPE (ref), | |
25328 | + build_fold_addr_expr (ref), | |
25329 | + build_int_cst (reference_alias_ptr_type (ref), 0)); | |
25330 | + } | |
25331 | ||
25332 | DR_BASE_OBJECT (dr) = ref; | |
25333 | DR_ACCESS_FNS (dr) = access_fns; | |
25334 | @@ -1345,6 +1368,27 @@ | |
25335 | return false; | |
25336 | } | |
25337 | ||
25338 | + /* If we had an evolution in a MEM_REF BASE_OBJECT we do not know | |
25339 | + the size of the base-object. So we cannot do any offset/overlap | |
25340 | + based analysis but have to rely on points-to information only. */ | |
25341 | + if (TREE_CODE (addr_a) == MEM_REF | |
25342 | + && DR_UNCONSTRAINED_BASE (a)) | |
25343 | + { | |
25344 | + if (TREE_CODE (addr_b) == MEM_REF | |
25345 | + && DR_UNCONSTRAINED_BASE (b)) | |
25346 | + return ptr_derefs_may_alias_p (TREE_OPERAND (addr_a, 0), | |
25347 | + TREE_OPERAND (addr_b, 0)); | |
25348 | + else | |
25349 | + return ptr_derefs_may_alias_p (TREE_OPERAND (addr_a, 0), | |
25350 | + build_fold_addr_expr (addr_b)); | |
25351 | + } | |
25352 | + else if (TREE_CODE (addr_b) == MEM_REF | |
25353 | + && DR_UNCONSTRAINED_BASE (b)) | |
25354 | + return ptr_derefs_may_alias_p (build_fold_addr_expr (addr_a), | |
25355 | + TREE_OPERAND (addr_b, 0)); | |
25356 | + | |
25357 | + /* Otherwise DR_BASE_OBJECT is an access that covers the whole object | |
25358 | + that is being subsetted in the loop nest. */ | |
25359 | if (DR_IS_WRITE (a) && DR_IS_WRITE (b)) | |
25360 | return refs_output_dependent_p (addr_a, addr_b); | |
25361 | else if (DR_IS_READ (a) && DR_IS_WRITE (b)) | |
25362 | @@ -1709,6 +1753,76 @@ | |
25363 | return double_int_to_tree (unsigned_type_node, nit); | |
25364 | } | |
25365 | ||
25366 | +/* Determine whether the CHREC is always positive/negative. If the expression | |
25367 | + cannot be statically analyzed, return false, otherwise set the answer into | |
25368 | + VALUE. */ | |
25369 | + | |
25370 | +static bool | |
25371 | +chrec_is_positive (tree chrec, bool *value) | |
25372 | +{ | |
25373 | + bool value0, value1, value2; | |
25374 | + tree end_value, nb_iter; | |
25375 | + | |
25376 | + switch (TREE_CODE (chrec)) | |
25377 | + { | |
25378 | + case POLYNOMIAL_CHREC: | |
25379 | + if (!chrec_is_positive (CHREC_LEFT (chrec), &value0) | |
25380 | + || !chrec_is_positive (CHREC_RIGHT (chrec), &value1)) | |
25381 | + return false; | |
25382 | + | |
25383 | + /* FIXME -- overflows. */ | |
25384 | + if (value0 == value1) | |
25385 | + { | |
25386 | + *value = value0; | |
25387 | + return true; | |
25388 | + } | |
25389 | + | |
25390 | + /* Otherwise the chrec is under the form: "{-197, +, 2}_1", | |
25391 | + and the proof consists in showing that the sign never | |
25392 | + changes during the execution of the loop, from 0 to | |
25393 | + loop->nb_iterations. */ | |
25394 | + if (!evolution_function_is_affine_p (chrec)) | |
25395 | + return false; | |
25396 | + | |
25397 | + nb_iter = number_of_latch_executions (get_chrec_loop (chrec)); | |
25398 | + if (chrec_contains_undetermined (nb_iter)) | |
25399 | + return false; | |
25400 | + | |
25401 | +#if 0 | |
25402 | + /* TODO -- If the test is after the exit, we may decrease the number of | |
25403 | + iterations by one. */ | |
25404 | + if (after_exit) | |
25405 | + nb_iter = chrec_fold_minus (type, nb_iter, build_int_cst (type, 1)); | |
25406 | +#endif | |
25407 | + | |
25408 | + end_value = chrec_apply (CHREC_VARIABLE (chrec), chrec, nb_iter); | |
25409 | + | |
25410 | + if (!chrec_is_positive (end_value, &value2)) | |
25411 | + return false; | |
25412 | + | |
25413 | + *value = value0; | |
25414 | + return value0 == value1; | |
25415 | + | |
25416 | + case INTEGER_CST: | |
25417 | + switch (tree_int_cst_sgn (chrec)) | |
25418 | + { | |
25419 | + case -1: | |
25420 | + *value = false; | |
25421 | + break; | |
25422 | + case 1: | |
25423 | + *value = true; | |
25424 | + break; | |
25425 | + default: | |
25426 | + return false; | |
25427 | + } | |
25428 | + return true; | |
25429 | + | |
25430 | + default: | |
25431 | + return false; | |
25432 | + } | |
25433 | +} | |
25434 | + | |
25435 | + | |
25436 | /* Analyze a SIV (Single Index Variable) subscript where CHREC_A is a | |
25437 | constant, and CHREC_B is an affine function. *OVERLAPS_A and | |
25438 | *OVERLAPS_B are initialized to the functions that describe the | |
25439 | @@ -1732,6 +1846,15 @@ | |
25440 | chrec_b = chrec_convert (type, chrec_b, NULL); | |
25441 | difference = chrec_fold_minus (type, initial_condition (chrec_b), chrec_a); | |
25442 | ||
25443 | + /* Special case overlap in the first iteration. */ | |
25444 | + if (integer_zerop (difference)) | |
25445 | + { | |
25446 | + *overlaps_a = conflict_fn (1, affine_fn_cst (integer_zero_node)); | |
25447 | + *overlaps_b = conflict_fn (1, affine_fn_cst (integer_zero_node)); | |
25448 | + *last_conflicts = integer_one_node; | |
25449 | + return; | |
25450 | + } | |
25451 | + | |
25452 | if (!chrec_is_positive (initial_condition (difference), &value0)) | |
25453 | { | |
25454 | if (dump_file && (dump_flags & TDF_DETAILS)) | |
25455 | @@ -3416,6 +3539,7 @@ | |
25456 | unsigned int i; | |
25457 | tree last_conflicts; | |
25458 | struct subscript *subscript; | |
25459 | + tree res = NULL_TREE; | |
25460 | ||
25461 | for (i = 0; VEC_iterate (subscript_p, DDR_SUBSCRIPTS (ddr), i, subscript); | |
25462 | i++) | |
25463 | @@ -3427,40 +3551,43 @@ | |
25464 | &overlaps_a, &overlaps_b, | |
25465 | &last_conflicts, loop_nest); | |
25466 | ||
25467 | + if (SUB_CONFLICTS_IN_A (subscript)) | |
25468 | + free_conflict_function (SUB_CONFLICTS_IN_A (subscript)); | |
25469 | + if (SUB_CONFLICTS_IN_B (subscript)) | |
25470 | + free_conflict_function (SUB_CONFLICTS_IN_B (subscript)); | |
25471 | + | |
25472 | + SUB_CONFLICTS_IN_A (subscript) = overlaps_a; | |
25473 | + SUB_CONFLICTS_IN_B (subscript) = overlaps_b; | |
25474 | + SUB_LAST_CONFLICT (subscript) = last_conflicts; | |
25475 | + | |
25476 | + /* If there is any undetermined conflict function we have to | |
25477 | + give a conservative answer in case we cannot prove that | |
25478 | + no dependence exists when analyzing another subscript. */ | |
25479 | if (CF_NOT_KNOWN_P (overlaps_a) | |
25480 | || CF_NOT_KNOWN_P (overlaps_b)) | |
25481 | { | |
25482 | - finalize_ddr_dependent (ddr, chrec_dont_know); | |
25483 | - dependence_stats.num_dependence_undetermined++; | |
25484 | - free_conflict_function (overlaps_a); | |
25485 | - free_conflict_function (overlaps_b); | |
25486 | - return false; | |
25487 | + res = chrec_dont_know; | |
25488 | + continue; | |
25489 | } | |
25490 | ||
25491 | + /* When there is a subscript with no dependence we can stop. */ | |
25492 | else if (CF_NO_DEPENDENCE_P (overlaps_a) | |
25493 | || CF_NO_DEPENDENCE_P (overlaps_b)) | |
25494 | { | |
25495 | - finalize_ddr_dependent (ddr, chrec_known); | |
25496 | - dependence_stats.num_dependence_independent++; | |
25497 | - free_conflict_function (overlaps_a); | |
25498 | - free_conflict_function (overlaps_b); | |
25499 | - return false; | |
25500 | + res = chrec_known; | |
25501 | + break; | |
25502 | } | |
25503 | + } | |
25504 | ||
25505 | - else | |
25506 | - { | |
25507 | - if (SUB_CONFLICTS_IN_A (subscript)) | |
25508 | - free_conflict_function (SUB_CONFLICTS_IN_A (subscript)); | |
25509 | - if (SUB_CONFLICTS_IN_B (subscript)) | |
25510 | - free_conflict_function (SUB_CONFLICTS_IN_B (subscript)); | |
25511 | + if (res == NULL_TREE) | |
25512 | + return true; | |
25513 | ||
25514 | - SUB_CONFLICTS_IN_A (subscript) = overlaps_a; | |
25515 | - SUB_CONFLICTS_IN_B (subscript) = overlaps_b; | |
25516 | - SUB_LAST_CONFLICT (subscript) = last_conflicts; | |
25517 | - } | |
25518 | - } | |
25519 | - | |
25520 | - return true; | |
25521 | + if (res == chrec_known) | |
25522 | + dependence_stats.num_dependence_independent++; | |
25523 | + else | |
25524 | + dependence_stats.num_dependence_undetermined++; | |
25525 | + finalize_ddr_dependent (ddr, res); | |
25526 | + return false; | |
25527 | } | |
25528 | ||
25529 | /* Computes the conflicting iterations in LOOP_NEST, and initialize DDR. */ | |
25530 | @@ -4049,11 +4176,10 @@ | |
25531 | if (dump_file && (dump_flags & TDF_DETAILS)) | |
25532 | { | |
25533 | fprintf (dump_file, "(compute_affine_dependence\n"); | |
25534 | - fprintf (dump_file, " (stmt_a = \n"); | |
25535 | - print_gimple_stmt (dump_file, DR_STMT (dra), 0, 0); | |
25536 | - fprintf (dump_file, ")\n (stmt_b = \n"); | |
25537 | - print_gimple_stmt (dump_file, DR_STMT (drb), 0, 0); | |
25538 | - fprintf (dump_file, ")\n"); | |
25539 | + fprintf (dump_file, " stmt_a: "); | |
25540 | + print_gimple_stmt (dump_file, DR_STMT (dra), 0, TDF_SLIM); | |
25541 | + fprintf (dump_file, " stmt_b: "); | |
25542 | + print_gimple_stmt (dump_file, DR_STMT (drb), 0, TDF_SLIM); | |
25543 | } | |
25544 | ||
25545 | /* Analyze only when the dependence relation is not yet known. */ | |
25546 | @@ -4129,7 +4255,14 @@ | |
25547 | } | |
25548 | ||
25549 | if (dump_file && (dump_flags & TDF_DETAILS)) | |
25550 | - fprintf (dump_file, ")\n"); | |
25551 | + { | |
25552 | + if (DDR_ARE_DEPENDENT (ddr) == chrec_known) | |
25553 | + fprintf (dump_file, ") -> no dependence\n"); | |
25554 | + else if (DDR_ARE_DEPENDENT (ddr) == chrec_dont_know) | |
25555 | + fprintf (dump_file, ") -> dependence analysis failed\n"); | |
25556 | + else | |
25557 | + fprintf (dump_file, ")\n"); | |
25558 | + } | |
25559 | } | |
25560 | ||
25561 | /* Compute in DEPENDENCE_RELATIONS the data dependence graph for all | |
25562 | @@ -5075,20 +5208,19 @@ | |
25563 | VEC (data_reference_p, heap) **datarefs) | |
25564 | { | |
25565 | struct graph *rdg = NULL; | |
25566 | - VEC (gimple, heap) *stmts = VEC_alloc (gimple, heap, 10); | |
25567 | ||
25568 | - compute_data_dependences_for_loop (loop, false, loop_nest, datarefs, | |
25569 | - dependence_relations); | |
25570 | - | |
25571 | - if (known_dependences_p (*dependence_relations)) | |
25572 | + if (compute_data_dependences_for_loop (loop, false, loop_nest, datarefs, | |
25573 | + dependence_relations) | |
25574 | + && known_dependences_p (*dependence_relations)) | |
25575 | { | |
25576 | + VEC (gimple, heap) *stmts = VEC_alloc (gimple, heap, 10); | |
25577 | stmts_from_loop (loop, &stmts); | |
25578 | rdg = build_empty_rdg (VEC_length (gimple, stmts)); | |
25579 | create_rdg_vertices (rdg, stmts); | |
25580 | create_rdg_edges (rdg, *dependence_relations); | |
25581 | + VEC_free (gimple, heap, stmts); | |
25582 | } | |
25583 | ||
25584 | - VEC_free (gimple, heap, stmts); | |
25585 | return rdg; | |
25586 | } | |
25587 | ||
25588 | Index: gcc/tree-data-ref.h | |
25589 | =================================================================== | |
25590 | --- gcc/tree-data-ref.h (.../tags/gcc_4_7_0_release) (wersja 187906) | |
25591 | +++ gcc/tree-data-ref.h (.../branches/gcc-4_7-branch) (wersja 187906) | |
25592 | @@ -60,16 +60,17 @@ | |
25593 | }; | |
25594 | ||
25595 | /* Describes the evolutions of indices of the memory reference. The indices | |
25596 | - are indices of the ARRAY_REFs and the operands of INDIRECT_REFs. | |
25597 | - For ARRAY_REFs, BASE_OBJECT is the reference with zeroed indices | |
25598 | - (note that this reference does not have to be valid, if zero does not | |
25599 | - belong to the range of the array; hence it is not recommended to use | |
25600 | - BASE_OBJECT in any code generation). For INDIRECT_REFs, the address is | |
25601 | - set to the loop-invariant part of the address of the object, except for | |
25602 | - the constant offset. For the examples above, | |
25603 | + are indices of the ARRAY_REFs, indexes in artificial dimensions | |
25604 | + added for member selection of records and the operands of MEM_REFs. | |
25605 | + BASE_OBJECT is the part of the reference that is loop-invariant | |
25606 | + (note that this reference does not have to cover the whole object | |
25607 | + being accessed, in which case UNCONSTRAINED_BASE is set; hence it is | |
25608 | + not recommended to use BASE_OBJECT in any code generation). | |
25609 | + For the examples above, | |
25610 | ||
25611 | - base_object: a[0].b[0][0] *(p + x + 4B * j_0) | |
25612 | + base_object: a *(p + x + 4B * j_0) | |
25613 | indices: {j_0, +, 1}_2 {16, +, 4}_2 | |
25614 | + 4 | |
25615 | {i_0, +, 1}_1 | |
25616 | {j_0, +, 1}_2 | |
25617 | */ | |
25618 | @@ -81,18 +82,17 @@ | |
25619 | ||
25620 | /* A list of chrecs. Access functions of the indices. */ | |
25621 | VEC(tree,heap) *access_fns; | |
25622 | + | |
25623 | + /* Whether BASE_OBJECT is an access representing the whole object | |
25624 | + or whether the access could not be constrained. */ | |
25625 | + bool unconstrained_base; | |
25626 | }; | |
25627 | ||
25628 | struct dr_alias | |
25629 | { | |
25630 | /* The alias information that should be used for new pointers to this | |
25631 | - location. SYMBOL_TAG is either a DECL or a SYMBOL_MEMORY_TAG. */ | |
25632 | + location. */ | |
25633 | struct ptr_info_def *ptr_info; | |
25634 | - | |
25635 | - /* The set of virtual operands corresponding to this memory reference, | |
25636 | - serving as a description of the alias information for the memory | |
25637 | - reference. This could be eliminated if we had alias oracle. */ | |
25638 | - bitmap vops; | |
25639 | }; | |
25640 | ||
25641 | /* An integer vector. A vector formally consists of an element of a vector | |
25642 | @@ -201,6 +201,7 @@ | |
25643 | #define DR_STMT(DR) (DR)->stmt | |
25644 | #define DR_REF(DR) (DR)->ref | |
25645 | #define DR_BASE_OBJECT(DR) (DR)->indices.base_object | |
25646 | +#define DR_UNCONSTRAINED_BASE(DR) (DR)->indices.unconstrained_base | |
25647 | #define DR_ACCESS_FNS(DR) (DR)->indices.access_fns | |
25648 | #define DR_ACCESS_FN(DR, I) VEC_index (tree, DR_ACCESS_FNS (DR), I) | |
25649 | #define DR_NUM_DIMENSIONS(DR) VEC_length (tree, DR_ACCESS_FNS (DR)) | |
25650 | Index: gcc/tree-vect-data-refs.c | |
25651 | =================================================================== | |
25652 | --- gcc/tree-vect-data-refs.c (.../tags/gcc_4_7_0_release) (wersja 187906) | |
25653 | +++ gcc/tree-vect-data-refs.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
25654 | @@ -1141,12 +1141,8 @@ | |
25655 | if (!known_alignment_for_access_p (dr)) | |
25656 | { | |
25657 | tree type = (TREE_TYPE (DR_REF (dr))); | |
25658 | - tree ba = DR_BASE_OBJECT (dr); | |
25659 | - bool is_packed = false; | |
25660 | + bool is_packed = contains_packed_reference (DR_REF (dr)); | |
25661 | ||
25662 | - if (ba) | |
25663 | - is_packed = contains_packed_reference (ba); | |
25664 | - | |
25665 | if (compare_tree_int (TYPE_SIZE (type), TYPE_ALIGN (type)) > 0) | |
25666 | is_packed = true; | |
25667 | ||
25668 | @@ -4672,13 +4668,8 @@ | |
25669 | return dr_explicit_realign_optimized; | |
25670 | } | |
25671 | if (!known_alignment_for_access_p (dr)) | |
25672 | - { | |
25673 | - tree ba = DR_BASE_OBJECT (dr); | |
25674 | + is_packed = contains_packed_reference (DR_REF (dr)); | |
25675 | ||
25676 | - if (ba) | |
25677 | - is_packed = contains_packed_reference (ba); | |
25678 | - } | |
25679 | - | |
25680 | if (targetm.vectorize. | |
25681 | support_vector_misalignment (mode, type, | |
25682 | DR_MISALIGNMENT (dr), is_packed)) | |
25683 | @@ -4691,13 +4682,8 @@ | |
25684 | tree type = (TREE_TYPE (DR_REF (dr))); | |
25685 | ||
25686 | if (!known_alignment_for_access_p (dr)) | |
25687 | - { | |
25688 | - tree ba = DR_BASE_OBJECT (dr); | |
25689 | + is_packed = contains_packed_reference (DR_REF (dr)); | |
25690 | ||
25691 | - if (ba) | |
25692 | - is_packed = contains_packed_reference (ba); | |
25693 | - } | |
25694 | - | |
25695 | if (targetm.vectorize. | |
25696 | support_vector_misalignment (mode, type, | |
25697 | DR_MISALIGNMENT (dr), is_packed)) | |
25698 | Index: gcc/trans-mem.c | |
25699 | =================================================================== | |
25700 | --- gcc/trans-mem.c (.../tags/gcc_4_7_0_release) (wersja 187906) | |
25701 | +++ gcc/trans-mem.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
25702 | @@ -4721,7 +4721,7 @@ | |
25703 | /* If this function makes no calls and has no irrevocable blocks, | |
25704 | then there's nothing to do. */ | |
25705 | /* ??? Remove non-aborting top-level transactions. */ | |
25706 | - if (!node->callees && !d->irrevocable_blocks_clone) | |
25707 | + if (!node->callees && !node->indirect_calls && !d->irrevocable_blocks_clone) | |
25708 | return; | |
25709 | ||
25710 | current_function_decl = d->clone->decl; | |
25711 | Index: gcc/c-typeck.c | |
25712 | =================================================================== | |
25713 | --- gcc/c-typeck.c (.../tags/gcc_4_7_0_release) (wersja 187906) | |
25714 | +++ gcc/c-typeck.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
25715 | @@ -4410,6 +4410,11 @@ | |
25716 | ret = fold_build3_loc (colon_loc, COND_EXPR, result_type, ifexp, op1, op2); | |
25717 | else | |
25718 | { | |
25719 | + if (int_operands) | |
25720 | + { | |
25721 | + op1 = remove_c_maybe_const_expr (op1); | |
25722 | + op2 = remove_c_maybe_const_expr (op2); | |
25723 | + } | |
25724 | ret = build3 (COND_EXPR, result_type, ifexp, op1, op2); | |
25725 | if (int_operands) | |
25726 | ret = note_integer_operands (ret); | |
25727 | @@ -7598,7 +7603,7 @@ | |
25728 | ||
25729 | FOR_EACH_CONSTRUCTOR_ELT (constructor_elements, ix, index, value) | |
25730 | { | |
25731 | - add_pending_init (index, value, NULL_TREE, false, | |
25732 | + add_pending_init (index, value, NULL_TREE, true, | |
25733 | braced_init_obstack); | |
25734 | } | |
25735 | constructor_elements = 0; | |
25736 | @@ -7691,7 +7696,7 @@ | |
25737 | } | |
25738 | ||
25739 | value = build_int_cst_wide (type, val[1], val[0]); | |
25740 | - add_pending_init (purpose, value, NULL_TREE, false, | |
25741 | + add_pending_init (purpose, value, NULL_TREE, true, | |
25742 | braced_init_obstack); | |
25743 | } | |
25744 | ||
25745 | @@ -9734,7 +9739,7 @@ | |
25746 | sc = convert (TREE_TYPE (type0), sc); | |
25747 | op1 = build_vector_from_val (type0, sc); | |
25748 | if (!maybe_const) | |
25749 | - op0 = c_wrap_maybe_const (op1, true); | |
25750 | + op1 = c_wrap_maybe_const (op1, true); | |
25751 | orig_type1 = type1 = TREE_TYPE (op1); | |
25752 | code1 = TREE_CODE (type1); | |
25753 | converted = 1; | |
25754 | Index: gcc/gimplify.c | |
25755 | =================================================================== | |
25756 | --- gcc/gimplify.c (.../tags/gcc_4_7_0_release) (wersja 187906) | |
25757 | +++ gcc/gimplify.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
25758 | @@ -1425,6 +1425,13 @@ | |
25759 | && !TYPE_SIZES_GIMPLIFIED (TREE_TYPE (decl))) | |
25760 | gimplify_type_sizes (TREE_TYPE (decl), seq_p); | |
25761 | ||
25762 | + /* ??? DECL_ORIGINAL_TYPE is streamed for LTO so it needs to be gimplified | |
25763 | + in case its size expressions contain problematic nodes like CALL_EXPR. */ | |
25764 | + if (TREE_CODE (decl) == TYPE_DECL | |
25765 | + && DECL_ORIGINAL_TYPE (decl) | |
25766 | + && !TYPE_SIZES_GIMPLIFIED (DECL_ORIGINAL_TYPE (decl))) | |
25767 | + gimplify_type_sizes (DECL_ORIGINAL_TYPE (decl), seq_p); | |
25768 | + | |
25769 | if (TREE_CODE (decl) == VAR_DECL && !DECL_EXTERNAL (decl)) | |
25770 | { | |
25771 | tree init = DECL_INITIAL (decl); | |
25772 | Index: gcc/tree-ssa-phiopt.c | |
25773 | =================================================================== | |
25774 | --- gcc/tree-ssa-phiopt.c (.../tags/gcc_4_7_0_release) (wersja 187906) | |
25775 | +++ gcc/tree-ssa-phiopt.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
25776 | @@ -1556,8 +1556,17 @@ | |
25777 | /* Compute and check data dependencies in both basic blocks. */ | |
25778 | then_ddrs = VEC_alloc (ddr_p, heap, 1); | |
25779 | else_ddrs = VEC_alloc (ddr_p, heap, 1); | |
25780 | - compute_all_dependences (then_datarefs, &then_ddrs, NULL, false); | |
25781 | - compute_all_dependences (else_datarefs, &else_ddrs, NULL, false); | |
25782 | + if (!compute_all_dependences (then_datarefs, &then_ddrs, NULL, false) | |
25783 | + || !compute_all_dependences (else_datarefs, &else_ddrs, NULL, false)) | |
25784 | + { | |
25785 | + free_dependence_relations (then_ddrs); | |
25786 | + free_dependence_relations (else_ddrs); | |
25787 | + free_data_refs (then_datarefs); | |
25788 | + free_data_refs (else_datarefs); | |
25789 | + VEC_free (gimple, heap, then_stores); | |
25790 | + VEC_free (gimple, heap, else_stores); | |
25791 | + return false; | |
25792 | + } | |
25793 | blocks[0] = then_bb; | |
25794 | blocks[1] = else_bb; | |
25795 | blocks[2] = join_bb; | |
25796 | Index: gcc/expmed.c | |
25797 | =================================================================== | |
25798 | --- gcc/expmed.c (.../tags/gcc_4_7_0_release) (wersja 187906) | |
25799 | +++ gcc/expmed.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
25800 | @@ -550,7 +550,10 @@ | |
25801 | { | |
25802 | /* If I is 0, use the low-order word in both field and target; | |
25803 | if I is 1, use the next to lowest word; and so on. */ | |
25804 | - unsigned int wordnum = (backwards ? nwords - i - 1 : i); | |
25805 | + unsigned int wordnum = (backwards | |
25806 | + ? GET_MODE_SIZE (fieldmode) / UNITS_PER_WORD | |
25807 | + - i - 1 | |
25808 | + : i); | |
25809 | unsigned int bit_offset = (backwards | |
25810 | ? MAX ((int) bitsize - ((int) i + 1) | |
25811 | * BITS_PER_WORD, | |
25812 | @@ -828,8 +831,7 @@ | |
25813 | /* Under the C++0x memory model, we must not touch bits outside the | |
25814 | bit region. Adjust the address to start at the beginning of the | |
25815 | bit region. */ | |
25816 | - if (MEM_P (str_rtx) | |
25817 | - && bitregion_start > 0) | |
25818 | + if (MEM_P (str_rtx) && bitregion_start > 0) | |
25819 | { | |
25820 | enum machine_mode bestmode; | |
25821 | enum machine_mode op_mode; | |
25822 | @@ -839,6 +841,8 @@ | |
25823 | if (op_mode == MAX_MACHINE_MODE) | |
25824 | op_mode = VOIDmode; | |
25825 | ||
25826 | + gcc_assert ((bitregion_start % BITS_PER_UNIT) == 0); | |
25827 | + | |
25828 | offset = bitregion_start / BITS_PER_UNIT; | |
25829 | bitnum -= bitregion_start; | |
25830 | bitregion_end -= bitregion_start; | |
25831 | Index: gcc/gimple-fold.c | |
25832 | =================================================================== | |
25833 | --- gcc/gimple-fold.c (.../tags/gcc_4_7_0_release) (wersja 187906) | |
25834 | +++ gcc/gimple-fold.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
25835 | @@ -671,13 +671,10 @@ | |
25836 | ||
25837 | if (TREE_CODE (arg) != SSA_NAME) | |
25838 | { | |
25839 | - if (TREE_CODE (arg) == COND_EXPR) | |
25840 | - return get_maxval_strlen (COND_EXPR_THEN (arg), length, visited, type) | |
25841 | - && get_maxval_strlen (COND_EXPR_ELSE (arg), length, visited, type); | |
25842 | /* We can end up with &(*iftmp_1)[0] here as well, so handle it. */ | |
25843 | - else if (TREE_CODE (arg) == ADDR_EXPR | |
25844 | - && TREE_CODE (TREE_OPERAND (arg, 0)) == ARRAY_REF | |
25845 | - && integer_zerop (TREE_OPERAND (TREE_OPERAND (arg, 0), 1))) | |
25846 | + if (TREE_CODE (arg) == ADDR_EXPR | |
25847 | + && TREE_CODE (TREE_OPERAND (arg, 0)) == ARRAY_REF | |
25848 | + && integer_zerop (TREE_OPERAND (TREE_OPERAND (arg, 0), 1))) | |
25849 | { | |
25850 | tree aop0 = TREE_OPERAND (TREE_OPERAND (arg, 0), 0); | |
25851 | if (TREE_CODE (aop0) == INDIRECT_REF | |
25852 | @@ -737,6 +734,13 @@ | |
25853 | tree rhs = gimple_assign_rhs1 (def_stmt); | |
25854 | return get_maxval_strlen (rhs, length, visited, type); | |
25855 | } | |
25856 | + else if (gimple_assign_rhs_code (def_stmt) == COND_EXPR) | |
25857 | + { | |
25858 | + tree op2 = gimple_assign_rhs2 (def_stmt); | |
25859 | + tree op3 = gimple_assign_rhs3 (def_stmt); | |
25860 | + return get_maxval_strlen (op2, length, visited, type) | |
25861 | + && get_maxval_strlen (op3, length, visited, type); | |
25862 | + } | |
25863 | return false; | |
25864 | ||
25865 | case GIMPLE_PHI: | |
25866 | @@ -3101,7 +3105,7 @@ | |
25867 | offset += token * size; | |
25868 | fn = fold_ctor_reference (TREE_TYPE (TREE_TYPE (v)), DECL_INITIAL (v), | |
25869 | offset, size); | |
25870 | - if (!fn) | |
25871 | + if (!fn || integer_zerop (fn)) | |
25872 | return NULL_TREE; | |
25873 | gcc_assert (TREE_CODE (fn) == ADDR_EXPR | |
25874 | || TREE_CODE (fn) == FDESC_EXPR); | |
25875 | Index: gcc/tree-ssa-pre.c | |
25876 | =================================================================== | |
25877 | --- gcc/tree-ssa-pre.c (.../tags/gcc_4_7_0_release) (wersja 187906) | |
25878 | +++ gcc/tree-ssa-pre.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
25879 | @@ -2618,19 +2618,6 @@ | |
25880 | sbitmap_free (changed_blocks); | |
25881 | } | |
25882 | ||
25883 | -/* Return true if we can value number the call in STMT. This is true | |
25884 | - if we have a pure or constant call to a real function. */ | |
25885 | - | |
25886 | -static bool | |
25887 | -can_value_number_call (gimple stmt) | |
25888 | -{ | |
25889 | - if (gimple_call_internal_p (stmt)) | |
25890 | - return false; | |
25891 | - if (gimple_call_flags (stmt) & (ECF_PURE | ECF_CONST)) | |
25892 | - return true; | |
25893 | - return false; | |
25894 | -} | |
25895 | - | |
25896 | /* Return true if OP is a tree which we can perform PRE on. | |
25897 | This may not match the operations we can value number, but in | |
25898 | a perfect world would. */ | |
25899 | @@ -3959,8 +3946,7 @@ | |
25900 | or control flow. | |
25901 | If this isn't a call or it is the last stmt in the | |
25902 | basic-block then the CFG represents things correctly. */ | |
25903 | - if (is_gimple_call (stmt) | |
25904 | - && !stmt_ends_bb_p (stmt)) | |
25905 | + if (is_gimple_call (stmt) && !stmt_ends_bb_p (stmt)) | |
25906 | { | |
25907 | /* Non-looping const functions always return normally. | |
25908 | Otherwise the call might not return or have side-effects | |
25909 | @@ -3982,8 +3968,7 @@ | |
25910 | bitmap_value_insert_into_set (AVAIL_OUT (block), e); | |
25911 | } | |
25912 | ||
25913 | - if (gimple_has_volatile_ops (stmt) | |
25914 | - || stmt_could_throw_p (stmt)) | |
25915 | + if (gimple_has_side_effects (stmt) || stmt_could_throw_p (stmt)) | |
25916 | continue; | |
25917 | ||
25918 | switch (gimple_code (stmt)) | |
25919 | @@ -4001,7 +3986,8 @@ | |
25920 | pre_expr result = NULL; | |
25921 | VEC(vn_reference_op_s, heap) *ops = NULL; | |
25922 | ||
25923 | - if (!can_value_number_call (stmt)) | |
25924 | + /* We can value number only calls to real functions. */ | |
25925 | + if (gimple_call_internal_p (stmt)) | |
25926 | continue; | |
25927 | ||
25928 | copy_reference_ops_from_call (stmt, &ops); | |
25929 | @@ -4337,6 +4323,7 @@ | |
25930 | has the same value number as its rhs. If so, the store is | |
25931 | dead. */ | |
25932 | else if (gimple_assign_single_p (stmt) | |
25933 | + && !gimple_has_volatile_ops (stmt) | |
25934 | && !is_gimple_reg (gimple_assign_lhs (stmt)) | |
25935 | && (TREE_CODE (rhs) == SSA_NAME | |
25936 | || is_gimple_min_invariant (rhs))) | |
25937 | Index: gcc/tree-sra.c | |
25938 | =================================================================== | |
25939 | --- gcc/tree-sra.c (.../tags/gcc_4_7_0_release) (wersja 187906) | |
25940 | +++ gcc/tree-sra.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
25941 | @@ -3120,7 +3120,13 @@ | |
25942 | } | |
25943 | else | |
25944 | { | |
25945 | - if (access_has_children_p (lacc) && access_has_children_p (racc)) | |
25946 | + if (access_has_children_p (lacc) | |
25947 | + && access_has_children_p (racc) | |
25948 | + /* When an access represents an unscalarizable region, it usually | |
25949 | + represents accesses with variable offset and thus must not be used | |
25950 | + to generate new memory accesses. */ | |
25951 | + && !lacc->grp_unscalarizable_region | |
25952 | + && !racc->grp_unscalarizable_region) | |
25953 | { | |
25954 | gimple_stmt_iterator orig_gsi = *gsi; | |
25955 | enum unscalarized_data_handling refreshed; | |
25956 | @@ -4693,8 +4699,8 @@ | |
25957 | if (dump_file) | |
25958 | fprintf (dump_file, "Adjusting call (%i -> %i) %s -> %s\n", | |
25959 | cs->caller->uid, cs->callee->uid, | |
25960 | - cgraph_node_name (cs->caller), | |
25961 | - cgraph_node_name (cs->callee)); | |
25962 | + xstrdup (cgraph_node_name (cs->caller)), | |
25963 | + xstrdup (cgraph_node_name (cs->callee))); | |
25964 | ||
25965 | ipa_modify_call_arguments (cs, cs->call_stmt, adjustments); | |
25966 | ||
25967 | Index: gcc/tree-predcom.c | |
25968 | =================================================================== | |
25969 | --- gcc/tree-predcom.c (.../tags/gcc_4_7_0_release) (wersja 187906) | |
25970 | +++ gcc/tree-predcom.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
25971 | @@ -1707,6 +1707,7 @@ | |
25972 | { | |
25973 | name = PHI_RESULT (stmt); | |
25974 | next = single_nonlooparound_use (name); | |
25975 | + reset_debug_uses (stmt); | |
25976 | psi = gsi_for_stmt (stmt); | |
25977 | remove_phi_node (&psi, true); | |
25978 | ||
25979 | @@ -1728,6 +1729,7 @@ | |
25980 | gcc_assert (TREE_CODE (name) == SSA_NAME); | |
25981 | ||
25982 | next = single_nonlooparound_use (name); | |
25983 | + reset_debug_uses (stmt); | |
25984 | ||
25985 | mark_virtual_ops_for_renaming (stmt); | |
25986 | gsi_remove (&bsi, true); | |
25987 | Index: gcc/lto/lang.opt | |
25988 | =================================================================== | |
25989 | --- gcc/lto/lang.opt (.../tags/gcc_4_7_0_release) (wersja 187906) | |
25990 | +++ gcc/lto/lang.opt (.../branches/gcc-4_7-branch) (wersja 187906) | |
25991 | @@ -25,7 +25,7 @@ | |
25992 | LTO | |
25993 | ||
25994 | fltrans | |
25995 | -LTO Report Var(flag_ltrans) Optimization | |
25996 | +LTO Report Var(flag_ltrans) | |
25997 | Run the link-time optimizer in local transformation (LTRANS) mode. | |
25998 | ||
25999 | fltrans-output-list= | |
26000 | @@ -33,7 +33,7 @@ | |
26001 | Specify a file to which a list of files output by LTRANS is written. | |
26002 | ||
26003 | fwpa | |
26004 | -LTO Driver Report Var(flag_wpa) Optimization | |
26005 | +LTO Driver Report Var(flag_wpa) | |
26006 | Run the link-time optimizer in whole program analysis (WPA) mode. | |
26007 | ||
26008 | fresolution= | |
26009 | Index: gcc/lto/ChangeLog | |
26010 | =================================================================== | |
26011 | --- gcc/lto/ChangeLog (.../tags/gcc_4_7_0_release) (wersja 187906) | |
26012 | +++ gcc/lto/ChangeLog (.../branches/gcc-4_7-branch) (wersja 187906) | |
26013 | @@ -1,3 +1,8 @@ | |
26014 | +2012-05-04 Richard Guenther <rguenther@suse.de> | |
26015 | + | |
26016 | + * lang.opt (fwpa): Do not mark as Optimization. | |
26017 | + (fltrans): Likewise. | |
26018 | + | |
26019 | 2012-03-22 Release Manager | |
26020 | ||
26021 | * GCC 4.7.0 released. | |
26022 | Index: gcc/ipa-prop.c | |
26023 | =================================================================== | |
26024 | --- gcc/ipa-prop.c (.../tags/gcc_4_7_0_release) (wersja 187906) | |
26025 | +++ gcc/ipa-prop.c (.../branches/gcc-4_7-branch) (wersja 187906) | |
26026 | @@ -230,8 +230,8 @@ | |
26027 | continue; | |
26028 | ||
26029 | fprintf (f, " callsite %s/%i -> %s/%i : \n", | |
26030 | - cgraph_node_name (node), node->uid, | |
26031 | - cgraph_node_name (cs->callee), cs->callee->uid); | |
26032 | + xstrdup (cgraph_node_name (node)), node->uid, | |
26033 | + xstrdup (cgraph_node_name (cs->callee)), cs->callee->uid); | |
26034 | ipa_print_node_jump_functions_for_edge (f, cs); | |
26035 | } | |
26036 | ||
26037 | @@ -1780,8 +1780,8 @@ | |
26038 | fprintf (dump_file, "ipa-prop: Discovered %s call to a known target " | |
26039 | "(%s/%i -> %s/%i), for stmt ", | |
26040 | ie->indirect_info->polymorphic ? "a virtual" : "an indirect", | |
26041 | - cgraph_node_name (ie->caller), ie->caller->uid, | |
26042 | - cgraph_node_name (ie->callee), ie->callee->uid); | |
26043 | + xstrdup (cgraph_node_name (ie->caller)), ie->caller->uid, | |
26044 | + xstrdup (cgraph_node_name (ie->callee)), ie->callee->uid); | |
26045 | if (ie->call_stmt) | |
26046 | print_gimple_stmt (dump_file, ie->call_stmt, 2, TDF_SLIM); | |
26047 | else | |
26048 | Index: gcc/po/es.po | |
26049 | =================================================================== | |
26050 | --- gcc/po/es.po (.../tags/gcc_4_7_0_release) (wersja 187906) | |
26051 | +++ gcc/po/es.po (.../branches/gcc-4_7-branch) (wersja 187906) | |
26052 | @@ -1,4 +1,4 @@ | |
26053 | -# Mensajes en español para gcc-4.7-b20120128. | |
26054 | +# Mensajes en español para gcc-4.7.0. | |
26055 | # Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc. | |
26056 | # This file is distributed under the same license as the gcc package. | |
26057 | # Cristian Othón Martínez Vera <cfuga@cfuga.mx>, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 | |
26058 | @@ -7,10 +7,10 @@ | |
26059 | # | |
26060 | msgid "" | |
26061 | msgstr "" | |
26062 | -"Project-Id-Version: gcc 4.7-b20120128\n" | |
26063 | +"Project-Id-Version: gcc 4.7.0\n" | |
26064 | "Report-Msgid-Bugs-To: http://gcc.gnu.org/bugs.html\n" | |
26065 | -"POT-Creation-Date: 2012-01-27 16:13+0000\n" | |
26066 | -"PO-Revision-Date: 2012-01-31 08:34-0600\n" | |
26067 | +"POT-Creation-Date: 2012-03-18 14:00+0000\n" | |
26068 | +"PO-Revision-Date: 2012-03-26 10:36-0600\n" | |
26069 | "Last-Translator: Cristian Othón Martínez Vera <cfuga@cfuga.mx>\n" | |
26070 | "Language-Team: Spanish <es@li.org>\n" | |
26071 | "Language: es\n" | |
26072 | @@ -19,7 +19,7 @@ | |
26073 | "Content-Transfer-Encoding: 8bit\n" | |
26074 | "Plural-Forms: nplurals=2; plural=(n != 1);\n" | |
26075 | ||
26076 | -#: c-decl.c:4712 c-typeck.c:5944 toplev.c:1013 c-family/c-pretty-print.c:424 | |
26077 | +#: c-decl.c:4713 c-typeck.c:5944 toplev.c:1013 c-family/c-pretty-print.c:424 | |
26078 | #: cp/error.c:656 cp/error.c:938 | |
26079 | msgid "<anonymous>" | |
26080 | msgstr "<anónimo>" | |
26081 | @@ -229,13 +229,13 @@ | |
26082 | ||
26083 | #: diagnostic.c:136 | |
26084 | #, c-format | |
26085 | -msgid "%s: all warnings being treated as errors\n" | |
26086 | -msgstr "%s: todos los avisos se tratan como errores\n" | |
26087 | +msgid "%s: all warnings being treated as errors" | |
26088 | +msgstr "%s: todos los avisos se tratan como errores" | |
26089 | ||
26090 | #: diagnostic.c:141 | |
26091 | #, c-format | |
26092 | -msgid "%s: some warnings being treated as errors\n" | |
26093 | -msgstr "%s: algunos avisos se tratan como errores\n" | |
26094 | +msgid "%s: some warnings being treated as errors" | |
26095 | +msgstr "%s: algunos avisos se tratan como errores" | |
26096 | ||
26097 | #: diagnostic.c:219 | |
26098 | #, c-format | |
26099 | @@ -321,22 +321,22 @@ | |
26100 | #. TARGET_PRINT_OPERAND must handle them. | |
26101 | #. We can't handle floating point constants; | |
26102 | #. PRINT_OPERAND must handle them. | |
26103 | -#: final.c:3615 config/i386/i386.c:13019 config/pdp11/pdp11.c:1689 | |
26104 | +#: final.c:3615 config/i386/i386.c:13033 config/pdp11/pdp11.c:1689 | |
26105 | #, c-format | |
26106 | msgid "floating constant misused" | |
26107 | msgstr "constante de coma flotante mal usada" | |
26108 | ||
26109 | -#: final.c:3673 config/i386/i386.c:13117 config/pdp11/pdp11.c:1730 | |
26110 | +#: final.c:3673 config/i386/i386.c:13131 config/pdp11/pdp11.c:1730 | |
26111 | #, c-format | |
26112 | msgid "invalid expression as operand" | |
26113 | msgstr "expresión inválida como operando" | |
26114 | ||
26115 | -#: gcc.c:1323 | |
26116 | +#: gcc.c:1329 | |
26117 | #, c-format | |
26118 | msgid "Using built-in specs.\n" | |
26119 | msgstr "Usando especificaciones internas.\n" | |
26120 | ||
26121 | -#: gcc.c:1520 | |
26122 | +#: gcc.c:1526 | |
26123 | #, c-format | |
26124 | msgid "" | |
26125 | "Setting spec %s to '%s'\n" | |
26126 | @@ -345,22 +345,22 @@ | |
26127 | "Cambiando la especificación %s a '%s'\n" | |
26128 | "\n" | |
26129 | ||
26130 | -#: gcc.c:1630 | |
26131 | +#: gcc.c:1636 | |
26132 | #, c-format | |
26133 | msgid "Reading specs from %s\n" | |
26134 | msgstr "Leyendo especificaciones de %s\n" | |
26135 | ||
26136 | -#: gcc.c:1755 | |
26137 | +#: gcc.c:1761 | |
26138 | #, c-format | |
26139 | msgid "could not find specs file %s\n" | |
26140 | msgstr "no se puede encontrar el fichero de especificaciones %s\n" | |
26141 | ||
26142 | -#: gcc.c:1824 | |
26143 | +#: gcc.c:1830 | |
26144 | #, c-format | |
26145 | msgid "rename spec %s to %s\n" | |
26146 | msgstr "renombrando la especificación %s a %s\n" | |
26147 | ||
26148 | -#: gcc.c:1826 | |
26149 | +#: gcc.c:1832 | |
26150 | #, c-format | |
26151 | msgid "" | |
26152 | "spec is '%s'\n" | |
26153 | @@ -369,13 +369,13 @@ | |
26154 | "la especificacion es '%s'\n" | |
26155 | "\n" | |
26156 | ||
26157 | -#: gcc.c:2243 | |
26158 | +#: gcc.c:2249 | |
26159 | #, c-format | |
26160 | msgid "%s\n" | |
26161 | msgstr "%s\n" | |
26162 | ||
26163 | # El código require 'y' o 'Y' como respuesta afirmativa. cfuga | |
26164 | -#: gcc.c:2607 | |
26165 | +#: gcc.c:2613 | |
26166 | #, c-format | |
26167 | msgid "" | |
26168 | "\n" | |
26169 | @@ -384,81 +384,81 @@ | |
26170 | "\n" | |
26171 | "¿Continuar? (y ó n) " | |
26172 | ||
26173 | -#: gcc.c:2747 | |
26174 | +#: gcc.c:2753 | |
26175 | #, c-format | |
26176 | msgid "# %s %.2f %.2f\n" | |
26177 | msgstr "# %s %.2f %.2f\n" | |
26178 | ||
26179 | -#: gcc.c:2949 | |
26180 | +#: gcc.c:2955 | |
26181 | #, c-format | |
26182 | msgid "Usage: %s [options] file...\n" | |
26183 | msgstr "Modo de empleo: %s [opciones] fichero...\n" | |
26184 | ||
26185 | -#: gcc.c:2950 | |
26186 | +#: gcc.c:2956 | |
26187 | msgid "Options:\n" | |
26188 | msgstr "Opciones:\n" | |
26189 | ||
26190 | -#: gcc.c:2952 | |
26191 | +#: gcc.c:2958 | |
26192 | msgid " -pass-exit-codes Exit with highest error code from a phase\n" | |
26193 | msgstr " -pass-exit-codes Sale con el código de error más alto de una fase\n" | |
26194 | ||
26195 | -#: gcc.c:2953 | |
26196 | +#: gcc.c:2959 | |
26197 | msgid " --help Display this information\n" | |
26198 | msgstr " --help Muestra esta información\n" | |
26199 | ||
26200 | -#: gcc.c:2954 | |
26201 | +#: gcc.c:2960 | |
26202 | msgid " --target-help Display target specific command line options\n" | |
26203 | msgstr " --target-help Muestra opciones de línea de órdenes específicas del objetivo\n" | |
26204 | ||
26205 | -#: gcc.c:2955 | |
26206 | -msgid " --help={target|optimizers|warnings|params|[^]{joined|separate|undocumented}}[,...]\n" | |
26207 | -msgstr " --help={target|optimizers|warnings|params|[^]{joined|separate|undocumented}}[,...]\n" | |
26208 | +#: gcc.c:2961 | |
26209 | +msgid " --help={common|optimizers|params|target|warnings|[^]{joined|separate|undocumented}}[,...]\n" | |
26210 | +msgstr " --help={common|optimizers|params|target|warnings|[^]{joined|separate|undocumented}}[,...]\n" | |
26211 | ||
26212 | -#: gcc.c:2956 | |
26213 | +#: gcc.c:2962 | |
26214 | msgid " Display specific types of command line options\n" | |
26215 | msgstr " Muestra tipos específicos de opciones de línea de órdenes\n" | |
26216 | ||
26217 | -#: gcc.c:2958 | |
26218 | +#: gcc.c:2964 | |
26219 | msgid " (Use '-v --help' to display command line options of sub-processes)\n" | |
26220 | msgstr " (Use '-v --help' para mostrar las opciones de línea de órdenes de los subprocesos)\n" | |
26221 | ||
26222 | -#: gcc.c:2959 | |
26223 | +#: gcc.c:2965 | |
26224 | msgid " --version Display compiler version information\n" | |
26225 | msgstr " --version Muestra la información de versión del compilador\n" | |
26226 | ||
26227 | -#: gcc.c:2960 | |
26228 | +#: gcc.c:2966 | |
26229 | msgid " -dumpspecs Display all of the built in spec strings\n" | |
26230 | msgstr " -dumpspecs Muestra todas las cadenas internas de especificación\n" | |
26231 | ||
26232 | -#: gcc.c:2961 | |
26233 | +#: gcc.c:2967 | |
26234 | msgid " -dumpversion Display the version of the compiler\n" | |
26235 | msgstr " -dumpversion Muestra la versión del compilador\n" | |
26236 | ||
26237 | -#: gcc.c:2962 | |
26238 | +#: gcc.c:2968 | |
26239 | msgid " -dumpmachine Display the compiler's target processor\n" | |
26240 | msgstr " -dumpmachine Muestra el procesador objetivo del compilador\n" | |
26241 | ||
26242 | -#: gcc.c:2963 | |
26243 | +#: gcc.c:2969 | |
26244 | msgid " -print-search-dirs Display the directories in the compiler's search path\n" | |
26245 | msgstr " -print-search-dirs Muestra los directorios en la ruta de búsqueda del compilador\n" | |
26246 | ||
26247 | -#: gcc.c:2964 | |
26248 | +#: gcc.c:2970 | |
26249 | msgid " -print-libgcc-file-name Display the name of the compiler's companion library\n" | |
26250 | msgstr " -print-libgcc-file-name Muestra el nombre de la biblioteca que acompaña al compilador\n" | |
26251 | ||
26252 | -#: gcc.c:2965 | |
26253 | +#: gcc.c:2971 | |
26254 | msgid " -print-file-name=<lib> Display the full path to library <lib>\n" | |
26255 | msgstr " -print-file-name=<bib> Muestra la ruta completa a la biblioteca <bib>\n" | |
26256 | ||
26257 | -#: gcc.c:2966 | |
26258 | +#: gcc.c:2972 | |
26259 | msgid " -print-prog-name=<prog> Display the full path to compiler component <prog>\n" | |
26260 | msgstr " -print-prog-name=<prog> Muestra la ruta completa del programa componente del compilador <prog>\n" | |
26261 | ||
26262 | -#: gcc.c:2967 | |
26263 | +#: gcc.c:2973 | |
26264 | msgid " -print-multi-directory Display the root directory for versions of libgcc\n" | |
26265 | msgstr " -print-multi-directory Muestra el directorio raíz para las versiones de libgcc\n" | |
26266 | ||
26267 | -#: gcc.c:2968 | |
26268 | +#: gcc.c:2974 | |
26269 | msgid "" | |
26270 | " -print-multi-lib Display the mapping between command line options and\n" | |
26271 | " multiple library search directories\n" | |
26272 | @@ -466,51 +466,51 @@ | |
26273 | " -print-multi-lib Muestra el mapeo entre las opciones de línea de órdenes\n" | |
26274 | " y los múltiples directorios de búsqueda de bibliotecas\n" | |
26275 | ||
26276 | -#: gcc.c:2971 | |
26277 | +#: gcc.c:2977 | |
26278 | msgid " -print-multi-os-directory Display the relative path to OS libraries\n" | |
26279 | msgstr " -print-multi-os-directory Muestra la ruta relativa para las bibliotecas del SO\n" | |
26280 | ||
26281 | -#: gcc.c:2972 | |
26282 | +#: gcc.c:2978 | |
26283 | msgid " -print-sysroot Display the target libraries directory\n" | |
26284 | msgstr " -print-sysroot Muestra el directorio de las bibliotecas objetivo\n" | |
26285 | ||
26286 | -#: gcc.c:2973 | |
26287 | +#: gcc.c:2979 | |
26288 | msgid " -print-sysroot-headers-suffix Display the sysroot suffix used to find headers\n" | |
26289 | msgstr " -print-sysroot-headers-suffix Muestra el sufijo sysroot que se usa para buscar encabezados\n" | |
26290 | ||
26291 | -#: gcc.c:2974 | |
26292 | +#: gcc.c:2980 | |
26293 | msgid " -Wa,<options> Pass comma-separated <options> on to the assembler\n" | |
26294 | msgstr " -Wa,<opciones> Pasa <opciones> separadas por coma al ensamblador\n" | |
26295 | ||
26296 | -#: gcc.c:2975 | |
26297 | +#: gcc.c:2981 | |
26298 | msgid " -Wp,<options> Pass comma-separated <options> on to the preprocessor\n" | |
26299 | msgstr " -Wp,<opciones> Pasa <opciones> separadas por coma al preprocesador\n" | |
26300 | ||
26301 | -#: gcc.c:2976 | |
26302 | +#: gcc.c:2982 | |
26303 | msgid " -Wl,<options> Pass comma-separated <options> on to the linker\n" | |
26304 | msgstr " -Wl,<opciones> Pasa <opciones> separadas por coma al enlazador\n" | |
26305 | ||
26306 | -#: gcc.c:2977 | |
26307 | +#: gcc.c:2983 | |
26308 | msgid " -Xassembler <arg> Pass <arg> on to the assembler\n" | |
26309 | msgstr " -Xassembler <argumento> Pasa el <argumento> al ensamblador\n" | |
26310 | ||
26311 | -#: gcc.c:2978 | |
26312 | +#: gcc.c:2984 | |
26313 | msgid " -Xpreprocessor <arg> Pass <arg> on to the preprocessor\n" | |
26314 | msgstr " -Xpreprocessor <argumento> Pasa el <argumento> al preprocesador\n" | |
26315 | ||
26316 | -#: gcc.c:2979 | |
26317 | +#: gcc.c:2985 | |
26318 | msgid " -Xlinker <arg> Pass <arg> on to the linker\n" | |
26319 | msgstr " -Xlinker <argumento> Pasa el <argumento> al enlazador\n" | |
26320 | ||
26321 | -#: gcc.c:2980 | |
26322 | +#: gcc.c:2986 | |
26323 | msgid " -save-temps Do not delete intermediate files\n" | |
26324 | msgstr " -save-temps No borra los ficheros intermedios\n" | |
26325 | ||
26326 | -#: gcc.c:2981 | |
26327 | +#: gcc.c:2987 | |
26328 | msgid " -save-temps=<arg> Do not delete intermediate files\n" | |
26329 | msgstr " -save-temps=<arg> No borra los ficheros intermedios\n" | |
26330 | ||
26331 | -#: gcc.c:2982 | |
26332 | +#: gcc.c:2988 | |
26333 | msgid "" | |
26334 | " -no-canonical-prefixes Do not canonicalize paths when building relative\n" | |
26335 | " prefixes to other gcc components\n" | |
26336 | @@ -518,23 +518,23 @@ | |
26337 | " -no-canonical-prefixes No crea rutas completas al construir prefijos\n" | |
26338 | " relativos a otros componentes de gcc\n" | |
26339 | ||
26340 | -#: gcc.c:2985 | |
26341 | +#: gcc.c:2991 | |
26342 | msgid " -pipe Use pipes rather than intermediate files\n" | |
26343 | msgstr " -pipe Usa tuberías en lugar de ficheros intermedios\n" | |
26344 | ||
26345 | -#: gcc.c:2986 | |
26346 | +#: gcc.c:2992 | |
26347 | msgid " -time Time the execution of each subprocess\n" | |
26348 | msgstr " -time Obtiene el tiempo de ejecución de cada subproceso\n" | |
26349 | ||
26350 | -#: gcc.c:2987 | |
26351 | +#: gcc.c:2993 | |
26352 | msgid " -specs=<file> Override built-in specs with the contents of <file>\n" | |
26353 | msgstr " -specs=<fichero> Sobrepone las especificaciones internas con el contenido del <fichero>\n" | |
26354 | ||
26355 | -#: gcc.c:2988 | |
26356 | +#: gcc.c:2994 | |
26357 | msgid " -std=<standard> Assume that the input sources are for <standard>\n" | |
26358 | msgstr " -std=<estándar> Asume que los ficheros de entrada son para el <estándar>\n" | |
26359 | ||
26360 | -#: gcc.c:2989 | |
26361 | +#: gcc.c:2995 | |
26362 | msgid "" | |
26363 | " --sysroot=<directory> Use <directory> as the root directory for headers\n" | |
26364 | " and libraries\n" | |
26365 | @@ -542,43 +542,43 @@ | |
26366 | " --sysroot=<directorio> Usa el <directorio> como directorio raíz para\n" | |
26367 | " los encabezados y bibliotecas\n" | |
26368 | ||
26369 | -#: gcc.c:2992 | |
26370 | +#: gcc.c:2998 | |
26371 | msgid " -B <directory> Add <directory> to the compiler's search paths\n" | |
26372 | msgstr " -B <directorio> Agrega el <directorio> a las rutas de búsqueda del compilador\n" | |
26373 | ||
26374 | -#: gcc.c:2993 | |
26375 | +#: gcc.c:2999 | |
26376 | msgid " -v Display the programs invoked by the compiler\n" | |
26377 | msgstr " -v Muestra los programas invocados por el compilador\n" | |
26378 | ||
26379 | -#: gcc.c:2994 | |
26380 | +#: gcc.c:3000 | |
26381 | msgid " -### Like -v but options quoted and commands not executed\n" | |
26382 | msgstr " -### Como -v pero no se ejecutan las opciones entre comillas y las órdenes\n" | |
26383 | ||
26384 | -#: gcc.c:2995 | |
26385 | +#: gcc.c:3001 | |
26386 | msgid " -E Preprocess only; do not compile, assemble or link\n" | |
26387 | msgstr " -E Solamente preprocesa; no compila, ensambla o enlaza\n" | |
26388 | ||
26389 | -#: gcc.c:2996 | |
26390 | +#: gcc.c:3002 | |
26391 | msgid " -S Compile only; do not assemble or link\n" | |
26392 | msgstr " -S Solamente compila; no ensambla o enlaza\n" | |
26393 | ||
26394 | -#: gcc.c:2997 | |
26395 | +#: gcc.c:3003 | |
26396 | msgid " -c Compile and assemble, but do not link\n" | |
26397 | msgstr " -c Compila y ensambla, pero no enlaza\n" | |
26398 | ||
26399 | -#: gcc.c:2998 | |
26400 | +#: gcc.c:3004 | |
26401 | msgid " -o <file> Place the output into <file>\n" | |
26402 | msgstr " -o <fichero> Coloca la salida en el <fichero>\n" | |
26403 | ||
26404 | -#: gcc.c:2999 | |
26405 | +#: gcc.c:3005 | |
26406 | msgid " -pie Create a position independent executable\n" | |
26407 | msgstr " -pie Genera un ejecutable independiente de posición\n" | |
26408 | ||
26409 | -#: gcc.c:3000 | |
26410 | +#: gcc.c:3006 | |
26411 | msgid " -shared Create a shared library\n" | |
26412 | msgstr " -shared Crea una biblioteca compartida\n" | |
26413 | ||
26414 | -#: gcc.c:3001 | |
26415 | +#: gcc.c:3007 | |
26416 | msgid "" | |
26417 | " -x <language> Specify the language of the following input files\n" | |
26418 | " Permissible languages include: c c++ assembler none\n" | |
26419 | @@ -590,7 +590,7 @@ | |
26420 | " 'none' significa revertir a la conducta habitual de\n" | |
26421 | " adivinar el lenguaje basado en la extensión del fichero\n" | |
26422 | ||
26423 | -#: gcc.c:3008 | |
26424 | +#: gcc.c:3014 | |
26425 | #, c-format | |
26426 | msgid "" | |
26427 | "\n" | |
26428 | @@ -603,27 +603,27 @@ | |
26429 | " automáticamente a los varios subprocesos invocados por %s. Para pasar\n" | |
26430 | " otras opciones a estos procesos se deben usar las opciones -W<letra>.\n" | |
26431 | ||
26432 | -#: gcc.c:5233 | |
26433 | +#: gcc.c:5239 | |
26434 | #, c-format | |
26435 | msgid "Processing spec (%s), which is '%s'\n" | |
26436 | msgstr "Se procesa la especificación (%s), la cual es '%s'\n" | |
26437 | ||
26438 | -#: gcc.c:6472 | |
26439 | +#: gcc.c:6497 | |
26440 | #, c-format | |
26441 | msgid "install: %s%s\n" | |
26442 | msgstr "instalar: %s%s\n" | |
26443 | ||
26444 | -#: gcc.c:6475 | |
26445 | +#: gcc.c:6500 | |
26446 | #, c-format | |
26447 | msgid "programs: %s\n" | |
26448 | msgstr "programas: %s\n" | |
26449 | ||
26450 | -#: gcc.c:6477 | |
26451 | +#: gcc.c:6502 | |
26452 | #, c-format | |
26453 | msgid "libraries: %s\n" | |
26454 | msgstr "bibliotecas: %s\n" | |
26455 | ||
26456 | -#: gcc.c:6552 | |
26457 | +#: gcc.c:6577 | |
26458 | #, c-format | |
26459 | msgid "" | |
26460 | "\n" | |
26461 | @@ -632,16 +632,16 @@ | |
26462 | "\n" | |
26463 | "Para instrucciones de reporte de bichos, por favor vea:\n" | |
26464 | ||
26465 | -#: gcc.c:6568 | |
26466 | +#: gcc.c:6593 | |
26467 | #, c-format | |
26468 | msgid "%s %s%s\n" | |
26469 | msgstr "%s %s%s\n" | |
26470 | ||
26471 | -#: gcc.c:6571 gcov.c:488 fortran/gfortranspec.c:305 java/jcf-dump.c:1165 | |
26472 | +#: gcc.c:6596 gcov.c:488 fortran/gfortranspec.c:305 java/jcf-dump.c:1165 | |
26473 | msgid "(C)" | |
26474 | msgstr "(C)" | |
26475 | ||
26476 | -#: gcc.c:6572 java/jcf-dump.c:1166 | |
26477 | +#: gcc.c:6597 java/jcf-dump.c:1166 | |
26478 | #, c-format | |
26479 | msgid "" | |
26480 | "This is free software; see the source for copying conditions. There is NO\n" | |
26481 | @@ -653,32 +653,32 @@ | |
26482 | "PARTICULAR\n" | |
26483 | "\n" | |
26484 | ||
26485 | -#: gcc.c:6589 | |
26486 | +#: gcc.c:6614 | |
26487 | #, c-format | |
26488 | msgid "Target: %s\n" | |
26489 | msgstr "Objetivo: %s\n" | |
26490 | ||
26491 | -#: gcc.c:6590 | |
26492 | +#: gcc.c:6615 | |
26493 | #, c-format | |
26494 | msgid "Configured with: %s\n" | |
26495 | msgstr "Configurado con: %s\n" | |
26496 | ||
26497 | -#: gcc.c:6604 | |
26498 | +#: gcc.c:6629 | |
26499 | #, c-format | |
26500 | msgid "Thread model: %s\n" | |
26501 | msgstr "Modelo de hilos: %s\n" | |
26502 | ||
26503 | -#: gcc.c:6615 | |
26504 | +#: gcc.c:6640 | |
26505 | #, c-format | |
26506 | msgid "gcc version %s %s\n" | |
26507 | msgstr "gcc versión %s %s\n" | |
26508 | ||
26509 | -#: gcc.c:6618 | |
26510 | +#: gcc.c:6643 | |
26511 | #, c-format | |
26512 | msgid "gcc driver version %s %sexecuting gcc version %s\n" | |
26513 | msgstr "controlador gcc versión %s %sejecutando gcc versión %s\n" | |
26514 | ||
26515 | -#: gcc.c:6865 | |
26516 | +#: gcc.c:6897 | |
26517 | #, c-format | |
26518 | msgid "" | |
26519 | "\n" | |
26520 | @@ -691,14 +691,14 @@ | |
26521 | "======================\n" | |
26522 | "\n" | |
26523 | ||
26524 | -#: gcc.c:6866 | |
26525 | +#: gcc.c:6898 | |
26526 | #, c-format | |
26527 | msgid "" | |
26528 | "Use \"-Wl,OPTION\" to pass \"OPTION\" to the linker.\n" | |
26529 | "\n" | |
26530 | msgstr "Utilice \"-Wl,OPCIÓN\" para pasar la \"OPCIÓN\" al enlazador.\n" | |
26531 | ||
26532 | -#: gcc.c:8058 | |
26533 | +#: gcc.c:8090 | |
26534 | #, c-format | |
26535 | msgid "" | |
26536 | "Assembler options\n" | |
26537 | @@ -709,7 +709,7 @@ | |
26538 | "=======================\n" | |
26539 | "\n" | |
26540 | ||
26541 | -#: gcc.c:8059 | |
26542 | +#: gcc.c:8091 | |
26543 | #, c-format | |
26544 | msgid "" | |
26545 | "Use \"-Wa,OPTION\" to pass \"OPTION\" to the assembler.\n" | |
26546 | @@ -1185,27 +1185,27 @@ | |
26547 | msgid "At top level:" | |
26548 | msgstr "En el nivel principal:" | |
26549 | ||
26550 | -#: langhooks.c:394 cp/error.c:2985 | |
26551 | +#: langhooks.c:394 cp/error.c:2987 | |
26552 | #, c-format | |
26553 | msgid "In member function %qs" | |
26554 | msgstr "En la función miembro %qs" | |
26555 | ||
26556 | -#: langhooks.c:398 cp/error.c:2988 | |
26557 | +#: langhooks.c:398 cp/error.c:2990 | |
26558 | #, c-format | |
26559 | msgid "In function %qs" | |
26560 | msgstr "En la función %qs" | |
26561 | ||
26562 | -#: langhooks.c:449 cp/error.c:2938 | |
26563 | +#: langhooks.c:449 cp/error.c:2940 | |
26564 | #, c-format | |
26565 | msgid " inlined from %qs at %s:%d:%d" | |
26566 | msgstr " incluído en línea de %qs en %s:%d:%d" | |
26567 | ||
26568 | -#: langhooks.c:454 cp/error.c:2943 | |
26569 | +#: langhooks.c:454 cp/error.c:2945 | |
26570 | #, c-format | |
26571 | msgid " inlined from %qs at %s:%d" | |
26572 | msgstr " incluído en línea de %qs en %s:%d" | |
26573 | ||
26574 | -#: langhooks.c:460 cp/error.c:2949 | |
26575 | +#: langhooks.c:460 cp/error.c:2951 | |
26576 | #, c-format | |
26577 | msgid " inlined from %qs" | |
26578 | msgstr " incluído en línea de %qs" | |
26579 | @@ -1397,7 +1397,7 @@ | |
26580 | msgid "VOIDmode on an output" | |
26581 | msgstr "modoVOID en una salida" | |
26582 | ||
26583 | -#: reload1.c:8653 | |
26584 | +#: reload1.c:8658 | |
26585 | msgid "failure trying to reload:" | |
26586 | msgstr "falla al tratar de recargar:" | |
26587 | ||
26588 | @@ -1409,39 +1409,39 @@ | |
26589 | msgid "insn does not satisfy its constraints:" | |
26590 | msgstr "la insn no satisface sus restricciones:" | |
26591 | ||
26592 | -#: targhooks.c:1403 | |
26593 | +#: targhooks.c:1404 | |
26594 | #, c-format | |
26595 | msgid "created and used with differing settings of '%s'" | |
26596 | msgstr "creado y usado con diferentes opciones de '%s'" | |
26597 | ||
26598 | -#: targhooks.c:1405 | |
26599 | +#: targhooks.c:1406 | |
26600 | msgid "out of memory" | |
26601 | msgstr "memoria agotada" | |
26602 | ||
26603 | -#: targhooks.c:1420 | |
26604 | +#: targhooks.c:1421 | |
26605 | msgid "created and used with different settings of -fpic" | |
26606 | msgstr "creado y usado con diferentes opciones de -fpic" | |
26607 | ||
26608 | -#: targhooks.c:1422 | |
26609 | +#: targhooks.c:1423 | |
26610 | msgid "created and used with different settings of -fpie" | |
26611 | msgstr "creado y usado con diferentes opciones de -fpie" | |
26612 | ||
26613 | -#: tlink.c:387 | |
26614 | +#: tlink.c:392 | |
26615 | #, c-format | |
26616 | msgid "collect: reading %s\n" | |
26617 | msgstr "collect: leyendo %s\n" | |
26618 | ||
26619 | -#: tlink.c:537 | |
26620 | +#: tlink.c:548 | |
26621 | #, c-format | |
26622 | msgid "collect: recompiling %s\n" | |
26623 | msgstr "collect: recompilando %s\n" | |
26624 | ||
26625 | -#: tlink.c:744 | |
26626 | +#: tlink.c:632 | |
26627 | #, c-format | |
26628 | msgid "collect: tweaking %s in %s\n" | |
26629 | msgstr "collect: alterando %s en %s\n" | |
26630 | ||
26631 | -#: tlink.c:794 | |
26632 | +#: tlink.c:848 | |
26633 | #, c-format | |
26634 | msgid "collect: relinking\n" | |
26635 | msgstr "collect: reenlazando\n" | |
26636 | @@ -2523,121 +2523,121 @@ | |
26637 | msgid "<return-value>" | |
26638 | msgstr "<valor-devolución>" | |
26639 | ||
26640 | -#: c-family/c-pretty-print.c:2138 cp/error.c:1802 cp/error.c:2711 | |
26641 | +#: c-family/c-pretty-print.c:2138 cp/error.c:1802 cp/error.c:2713 | |
26642 | msgid "<unknown>" | |
26643 | msgstr "<desconocido>" | |
26644 | ||
26645 | -#: config/alpha/alpha.c:5017 | |
26646 | +#: config/alpha/alpha.c:5022 | |
26647 | #, c-format | |
26648 | msgid "invalid %%H value" | |
26649 | msgstr "valor %%H inválido" | |
26650 | ||
26651 | -#: config/alpha/alpha.c:5038 config/bfin/bfin.c:1423 | |
26652 | +#: config/alpha/alpha.c:5043 config/bfin/bfin.c:1423 | |
26653 | #, c-format | |
26654 | msgid "invalid %%J value" | |
26655 | msgstr "valor %%J inválido" | |
26656 | ||
26657 | -#: config/alpha/alpha.c:5068 config/ia64/ia64.c:5291 | |
26658 | +#: config/alpha/alpha.c:5073 config/ia64/ia64.c:5291 | |
26659 | #, c-format | |
26660 | msgid "invalid %%r value" | |
26661 | msgstr "valor %%r inválido" | |
26662 | ||
26663 | -#: config/alpha/alpha.c:5078 config/ia64/ia64.c:5245 | |
26664 | -#: config/rs6000/rs6000.c:15003 config/xtensa/xtensa.c:2350 | |
26665 | +#: config/alpha/alpha.c:5083 config/ia64/ia64.c:5245 | |
26666 | +#: config/rs6000/rs6000.c:15019 config/xtensa/xtensa.c:2350 | |
26667 | #, c-format | |
26668 | msgid "invalid %%R value" | |
26669 | msgstr "valor %%R inválido" | |
26670 | ||
26671 | -#: config/alpha/alpha.c:5084 config/rs6000/rs6000.c:14922 | |
26672 | +#: config/alpha/alpha.c:5089 config/rs6000/rs6000.c:14938 | |
26673 | #: config/xtensa/xtensa.c:2317 | |
26674 | #, c-format | |
26675 | msgid "invalid %%N value" | |
26676 | msgstr "valor %%N inválido" | |
26677 | ||
26678 | -#: config/alpha/alpha.c:5092 config/rs6000/rs6000.c:14950 | |
26679 | +#: config/alpha/alpha.c:5097 config/rs6000/rs6000.c:14966 | |
26680 | #, c-format | |
26681 | msgid "invalid %%P value" | |
26682 | msgstr "valor %%P inválido" | |
26683 | ||
26684 | -#: config/alpha/alpha.c:5100 | |
26685 | +#: config/alpha/alpha.c:5105 | |
26686 | #, c-format | |
26687 | msgid "invalid %%h value" | |
26688 | msgstr "valor %%h inválido" | |
26689 | ||
26690 | -#: config/alpha/alpha.c:5108 config/xtensa/xtensa.c:2343 | |
26691 | +#: config/alpha/alpha.c:5113 config/xtensa/xtensa.c:2343 | |
26692 | #, c-format | |
26693 | msgid "invalid %%L value" | |
26694 | msgstr "valor %%L inválido" | |
26695 | ||
26696 | -#: config/alpha/alpha.c:5147 config/rs6000/rs6000.c:14904 | |
26697 | +#: config/alpha/alpha.c:5152 config/rs6000/rs6000.c:14920 | |
26698 | #, c-format | |
26699 | msgid "invalid %%m value" | |
26700 | msgstr "valor %%m inválido" | |
26701 | ||
26702 | -#: config/alpha/alpha.c:5155 config/rs6000/rs6000.c:14912 | |
26703 | +#: config/alpha/alpha.c:5160 config/rs6000/rs6000.c:14928 | |
26704 | #, c-format | |
26705 | msgid "invalid %%M value" | |
26706 | msgstr "valor %%M inválido" | |
26707 | ||
26708 | -#: config/alpha/alpha.c:5199 | |
26709 | +#: config/alpha/alpha.c:5204 | |
26710 | #, c-format | |
26711 | msgid "invalid %%U value" | |
26712 | msgstr "valor %%U inválido" | |
26713 | ||
26714 | -#: config/alpha/alpha.c:5207 config/alpha/alpha.c:5218 | |
26715 | -#: config/rs6000/rs6000.c:15011 | |
26716 | +#: config/alpha/alpha.c:5212 config/alpha/alpha.c:5223 | |
26717 | +#: config/rs6000/rs6000.c:15027 | |
26718 | #, c-format | |
26719 | msgid "invalid %%s value" | |
26720 | msgstr "valor %%s inválido" | |
26721 | ||
26722 | -#: config/alpha/alpha.c:5229 | |
26723 | +#: config/alpha/alpha.c:5234 | |
26724 | #, c-format | |
26725 | msgid "invalid %%C value" | |
26726 | msgstr "valor %%C inválido" | |
26727 | ||
26728 | -#: config/alpha/alpha.c:5266 config/rs6000/rs6000.c:14769 | |
26729 | +#: config/alpha/alpha.c:5271 config/rs6000/rs6000.c:14785 | |
26730 | #, c-format | |
26731 | msgid "invalid %%E value" | |
26732 | msgstr "valor %%E inválido" | |
26733 | ||
26734 | -#: config/alpha/alpha.c:5291 config/alpha/alpha.c:5339 | |
26735 | +#: config/alpha/alpha.c:5296 config/alpha/alpha.c:5344 | |
26736 | #, c-format | |
26737 | msgid "unknown relocation unspec" | |
26738 | msgstr "reubicación unspec desconocida" | |
26739 | ||
26740 | -#: config/alpha/alpha.c:5300 config/rs6000/rs6000.c:15377 | |
26741 | -#: config/spu/spu.c:1744 | |
26742 | +#: config/alpha/alpha.c:5305 config/cr16/cr16.c:1537 | |
26743 | +#: config/rs6000/rs6000.c:15393 config/spu/spu.c:1744 | |
26744 | #, c-format | |
26745 | msgid "invalid %%xn code" | |
26746 | msgstr "código %%xn inválido" | |
26747 | ||
26748 | -#: config/arm/arm.c:17110 config/arm/arm.c:17128 | |
26749 | +#: config/arm/arm.c:17113 config/arm/arm.c:17131 | |
26750 | #, c-format | |
26751 | msgid "predicated Thumb instruction" | |
26752 | msgstr "instrucción de predicado Thumb" | |
26753 | ||
26754 | -#: config/arm/arm.c:17116 | |
26755 | +#: config/arm/arm.c:17119 | |
26756 | #, c-format | |
26757 | msgid "predicated instruction in conditional sequence" | |
26758 | msgstr "instrucción de predicado en una secuencia condicional" | |
26759 | ||
26760 | -#: config/arm/arm.c:17247 | |
26761 | +#: config/arm/arm.c:17250 | |
26762 | #, c-format | |
26763 | msgid "Unsupported operand for code '%c'" | |
26764 | msgstr "No se admite el operando para el código '%c'" | |
26765 | ||
26766 | -#: config/arm/arm.c:17295 | |
26767 | +#: config/arm/arm.c:17298 | |
26768 | #, c-format | |
26769 | msgid "invalid shift operand" | |
26770 | msgstr "operando de desplazamiento inválido" | |
26771 | ||
26772 | -#: config/arm/arm.c:17352 config/arm/arm.c:17374 config/arm/arm.c:17384 | |
26773 | -#: config/arm/arm.c:17394 config/arm/arm.c:17404 config/arm/arm.c:17443 | |
26774 | -#: config/arm/arm.c:17461 config/arm/arm.c:17496 config/arm/arm.c:17515 | |
26775 | -#: config/arm/arm.c:17530 config/arm/arm.c:17557 config/arm/arm.c:17564 | |
26776 | -#: config/arm/arm.c:17582 config/arm/arm.c:17589 config/arm/arm.c:17597 | |
26777 | -#: config/arm/arm.c:17618 config/arm/arm.c:17625 config/arm/arm.c:17750 | |
26778 | -#: config/arm/arm.c:17757 config/arm/arm.c:17780 config/arm/arm.c:17787 | |
26779 | +#: config/arm/arm.c:17355 config/arm/arm.c:17377 config/arm/arm.c:17387 | |
26780 | +#: config/arm/arm.c:17397 config/arm/arm.c:17407 config/arm/arm.c:17446 | |
26781 | +#: config/arm/arm.c:17464 config/arm/arm.c:17499 config/arm/arm.c:17518 | |
26782 | +#: config/arm/arm.c:17533 config/arm/arm.c:17560 config/arm/arm.c:17567 | |
26783 | +#: config/arm/arm.c:17585 config/arm/arm.c:17592 config/arm/arm.c:17600 | |
26784 | +#: config/arm/arm.c:17621 config/arm/arm.c:17628 config/arm/arm.c:17753 | |
26785 | +#: config/arm/arm.c:17760 config/arm/arm.c:17783 config/arm/arm.c:17790 | |
26786 | #: config/bfin/bfin.c:1436 config/bfin/bfin.c:1443 config/bfin/bfin.c:1450 | |
26787 | #: config/bfin/bfin.c:1457 config/bfin/bfin.c:1466 config/bfin/bfin.c:1473 | |
26788 | #: config/bfin/bfin.c:1480 config/bfin/bfin.c:1487 | |
26789 | @@ -2645,78 +2645,79 @@ | |
26790 | msgid "invalid operand for code '%c'" | |
26791 | msgstr "operando inválido para el código '%c'" | |
26792 | ||
26793 | -#: config/arm/arm.c:17456 | |
26794 | +#: config/arm/arm.c:17459 | |
26795 | #, c-format | |
26796 | msgid "instruction never executed" | |
26797 | msgstr "la instrucción nunca se ejecuta" | |
26798 | ||
26799 | -#: config/arm/arm.c:17799 | |
26800 | +#: config/arm/arm.c:17802 | |
26801 | #, c-format | |
26802 | msgid "missing operand" | |
26803 | msgstr "falta un operando" | |
26804 | ||
26805 | -#: config/arm/arm.c:20399 | |
26806 | +#: config/arm/arm.c:20404 | |
26807 | msgid "function parameters cannot have __fp16 type" | |
26808 | msgstr "los parámetros de la función no pueden tener el tipo __fp16" | |
26809 | ||
26810 | -#: config/arm/arm.c:20409 | |
26811 | +#: config/arm/arm.c:20414 | |
26812 | msgid "functions cannot return __fp16 type" | |
26813 | msgstr "la función no puede devolver el tipo __fp16" | |
26814 | ||
26815 | -#: config/avr/avr.c:1698 | |
26816 | +#: config/avr/avr.c:1695 | |
26817 | #, c-format | |
26818 | msgid "address operand requires constraint for X, Y, or Z register" | |
26819 | msgstr "el operando de dirección requiere una restricción para los registros X, Y, o Z" | |
26820 | ||
26821 | -#: config/avr/avr.c:1851 | |
26822 | +#: config/avr/avr.c:1848 | |
26823 | msgid "operands to %T/%t must be reg + const_int:" | |
26824 | msgstr "los operandos para %T/%t deben ser reg + const_int:" | |
26825 | ||
26826 | -#: config/avr/avr.c:1883 config/avr/avr.c:1938 | |
26827 | +#: config/avr/avr.c:1886 config/avr/avr.c:1941 | |
26828 | msgid "bad address, not an I/O address:" | |
26829 | msgstr "dirección errónea, no es una dirección de E/S:" | |
26830 | ||
26831 | -#: config/avr/avr.c:1892 | |
26832 | +#: config/avr/avr.c:1895 | |
26833 | msgid "bad address, not a constant:" | |
26834 | msgstr "dirección errónea, no es una constante:" | |
26835 | ||
26836 | -#: config/avr/avr.c:1910 | |
26837 | +#: config/avr/avr.c:1913 | |
26838 | msgid "bad address, not (reg+disp):" | |
26839 | msgstr "dirección errónea, no (reg+disp):" | |
26840 | ||
26841 | -#: config/avr/avr.c:1917 | |
26842 | +#: config/avr/avr.c:1920 | |
26843 | msgid "bad address, not post_inc or pre_dec:" | |
26844 | msgstr "dirección errónea, no hay post_inc o pre_dec:" | |
26845 | ||
26846 | -#: config/avr/avr.c:1928 | |
26847 | +#: config/avr/avr.c:1931 | |
26848 | msgid "internal compiler error. Bad address:" | |
26849 | msgstr "error interno del compilador. Dirección errónea:" | |
26850 | ||
26851 | -#: config/avr/avr.c:1958 | |
26852 | +#: config/avr/avr.c:1961 | |
26853 | msgid "internal compiler error. Unknown mode:" | |
26854 | msgstr "error interno del compilador. Modo desconocido:" | |
26855 | ||
26856 | -#: config/avr/avr.c:2918 config/avr/avr.c:3491 config/avr/avr.c:3776 | |
26857 | +#: config/avr/avr.c:2922 config/avr/avr.c:3495 config/avr/avr.c:3780 | |
26858 | msgid "invalid insn:" | |
26859 | msgstr "insn inválida:" | |
26860 | ||
26861 | -#: config/avr/avr.c:2947 config/avr/avr.c:3022 config/avr/avr.c:3065 | |
26862 | -#: config/avr/avr.c:3084 config/avr/avr.c:3175 config/avr/avr.c:3344 | |
26863 | -#: config/avr/avr.c:3554 config/avr/avr.c:3669 config/avr/avr.c:3805 | |
26864 | -#: config/avr/avr.c:3898 | |
26865 | +#: config/avr/avr.c:2951 config/avr/avr.c:3026 config/avr/avr.c:3069 | |
26866 | +#: config/avr/avr.c:3088 config/avr/avr.c:3179 config/avr/avr.c:3348 | |
26867 | +#: config/avr/avr.c:3558 config/avr/avr.c:3673 config/avr/avr.c:3809 | |
26868 | +#: config/avr/avr.c:3900 config/avr/avr.c:4022 | |
26869 | msgid "incorrect insn:" | |
26870 | msgstr "insn incorrecta:" | |
26871 | ||
26872 | -#: config/avr/avr.c:3099 config/avr/avr.c:3260 config/avr/avr.c:3415 | |
26873 | -#: config/avr/avr.c:3622 config/avr/avr.c:3715 config/avr/avr.c:3953 | |
26874 | +#: config/avr/avr.c:3103 config/avr/avr.c:3264 config/avr/avr.c:3419 | |
26875 | +#: config/avr/avr.c:3626 config/avr/avr.c:3719 config/avr/avr.c:3956 | |
26876 | +#: config/avr/avr.c:4077 | |
26877 | msgid "unknown move insn:" | |
26878 | msgstr "insn move desconocida:" | |
26879 | ||
26880 | -#: config/avr/avr.c:4367 | |
26881 | +#: config/avr/avr.c:4491 | |
26882 | msgid "bad shift insn:" | |
26883 | msgstr "insn shift errónea:" | |
26884 | ||
26885 | -#: config/avr/avr.c:4475 config/avr/avr.c:4958 config/avr/avr.c:5375 | |
26886 | +#: config/avr/avr.c:4599 config/avr/avr.c:5080 config/avr/avr.c:5495 | |
26887 | msgid "internal compiler error. Incorrect shift:" | |
26888 | msgstr "error interno del compilador. Desplazamiento incorrecto:" | |
26889 | ||
26890 | @@ -2731,7 +2732,7 @@ | |
26891 | msgstr "operando const_double inválido" | |
26892 | ||
26893 | #: config/cris/cris.c:579 config/moxie/moxie.c:111 final.c:3129 final.c:3131 | |
26894 | -#: fold-const.c:287 gcc.c:4603 gcc.c:4617 loop-iv.c:2968 loop-iv.c:2977 | |
26895 | +#: fold-const.c:287 gcc.c:4609 gcc.c:4623 loop-iv.c:2968 loop-iv.c:2977 | |
26896 | #: rtl-error.c:103 toplev.c:346 tree-ssa-loop-niter.c:1916 tree-vrp.c:6041 | |
26897 | #: cp/typeck.c:5334 java/expr.c:390 lto/lto-object.c:184 lto/lto-object.c:282 | |
26898 | #: lto/lto-object.c:339 lto/lto-object.c:363 | |
26899 | @@ -2832,7 +2833,7 @@ | |
26900 | ||
26901 | #. Unknown flag. | |
26902 | #. Undocumented flag. | |
26903 | -#: config/epiphany/epiphany.c:1193 config/m32r/m32r.c:2217 | |
26904 | +#: config/epiphany/epiphany.c:1196 config/m32r/m32r.c:2217 | |
26905 | #: config/sparc/sparc.c:8293 | |
26906 | #, c-format | |
26907 | msgid "invalid operand output code" | |
26908 | @@ -2962,67 +2963,72 @@ | |
26909 | msgid "bad output_condmove_single operand" | |
26910 | msgstr "operando output_condmove_single erróneo" | |
26911 | ||
26912 | -#: config/i386/i386.c:13111 | |
26913 | +#: config/i386/i386.c:13125 | |
26914 | #, c-format | |
26915 | msgid "invalid UNSPEC as operand" | |
26916 | msgstr "UNSPEC inválido como operando" | |
26917 | ||
26918 | -#: config/i386/i386.c:13721 | |
26919 | +#: config/i386/i386.c:13748 | |
26920 | #, c-format | |
26921 | msgid "'%%&' used without any local dynamic TLS references" | |
26922 | msgstr "se usó '%%&' sin ninguna referencia TLS dinámica local" | |
26923 | ||
26924 | -#: config/i386/i386.c:13812 config/i386/i386.c:13887 | |
26925 | +#: config/i386/i386.c:13839 config/i386/i386.c:13914 | |
26926 | #, c-format | |
26927 | msgid "invalid operand size for operand code '%c'" | |
26928 | msgstr "tamaño de operando inválido para el código de operando '%c'" | |
26929 | ||
26930 | -#: config/i386/i386.c:13882 | |
26931 | +#: config/i386/i386.c:13909 | |
26932 | #, c-format | |
26933 | msgid "invalid operand type used with operand code '%c'" | |
26934 | msgstr "se usó un tipo de operando inválido con el código de operando '%c'" | |
26935 | ||
26936 | -#: config/i386/i386.c:13963 config/i386/i386.c:14003 | |
26937 | +#: config/i386/i386.c:13990 config/i386/i386.c:14030 | |
26938 | #, c-format | |
26939 | msgid "operand is not a condition code, invalid operand code 'D'" | |
26940 | msgstr "el operando no es un código de condición, código de operando 'D' inválido" | |
26941 | ||
26942 | -#: config/i386/i386.c:14029 | |
26943 | +#: config/i386/i386.c:14056 | |
26944 | #, c-format | |
26945 | msgid "operand is neither a constant nor a condition code, invalid operand code 'C'" | |
26946 | msgstr "el operando no es una constante ni un código de condición, código de operando 'C' inválido" | |
26947 | ||
26948 | -#: config/i386/i386.c:14039 | |
26949 | +#: config/i386/i386.c:14066 | |
26950 | #, c-format | |
26951 | msgid "operand is neither a constant nor a condition code, invalid operand code 'F'" | |
26952 | msgstr "el operando no es una constante ni un código de condición, código de operando 'F' inválido" | |
26953 | ||
26954 | -#: config/i386/i386.c:14057 | |
26955 | +#: config/i386/i386.c:14084 | |
26956 | #, c-format | |
26957 | msgid "operand is neither a constant nor a condition code, invalid operand code 'c'" | |
26958 | msgstr "el operando no es una constante ni un código de condición, código de operando 'c' inválido" | |
26959 | ||
26960 | -#: config/i386/i386.c:14067 | |
26961 | +#: config/i386/i386.c:14094 | |
26962 | #, c-format | |
26963 | msgid "operand is neither a constant nor a condition code, invalid operand code 'f'" | |
26964 | msgstr "el operando no es una constante ni un código de condición, código de operando 'f' inválido" | |
26965 | ||
26966 | -#: config/i386/i386.c:14170 | |
26967 | +#: config/i386/i386.c:14109 | |
26968 | #, c-format | |
26969 | +msgid "operand is not an offsettable memory reference, invalid operand code 'H'" | |
26970 | +msgstr "el operando no es una referencia de memoria desplazable, código de operando 'H' inválido" | |
26971 | + | |
26972 | +#: config/i386/i386.c:14204 | |
26973 | +#, c-format | |
26974 | msgid "operand is not a condition code, invalid operand code 'Y'" | |
26975 | msgstr "el operando no es un código de condición, código de operando 'Y' inválido" | |
26976 | ||
26977 | -#: config/i386/i386.c:14200 | |
26978 | +#: config/i386/i386.c:14234 | |
26979 | #, c-format | |
26980 | msgid "invalid operand code '%c'" | |
26981 | msgstr "código de operando '%c' inválido" | |
26982 | ||
26983 | -#: config/i386/i386.c:14255 | |
26984 | +#: config/i386/i386.c:14289 | |
26985 | #, c-format | |
26986 | msgid "invalid constraints for operand" | |
26987 | msgstr "restricciones inválidas para el operando" | |
26988 | ||
26989 | -#: config/i386/i386.c:23269 | |
26990 | +#: config/i386/i386.c:23303 | |
26991 | msgid "unknown insn mode" | |
26992 | msgstr "modo insn desconocido" | |
26993 | ||
26994 | @@ -3073,12 +3079,13 @@ | |
26995 | msgid "invalid operation on %<__fpreg%>" | |
26996 | msgstr "operación inválida en %<__fpreg%>" | |
26997 | ||
26998 | -#: config/iq2000/iq2000.c:3130 | |
26999 | +#: config/iq2000/iq2000.c:3130 config/tilegx/tilegx.c:5131 | |
27000 | +#: config/tilepro/tilepro.c:4702 | |
27001 | #, c-format | |
27002 | msgid "invalid %%P operand" | |
27003 | msgstr "operando %%P inválido" | |
27004 | ||
27005 | -#: config/iq2000/iq2000.c:3138 config/rs6000/rs6000.c:14940 | |
27006 | +#: config/iq2000/iq2000.c:3138 config/rs6000/rs6000.c:14956 | |
27007 | #, c-format | |
27008 | msgid "invalid %%p value" | |
27009 | msgstr "valor %%p inválido" | |
27010 | @@ -3157,7 +3164,7 @@ | |
27011 | msgstr "la dirección de post-incremento no es un registro" | |
27012 | ||
27013 | #: config/m32r/m32r.c:2321 config/m32r/m32r.c:2335 | |
27014 | -#: config/rs6000/rs6000.c:24531 | |
27015 | +#: config/rs6000/rs6000.c:24548 | |
27016 | msgid "bad address" | |
27017 | msgstr "dirección errónea" | |
27018 | ||
27019 | @@ -3204,19 +3211,19 @@ | |
27020 | msgid "letter %c was found & insn was not CONST_INT" | |
27021 | msgstr "se encontró la letra %c y la insn no era CONS_INT" | |
27022 | ||
27023 | -#: config/mips/mips.c:7547 config/mips/mips.c:7568 config/mips/mips.c:7688 | |
27024 | +#: config/mips/mips.c:7709 config/mips/mips.c:7730 config/mips/mips.c:7850 | |
27025 | #, c-format | |
27026 | msgid "'%%%c' is not a valid operand prefix" | |
27027 | msgstr "'%%%c' no es un prefijo de operando válido" | |
27028 | ||
27029 | -#: config/mips/mips.c:7625 config/mips/mips.c:7632 config/mips/mips.c:7639 | |
27030 | -#: config/mips/mips.c:7646 config/mips/mips.c:7706 config/mips/mips.c:7720 | |
27031 | -#: config/mips/mips.c:7733 config/mips/mips.c:7742 | |
27032 | +#: config/mips/mips.c:7787 config/mips/mips.c:7794 config/mips/mips.c:7801 | |
27033 | +#: config/mips/mips.c:7808 config/mips/mips.c:7868 config/mips/mips.c:7882 | |
27034 | +#: config/mips/mips.c:7895 config/mips/mips.c:7904 | |
27035 | #, c-format | |
27036 | msgid "invalid use of '%%%c'" | |
27037 | msgstr "uso inválido de '%%%c'" | |
27038 | ||
27039 | -#: config/mips/mips.c:7964 | |
27040 | +#: config/mips/mips.c:8126 | |
27041 | msgid "mips_debugger_offset called with non stack/frame/arg pointer" | |
27042 | msgstr "se llamó a mips_debuger_offset con un puntero que no es stack/frame/arg" | |
27043 | ||
27044 | @@ -3292,194 +3299,194 @@ | |
27045 | msgid "Try running '%s' in the shell to raise its limit.\n" | |
27046 | msgstr "Pruebe ejecutar '%s' en el intérprete de órdenes para elevar su límite.\n" | |
27047 | ||
27048 | -#: config/rs6000/rs6000.c:2745 | |
27049 | +#: config/rs6000/rs6000.c:2758 | |
27050 | msgid "-mvsx requires hardware floating point" | |
27051 | msgstr "-mvsx requiere coma flotante de hardware" | |
27052 | ||
27053 | -#: config/rs6000/rs6000.c:2750 | |
27054 | +#: config/rs6000/rs6000.c:2763 | |
27055 | msgid "-mvsx and -mpaired are incompatible" | |
27056 | msgstr "-mvsx y -mpaired son incompatibles" | |
27057 | ||
27058 | -#: config/rs6000/rs6000.c:2755 | |
27059 | +#: config/rs6000/rs6000.c:2768 | |
27060 | msgid "-mvsx used with little endian code" | |
27061 | msgstr "se usó -mvsx con código little endian" | |
27062 | ||
27063 | -#: config/rs6000/rs6000.c:2757 | |
27064 | +#: config/rs6000/rs6000.c:2770 | |
27065 | msgid "-mvsx needs indexed addressing" | |
27066 | msgstr "-mvsx necesita direccionamiento indizado" | |
27067 | ||
27068 | -#: config/rs6000/rs6000.c:2761 | |
27069 | +#: config/rs6000/rs6000.c:2774 | |
27070 | msgid "-mvsx and -mno-altivec are incompatible" | |
27071 | msgstr "-mvsx y -mno-altivec son incompatibles" | |
27072 | ||
27073 | -#: config/rs6000/rs6000.c:2763 | |
27074 | +#: config/rs6000/rs6000.c:2776 | |
27075 | msgid "-mno-altivec disables vsx" | |
27076 | msgstr "-mno-altivec desactiva vsx" | |
27077 | ||
27078 | -#: config/rs6000/rs6000.c:7311 | |
27079 | +#: config/rs6000/rs6000.c:7324 | |
27080 | msgid "bad move" | |
27081 | msgstr "move erróneo" | |
27082 | ||
27083 | -#: config/rs6000/rs6000.c:14750 | |
27084 | +#: config/rs6000/rs6000.c:14766 | |
27085 | #, c-format | |
27086 | msgid "invalid %%c value" | |
27087 | msgstr "valor %%c inválido" | |
27088 | ||
27089 | -#: config/rs6000/rs6000.c:14778 | |
27090 | +#: config/rs6000/rs6000.c:14794 | |
27091 | #, c-format | |
27092 | msgid "invalid %%f value" | |
27093 | msgstr "valor %%f inválido" | |
27094 | ||
27095 | -#: config/rs6000/rs6000.c:14787 | |
27096 | +#: config/rs6000/rs6000.c:14803 | |
27097 | #, c-format | |
27098 | msgid "invalid %%F value" | |
27099 | msgstr "valor %%F inválido" | |
27100 | ||
27101 | -#: config/rs6000/rs6000.c:14796 | |
27102 | +#: config/rs6000/rs6000.c:14812 | |
27103 | #, c-format | |
27104 | msgid "invalid %%G value" | |
27105 | msgstr "valor %%G inválido" | |
27106 | ||
27107 | -#: config/rs6000/rs6000.c:14831 | |
27108 | +#: config/rs6000/rs6000.c:14847 | |
27109 | #, c-format | |
27110 | msgid "invalid %%j code" | |
27111 | msgstr "código %%j inválido" | |
27112 | ||
27113 | -#: config/rs6000/rs6000.c:14841 | |
27114 | +#: config/rs6000/rs6000.c:14857 | |
27115 | #, c-format | |
27116 | msgid "invalid %%J code" | |
27117 | msgstr "código %%J inválido" | |
27118 | ||
27119 | -#: config/rs6000/rs6000.c:14851 | |
27120 | +#: config/rs6000/rs6000.c:14867 | |
27121 | #, c-format | |
27122 | msgid "invalid %%k value" | |
27123 | msgstr "valor %%k inválido" | |
27124 | ||
27125 | -#: config/rs6000/rs6000.c:14866 config/xtensa/xtensa.c:2336 | |
27126 | +#: config/rs6000/rs6000.c:14882 config/xtensa/xtensa.c:2336 | |
27127 | #, c-format | |
27128 | msgid "invalid %%K value" | |
27129 | msgstr "valor %%K inválido" | |
27130 | ||
27131 | -#: config/rs6000/rs6000.c:14930 | |
27132 | +#: config/rs6000/rs6000.c:14946 | |
27133 | #, c-format | |
27134 | msgid "invalid %%O value" | |
27135 | msgstr "valor %%O inválido" | |
27136 | ||
27137 | -#: config/rs6000/rs6000.c:14977 | |
27138 | +#: config/rs6000/rs6000.c:14993 | |
27139 | #, c-format | |
27140 | msgid "invalid %%q value" | |
27141 | msgstr "valor %%q inválido" | |
27142 | ||
27143 | -#: config/rs6000/rs6000.c:15021 | |
27144 | +#: config/rs6000/rs6000.c:15037 | |
27145 | #, c-format | |
27146 | msgid "invalid %%S value" | |
27147 | msgstr "valor %%S inválido" | |
27148 | ||
27149 | -#: config/rs6000/rs6000.c:15061 | |
27150 | +#: config/rs6000/rs6000.c:15077 | |
27151 | #, c-format | |
27152 | msgid "invalid %%T value" | |
27153 | msgstr "valor %%T inválido" | |
27154 | ||
27155 | -#: config/rs6000/rs6000.c:15071 | |
27156 | +#: config/rs6000/rs6000.c:15087 | |
27157 | #, c-format | |
27158 | msgid "invalid %%u value" | |
27159 | msgstr "valor %%u inválido" | |
27160 | ||
27161 | -#: config/rs6000/rs6000.c:15080 config/xtensa/xtensa.c:2306 | |
27162 | +#: config/rs6000/rs6000.c:15096 config/xtensa/xtensa.c:2306 | |
27163 | #, c-format | |
27164 | msgid "invalid %%v value" | |
27165 | msgstr "valor %%v inválido" | |
27166 | ||
27167 | -#: config/rs6000/rs6000.c:15179 config/xtensa/xtensa.c:2357 | |
27168 | +#: config/rs6000/rs6000.c:15195 config/xtensa/xtensa.c:2357 | |
27169 | #, c-format | |
27170 | msgid "invalid %%x value" | |
27171 | msgstr "valor %%x inválido" | |
27172 | ||
27173 | -#: config/rs6000/rs6000.c:15325 | |
27174 | +#: config/rs6000/rs6000.c:15341 | |
27175 | #, c-format | |
27176 | msgid "invalid %%y value, try using the 'Z' constraint" | |
27177 | msgstr "valor %%y inválido, pruebe usando la restricción 'Z'" | |
27178 | ||
27179 | -#: config/rs6000/rs6000.c:26941 | |
27180 | +#: config/rs6000/rs6000.c:26958 | |
27181 | msgid "AltiVec argument passed to unprototyped function" | |
27182 | msgstr "Se pasó un argumento Altivec a una función sin prototipo" | |
27183 | ||
27184 | -#: config/s390/s390.c:5135 | |
27185 | +#: config/s390/s390.c:5140 | |
27186 | #, c-format | |
27187 | msgid "symbolic memory references are only supported on z10 or later" | |
27188 | msgstr "las referencias a memoria simbólica sólo se admiten en z10 o posterior" | |
27189 | ||
27190 | -#: config/s390/s390.c:5146 | |
27191 | +#: config/s390/s390.c:5151 | |
27192 | #, c-format | |
27193 | msgid "cannot decompose address" | |
27194 | msgstr "no se puede descomponer la dirección" | |
27195 | ||
27196 | -#: config/s390/s390.c:5205 | |
27197 | +#: config/s390/s390.c:5210 | |
27198 | #, c-format | |
27199 | msgid "invalid comparison operator for 'E' output modifier" | |
27200 | msgstr "operador de comparación inválido para el modificador de salida 'E'" | |
27201 | ||
27202 | -#: config/s390/s390.c:5226 | |
27203 | +#: config/s390/s390.c:5231 | |
27204 | #, c-format | |
27205 | msgid "invalid reference for 'J' output modifier" | |
27206 | msgstr "referencia inválida para el modificador de salida 'J'" | |
27207 | ||
27208 | -#: config/s390/s390.c:5240 | |
27209 | +#: config/s390/s390.c:5245 | |
27210 | #, c-format | |
27211 | msgid "memory reference expected for 'O' output modifier" | |
27212 | msgstr "se esperaba una referencia de memoria para el modificador de salida 'O'" | |
27213 | ||
27214 | -#: config/s390/s390.c:5251 | |
27215 | +#: config/s390/s390.c:5256 | |
27216 | #, c-format | |
27217 | msgid "invalid address for 'O' output modifier" | |
27218 | msgstr "dirección inválida para el modificador de salida 'O'" | |
27219 | ||
27220 | -#: config/s390/s390.c:5269 | |
27221 | +#: config/s390/s390.c:5274 | |
27222 | #, c-format | |
27223 | msgid "memory reference expected for 'R' output modifier" | |
27224 | msgstr "se esperaba una referencia de memoria para el modificador de salida 'R'" | |
27225 | ||
27226 | -#: config/s390/s390.c:5280 | |
27227 | +#: config/s390/s390.c:5285 | |
27228 | #, c-format | |
27229 | msgid "invalid address for 'R' output modifier" | |
27230 | msgstr "dirección inválida para el modificador de salida 'R'" | |
27231 | ||
27232 | -#: config/s390/s390.c:5298 | |
27233 | +#: config/s390/s390.c:5303 | |
27234 | #, c-format | |
27235 | msgid "memory reference expected for 'S' output modifier" | |
27236 | msgstr "se esperaba una referencia de memoria para el modificador de salida 'S'" | |
27237 | ||
27238 | -#: config/s390/s390.c:5308 | |
27239 | +#: config/s390/s390.c:5313 | |
27240 | #, c-format | |
27241 | msgid "invalid address for 'S' output modifier" | |
27242 | msgstr "dirección inválida para el modificador de saida 'S'" | |
27243 | ||
27244 | -#: config/s390/s390.c:5328 | |
27245 | +#: config/s390/s390.c:5333 | |
27246 | #, c-format | |
27247 | msgid "register or memory expression expected for 'N' output modifier" | |
27248 | msgstr "se esperaba un registro o expresión de memoria para el modificador de salida 'N'" | |
27249 | ||
27250 | -#: config/s390/s390.c:5338 | |
27251 | +#: config/s390/s390.c:5343 | |
27252 | #, c-format | |
27253 | msgid "register or memory expression expected for 'M' output modifier" | |
27254 | msgstr "se esperaba un registro o expresión de memoria para el modificador de salida 'M'" | |
27255 | ||
27256 | -#: config/s390/s390.c:5403 | |
27257 | +#: config/s390/s390.c:5408 | |
27258 | #, c-format | |
27259 | msgid "invalid constant - try using an output modifier" | |
27260 | msgstr "constante inválida - pruebe usar un modificador de salida" | |
27261 | ||
27262 | -#: config/s390/s390.c:5406 | |
27263 | +#: config/s390/s390.c:5411 | |
27264 | #, c-format | |
27265 | msgid "invalid constant for output modifier '%c'" | |
27266 | msgstr "constante inválida para el modificador de salida '%c'" | |
27267 | ||
27268 | -#: config/s390/s390.c:5413 | |
27269 | +#: config/s390/s390.c:5418 | |
27270 | #, c-format | |
27271 | msgid "invalid expression - try using an output modifier" | |
27272 | msgstr "expresión inválida - pruebe usar un modificador de salida" | |
27273 | ||
27274 | -#: config/s390/s390.c:5416 | |
27275 | +#: config/s390/s390.c:5421 | |
27276 | #, c-format | |
27277 | msgid "invalid expression for output modifier '%c'" | |
27278 | msgstr "expresión inválida para el modificador de salida '%c'" | |
27279 | @@ -3489,25 +3496,25 @@ | |
27280 | msgid "invalid operand for code: '%c'" | |
27281 | msgstr "operando inválido para code: '%c'" | |
27282 | ||
27283 | -#: config/sh/sh.c:1026 | |
27284 | +#: config/sh/sh.c:1031 | |
27285 | #, c-format | |
27286 | msgid "invalid operand to %%R" | |
27287 | msgstr "operando inválido para %%R" | |
27288 | ||
27289 | -#: config/sh/sh.c:1053 | |
27290 | +#: config/sh/sh.c:1058 | |
27291 | #, c-format | |
27292 | msgid "invalid operand to %%S" | |
27293 | msgstr "operando inválido para %%S" | |
27294 | ||
27295 | -#: config/sh/sh.c:9137 | |
27296 | +#: config/sh/sh.c:9142 | |
27297 | msgid "created and used with different architectures / ABIs" | |
27298 | msgstr "creado y usado con diferentes arquitecturas / ABIs" | |
27299 | ||
27300 | -#: config/sh/sh.c:9139 | |
27301 | +#: config/sh/sh.c:9144 | |
27302 | msgid "created and used with different ABIs" | |
27303 | msgstr "creado y usado con diferentes ABIs" | |
27304 | ||
27305 | -#: config/sh/sh.c:9141 | |
27306 | +#: config/sh/sh.c:9146 | |
27307 | msgid "created and used with different endianness" | |
27308 | msgstr "creado y usado con diferente orden de bits" | |
27309 | ||
27310 | @@ -3526,12 +3533,13 @@ | |
27311 | msgid "invalid %%B operand" | |
27312 | msgstr "operando %%B inválido" | |
27313 | ||
27314 | -#: config/sparc/sparc.c:8232 | |
27315 | +#: config/sparc/sparc.c:8232 config/tilegx/tilegx.c:4934 | |
27316 | +#: config/tilepro/tilepro.c:4505 | |
27317 | #, c-format | |
27318 | msgid "invalid %%C operand" | |
27319 | msgstr "operando %%C inválido" | |
27320 | ||
27321 | -#: config/sparc/sparc.c:8249 | |
27322 | +#: config/sparc/sparc.c:8249 config/tilegx/tilegx.c:4967 | |
27323 | #, c-format | |
27324 | msgid "invalid %%D operand" | |
27325 | msgstr "operando %%D inválido" | |
27326 | @@ -3576,6 +3584,91 @@ | |
27327 | msgid "xstormy16_print_operand: unknown code" | |
27328 | msgstr "xstormy16_print_operand: código desconocido" | |
27329 | ||
27330 | +#: config/tilegx/tilegx.c:4919 config/tilepro/tilepro.c:4490 | |
27331 | +#, c-format | |
27332 | +msgid "invalid %%c operand" | |
27333 | +msgstr "operando %%c inválido" | |
27334 | + | |
27335 | +#: config/tilegx/tilegx.c:4950 | |
27336 | +#, c-format | |
27337 | +msgid "invalid %%d operand" | |
27338 | +msgstr "operando %%d inválido" | |
27339 | + | |
27340 | +#: config/tilegx/tilegx.c:5033 | |
27341 | +#, c-format | |
27342 | +msgid "invalid %%H specifier" | |
27343 | +msgstr "especificador %%H inválido" | |
27344 | + | |
27345 | +#: config/tilegx/tilegx.c:5069 config/tilepro/tilepro.c:4519 | |
27346 | +#, c-format | |
27347 | +msgid "invalid %%h operand" | |
27348 | +msgstr "operando %%h inválido" | |
27349 | + | |
27350 | +#: config/tilegx/tilegx.c:5081 config/tilepro/tilepro.c:4583 | |
27351 | +#, c-format | |
27352 | +msgid "invalid %%I operand" | |
27353 | +msgstr "operando %%I inválido" | |
27354 | + | |
27355 | +#: config/tilegx/tilegx.c:5095 config/tilepro/tilepro.c:4597 | |
27356 | +#, c-format | |
27357 | +msgid "invalid %%i operand" | |
27358 | +msgstr "operando %%i inválido" | |
27359 | + | |
27360 | +#: config/tilegx/tilegx.c:5118 config/tilepro/tilepro.c:4620 | |
27361 | +#, c-format | |
27362 | +msgid "invalid %%j operand" | |
27363 | +msgstr "operando %%j inválido" | |
27364 | + | |
27365 | +#: config/tilegx/tilegx.c:5149 | |
27366 | +#, c-format | |
27367 | +msgid "invalid %%%c operand" | |
27368 | +msgstr "operando %%%c inválido" | |
27369 | + | |
27370 | +#: config/tilegx/tilegx.c:5164 config/tilepro/tilepro.c:4734 | |
27371 | +#, c-format | |
27372 | +msgid "invalid %%N operand" | |
27373 | +msgstr "operando %%N inválido" | |
27374 | + | |
27375 | +#: config/tilegx/tilegx.c:5208 | |
27376 | +#, c-format | |
27377 | +msgid "invalid operand for 'r' specifier" | |
27378 | +msgstr "operando inválido para el especificador 'r'" | |
27379 | + | |
27380 | +#: config/tilegx/tilegx.c:5233 config/tilepro/tilepro.c:4816 | |
27381 | +#, c-format | |
27382 | +msgid "unable to print out operand yet; code == %d (%c)" | |
27383 | +msgstr "aún no se puede mostrar el operando; code == %d (%c)" | |
27384 | + | |
27385 | +#: config/tilepro/tilepro.c:4555 | |
27386 | +#, c-format | |
27387 | +msgid "invalid %%H operand" | |
27388 | +msgstr "operando %%H inválido" | |
27389 | + | |
27390 | +#: config/tilepro/tilepro.c:4659 | |
27391 | +#, c-format | |
27392 | +msgid "invalid %%L operand" | |
27393 | +msgstr "operando %%L inválido" | |
27394 | + | |
27395 | +#: config/tilepro/tilepro.c:4719 | |
27396 | +#, c-format | |
27397 | +msgid "invalid %%M operand" | |
27398 | +msgstr "operando %%M inválido" | |
27399 | + | |
27400 | +#: config/tilepro/tilepro.c:4762 | |
27401 | +#, c-format | |
27402 | +msgid "invalid %%t operand" | |
27403 | +msgstr "operando %%t inválido" | |
27404 | + | |
27405 | +#: config/tilepro/tilepro.c:4769 | |
27406 | +#, c-format | |
27407 | +msgid "invalid %%t operand '" | |
27408 | +msgstr "operando %%t inválido '" | |
27409 | + | |
27410 | +#: config/tilepro/tilepro.c:4790 | |
27411 | +#, c-format | |
27412 | +msgid "invalid %%r operand" | |
27413 | +msgstr "operando %%r inválido" | |
27414 | + | |
27415 | #: config/v850/v850.c:260 | |
27416 | msgid "const_double_split got a bad insn:" | |
27417 | msgstr "const_double_split recibió una insn errónea:" | |
27418 | @@ -3724,7 +3817,7 @@ | |
27419 | msgid "<declaration error>" | |
27420 | msgstr "<error de declaración>" | |
27421 | ||
27422 | -#: cp/error.c:1432 cp/error.c:2802 | |
27423 | +#: cp/error.c:1432 cp/error.c:2804 | |
27424 | msgid "with" | |
27425 | msgstr "con" | |
27426 | ||
27427 | @@ -3742,111 +3835,111 @@ | |
27428 | msgid "<throw-expression>" | |
27429 | msgstr "<expresión-throw>" | |
27430 | ||
27431 | -#: cp/error.c:2334 | |
27432 | +#: cp/error.c:2336 | |
27433 | msgid "<unparsed>" | |
27434 | msgstr "<sidecodificar>" | |
27435 | ||
27436 | -#: cp/error.c:2484 | |
27437 | +#: cp/error.c:2486 | |
27438 | msgid "<expression error>" | |
27439 | msgstr "<error de expresión>" | |
27440 | ||
27441 | -#: cp/error.c:2498 | |
27442 | +#: cp/error.c:2500 | |
27443 | msgid "<unknown operator>" | |
27444 | msgstr "<operador desconocido>" | |
27445 | ||
27446 | -#: cp/error.c:2754 | |
27447 | +#: cp/error.c:2756 | |
27448 | msgid "{unknown}" | |
27449 | msgstr "{desconocida}" | |
27450 | ||
27451 | -#: cp/error.c:2869 | |
27452 | +#: cp/error.c:2871 | |
27453 | msgid "At global scope:" | |
27454 | msgstr "En el ámbito global:" | |
27455 | ||
27456 | -#: cp/error.c:2975 | |
27457 | +#: cp/error.c:2977 | |
27458 | #, c-format | |
27459 | msgid "In static member function %qs" | |
27460 | msgstr "En la función miembro static %qs" | |
27461 | ||
27462 | -#: cp/error.c:2977 | |
27463 | +#: cp/error.c:2979 | |
27464 | #, c-format | |
27465 | msgid "In copy constructor %qs" | |
27466 | msgstr "En el constructor copia %qs" | |
27467 | ||
27468 | -#: cp/error.c:2979 | |
27469 | +#: cp/error.c:2981 | |
27470 | #, c-format | |
27471 | msgid "In constructor %qs" | |
27472 | msgstr "En el constructor %qs" | |
27473 | ||
27474 | -#: cp/error.c:2981 | |
27475 | +#: cp/error.c:2983 | |
27476 | #, c-format | |
27477 | msgid "In destructor %qs" | |
27478 | msgstr "En el destructor %qs" | |
27479 | ||
27480 | -#: cp/error.c:2983 | |
27481 | +#: cp/error.c:2985 | |
27482 | msgid "In lambda function" | |
27483 | msgstr "En la función lambda" | |
27484 | ||
27485 | -#: cp/error.c:3003 | |
27486 | +#: cp/error.c:3005 | |
27487 | #, c-format | |
27488 | msgid "%s: In substitution of %qS:\n" | |
27489 | msgstr "%s: En la sustitución de %qS:\n" | |
27490 | ||
27491 | -#: cp/error.c:3004 | |
27492 | +#: cp/error.c:3006 | |
27493 | msgid "%s: In instantiation of %q#D:\n" | |
27494 | msgstr "%s: En la instanciación de %q#D:\n" | |
27495 | ||
27496 | -#: cp/error.c:3027 | |
27497 | +#: cp/error.c:3029 | |
27498 | #, c-format | |
27499 | msgid "%s:%d:%d: " | |
27500 | msgstr "%s:%d:%d: " | |
27501 | ||
27502 | -#: cp/error.c:3030 | |
27503 | +#: cp/error.c:3032 | |
27504 | #, c-format | |
27505 | msgid "%s:%d: " | |
27506 | msgstr "%s:%d: " | |
27507 | ||
27508 | -#: cp/error.c:3038 | |
27509 | +#: cp/error.c:3040 | |
27510 | #, c-format | |
27511 | msgid "recursively required by substitution of %qS\n" | |
27512 | msgstr "se requiere recursivamente para la sustitución de %qS\n" | |
27513 | ||
27514 | -#: cp/error.c:3039 | |
27515 | +#: cp/error.c:3041 | |
27516 | #, c-format | |
27517 | msgid "required by substitution of %qS\n" | |
27518 | msgstr "se requiere para la sustitución de %qS\n" | |
27519 | ||
27520 | -#: cp/error.c:3044 | |
27521 | +#: cp/error.c:3046 | |
27522 | msgid "recursively required from %q#D\n" | |
27523 | msgstr "se requiere recursivamente desde %q#D\n" | |
27524 | ||
27525 | -#: cp/error.c:3045 | |
27526 | +#: cp/error.c:3047 | |
27527 | msgid "required from %q#D\n" | |
27528 | msgstr "se requiere desde %q#D\n" | |
27529 | ||
27530 | -#: cp/error.c:3052 | |
27531 | +#: cp/error.c:3054 | |
27532 | msgid "recursively required from here" | |
27533 | msgstr "se requiere recursivamente desde aquí" | |
27534 | ||
27535 | -#: cp/error.c:3053 | |
27536 | +#: cp/error.c:3055 | |
27537 | msgid "required from here" | |
27538 | msgstr "se requiere desde aquí" | |
27539 | ||
27540 | -#: cp/error.c:3095 | |
27541 | +#: cp/error.c:3097 | |
27542 | #, c-format | |
27543 | msgid "%s:%d:%d: [ skipping %d instantiation contexts ]\n" | |
27544 | msgstr "%s:%d:%d: [ se saltan %d contextos de instanciación ]\n" | |
27545 | ||
27546 | -#: cp/error.c:3099 | |
27547 | +#: cp/error.c:3101 | |
27548 | #, c-format | |
27549 | msgid "%s:%d: [ skipping %d instantiation contexts ]\n" | |
27550 | msgstr "%s:%d: [ se saltan %d contextos de instanciación ]\n" | |
27551 | ||
27552 | -#: cp/error.c:3161 | |
27553 | +#: cp/error.c:3163 | |
27554 | #, c-format | |
27555 | msgid "%s:%d:%d: in constexpr expansion of %qs" | |
27556 | msgstr "%s:%d:%d: en la expansión de la expresión constante de %qs" | |
27557 | ||
27558 | -#: cp/error.c:3165 | |
27559 | +#: cp/error.c:3167 | |
27560 | #, c-format | |
27561 | msgid "%s:%d: in constexpr expansion of %qs" | |
27562 | msgstr "%s:%d: en la expansión de la expresión constante de %qs" | |
27563 | @@ -3855,7 +3948,7 @@ | |
27564 | msgid "candidates are:" | |
27565 | msgstr "los candidatos son:" | |
27566 | ||
27567 | -#: cp/pt.c:17792 cp/call.c:3289 | |
27568 | +#: cp/pt.c:17805 cp/call.c:3289 | |
27569 | #, gcc-internal-format | |
27570 | msgid "candidate is:" | |
27571 | msgid_plural "candidates are:" | |
27572 | @@ -4046,7 +4139,7 @@ | |
27573 | msgid "Driving:" | |
27574 | msgstr "Conduciendo:" | |
27575 | ||
27576 | -#: fortran/interface.c:2477 fortran/intrinsic.c:3641 | |
27577 | +#: fortran/interface.c:2478 fortran/intrinsic.c:3641 | |
27578 | msgid "actual argument to INTENT = OUT/INOUT" | |
27579 | msgstr "argumento actual de INTENT = OUT/INOUT" | |
27580 | ||
27581 | @@ -4112,13 +4205,13 @@ | |
27582 | msgid "%s tag" | |
27583 | msgstr "etiqueta %s" | |
27584 | ||
27585 | -#: fortran/io.c:2872 | |
27586 | +#: fortran/io.c:2868 | |
27587 | msgid "internal unit in WRITE" | |
27588 | msgstr "unidad interna en WRITE" | |
27589 | ||
27590 | #. For INQUIRE, all tags except FILE, ID and UNIT are variable definition | |
27591 | #. contexts. Thus, use an extended RESOLVE_TAG macro for that. | |
27592 | -#: fortran/io.c:4066 | |
27593 | +#: fortran/io.c:4062 | |
27594 | #, c-format | |
27595 | msgid "%s tag with INQUIRE" | |
27596 | msgstr "etiqueta %s con INQUIRE" | |
27597 | @@ -4128,75 +4221,75 @@ | |
27598 | msgid "Syntax error in expression at %C" | |
27599 | msgstr "Error sintáctico en la expresión en %C" | |
27600 | ||
27601 | -#: fortran/module.c:1054 | |
27602 | +#: fortran/module.c:1061 | |
27603 | msgid "Unexpected EOF" | |
27604 | msgstr "Fin de fichero inesperado" | |
27605 | ||
27606 | -#: fortran/module.c:1139 | |
27607 | +#: fortran/module.c:1146 | |
27608 | msgid "Integer overflow" | |
27609 | msgstr "Desbordamiento entero" | |
27610 | ||
27611 | -#: fortran/module.c:1169 | |
27612 | +#: fortran/module.c:1176 | |
27613 | msgid "Name too long" | |
27614 | msgstr "Nombre demasiado largo" | |
27615 | ||
27616 | -#: fortran/module.c:1271 fortran/module.c:1374 | |
27617 | +#: fortran/module.c:1278 fortran/module.c:1381 | |
27618 | msgid "Bad name" | |
27619 | msgstr "Nombre erróneo" | |
27620 | ||
27621 | -#: fortran/module.c:1398 | |
27622 | +#: fortran/module.c:1405 | |
27623 | msgid "Expected name" | |
27624 | msgstr "Se esperaba un nombre" | |
27625 | ||
27626 | -#: fortran/module.c:1401 | |
27627 | +#: fortran/module.c:1408 | |
27628 | msgid "Expected left parenthesis" | |
27629 | msgstr "Se esperaba un paréntesis izquierdo" | |
27630 | ||
27631 | -#: fortran/module.c:1404 | |
27632 | +#: fortran/module.c:1411 | |
27633 | msgid "Expected right parenthesis" | |
27634 | msgstr "Se esperaba un paréntesis derecho" | |
27635 | ||
27636 | -#: fortran/module.c:1407 | |
27637 | +#: fortran/module.c:1414 | |
27638 | msgid "Expected integer" | |
27639 | msgstr "Se esperaba un entero" | |
27640 | ||
27641 | -#: fortran/module.c:1410 fortran/module.c:2312 | |
27642 | +#: fortran/module.c:1417 fortran/module.c:2332 | |
27643 | msgid "Expected string" | |
27644 | msgstr "Se esperaba una cadena" | |
27645 | ||
27646 | -#: fortran/module.c:1435 | |
27647 | +#: fortran/module.c:1442 | |
27648 | msgid "find_enum(): Enum not found" | |
27649 | msgstr "find_enum(): No se encontró el enumerador" | |
27650 | ||
27651 | -#: fortran/module.c:2065 | |
27652 | +#: fortran/module.c:2085 | |
27653 | msgid "Expected attribute bit name" | |
27654 | msgstr "Se esperaba un nombre de atributo de bit" | |
27655 | ||
27656 | -#: fortran/module.c:2963 | |
27657 | +#: fortran/module.c:2983 | |
27658 | msgid "Expected integer string" | |
27659 | msgstr "Se esperaba una cadena entera" | |
27660 | ||
27661 | -#: fortran/module.c:2967 | |
27662 | +#: fortran/module.c:2987 | |
27663 | msgid "Error converting integer" | |
27664 | msgstr "Error al convertir el entero" | |
27665 | ||
27666 | -#: fortran/module.c:2989 | |
27667 | +#: fortran/module.c:3009 | |
27668 | msgid "Expected real string" | |
27669 | msgstr "Se esperaba una cadena real" | |
27670 | ||
27671 | -#: fortran/module.c:3211 | |
27672 | +#: fortran/module.c:3231 | |
27673 | msgid "Expected expression type" | |
27674 | msgstr "Se esperaba un tipo de expresión" | |
27675 | ||
27676 | -#: fortran/module.c:3265 | |
27677 | +#: fortran/module.c:3285 | |
27678 | msgid "Bad operator" | |
27679 | msgstr "Operador erróneo" | |
27680 | ||
27681 | -#: fortran/module.c:3354 | |
27682 | +#: fortran/module.c:3374 | |
27683 | msgid "Bad type in constant expression" | |
27684 | msgstr "Tipo erróneo en la expresión constante" | |
27685 | ||
27686 | -#: fortran/module.c:6050 | |
27687 | +#: fortran/module.c:6087 | |
27688 | msgid "Unexpected end of module" | |
27689 | msgstr "Fin de módulo inesperado" | |
27690 | ||
27691 | @@ -4224,11 +4317,11 @@ | |
27692 | msgid "implied END DO" | |
27693 | msgstr "END DO implícito" | |
27694 | ||
27695 | -#: fortran/parse.c:1475 fortran/resolve.c:9409 | |
27696 | +#: fortran/parse.c:1475 fortran/resolve.c:9396 | |
27697 | msgid "assignment" | |
27698 | msgstr "asignación" | |
27699 | ||
27700 | -#: fortran/parse.c:1478 fortran/resolve.c:9448 fortran/resolve.c:9451 | |
27701 | +#: fortran/parse.c:1478 fortran/resolve.c:9435 fortran/resolve.c:9438 | |
27702 | msgid "pointer assignment" | |
27703 | msgstr "asignación de puntero" | |
27704 | ||
27705 | @@ -4244,115 +4337,115 @@ | |
27706 | msgid "internal function" | |
27707 | msgstr "función interna" | |
27708 | ||
27709 | -#: fortran/resolve.c:1983 | |
27710 | +#: fortran/resolve.c:1973 | |
27711 | msgid "elemental procedure" | |
27712 | msgstr "procedimiento elemental" | |
27713 | ||
27714 | -#: fortran/resolve.c:3811 | |
27715 | +#: fortran/resolve.c:3798 | |
27716 | #, c-format | |
27717 | msgid "Invalid context for NULL() pointer at %%L" | |
27718 | msgstr "Contexto inválido para el puntero NULL() en %%L" | |
27719 | ||
27720 | -#: fortran/resolve.c:3827 | |
27721 | +#: fortran/resolve.c:3814 | |
27722 | #, c-format | |
27723 | msgid "Operand of unary numeric operator '%s' at %%L is %s" | |
27724 | msgstr "El operando del operador numérico unario '%s' en %%L es %s" | |
27725 | ||
27726 | -#: fortran/resolve.c:3843 | |
27727 | +#: fortran/resolve.c:3830 | |
27728 | #, c-format | |
27729 | msgid "Operands of binary numeric operator '%s' at %%L are %s/%s" | |
27730 | msgstr "Los operandos del operador binario numérico '%s' en %%L son %s/%s" | |
27731 | ||
27732 | -#: fortran/resolve.c:3858 | |
27733 | +#: fortran/resolve.c:3845 | |
27734 | #, c-format | |
27735 | msgid "Operands of string concatenation operator at %%L are %s/%s" | |
27736 | msgstr "Los operandos del operador de concatenación de cadenas en %%L son %s/%s" | |
27737 | ||
27738 | -#: fortran/resolve.c:3877 | |
27739 | +#: fortran/resolve.c:3864 | |
27740 | #, c-format | |
27741 | msgid "Operands of logical operator '%s' at %%L are %s/%s" | |
27742 | msgstr "Los operandos del operador lógico '%s' en %%L son %s/%s" | |
27743 | ||
27744 | -#: fortran/resolve.c:3891 | |
27745 | +#: fortran/resolve.c:3878 | |
27746 | #, c-format | |
27747 | msgid "Operand of .not. operator at %%L is %s" | |
27748 | msgstr "El operando del operador .not. en %%L es %s" | |
27749 | ||
27750 | -#: fortran/resolve.c:3905 | |
27751 | +#: fortran/resolve.c:3892 | |
27752 | msgid "COMPLEX quantities cannot be compared at %L" | |
27753 | msgstr "Las cantidades COMPLEX no se pueden comparar en %L" | |
27754 | ||
27755 | -#: fortran/resolve.c:3934 | |
27756 | +#: fortran/resolve.c:3921 | |
27757 | #, c-format | |
27758 | msgid "Logicals at %%L must be compared with %s instead of %s" | |
27759 | msgstr "Los lógicos en %%L se deben comparar con %s en lugar de %s" | |
27760 | ||
27761 | -#: fortran/resolve.c:3940 | |
27762 | +#: fortran/resolve.c:3927 | |
27763 | #, c-format | |
27764 | msgid "Operands of comparison operator '%s' at %%L are %s/%s" | |
27765 | msgstr "Los operandos del operador de comparación '%s' en %%L son %s/%s" | |
27766 | ||
27767 | -#: fortran/resolve.c:3948 | |
27768 | +#: fortran/resolve.c:3935 | |
27769 | #, c-format | |
27770 | msgid "Unknown operator '%s' at %%L" | |
27771 | msgstr "Operador '%s' desconocido en %%L" | |
27772 | ||
27773 | -#: fortran/resolve.c:3950 | |
27774 | +#: fortran/resolve.c:3937 | |
27775 | #, c-format | |
27776 | msgid "Operand of user operator '%s' at %%L is %s" | |
27777 | msgstr "El operando del operador de usuario '%s' en %%L es %s" | |
27778 | ||
27779 | -#: fortran/resolve.c:3954 | |
27780 | +#: fortran/resolve.c:3941 | |
27781 | #, c-format | |
27782 | msgid "Operands of user operator '%s' at %%L are %s/%s" | |
27783 | msgstr "Los operandos del operador de usuario '%s' en %%L son %s/%s" | |
27784 | ||
27785 | -#: fortran/resolve.c:4042 | |
27786 | +#: fortran/resolve.c:4029 | |
27787 | #, c-format | |
27788 | msgid "Inconsistent ranks for operator at %%L and %%L" | |
27789 | msgstr "Rangos inconsistentes para el operador en %%L y %%L" | |
27790 | ||
27791 | -#: fortran/resolve.c:6415 | |
27792 | +#: fortran/resolve.c:6402 | |
27793 | msgid "Loop variable" | |
27794 | msgstr "Variable de ciclo" | |
27795 | ||
27796 | -#: fortran/resolve.c:6419 | |
27797 | +#: fortran/resolve.c:6406 | |
27798 | msgid "iterator variable" | |
27799 | msgstr "variable de iterador" | |
27800 | ||
27801 | -#: fortran/resolve.c:6424 | |
27802 | +#: fortran/resolve.c:6411 | |
27803 | msgid "Start expression in DO loop" | |
27804 | msgstr "Expresión de inicio en el bucle DO" | |
27805 | ||
27806 | -#: fortran/resolve.c:6428 | |
27807 | +#: fortran/resolve.c:6415 | |
27808 | msgid "End expression in DO loop" | |
27809 | msgstr "Expresión de fin en el bucle DO" | |
27810 | ||
27811 | -#: fortran/resolve.c:6432 | |
27812 | +#: fortran/resolve.c:6419 | |
27813 | msgid "Step expression in DO loop" | |
27814 | msgstr "Expresión de paso en el bucle DO" | |
27815 | ||
27816 | -#: fortran/resolve.c:6688 fortran/resolve.c:6691 | |
27817 | +#: fortran/resolve.c:6675 fortran/resolve.c:6678 | |
27818 | msgid "DEALLOCATE object" | |
27819 | msgstr "objeto DEALLOCATE" | |
27820 | ||
27821 | -#: fortran/resolve.c:7033 fortran/resolve.c:7035 | |
27822 | +#: fortran/resolve.c:7020 fortran/resolve.c:7022 | |
27823 | msgid "ALLOCATE object" | |
27824 | msgstr "objeto ALLOCATE" | |
27825 | ||
27826 | -#: fortran/resolve.c:7215 fortran/resolve.c:8448 | |
27827 | +#: fortran/resolve.c:7202 fortran/resolve.c:8435 | |
27828 | msgid "STAT variable" | |
27829 | msgstr "variable STAT" | |
27830 | ||
27831 | -#: fortran/resolve.c:7258 fortran/resolve.c:8460 | |
27832 | +#: fortran/resolve.c:7245 fortran/resolve.c:8447 | |
27833 | msgid "ERRMSG variable" | |
27834 | msgstr "variable ERRMSG" | |
27835 | ||
27836 | -#: fortran/resolve.c:8326 | |
27837 | +#: fortran/resolve.c:8313 | |
27838 | msgid "item in READ" | |
27839 | msgstr "elemento en READ" | |
27840 | ||
27841 | -#: fortran/resolve.c:8472 | |
27842 | +#: fortran/resolve.c:8459 | |
27843 | msgid "ACQUIRED_LOCK variable" | |
27844 | msgstr "variable ACQUIRED_LOCK" | |
27845 | ||
27846 | @@ -4365,17 +4458,17 @@ | |
27847 | msgid "Integer overflow when calculating the amount of memory to allocate" | |
27848 | msgstr "Desborde entero al calcular la cantidad de memoria a reservar" | |
27849 | ||
27850 | -#: fortran/trans-decl.c:4776 | |
27851 | +#: fortran/trans-decl.c:4791 | |
27852 | #, c-format | |
27853 | msgid "Actual string length does not match the declared one for dummy argument '%s' (%ld/%ld)" | |
27854 | msgstr "La longitud de la cadena actual no coincide con la declarada para el argumento dummy '%s' (%ld/%ld)" | |
27855 | ||
27856 | -#: fortran/trans-decl.c:4784 | |
27857 | +#: fortran/trans-decl.c:4799 | |
27858 | #, c-format | |
27859 | msgid "Actual string length is shorter than the declared one for dummy argument '%s' (%ld/%ld)" | |
27860 | msgstr "La longitud de la cadena actual es más corta que la declarada para el argumento dummy '%s' (%ld/%ld)" | |
27861 | ||
27862 | -#: fortran/trans-expr.c:5960 | |
27863 | +#: fortran/trans-expr.c:5964 | |
27864 | #, c-format | |
27865 | msgid "Target of rank remapping is too small (%ld < %ld)" | |
27866 | msgstr "El objetivo del remapeo de rango es demasiado pequeño (%ld < %ld)" | |
27867 | @@ -4406,16 +4499,16 @@ | |
27868 | msgid "Assigned label is not a target label" | |
27869 | msgstr "La etiqueta asignada no es una etiqueta objetivo" | |
27870 | ||
27871 | -#: fortran/trans-stmt.c:771 | |
27872 | +#: fortran/trans-stmt.c:793 | |
27873 | #, c-format | |
27874 | msgid "Invalid image number %d in SYNC IMAGES" | |
27875 | msgstr "Número de imagen %d inválido en SYNC IMAGES" | |
27876 | ||
27877 | -#: fortran/trans-stmt.c:1347 fortran/trans-stmt.c:1628 | |
27878 | +#: fortran/trans-stmt.c:1369 fortran/trans-stmt.c:1650 | |
27879 | msgid "Loop variable has been modified" | |
27880 | msgstr "Se modificó la variable de ciclo" | |
27881 | ||
27882 | -#: fortran/trans-stmt.c:1487 | |
27883 | +#: fortran/trans-stmt.c:1509 | |
27884 | msgid "DO step value is zero" | |
27885 | msgstr "El valor de paso de DO es cero" | |
27886 | ||
27887 | @@ -4616,47 +4709,77 @@ | |
27888 | msgid "-fuse-linker-plugin is not supported in this configuration" | |
27889 | msgstr "-fuse-linker-plugin no se admite en esta configuración" | |
27890 | ||
27891 | -#: gcc.c:777 ada/gcc-interface/lang-specs.h:33 java/jvspec.c:80 | |
27892 | +#: gcc.c:778 ada/gcc-interface/lang-specs.h:33 java/jvspec.c:80 | |
27893 | msgid "-pg and -fomit-frame-pointer are incompatible" | |
27894 | msgstr "-pg y -fomit-frame-pointer son incompatibles" | |
27895 | ||
27896 | -#: gcc.c:939 | |
27897 | +#: gcc.c:945 | |
27898 | msgid "GNU C no longer supports -traditional without -E" | |
27899 | msgstr "C de GNU ya no admite -traditional sin usar -E" | |
27900 | ||
27901 | -#: gcc.c:948 | |
27902 | +#: gcc.c:954 | |
27903 | msgid "-E or -x required when input is from standard input" | |
27904 | msgstr "se requiere -E ó -x cuando la entrada es de entrada estándar" | |
27905 | ||
27906 | -#: config/alpha/freebsd.h:34 config/ia64/freebsd.h:26 config/i386/freebsd.h:96 | |
27907 | -#: config/i386/freebsd64.h:35 config/arm/freebsd.h:31 | |
27908 | -#: config/rs6000/sysv4.h:772 config/sparc/freebsd.h:46 | |
27909 | +#: config/cris/cris.h:192 | |
27910 | +msgid "do not specify both -march=... and -mcpu=..." | |
27911 | +msgstr "no especifique -march=... y -mcpu=... al mismo tiempo" | |
27912 | + | |
27913 | +#: config/alpha/freebsd.h:34 config/sparc/freebsd.h:46 | |
27914 | +#: config/ia64/freebsd.h:26 config/arm/freebsd.h:31 config/i386/freebsd.h:96 | |
27915 | +#: config/i386/freebsd64.h:35 config/rs6000/sysv4.h:772 | |
27916 | msgid "consider using '-pg' instead of '-p' with gprof(1)" | |
27917 | msgstr "considere usar '-pg' en lugar de '-p' con gprof(1)" | |
27918 | ||
27919 | -#: fortran/lang-specs.h:55 fortran/lang-specs.h:69 | |
27920 | -msgid "gfortran does not support -E without -cpp" | |
27921 | -msgstr "gfortran no admite -E sin usar -cpp" | |
27922 | +#: ada/gcc-interface/lang-specs.h:34 | |
27923 | +msgid "-c or -S required for Ada" | |
27924 | +msgstr "se requiere -c o -S para Ada" | |
27925 | ||
27926 | -#: config/i386/mingw-w64.h:83 config/i386/mingw32.h:116 | |
27927 | -#: config/i386/cygwin.h:114 | |
27928 | -msgid "shared and mdll are not compatible" | |
27929 | -msgstr "shared y mdll no son compatibles" | |
27930 | +#: ada/gcc-interface/lang-specs.h:52 | |
27931 | +msgid "-c required for gnat2why" | |
27932 | +msgstr "se requiere -c para gnat2why" | |
27933 | ||
27934 | -#: config/vax/netbsd-elf.h:51 | |
27935 | -msgid "the -shared option is not currently supported for VAX ELF" | |
27936 | -msgstr "la opción -shared no se admite actualmente en ELF de VAX" | |
27937 | +#: config/rx/rx.h:57 | |
27938 | +msgid "-mas100-syntax is incompatible with -gdwarf" | |
27939 | +msgstr "-mas100-syntax es incompatible con -gdwarf" | |
27940 | ||
27941 | +#: config/rx/rx.h:58 | |
27942 | +msgid "rx200 cpu does not have FPU hardware" | |
27943 | +msgstr "el cpu rx200 no tiene FPU de hardware" | |
27944 | + | |
27945 | +#: config/sparc/linux64.h:158 config/sparc/linux64.h:165 | |
27946 | #: config/sparc/netbsd-elf.h:109 config/sparc/netbsd-elf.h:118 | |
27947 | -#: config/sparc/sol2.h:201 config/sparc/sol2.h:207 config/sparc/linux64.h:158 | |
27948 | -#: config/sparc/linux64.h:165 | |
27949 | +#: config/sparc/sol2.h:201 config/sparc/sol2.h:207 | |
27950 | msgid "may not use both -m32 and -m64" | |
27951 | msgstr "no se pueden usar -m32 y -m64 al mismo tiempo" | |
27952 | ||
27953 | -#: config/vax/vax.h:50 config/vax/vax.h:51 | |
27954 | -msgid "profiling not supported with -mg" | |
27955 | -msgstr "el análisis de perfil no se admite con -mg" | |
27956 | +#: config/pa/pa64-hpux.h:30 config/pa/pa64-hpux.h:33 config/pa/pa64-hpux.h:42 | |
27957 | +#: config/pa/pa64-hpux.h:45 config/pa/pa-hpux10.h:89 config/pa/pa-hpux10.h:92 | |
27958 | +#: config/pa/pa-hpux10.h:100 config/pa/pa-hpux10.h:103 | |
27959 | +#: config/pa/pa-hpux11.h:108 config/pa/pa-hpux11.h:111 | |
27960 | +msgid "warning: consider linking with '-static' as system libraries with" | |
27961 | +msgstr "aviso: considere enlazar con '-static' como bibliotecas de sistema con" | |
27962 | ||
27963 | +#: config/pa/pa64-hpux.h:31 config/pa/pa64-hpux.h:34 config/pa/pa64-hpux.h:43 | |
27964 | +#: config/pa/pa64-hpux.h:46 config/pa/pa-hpux10.h:90 config/pa/pa-hpux10.h:93 | |
27965 | +#: config/pa/pa-hpux10.h:101 config/pa/pa-hpux10.h:104 | |
27966 | +#: config/pa/pa-hpux11.h:109 config/pa/pa-hpux11.h:112 | |
27967 | +msgid " profiling support are only provided in archive format" | |
27968 | +msgstr " soporte a análisis de perfil sólo se proveen en formato de archivo" | |
27969 | + | |
27970 | +#: config/lynx.h:70 | |
27971 | +msgid "cannot use mthreads and mlegacy-threads together" | |
27972 | +msgstr "no se pueden usar mthreads y mlegacy-threads juntos" | |
27973 | + | |
27974 | +#: config/lynx.h:95 | |
27975 | +msgid "cannot use mshared and static together" | |
27976 | +msgstr "no se pueden usar mshared y static juntos" | |
27977 | + | |
27978 | +#: config/i386/mingw-w64.h:83 config/i386/mingw32.h:116 | |
27979 | +#: config/i386/cygwin.h:114 | |
27980 | +msgid "shared and mdll are not compatible" | |
27981 | +msgstr "shared y mdll no son compatibles" | |
27982 | + | |
27983 | #: config/s390/tpf.h:116 | |
27984 | msgid "static is not supported on TPF-OS" | |
27985 | msgstr "static no se admite en TPF-OS" | |
27986 | @@ -4673,42 +4796,6 @@ | |
27987 | msgid "-msingle-float and -msoft-float cannot both be specified" | |
27988 | msgstr "no se pueden especificar -msingle-float y -msoft-float al mismo tiempo" | |
27989 | ||
27990 | -#: config/lynx.h:70 | |
27991 | -msgid "cannot use mthreads and mlegacy-threads together" | |
27992 | -msgstr "no se pueden usar mthreads y mlegacy-threads juntos" | |
27993 | - | |
27994 | -#: config/lynx.h:95 | |
27995 | -msgid "cannot use mshared and static together" | |
27996 | -msgstr "no se pueden usar mshared y static juntos" | |
27997 | - | |
27998 | -#: objcp/lang-specs.h:58 | |
27999 | -msgid "objc++-cpp-output is deprecated; please use objective-c++-cpp-output instead" | |
28000 | -msgstr "objc++-cpp-output es obsoleto; pr favor use en su lugar objective-c++-cpp-output" | |
28001 | - | |
28002 | -#: ada/gcc-interface/lang-specs.h:34 | |
28003 | -msgid "-c or -S required for Ada" | |
28004 | -msgstr "se requiere -c o -S para Ada" | |
28005 | - | |
28006 | -#: ada/gcc-interface/lang-specs.h:52 | |
28007 | -msgid "-c required for gnat2why" | |
28008 | -msgstr "se requiere -c para gnat2why" | |
28009 | - | |
28010 | -#: java/lang-specs.h:33 | |
28011 | -msgid "-fjni and -femit-class-files are incompatible" | |
28012 | -msgstr "-fjni y -femit-class-files son incompatibles" | |
28013 | - | |
28014 | -#: java/lang-specs.h:34 | |
28015 | -msgid "-fjni and -femit-class-file are incompatible" | |
28016 | -msgstr "-fjni y -femit-class-file son incompatibles" | |
28017 | - | |
28018 | -#: java/lang-specs.h:35 java/lang-specs.h:36 | |
28019 | -msgid "-femit-class-file should used along with -fsyntax-only" | |
28020 | -msgstr "-femit-class-file se debe usar junto con -fsyntax-only" | |
28021 | - | |
28022 | -#: config/mcore/mcore.h:54 | |
28023 | -msgid "the m210 does not have little endian support" | |
28024 | -msgstr "el m210 no admite little endian" | |
28025 | - | |
28026 | #: config/sol2-bi.h:108 config/sol2-bi.h:113 | |
28027 | msgid "does not support multilib" | |
28028 | msgstr "no se admite multilib" | |
28029 | @@ -4725,64 +4812,50 @@ | |
28030 | msgid "no processor type specified for linking" | |
28031 | msgstr "no existe el tipo de procesador especificado para enlazar" | |
28032 | ||
28033 | -#: config/sh/sh.h:430 config/sh/sh.h:433 | |
28034 | -msgid "SH2a does not support little-endian" | |
28035 | -msgstr "SH2a no se admite para little-endian" | |
28036 | +#: fortran/lang-specs.h:55 fortran/lang-specs.h:69 | |
28037 | +msgid "gfortran does not support -E without -cpp" | |
28038 | +msgstr "gfortran no admite -E sin usar -cpp" | |
28039 | ||
28040 | -#: config/pa/pa-hpux10.h:89 config/pa/pa-hpux10.h:92 config/pa/pa-hpux10.h:100 | |
28041 | -#: config/pa/pa-hpux10.h:103 config/pa/pa-hpux11.h:108 | |
28042 | -#: config/pa/pa-hpux11.h:111 config/pa/pa64-hpux.h:30 config/pa/pa64-hpux.h:33 | |
28043 | -#: config/pa/pa64-hpux.h:42 config/pa/pa64-hpux.h:45 | |
28044 | -msgid "warning: consider linking with '-static' as system libraries with" | |
28045 | -msgstr "aviso: considere enlazar con '-static' como bibliotecas de sistema con" | |
28046 | +#: config/mcore/mcore.h:54 | |
28047 | +msgid "the m210 does not have little endian support" | |
28048 | +msgstr "el m210 no admite little endian" | |
28049 | ||
28050 | -#: config/pa/pa-hpux10.h:90 config/pa/pa-hpux10.h:93 config/pa/pa-hpux10.h:101 | |
28051 | -#: config/pa/pa-hpux10.h:104 config/pa/pa-hpux11.h:109 | |
28052 | -#: config/pa/pa-hpux11.h:112 config/pa/pa64-hpux.h:31 config/pa/pa64-hpux.h:34 | |
28053 | -#: config/pa/pa64-hpux.h:43 config/pa/pa64-hpux.h:46 | |
28054 | -msgid " profiling support are only provided in archive format" | |
28055 | -msgstr " soporte a análisis de perfil sólo se proveen en formato de archivo" | |
28056 | - | |
28057 | #: config/vxworks.h:71 | |
28058 | msgid "-Xbind-now and -Xbind-lazy are incompatible" | |
28059 | msgstr "-Xbind-now y -Xbind-lazy son incompatibles" | |
28060 | ||
28061 | -#: config/darwin.h:242 | |
28062 | +#: config/darwin.h:244 | |
28063 | msgid "-current_version only allowed with -dynamiclib" | |
28064 | msgstr "sólo se permite -current_version con -dynamiclib" | |
28065 | ||
28066 | -#: config/darwin.h:244 | |
28067 | +#: config/darwin.h:246 | |
28068 | msgid "-install_name only allowed with -dynamiclib" | |
28069 | msgstr "sólo se permite -install_name con -dynamiclib" | |
28070 | ||
28071 | -#: config/darwin.h:249 | |
28072 | +#: config/darwin.h:251 | |
28073 | msgid "-bundle not allowed with -dynamiclib" | |
28074 | msgstr "no se permite -bundle con -dynamiclib" | |
28075 | ||
28076 | -#: config/darwin.h:250 | |
28077 | +#: config/darwin.h:252 | |
28078 | msgid "-bundle_loader not allowed with -dynamiclib" | |
28079 | msgstr "no se permite -bundle_loader con -dynamiclib" | |
28080 | ||
28081 | -#: config/darwin.h:251 | |
28082 | +#: config/darwin.h:253 | |
28083 | msgid "-client_name not allowed with -dynamiclib" | |
28084 | msgstr "no se permite -client_name con -dynamiclib" | |
28085 | ||
28086 | -#: config/darwin.h:256 | |
28087 | +#: config/darwin.h:258 | |
28088 | msgid "-force_flat_namespace not allowed with -dynamiclib" | |
28089 | msgstr "no se permite -force_flat_namespace con -dynamiclib" | |
28090 | ||
28091 | -#: config/darwin.h:258 | |
28092 | +#: config/darwin.h:260 | |
28093 | msgid "-keep_private_externs not allowed with -dynamiclib" | |
28094 | msgstr "no se permite keep_private_externs con -dynamiclib" | |
28095 | ||
28096 | -#: config/darwin.h:259 | |
28097 | +#: config/darwin.h:261 | |
28098 | msgid "-private_bundle not allowed with -dynamiclib" | |
28099 | msgstr "no se permite -private_bundle con -dynamiclib" | |
28100 | ||
28101 | -#: config/cris/cris.h:192 | |
28102 | -msgid "do not specify both -march=... and -mcpu=..." | |
28103 | -msgstr "no especifique -march=... y -mcpu=... al mismo tiempo" | |
28104 | - | |
28105 | #: objc/lang-specs.h:31 objc/lang-specs.h:42 | |
28106 | msgid "GNU Objective C no longer supports traditional compilation" | |
28107 | msgstr "Objective C de GNU ya no admite compilación tradicional" | |
28108 | @@ -4791,18 +4864,38 @@ | |
28109 | msgid "objc-cpp-output is deprecated; please use objective-c-cpp-output instead" | |
28110 | msgstr "objc-cpp-output es obsoleto; por favor use en su lugar objective-c-cpp-output" | |
28111 | ||
28112 | -#: config/rx/rx.h:57 | |
28113 | -msgid "-mas100-syntax is incompatible with -gdwarf" | |
28114 | -msgstr "-mas100-syntax es incompatible con -gdwarf" | |
28115 | +#: config/vax/netbsd-elf.h:51 | |
28116 | +msgid "the -shared option is not currently supported for VAX ELF" | |
28117 | +msgstr "la opción -shared no se admite actualmente en ELF de VAX" | |
28118 | ||
28119 | -#: config/rx/rx.h:58 | |
28120 | -msgid "rx200 cpu does not have FPU hardware" | |
28121 | -msgstr "el cpu rx200 no tiene FPU de hardware" | |
28122 | +#: java/lang-specs.h:33 | |
28123 | +msgid "-fjni and -femit-class-files are incompatible" | |
28124 | +msgstr "-fjni y -femit-class-files son incompatibles" | |
28125 | ||
28126 | +#: java/lang-specs.h:34 | |
28127 | +msgid "-fjni and -femit-class-file are incompatible" | |
28128 | +msgstr "-fjni y -femit-class-file son incompatibles" | |
28129 | + | |
28130 | +#: java/lang-specs.h:35 java/lang-specs.h:36 | |
28131 | +msgid "-femit-class-file should used along with -fsyntax-only" | |
28132 | +msgstr "-femit-class-file se debe usar junto con -fsyntax-only" | |
28133 | + | |
28134 | +#: config/sh/sh.h:430 config/sh/sh.h:433 | |
28135 | +msgid "SH2a does not support little-endian" | |
28136 | +msgstr "SH2a no se admite para little-endian" | |
28137 | + | |
28138 | #: config/rs6000/darwin.h:96 | |
28139 | msgid " conflicting code gen style switches are used" | |
28140 | msgstr " se usan interruptores de estilo de generación de código en conflicto" | |
28141 | ||
28142 | +#: objcp/lang-specs.h:58 | |
28143 | +msgid "objc++-cpp-output is deprecated; please use objective-c++-cpp-output instead" | |
28144 | +msgstr "objc++-cpp-output es obsoleto; pr favor use en su lugar objective-c++-cpp-output" | |
28145 | + | |
28146 | +#: config/vax/vax.h:50 config/vax/vax.h:51 | |
28147 | +msgid "profiling not supported with -mg" | |
28148 | +msgstr "el análisis de perfil no se admite con -mg" | |
28149 | + | |
28150 | #: java/lang.opt:122 | |
28151 | msgid "Warn if deprecated empty statements are found" | |
28152 | msgstr "Avisa si se encuentran declaraciones vacías obsoletas" | |
28153 | @@ -5104,7 +5197,7 @@ | |
28154 | msgstr "Permite signos de dólar en nombres de entidades" | |
28155 | ||
28156 | #: fortran/lang.opt:371 common.opt:659 common.opt:826 common.opt:830 | |
28157 | -#: common.opt:834 common.opt:838 common.opt:1323 | |
28158 | +#: common.opt:834 common.opt:838 common.opt:1320 | |
28159 | msgid "Does nothing. Preserved for backward compatibility." | |
28160 | msgstr "No hace nada. Preservado por compatibilidad hacia atrás." | |
28161 | ||
28162 | @@ -5229,7 +5322,7 @@ | |
28163 | msgstr "Permite la revisión de rango durante la compilación" | |
28164 | ||
28165 | #: fortran/lang.opt:503 | |
28166 | -msgid "Interpret any REAl(4) as a REAL(8)" | |
28167 | +msgid "Interpret any REAL(4) as a REAL(8)" | |
28168 | msgstr "Interpreta cualquier REAL(4) como un REAL(8)" | |
28169 | ||
28170 | #: fortran/lang.opt:507 | |
28171 | @@ -5237,7 +5330,7 @@ | |
28172 | msgstr "Interpreta cualquier REAL(4) como un REAL(10)" | |
28173 | ||
28174 | #: fortran/lang.opt:511 | |
28175 | -msgid "Interpret any REAL(4) as a REAl(16)" | |
28176 | +msgid "Interpret any REAL(4) as a REAL(16)" | |
28177 | msgstr "Interpreta cualquier REAL(4) como un REAL(16)" | |
28178 | ||
28179 | #: fortran/lang.opt:515 | |
28180 | @@ -5249,7 +5342,7 @@ | |
28181 | msgstr "Interpreta cualquier REAL(8) como un REAL(10)" | |
28182 | ||
28183 | #: fortran/lang.opt:523 | |
28184 | -msgid "Interpret any REAL(8) as a REAl(16)" | |
28185 | +msgid "Interpret any REAL(8) as a REAL(16)" | |
28186 | msgstr "Interpreta cualquier REAL(8) como un REAL(16)" | |
28187 | ||
28188 | #: fortran/lang.opt:527 | |
28189 | @@ -8679,6 +8772,58 @@ | |
28190 | msgid "Set register to hold -1." | |
28191 | msgstr "Establece el registro para conservar -1." | |
28192 | ||
28193 | +#: config/cr16/cr16.opt:23 | |
28194 | +msgid "-msim Use simulator runtime" | |
28195 | +msgstr "-msim Usa el simulador de tiempo de ejecución" | |
28196 | + | |
28197 | +#: config/cr16/cr16.opt:27 | |
28198 | +msgid "Generate SBIT, CBIT instructions" | |
28199 | +msgstr "Genera instrucciones SBIT, CBIT" | |
28200 | + | |
28201 | +#: config/cr16/cr16.opt:31 | |
28202 | +msgid "Support multiply accumulate instructions" | |
28203 | +msgstr "Da soporte a múltiples instrucciones de acumulador" | |
28204 | + | |
28205 | +#: config/cr16/cr16.opt:38 | |
28206 | +msgid "Treat data references as near, far or medium. medium is default" | |
28207 | +msgstr "Trata las referencias a datos como near, far o medium. Por defecto es medium" | |
28208 | + | |
28209 | +#: config/cr16/cr16.opt:42 | |
28210 | +msgid "Generate code for CR16C architecture" | |
28211 | +msgstr "Genera código para la arquitectura CR16C" | |
28212 | + | |
28213 | +#: config/cr16/cr16.opt:46 | |
28214 | +msgid "Generate code for CR16C+ architecture (Default)" | |
28215 | +msgstr "Genera código para la arquitectura CR16C+ (Por defecto)" | |
28216 | + | |
28217 | +#: config/cr16/cr16.opt:50 | |
28218 | +msgid "Treat integers as 32-bit." | |
28219 | +msgstr "Trata los enteros como 32-bit." | |
28220 | + | |
28221 | +#: config/tilegx/tilegx.opt:24 config/tilepro/tilepro.opt:29 | |
28222 | +msgid "-mcpu=CPU\tUse features of and schedule code for given CPU" | |
28223 | +msgstr "-mcpu=CPU\tUsa las características y el código de calendarizador para el CPU dado" | |
28224 | + | |
28225 | +#: config/tilegx/tilegx.opt:28 | |
28226 | +msgid "Known TILE-Gx CPUs (for use with the -mcpu= option):" | |
28227 | +msgstr "CPUs TILE-Gx conocidos (para usar con la opción -mcpu=):" | |
28228 | + | |
28229 | +#: config/tilegx/tilegx.opt:35 | |
28230 | +msgid "Compile with 32 bit longs and pointers." | |
28231 | +msgstr "Compila con longs y punteros de 32 bit." | |
28232 | + | |
28233 | +#: config/tilegx/tilegx.opt:39 | |
28234 | +msgid "Compile with 64 bit longs and pointers." | |
28235 | +msgstr "Compila con longs y punteros de 64 bit." | |
28236 | + | |
28237 | +#: config/tilepro/tilepro.opt:24 | |
28238 | +msgid "Compile with 32 bit longs and pointers, which is the only supported" | |
28239 | +msgstr "Compila con longs y punteros de 32 bit, el cual es el único admitido" | |
28240 | + | |
28241 | +#: config/tilepro/tilepro.opt:33 | |
28242 | +msgid "Known TILEPro CPUs (for use with the -mcpu= option):" | |
28243 | +msgstr "CPUs TILEPro conocidos (para uso con la opción -mcpu=):" | |
28244 | + | |
28245 | #: config/picochip/picochip.opt:23 | |
28246 | msgid "Specify which type of AE to target. This option sets the mul-type and byte-access." | |
28247 | msgstr "Especifica a qué tipo de AE se apunta. Esta opción establece el tipo muly el acceso a byte." | |
28248 | @@ -8714,7 +8859,7 @@ | |
28249 | #: config/darwin.opt:53 c-family/c.opt:71 c-family/c.opt:74 c-family/c.opt:77 | |
28250 | #: c-family/c.opt:80 c-family/c.opt:179 c-family/c.opt:182 c-family/c.opt:220 | |
28251 | #: c-family/c.opt:224 c-family/c.opt:236 c-family/c.opt:1125 | |
28252 | -#: c-family/c.opt:1133 common.opt:301 common.opt:304 common.opt:2281 | |
28253 | +#: c-family/c.opt:1133 common.opt:301 common.opt:304 common.opt:2278 | |
28254 | #, c-format | |
28255 | msgid "missing filename after %qs" | |
28256 | msgstr "falta un nombre de fichero después de %qs" | |
28257 | @@ -9577,8 +9722,8 @@ | |
28258 | msgstr "Avisa sobre constantes de coma flotante sin sufijo" | |
28259 | ||
28260 | #: c-family/c.opt:666 | |
28261 | -msgid "Warn about" | |
28262 | -msgstr "Avisa sobre" | |
28263 | +msgid "Warn when typedefs locally defined in a function are not used" | |
28264 | +msgstr "Avisa cuando se definen typedefs localmente en una función pero no se usan" | |
28265 | ||
28266 | #: c-family/c.opt:670 | |
28267 | msgid "Warn about macros defined in the main file that are not used" | |
28268 | @@ -9681,9 +9826,9 @@ | |
28269 | msgstr "-fdeduce-init-list\tactiva la deducción de std::initializer_list para un parámetro de tipo de plantilla desde una lista de inicializador dentro de llaves" | |
28270 | ||
28271 | #: c-family/c.opt:768 c-family/c.opt:955 common.opt:937 common.opt:1115 | |
28272 | -#: common.opt:1393 common.opt:1647 common.opt:1683 common.opt:1768 | |
28273 | -#: common.opt:1772 common.opt:1848 common.opt:1926 common.opt:1942 | |
28274 | -#: common.opt:2026 | |
28275 | +#: common.opt:1390 common.opt:1644 common.opt:1680 common.opt:1765 | |
28276 | +#: common.opt:1769 common.opt:1845 common.opt:1923 common.opt:1939 | |
28277 | +#: common.opt:2023 | |
28278 | msgid "Does nothing. Preserved for backward compatibility." | |
28279 | msgstr "No hace nada. Se preserva por compatibilidad hacia atrás." | |
28280 | ||
28281 | @@ -10721,1126 +10866,1126 @@ | |
28282 | msgid "Perform indirect inlining" | |
28283 | msgstr "Realiza la inclusión en línea indirecta" | |
28284 | ||
28285 | -#: common.opt:1255 | |
28286 | -msgid "Pay attention to the \"inline\" keyword" | |
28287 | -msgstr "Pone atención a la palabra clave \"inline\"" | |
28288 | +#: common.opt:1252 | |
28289 | +msgid "Enable inlining of function declared \"inline\", disabling disables all inlining" | |
28290 | +msgstr "Activa la inclusión en línea de la la función declarada \"inline\", y desactiva todas las demás inclusiones en línea" | |
28291 | ||
28292 | -#: common.opt:1259 | |
28293 | -msgid "Integrate simple functions into their callers when code size is known to not growth" | |
28294 | -msgstr "Integra las funciones simples en sus invocadores" | |
28295 | +#: common.opt:1256 | |
28296 | +msgid "Integrate functions into their callers when code size is known not to grow" | |
28297 | +msgstr "Integra las funciones en sus invocadores cuando se sabe que el tamaño del código no crece" | |
28298 | ||
28299 | -#: common.opt:1263 | |
28300 | -msgid "Integrate simple functions into their callers" | |
28301 | -msgstr "Integra las funciones simples en sus invocadores" | |
28302 | +#: common.opt:1260 | |
28303 | +msgid "Integrate functions not declared \"inline\" into their callers when profitable" | |
28304 | +msgstr "Integra las funciones que no se declaran \"inline\" en sus invocadores cuando es rentable" | |
28305 | ||
28306 | -#: common.opt:1267 | |
28307 | -msgid "Integrate functions called once into their callers" | |
28308 | -msgstr "Integra las funciones llamadas una vez en sus invocadores" | |
28309 | +#: common.opt:1264 | |
28310 | +msgid "Integrate functions only required by their single caller" | |
28311 | +msgstr "Integra las funciones sólo requeridas por su invocador único" | |
28312 | ||
28313 | -#: common.opt:1274 | |
28314 | +#: common.opt:1271 | |
28315 | msgid "-finline-limit=<number>\tLimit the size of inlined functions to <number>" | |
28316 | msgstr "-finline-limit=<número>\tLimita el tamaño de las funciones incluídas en línea a <número>" | |
28317 | ||
28318 | -#: common.opt:1278 | |
28319 | +#: common.opt:1275 | |
28320 | msgid "Inline __atomic operations when a lock free instruction sequence is available." | |
28321 | msgstr "Coloca en línea las operaciones __atomic cuando una secuencia de instrucciones lock free está disponible" | |
28322 | ||
28323 | -#: common.opt:1282 | |
28324 | +#: common.opt:1279 | |
28325 | msgid "Instrument function entry and exit with profiling calls" | |
28326 | msgstr "Instrumenta funciones de entrada y salida con llamadas de análisis de perfil" | |
28327 | ||
28328 | -#: common.opt:1286 | |
28329 | +#: common.opt:1283 | |
28330 | msgid "-finstrument-functions-exclude-function-list=name,... Do not instrument listed functions" | |
28331 | msgstr "-finstrument-functions-exclude-functions-list=nombre,... No instrumenta las funciones enlistadas" | |
28332 | ||
28333 | -#: common.opt:1290 | |
28334 | +#: common.opt:1287 | |
28335 | msgid "-finstrument-functions-exclude-file-list=filename,... Do not instrument functions listed in files" | |
28336 | msgstr "-finstrument-functions-exclude-file-list=fichero,... No instrumenta las funciones enlistadas en ficheros" | |
28337 | ||
28338 | -#: common.opt:1294 | |
28339 | +#: common.opt:1291 | |
28340 | msgid "Perform Interprocedural constant propagation" | |
28341 | msgstr "Realiza la propagación interprocedural de las constantes" | |
28342 | ||
28343 | -#: common.opt:1298 | |
28344 | +#: common.opt:1295 | |
28345 | msgid "Perform cloning to make Interprocedural constant propagation stronger" | |
28346 | msgstr "Realiza la clonación para hacer la propagación constante Interprocedural más fuerte" | |
28347 | ||
28348 | -#: common.opt:1302 | |
28349 | +#: common.opt:1299 | |
28350 | msgid "Perform interprocedural profile propagation" | |
28351 | msgstr "Realiza la propagación de perfil interprocedural" | |
28352 | ||
28353 | -#: common.opt:1306 | |
28354 | +#: common.opt:1303 | |
28355 | msgid "Perform interprocedural points-to analysis" | |
28356 | msgstr "Realiza el análisis interprocedural de puntero-a" | |
28357 | ||
28358 | -#: common.opt:1310 | |
28359 | +#: common.opt:1307 | |
28360 | msgid "Discover pure and const functions" | |
28361 | msgstr "Descubre funciones pure y const" | |
28362 | ||
28363 | -#: common.opt:1314 | |
28364 | +#: common.opt:1311 | |
28365 | msgid "Discover readonly and non addressable static variables" | |
28366 | msgstr "Descubre variables estáticas de sólo lectura y no direccionables" | |
28367 | ||
28368 | -#: common.opt:1318 | |
28369 | +#: common.opt:1315 | |
28370 | msgid "Perform matrix layout flattening and transposing based" | |
28371 | msgstr "Realiza la ubicación de matriz basado en aplanado y transposición" | |
28372 | ||
28373 | -#: common.opt:1327 | |
28374 | +#: common.opt:1324 | |
28375 | msgid "-fira-algorithm=[CB|priority] Set the used IRA algorithm" | |
28376 | msgstr "-fira-algorithm=[CB|priority] Establece el algoritmo IRA a usar" | |
28377 | ||
28378 | -#: common.opt:1330 | |
28379 | +#: common.opt:1327 | |
28380 | #, c-format | |
28381 | msgid "unknown IRA algorithm %qs" | |
28382 | msgstr "algoritmo IRA %qs desconocido" | |
28383 | ||
28384 | -#: common.opt:1340 | |
28385 | +#: common.opt:1337 | |
28386 | msgid "-fira-region=[one|all|mixed] Set regions for IRA" | |
28387 | msgstr "-fira-region=[one|all|mixed] Establece las regiones para IRA" | |
28388 | ||
28389 | -#: common.opt:1343 | |
28390 | +#: common.opt:1340 | |
28391 | #, c-format | |
28392 | msgid "unknown IRA region %qs" | |
28393 | msgstr "región IRA %qs desconocida" | |
28394 | ||
28395 | -#: common.opt:1356 | |
28396 | +#: common.opt:1353 | |
28397 | msgid "Use IRA based register pressure calculation" | |
28398 | msgstr "Usa el cálculo de presión de registros basado en IRA" | |
28399 | ||
28400 | -#: common.opt:1361 | |
28401 | +#: common.opt:1358 | |
28402 | msgid "Share slots for saving different hard registers." | |
28403 | msgstr "Comparte ranuras para ahorrar registros hard diferentes." | |
28404 | ||
28405 | -#: common.opt:1365 | |
28406 | +#: common.opt:1362 | |
28407 | msgid "Share stack slots for spilled pseudo-registers." | |
28408 | msgstr "Comparte ranuras de pila para pseudo-registros derramados." | |
28409 | ||
28410 | -#: common.opt:1369 | |
28411 | +#: common.opt:1366 | |
28412 | msgid "-fira-verbose=<number>\tControl IRA's level of diagnostic messages." | |
28413 | msgstr "-fira-verbose=<número>\tControla el nivel de mensajes de diagnóstico de IRA." | |
28414 | ||
28415 | -#: common.opt:1373 | |
28416 | +#: common.opt:1370 | |
28417 | msgid "Optimize induction variables on trees" | |
28418 | msgstr "Optimiza la inducción de variables en los árboles" | |
28419 | ||
28420 | -#: common.opt:1377 | |
28421 | +#: common.opt:1374 | |
28422 | msgid "Use jump tables for sufficiently large switch statements" | |
28423 | msgstr "Usa tablas de salto para las declaraciones switch suficientemente grandes" | |
28424 | ||
28425 | -#: common.opt:1381 | |
28426 | +#: common.opt:1378 | |
28427 | msgid "Generate code for functions even if they are fully inlined" | |
28428 | msgstr "Genera código para las funciones aún si están completamente incluídas en línea" | |
28429 | ||
28430 | -#: common.opt:1385 | |
28431 | +#: common.opt:1382 | |
28432 | msgid "Emit static const variables even if they are not used" | |
28433 | msgstr "Emite variables static const aún si no se usan" | |
28434 | ||
28435 | -#: common.opt:1389 | |
28436 | +#: common.opt:1386 | |
28437 | msgid "Give external symbols a leading underscore" | |
28438 | msgstr "Da a los símbolos externos un subrayado inicial" | |
28439 | ||
28440 | -#: common.opt:1397 | |
28441 | +#: common.opt:1394 | |
28442 | msgid "Enable link-time optimization." | |
28443 | msgstr "Activa las optimizaciones de tiempo de enlace." | |
28444 | ||
28445 | -#: common.opt:1401 | |
28446 | +#: common.opt:1398 | |
28447 | msgid "Link-time optimization with number of parallel jobs or jobserver." | |
28448 | msgstr "Optimización en tiempo de enlace con el número de trabajos paralelos o el servidor de trabajos." | |
28449 | ||
28450 | -#: common.opt:1405 | |
28451 | +#: common.opt:1402 | |
28452 | msgid "Partition functions and vars at linktime based on object files they originate from" | |
28453 | msgstr "Particiona funciones y variables en tiempo de enlace basado en los ficheros objetos de los que se originaron" | |
28454 | ||
28455 | -#: common.opt:1409 | |
28456 | +#: common.opt:1406 | |
28457 | msgid "Partition functions and vars at linktime into approximately same sized buckets" | |
28458 | msgstr "Particiona funciones y variables en tiempo de enlace en cubos de aproximadamente el mismo tamaño" | |
28459 | ||
28460 | -#: common.opt:1413 | |
28461 | +#: common.opt:1410 | |
28462 | msgid "Disable partioning and streaming" | |
28463 | msgstr "Desactiva el particionamiento y flujo" | |
28464 | ||
28465 | -#: common.opt:1418 | |
28466 | +#: common.opt:1415 | |
28467 | msgid "-flto-compression-level=<number>\tUse zlib compression level <number> for IL" | |
28468 | msgstr "-flto-compression-level=<número>\tUsa el nivel de compresión de zlib <número> para IL" | |
28469 | ||
28470 | -#: common.opt:1422 | |
28471 | +#: common.opt:1419 | |
28472 | msgid "Report various link-time optimization statistics" | |
28473 | msgstr "Reporta varias estadísticas de optimización de tiempo de enlace" | |
28474 | ||
28475 | -#: common.opt:1426 | |
28476 | +#: common.opt:1423 | |
28477 | msgid "Set errno after built-in math functions" | |
28478 | msgstr "Establece errno después de las funciones matemáticas internas" | |
28479 | ||
28480 | -#: common.opt:1430 | |
28481 | +#: common.opt:1427 | |
28482 | msgid "-fmax-errors=<number>\tMaximum number of errors to report" | |
28483 | msgstr "-fmax-errors=<número>\tNúmero máximo de errores a reportar" | |
28484 | ||
28485 | -#: common.opt:1434 | |
28486 | +#: common.opt:1431 | |
28487 | msgid "Report on permanent memory allocation" | |
28488 | msgstr "Reporta el alojamiento en memoria permanente" | |
28489 | ||
28490 | -#: common.opt:1441 | |
28491 | +#: common.opt:1438 | |
28492 | msgid "Attempt to merge identical constants and constant variables" | |
28493 | msgstr "Intenta mezclar constantes idénticas y variables constantes" | |
28494 | ||
28495 | -#: common.opt:1445 | |
28496 | +#: common.opt:1442 | |
28497 | msgid "Attempt to merge identical constants across compilation units" | |
28498 | msgstr "Intenta mezclar constantes idénticas a través de las unidades de compilación" | |
28499 | ||
28500 | -#: common.opt:1449 | |
28501 | +#: common.opt:1446 | |
28502 | msgid "Attempt to merge identical debug strings across compilation units" | |
28503 | msgstr "Intenta mezclar cadenas de depuración idénticas a través de las unidades de compilación" | |
28504 | ||
28505 | -#: common.opt:1453 | |
28506 | +#: common.opt:1450 | |
28507 | msgid "-fmessage-length=<number>\tLimit diagnostics to <number> characters per line. 0 suppresses line-wrapping" | |
28508 | msgstr "-fmessage-length=<número>\tLimita los diagnósticos a <número> caracteres por línea. 0 suprime el corte de línea" | |
28509 | ||
28510 | -#: common.opt:1457 | |
28511 | +#: common.opt:1454 | |
28512 | msgid "Perform SMS based modulo scheduling before the first scheduling pass" | |
28513 | msgstr "Realiza la calendarización SMS basada en módulo antes del primer paso de calendarización" | |
28514 | ||
28515 | -#: common.opt:1461 | |
28516 | +#: common.opt:1458 | |
28517 | msgid "Perform SMS based modulo scheduling with register moves allowed" | |
28518 | msgstr "Realiza la calendarización módulo basada en SMS con movimientos permitidos de registros" | |
28519 | ||
28520 | -#: common.opt:1465 | |
28521 | +#: common.opt:1462 | |
28522 | msgid "Move loop invariant computations out of loops" | |
28523 | msgstr "Mueve las computaciones invariantes de bucles fuera de los bucles" | |
28524 | ||
28525 | -#: common.opt:1469 | |
28526 | +#: common.opt:1466 | |
28527 | msgid "Use the RTL dead code elimination pass" | |
28528 | msgstr "Usa el paso de eliminación de código muerto de RTL" | |
28529 | ||
28530 | -#: common.opt:1473 | |
28531 | +#: common.opt:1470 | |
28532 | msgid "Use the RTL dead store elimination pass" | |
28533 | msgstr "Usa la eliminación de almacenamiento muerto de RTL" | |
28534 | ||
28535 | -#: common.opt:1477 | |
28536 | +#: common.opt:1474 | |
28537 | msgid "Enable/Disable the traditional scheduling in loops that already passed modulo scheduling" | |
28538 | msgstr "Activa/Desactiva la calendarización tradicional en bucles que ya pasaron la calendarización módulo" | |
28539 | ||
28540 | -#: common.opt:1481 | |
28541 | +#: common.opt:1478 | |
28542 | msgid "Support synchronous non-call exceptions" | |
28543 | msgstr "Permite las excepciones síncronas que no son llamadas" | |
28544 | ||
28545 | -#: common.opt:1485 | |
28546 | +#: common.opt:1482 | |
28547 | msgid "When possible do not generate stack frames" | |
28548 | msgstr "Cuando sea posible no genera marcos de pila" | |
28549 | ||
28550 | -#: common.opt:1489 | |
28551 | +#: common.opt:1486 | |
28552 | msgid "Do the full register move optimization pass" | |
28553 | msgstr "Hace el paso completo de optimización de movimiento de registros" | |
28554 | ||
28555 | -#: common.opt:1493 | |
28556 | +#: common.opt:1490 | |
28557 | msgid "Optimize sibling and tail recursive calls" | |
28558 | msgstr "Optimiza las llamadas recursivas hermanadas y de extremo" | |
28559 | ||
28560 | -#: common.opt:1497 | |
28561 | +#: common.opt:1494 | |
28562 | msgid "Perform partial inlining" | |
28563 | msgstr "Realiza la inclusión en línea parcial" | |
28564 | ||
28565 | -#: common.opt:1501 common.opt:1505 | |
28566 | +#: common.opt:1498 common.opt:1502 | |
28567 | msgid "Report on memory allocation before interprocedural optimization" | |
28568 | msgstr "Reporta la ubicación de memoria antes de la optimización interprocedural" | |
28569 | ||
28570 | -#: common.opt:1509 | |
28571 | +#: common.opt:1506 | |
28572 | msgid "Pack structure members together without holes" | |
28573 | msgstr "Empaqueta juntos a los miembros de la estructura sin agujeros" | |
28574 | ||
28575 | -#: common.opt:1513 | |
28576 | +#: common.opt:1510 | |
28577 | msgid "-fpack-struct=<number>\tSet initial maximum structure member alignment" | |
28578 | msgstr "-fpack-struct=<número>\tEstablece la alineación inicial máxima de estructuras miembro" | |
28579 | ||
28580 | -#: common.opt:1517 | |
28581 | +#: common.opt:1514 | |
28582 | msgid "Return small aggregates in memory, not registers" | |
28583 | msgstr "Devuelve los agregados small en memoria, no en registros" | |
28584 | ||
28585 | -#: common.opt:1521 | |
28586 | +#: common.opt:1518 | |
28587 | msgid "Perform loop peeling" | |
28588 | msgstr "Realiza el pelado de bucles" | |
28589 | ||
28590 | -#: common.opt:1525 | |
28591 | +#: common.opt:1522 | |
28592 | msgid "Enable machine specific peephole optimizations" | |
28593 | msgstr "Activa las optimizaciones de mirilla específicas de la máquina" | |
28594 | ||
28595 | -#: common.opt:1529 | |
28596 | +#: common.opt:1526 | |
28597 | msgid "Enable an RTL peephole pass before sched2" | |
28598 | msgstr "Activa un paso de mirilla RTL antes de sched2" | |
28599 | ||
28600 | -#: common.opt:1533 | |
28601 | +#: common.opt:1530 | |
28602 | msgid "Generate position-independent code if possible (large mode)" | |
28603 | msgstr "Genera código independiente de posición si es posible (modo large)" | |
28604 | ||
28605 | -#: common.opt:1537 | |
28606 | +#: common.opt:1534 | |
28607 | msgid "Generate position-independent code for executables if possible (large mode)" | |
28608 | msgstr "Genera código independiente de posición para ejecutables si es posible (modo large)" | |
28609 | ||
28610 | -#: common.opt:1541 | |
28611 | +#: common.opt:1538 | |
28612 | msgid "Generate position-independent code if possible (small mode)" | |
28613 | msgstr "Genera código independiente de posición si es posible (modo small)" | |
28614 | ||
28615 | -#: common.opt:1545 | |
28616 | +#: common.opt:1542 | |
28617 | msgid "Generate position-independent code for executables if possible (small mode)" | |
28618 | msgstr "Genera código independiente de posición para ejecutables si es posible (modo small)" | |
28619 | ||
28620 | -#: common.opt:1549 | |
28621 | +#: common.opt:1546 | |
28622 | msgid "Specify a plugin to load" | |
28623 | msgstr "Especifica un plugin a cargar" | |
28624 | ||
28625 | -#: common.opt:1553 | |
28626 | +#: common.opt:1550 | |
28627 | msgid "-fplugin-arg-<name>-<key>[=<value>]\tSpecify argument <key>=<value> for plugin <name>" | |
28628 | msgstr "-fplugin-arg-<nom>-<clave>[=<valor>]\tEspecifica el argumento <clave>=<valor> para el plugin <nom>bre" | |
28629 | ||
28630 | -#: common.opt:1557 | |
28631 | +#: common.opt:1554 | |
28632 | msgid "Run predictive commoning optimization." | |
28633 | msgstr "Ejecuta la optimización comunizadora predictiva." | |
28634 | ||
28635 | -#: common.opt:1561 | |
28636 | +#: common.opt:1558 | |
28637 | msgid "Generate prefetch instructions, if available, for arrays in loops" | |
28638 | msgstr "Genera instrucciones de precargado, si están disponibles, para matrices en bucles" | |
28639 | ||
28640 | -#: common.opt:1565 | |
28641 | +#: common.opt:1562 | |
28642 | msgid "Enable basic program profiling code" | |
28643 | msgstr "Activa el código básico de análisis de perfil del programa" | |
28644 | ||
28645 | -#: common.opt:1569 | |
28646 | +#: common.opt:1566 | |
28647 | msgid "Insert arc-based program profiling code" | |
28648 | msgstr "Inserta el código de análisis de perfil de programa basado en arc" | |
28649 | ||
28650 | -#: common.opt:1573 | |
28651 | +#: common.opt:1570 | |
28652 | msgid "Set the top-level directory for storing the profile data." | |
28653 | msgstr "Establece el directorio de nivel principal para almacenar los datos de perfilado." | |
28654 | ||
28655 | -#: common.opt:1578 | |
28656 | +#: common.opt:1575 | |
28657 | msgid "Enable correction of flow inconsistent profile data input" | |
28658 | msgstr "Activa la corrección de datos de entrada de perfilado inconsistente de flujo" | |
28659 | ||
28660 | -#: common.opt:1582 | |
28661 | +#: common.opt:1579 | |
28662 | msgid "Enable common options for generating profile info for profile feedback directed optimizations" | |
28663 | msgstr "Activa las opciones comunes para generar información de análisis de perfil para optimizaciones dirigidas por retroalimentación de perfil" | |
28664 | ||
28665 | -#: common.opt:1586 | |
28666 | +#: common.opt:1583 | |
28667 | msgid "Enable common options for generating profile info for profile feedback directed optimizations, and set -fprofile-dir=" | |
28668 | msgstr "Activa las opciones comunes para generar información de análisis de perfil para optimizaciones dirigidas por retroalimentación de perfili, y establece -fprofile-dir=" | |
28669 | ||
28670 | -#: common.opt:1590 | |
28671 | +#: common.opt:1587 | |
28672 | msgid "Enable common options for performing profile feedback directed optimizations" | |
28673 | msgstr "Activa las opciones comunes para realizar optimizaciones dirigidas por retroalimentación de perfil" | |
28674 | ||
28675 | -#: common.opt:1594 | |
28676 | +#: common.opt:1591 | |
28677 | msgid "Enable common options for performing profile feedback directed optimizations, and set -fprofile-dir=" | |
28678 | msgstr "Activa las opciones comunes para realizar optimizaciones dirigidas por retroalimentación de perfil, y establece -fprofile-dir=" | |
28679 | ||
28680 | -#: common.opt:1598 | |
28681 | +#: common.opt:1595 | |
28682 | msgid "Insert code to profile values of expressions" | |
28683 | msgstr "Inserta el código para perfilar valores de expresiones" | |
28684 | ||
28685 | -#: common.opt:1605 | |
28686 | +#: common.opt:1602 | |
28687 | msgid "-frandom-seed=<string>\tMake compile reproducible using <string>" | |
28688 | msgstr "-frandom-seed=<cadena>\tHace que se pueda reproducir la compilación utilizando la <cadena>" | |
28689 | ||
28690 | -#: common.opt:1615 | |
28691 | +#: common.opt:1612 | |
28692 | msgid "Record gcc command line switches in the object file." | |
28693 | msgstr "Guarda las opciones de la línea de órdenes de gcc en el fichero objeto." | |
28694 | ||
28695 | -#: common.opt:1619 | |
28696 | +#: common.opt:1616 | |
28697 | msgid "Return small aggregates in registers" | |
28698 | msgstr "Devuelve agregados small en registros" | |
28699 | ||
28700 | -#: common.opt:1623 | |
28701 | +#: common.opt:1620 | |
28702 | msgid "Enables a register move optimization" | |
28703 | msgstr "Permite una optimización de movimiento de registros" | |
28704 | ||
28705 | -#: common.opt:1627 | |
28706 | +#: common.opt:1624 | |
28707 | msgid "Perform a register renaming optimization pass" | |
28708 | msgstr "Realiza el paso de optimización de renombrado de registros" | |
28709 | ||
28710 | -#: common.opt:1631 | |
28711 | +#: common.opt:1628 | |
28712 | msgid "Reorder basic blocks to improve code placement" | |
28713 | msgstr "Reordena los bloques básicos para mejorar la ubicación del código" | |
28714 | ||
28715 | -#: common.opt:1635 | |
28716 | +#: common.opt:1632 | |
28717 | msgid "Reorder basic blocks and partition into hot and cold sections" | |
28718 | msgstr "Reordena los bloques básicos y particionar en secciones caliente y fría" | |
28719 | ||
28720 | -#: common.opt:1639 | |
28721 | +#: common.opt:1636 | |
28722 | msgid "Reorder functions to improve code placement" | |
28723 | msgstr "Reordena las funciones para mejorar la ubicación del código" | |
28724 | ||
28725 | -#: common.opt:1643 | |
28726 | +#: common.opt:1640 | |
28727 | msgid "Add a common subexpression elimination pass after loop optimizations" | |
28728 | msgstr "Ejecuta un paso de eliminación de subexpresión común después de las optimizaciones de bucles" | |
28729 | ||
28730 | -#: common.opt:1651 | |
28731 | +#: common.opt:1648 | |
28732 | msgid "Disable optimizations that assume default FP rounding behavior" | |
28733 | msgstr "Desactiva las optimizaciones que asumen la conducta de un FP que redondea por defecto" | |
28734 | ||
28735 | -#: common.opt:1655 | |
28736 | +#: common.opt:1652 | |
28737 | msgid "Enable scheduling across basic blocks" | |
28738 | msgstr "Activa la calendarización entre bloques básicos" | |
28739 | ||
28740 | -#: common.opt:1659 | |
28741 | +#: common.opt:1656 | |
28742 | msgid "Enable register pressure sensitive insn scheduling" | |
28743 | msgstr "Activa la calendarización de insn sensible a la presión de registros" | |
28744 | ||
28745 | -#: common.opt:1663 | |
28746 | +#: common.opt:1660 | |
28747 | msgid "Allow speculative motion of non-loads" | |
28748 | msgstr "Permite el movimiento especulativo de insn que no son load" | |
28749 | ||
28750 | -#: common.opt:1667 | |
28751 | +#: common.opt:1664 | |
28752 | msgid "Allow speculative motion of some loads" | |
28753 | msgstr "Permite el movimiento especulativo de algunas loads" | |
28754 | ||
28755 | -#: common.opt:1671 | |
28756 | +#: common.opt:1668 | |
28757 | msgid "Allow speculative motion of more loads" | |
28758 | msgstr "Permite el movimiento especulativo de más loads" | |
28759 | ||
28760 | -#: common.opt:1675 | |
28761 | +#: common.opt:1672 | |
28762 | msgid "-fsched-verbose=<number>\tSet the verbosity level of the scheduler" | |
28763 | msgstr "-fsched-verbose=<número>\tEstablece el nivel de detalle del calendarizador" | |
28764 | ||
28765 | -#: common.opt:1679 | |
28766 | +#: common.opt:1676 | |
28767 | msgid "If scheduling post reload, do superblock scheduling" | |
28768 | msgstr "Si se calendariza después de la recarga, hace la calendarización de superbloque" | |
28769 | ||
28770 | -#: common.opt:1687 | |
28771 | +#: common.opt:1684 | |
28772 | msgid "Reschedule instructions before register allocation" | |
28773 | msgstr "Recalendariza las instrucciones antes del alojamiento de registros" | |
28774 | ||
28775 | -#: common.opt:1691 | |
28776 | +#: common.opt:1688 | |
28777 | msgid "Reschedule instructions after register allocation" | |
28778 | msgstr "Recalendariza las instrucciones después del alojamiento de registros" | |
28779 | ||
28780 | -#: common.opt:1698 | |
28781 | +#: common.opt:1695 | |
28782 | msgid "Schedule instructions using selective scheduling algorithm" | |
28783 | msgstr "Calendariza instrucciones usando el algoritmo de calendarización selectivo" | |
28784 | ||
28785 | -#: common.opt:1702 | |
28786 | +#: common.opt:1699 | |
28787 | msgid "Run selective scheduling after reload" | |
28788 | msgstr "Ejecuta la calendarización selectiva después de recargar" | |
28789 | ||
28790 | -#: common.opt:1706 | |
28791 | +#: common.opt:1703 | |
28792 | msgid "Perform software pipelining of inner loops during selective scheduling" | |
28793 | msgstr "Realiza el `pipelining' de software de los bucles internos durante la calendarización selectiva" | |
28794 | ||
28795 | -#: common.opt:1710 | |
28796 | +#: common.opt:1707 | |
28797 | msgid "Perform software pipelining of outer loops during selective scheduling" | |
28798 | msgstr "Realiza el `pipelining' de software de los bucles externos durante la calendarización selectiva" | |
28799 | ||
28800 | -#: common.opt:1714 | |
28801 | +#: common.opt:1711 | |
28802 | msgid "Reschedule pipelined regions without pipelining" | |
28803 | msgstr "Recalendariza las regiones `pipelined' sin `pipelining'" | |
28804 | ||
28805 | -#: common.opt:1720 | |
28806 | +#: common.opt:1717 | |
28807 | msgid "Allow premature scheduling of queued insns" | |
28808 | msgstr "Permite la calendarización prematura de insns encoladas" | |
28809 | ||
28810 | -#: common.opt:1724 | |
28811 | +#: common.opt:1721 | |
28812 | msgid "-fsched-stalled-insns=<number>\tSet number of queued insns that can be prematurely scheduled" | |
28813 | msgstr "-fsched-stalled-insns=<número>\tEstablece el número de insns encoladas que se pueden calendarizar prematuramente" | |
28814 | ||
28815 | -#: common.opt:1732 | |
28816 | +#: common.opt:1729 | |
28817 | msgid "Set dependence distance checking in premature scheduling of queued insns" | |
28818 | msgstr "Establece la revisión de distancia de dependencias en la calendarización prematura de insns encoladas" | |
28819 | ||
28820 | -#: common.opt:1736 | |
28821 | +#: common.opt:1733 | |
28822 | msgid "-fsched-stalled-insns-dep=<number>\tSet dependence distance checking in premature scheduling of queued insns" | |
28823 | msgstr "-fsched-stalled-insns-dep=<número>\tEstablece la revisión de distancia de dependencias en la calendarización prematura de insns encoladas" | |
28824 | ||
28825 | -#: common.opt:1740 | |
28826 | +#: common.opt:1737 | |
28827 | msgid "Enable the group heuristic in the scheduler" | |
28828 | msgstr "Activa la heurística de grupo en el calendarizador" | |
28829 | ||
28830 | -#: common.opt:1744 | |
28831 | +#: common.opt:1741 | |
28832 | msgid "Enable the critical path heuristic in the scheduler" | |
28833 | msgstr "Activa la heurística de ruta crítica en el calendarizador" | |
28834 | ||
28835 | -#: common.opt:1748 | |
28836 | +#: common.opt:1745 | |
28837 | msgid "Enable the speculative instruction heuristic in the scheduler" | |
28838 | msgstr "Activa la heurística de instrucción especulativa en el calendarizador" | |
28839 | ||
28840 | -#: common.opt:1752 | |
28841 | +#: common.opt:1749 | |
28842 | msgid "Enable the rank heuristic in the scheduler" | |
28843 | msgstr "Activa la heurística de rango en el calendarizador" | |
28844 | ||
28845 | -#: common.opt:1756 | |
28846 | +#: common.opt:1753 | |
28847 | msgid "Enable the last instruction heuristic in the scheduler" | |
28848 | msgstr "Activa la heurística de última instrucción en el calendarizador" | |
28849 | ||
28850 | -#: common.opt:1760 | |
28851 | +#: common.opt:1757 | |
28852 | msgid "Enable the dependent count heuristic in the scheduler" | |
28853 | msgstr "Activa la heurística de cuenta dependiente en el calendarizador" | |
28854 | ||
28855 | -#: common.opt:1764 | |
28856 | +#: common.opt:1761 | |
28857 | msgid "Access data in the same section from shared anchor points" | |
28858 | msgstr "Accede datos en la misma sección que los puntos de anclaje compartidos" | |
28859 | ||
28860 | -#: common.opt:1776 | |
28861 | +#: common.opt:1773 | |
28862 | msgid "Turn on Redundant Extensions Elimination pass." | |
28863 | msgstr "Activa el paso de Eliminación de Extensiones Redundantes." | |
28864 | ||
28865 | -#: common.opt:1780 | |
28866 | +#: common.opt:1777 | |
28867 | msgid "Show column numbers in diagnostics, when available. Default on" | |
28868 | msgstr "Muestra los números de columna en los diagnósticos, cuando estén disponible. Activado por defecto" | |
28869 | ||
28870 | -#: common.opt:1784 | |
28871 | +#: common.opt:1781 | |
28872 | msgid "Emit function prologues only before parts of the function that need it," | |
28873 | msgstr "Emite prólogos de función sólo después de que las partes de la función que los necesitan," | |
28874 | ||
28875 | -#: common.opt:1789 | |
28876 | +#: common.opt:1786 | |
28877 | msgid "Disable optimizations observable by IEEE signaling NaNs" | |
28878 | msgstr "Desactiva las optimizaciones observables con IEEE señalando NaNs" | |
28879 | ||
28880 | -#: common.opt:1793 | |
28881 | +#: common.opt:1790 | |
28882 | msgid "Disable floating point optimizations that ignore the IEEE signedness of zero" | |
28883 | msgstr "Desactiva las optimizaciones de coma flotante que ignoran el signo de IEEE para cero" | |
28884 | ||
28885 | -#: common.opt:1797 | |
28886 | +#: common.opt:1794 | |
28887 | msgid "Convert floating point constants to single precision constants" | |
28888 | msgstr "Convierte las constantes de coma flotante a constantes de precisión simple" | |
28889 | ||
28890 | -#: common.opt:1801 | |
28891 | +#: common.opt:1798 | |
28892 | msgid "Split lifetimes of induction variables when loops are unrolled" | |
28893 | msgstr "Divide los tiempos de vida de las variables de inducción cuando se desenrollen los bucles" | |
28894 | ||
28895 | -#: common.opt:1805 | |
28896 | +#: common.opt:1802 | |
28897 | msgid "Generate discontiguous stack frames" | |
28898 | msgstr "Genera marcos de pila discontiguos" | |
28899 | ||
28900 | -#: common.opt:1809 | |
28901 | +#: common.opt:1806 | |
28902 | msgid "Split wide types into independent registers" | |
28903 | msgstr "Divide los tipos anchos en registros independientes" | |
28904 | ||
28905 | -#: common.opt:1813 | |
28906 | +#: common.opt:1810 | |
28907 | msgid "Apply variable expansion when loops are unrolled" | |
28908 | msgstr "Aplica la expansión de variables cuando se desenrollan los bucles" | |
28909 | ||
28910 | -#: common.opt:1817 | |
28911 | +#: common.opt:1814 | |
28912 | msgid "-fstack-check=[no|generic|specific]\tInsert stack checking code into the program" | |
28913 | msgstr "-fstack-check=[no|generic|specific]\tInserta código de revisión de la pila en el programa" | |
28914 | ||
28915 | -#: common.opt:1821 | |
28916 | +#: common.opt:1818 | |
28917 | msgid "Insert stack checking code into the program. Same as -fstack-check=specific" | |
28918 | msgstr "Inserta código de revisión de la pila en el programai. Igual que -fstach-check=specific" | |
28919 | ||
28920 | -#: common.opt:1828 | |
28921 | +#: common.opt:1825 | |
28922 | msgid "-fstack-limit-register=<register>\tTrap if the stack goes past <register>" | |
28923 | msgstr "-fstack-limit-register=<register>\tCaptura si la pila pasa del <registro>" | |
28924 | ||
28925 | -#: common.opt:1832 | |
28926 | +#: common.opt:1829 | |
28927 | msgid "-fstack-limit-symbol=<name>\tTrap if the stack goes past symbol <name>" | |
28928 | msgstr "-fstack-limit-symbol=<nombre>\tCaptura si la pila pasa del símbolo <nombre>" | |
28929 | ||
28930 | -#: common.opt:1836 | |
28931 | +#: common.opt:1833 | |
28932 | msgid "Use propolice as a stack protection method" | |
28933 | msgstr "Usa propolice como un método de protección de pila" | |
28934 | ||
28935 | -#: common.opt:1840 | |
28936 | +#: common.opt:1837 | |
28937 | msgid "Use a stack protection method for every function" | |
28938 | msgstr "Usa un método de protección de pila para cada función" | |
28939 | ||
28940 | -#: common.opt:1844 | |
28941 | +#: common.opt:1841 | |
28942 | msgid "Output stack usage information on a per-function basis" | |
28943 | msgstr "Información de uso de pila de salida basada por función" | |
28944 | ||
28945 | -#: common.opt:1856 | |
28946 | +#: common.opt:1853 | |
28947 | msgid "Assume strict aliasing rules apply" | |
28948 | msgstr "Asume que se aplican las reglas estrictas de alias" | |
28949 | ||
28950 | -#: common.opt:1860 | |
28951 | +#: common.opt:1857 | |
28952 | msgid "Treat signed overflow as undefined" | |
28953 | msgstr "Trata el desbordamiento de signo como indefinido" | |
28954 | ||
28955 | -#: common.opt:1864 | |
28956 | +#: common.opt:1861 | |
28957 | msgid "Check for syntax errors, then stop" | |
28958 | msgstr "Busca errores de sintaxis, y termina" | |
28959 | ||
28960 | -#: common.opt:1868 | |
28961 | +#: common.opt:1865 | |
28962 | msgid "Create data files needed by \"gcov\"" | |
28963 | msgstr "Crea ficheros de datos necesarios para \"gcov\"" | |
28964 | ||
28965 | -#: common.opt:1872 | |
28966 | +#: common.opt:1869 | |
28967 | msgid "Perform jump threading optimizations" | |
28968 | msgstr "Realiza optimizaciones de hilado de saltos" | |
28969 | ||
28970 | -#: common.opt:1876 | |
28971 | +#: common.opt:1873 | |
28972 | msgid "Report the time taken by each compiler pass" | |
28973 | msgstr "Reporta el tiempo tomado por cada paso del compilador" | |
28974 | ||
28975 | -#: common.opt:1880 | |
28976 | +#: common.opt:1877 | |
28977 | msgid "-ftls-model=[global-dynamic|local-dynamic|initial-exec|local-exec]\tSet the default thread-local storage code generation model" | |
28978 | msgstr "-ftls-model=[global-dynamic|local-dynamic|initial-exec|local-exec]\tEstablece el modelo de generación de código por defecto para almacenamiento thread-local" | |
28979 | ||
28980 | -#: common.opt:1883 | |
28981 | +#: common.opt:1880 | |
28982 | #, c-format | |
28983 | msgid "unknown TLS model %qs" | |
28984 | msgstr "modelo TLS %qs desconocido" | |
28985 | ||
28986 | -#: common.opt:1899 | |
28987 | +#: common.opt:1896 | |
28988 | msgid "Reorder top level functions, variables, and asms" | |
28989 | msgstr "Reordena las funciones de nivel superior, variables y asms" | |
28990 | ||
28991 | -#: common.opt:1903 | |
28992 | +#: common.opt:1900 | |
28993 | msgid "Perform superblock formation via tail duplication" | |
28994 | msgstr "Realiza la formación de superbloques a través de la duplicación de colas" | |
28995 | ||
28996 | -#: common.opt:1910 | |
28997 | +#: common.opt:1907 | |
28998 | msgid "Assume floating-point operations can trap" | |
28999 | msgstr "Asume que las operaciones de coma flotante pueden atrapar" | |
29000 | ||
29001 | -#: common.opt:1914 | |
29002 | +#: common.opt:1911 | |
29003 | msgid "Trap for signed overflow in addition, subtraction and multiplication" | |
29004 | msgstr "Atrapar desbordamientos signed en adición, sustracción y multiplicación" | |
29005 | ||
29006 | -#: common.opt:1918 | |
29007 | +#: common.opt:1915 | |
29008 | msgid "Enable SSA-CCP optimization on trees" | |
29009 | msgstr "Activa la optimización SSA-CCP en árboles" | |
29010 | ||
29011 | -#: common.opt:1922 | |
29012 | +#: common.opt:1919 | |
29013 | msgid "Enable SSA-BIT-CCP optimization on trees" | |
29014 | msgstr "Activa la optimización SSA-BIT-CCP en árboles" | |
29015 | ||
29016 | -#: common.opt:1930 | |
29017 | +#: common.opt:1927 | |
29018 | msgid "Enable loop header copying on trees" | |
29019 | msgstr "Activa la copia de encabezado de bucles en árboles" | |
29020 | ||
29021 | -#: common.opt:1934 | |
29022 | +#: common.opt:1931 | |
29023 | msgid "Replace SSA temporaries with better names in copies" | |
29024 | msgstr "Reemplaza temporales SSA con mejores nombres en las copias" | |
29025 | ||
29026 | -#: common.opt:1938 | |
29027 | +#: common.opt:1935 | |
29028 | msgid "Enable copy propagation on trees" | |
29029 | msgstr "Activa la propagación de copia en árboles" | |
29030 | ||
29031 | -#: common.opt:1946 | |
29032 | +#: common.opt:1943 | |
29033 | msgid "Transform condition stores into unconditional ones" | |
29034 | msgstr "Transforma los almacenamientos condicionales a incondicionales" | |
29035 | ||
29036 | -#: common.opt:1950 | |
29037 | +#: common.opt:1947 | |
29038 | msgid "Perform conversions of switch initializations." | |
29039 | msgstr "Realiza la conversión de las inicializaciones de switch." | |
29040 | ||
29041 | -#: common.opt:1954 | |
29042 | +#: common.opt:1951 | |
29043 | msgid "Enable SSA dead code elimination optimization on trees" | |
29044 | msgstr "Activa la optimización de eliminación de código muerto SSA en árboles" | |
29045 | ||
29046 | -#: common.opt:1958 | |
29047 | +#: common.opt:1955 | |
29048 | msgid "Enable dominator optimizations" | |
29049 | msgstr "Activa las optimizaciones dominadoras" | |
29050 | ||
29051 | -#: common.opt:1962 | |
29052 | +#: common.opt:1959 | |
29053 | msgid "Enable tail merging on trees" | |
29054 | msgstr "Activa la mezcla de colas en árboles" | |
29055 | ||
29056 | -#: common.opt:1966 | |
29057 | +#: common.opt:1963 | |
29058 | msgid "Enable dead store elimination" | |
29059 | msgstr "Activa la eliminación de almacenamiento muerto" | |
29060 | ||
29061 | -#: common.opt:1970 | |
29062 | +#: common.opt:1967 | |
29063 | msgid "Enable forward propagation on trees" | |
29064 | msgstr "Activa la propagación hacia adelante en árboles" | |
29065 | ||
29066 | -#: common.opt:1974 | |
29067 | +#: common.opt:1971 | |
29068 | msgid "Enable Full Redundancy Elimination (FRE) on trees" | |
29069 | msgstr "Activa la Eliminación de Redundancia Completa en árboles" | |
29070 | ||
29071 | -#: common.opt:1978 | |
29072 | +#: common.opt:1975 | |
29073 | msgid "Enable string length optimizations on trees" | |
29074 | msgstr "Activa la optimizaciones de longitud de cadenas en árboles" | |
29075 | ||
29076 | -#: common.opt:1982 | |
29077 | +#: common.opt:1979 | |
29078 | msgid "Enable loop distribution on trees" | |
29079 | msgstr "Activa la distribución de bucles en árboles" | |
29080 | ||
29081 | -#: common.opt:1986 | |
29082 | +#: common.opt:1983 | |
29083 | msgid "Enable loop distribution for patterns transformed into a library call" | |
29084 | msgstr "Activa la distribución de bucles por patrones transformados en una llamada a biblioteca" | |
29085 | ||
29086 | -#: common.opt:1990 | |
29087 | +#: common.opt:1987 | |
29088 | msgid "Enable loop invariant motion on trees" | |
29089 | msgstr "Permite el movimiento invariante de bucles en árboles" | |
29090 | ||
29091 | -#: common.opt:1994 | |
29092 | +#: common.opt:1991 | |
29093 | msgid "Enable loop interchange transforms. Same as -floop-interchange" | |
29094 | msgstr "Activa las transformaciones de intercambio de bucle. Igual que -floop-interchange" | |
29095 | ||
29096 | -#: common.opt:1998 | |
29097 | +#: common.opt:1995 | |
29098 | msgid "Create canonical induction variables in loops" | |
29099 | msgstr "Crea variables de inducción canónica en los bucles" | |
29100 | ||
29101 | -#: common.opt:2002 | |
29102 | +#: common.opt:1999 | |
29103 | msgid "Enable loop optimizations on tree level" | |
29104 | msgstr "Activa las optimizaciones de bucles a nivel de árbol" | |
29105 | ||
29106 | -#: common.opt:2006 | |
29107 | +#: common.opt:2003 | |
29108 | msgid "Enable automatic parallelization of loops" | |
29109 | msgstr "Activa la paralelización automática de bucles" | |
29110 | ||
29111 | -#: common.opt:2010 | |
29112 | +#: common.opt:2007 | |
29113 | msgid "Enable hoisting loads from conditional pointers." | |
29114 | msgstr "Activa las cargas de elevación de punteros condicionales." | |
29115 | ||
29116 | -#: common.opt:2014 | |
29117 | +#: common.opt:2011 | |
29118 | msgid "Enable SSA-PRE optimization on trees" | |
29119 | msgstr "Activa las optimizaciones SSA-PRE en árboles" | |
29120 | ||
29121 | -#: common.opt:2018 | |
29122 | +#: common.opt:2015 | |
29123 | msgid "Perform function-local points-to analysis on trees." | |
29124 | msgstr "Realiza el análisis puntero-a función-local en árboles." | |
29125 | ||
29126 | -#: common.opt:2022 | |
29127 | +#: common.opt:2019 | |
29128 | msgid "Enable reassociation on tree level" | |
29129 | msgstr "Activa la reasociación a nivel de árbol" | |
29130 | ||
29131 | -#: common.opt:2030 | |
29132 | +#: common.opt:2027 | |
29133 | msgid "Enable SSA code sinking on trees" | |
29134 | msgstr "Activa el hundimiento de código SSA en árboles" | |
29135 | ||
29136 | -#: common.opt:2034 | |
29137 | +#: common.opt:2031 | |
29138 | msgid "Perform scalar replacement of aggregates" | |
29139 | msgstr "Realiza el reemplazo escalar de agregados" | |
29140 | ||
29141 | -#: common.opt:2038 | |
29142 | +#: common.opt:2035 | |
29143 | msgid "Replace temporary expressions in the SSA->normal pass" | |
29144 | msgstr "Reemplaza expresiones temporales en el paso SSA->normal" | |
29145 | ||
29146 | -#: common.opt:2042 | |
29147 | +#: common.opt:2039 | |
29148 | msgid "Perform live range splitting during the SSA->normal pass" | |
29149 | msgstr "Realizar la división de rango vivo durante el paso SSA->normal" | |
29150 | ||
29151 | -#: common.opt:2046 | |
29152 | +#: common.opt:2043 | |
29153 | msgid "Perform Value Range Propagation on trees" | |
29154 | msgstr "Realiza la Propagación de Rango Valor en árboles" | |
29155 | ||
29156 | -#: common.opt:2050 | |
29157 | +#: common.opt:2047 | |
29158 | msgid "Compile whole compilation unit at a time" | |
29159 | msgstr "Compila la unidad de compilación completa a la vez" | |
29160 | ||
29161 | -#: common.opt:2054 | |
29162 | +#: common.opt:2051 | |
29163 | msgid "Perform loop unrolling when iteration count is known" | |
29164 | msgstr "Realiza el desenrollamiento del bucle cuando se conoce la cuenta de iteración" | |
29165 | ||
29166 | -#: common.opt:2058 | |
29167 | +#: common.opt:2055 | |
29168 | msgid "Perform loop unrolling for all loops" | |
29169 | msgstr "Realiza el desenrollamiento del bucle para todos los bucles" | |
29170 | ||
29171 | -#: common.opt:2065 | |
29172 | +#: common.opt:2062 | |
29173 | msgid "Allow loop optimizations to assume that the loops behave in normal way" | |
29174 | msgstr "Permite que las optimizaciones de bucle asuman que los bucles se comportan normalmente" | |
29175 | ||
29176 | -#: common.opt:2069 | |
29177 | +#: common.opt:2066 | |
29178 | msgid "Allow optimization for floating-point arithmetic which may change the" | |
29179 | msgstr "Permite la optimización para la aritmética de coma flotante la cual puede cambiar" | |
29180 | ||
29181 | -#: common.opt:2074 | |
29182 | +#: common.opt:2071 | |
29183 | msgid "Same as -fassociative-math for expressions which include division." | |
29184 | msgstr "Igual que -fassociative-math para las expresiones que incluyen división." | |
29185 | ||
29186 | -#: common.opt:2082 | |
29187 | +#: common.opt:2079 | |
29188 | msgid "Allow math optimizations that may violate IEEE or ISO standards" | |
29189 | msgstr "Permite optimizaciones matemáticas que pueden violar los estándares IEEE ó ISO" | |
29190 | ||
29191 | -#: common.opt:2086 | |
29192 | +#: common.opt:2083 | |
29193 | msgid "Perform loop unswitching" | |
29194 | msgstr "Realiza la eliminación de opciones de bucle" | |
29195 | ||
29196 | -#: common.opt:2090 | |
29197 | +#: common.opt:2087 | |
29198 | msgid "Just generate unwind tables for exception handling" | |
29199 | msgstr "Sólo genera tablas de desenredo para manejo de excepciones" | |
29200 | ||
29201 | -#: common.opt:2102 | |
29202 | +#: common.opt:2099 | |
29203 | msgid "Perform variable tracking" | |
29204 | msgstr "Realiza seguimiento de variables" | |
29205 | ||
29206 | -#: common.opt:2110 | |
29207 | +#: common.opt:2107 | |
29208 | msgid "Perform variable tracking by annotating assignments" | |
29209 | msgstr "Realiza seguimiento de variables con asignación de anotaciones" | |
29210 | ||
29211 | -#: common.opt:2116 | |
29212 | +#: common.opt:2113 | |
29213 | msgid "Toggle -fvar-tracking-assignments" | |
29214 | msgstr "Cambia -fvar-tracking-assignments" | |
29215 | ||
29216 | -#: common.opt:2120 | |
29217 | +#: common.opt:2117 | |
29218 | msgid "Perform variable tracking and also tag variables that are uninitialized" | |
29219 | msgstr "Realiza el seguimiento de variables y también marca las variables que no se inicializaron" | |
29220 | ||
29221 | -#: common.opt:2124 | |
29222 | +#: common.opt:2121 | |
29223 | msgid "Enable loop vectorization on trees" | |
29224 | msgstr "Activa la vectorización de bucles en árboles" | |
29225 | ||
29226 | -#: common.opt:2128 | |
29227 | +#: common.opt:2125 | |
29228 | msgid "Enable basic block vectorization (SLP) on trees" | |
29229 | msgstr "Activa la vectorización de bloque básico (SLP) en árboles" | |
29230 | ||
29231 | -#: common.opt:2132 | |
29232 | +#: common.opt:2129 | |
29233 | msgid "Enable use of cost model in vectorization" | |
29234 | msgstr "Activa el uso del modelo costo en la vectorización" | |
29235 | ||
29236 | -#: common.opt:2136 | |
29237 | +#: common.opt:2133 | |
29238 | msgid "Enable loop versioning when doing loop vectorization on trees" | |
29239 | msgstr "Activa las versiones de bucles cuando se hace vectorización de bucles en árboles" | |
29240 | ||
29241 | -#: common.opt:2140 | |
29242 | +#: common.opt:2137 | |
29243 | msgid "-ftree-vectorizer-verbose=<number>\tSet the verbosity level of the vectorizer" | |
29244 | msgstr "-ftree-vectorizer-verbose=<número>\tEstablece el nivel de detalle del vectorizador" | |
29245 | ||
29246 | -#: common.opt:2144 | |
29247 | +#: common.opt:2141 | |
29248 | msgid "Enable copy propagation of scalar-evolution information." | |
29249 | msgstr "Activa la propagación de copia de la información escalar-evolución." | |
29250 | ||
29251 | -#: common.opt:2154 | |
29252 | +#: common.opt:2151 | |
29253 | msgid "Add extra commentary to assembler output" | |
29254 | msgstr "Agrega comentarios extra a la salida de ensamblador" | |
29255 | ||
29256 | -#: common.opt:2158 | |
29257 | +#: common.opt:2155 | |
29258 | msgid "-fvisibility=[default|internal|hidden|protected]\tSet the default symbol visibility" | |
29259 | msgstr "-fvisibility=[default|internal|hidden|protected]\tEstablece la visibilidad de símbolos por defecto" | |
29260 | ||
29261 | -#: common.opt:2161 | |
29262 | +#: common.opt:2158 | |
29263 | #, c-format | |
29264 | msgid "unrecognized visibility value %qs" | |
29265 | msgstr "no se reconoce el valor de visibilidad %qs" | |
29266 | ||
29267 | -#: common.opt:2177 | |
29268 | +#: common.opt:2174 | |
29269 | msgid "Use expression value profiles in optimizations" | |
29270 | msgstr "Usa perfiles de valor de expresión en las optimizaciones" | |
29271 | ||
29272 | -#: common.opt:2181 | |
29273 | +#: common.opt:2178 | |
29274 | msgid "Construct webs and split unrelated uses of single variable" | |
29275 | msgstr "Construye redes y divide usos no relacionados de una sola variable" | |
29276 | ||
29277 | -#: common.opt:2185 | |
29278 | +#: common.opt:2182 | |
29279 | msgid "Enable conditional dead code elimination for builtin calls" | |
29280 | msgstr "Activa la eliminación de código muerto condicional para llamadas internas" | |
29281 | ||
29282 | -#: common.opt:2189 | |
29283 | +#: common.opt:2186 | |
29284 | msgid "Perform whole program optimizations" | |
29285 | msgstr "Realiza optimizaciones del programa completo" | |
29286 | ||
29287 | # wraps around? No entiendo bien. cfuga | |
29288 | -#: common.opt:2193 | |
29289 | +#: common.opt:2190 | |
29290 | msgid "Assume signed arithmetic overflow wraps around" | |
29291 | msgstr "Asume que el desbordamiento aritmético con signo se envuelve" | |
29292 | ||
29293 | -#: common.opt:2197 | |
29294 | +#: common.opt:2194 | |
29295 | msgid "Put zero initialized data in the bss section" | |
29296 | msgstr "Pone los datos inicializados a cero en la sección bss" | |
29297 | ||
29298 | -#: common.opt:2201 | |
29299 | +#: common.opt:2198 | |
29300 | msgid "Generate debug information in default format" | |
29301 | msgstr "Genera información de depuración en el formato por defecto" | |
29302 | ||
29303 | -#: common.opt:2205 | |
29304 | +#: common.opt:2202 | |
29305 | msgid "Generate debug information in COFF format" | |
29306 | msgstr "Genera información de depuración en el formato COFF" | |
29307 | ||
29308 | -#: common.opt:2209 | |
29309 | +#: common.opt:2206 | |
29310 | msgid "Generate debug information in DWARF v2 (or later) format" | |
29311 | msgstr "Genera información de depuración en el formato DWARF v2 (o posterior)" | |
29312 | ||
29313 | -#: common.opt:2213 | |
29314 | +#: common.opt:2210 | |
29315 | msgid "Generate debug information in default extended format" | |
29316 | msgstr "Genera información de depuración en el formato extendido por defecto" | |
29317 | ||
29318 | -#: common.opt:2217 | |
29319 | +#: common.opt:2214 | |
29320 | msgid "Don't record gcc command line switches in DWARF DW_AT_producer." | |
29321 | msgstr "No guarda las opciones de la línea de órdenes de gcc en DW_AT_producer de DWARF." | |
29322 | ||
29323 | -#: common.opt:2221 | |
29324 | +#: common.opt:2218 | |
29325 | msgid "Record gcc command line switches in DWARF DW_AT_producer." | |
29326 | msgstr "Guarda las opciones de la línea de órdenes de gcc en DW_AT_producer de DWARF." | |
29327 | ||
29328 | -#: common.opt:2225 | |
29329 | +#: common.opt:2222 | |
29330 | msgid "Generate debug information in STABS format" | |
29331 | msgstr "Genera información de depuración en el formato STABS" | |
29332 | ||
29333 | -#: common.opt:2229 | |
29334 | +#: common.opt:2226 | |
29335 | msgid "Generate debug information in extended STABS format" | |
29336 | msgstr "Genera información de depuración en el formato STABS extendido" | |
29337 | ||
29338 | -#: common.opt:2233 | |
29339 | +#: common.opt:2230 | |
29340 | msgid "Emit DWARF additions beyond selected version" | |
29341 | msgstr "Emite adiciones DWARF más allá de la versión seleccionada" | |
29342 | ||
29343 | -#: common.opt:2237 | |
29344 | +#: common.opt:2234 | |
29345 | msgid "Don't emit DWARF additions beyond selected version" | |
29346 | msgstr "No emite adiciones DWARF más allá de la versión seleccionada" | |
29347 | ||
29348 | -#: common.opt:2241 | |
29349 | +#: common.opt:2238 | |
29350 | msgid "Toggle debug information generation" | |
29351 | msgstr "Cambia la generación de información de depuración" | |
29352 | ||
29353 | -#: common.opt:2245 | |
29354 | +#: common.opt:2242 | |
29355 | msgid "Generate debug information in VMS format" | |
29356 | msgstr "Genera información de depuración en el formato VMS" | |
29357 | ||
29358 | -#: common.opt:2249 | |
29359 | +#: common.opt:2246 | |
29360 | msgid "Generate debug information in XCOFF format" | |
29361 | msgstr "Genera información de depuración en el formato XCOFF" | |
29362 | ||
29363 | -#: common.opt:2253 | |
29364 | +#: common.opt:2250 | |
29365 | msgid "Generate debug information in extended XCOFF format" | |
29366 | msgstr "Genera información de depuración en el formato XCOFF extendido" | |
29367 | ||
29368 | -#: common.opt:2260 | |
29369 | +#: common.opt:2257 | |
29370 | msgid "-iplugindir=<dir>\tSet <dir> to be the default plugin directory" | |
29371 | msgstr "-iplugindir=<dir>\tDefine <dir> como el directorio de plugins por defecto" | |
29372 | ||
29373 | -#: common.opt:2282 | |
29374 | +#: common.opt:2279 | |
29375 | msgid "-o <file>\tPlace output into <file>" | |
29376 | msgstr "-o <fichero>\tColoca la salida en el <fichero>" | |
29377 | ||
29378 | -#: common.opt:2286 | |
29379 | +#: common.opt:2283 | |
29380 | msgid "Enable function profiling" | |
29381 | msgstr "Activa el análisis de perfil de las funciones" | |
29382 | ||
29383 | -#: common.opt:2293 | |
29384 | +#: common.opt:2290 | |
29385 | msgid "Issue warnings needed for strict compliance to the standard" | |
29386 | msgstr "Activa los avisos necesarios para cumplir estrictamente con el estándar" | |
29387 | ||
29388 | -#: common.opt:2297 | |
29389 | +#: common.opt:2294 | |
29390 | msgid "Like -pedantic but issue them as errors" | |
29391 | msgstr "Como -pedantic pero los muestra como errores" | |
29392 | ||
29393 | -#: common.opt:2334 | |
29394 | +#: common.opt:2331 | |
29395 | msgid "Do not display functions compiled or elapsed time" | |
29396 | msgstr "No muestra las funciones compiladas o el tiempo transcurrido" | |
29397 | ||
29398 | -#: common.opt:2366 | |
29399 | +#: common.opt:2363 | |
29400 | msgid "Enable verbose output" | |
29401 | msgstr "Activa la salida detallada" | |
29402 | ||
29403 | -#: common.opt:2370 | |
29404 | +#: common.opt:2367 | |
29405 | msgid "Display the compiler's version" | |
29406 | msgstr "Muestra la versión del compilador" | |
29407 | ||
29408 | -#: common.opt:2374 | |
29409 | +#: common.opt:2371 | |
29410 | msgid "Suppress warnings" | |
29411 | msgstr "Suprime avisos" | |
29412 | ||
29413 | -#: common.opt:2384 | |
29414 | +#: common.opt:2381 | |
29415 | msgid "Create a shared library" | |
29416 | msgstr "Crea una biblioteca compartida" | |
29417 | ||
29418 | -#: common.opt:2417 | |
29419 | +#: common.opt:2414 | |
29420 | msgid "Create a position independent executable" | |
29421 | msgstr "Genera un ejecutable independiente de posición" | |
29422 | ||
29423 | -#: go/gofrontend/expressions.cc:912 | |
29424 | +#: go/gofrontend/expressions.cc:917 | |
29425 | msgid "invalid use of type" | |
29426 | msgstr "uso inválido del tipo" | |
29427 | ||
29428 | -#: go/gofrontend/expressions.cc:2273 go/gofrontend/expressions.cc:2991 | |
29429 | +#: go/gofrontend/expressions.cc:2278 go/gofrontend/expressions.cc:2996 | |
29430 | msgid "floating point constant truncated to integer" | |
29431 | msgstr "se truncó la constante de coma flotante a entero" | |
29432 | ||
29433 | -#: go/gofrontend/expressions.cc:2871 go/gofrontend/expressions.cc:2941 | |
29434 | -#: go/gofrontend/expressions.cc:2957 | |
29435 | +#: go/gofrontend/expressions.cc:2876 go/gofrontend/expressions.cc:2946 | |
29436 | +#: go/gofrontend/expressions.cc:2962 | |
29437 | msgid "constant refers to itself" | |
29438 | msgstr "la constante se refiere a sí misma" | |
29439 | ||
29440 | -#: go/gofrontend/expressions.cc:4537 | |
29441 | +#: go/gofrontend/expressions.cc:4557 | |
29442 | msgid "expected numeric type" | |
29443 | msgstr "se esperaba un tipo numérico" | |
29444 | ||
29445 | -#: go/gofrontend/expressions.cc:4544 | |
29446 | +#: go/gofrontend/expressions.cc:4564 | |
29447 | msgid "expected integer or boolean type" | |
29448 | msgstr "se esperaba un tipo entero o booleano" | |
29449 | ||
29450 | -#: go/gofrontend/expressions.cc:4551 | |
29451 | +#: go/gofrontend/expressions.cc:4571 | |
29452 | msgid "invalid operand for unary %<&%>" | |
29453 | msgstr "operando inválido para el unario %<&%>" | |
29454 | ||
29455 | -#: go/gofrontend/expressions.cc:4560 | |
29456 | +#: go/gofrontend/expressions.cc:4580 | |
29457 | msgid "expected pointer" | |
29458 | msgstr "se esperaba un puntero" | |
29459 | ||
29460 | -#: go/gofrontend/expressions.cc:6258 go/gofrontend/expressions.cc:6509 | |
29461 | -#: go/gofrontend/expressions.cc:6527 | |
29462 | +#: go/gofrontend/expressions.cc:6316 go/gofrontend/expressions.cc:6567 | |
29463 | +#: go/gofrontend/expressions.cc:6585 | |
29464 | msgid "incompatible types in binary expression" | |
29465 | msgstr "tipos incompatibles en la expresión binaria" | |
29466 | ||
29467 | -#: go/gofrontend/expressions.cc:6541 | |
29468 | +#: go/gofrontend/expressions.cc:6599 | |
29469 | msgid "shift of non-integer operand" | |
29470 | msgstr "desplazamiento de un operando que no es entero" | |
29471 | ||
29472 | -#: go/gofrontend/expressions.cc:6546 | |
29473 | +#: go/gofrontend/expressions.cc:6604 | |
29474 | msgid "shift count not unsigned integer" | |
29475 | msgstr "la cuenta de desplazamiento no es un entero sin signo" | |
29476 | ||
29477 | -#: go/gofrontend/expressions.cc:6556 | |
29478 | +#: go/gofrontend/expressions.cc:6614 | |
29479 | msgid "negative shift count" | |
29480 | msgstr "cuenta de desplazamiento negativa" | |
29481 | ||
29482 | -#: go/gofrontend/expressions.cc:7264 | |
29483 | +#: go/gofrontend/expressions.cc:7322 | |
29484 | msgid "object is not a method" | |
29485 | msgstr "el objeto no es un método" | |
29486 | ||
29487 | -#: go/gofrontend/expressions.cc:7273 | |
29488 | +#: go/gofrontend/expressions.cc:7331 | |
29489 | msgid "method type does not match object type" | |
29490 | msgstr "el tipo de método no coincide con el tipo de objeto" | |
29491 | ||
29492 | -#: go/gofrontend/expressions.cc:7553 | |
29493 | +#: go/gofrontend/expressions.cc:7611 | |
29494 | msgid "invalid use of %<...%> with builtin function" | |
29495 | msgstr "uso inválido de %<..%> con la función interna" | |
29496 | ||
29497 | -#: go/gofrontend/expressions.cc:7615 go/gofrontend/expressions.cc:7669 | |
29498 | -#: go/gofrontend/expressions.cc:7714 go/gofrontend/expressions.cc:8421 | |
29499 | -#: go/gofrontend/expressions.cc:8565 go/gofrontend/expressions.cc:8608 | |
29500 | -#: go/gofrontend/expressions.cc:8657 go/gofrontend/expressions.cc:9829 | |
29501 | -#: go/gofrontend/expressions.cc:9848 | |
29502 | +#: go/gofrontend/expressions.cc:7673 go/gofrontend/expressions.cc:7730 | |
29503 | +#: go/gofrontend/expressions.cc:7775 go/gofrontend/expressions.cc:8502 | |
29504 | +#: go/gofrontend/expressions.cc:8647 go/gofrontend/expressions.cc:8690 | |
29505 | +#: go/gofrontend/expressions.cc:8746 go/gofrontend/expressions.cc:9924 | |
29506 | +#: go/gofrontend/expressions.cc:9943 | |
29507 | msgid "not enough arguments" | |
29508 | msgstr "faltan argumentos" | |
29509 | ||
29510 | -#: go/gofrontend/expressions.cc:7617 go/gofrontend/expressions.cc:7671 | |
29511 | -#: go/gofrontend/expressions.cc:8426 go/gofrontend/expressions.cc:8548 | |
29512 | -#: go/gofrontend/expressions.cc:8570 go/gofrontend/expressions.cc:8613 | |
29513 | -#: go/gofrontend/expressions.cc:8659 go/gofrontend/expressions.cc:9546 | |
29514 | -#: go/gofrontend/expressions.cc:9834 go/gofrontend/expressions.cc:9855 | |
29515 | +#: go/gofrontend/expressions.cc:7675 go/gofrontend/expressions.cc:7732 | |
29516 | +#: go/gofrontend/expressions.cc:8507 go/gofrontend/expressions.cc:8630 | |
29517 | +#: go/gofrontend/expressions.cc:8652 go/gofrontend/expressions.cc:8695 | |
29518 | +#: go/gofrontend/expressions.cc:8748 go/gofrontend/expressions.cc:9638 | |
29519 | +#: go/gofrontend/expressions.cc:9929 go/gofrontend/expressions.cc:9950 | |
29520 | msgid "too many arguments" | |
29521 | msgstr "demasiados argumentos" | |
29522 | ||
29523 | -#: go/gofrontend/expressions.cc:7673 | |
29524 | +#: go/gofrontend/expressions.cc:7734 | |
29525 | msgid "argument 1 must be a map" | |
29526 | msgstr "el argumento 1 debe ser un mapa" | |
29527 | ||
29528 | -#: go/gofrontend/expressions.cc:7740 | |
29529 | +#: go/gofrontend/expressions.cc:7801 | |
29530 | msgid "invalid type for make function" | |
29531 | msgstr "tipo inválido para la función make" | |
29532 | ||
29533 | -#: go/gofrontend/expressions.cc:7750 | |
29534 | +#: go/gofrontend/expressions.cc:7815 | |
29535 | msgid "length required when allocating a slice" | |
29536 | msgstr "se requiere longitud al alojar una rebanada" | |
29537 | ||
29538 | -#: go/gofrontend/expressions.cc:7764 | |
29539 | +#: go/gofrontend/expressions.cc:7829 | |
29540 | msgid "bad size for make" | |
29541 | msgstr "tamaño erróneo para make" | |
29542 | ||
29543 | -#: go/gofrontend/expressions.cc:7776 | |
29544 | +#: go/gofrontend/expressions.cc:7844 | |
29545 | msgid "bad capacity when making slice" | |
29546 | msgstr "capacidad errónea al crear la rebanada" | |
29547 | ||
29548 | -#: go/gofrontend/expressions.cc:7784 | |
29549 | +#: go/gofrontend/expressions.cc:7855 | |
29550 | msgid "too many arguments to make" | |
29551 | msgstr "demasiados argumentos para make" | |
29552 | ||
29553 | -#: go/gofrontend/expressions.cc:8467 | |
29554 | +#: go/gofrontend/expressions.cc:8549 | |
29555 | msgid "argument must be array or slice or channel" | |
29556 | msgstr "el argumento debe ser matriz o rebanada o canal" | |
29557 | ||
29558 | -#: go/gofrontend/expressions.cc:8477 | |
29559 | +#: go/gofrontend/expressions.cc:8559 | |
29560 | msgid "argument must be string or array or slice or map or channel" | |
29561 | msgstr "el argumento debe ser cadena o matriz o rebanada o mapa o canal" | |
29562 | ||
29563 | -#: go/gofrontend/expressions.cc:8523 | |
29564 | +#: go/gofrontend/expressions.cc:8605 | |
29565 | msgid "unsupported argument type to builtin function" | |
29566 | msgstr "no se admite el tipo de argumento para la función interna" | |
29567 | ||
29568 | -#: go/gofrontend/expressions.cc:8534 | |
29569 | +#: go/gofrontend/expressions.cc:8616 | |
29570 | msgid "argument must be channel" | |
29571 | msgstr "el argumento debe ser canal" | |
29572 | ||
29573 | -#: go/gofrontend/expressions.cc:8536 | |
29574 | +#: go/gofrontend/expressions.cc:8618 | |
29575 | msgid "cannot close receive-only channel" | |
29576 | msgstr "no se puede cerrar un canal de sólo recepción" | |
29577 | ||
29578 | -#: go/gofrontend/expressions.cc:8556 | |
29579 | +#: go/gofrontend/expressions.cc:8638 | |
29580 | msgid "argument must be a field reference" | |
29581 | msgstr "el argumento debe ser una referencia de campo" | |
29582 | ||
29583 | -#: go/gofrontend/expressions.cc:8583 | |
29584 | +#: go/gofrontend/expressions.cc:8665 | |
29585 | msgid "left argument must be a slice" | |
29586 | msgstr "el argumento izquierdo debe ser una rebanada" | |
29587 | ||
29588 | -#: go/gofrontend/expressions.cc:8591 | |
29589 | +#: go/gofrontend/expressions.cc:8673 | |
29590 | msgid "element types must be the same" | |
29591 | msgstr "los tipos de elemento deben ser el mismo" | |
29592 | ||
29593 | -#: go/gofrontend/expressions.cc:8596 | |
29594 | +#: go/gofrontend/expressions.cc:8678 | |
29595 | msgid "first argument must be []byte" | |
29596 | msgstr "el primer argumento debe ser []byte" | |
29597 | ||
29598 | -#: go/gofrontend/expressions.cc:8599 | |
29599 | +#: go/gofrontend/expressions.cc:8681 | |
29600 | msgid "second argument must be slice or string" | |
29601 | msgstr "el segundo argumento debe ser una rebanada o una cadena" | |
29602 | ||
29603 | -#: go/gofrontend/expressions.cc:8632 | |
29604 | -msgid "arguments 1 and 2 have different types" | |
29605 | -msgstr "los argumentos 1 y 2 tienen tipos diferentes" | |
29606 | +#: go/gofrontend/expressions.cc:8722 | |
29607 | +msgid "argument 2 has invalid type" | |
29608 | +msgstr "el argumento 2 es de tipo inválido" | |
29609 | ||
29610 | -#: go/gofrontend/expressions.cc:8649 | |
29611 | +#: go/gofrontend/expressions.cc:8738 | |
29612 | msgid "argument must have complex type" | |
29613 | msgstr "el argumento debe tener tipo complejo" | |
29614 | ||
29615 | -#: go/gofrontend/expressions.cc:8667 | |
29616 | +#: go/gofrontend/expressions.cc:8756 | |
29617 | msgid "complex arguments must have identical types" | |
29618 | msgstr "los argumentos complejos deben tener tipos idénticos" | |
29619 | ||
29620 | -#: go/gofrontend/expressions.cc:8669 | |
29621 | +#: go/gofrontend/expressions.cc:8758 | |
29622 | msgid "complex arguments must have floating-point type" | |
29623 | msgstr "los argumentos complejos deben tener tipo de coma flotante" | |
29624 | ||
29625 | -#: go/gofrontend/expressions.cc:9792 go/gofrontend/expressions.cc:10217 | |
29626 | +#: go/gofrontend/expressions.cc:9887 go/gofrontend/expressions.cc:10318 | |
29627 | msgid "expected function" | |
29628 | msgstr "se esperaba función" | |
29629 | ||
29630 | -#: go/gofrontend/expressions.cc:9811 | |
29631 | +#: go/gofrontend/expressions.cc:9906 | |
29632 | msgid "incompatible type for receiver" | |
29633 | msgstr "tipo incompatible para el receptor" | |
29634 | ||
29635 | -#: go/gofrontend/expressions.cc:10226 go/gofrontend/expressions.cc:10240 | |
29636 | +#: go/gofrontend/expressions.cc:10327 go/gofrontend/expressions.cc:10341 | |
29637 | msgid "number of results does not match number of values" | |
29638 | msgstr "el número de resultados no coincide con el número de valores" | |
29639 | ||
29640 | -#: go/gofrontend/expressions.cc:10535 go/gofrontend/expressions.cc:10943 | |
29641 | +#: go/gofrontend/expressions.cc:10645 go/gofrontend/expressions.cc:11065 | |
29642 | msgid "index must be integer" | |
29643 | msgstr "el índice debe ser entero" | |
29644 | ||
29645 | -#: go/gofrontend/expressions.cc:10541 go/gofrontend/expressions.cc:10947 | |
29646 | +#: go/gofrontend/expressions.cc:10651 go/gofrontend/expressions.cc:11069 | |
29647 | msgid "slice end must be integer" | |
29648 | msgstr "el final de la rebanada debe ser entero" | |
29649 | ||
29650 | -#: go/gofrontend/expressions.cc:10596 | |
29651 | +#: go/gofrontend/expressions.cc:10706 | |
29652 | msgid "slice of unaddressable value" | |
29653 | msgstr "rebanada con valor que no es direccionable" | |
29654 | ||
29655 | -#: go/gofrontend/expressions.cc:11175 | |
29656 | +#: go/gofrontend/expressions.cc:11297 | |
29657 | msgid "incompatible type for map index" | |
29658 | msgstr "tipo incompatibles para el índice de mapa" | |
29659 | ||
29660 | -#: go/gofrontend/expressions.cc:11523 | |
29661 | +#: go/gofrontend/expressions.cc:11645 | |
29662 | msgid "expected interface or pointer to interface" | |
29663 | msgstr "se esperaba interfaz o puntero a interfaz" | |
29664 | ||
29665 | -#: go/gofrontend/expressions.cc:12049 | |
29666 | +#: go/gofrontend/expressions.cc:12182 | |
29667 | msgid "too many expressions for struct" | |
29668 | msgstr "demasiadas expresiones para struct" | |
29669 | ||
29670 | -#: go/gofrontend/expressions.cc:12062 | |
29671 | +#: go/gofrontend/expressions.cc:12195 | |
29672 | msgid "too few expressions for struct" | |
29673 | msgstr "faltan expresiones para struct" | |
29674 | ||
29675 | -#: go/gofrontend/expressions.cc:12342 | |
29676 | +#: go/gofrontend/expressions.cc:12475 | |
29677 | msgid "too many elements in composite literal" | |
29678 | msgstr "demasiados elementos en la literal compuesta" | |
29679 | ||
29680 | -#: go/gofrontend/expressions.cc:13611 go/gofrontend/expressions.cc:13619 | |
29681 | +#: go/gofrontend/expressions.cc:13744 go/gofrontend/expressions.cc:13752 | |
29682 | msgid "invalid unsafe.Pointer conversion" | |
29683 | msgstr "conversión unsafe.Pointer inválida" | |
29684 | ||
29685 | -#: go/gofrontend/expressions.cc:13624 go/gofrontend/statements.cc:1539 | |
29686 | +#: go/gofrontend/expressions.cc:13757 go/gofrontend/statements.cc:1539 | |
29687 | msgid "type assertion only valid for interface types" | |
29688 | msgstr "la aserción de tipo sólo es válida para los tipos de interfaz" | |
29689 | ||
29690 | -#: go/gofrontend/expressions.cc:13636 | |
29691 | +#: go/gofrontend/expressions.cc:13769 | |
29692 | msgid "impossible type assertion: type does not implement interface" | |
29693 | msgstr "aserción de tipo imposible: el tipo no implementa interfaz" | |
29694 | ||
29695 | -#: go/gofrontend/expressions.cc:13820 go/gofrontend/statements.cc:1387 | |
29696 | +#: go/gofrontend/expressions.cc:13953 go/gofrontend/statements.cc:1387 | |
29697 | msgid "expected channel" | |
29698 | msgstr "se esperaba canal" | |
29699 | ||
29700 | -#: go/gofrontend/expressions.cc:13825 go/gofrontend/statements.cc:1392 | |
29701 | +#: go/gofrontend/expressions.cc:13958 go/gofrontend/statements.cc:1392 | |
29702 | msgid "invalid receive on send-only channel" | |
29703 | msgstr "recepción inválida en canal de sólo envío" | |
29704 | ||
29705 | @@ -11888,117 +12033,117 @@ | |
29706 | msgid "range clause must have array, slice, string, map, or channel type" | |
29707 | msgstr "la cláusula de rango debe tener tipo matriz, rebanada, cadena, mapa o canal" | |
29708 | ||
29709 | -#: go/gofrontend/types.cc:509 | |
29710 | +#: go/gofrontend/types.cc:527 | |
29711 | msgid "invalid comparison of non-ordered type" | |
29712 | msgstr "comparación inválida de tipo que no es ordenado" | |
29713 | ||
29714 | -#: go/gofrontend/types.cc:525 | |
29715 | +#: go/gofrontend/types.cc:543 | |
29716 | msgid "slice can only be compared to nil" | |
29717 | msgstr "la rebanada sólo se puede comparar con nil" | |
29718 | ||
29719 | -#: go/gofrontend/types.cc:527 | |
29720 | +#: go/gofrontend/types.cc:545 | |
29721 | msgid "map can only be compared to nil" | |
29722 | msgstr "el mapa sólo se puede comparar con nil" | |
29723 | ||
29724 | -#: go/gofrontend/types.cc:529 | |
29725 | +#: go/gofrontend/types.cc:547 | |
29726 | msgid "func can only be compared to nil" | |
29727 | msgstr "la función sólo se puede comparar con nil" | |
29728 | ||
29729 | -#: go/gofrontend/types.cc:535 | |
29730 | +#: go/gofrontend/types.cc:553 | |
29731 | #, c-format | |
29732 | msgid "invalid operation (%s)" | |
29733 | msgstr "operación inválida (%s)" | |
29734 | ||
29735 | -#: go/gofrontend/types.cc:558 | |
29736 | +#: go/gofrontend/types.cc:576 | |
29737 | msgid "invalid comparison of non-comparable type" | |
29738 | msgstr "comparación inválida de tipo que no es comparable" | |
29739 | ||
29740 | -#: go/gofrontend/types.cc:576 | |
29741 | +#: go/gofrontend/types.cc:594 | |
29742 | msgid "invalid comparison of non-comparable struct" | |
29743 | msgstr "comparación inválida de struct que no es comparable" | |
29744 | ||
29745 | -#: go/gofrontend/types.cc:587 | |
29746 | +#: go/gofrontend/types.cc:605 | |
29747 | msgid "invalid comparison of non-comparable array" | |
29748 | msgstr "comparación inválida de matriz que no es comparable" | |
29749 | ||
29750 | -#: go/gofrontend/types.cc:699 | |
29751 | +#: go/gofrontend/types.cc:636 | |
29752 | +msgid "multiple value function call in single value context" | |
29753 | +msgstr "llamada a función de valor múltiple en un contexto de un solo valor" | |
29754 | + | |
29755 | +#: go/gofrontend/types.cc:723 | |
29756 | msgid "need explicit conversion" | |
29757 | msgstr "necesita conversión implícita" | |
29758 | ||
29759 | -#: go/gofrontend/types.cc:701 | |
29760 | -msgid "multiple value function call in single value context" | |
29761 | -msgstr "llamada a función de valor múltiple en un contexto de un solo valor" | |
29762 | - | |
29763 | -#: go/gofrontend/types.cc:709 | |
29764 | +#: go/gofrontend/types.cc:730 | |
29765 | #, c-format | |
29766 | msgid "cannot use type %s as type %s" | |
29767 | msgstr "no se puede usar el tipo %s como tipo %s" | |
29768 | ||
29769 | -#: go/gofrontend/types.cc:2980 | |
29770 | +#: go/gofrontend/types.cc:3205 | |
29771 | msgid "different receiver types" | |
29772 | msgstr "tipos de receptor diferentes" | |
29773 | ||
29774 | -#: go/gofrontend/types.cc:3000 go/gofrontend/types.cc:3013 | |
29775 | -#: go/gofrontend/types.cc:3028 | |
29776 | +#: go/gofrontend/types.cc:3225 go/gofrontend/types.cc:3238 | |
29777 | +#: go/gofrontend/types.cc:3253 | |
29778 | msgid "different number of parameters" | |
29779 | msgstr "número diferente de parámetros" | |
29780 | ||
29781 | -#: go/gofrontend/types.cc:3021 | |
29782 | +#: go/gofrontend/types.cc:3246 | |
29783 | msgid "different parameter types" | |
29784 | msgstr "tipos de parámetro diferentes" | |
29785 | ||
29786 | -#: go/gofrontend/types.cc:3036 | |
29787 | +#: go/gofrontend/types.cc:3261 | |
29788 | msgid "different varargs" | |
29789 | msgstr "varargs diferentes" | |
29790 | ||
29791 | -#: go/gofrontend/types.cc:3045 go/gofrontend/types.cc:3058 | |
29792 | -#: go/gofrontend/types.cc:3073 | |
29793 | +#: go/gofrontend/types.cc:3270 go/gofrontend/types.cc:3283 | |
29794 | +#: go/gofrontend/types.cc:3298 | |
29795 | msgid "different number of results" | |
29796 | msgstr "número diferente de resultados" | |
29797 | ||
29798 | -#: go/gofrontend/types.cc:3066 | |
29799 | +#: go/gofrontend/types.cc:3291 | |
29800 | msgid "different result types" | |
29801 | msgstr "tipos de resultado diferentes" | |
29802 | ||
29803 | -#: go/gofrontend/types.cc:4054 | |
29804 | +#: go/gofrontend/types.cc:4247 | |
29805 | #, c-format | |
29806 | msgid "implicit assignment of %s%s%s hidden field %s%s%s" | |
29807 | msgstr "asignación implícita de %s%s%s campo oculto %s%s%s" | |
29808 | ||
29809 | -#: go/gofrontend/types.cc:6423 | |
29810 | +#: go/gofrontend/types.cc:6651 | |
29811 | #, c-format | |
29812 | msgid "need explicit conversion; missing method %s%s%s" | |
29813 | msgstr "se necesita conversión explícita; falta el método %s%s%s" | |
29814 | ||
29815 | -#: go/gofrontend/types.cc:6440 go/gofrontend/types.cc:6582 | |
29816 | +#: go/gofrontend/types.cc:6668 go/gofrontend/types.cc:6810 | |
29817 | #, c-format | |
29818 | msgid "incompatible type for method %s%s%s" | |
29819 | msgstr "tipo incompatible para el método %s%s%s" | |
29820 | ||
29821 | -#: go/gofrontend/types.cc:6444 go/gofrontend/types.cc:6586 | |
29822 | +#: go/gofrontend/types.cc:6672 go/gofrontend/types.cc:6814 | |
29823 | #, c-format | |
29824 | msgid "incompatible type for method %s%s%s (%s)" | |
29825 | msgstr "tipo incompatible para el método %s%s%s (%s)" | |
29826 | ||
29827 | -#: go/gofrontend/types.cc:6523 go/gofrontend/types.cc:6536 | |
29828 | +#: go/gofrontend/types.cc:6751 go/gofrontend/types.cc:6764 | |
29829 | msgid "pointer to interface type has no methods" | |
29830 | msgstr "el puntero a tipo de interfaz no tiene métodos" | |
29831 | ||
29832 | -#: go/gofrontend/types.cc:6525 go/gofrontend/types.cc:6538 | |
29833 | +#: go/gofrontend/types.cc:6753 go/gofrontend/types.cc:6766 | |
29834 | msgid "type has no methods" | |
29835 | msgstr "el tipo no tiene métodos" | |
29836 | ||
29837 | -#: go/gofrontend/types.cc:6559 | |
29838 | +#: go/gofrontend/types.cc:6787 | |
29839 | #, c-format | |
29840 | msgid "ambiguous method %s%s%s" | |
29841 | msgstr "método ambiguo %s%s%s" | |
29842 | ||
29843 | -#: go/gofrontend/types.cc:6562 | |
29844 | +#: go/gofrontend/types.cc:6790 | |
29845 | #, c-format | |
29846 | msgid "missing method %s%s%s" | |
29847 | msgstr "falta el método %s%s%s" | |
29848 | ||
29849 | -#: go/gofrontend/types.cc:6602 | |
29850 | +#: go/gofrontend/types.cc:6830 | |
29851 | #, c-format | |
29852 | msgid "method %s%s%s requires a pointer" | |
29853 | msgstr "el método %s%s%s requiere un puntero" | |
29854 | @@ -12065,150 +12210,150 @@ | |
29855 | msgid "invalid third argument to %<__builtin_prefetch%>; using zero" | |
29856 | msgstr "el tercer argumento para %<__builtin_prefetch%> es inválido; se usa cero" | |
29857 | ||
29858 | -#: builtins.c:4214 gimplify.c:2406 | |
29859 | +#: builtins.c:4243 gimplify.c:2407 | |
29860 | #, gcc-internal-format | |
29861 | msgid "too few arguments to function %<va_start%>" | |
29862 | msgstr "faltan argumentos para la función %<va_start%>" | |
29863 | ||
29864 | -#: builtins.c:4372 | |
29865 | +#: builtins.c:4401 | |
29866 | #, gcc-internal-format | |
29867 | msgid "first argument to %<va_arg%> not of type %<va_list%>" | |
29868 | msgstr "el primer argumento para %<va_arg%> no es del tipo %<va_list%>" | |
29869 | ||
29870 | -#: builtins.c:4388 | |
29871 | +#: builtins.c:4417 | |
29872 | #, gcc-internal-format | |
29873 | msgid "%qT is promoted to %qT when passed through %<...%>" | |
29874 | msgstr "%qT se promueve a %qT cuando pasa a través de %<...%>" | |
29875 | ||
29876 | -#: builtins.c:4393 | |
29877 | +#: builtins.c:4422 | |
29878 | #, gcc-internal-format | |
29879 | msgid "(so you should pass %qT not %qT to %<va_arg%>)" | |
29880 | msgstr "(así que debe pasar %qT y no %qT a %<va_arg%>)" | |
29881 | ||
29882 | #. We can, however, treat "undefined" any way we please. | |
29883 | #. Call abort to encourage the user to fix the program. | |
29884 | -#: builtins.c:4400 c-typeck.c:2787 | |
29885 | +#: builtins.c:4429 c-typeck.c:2787 | |
29886 | #, gcc-internal-format | |
29887 | msgid "if this code is reached, the program will abort" | |
29888 | msgstr "si se alcanza este código, el programa abortará" | |
29889 | ||
29890 | -#: builtins.c:4527 | |
29891 | +#: builtins.c:4556 | |
29892 | #, gcc-internal-format | |
29893 | msgid "invalid argument to %<__builtin_frame_address%>" | |
29894 | msgstr "argumento inválido para %<__builtin_frame_address%>" | |
29895 | ||
29896 | -#: builtins.c:4529 | |
29897 | +#: builtins.c:4558 | |
29898 | #, gcc-internal-format | |
29899 | msgid "invalid argument to %<__builtin_return_address%>" | |
29900 | msgstr "argumento inválido para %<__builtin_return_address%>" | |
29901 | ||
29902 | -#: builtins.c:4542 | |
29903 | +#: builtins.c:4571 | |
29904 | #, gcc-internal-format | |
29905 | msgid "unsupported argument to %<__builtin_frame_address%>" | |
29906 | msgstr "argumento no admitido para %<__builtin_frame_address%>" | |
29907 | ||
29908 | -#: builtins.c:4544 | |
29909 | +#: builtins.c:4573 | |
29910 | #, gcc-internal-format | |
29911 | msgid "unsupported argument to %<__builtin_return_address%>" | |
29912 | msgstr "argumento no admitido para %<__builtin_return_address%>" | |
29913 | ||
29914 | -#: builtins.c:4808 | |
29915 | +#: builtins.c:4837 | |
29916 | #, gcc-internal-format | |
29917 | msgid "both arguments to %<__builtin___clear_cache%> must be pointers" | |
29918 | msgstr "ambos argumentos de %<__builtin_clear_cache%> deben ser punteros" | |
29919 | ||
29920 | -#: builtins.c:4903 | |
29921 | +#: builtins.c:4937 | |
29922 | #, gcc-internal-format | |
29923 | msgid "trampoline generated for nested function %qD" | |
29924 | msgstr "se generó un trampolín para la función anidada %qD" | |
29925 | ||
29926 | -#: builtins.c:5198 builtins.c:5211 | |
29927 | +#: builtins.c:5233 builtins.c:5246 | |
29928 | #, gcc-internal-format | |
29929 | msgid "%qD changed semantics in GCC 4.4" | |
29930 | msgstr "%qD cambió su semántica en GCC 4.4" | |
29931 | ||
29932 | -#: builtins.c:5310 | |
29933 | +#: builtins.c:5345 | |
29934 | #, gcc-internal-format | |
29935 | msgid "invalid memory model argument to builtin" | |
29936 | msgstr "argumento de modelo de memoria inválido para la función interna" | |
29937 | ||
29938 | -#: builtins.c:5330 | |
29939 | +#: builtins.c:5365 | |
29940 | #, gcc-internal-format | |
29941 | msgid "invalid memory model for %<__atomic_exchange%>" | |
29942 | msgstr "modelo de memoria inválido para %<__atomic_exchange%>" | |
29943 | ||
29944 | -#: builtins.c:5366 | |
29945 | +#: builtins.c:5401 | |
29946 | #, gcc-internal-format | |
29947 | msgid "invalid failure memory model for %<__atomic_compare_exchange%>" | |
29948 | msgstr "falla de modelo de memoria inválido para %<__atomic_compare_exchange%>" | |
29949 | ||
29950 | -#: builtins.c:5372 | |
29951 | +#: builtins.c:5407 | |
29952 | #, gcc-internal-format | |
29953 | msgid "failure memory model cannot be stronger than success memory model for %<__atomic_compare_exchange%>" | |
29954 | msgstr "la falla de modelo de memoria no puede ser más fuerte que el modelo de memoria exitoso para %<__atomic_compare_exchange%>" | |
29955 | ||
29956 | -#: builtins.c:5418 | |
29957 | +#: builtins.c:5453 | |
29958 | #, gcc-internal-format | |
29959 | msgid "invalid memory model for %<__atomic_load%>" | |
29960 | msgstr "modelo de memoria inválido para %<__atomic_load%>" | |
29961 | ||
29962 | -#: builtins.c:5448 builtins.c:5554 | |
29963 | +#: builtins.c:5483 builtins.c:5589 | |
29964 | #, gcc-internal-format | |
29965 | msgid "invalid memory model for %<__atomic_store%>" | |
29966 | msgstr "modelo de memoria inválido para %<__atomic_store%>" | |
29967 | ||
29968 | -#: builtins.c:5663 | |
29969 | +#: builtins.c:5698 | |
29970 | #, gcc-internal-format | |
29971 | msgid "non-constant argument 1 to __atomic_always_lock_free" | |
29972 | msgstr "el argumento 1 para __atomic_always_lock_free no es una constante" | |
29973 | ||
29974 | -#: builtins.c:5705 | |
29975 | +#: builtins.c:5740 | |
29976 | #, gcc-internal-format | |
29977 | msgid "non-integer argument 1 to __atomic_is_lock_free" | |
29978 | msgstr "el argumento 1 para __atomic_is_lock_free no es un entero" | |
29979 | ||
29980 | #. All valid uses of __builtin_va_arg_pack () are removed during | |
29981 | #. inlining. | |
29982 | -#: builtins.c:5989 expr.c:9944 | |
29983 | +#: builtins.c:6023 expr.c:9989 | |
29984 | #, gcc-internal-format | |
29985 | msgid "%Kinvalid use of %<__builtin_va_arg_pack ()%>" | |
29986 | msgstr "%Kuso inválido de %<__builtin_va_arg_pack ()%>" | |
29987 | ||
29988 | #. All valid uses of __builtin_va_arg_pack_len () are removed during | |
29989 | #. inlining. | |
29990 | -#: builtins.c:5995 | |
29991 | +#: builtins.c:6029 | |
29992 | #, gcc-internal-format | |
29993 | msgid "%Kinvalid use of %<__builtin_va_arg_pack_len ()%>" | |
29994 | msgstr "%Kuso inválido de %<__builtin_va_arg_pack_len ()%>" | |
29995 | ||
29996 | -#: builtins.c:6234 | |
29997 | +#: builtins.c:6268 | |
29998 | #, gcc-internal-format | |
29999 | msgid "%<__builtin_longjmp%> second argument must be 1" | |
30000 | msgstr "el segundo argumento de %<__builtin_longjump%> debe ser 1" | |
30001 | ||
30002 | -#: builtins.c:7077 | |
30003 | +#: builtins.c:7113 | |
30004 | #, gcc-internal-format | |
30005 | msgid "target format does not support infinity" | |
30006 | msgstr "el formato objetivo no soporta infinito" | |
30007 | ||
30008 | -#: builtins.c:12058 | |
30009 | +#: builtins.c:12094 | |
30010 | #, gcc-internal-format | |
30011 | msgid "%<va_start%> used in function with fixed args" | |
30012 | msgstr "se usó %<va_start%> en una función con argumentos fijos" | |
30013 | ||
30014 | -#: builtins.c:12066 | |
30015 | +#: builtins.c:12102 | |
30016 | #, gcc-internal-format | |
30017 | msgid "wrong number of arguments to function %<va_start%>" | |
30018 | msgstr "número erróneo argumentos para la función %<va_start%>" | |
30019 | ||
30020 | #. Evidently an out of date version of <stdarg.h>; can't validate | |
30021 | #. va_start's second argument, but can still work as intended. | |
30022 | -#: builtins.c:12079 | |
30023 | +#: builtins.c:12115 | |
30024 | #, gcc-internal-format | |
30025 | msgid "%<__builtin_next_arg%> called without an argument" | |
30026 | msgstr "se llamó a %<__builtin_next_arg%> sin un argumento" | |
30027 | ||
30028 | -#: builtins.c:12084 | |
30029 | +#: builtins.c:12120 | |
30030 | #, gcc-internal-format | |
30031 | msgid "wrong number of arguments to function %<__builtin_next_arg%>" | |
30032 | msgstr "número erróneo de argumentos para la función %<__builtin_next_arg%>" | |
30033 | @@ -12218,42 +12363,42 @@ | |
30034 | #. argument. We just warn and set the arg to be the last | |
30035 | #. argument so that we will get wrong-code because of | |
30036 | #. it. | |
30037 | -#: builtins.c:12114 | |
30038 | +#: builtins.c:12150 | |
30039 | #, gcc-internal-format | |
30040 | msgid "second parameter of %<va_start%> not last named argument" | |
30041 | msgstr "el segundo parámetro de %<va_start%> no es el último argumento nombrado" | |
30042 | ||
30043 | -#: builtins.c:12124 | |
30044 | +#: builtins.c:12160 | |
30045 | #, gcc-internal-format | |
30046 | msgid "undefined behaviour when second parameter of %<va_start%> is declared with %<register%> storage" | |
30047 | msgstr "la conducta es indefinida cuando el segundo parámetro de %<va_start%> se declara con almacenamiento %<register%>" | |
30048 | ||
30049 | -#: builtins.c:12360 | |
30050 | +#: builtins.c:12396 | |
30051 | #, gcc-internal-format | |
30052 | msgid "%Kfirst argument of %D must be a pointer, second integer constant" | |
30053 | msgstr "%Kel primer argumento de %D debe ser un puntero, el segundo una constante entera" | |
30054 | ||
30055 | -#: builtins.c:12373 | |
30056 | +#: builtins.c:12409 | |
30057 | #, gcc-internal-format | |
30058 | msgid "%Klast argument of %D is not integer constant between 0 and 3" | |
30059 | msgstr "%Kel último argumento de %D no es una constante entera entre 0 y 3" | |
30060 | ||
30061 | -#: builtins.c:12418 builtins.c:12569 builtins.c:12626 | |
30062 | +#: builtins.c:12454 builtins.c:12605 builtins.c:12662 | |
30063 | #, gcc-internal-format | |
30064 | msgid "%Kcall to %D will always overflow destination buffer" | |
30065 | msgstr "%Kla llamada a %D siempre desbordará el almacenamiento temporal destino" | |
30066 | ||
30067 | -#: builtins.c:12559 | |
30068 | +#: builtins.c:12595 | |
30069 | #, gcc-internal-format | |
30070 | msgid "%Kcall to %D might overflow destination buffer" | |
30071 | msgstr "%Kla llamada a %D puede desbordar el almacenamiento temporal destino" | |
30072 | ||
30073 | -#: builtins.c:12647 | |
30074 | +#: builtins.c:12683 | |
30075 | #, gcc-internal-format | |
30076 | msgid "%Kattempt to free a non-heap object %qD" | |
30077 | msgstr "%Kse intenta liberar un objeto %qD que no es de pila" | |
30078 | ||
30079 | -#: builtins.c:12650 | |
30080 | +#: builtins.c:12686 | |
30081 | #, gcc-internal-format | |
30082 | msgid "%Kattempt to free a non-heap object" | |
30083 | msgstr "%Kse intenta liberar un objeto que no es de pila" | |
30084 | @@ -12324,7 +12469,7 @@ | |
30085 | msgid "type of array %q+D completed incompatibly with implicit initialization" | |
30086 | msgstr "el tipo de la matriz %q+D se completó de forma incompatible con la inicialización implícita" | |
30087 | ||
30088 | -#: c-decl.c:1462 c-decl.c:5851 c-decl.c:6681 c-decl.c:7393 | |
30089 | +#: c-decl.c:1462 c-decl.c:5852 c-decl.c:6682 c-decl.c:7394 | |
30090 | #, gcc-internal-format | |
30091 | msgid "originally defined here" | |
30092 | msgstr "se definió originalmente aquí" | |
30093 | @@ -12386,7 +12531,7 @@ | |
30094 | msgid "built-in function %q+D declared as non-function" | |
30095 | msgstr "la función interna %q+D no se declara como función" | |
30096 | ||
30097 | -#: c-decl.c:1674 c-decl.c:1847 c-decl.c:2558 | |
30098 | +#: c-decl.c:1674 c-decl.c:1847 c-decl.c:2559 | |
30099 | #, gcc-internal-format | |
30100 | msgid "declaration of %q+D shadows a built-in function" | |
30101 | msgstr "la declaración de %q+D oscurece una función interna" | |
30102 | @@ -12519,212 +12664,212 @@ | |
30103 | msgid "redundant redeclaration of %q+D" | |
30104 | msgstr "redeclaración redundante de %q+D" | |
30105 | ||
30106 | -#: c-decl.c:2545 | |
30107 | +#: c-decl.c:2546 | |
30108 | #, gcc-internal-format | |
30109 | msgid "declaration of %q+D shadows previous non-variable" | |
30110 | msgstr "la declaración de %q+D oscurece a una declaración previa que no es variable" | |
30111 | ||
30112 | -#: c-decl.c:2550 | |
30113 | +#: c-decl.c:2551 | |
30114 | #, gcc-internal-format | |
30115 | msgid "declaration of %q+D shadows a parameter" | |
30116 | msgstr "la declaración de %q+D oscurece un parámetro" | |
30117 | ||
30118 | -#: c-decl.c:2553 | |
30119 | +#: c-decl.c:2554 | |
30120 | #, gcc-internal-format | |
30121 | msgid "declaration of %q+D shadows a global declaration" | |
30122 | msgstr "la declaración de %q+D oscurece a una declaración global" | |
30123 | ||
30124 | -#: c-decl.c:2563 | |
30125 | +#: c-decl.c:2564 | |
30126 | #, gcc-internal-format | |
30127 | msgid "declaration of %q+D shadows a previous local" | |
30128 | msgstr "la declaración de %q+D oscurece a una declaración local previa" | |
30129 | ||
30130 | -#: c-decl.c:2567 cp/name-lookup.c:1150 cp/name-lookup.c:1193 | |
30131 | +#: c-decl.c:2568 cp/name-lookup.c:1150 cp/name-lookup.c:1193 | |
30132 | #, gcc-internal-format | |
30133 | msgid "shadowed declaration is here" | |
30134 | msgstr "aquí está la declaración oscurecida" | |
30135 | ||
30136 | -#: c-decl.c:2694 | |
30137 | +#: c-decl.c:2695 | |
30138 | #, gcc-internal-format | |
30139 | msgid "nested extern declaration of %qD" | |
30140 | msgstr "declaración externa anidada de %qD" | |
30141 | ||
30142 | -#: c-decl.c:2870 c-decl.c:2873 | |
30143 | +#: c-decl.c:2871 c-decl.c:2874 | |
30144 | #, gcc-internal-format | |
30145 | msgid "implicit declaration of function %qE" | |
30146 | msgstr "declaración implícita de la función %qE" | |
30147 | ||
30148 | -#: c-decl.c:2936 | |
30149 | +#: c-decl.c:2937 | |
30150 | #, gcc-internal-format | |
30151 | msgid "incompatible implicit declaration of built-in function %qD" | |
30152 | msgstr "declaración implícita incompatible de la función interna %qD" | |
30153 | ||
30154 | -#: c-decl.c:2945 | |
30155 | +#: c-decl.c:2946 | |
30156 | #, gcc-internal-format | |
30157 | msgid "incompatible implicit declaration of function %qD" | |
30158 | msgstr "declaración implícita incompatible de la función %qD" | |
30159 | ||
30160 | -#: c-decl.c:2998 | |
30161 | +#: c-decl.c:2999 | |
30162 | #, gcc-internal-format | |
30163 | msgid "%qE undeclared here (not in a function)" | |
30164 | msgstr "%qE no se declaró aquí (no en una función)" | |
30165 | ||
30166 | -#: c-decl.c:3004 | |
30167 | +#: c-decl.c:3005 | |
30168 | #, gcc-internal-format | |
30169 | msgid "%qE undeclared (first use in this function)" | |
30170 | msgstr "%qE no se declaró aquí (primer uso en esta función)" | |
30171 | ||
30172 | -#: c-decl.c:3007 | |
30173 | +#: c-decl.c:3008 | |
30174 | #, gcc-internal-format | |
30175 | msgid "each undeclared identifier is reported only once for each function it appears in" | |
30176 | msgstr "cada identificador sin declarar se reporta sólo una vez para cada función en el que aparece" | |
30177 | ||
30178 | -#: c-decl.c:3057 cp/decl.c:2593 | |
30179 | +#: c-decl.c:3058 cp/decl.c:2598 | |
30180 | #, gcc-internal-format | |
30181 | msgid "label %qE referenced outside of any function" | |
30182 | msgstr "la etiqueta %qE es referenciada fuera de cualquier función" | |
30183 | ||
30184 | -#: c-decl.c:3093 | |
30185 | +#: c-decl.c:3094 | |
30186 | #, gcc-internal-format | |
30187 | msgid "jump into scope of identifier with variably modified type" | |
30188 | msgstr "salto al ámbito de un identificador con tipo modificado variablemente" | |
30189 | ||
30190 | -#: c-decl.c:3096 | |
30191 | +#: c-decl.c:3097 | |
30192 | #, gcc-internal-format | |
30193 | msgid "jump skips variable initialization" | |
30194 | msgstr "el salto evita la inicialización de la variable" | |
30195 | ||
30196 | -#: c-decl.c:3097 c-decl.c:3153 c-decl.c:3242 | |
30197 | +#: c-decl.c:3098 c-decl.c:3154 c-decl.c:3243 | |
30198 | #, gcc-internal-format | |
30199 | msgid "label %qD defined here" | |
30200 | msgstr "la etiqueta %qD se define aquí" | |
30201 | ||
30202 | -#: c-decl.c:3098 c-decl.c:3370 | |
30203 | +#: c-decl.c:3099 c-decl.c:3371 | |
30204 | #, gcc-internal-format | |
30205 | msgid "%qD declared here" | |
30206 | msgstr "%qD se declara aquí" | |
30207 | ||
30208 | -#: c-decl.c:3152 c-decl.c:3241 | |
30209 | +#: c-decl.c:3153 c-decl.c:3242 | |
30210 | #, gcc-internal-format | |
30211 | msgid "jump into statement expression" | |
30212 | msgstr "salto a una expresión de declaración" | |
30213 | ||
30214 | -#: c-decl.c:3174 | |
30215 | +#: c-decl.c:3175 | |
30216 | #, gcc-internal-format | |
30217 | msgid "duplicate label declaration %qE" | |
30218 | msgstr "declaración duplicada de la etiqueta %qE" | |
30219 | ||
30220 | -#: c-decl.c:3272 cp/decl.c:2916 | |
30221 | +#: c-decl.c:3273 cp/decl.c:2921 | |
30222 | #, gcc-internal-format | |
30223 | msgid "duplicate label %qD" | |
30224 | msgstr "etiqueta %qD duplicada" | |
30225 | ||
30226 | -#: c-decl.c:3303 | |
30227 | +#: c-decl.c:3304 | |
30228 | #, gcc-internal-format | |
30229 | msgid "traditional C lacks a separate namespace for labels, identifier %qE conflicts" | |
30230 | msgstr "C tradicional carece de un espacio de nombres separado para etiquetas, el identificador %qE genera un conflicto con" | |
30231 | ||
30232 | -#: c-decl.c:3368 | |
30233 | +#: c-decl.c:3369 | |
30234 | #, gcc-internal-format | |
30235 | msgid "switch jumps over variable initialization" | |
30236 | msgstr "el switch salta sobre la inicialización de la variable" | |
30237 | ||
30238 | -#: c-decl.c:3369 c-decl.c:3380 | |
30239 | +#: c-decl.c:3370 c-decl.c:3381 | |
30240 | #, gcc-internal-format | |
30241 | msgid "switch starts here" | |
30242 | msgstr "switch inicia aquí" | |
30243 | ||
30244 | -#: c-decl.c:3379 | |
30245 | +#: c-decl.c:3380 | |
30246 | #, gcc-internal-format | |
30247 | msgid "switch jumps into statement expression" | |
30248 | msgstr "switch salta dentro de una expresión de declaración" | |
30249 | ||
30250 | -#: c-decl.c:3450 | |
30251 | +#: c-decl.c:3451 | |
30252 | #, gcc-internal-format | |
30253 | msgid "%qE defined as wrong kind of tag" | |
30254 | msgstr "%qE definido como un tipo erróneo de etiqueta" | |
30255 | ||
30256 | -#: c-decl.c:3673 c-typeck.c:10999 c-family/c-common.c:4164 | |
30257 | +#: c-decl.c:3674 c-typeck.c:10999 c-family/c-common.c:4164 | |
30258 | #, gcc-internal-format | |
30259 | msgid "invalid use of %<restrict%>" | |
30260 | msgstr "uso inválido de %<restrict%>" | |
30261 | ||
30262 | -#: c-decl.c:3683 | |
30263 | +#: c-decl.c:3684 | |
30264 | #, gcc-internal-format | |
30265 | msgid "unnamed struct/union that defines no instances" | |
30266 | msgstr "struct/union sin nombre que no define ninguna instancia" | |
30267 | ||
30268 | -#: c-decl.c:3693 | |
30269 | +#: c-decl.c:3694 | |
30270 | #, gcc-internal-format | |
30271 | msgid "empty declaration with storage class specifier does not redeclare tag" | |
30272 | msgstr "una declaración vacía con especificadores de clase de almacenamiento no redeclara la etiqueta" | |
30273 | ||
30274 | -#: c-decl.c:3707 | |
30275 | +#: c-decl.c:3708 | |
30276 | #, gcc-internal-format | |
30277 | msgid "empty declaration with type qualifier does not redeclare tag" | |
30278 | msgstr "una declaración vacía con calificador de tipo no redeclara la etiqueta" | |
30279 | ||
30280 | -#: c-decl.c:3718 | |
30281 | +#: c-decl.c:3719 | |
30282 | #, gcc-internal-format | |
30283 | msgid "empty declaration with %<_Alignas%> does not redeclare tag" | |
30284 | msgstr "una declaración vacía con %<_Alignas%> no redeclara la etiqueta" | |
30285 | ||
30286 | -#: c-decl.c:3740 c-decl.c:3747 | |
30287 | +#: c-decl.c:3741 c-decl.c:3748 | |
30288 | #, gcc-internal-format | |
30289 | msgid "useless type name in empty declaration" | |
30290 | msgstr "nombre de tipo sin uso en una declaración vacía" | |
30291 | ||
30292 | -#: c-decl.c:3755 | |
30293 | +#: c-decl.c:3756 | |
30294 | #, gcc-internal-format | |
30295 | msgid "%<inline%> in empty declaration" | |
30296 | msgstr "%<inline%> en una declaración vacía" | |
30297 | ||
30298 | -#: c-decl.c:3761 | |
30299 | +#: c-decl.c:3762 | |
30300 | #, gcc-internal-format | |
30301 | msgid "%<_Noreturn%> in empty declaration" | |
30302 | msgstr "%<_Noreturn%> en una declaración vacía" | |
30303 | ||
30304 | -#: c-decl.c:3767 | |
30305 | +#: c-decl.c:3768 | |
30306 | #, gcc-internal-format | |
30307 | msgid "%<auto%> in file-scope empty declaration" | |
30308 | msgstr "%<auto%> en una declaración vacía en ámbito de fichero" | |
30309 | ||
30310 | -#: c-decl.c:3773 | |
30311 | +#: c-decl.c:3774 | |
30312 | #, gcc-internal-format | |
30313 | msgid "%<register%> in file-scope empty declaration" | |
30314 | msgstr "%<register%> en una declaración vacía en ámbito de fichero" | |
30315 | ||
30316 | -#: c-decl.c:3779 | |
30317 | +#: c-decl.c:3780 | |
30318 | #, gcc-internal-format | |
30319 | msgid "useless storage class specifier in empty declaration" | |
30320 | msgstr "especificador de clase de almacenamiento sin uso en una declaración vacía" | |
30321 | ||
30322 | -#: c-decl.c:3785 | |
30323 | +#: c-decl.c:3786 | |
30324 | #, gcc-internal-format | |
30325 | msgid "useless %<__thread%> in empty declaration" | |
30326 | msgstr "%<__thread%> sin uso en la declaración vacía" | |
30327 | ||
30328 | -#: c-decl.c:3794 | |
30329 | +#: c-decl.c:3795 | |
30330 | #, gcc-internal-format | |
30331 | msgid "useless type qualifier in empty declaration" | |
30332 | msgstr "calificador de tipo sin uso en una declaración vacía" | |
30333 | ||
30334 | -#: c-decl.c:3800 | |
30335 | +#: c-decl.c:3801 | |
30336 | #, gcc-internal-format | |
30337 | msgid "useless %<_Alignas%> in empty declaration" | |
30338 | msgstr "%<_Alignas%> sin uso en la declaración vacía" | |
30339 | ||
30340 | -#: c-decl.c:3807 c-parser.c:1498 | |
30341 | +#: c-decl.c:3808 c-parser.c:1498 | |
30342 | #, gcc-internal-format | |
30343 | msgid "empty declaration" | |
30344 | msgstr "declaración vacía" | |
30345 | ||
30346 | -#: c-decl.c:3879 | |
30347 | +#: c-decl.c:3880 | |
30348 | #, gcc-internal-format | |
30349 | msgid "ISO C90 does not support %<static%> or type qualifiers in parameter array declarators" | |
30350 | msgstr "ISO C90 no admite %<static%> o calificadores de tipo en los declaradores de parámetros de matrices" | |
30351 | ||
30352 | -#: c-decl.c:3883 | |
30353 | +#: c-decl.c:3884 | |
30354 | #, gcc-internal-format | |
30355 | msgid "ISO C90 does not support %<[*]%> array declarators" | |
30356 | msgstr "ISO C90 no admite declaradores de matriz %<[*]%>" | |
30357 | @@ -12732,28 +12877,28 @@ | |
30358 | #. C99 6.7.5.2p4 | |
30359 | #. A function definition isn't function prototype scope C99 6.2.1p4. | |
30360 | #. C99 6.7.5.2p4 | |
30361 | -#: c-decl.c:3890 c-decl.c:6249 | |
30362 | +#: c-decl.c:3891 c-decl.c:6250 | |
30363 | #, gcc-internal-format | |
30364 | msgid "%<[*]%> not allowed in other than function prototype scope" | |
30365 | msgstr "no se permite %<[*]%> en otro lugar que no sea el ámbido de prototipo de función" | |
30366 | ||
30367 | -#: c-decl.c:4003 | |
30368 | +#: c-decl.c:4004 | |
30369 | #, gcc-internal-format | |
30370 | msgid "%q+D is usually a function" | |
30371 | msgstr "%q+D generalmente es una función" | |
30372 | ||
30373 | -#: c-decl.c:4012 | |
30374 | +#: c-decl.c:4013 | |
30375 | #, gcc-internal-format | |
30376 | msgid "typedef %qD is initialized (use __typeof__ instead)" | |
30377 | msgstr "typedef %qD está inicializado (utilice __typeof__ en su lugar)" | |
30378 | ||
30379 | -#: c-decl.c:4017 | |
30380 | +#: c-decl.c:4018 | |
30381 | #, gcc-internal-format | |
30382 | msgid "function %qD is initialized like a variable" | |
30383 | msgstr "la función %qD está inicializada como una variable" | |
30384 | ||
30385 | #. DECL_INITIAL in a PARM_DECL is really DECL_ARG_TYPE. | |
30386 | -#: c-decl.c:4023 | |
30387 | +#: c-decl.c:4024 | |
30388 | #, gcc-internal-format | |
30389 | msgid "parameter %qD is initialized" | |
30390 | msgstr "el parámetro %qD está inicializado" | |
30391 | @@ -12762,272 +12907,272 @@ | |
30392 | #. of VLAs themselves count as VLAs, it does not make | |
30393 | #. sense to permit them to be initialized given that | |
30394 | #. ordinary VLAs may not be initialized. | |
30395 | -#: c-decl.c:4042 c-decl.c:4057 c-typeck.c:6374 | |
30396 | +#: c-decl.c:4043 c-decl.c:4058 c-typeck.c:6374 | |
30397 | #, gcc-internal-format | |
30398 | msgid "variable-sized object may not be initialized" | |
30399 | msgstr "un objeto de tamaño variable puede no ser inicializado" | |
30400 | ||
30401 | -#: c-decl.c:4048 | |
30402 | +#: c-decl.c:4049 | |
30403 | #, gcc-internal-format | |
30404 | msgid "variable %qD has initializer but incomplete type" | |
30405 | msgstr "la variable %qD tiene inicializador pero de tipo de dato incompleto" | |
30406 | ||
30407 | -#: c-decl.c:4137 cp/decl.c:4418 cp/decl.c:12643 | |
30408 | +#: c-decl.c:4138 cp/decl.c:4428 cp/decl.c:12657 | |
30409 | #, gcc-internal-format | |
30410 | msgid "inline function %q+D given attribute noinline" | |
30411 | msgstr "se le dió a la función incluída en línea %q+D un atributo noinline" | |
30412 | ||
30413 | -#: c-decl.c:4188 | |
30414 | +#: c-decl.c:4189 | |
30415 | #, gcc-internal-format | |
30416 | msgid "uninitialized const member in %qT is invalid in C++" | |
30417 | msgstr "el miembro const sin inicializar en %qT es inválido en C++" | |
30418 | ||
30419 | -#: c-decl.c:4190 cp/init.c:2115 cp/init.c:2130 | |
30420 | +#: c-decl.c:4191 cp/init.c:2115 cp/init.c:2130 | |
30421 | #, gcc-internal-format | |
30422 | msgid "%qD should be initialized" | |
30423 | msgstr "%qD se debe inicializar" | |
30424 | ||
30425 | -#: c-decl.c:4268 | |
30426 | +#: c-decl.c:4269 | |
30427 | #, gcc-internal-format | |
30428 | msgid "initializer fails to determine size of %q+D" | |
30429 | msgstr "el inicializador no puede determinar el tamaño de %q+D" | |
30430 | ||
30431 | -#: c-decl.c:4273 | |
30432 | +#: c-decl.c:4274 | |
30433 | #, gcc-internal-format | |
30434 | msgid "array size missing in %q+D" | |
30435 | msgstr "falta el tamaño de la matriz en %q+D" | |
30436 | ||
30437 | -#: c-decl.c:4285 | |
30438 | +#: c-decl.c:4286 | |
30439 | #, gcc-internal-format | |
30440 | msgid "zero or negative size array %q+D" | |
30441 | msgstr "matriz %q+D de tamaño cero o negativo" | |
30442 | ||
30443 | -#: c-decl.c:4340 varasm.c:1966 | |
30444 | +#: c-decl.c:4341 varasm.c:1966 | |
30445 | #, gcc-internal-format | |
30446 | msgid "storage size of %q+D isn%'t known" | |
30447 | msgstr "no se conoce el tamaño de almacenamiento de %q+D" | |
30448 | ||
30449 | -#: c-decl.c:4351 | |
30450 | +#: c-decl.c:4352 | |
30451 | #, gcc-internal-format | |
30452 | msgid "storage size of %q+D isn%'t constant" | |
30453 | msgstr "el tamaño de almacenamiento de %q+D no es constante" | |
30454 | ||
30455 | -#: c-decl.c:4401 | |
30456 | +#: c-decl.c:4402 | |
30457 | #, gcc-internal-format | |
30458 | msgid "ignoring asm-specifier for non-static local variable %q+D" | |
30459 | msgstr "se descarta el especificador asm para la variable local que no es estática %q+D" | |
30460 | ||
30461 | -#: c-decl.c:4431 | |
30462 | +#: c-decl.c:4432 | |
30463 | #, gcc-internal-format | |
30464 | msgid "cannot put object with volatile field into register" | |
30465 | msgstr "no se puede poner un objeto con un campo volatile en register" | |
30466 | ||
30467 | -#: c-decl.c:4518 | |
30468 | +#: c-decl.c:4519 | |
30469 | #, gcc-internal-format | |
30470 | msgid "uninitialized const %qD is invalid in C++" | |
30471 | msgstr "const %qD sin inicializar es inválida en C++" | |
30472 | ||
30473 | -#: c-decl.c:4576 | |
30474 | +#: c-decl.c:4577 | |
30475 | #, gcc-internal-format | |
30476 | msgid "ISO C forbids forward parameter declarations" | |
30477 | msgstr "ISO C prohíbe declaraciones adelantadas de parámetros" | |
30478 | ||
30479 | -#: c-decl.c:4666 | |
30480 | +#: c-decl.c:4667 | |
30481 | #, gcc-internal-format | |
30482 | msgid "defining a type in a compound literal is invalid in C++" | |
30483 | msgstr "definir un tipo en una literal compuesta es inválido en C++" | |
30484 | ||
30485 | -#: c-decl.c:4718 c-decl.c:4733 | |
30486 | +#: c-decl.c:4719 c-decl.c:4734 | |
30487 | #, gcc-internal-format | |
30488 | msgid "bit-field %qs width not an integer constant" | |
30489 | msgstr "la anchura del campo de bits %qs no es una constante entera" | |
30490 | ||
30491 | -#: c-decl.c:4728 | |
30492 | +#: c-decl.c:4729 | |
30493 | #, gcc-internal-format | |
30494 | msgid "bit-field %qs width not an integer constant expression" | |
30495 | msgstr "la anchura del campo de bits %qs no es una expresión constante entera" | |
30496 | ||
30497 | -#: c-decl.c:4739 | |
30498 | +#: c-decl.c:4740 | |
30499 | #, gcc-internal-format | |
30500 | msgid "negative width in bit-field %qs" | |
30501 | msgstr "anchura negativa en el campo de bit %qs" | |
30502 | ||
30503 | -#: c-decl.c:4744 | |
30504 | +#: c-decl.c:4745 | |
30505 | #, gcc-internal-format | |
30506 | msgid "zero width for bit-field %qs" | |
30507 | msgstr "anchura cero para el campo de bits %qs" | |
30508 | ||
30509 | -#: c-decl.c:4754 | |
30510 | +#: c-decl.c:4755 | |
30511 | #, gcc-internal-format | |
30512 | msgid "bit-field %qs has invalid type" | |
30513 | msgstr "el campo de bits %qs tiene un tipo inválido" | |
30514 | ||
30515 | -#: c-decl.c:4764 | |
30516 | +#: c-decl.c:4765 | |
30517 | #, gcc-internal-format | |
30518 | msgid "type of bit-field %qs is a GCC extension" | |
30519 | msgstr "el tipo de campo de bits %qs es una extensión de GCC" | |
30520 | ||
30521 | -#: c-decl.c:4770 | |
30522 | +#: c-decl.c:4771 | |
30523 | #, gcc-internal-format | |
30524 | msgid "width of %qs exceeds its type" | |
30525 | msgstr "la anchura de %qs excede su tipo" | |
30526 | ||
30527 | -#: c-decl.c:4783 | |
30528 | +#: c-decl.c:4784 | |
30529 | #, gcc-internal-format | |
30530 | msgid "%qs is narrower than values of its type" | |
30531 | msgstr "%qs es más estrecho que los valores de su tipo" | |
30532 | ||
30533 | -#: c-decl.c:4802 | |
30534 | +#: c-decl.c:4803 | |
30535 | #, gcc-internal-format | |
30536 | msgid "ISO C90 forbids array %qE whose size can%'t be evaluated" | |
30537 | msgstr "ISO C90 prohíbe la matriz %qE cuyo tamaño no se puede evaluar" | |
30538 | ||
30539 | -#: c-decl.c:4806 | |
30540 | +#: c-decl.c:4807 | |
30541 | #, gcc-internal-format | |
30542 | msgid "ISO C90 forbids array whose size can%'t be evaluated" | |
30543 | msgstr "ISO C90 prohíbe la matriz cuyo tamaño no se puede evaluar" | |
30544 | ||
30545 | -#: c-decl.c:4813 | |
30546 | +#: c-decl.c:4814 | |
30547 | #, gcc-internal-format | |
30548 | msgid "ISO C90 forbids variable length array %qE" | |
30549 | msgstr "ISO C90 prohíbe la matriz de longitud variable %qE" | |
30550 | ||
30551 | -#: c-decl.c:4816 | |
30552 | +#: c-decl.c:4817 | |
30553 | #, gcc-internal-format | |
30554 | msgid "ISO C90 forbids variable length array" | |
30555 | msgstr "ISO C90 prohíbe la matriz de longitud variable" | |
30556 | ||
30557 | -#: c-decl.c:4825 | |
30558 | +#: c-decl.c:4826 | |
30559 | #, gcc-internal-format | |
30560 | msgid "the size of array %qE can%'t be evaluated" | |
30561 | msgstr "el tamaño de la matriz %qE no se puede evaluar" | |
30562 | ||
30563 | -#: c-decl.c:4829 | |
30564 | +#: c-decl.c:4830 | |
30565 | #, gcc-internal-format | |
30566 | msgid "the size of array can %'t be evaluated" | |
30567 | msgstr "el tamaño de la matriz no se puede evaluar" | |
30568 | ||
30569 | -#: c-decl.c:4835 | |
30570 | +#: c-decl.c:4836 | |
30571 | #, gcc-internal-format | |
30572 | msgid "variable length array %qE is used" | |
30573 | msgstr "se usó la matriz de longitud variable %qE" | |
30574 | ||
30575 | -#: c-decl.c:4839 cp/decl.c:8053 | |
30576 | +#: c-decl.c:4840 cp/decl.c:8063 | |
30577 | #, gcc-internal-format | |
30578 | msgid "variable length array is used" | |
30579 | msgstr "se usó la matriz de longitud variable" | |
30580 | ||
30581 | -#: c-decl.c:4998 c-decl.c:5346 c-decl.c:5356 | |
30582 | +#: c-decl.c:4999 c-decl.c:5347 c-decl.c:5357 | |
30583 | #, gcc-internal-format | |
30584 | msgid "variably modified %qE at file scope" | |
30585 | msgstr "%qE variablemente modificado en el ámbito del fichero" | |
30586 | ||
30587 | -#: c-decl.c:5000 | |
30588 | +#: c-decl.c:5001 | |
30589 | #, gcc-internal-format | |
30590 | msgid "variably modified field at file scope" | |
30591 | msgstr "campo variablemente modificado en el ámbito del fichero" | |
30592 | ||
30593 | -#: c-decl.c:5020 | |
30594 | +#: c-decl.c:5021 | |
30595 | #, gcc-internal-format | |
30596 | msgid "type defaults to %<int%> in declaration of %qE" | |
30597 | msgstr "el tipo de dato por defecto es %<int%> en la declaración de %qE" | |
30598 | ||
30599 | -#: c-decl.c:5024 | |
30600 | +#: c-decl.c:5025 | |
30601 | #, gcc-internal-format | |
30602 | msgid "type defaults to %<int%> in type name" | |
30603 | msgstr "el tipo de dato por defecto es %<int%> en el nombre de tipo" | |
30604 | ||
30605 | -#: c-decl.c:5057 | |
30606 | +#: c-decl.c:5058 | |
30607 | #, gcc-internal-format | |
30608 | msgid "duplicate %<const%>" | |
30609 | msgstr "%<const%> duplicado" | |
30610 | ||
30611 | -#: c-decl.c:5059 | |
30612 | +#: c-decl.c:5060 | |
30613 | #, gcc-internal-format | |
30614 | msgid "duplicate %<restrict%>" | |
30615 | msgstr "%<restrict%> duplicado" | |
30616 | ||
30617 | -#: c-decl.c:5061 | |
30618 | +#: c-decl.c:5062 | |
30619 | #, gcc-internal-format | |
30620 | msgid "duplicate %<volatile%>" | |
30621 | msgstr "%<volatile%> duplicado" | |
30622 | ||
30623 | -#: c-decl.c:5065 | |
30624 | +#: c-decl.c:5066 | |
30625 | #, gcc-internal-format, gfc-internal-format | |
30626 | msgid "conflicting named address spaces (%s vs %s)" | |
30627 | msgstr "espacios de direcciones nombrados generan un conflicto (%s vs %s)" | |
30628 | ||
30629 | -#: c-decl.c:5089 | |
30630 | +#: c-decl.c:5090 | |
30631 | #, gcc-internal-format | |
30632 | msgid "function definition declared %<auto%>" | |
30633 | msgstr "la definición de la función se declaró como %<auto%>" | |
30634 | ||
30635 | -#: c-decl.c:5091 | |
30636 | +#: c-decl.c:5092 | |
30637 | #, gcc-internal-format | |
30638 | msgid "function definition declared %<register%>" | |
30639 | msgstr "la definición de la función se declaró como %<register%>" | |
30640 | ||
30641 | -#: c-decl.c:5093 | |
30642 | +#: c-decl.c:5094 | |
30643 | #, gcc-internal-format | |
30644 | msgid "function definition declared %<typedef%>" | |
30645 | msgstr "la definición de la función se declaró como %<typedef%>" | |
30646 | ||
30647 | -#: c-decl.c:5095 | |
30648 | +#: c-decl.c:5096 | |
30649 | #, gcc-internal-format | |
30650 | msgid "function definition declared %<__thread%>" | |
30651 | msgstr "la definición de la función se declaró como %<__thread%>" | |
30652 | ||
30653 | -#: c-decl.c:5112 | |
30654 | +#: c-decl.c:5113 | |
30655 | #, gcc-internal-format | |
30656 | msgid "storage class specified for structure field %qE" | |
30657 | msgstr "se especificó una clase de almacenamiento para el campo de la estructura %qE" | |
30658 | ||
30659 | -#: c-decl.c:5115 | |
30660 | +#: c-decl.c:5116 | |
30661 | #, gcc-internal-format | |
30662 | msgid "storage class specified for structure field" | |
30663 | msgstr "se especificó una clase de almacenamiento para el campo de la estructura" | |
30664 | ||
30665 | -#: c-decl.c:5119 | |
30666 | +#: c-decl.c:5120 | |
30667 | #, gcc-internal-format | |
30668 | msgid "storage class specified for parameter %qE" | |
30669 | msgstr "se especificó una clase de almacenamiento para el parámetro %qE" | |
30670 | ||
30671 | -#: c-decl.c:5122 | |
30672 | +#: c-decl.c:5123 | |
30673 | #, gcc-internal-format | |
30674 | msgid "storage class specified for unnamed parameter" | |
30675 | msgstr "se especificó una clase de almacenamiento para un parámetro sin nombre" | |
30676 | ||
30677 | -#: c-decl.c:5125 cp/decl.c:9020 | |
30678 | +#: c-decl.c:5126 cp/decl.c:9030 | |
30679 | #, gcc-internal-format | |
30680 | msgid "storage class specified for typename" | |
30681 | msgstr "se especificó una clase de almacenamiento para el nombre de tipo" | |
30682 | ||
30683 | -#: c-decl.c:5142 | |
30684 | +#: c-decl.c:5143 | |
30685 | #, gcc-internal-format | |
30686 | msgid "%qE initialized and declared %<extern%>" | |
30687 | msgstr "%qE se inicializó y declaró como %<extern%>" | |
30688 | ||
30689 | -#: c-decl.c:5146 | |
30690 | +#: c-decl.c:5147 | |
30691 | #, gcc-internal-format | |
30692 | msgid "%qE has both %<extern%> and initializer" | |
30693 | msgstr "%qE tiene %<extern%> e inicializador al mismo tiempo" | |
30694 | ||
30695 | -#: c-decl.c:5151 | |
30696 | +#: c-decl.c:5152 | |
30697 | #, gcc-internal-format | |
30698 | msgid "file-scope declaration of %qE specifies %<auto%>" | |
30699 | msgstr "la declaración del ámbito de fichero de %qE especifica %<auto%>" | |
30700 | ||
30701 | -#: c-decl.c:5155 | |
30702 | +#: c-decl.c:5156 | |
30703 | #, gcc-internal-format | |
30704 | msgid "file-scope declaration of %qE specifies %<register%>" | |
30705 | msgstr "la declaración del ámbito de fichero de %qE especifica %<register%>" | |
30706 | ||
30707 | -#: c-decl.c:5160 | |
30708 | +#: c-decl.c:5161 | |
30709 | #, gcc-internal-format | |
30710 | msgid "nested function %qE declared %<extern%>" | |
30711 | msgstr "la función anidada %qE se declaró %<extern%>" | |
30712 | ||
30713 | -#: c-decl.c:5163 | |
30714 | +#: c-decl.c:5164 | |
30715 | #, gcc-internal-format | |
30716 | msgid "function-scope %qE implicitly auto and declared %<__thread%>" | |
30717 | msgstr "el ámbito de la función %qE es implícitamente auto y declarado %<__thread%>" | |
30718 | @@ -13035,657 +13180,657 @@ | |
30719 | #. Only the innermost declarator (making a parameter be of | |
30720 | #. array type which is converted to pointer type) | |
30721 | #. may have static or type qualifiers. | |
30722 | -#: c-decl.c:5210 c-decl.c:5540 | |
30723 | +#: c-decl.c:5211 c-decl.c:5541 | |
30724 | #, gcc-internal-format | |
30725 | msgid "static or type qualifiers in non-parameter array declarator" | |
30726 | msgstr "static o calificadores de tipo en un declarador de matriz que no es parámetro" | |
30727 | ||
30728 | -#: c-decl.c:5258 | |
30729 | +#: c-decl.c:5259 | |
30730 | #, gcc-internal-format | |
30731 | msgid "declaration of %qE as array of voids" | |
30732 | msgstr "la declaración de %qE como una matriz de voids" | |
30733 | ||
30734 | -#: c-decl.c:5260 | |
30735 | +#: c-decl.c:5261 | |
30736 | #, gcc-internal-format | |
30737 | msgid "declaration of type name as array of voids" | |
30738 | msgstr "declaración de nombre de tipo como una matriz de voids" | |
30739 | ||
30740 | -#: c-decl.c:5267 | |
30741 | +#: c-decl.c:5268 | |
30742 | #, gcc-internal-format | |
30743 | msgid "declaration of %qE as array of functions" | |
30744 | msgstr "declaración de %qE como una matriz de funciones" | |
30745 | ||
30746 | -#: c-decl.c:5270 | |
30747 | +#: c-decl.c:5271 | |
30748 | #, gcc-internal-format | |
30749 | msgid "declaration of type name as array of functions" | |
30750 | msgstr "declaración de nombre de tipo como una matriz de funciones" | |
30751 | ||
30752 | -#: c-decl.c:5277 c-decl.c:7177 | |
30753 | +#: c-decl.c:5278 c-decl.c:7178 | |
30754 | #, gcc-internal-format | |
30755 | msgid "invalid use of structure with flexible array member" | |
30756 | msgstr "uso inválido de una estructura con un miembro de matriz flexible" | |
30757 | ||
30758 | -#: c-decl.c:5303 | |
30759 | +#: c-decl.c:5304 | |
30760 | #, gcc-internal-format | |
30761 | msgid "size of array %qE has non-integer type" | |
30762 | msgstr "el tamaño de la matriz %qE es de un tipo no entero" | |
30763 | ||
30764 | -#: c-decl.c:5307 | |
30765 | +#: c-decl.c:5308 | |
30766 | #, gcc-internal-format | |
30767 | msgid "size of unnamed array has non-integer type" | |
30768 | msgstr "el tamaño de la matriz sin nombre es de un tipo no entero" | |
30769 | ||
30770 | -#: c-decl.c:5317 | |
30771 | +#: c-decl.c:5318 | |
30772 | #, gcc-internal-format | |
30773 | msgid "ISO C forbids zero-size array %qE" | |
30774 | msgstr "ISO C prohíbe la matriz %qE de tamaño cero" | |
30775 | ||
30776 | -#: c-decl.c:5320 | |
30777 | +#: c-decl.c:5321 | |
30778 | #, gcc-internal-format | |
30779 | msgid "ISO C forbids zero-size array" | |
30780 | msgstr "ISO C prohíbe matrices de tamaño cero" | |
30781 | ||
30782 | -#: c-decl.c:5329 | |
30783 | +#: c-decl.c:5330 | |
30784 | #, gcc-internal-format | |
30785 | msgid "size of array %qE is negative" | |
30786 | msgstr "el tamaño de la matriz %qE es negativo" | |
30787 | ||
30788 | -#: c-decl.c:5331 | |
30789 | +#: c-decl.c:5332 | |
30790 | #, gcc-internal-format | |
30791 | msgid "size of unnamed array is negative" | |
30792 | msgstr "el tamaño de la matriz sin nombre es negativo" | |
30793 | ||
30794 | -#: c-decl.c:5405 c-decl.c:5808 | |
30795 | +#: c-decl.c:5406 c-decl.c:5809 | |
30796 | #, gcc-internal-format | |
30797 | msgid "size of array %qE is too large" | |
30798 | msgstr "el tamaño de la matriz %qE es demasiado grande" | |
30799 | ||
30800 | -#: c-decl.c:5408 c-decl.c:5810 | |
30801 | +#: c-decl.c:5409 c-decl.c:5811 | |
30802 | #, gcc-internal-format | |
30803 | msgid "size of unnamed array is too large" | |
30804 | msgstr "el tamaño de la matriz sin nombre es demasiado grande" | |
30805 | ||
30806 | -#: c-decl.c:5445 | |
30807 | +#: c-decl.c:5446 | |
30808 | #, gcc-internal-format | |
30809 | msgid "ISO C90 does not support flexible array members" | |
30810 | msgstr "ISO C90 no admite miembros de matriz flexibles" | |
30811 | ||
30812 | #. C99 6.7.5.2p4 | |
30813 | -#: c-decl.c:5466 | |
30814 | +#: c-decl.c:5467 | |
30815 | #, gcc-internal-format | |
30816 | msgid "%<[*]%> not in a declaration" | |
30817 | msgstr "%<[*]%> fuera de una declaración" | |
30818 | ||
30819 | -#: c-decl.c:5479 | |
30820 | +#: c-decl.c:5480 | |
30821 | #, gcc-internal-format | |
30822 | msgid "array type has incomplete element type" | |
30823 | msgstr "el tipo matriz tiene tipo de elemento incompleto" | |
30824 | ||
30825 | -#: c-decl.c:5573 | |
30826 | +#: c-decl.c:5574 | |
30827 | #, gcc-internal-format | |
30828 | msgid "%qE declared as function returning a function" | |
30829 | msgstr "%qE que se declaró como función devuelve una función" | |
30830 | ||
30831 | -#: c-decl.c:5576 | |
30832 | +#: c-decl.c:5577 | |
30833 | #, gcc-internal-format | |
30834 | msgid "type name declared as function returning a function" | |
30835 | msgstr "el nombre de tipo que se declaró como función devuelve una función" | |
30836 | ||
30837 | -#: c-decl.c:5583 | |
30838 | +#: c-decl.c:5584 | |
30839 | #, gcc-internal-format | |
30840 | msgid "%qE declared as function returning an array" | |
30841 | msgstr "%qE que se declaró como función devuelve una matriz" | |
30842 | ||
30843 | -#: c-decl.c:5586 | |
30844 | +#: c-decl.c:5587 | |
30845 | #, gcc-internal-format | |
30846 | msgid "type name declared as function returning an array" | |
30847 | msgstr "el nombre de tipo que se declaró como función devuelve una matriz" | |
30848 | ||
30849 | -#: c-decl.c:5614 | |
30850 | +#: c-decl.c:5615 | |
30851 | #, gcc-internal-format | |
30852 | msgid "function definition has qualified void return type" | |
30853 | msgstr "la definición de la función tiene un tipo de devolución void calificado" | |
30854 | ||
30855 | -#: c-decl.c:5617 cp/decl.c:9126 | |
30856 | +#: c-decl.c:5618 cp/decl.c:9136 | |
30857 | #, gcc-internal-format | |
30858 | msgid "type qualifiers ignored on function return type" | |
30859 | msgstr "se descartan los calificadores de tipo en el tipo de devolución de la función" | |
30860 | ||
30861 | -#: c-decl.c:5646 c-decl.c:5824 c-decl.c:5936 c-decl.c:6031 | |
30862 | +#: c-decl.c:5647 c-decl.c:5825 c-decl.c:5937 c-decl.c:6032 | |
30863 | #, gcc-internal-format | |
30864 | msgid "ISO C forbids qualified function types" | |
30865 | msgstr "ISO C prohíbe los tipos de función calificados" | |
30866 | ||
30867 | -#: c-decl.c:5713 | |
30868 | +#: c-decl.c:5714 | |
30869 | #, gcc-internal-format | |
30870 | msgid "%qs combined with %<auto%> qualifier for %qE" | |
30871 | msgstr "%qs combinado con el calificador %<auto%> para %qE" | |
30872 | ||
30873 | -#: c-decl.c:5717 | |
30874 | +#: c-decl.c:5718 | |
30875 | #, gcc-internal-format | |
30876 | msgid "%qs combined with %<register%> qualifier for %qE" | |
30877 | msgstr "%qs combinado con el calificador %<register%> para %qE" | |
30878 | ||
30879 | -#: c-decl.c:5723 | |
30880 | +#: c-decl.c:5724 | |
30881 | #, gcc-internal-format | |
30882 | msgid "%qs specified for auto variable %qE" | |
30883 | msgstr "se especificó %qs para la variable auto %qE" | |
30884 | ||
30885 | -#: c-decl.c:5739 | |
30886 | +#: c-decl.c:5740 | |
30887 | #, gcc-internal-format | |
30888 | msgid "%qs specified for parameter %qE" | |
30889 | msgstr "se especificó %qs para el parámetro %qE" | |
30890 | ||
30891 | -#: c-decl.c:5742 | |
30892 | +#: c-decl.c:5743 | |
30893 | #, gcc-internal-format | |
30894 | msgid "%qs specified for unnamed parameter" | |
30895 | msgstr "se especificó %qs para el parámetro sin nombre" | |
30896 | ||
30897 | -#: c-decl.c:5748 | |
30898 | +#: c-decl.c:5749 | |
30899 | #, gcc-internal-format | |
30900 | msgid "%qs specified for structure field %qE" | |
30901 | msgstr "se especificó %qs para el campo de estructura %qE" | |
30902 | ||
30903 | -#: c-decl.c:5751 | |
30904 | +#: c-decl.c:5752 | |
30905 | #, gcc-internal-format | |
30906 | msgid "%qs specified for structure field" | |
30907 | msgstr "se especificó %qs para el campo de estructura" | |
30908 | ||
30909 | -#: c-decl.c:5764 | |
30910 | +#: c-decl.c:5765 | |
30911 | #, gcc-internal-format | |
30912 | msgid "alignment specified for typedef %qE" | |
30913 | msgstr "se especificó la alineación para la definición de tipo %qE" | |
30914 | ||
30915 | -#: c-decl.c:5766 | |
30916 | +#: c-decl.c:5767 | |
30917 | #, gcc-internal-format | |
30918 | msgid "alignment specified for %<register%> object %qE" | |
30919 | msgstr "se especificó la alineación para el objeto %<register%> %qE" | |
30920 | ||
30921 | -#: c-decl.c:5771 | |
30922 | +#: c-decl.c:5772 | |
30923 | #, gcc-internal-format | |
30924 | msgid "alignment specified for parameter %qE" | |
30925 | msgstr "se especificó la alineación para el parámetro %qE" | |
30926 | ||
30927 | -#: c-decl.c:5773 | |
30928 | +#: c-decl.c:5774 | |
30929 | #, gcc-internal-format | |
30930 | msgid "alignment specified for unnamed parameter" | |
30931 | msgstr "se especificó la alineación para el parámetro sin nombre" | |
30932 | ||
30933 | -#: c-decl.c:5778 | |
30934 | +#: c-decl.c:5779 | |
30935 | #, gcc-internal-format | |
30936 | msgid "alignment specified for bit-field %qE" | |
30937 | msgstr "se especificó la alineación para el campo de bits %qE" | |
30938 | ||
30939 | -#: c-decl.c:5780 | |
30940 | +#: c-decl.c:5781 | |
30941 | #, gcc-internal-format | |
30942 | msgid "alignment specified for unnamed bit-field" | |
30943 | msgstr "se especificó la alineación para el campo de bits sin nombre" | |
30944 | ||
30945 | -#: c-decl.c:5783 | |
30946 | +#: c-decl.c:5784 | |
30947 | #, gcc-internal-format | |
30948 | msgid "alignment specified for function %qE" | |
30949 | msgstr "se especificó la alineación para la función %qE" | |
30950 | ||
30951 | -#: c-decl.c:5790 | |
30952 | +#: c-decl.c:5791 | |
30953 | #, gcc-internal-format | |
30954 | msgid "%<_Alignas%> specifiers cannot reduce alignment of %qE" | |
30955 | msgstr "los especificadores %<_Alignas%> no pueden reducir la alineación de %qE" | |
30956 | ||
30957 | -#: c-decl.c:5793 | |
30958 | +#: c-decl.c:5794 | |
30959 | #, gcc-internal-format | |
30960 | msgid "%<_Alignas%> specifiers cannot reduce alignment of unnamed field" | |
30961 | msgstr "los especificadores %<_Alignas%> no pueden reducir la alineación del campo sin nombre" | |
30962 | ||
30963 | -#: c-decl.c:5832 | |
30964 | +#: c-decl.c:5833 | |
30965 | #, gcc-internal-format | |
30966 | msgid "typedef %q+D declared %<inline%>" | |
30967 | msgstr "la definición de tipo %q+D se declaró como %<inline%>" | |
30968 | ||
30969 | -#: c-decl.c:5834 | |
30970 | +#: c-decl.c:5835 | |
30971 | #, gcc-internal-format | |
30972 | msgid "typedef %q+D declared %<_Noreturn%>" | |
30973 | msgstr "la definición de tipo %q+D se declaró como %<_Noreturn%>" | |
30974 | ||
30975 | -#: c-decl.c:5870 | |
30976 | +#: c-decl.c:5871 | |
30977 | #, gcc-internal-format | |
30978 | msgid "ISO C forbids const or volatile function types" | |
30979 | msgstr "ISO C prohíbe los tipos de función const o volatile" | |
30980 | ||
30981 | #. C99 6.7.2.1p8 | |
30982 | -#: c-decl.c:5880 | |
30983 | +#: c-decl.c:5881 | |
30984 | #, gcc-internal-format | |
30985 | msgid "a member of a structure or union cannot have a variably modified type" | |
30986 | msgstr "un miembro de una estructura o union no puede tener un tipo modificado variablemente" | |
30987 | ||
30988 | -#: c-decl.c:5897 cp/decl.c:8281 | |
30989 | +#: c-decl.c:5898 cp/decl.c:8291 | |
30990 | #, gcc-internal-format | |
30991 | msgid "variable or field %qE declared void" | |
30992 | msgstr "se declaró la variable o campo %qE como void" | |
30993 | ||
30994 | -#: c-decl.c:5928 | |
30995 | +#: c-decl.c:5929 | |
30996 | #, gcc-internal-format | |
30997 | msgid "attributes in parameter array declarator ignored" | |
30998 | msgstr "se descartan los atributos en los declaradores de parámetros de matriz" | |
30999 | ||
31000 | -#: c-decl.c:5962 | |
31001 | +#: c-decl.c:5963 | |
31002 | #, gcc-internal-format | |
31003 | msgid "parameter %q+D declared %<inline%>" | |
31004 | msgstr "el parámetro %q+D se declaró %<inline%>" | |
31005 | ||
31006 | -#: c-decl.c:5964 | |
31007 | +#: c-decl.c:5965 | |
31008 | #, gcc-internal-format | |
31009 | msgid "parameter %q+D declared %<_Noreturn%>" | |
31010 | msgstr "el parámetro %q+D se declaró %<_Noreturn%>" | |
31011 | ||
31012 | -#: c-decl.c:5977 | |
31013 | +#: c-decl.c:5978 | |
31014 | #, gcc-internal-format | |
31015 | msgid "field %qE declared as a function" | |
31016 | msgstr "el campo %qE se declaró como una función" | |
31017 | ||
31018 | -#: c-decl.c:5984 | |
31019 | +#: c-decl.c:5985 | |
31020 | #, gcc-internal-format | |
31021 | msgid "field %qE has incomplete type" | |
31022 | msgstr "el campo %qE tiene tipo de dato incompleto" | |
31023 | ||
31024 | -#: c-decl.c:5986 | |
31025 | +#: c-decl.c:5987 | |
31026 | #, gcc-internal-format | |
31027 | msgid "unnamed field has incomplete type" | |
31028 | msgstr "el campo sin nombre tiene tipo de dato incompleto" | |
31029 | ||
31030 | -#: c-decl.c:6003 c-decl.c:6014 c-decl.c:6017 | |
31031 | +#: c-decl.c:6004 c-decl.c:6015 c-decl.c:6018 | |
31032 | #, gcc-internal-format | |
31033 | msgid "invalid storage class for function %qE" | |
31034 | msgstr "clase de almacenamiento inválida para la función %qE" | |
31035 | ||
31036 | -#: c-decl.c:6068 | |
31037 | +#: c-decl.c:6069 | |
31038 | #, gcc-internal-format | |
31039 | msgid "cannot inline function %<main%>" | |
31040 | msgstr "no se puede incluir en línea la función %<main%>" | |
31041 | ||
31042 | -#: c-decl.c:6070 | |
31043 | +#: c-decl.c:6071 | |
31044 | #, gcc-internal-format | |
31045 | msgid "%<main%> declared %<_Noreturn%>" | |
31046 | msgstr "%<main%> se declaró como %<_Noreturn%>" | |
31047 | ||
31048 | -#: c-decl.c:6083 | |
31049 | +#: c-decl.c:6084 | |
31050 | #, gcc-internal-format | |
31051 | msgid "ISO C99 does not support %<_Noreturn%>" | |
31052 | msgstr "ISO C99 no admite %<_Noreturn%>" | |
31053 | ||
31054 | -#: c-decl.c:6086 | |
31055 | +#: c-decl.c:6087 | |
31056 | #, gcc-internal-format | |
31057 | msgid "ISO C90 does not support %<_Noreturn%>" | |
31058 | msgstr "ISO C90 no admite %<_Noreturn%>" | |
31059 | ||
31060 | -#: c-decl.c:6115 | |
31061 | +#: c-decl.c:6116 | |
31062 | #, gcc-internal-format | |
31063 | msgid "variable previously declared %<static%> redeclared %<extern%>" | |
31064 | msgstr "una variable previamente declarada como %<static%> se redeclara como %<extern%>" | |
31065 | ||
31066 | -#: c-decl.c:6125 | |
31067 | +#: c-decl.c:6126 | |
31068 | #, gcc-internal-format | |
31069 | msgid "variable %q+D declared %<inline%>" | |
31070 | msgstr "la variable %q+D se declaró como %<inline%>" | |
31071 | ||
31072 | -#: c-decl.c:6127 | |
31073 | +#: c-decl.c:6128 | |
31074 | #, gcc-internal-format | |
31075 | msgid "variable %q+D declared %<_Noreturn%>" | |
31076 | msgstr "la variable %q+D se declaró como %<_Noreturn%>" | |
31077 | ||
31078 | -#: c-decl.c:6162 | |
31079 | +#: c-decl.c:6163 | |
31080 | #, gcc-internal-format | |
31081 | msgid "non-nested function with variably modified type" | |
31082 | msgstr "función no anidada con tipo modificado variablemente" | |
31083 | ||
31084 | -#: c-decl.c:6164 | |
31085 | +#: c-decl.c:6165 | |
31086 | #, gcc-internal-format | |
31087 | msgid "object with variably modified type must have no linkage" | |
31088 | msgstr "un objeto con tipo modificado variablemente no debe tener enlace" | |
31089 | ||
31090 | -#: c-decl.c:6254 c-decl.c:7813 | |
31091 | +#: c-decl.c:6255 c-decl.c:7815 | |
31092 | #, gcc-internal-format | |
31093 | msgid "function declaration isn%'t a prototype" | |
31094 | msgstr "la declaración de la función no es un prototipo" | |
31095 | ||
31096 | -#: c-decl.c:6263 | |
31097 | +#: c-decl.c:6264 | |
31098 | #, gcc-internal-format | |
31099 | msgid "parameter names (without types) in function declaration" | |
31100 | msgstr "nombres de parámetros (sin tipos) en la declaración de la función" | |
31101 | ||
31102 | -#: c-decl.c:6301 | |
31103 | +#: c-decl.c:6302 | |
31104 | #, gcc-internal-format | |
31105 | msgid "parameter %u (%q+D) has incomplete type" | |
31106 | msgstr "el parámetro %u (%q+D) tiene tipo incompleto" | |
31107 | ||
31108 | -#: c-decl.c:6305 | |
31109 | +#: c-decl.c:6306 | |
31110 | #, gcc-internal-format, gfc-internal-format | |
31111 | msgid "parameter %u has incomplete type" | |
31112 | msgstr "el parámetro %u tiene tipo incompleto" | |
31113 | ||
31114 | -#: c-decl.c:6316 | |
31115 | +#: c-decl.c:6317 | |
31116 | #, gcc-internal-format | |
31117 | msgid "parameter %u (%q+D) has void type" | |
31118 | msgstr "el parámetro %u (%q+D) tiene tipo void" | |
31119 | ||
31120 | -#: c-decl.c:6320 | |
31121 | +#: c-decl.c:6321 | |
31122 | #, gcc-internal-format, gfc-internal-format | |
31123 | msgid "parameter %u has void type" | |
31124 | msgstr "el parámetro %u tiene tipo void" | |
31125 | ||
31126 | -#: c-decl.c:6405 | |
31127 | +#: c-decl.c:6406 | |
31128 | #, gcc-internal-format | |
31129 | msgid "%<void%> as only parameter may not be qualified" | |
31130 | msgstr "no se puede calificar %<void%> si es el único parámetro" | |
31131 | ||
31132 | -#: c-decl.c:6409 c-decl.c:6444 | |
31133 | +#: c-decl.c:6410 c-decl.c:6445 | |
31134 | #, gcc-internal-format | |
31135 | msgid "%<void%> must be the only parameter" | |
31136 | msgstr "%<void%> debe ser el único parámetro" | |
31137 | ||
31138 | -#: c-decl.c:6438 | |
31139 | +#: c-decl.c:6439 | |
31140 | #, gcc-internal-format | |
31141 | msgid "parameter %q+D has just a forward declaration" | |
31142 | msgstr "el parámetro %q+D sólo tiene una declaración posterior" | |
31143 | ||
31144 | #. The %s will be one of 'struct', 'union', or 'enum'. | |
31145 | -#: c-decl.c:6483 | |
31146 | +#: c-decl.c:6484 | |
31147 | #, gcc-internal-format | |
31148 | msgid "%<%s %E%> declared inside parameter list" | |
31149 | msgstr "se declaró %<%s %E%> dentro de la lista de parámetros" | |
31150 | ||
31151 | #. The %s will be one of 'struct', 'union', or 'enum'. | |
31152 | -#: c-decl.c:6487 | |
31153 | +#: c-decl.c:6488 | |
31154 | #, gcc-internal-format, gfc-internal-format | |
31155 | msgid "anonymous %s declared inside parameter list" | |
31156 | msgstr "el %s anónimo se declaró dentro de una lista de parámetros" | |
31157 | ||
31158 | -#: c-decl.c:6492 | |
31159 | +#: c-decl.c:6493 | |
31160 | #, gcc-internal-format | |
31161 | msgid "its scope is only this definition or declaration, which is probably not what you want" | |
31162 | msgstr "su ámbito es solamente esta definición o declaración, lo cual probablemente no es lo que desea" | |
31163 | ||
31164 | -#: c-decl.c:6592 | |
31165 | +#: c-decl.c:6593 | |
31166 | #, gcc-internal-format | |
31167 | msgid "enum type defined here" | |
31168 | msgstr "se definió el tipo enum aquí" | |
31169 | ||
31170 | -#: c-decl.c:6598 | |
31171 | +#: c-decl.c:6599 | |
31172 | #, gcc-internal-format | |
31173 | msgid "struct defined here" | |
31174 | msgstr "se definió struct aquí" | |
31175 | ||
31176 | -#: c-decl.c:6604 | |
31177 | +#: c-decl.c:6605 | |
31178 | #, gcc-internal-format | |
31179 | msgid "union defined here" | |
31180 | msgstr "se definió union aquí" | |
31181 | ||
31182 | -#: c-decl.c:6677 | |
31183 | +#: c-decl.c:6678 | |
31184 | #, gcc-internal-format | |
31185 | msgid "redefinition of %<union %E%>" | |
31186 | msgstr "redefinición de %<union %E%>" | |
31187 | ||
31188 | -#: c-decl.c:6679 | |
31189 | +#: c-decl.c:6680 | |
31190 | #, gcc-internal-format | |
31191 | msgid "redefinition of %<struct %E%>" | |
31192 | msgstr "redefinición de %<struct %E%>" | |
31193 | ||
31194 | -#: c-decl.c:6688 | |
31195 | +#: c-decl.c:6689 | |
31196 | #, gcc-internal-format | |
31197 | msgid "nested redefinition of %<union %E%>" | |
31198 | msgstr "redefinición anidada de %<union %E%>" | |
31199 | ||
31200 | -#: c-decl.c:6690 | |
31201 | +#: c-decl.c:6691 | |
31202 | #, gcc-internal-format | |
31203 | msgid "nested redefinition of %<struct %E%>" | |
31204 | msgstr "redefinición anidada de %<struct %E%>" | |
31205 | ||
31206 | -#: c-decl.c:6722 c-decl.c:7411 | |
31207 | +#: c-decl.c:6723 c-decl.c:7412 | |
31208 | #, gcc-internal-format | |
31209 | msgid "defining type in %qs expression is invalid in C++" | |
31210 | msgstr "la definición de tipo en %qs es inválida en C++" | |
31211 | ||
31212 | -#: c-decl.c:6791 cp/decl.c:4147 | |
31213 | +#: c-decl.c:6792 cp/decl.c:4152 | |
31214 | #, gcc-internal-format | |
31215 | msgid "declaration does not declare anything" | |
31216 | msgstr "la declaración no declara nada" | |
31217 | ||
31218 | -#: c-decl.c:6798 | |
31219 | +#: c-decl.c:6799 | |
31220 | #, gcc-internal-format | |
31221 | msgid "ISO C99 doesn%'t support unnamed structs/unions" | |
31222 | msgstr "ISO C99 no admite structs/unions sin nombre" | |
31223 | ||
31224 | -#: c-decl.c:6801 | |
31225 | +#: c-decl.c:6802 | |
31226 | #, gcc-internal-format | |
31227 | msgid "ISO C90 doesn%'t support unnamed structs/unions" | |
31228 | msgstr "ISO C90 no admite structs/unions sin nombre" | |
31229 | ||
31230 | -#: c-decl.c:6893 c-decl.c:6912 c-decl.c:6975 | |
31231 | +#: c-decl.c:6894 c-decl.c:6913 c-decl.c:6976 | |
31232 | #, gcc-internal-format | |
31233 | msgid "duplicate member %q+D" | |
31234 | msgstr "miembro %q+D duplicado" | |
31235 | ||
31236 | -#: c-decl.c:7085 | |
31237 | +#: c-decl.c:7086 | |
31238 | #, gcc-internal-format | |
31239 | msgid "union has no named members" | |
31240 | msgstr "union no tiene miembros nombrados" | |
31241 | ||
31242 | -#: c-decl.c:7087 | |
31243 | +#: c-decl.c:7088 | |
31244 | #, gcc-internal-format | |
31245 | msgid "union has no members" | |
31246 | msgstr "union no tiene miembros" | |
31247 | ||
31248 | -#: c-decl.c:7092 | |
31249 | +#: c-decl.c:7093 | |
31250 | #, gcc-internal-format | |
31251 | msgid "struct has no named members" | |
31252 | msgstr "struct no tiene miembros nombrados" | |
31253 | ||
31254 | -#: c-decl.c:7094 | |
31255 | +#: c-decl.c:7095 | |
31256 | #, gcc-internal-format | |
31257 | msgid "struct has no members" | |
31258 | msgstr "struct no tiene miembros" | |
31259 | ||
31260 | -#: c-decl.c:7157 | |
31261 | +#: c-decl.c:7158 | |
31262 | #, gcc-internal-format | |
31263 | msgid "flexible array member in union" | |
31264 | msgstr "miembro de matriz flexible en union" | |
31265 | ||
31266 | -#: c-decl.c:7163 | |
31267 | +#: c-decl.c:7164 | |
31268 | #, gcc-internal-format | |
31269 | msgid "flexible array member not at end of struct" | |
31270 | msgstr "el miembro de matriz flexible no está al final del struct" | |
31271 | ||
31272 | -#: c-decl.c:7169 | |
31273 | +#: c-decl.c:7170 | |
31274 | #, gcc-internal-format | |
31275 | msgid "flexible array member in otherwise empty struct" | |
31276 | msgstr "el miembro de matriz flexible sería de otra manera un struct vacío" | |
31277 | ||
31278 | -#: c-decl.c:7288 | |
31279 | +#: c-decl.c:7289 | |
31280 | #, gcc-internal-format | |
31281 | msgid "union cannot be made transparent" | |
31282 | msgstr "union no se puede hacer transparente" | |
31283 | ||
31284 | -#: c-decl.c:7384 | |
31285 | +#: c-decl.c:7385 | |
31286 | #, gcc-internal-format | |
31287 | msgid "nested redefinition of %<enum %E%>" | |
31288 | msgstr "redefinición anidada de %<enum %E%>" | |
31289 | ||
31290 | #. This enum is a named one that has been declared already. | |
31291 | -#: c-decl.c:7391 | |
31292 | +#: c-decl.c:7392 | |
31293 | #, gcc-internal-format | |
31294 | msgid "redeclaration of %<enum %E%>" | |
31295 | msgstr "redeclaración de %<enum %E%>" | |
31296 | ||
31297 | -#: c-decl.c:7466 | |
31298 | +#: c-decl.c:7467 | |
31299 | #, gcc-internal-format | |
31300 | msgid "enumeration values exceed range of largest integer" | |
31301 | msgstr "los valores de enumeración exceden el rango del entero más grande" | |
31302 | ||
31303 | -#: c-decl.c:7483 | |
31304 | +#: c-decl.c:7484 | |
31305 | #, gcc-internal-format | |
31306 | msgid "specified mode too small for enumeral values" | |
31307 | msgstr "el modo especificado es demasiado pequeño para valores enumerados" | |
31308 | ||
31309 | -#: c-decl.c:7588 c-decl.c:7604 | |
31310 | +#: c-decl.c:7589 c-decl.c:7605 | |
31311 | #, gcc-internal-format | |
31312 | msgid "enumerator value for %qE is not an integer constant" | |
31313 | msgstr "el valor de enumerador para %qE no es una constante entera" | |
31314 | ||
31315 | -#: c-decl.c:7599 | |
31316 | +#: c-decl.c:7600 | |
31317 | #, gcc-internal-format | |
31318 | msgid "enumerator value for %qE is not an integer constant expression" | |
31319 | msgstr "el valor de enumerador para %qE no es una expresión constante entera" | |
31320 | ||
31321 | -#: c-decl.c:7623 | |
31322 | +#: c-decl.c:7624 | |
31323 | #, gcc-internal-format | |
31324 | msgid "overflow in enumeration values" | |
31325 | msgstr "desbordamiento en valores de enumeración" | |
31326 | ||
31327 | -#: c-decl.c:7631 | |
31328 | +#: c-decl.c:7632 | |
31329 | #, gcc-internal-format | |
31330 | msgid "ISO C restricts enumerator values to range of %<int%>" | |
31331 | msgstr "ISO C restringe los valores de enumeración al rango de %<int%>" | |
31332 | ||
31333 | -#: c-decl.c:7715 | |
31334 | +#: c-decl.c:7717 | |
31335 | #, gcc-internal-format | |
31336 | msgid "inline function %qD given attribute noinline" | |
31337 | msgstr "se le dió a la función incluída en línea %qD un atributo noinline" | |
31338 | ||
31339 | -#: c-decl.c:7733 | |
31340 | +#: c-decl.c:7735 | |
31341 | #, gcc-internal-format | |
31342 | msgid "return type is an incomplete type" | |
31343 | msgstr "el tipo de devolución es un tipo de dato incompleto" | |
31344 | ||
31345 | -#: c-decl.c:7743 | |
31346 | +#: c-decl.c:7745 | |
31347 | #, gcc-internal-format | |
31348 | msgid "return type defaults to %<int%>" | |
31349 | msgstr "el tipo de devolución por defecto es %<int%>" | |
31350 | ||
31351 | -#: c-decl.c:7821 | |
31352 | +#: c-decl.c:7823 | |
31353 | #, gcc-internal-format | |
31354 | msgid "no previous prototype for %qD" | |
31355 | msgstr "no hay un prototipo previo para %qD" | |
31356 | ||
31357 | -#: c-decl.c:7830 | |
31358 | +#: c-decl.c:7832 | |
31359 | #, gcc-internal-format | |
31360 | msgid "%qD was used with no prototype before its definition" | |
31361 | msgstr "se usó %qD sin prototipo antes de su definición" | |
31362 | ||
31363 | -#: c-decl.c:7837 | |
31364 | +#: c-decl.c:7839 | |
31365 | #, gcc-internal-format | |
31366 | msgid "no previous declaration for %qD" | |
31367 | msgstr "no hay declaración previa para %qD" | |
31368 | ||
31369 | -#: c-decl.c:7847 | |
31370 | +#: c-decl.c:7849 | |
31371 | #, gcc-internal-format | |
31372 | msgid "%qD was used with no declaration before its definition" | |
31373 | msgstr "se usó %qD sin declaración antes de su definición" | |
31374 | ||
31375 | -#: c-decl.c:7866 | |
31376 | +#: c-decl.c:7868 | |
31377 | #, gcc-internal-format | |
31378 | msgid "return type of %qD is not %<int%>" | |
31379 | msgstr "el tipo de devolución de %qD no es %<int%>" | |
31380 | ||
31381 | -#: c-decl.c:7872 | |
31382 | +#: c-decl.c:7874 | |
31383 | #, gcc-internal-format | |
31384 | msgid "%qD is normally a non-static function" | |
31385 | msgstr "%qD generalmente es una función que no es static" | |
31386 | ||
31387 | -#: c-decl.c:7909 | |
31388 | +#: c-decl.c:7911 | |
31389 | #, gcc-internal-format | |
31390 | msgid "old-style parameter declarations in prototyped function definition" | |
31391 | msgstr "declaraciones de parámetros de estilo antiguo en la definición de una función prototipo" | |
31392 | ||
31393 | -#: c-decl.c:7923 | |
31394 | +#: c-decl.c:7925 | |
31395 | #, gcc-internal-format | |
31396 | msgid "traditional C rejects ISO C style function definitions" | |
31397 | msgstr "C tradicional rechaza la definición de funciones de estilo ISO C" | |
31398 | ||
31399 | -#: c-decl.c:7939 | |
31400 | +#: c-decl.c:7941 | |
31401 | #, gcc-internal-format | |
31402 | msgid "parameter name omitted" | |
31403 | msgstr "se omitió el nombre del parámetro" | |
31404 | ||
31405 | -#: c-decl.c:7976 | |
31406 | +#: c-decl.c:7978 | |
31407 | #, gcc-internal-format | |
31408 | msgid "old-style function definition" | |
31409 | msgstr "definición de función de estilo antiguo" | |
31410 | ||
31411 | -#: c-decl.c:7985 | |
31412 | +#: c-decl.c:7987 | |
31413 | #, gcc-internal-format | |
31414 | msgid "parameter name missing from parameter list" | |
31415 | msgstr "falta el nombre del parámetro de la lista de parámetros" | |
31416 | ||
31417 | -#: c-decl.c:8000 | |
31418 | +#: c-decl.c:8002 | |
31419 | #, gcc-internal-format | |
31420 | msgid "%qD declared as a non-parameter" | |
31421 | msgstr "%qD se declaró como un no-parámetro" | |
31422 | ||
31423 | -#: c-decl.c:8006 | |
31424 | +#: c-decl.c:8008 | |
31425 | #, gcc-internal-format | |
31426 | msgid "multiple parameters named %qD" | |
31427 | msgstr "múltiples parámetros nombrados %qD" | |
31428 | ||
31429 | -#: c-decl.c:8015 | |
31430 | +#: c-decl.c:8017 | |
31431 | #, gcc-internal-format | |
31432 | msgid "parameter %qD declared with void type" | |
31433 | msgstr "el parámetro %qD se declaró con tipo void" | |
31434 | ||
31435 | -#: c-decl.c:8044 c-decl.c:8048 | |
31436 | +#: c-decl.c:8046 c-decl.c:8050 | |
31437 | #, gcc-internal-format | |
31438 | msgid "type of %qD defaults to %<int%>" | |
31439 | msgstr "el tipo de %qD es %<int%> por defecto" | |
31440 | ||
31441 | -#: c-decl.c:8068 | |
31442 | +#: c-decl.c:8070 | |
31443 | #, gcc-internal-format | |
31444 | msgid "parameter %qD has incomplete type" | |
31445 | msgstr "el parámetro %qD tiene tipo incompleto" | |
31446 | ||
31447 | -#: c-decl.c:8075 | |
31448 | +#: c-decl.c:8077 | |
31449 | #, gcc-internal-format | |
31450 | msgid "declaration for parameter %qD but no such parameter" | |
31451 | msgstr "existe la declaración para el parámetro %qD pero no hay tal parámetro" | |
31452 | ||
31453 | -#: c-decl.c:8127 | |
31454 | +#: c-decl.c:8129 | |
31455 | #, gcc-internal-format | |
31456 | msgid "number of arguments doesn%'t match built-in prototype" | |
31457 | msgstr "el número de argumentos no coinciden con el prototipo interno" | |
31458 | ||
31459 | -#: c-decl.c:8138 | |
31460 | +#: c-decl.c:8140 | |
31461 | #, gcc-internal-format | |
31462 | msgid "number of arguments doesn%'t match prototype" | |
31463 | msgstr "el número de argumentos no coinciden con el prototipo" | |
31464 | ||
31465 | -#: c-decl.c:8141 c-decl.c:8183 c-decl.c:8197 | |
31466 | +#: c-decl.c:8143 c-decl.c:8185 c-decl.c:8199 | |
31467 | #, gcc-internal-format | |
31468 | msgid "prototype declaration" | |
31469 | msgstr "declaración de prototipo" | |
31470 | ||
31471 | -#: c-decl.c:8175 | |
31472 | +#: c-decl.c:8177 | |
31473 | #, gcc-internal-format | |
31474 | msgid "promoted argument %qD doesn%'t match built-in prototype" | |
31475 | msgstr "el argumento promovido %qD no coincide con el prototipo interno" | |
31476 | ||
31477 | -#: c-decl.c:8180 | |
31478 | +#: c-decl.c:8182 | |
31479 | #, gcc-internal-format | |
31480 | msgid "promoted argument %qD doesn%'t match prototype" | |
31481 | msgstr "el argumento promovido %qD no coincide con el prototipo" | |
31482 | ||
31483 | -#: c-decl.c:8190 | |
31484 | +#: c-decl.c:8192 | |
31485 | #, gcc-internal-format | |
31486 | msgid "argument %qD doesn%'t match built-in prototype" | |
31487 | msgstr "el argumento %qD no coincide con el prototipo interno" | |
31488 | ||
31489 | -#: c-decl.c:8195 | |
31490 | +#: c-decl.c:8197 | |
31491 | #, gcc-internal-format | |
31492 | msgid "argument %qD doesn%'t match prototype" | |
31493 | msgstr "el argumento %qD no coincide con el prototipo" | |
31494 | ||
31495 | -#: c-decl.c:8378 cp/decl.c:13501 | |
31496 | +#: c-decl.c:8380 cp/decl.c:13515 | |
31497 | #, gcc-internal-format | |
31498 | msgid "no return statement in function returning non-void" | |
31499 | msgstr "no hay una declaración de devolución en la función que no devuelve void" | |
31500 | ||
31501 | -#: c-decl.c:8398 | |
31502 | +#: c-decl.c:8400 | |
31503 | #, gcc-internal-format | |
31504 | msgid "parameter %qD set but not used" | |
31505 | msgstr "se definió el parámetro %qD pero no se usa" | |
31506 | @@ -13693,172 +13838,172 @@ | |
31507 | #. If we get here, declarations have been used in a for loop without | |
31508 | #. the C99 for loop scope. This doesn't make much sense, so don't | |
31509 | #. allow it. | |
31510 | -#: c-decl.c:8487 | |
31511 | +#: c-decl.c:8489 | |
31512 | #, gcc-internal-format | |
31513 | msgid "%<for%> loop initial declarations are only allowed in C99 mode" | |
31514 | msgstr "sólo se permiten las declaraciones iniciales del bucle %<for%> en modo C99" | |
31515 | ||
31516 | -#: c-decl.c:8492 | |
31517 | +#: c-decl.c:8494 | |
31518 | #, gcc-internal-format | |
31519 | msgid "use option -std=c99 or -std=gnu99 to compile your code" | |
31520 | msgstr "use la opción -std=c99 o -std=gnu99 para compilar su código" | |
31521 | ||
31522 | -#: c-decl.c:8526 | |
31523 | +#: c-decl.c:8528 | |
31524 | #, gcc-internal-format | |
31525 | msgid "declaration of static variable %qD in %<for%> loop initial declaration" | |
31526 | msgstr "declaración de la variable static %qD en la declaración inicial del bucle %<for%>" | |
31527 | ||
31528 | -#: c-decl.c:8530 | |
31529 | +#: c-decl.c:8532 | |
31530 | #, gcc-internal-format | |
31531 | msgid "declaration of %<extern%> variable %qD in %<for%> loop initial declaration" | |
31532 | msgstr "declaración de la variable %<extern%> %qD en la declaración inicial del bucle %<for%>" | |
31533 | ||
31534 | -#: c-decl.c:8537 | |
31535 | +#: c-decl.c:8539 | |
31536 | #, gcc-internal-format | |
31537 | msgid "%<struct %E%> declared in %<for%> loop initial declaration" | |
31538 | msgstr "%<struct %E%> se declaró en la declaración inicial del bucle %<for%>" | |
31539 | ||
31540 | -#: c-decl.c:8542 | |
31541 | +#: c-decl.c:8544 | |
31542 | #, gcc-internal-format | |
31543 | msgid "%<union %E%> declared in %<for%> loop initial declaration" | |
31544 | msgstr "%<union %E%> se declaró en la declaración inicial del bucle %<for%>" | |
31545 | ||
31546 | -#: c-decl.c:8546 | |
31547 | +#: c-decl.c:8548 | |
31548 | #, gcc-internal-format | |
31549 | msgid "%<enum %E%> declared in %<for%> loop initial declaration" | |
31550 | msgstr "%<enum %E%> se declaró en la declaración inicial del bucle %<for%>" | |
31551 | ||
31552 | -#: c-decl.c:8550 | |
31553 | +#: c-decl.c:8552 | |
31554 | #, gcc-internal-format | |
31555 | msgid "declaration of non-variable %qD in %<for%> loop initial declaration" | |
31556 | msgstr "declaración de %qD que no es variable en la declaración inicial del bucle %<for%>" | |
31557 | ||
31558 | -#: c-decl.c:8819 | |
31559 | +#: c-decl.c:8821 | |
31560 | #, gcc-internal-format | |
31561 | msgid "incompatible address space qualifiers %qs and %qs" | |
31562 | msgstr "calificadores de espacio de direcciones incompatibles %qs y %qs" | |
31563 | ||
31564 | -#: c-decl.c:8858 c-decl.c:9169 c-decl.c:9563 | |
31565 | +#: c-decl.c:8860 c-decl.c:9171 c-decl.c:9565 | |
31566 | #, gcc-internal-format | |
31567 | msgid "duplicate %qE" | |
31568 | msgstr "%qE duplicado" | |
31569 | ||
31570 | -#: c-decl.c:8884 c-decl.c:9180 c-decl.c:9437 | |
31571 | +#: c-decl.c:8886 c-decl.c:9182 c-decl.c:9439 | |
31572 | #, gcc-internal-format | |
31573 | msgid "two or more data types in declaration specifiers" | |
31574 | msgstr "dos o más tipos de datos en los especificadores de la declaración" | |
31575 | ||
31576 | -#: c-decl.c:8896 cp/parser.c:2512 | |
31577 | +#: c-decl.c:8898 cp/parser.c:2512 | |
31578 | #, gcc-internal-format | |
31579 | msgid "%<long long long%> is too long for GCC" | |
31580 | msgstr "%<long long long%> es demasiado largo para GCC" | |
31581 | ||
31582 | -#: c-decl.c:8909 | |
31583 | +#: c-decl.c:8911 | |
31584 | #, gcc-internal-format | |
31585 | msgid "ISO C90 does not support %<long long%>" | |
31586 | msgstr "ISO C90 no admite %<long long%>" | |
31587 | ||
31588 | -#: c-decl.c:9075 c-parser.c:6639 | |
31589 | +#: c-decl.c:9077 c-parser.c:6639 | |
31590 | #, gcc-internal-format | |
31591 | msgid "ISO C90 does not support complex types" | |
31592 | msgstr "ISO C90 no admite tipos complejos" | |
31593 | ||
31594 | -#: c-decl.c:9114 | |
31595 | +#: c-decl.c:9116 | |
31596 | #, gcc-internal-format | |
31597 | msgid "ISO C does not support saturating types" | |
31598 | msgstr "ISO C no admite tipos saturantes" | |
31599 | ||
31600 | -#: c-decl.c:9188 | |
31601 | +#: c-decl.c:9190 | |
31602 | #, gcc-internal-format | |
31603 | msgid "%<__int128%> is not supported for this target" | |
31604 | msgstr "no se admite %<__int128%> para este objetivo" | |
31605 | ||
31606 | -#: c-decl.c:9193 | |
31607 | +#: c-decl.c:9195 | |
31608 | #, gcc-internal-format | |
31609 | msgid "ISO C does not support %<__int128%> type" | |
31610 | msgstr "ISO C no admite el tipo %<__int128%>" | |
31611 | ||
31612 | -#: c-decl.c:9396 | |
31613 | +#: c-decl.c:9398 | |
31614 | #, gcc-internal-format | |
31615 | msgid "ISO C does not support decimal floating point" | |
31616 | msgstr "ISO C no admite coma flotante decimal" | |
31617 | ||
31618 | -#: c-decl.c:9418 c-decl.c:9644 c-parser.c:6232 | |
31619 | +#: c-decl.c:9420 c-decl.c:9646 c-parser.c:6232 | |
31620 | #, gcc-internal-format | |
31621 | msgid "fixed-point types not supported for this target" | |
31622 | msgstr "no se admiten tipos de coma fija para este objetivo" | |
31623 | ||
31624 | -#: c-decl.c:9420 | |
31625 | +#: c-decl.c:9422 | |
31626 | #, gcc-internal-format | |
31627 | msgid "ISO C does not support fixed-point types" | |
31628 | msgstr "ISO C no admite tipos de coma fija" | |
31629 | ||
31630 | -#: c-decl.c:9454 | |
31631 | +#: c-decl.c:9456 | |
31632 | #, gcc-internal-format | |
31633 | msgid "C++ lookup of %qD would return a field, not a type" | |
31634 | msgstr "la búsqueda en C++ de %qD devolvería un campo, no un tipo" | |
31635 | ||
31636 | -#: c-decl.c:9467 | |
31637 | +#: c-decl.c:9469 | |
31638 | #, gcc-internal-format | |
31639 | msgid "%qE fails to be a typedef or built in type" | |
31640 | msgstr "%qE falla al ser un typedef o un tipo interno del compilador" | |
31641 | ||
31642 | -#: c-decl.c:9509 | |
31643 | +#: c-decl.c:9511 | |
31644 | #, gcc-internal-format | |
31645 | msgid "%qE is not at beginning of declaration" | |
31646 | msgstr "%qE no está al inicio de la declaración" | |
31647 | ||
31648 | -#: c-decl.c:9528 | |
31649 | +#: c-decl.c:9530 | |
31650 | #, gcc-internal-format | |
31651 | msgid "%<__thread%> used with %<auto%>" | |
31652 | msgstr "se usó %<__thread%> con %<auto%>" | |
31653 | ||
31654 | -#: c-decl.c:9530 | |
31655 | +#: c-decl.c:9532 | |
31656 | #, gcc-internal-format | |
31657 | msgid "%<__thread%> used with %<register%>" | |
31658 | msgstr "se usó %<__thread%> con %<register%>" | |
31659 | ||
31660 | -#: c-decl.c:9532 | |
31661 | +#: c-decl.c:9534 | |
31662 | #, gcc-internal-format | |
31663 | msgid "%<__thread%> used with %<typedef%>" | |
31664 | msgstr "se usó %<__thread%> con %<typedef%>" | |
31665 | ||
31666 | -#: c-decl.c:9543 | |
31667 | +#: c-decl.c:9545 | |
31668 | #, gcc-internal-format | |
31669 | msgid "%<__thread%> before %<extern%>" | |
31670 | msgstr "%<__thread%> antes de %<extern%>" | |
31671 | ||
31672 | -#: c-decl.c:9552 | |
31673 | +#: c-decl.c:9554 | |
31674 | #, gcc-internal-format | |
31675 | msgid "%<__thread%> before %<static%>" | |
31676 | msgstr "%<__thread%> antes de %<static%>" | |
31677 | ||
31678 | -#: c-decl.c:9568 | |
31679 | +#: c-decl.c:9570 | |
31680 | #, gcc-internal-format | |
31681 | msgid "multiple storage classes in declaration specifiers" | |
31682 | msgstr "múltiples clases de almacenamiento en los especificadores de declaración" | |
31683 | ||
31684 | -#: c-decl.c:9575 | |
31685 | +#: c-decl.c:9577 | |
31686 | #, gcc-internal-format | |
31687 | msgid "%<__thread%> used with %qE" | |
31688 | msgstr "se usó %<__thread%> con %qE" | |
31689 | ||
31690 | -#: c-decl.c:9642 | |
31691 | +#: c-decl.c:9644 | |
31692 | #, gcc-internal-format | |
31693 | msgid "%<_Sat%> is used without %<_Fract%> or %<_Accum%>" | |
31694 | msgstr "se usó %<_Sat%> sin %<_Fract%> o %<_Accum%>" | |
31695 | ||
31696 | -#: c-decl.c:9656 | |
31697 | +#: c-decl.c:9658 | |
31698 | #, gcc-internal-format | |
31699 | msgid "ISO C does not support plain %<complex%> meaning %<double complex%>" | |
31700 | msgstr "ISO C no admite %<complex%> simples que significan %<double complex%>" | |
31701 | ||
31702 | -#: c-decl.c:9701 c-decl.c:9714 c-decl.c:9740 | |
31703 | +#: c-decl.c:9703 c-decl.c:9716 c-decl.c:9742 | |
31704 | #, gcc-internal-format | |
31705 | msgid "ISO C does not support complex integer types" | |
31706 | msgstr "ISO C no admite tipos enteros complejos" | |
31707 | ||
31708 | -#: c-decl.c:9894 toplev.c:484 | |
31709 | +#: c-decl.c:9896 toplev.c:484 | |
31710 | #, gcc-internal-format | |
31711 | msgid "%q+F used but never defined" | |
31712 | msgstr "se usa %q+F pero nunca se define" | |
31713 | @@ -14458,7 +14603,7 @@ | |
31714 | msgid "collapsed loops not perfectly nested" | |
31715 | msgstr "los bucles colapsados no están perfectamente anidados" | |
31716 | ||
31717 | -#: c-parser.c:10102 cp/parser.c:26364 cp/parser.c:26402 cp/pt.c:12677 | |
31718 | +#: c-parser.c:10102 cp/parser.c:26364 cp/parser.c:26402 cp/pt.c:12690 | |
31719 | #, gcc-internal-format | |
31720 | msgid "iteration variable %qD should not be firstprivate" | |
31721 | msgstr "la variable de iteración %qD no debe ser firstprivate" | |
31722 | @@ -14687,7 +14832,7 @@ | |
31723 | msgid "too many arguments to method %qE" | |
31724 | msgstr "demasiados argumentos para el método %qE" | |
31725 | ||
31726 | -#: c-typeck.c:3036 c-family/c-common.c:8433 c-family/c-common.c:9359 | |
31727 | +#: c-typeck.c:3036 c-family/c-common.c:8433 c-family/c-common.c:9361 | |
31728 | #, gcc-internal-format | |
31729 | msgid "too many arguments to function %qE" | |
31730 | msgstr "demasiados argumentos para la función %qE" | |
31731 | @@ -14912,7 +15057,7 @@ | |
31732 | msgid "pointer/integer type mismatch in conditional expression" | |
31733 | msgstr "los tipos de datos punteros/enteros no coinciden en la expresión condicional" | |
31734 | ||
31735 | -#: c-typeck.c:4373 tree-cfg.c:3824 | |
31736 | +#: c-typeck.c:4373 tree-cfg.c:3821 | |
31737 | #, gcc-internal-format | |
31738 | msgid "type mismatch in conditional expression" | |
31739 | msgstr "los tipos de datos no coinciden en la expresión condicional" | |
31740 | @@ -15322,7 +15467,7 @@ | |
31741 | msgid "invalid initializer" | |
31742 | msgstr "inicializador inválido" | |
31743 | ||
31744 | -#: c-typeck.c:6652 cp/decl.c:5526 | |
31745 | +#: c-typeck.c:6652 cp/decl.c:5536 | |
31746 | #, gcc-internal-format | |
31747 | msgid "opaque vector types cannot be initialized" | |
31748 | msgstr "no se pueden inicializar los tipos de vector opacos" | |
31749 | @@ -15703,7 +15848,7 @@ | |
31750 | msgid "C++ requires promoted type, not enum type, in %<va_arg%>" | |
31751 | msgstr "C++ requiere un tipo promovido, no un tipo enum, en %<va_arg%>" | |
31752 | ||
31753 | -#: calls.c:2311 | |
31754 | +#: calls.c:2316 | |
31755 | #, gcc-internal-format | |
31756 | msgid "function call has aggregate value" | |
31757 | msgstr "la llamada a la función tiene valor agregado" | |
31758 | @@ -16168,217 +16313,222 @@ | |
31759 | msgid "caller edge frequency %i does not match BB frequency %i" | |
31760 | msgstr "la frecuencia de borde llamador %i no coincide con la frecuencia BB %i" | |
31761 | ||
31762 | -#: cgraphunit.c:501 | |
31763 | +#: cgraphunit.c:507 | |
31764 | #, gcc-internal-format, gfc-internal-format | |
31765 | msgid "aux field set for edge %s->%s" | |
31766 | msgstr "campo aux establecido para el borde %s->%s" | |
31767 | ||
31768 | -#: cgraphunit.c:508 | |
31769 | +#: cgraphunit.c:514 | |
31770 | #, gcc-internal-format | |
31771 | msgid "execution count is negative" | |
31772 | msgstr "la cuenta de ejecución es negativa" | |
31773 | ||
31774 | -#: cgraphunit.c:513 | |
31775 | +#: cgraphunit.c:519 | |
31776 | #, gcc-internal-format | |
31777 | msgid "externally visible inline clone" | |
31778 | msgstr "clon incluído en línea visible externamente" | |
31779 | ||
31780 | -#: cgraphunit.c:518 | |
31781 | +#: cgraphunit.c:524 | |
31782 | #, gcc-internal-format | |
31783 | msgid "inline clone with address taken" | |
31784 | msgstr "clon incluído en línea con dirección tomada" | |
31785 | ||
31786 | -#: cgraphunit.c:523 | |
31787 | +#: cgraphunit.c:529 | |
31788 | #, gcc-internal-format | |
31789 | msgid "inline clone is needed" | |
31790 | msgstr "se necesita un clon incluído en línea" | |
31791 | ||
31792 | -#: cgraphunit.c:530 | |
31793 | +#: cgraphunit.c:536 | |
31794 | #, gcc-internal-format, gfc-internal-format | |
31795 | msgid "aux field set for indirect edge from %s" | |
31796 | msgstr "se define el campo aux para el borde indirecto desde %s" | |
31797 | ||
31798 | -#: cgraphunit.c:537 | |
31799 | +#: cgraphunit.c:543 | |
31800 | #, gcc-internal-format, gfc-internal-format | |
31801 | msgid "An indirect edge from %s is not marked as indirect or has associated indirect_info, the corresponding statement is: " | |
31802 | msgstr "Un borde indirecto de %s no está marcado como indirecto o tiene indirect_info asociado, la declaración correspondiente es: " | |
31803 | ||
31804 | -#: cgraphunit.c:554 | |
31805 | +#: cgraphunit.c:560 | |
31806 | #, gcc-internal-format | |
31807 | msgid "inlined_to pointer is wrong" | |
31808 | msgstr "el puntero inlined_to está mal" | |
31809 | ||
31810 | -#: cgraphunit.c:559 | |
31811 | +#: cgraphunit.c:565 | |
31812 | #, gcc-internal-format | |
31813 | msgid "multiple inline callers" | |
31814 | msgstr "múltiples llamantes inline" | |
31815 | ||
31816 | -#: cgraphunit.c:566 | |
31817 | +#: cgraphunit.c:572 | |
31818 | #, gcc-internal-format | |
31819 | msgid "inlined_to pointer set for noninline callers" | |
31820 | msgstr "se estableció el puntero inlined_to para llamantes no-inline" | |
31821 | ||
31822 | -#: cgraphunit.c:575 | |
31823 | +#: cgraphunit.c:581 | |
31824 | #, gcc-internal-format | |
31825 | msgid "inlined_to pointer is set but no predecessors found" | |
31826 | msgstr "se estableció el puntero inlined_to, pero no se encontraron predecesores" | |
31827 | ||
31828 | -#: cgraphunit.c:580 | |
31829 | +#: cgraphunit.c:586 | |
31830 | #, gcc-internal-format | |
31831 | msgid "inlined_to pointer refers to itself" | |
31832 | msgstr "el puntero inlined_to se refiere a sí mismo" | |
31833 | ||
31834 | -#: cgraphunit.c:586 | |
31835 | +#: cgraphunit.c:592 | |
31836 | #, gcc-internal-format | |
31837 | msgid "node not found in cgraph_hash" | |
31838 | msgstr "no se encontró un nodo en cgraph_hash" | |
31839 | ||
31840 | -#: cgraphunit.c:598 | |
31841 | +#: cgraphunit.c:604 | |
31842 | #, gcc-internal-format | |
31843 | msgid "node has wrong clone_of" | |
31844 | msgstr "el nodo tiene un clone_of erróneo" | |
31845 | ||
31846 | -#: cgraphunit.c:610 | |
31847 | +#: cgraphunit.c:616 | |
31848 | #, gcc-internal-format | |
31849 | msgid "node has wrong clone list" | |
31850 | msgstr "el nodo tiene una lista de clones errónea" | |
31851 | ||
31852 | -#: cgraphunit.c:616 | |
31853 | +#: cgraphunit.c:622 | |
31854 | #, gcc-internal-format | |
31855 | msgid "node is in clone list but it is not clone" | |
31856 | msgstr "el nodo está en la lista de clones pero no es clon" | |
31857 | ||
31858 | -#: cgraphunit.c:621 | |
31859 | +#: cgraphunit.c:627 | |
31860 | #, gcc-internal-format | |
31861 | msgid "node has wrong prev_clone pointer" | |
31862 | msgstr "el nodo tiene un puntero prev_clone erróneo" | |
31863 | ||
31864 | -#: cgraphunit.c:626 | |
31865 | +#: cgraphunit.c:632 | |
31866 | #, gcc-internal-format | |
31867 | msgid "double linked list of clones corrupted" | |
31868 | msgstr "lista de clones doblemente ligada corrrupta" | |
31869 | ||
31870 | -#: cgraphunit.c:635 | |
31871 | +#: cgraphunit.c:641 | |
31872 | #, gcc-internal-format | |
31873 | msgid "non-DECL_ONE_ONLY node in a same_comdat_group list" | |
31874 | msgstr "nodo que no es DECL_ONE_ONLY en una lista same_comdat_group" | |
31875 | ||
31876 | -#: cgraphunit.c:640 | |
31877 | +#: cgraphunit.c:646 | |
31878 | #, gcc-internal-format | |
31879 | msgid "node is alone in a comdat group" | |
31880 | msgstr "el nodo está solo en un grupo comdat" | |
31881 | ||
31882 | -#: cgraphunit.c:647 | |
31883 | +#: cgraphunit.c:653 | |
31884 | #, gcc-internal-format | |
31885 | msgid "same_comdat_group is not a circular list" | |
31886 | msgstr "same_comdat_group no es una lista circular" | |
31887 | ||
31888 | -#: cgraphunit.c:664 | |
31889 | +#: cgraphunit.c:670 | |
31890 | #, gcc-internal-format | |
31891 | msgid "Alias has call edges" | |
31892 | msgstr "Alias tiene bordes de llamada" | |
31893 | ||
31894 | -#: cgraphunit.c:670 | |
31895 | +#: cgraphunit.c:676 | |
31896 | #, gcc-internal-format | |
31897 | -msgid "Alias has non-alias refernece" | |
31898 | +msgid "Alias has non-alias reference" | |
31899 | msgstr "Alias tiene una referencia que no es alias" | |
31900 | ||
31901 | -#: cgraphunit.c:675 | |
31902 | +#: cgraphunit.c:681 | |
31903 | #, gcc-internal-format | |
31904 | msgid "Alias has more than one alias reference" | |
31905 | msgstr "Alias tiene más de una referencia alias" | |
31906 | ||
31907 | -#: cgraphunit.c:682 | |
31908 | +#: cgraphunit.c:688 | |
31909 | #, gcc-internal-format | |
31910 | msgid "Analyzed alias has no reference" | |
31911 | msgstr "El alias analizado no tiene referencia" | |
31912 | ||
31913 | -#: cgraphunit.c:690 | |
31914 | +#: cgraphunit.c:696 | |
31915 | #, gcc-internal-format | |
31916 | msgid "No edge out of thunk node" | |
31917 | msgstr "No hay un borde fuera de un nodo thunk" | |
31918 | ||
31919 | -#: cgraphunit.c:695 | |
31920 | +#: cgraphunit.c:701 | |
31921 | #, gcc-internal-format | |
31922 | msgid "More than one edge out of thunk node" | |
31923 | msgstr "Más de un borde fuera de un nodo thunk" | |
31924 | ||
31925 | -#: cgraphunit.c:700 | |
31926 | +#: cgraphunit.c:706 | |
31927 | #, gcc-internal-format | |
31928 | msgid "Thunk is not supposed to have body" | |
31929 | msgstr "No se supone que thunk tenga cuerpo" | |
31930 | ||
31931 | -#: cgraphunit.c:730 | |
31932 | +#: cgraphunit.c:736 | |
31933 | #, gcc-internal-format | |
31934 | msgid "shared call_stmt:" | |
31935 | msgstr "call_stmt compartida:" | |
31936 | ||
31937 | -#: cgraphunit.c:738 | |
31938 | +#: cgraphunit.c:744 | |
31939 | #, gcc-internal-format | |
31940 | msgid "edge points to wrong declaration:" | |
31941 | msgstr "puntos de borde para una declaración errónea:" | |
31942 | ||
31943 | -#: cgraphunit.c:747 | |
31944 | +#: cgraphunit.c:753 | |
31945 | #, gcc-internal-format | |
31946 | msgid "an indirect edge with unknown callee corresponding to a call_stmt with a known declaration:" | |
31947 | msgstr "un borde indirecto con un llamante desconocido que corresponde a call_stmt con una declaración conocida:" | |
31948 | ||
31949 | -#: cgraphunit.c:757 | |
31950 | +#: cgraphunit.c:763 | |
31951 | #, gcc-internal-format | |
31952 | msgid "missing callgraph edge for call stmt:" | |
31953 | msgstr "falta el borde de callgraph para la llamada stmt:" | |
31954 | ||
31955 | -#: cgraphunit.c:773 | |
31956 | +#: cgraphunit.c:779 | |
31957 | #, gcc-internal-format, gfc-internal-format | |
31958 | msgid "edge %s->%s has no corresponding call_stmt" | |
31959 | msgstr "el borde %s->%s no tiene un call_stmt correspondiente" | |
31960 | ||
31961 | -#: cgraphunit.c:785 | |
31962 | +#: cgraphunit.c:791 | |
31963 | #, gcc-internal-format, gfc-internal-format | |
31964 | msgid "an indirect edge from %s has no corresponding call_stmt" | |
31965 | msgstr "un borde indirecto desde %s no tiene un call_stmt correspondiente" | |
31966 | ||
31967 | -#: cgraphunit.c:796 | |
31968 | +#: cgraphunit.c:802 | |
31969 | #, gcc-internal-format | |
31970 | msgid "verify_cgraph_node failed" | |
31971 | msgstr "falló verify_cgraph_node" | |
31972 | ||
31973 | -#: cgraphunit.c:940 | |
31974 | +#: cgraphunit.c:851 | |
31975 | #, gcc-internal-format | |
31976 | +msgid "function %q+D part of alias cycle" | |
31977 | +msgstr "la función %q+D es parte de un ciclo de alias" | |
31978 | + | |
31979 | +#: cgraphunit.c:956 | |
31980 | +#, gcc-internal-format | |
31981 | msgid "%<weakref%> attribute should be accompanied with an %<alias%> attribute" | |
31982 | msgstr "el atributo %<weakref%> se debe acompañar con un atributo %<alias%>" | |
31983 | ||
31984 | -#: cgraphunit.c:995 cgraphunit.c:1040 | |
31985 | +#: cgraphunit.c:1011 cgraphunit.c:1056 | |
31986 | #, gcc-internal-format | |
31987 | msgid "%<externally_visible%> attribute have effect only on public objects" | |
31988 | msgstr "el atributo %<externally_visible%> sólo tiene efecto en objetos públicos" | |
31989 | ||
31990 | -#: cgraphunit.c:1004 | |
31991 | +#: cgraphunit.c:1020 | |
31992 | #, gcc-internal-format | |
31993 | msgid "%<weakref%> attribute ignored because function is defined" | |
31994 | msgstr "se descarta el atributo %<weakref%> porque ya se definió la función" | |
31995 | ||
31996 | -#: cgraphunit.c:1016 | |
31997 | +#: cgraphunit.c:1032 | |
31998 | #, gcc-internal-format | |
31999 | msgid "always_inline function might not be inlinable" | |
32000 | msgstr "una función always_inline tal vez no se puede incluir en línea" | |
32001 | ||
32002 | -#: cgraphunit.c:1050 | |
32003 | +#: cgraphunit.c:1066 | |
32004 | #, gcc-internal-format | |
32005 | msgid "%<weakref%> attribute ignored because variable is initialized" | |
32006 | msgstr "se descarta el atributo %<weakref%> porque ya se inicializó la variable" | |
32007 | ||
32008 | -#: cgraphunit.c:1404 | |
32009 | +#: cgraphunit.c:1420 | |
32010 | #, gcc-internal-format | |
32011 | msgid "failed to reclaim unneeded function" | |
32012 | msgstr "falló al reclamar una función innecesaria" | |
32013 | ||
32014 | -#: cgraphunit.c:1430 | |
32015 | +#: cgraphunit.c:1447 | |
32016 | #, gcc-internal-format | |
32017 | -msgid "failed to reclaim unneeded functionin same comdat group" | |
32018 | +msgid "failed to reclaim unneeded function in same comdat group" | |
32019 | msgstr "falló al reclamar una función innecesaria en el mismo grupo comdat" | |
32020 | ||
32021 | -#: cgraphunit.c:2233 | |
32022 | +#: cgraphunit.c:2251 | |
32023 | #, gcc-internal-format | |
32024 | msgid "nodes with unreleased memory found" | |
32025 | msgstr "se encontraron nodos sin memoria liberada" | |
32026 | @@ -16448,12 +16598,12 @@ | |
32027 | msgid "cannot find '%s'" | |
32028 | msgstr "no se puede encontrar '%s'" | |
32029 | ||
32030 | -#: collect2.c:2081 collect2.c:2617 collect2.c:2813 gcc.c:2652 | |
32031 | +#: collect2.c:2081 collect2.c:2617 collect2.c:2813 gcc.c:2658 | |
32032 | #, gcc-internal-format | |
32033 | msgid "pex_init failed: %m" | |
32034 | msgstr "falló pex_init: %m" | |
32035 | ||
32036 | -#: collect2.c:2090 collect2.c:2626 collect2.c:2821 gcc.c:6995 | |
32037 | +#: collect2.c:2090 collect2.c:2626 collect2.c:2821 gcc.c:7027 | |
32038 | #, gcc-internal-format | |
32039 | msgid "%s: %m" | |
32040 | msgstr "%s: %m" | |
32041 | @@ -16563,82 +16713,82 @@ | |
32042 | msgid "aggregate value used where a fixed-point was expected" | |
32043 | msgstr "se usó un valor agregado donde se esperaba uno de coma fija" | |
32044 | ||
32045 | -#: coverage.c:188 | |
32046 | +#: coverage.c:189 | |
32047 | #, gcc-internal-format | |
32048 | msgid "%qs is not a gcov data file" | |
32049 | msgstr "%qs no es un fichero de datos gcov" | |
32050 | ||
32051 | -#: coverage.c:199 | |
32052 | +#: coverage.c:200 | |
32053 | #, gcc-internal-format | |
32054 | msgid "%qs is version %q.*s, expected version %q.*s" | |
32055 | msgstr "%qs es versión %q.*s, se esperaba la versión %q.*s" | |
32056 | ||
32057 | -#: coverage.c:275 coverage.c:284 | |
32058 | +#: coverage.c:276 coverage.c:285 | |
32059 | #, gcc-internal-format, gfc-internal-format | |
32060 | msgid "Profile data for function %u is corrupted" | |
32061 | msgstr "La información de análisis de perfil para la función %u está corrupta" | |
32062 | ||
32063 | -#: coverage.c:276 | |
32064 | +#: coverage.c:277 | |
32065 | #, gcc-internal-format | |
32066 | msgid "checksum is (%x,%x) instead of (%x,%x)" | |
32067 | msgstr "la suma de comprobación es (%x,%x) en lugar de (%x,%x)" | |
32068 | ||
32069 | -#: coverage.c:285 | |
32070 | +#: coverage.c:286 | |
32071 | #, gcc-internal-format, gfc-internal-format | |
32072 | msgid "number of counters is %d instead of %d" | |
32073 | msgstr "el número de contadores es %d en lugar de %d" | |
32074 | ||
32075 | -#: coverage.c:291 | |
32076 | +#: coverage.c:292 | |
32077 | #, gcc-internal-format, gfc-internal-format | |
32078 | msgid "cannot merge separate %s counters for function %u" | |
32079 | msgstr "no se pueden mezclar contadores %s separados para la función %u" | |
32080 | ||
32081 | -#: coverage.c:310 | |
32082 | +#: coverage.c:311 | |
32083 | #, gcc-internal-format | |
32084 | msgid "%qs has overflowed" | |
32085 | msgstr "%qs se ha desbordado" | |
32086 | ||
32087 | -#: coverage.c:360 | |
32088 | +#: coverage.c:361 | |
32089 | #, gcc-internal-format | |
32090 | msgid "the control flow of function %qE does not match its profile data (counter %qs)" | |
32091 | msgstr "el flujo de control de la función %qE no coincide con sus datos de análisis de perfil (contador %qs)" | |
32092 | ||
32093 | -#: coverage.c:364 | |
32094 | +#: coverage.c:365 | |
32095 | #, gcc-internal-format | |
32096 | msgid "use -Wno-error=coverage-mismatch to tolerate the mismatch but performance may drop if the function is hot" | |
32097 | msgstr "use -Wno-error=coverage-mismatch para tolerar la diferencia pero el rendmiento puede disminuir si la función está caliente" | |
32098 | ||
32099 | -#: coverage.c:370 | |
32100 | +#: coverage.c:371 | |
32101 | #, gcc-internal-format | |
32102 | msgid "coverage mismatch ignored" | |
32103 | msgstr "se descarta la diferencia de cobertura" | |
32104 | ||
32105 | -#: coverage.c:372 | |
32106 | +#: coverage.c:373 | |
32107 | #, gcc-internal-format | |
32108 | msgid "execution counts estimated" | |
32109 | msgstr "cuentas de ejecución estimadas" | |
32110 | ||
32111 | -#: coverage.c:373 | |
32112 | +#: coverage.c:374 | |
32113 | #, gcc-internal-format | |
32114 | msgid "execution counts assumed to be zero" | |
32115 | msgstr "se asume que las cuentas de ejecución son cero" | |
32116 | ||
32117 | -#: coverage.c:376 | |
32118 | +#: coverage.c:377 | |
32119 | #, gcc-internal-format | |
32120 | msgid "this can result in poorly optimized code" | |
32121 | msgstr "esto puede resultar en código probremente optimizado" | |
32122 | ||
32123 | -#: coverage.c:384 | |
32124 | +#: coverage.c:385 | |
32125 | #, gcc-internal-format | |
32126 | msgid "source locations for function %qE have changed, the profile data may be out of date" | |
32127 | msgstr "cambiaron las ubicaciones de fuente para la función %qE, los datos de análisis de perfil pueden estar desactualizados" | |
32128 | ||
32129 | -#: coverage.c:602 | |
32130 | +#: coverage.c:603 | |
32131 | #, gcc-internal-format | |
32132 | msgid "error writing %qs" | |
32133 | msgstr "error al escribir %qs" | |
32134 | ||
32135 | -#: coverage.c:1098 | |
32136 | +#: coverage.c:1111 | |
32137 | #, gcc-internal-format, gfc-internal-format | |
32138 | msgid "cannot open %s" | |
32139 | msgstr "no se puede abrir %s" | |
32140 | @@ -16713,27 +16863,27 @@ | |
32141 | msgid "multiple EH personalities are supported only with assemblers supporting .cfi_personality directive" | |
32142 | msgstr "sólo se admiten múltiples personalidades EH con ensambladores que admiten la directiva cfi.personality" | |
32143 | ||
32144 | -#: dwarf2out.c:10672 | |
32145 | +#: dwarf2out.c:10704 | |
32146 | #, gcc-internal-format, gfc-internal-format | |
32147 | msgid "non-delegitimized UNSPEC %s (%d) found in variable location" | |
32148 | msgstr "se encontró UNSPEC %s (%d) que no está delegitimado la ubicación de variable" | |
32149 | ||
32150 | -#: emit-rtl.c:2541 | |
32151 | +#: emit-rtl.c:2556 | |
32152 | #, gcc-internal-format | |
32153 | msgid "invalid rtl sharing found in the insn" | |
32154 | msgstr "se encontró una compartición de rtl inválida en la insn" | |
32155 | ||
32156 | -#: emit-rtl.c:2543 | |
32157 | +#: emit-rtl.c:2558 | |
32158 | #, gcc-internal-format | |
32159 | msgid "shared rtx" | |
32160 | msgstr "rtx compartido" | |
32161 | ||
32162 | -#: emit-rtl.c:2545 | |
32163 | +#: emit-rtl.c:2560 | |
32164 | #, gcc-internal-format | |
32165 | msgid "internal consistency failure" | |
32166 | msgstr "falla interna de consistencia" | |
32167 | ||
32168 | -#: emit-rtl.c:3676 | |
32169 | +#: emit-rtl.c:3691 | |
32170 | #, gcc-internal-format | |
32171 | msgid "ICE: emit_insn used where emit_jump_insn needed:\n" | |
32172 | msgstr "ICE: se usa emit_insn donde se necesita emit_jump_insn:\n" | |
32173 | @@ -16828,17 +16978,17 @@ | |
32174 | msgid "when a volatile object spans multiple type-sized locations, the compiler must choose between using a single mis-aligned access to preserve the volatility, or using multiple aligned accesses to avoid runtime faults; this code may fail at runtime if the hardware does not allow this access" | |
32175 | msgstr "cuando un objeto volatile abarca múltiples ubicaciones con tamaño de tipo, el compilador debe escoger entre usar un solo acceso desalineado para preservar la volatilidad, o usar múltiples accesos alineados para evitar faltas en tiempo de ejecución; este código puede fallar en tiempo de ejecución si el hardware no permite este acceso" | |
32176 | ||
32177 | -#: expr.c:7479 | |
32178 | +#: expr.c:7523 | |
32179 | #, gcc-internal-format | |
32180 | msgid "local frame unavailable (naked function?)" | |
32181 | msgstr "el marco local no está disponible (¿Función desnuda?)" | |
32182 | ||
32183 | -#: expr.c:9951 | |
32184 | +#: expr.c:9996 | |
32185 | #, gcc-internal-format | |
32186 | msgid "%Kcall to %qs declared with attribute error: %s" | |
32187 | msgstr "%Kla llamada a %qs se redeclaró con error de atributo: %s" | |
32188 | ||
32189 | -#: expr.c:9958 | |
32190 | +#: expr.c:10003 | |
32191 | #, gcc-internal-format | |
32192 | msgid "%Kcall to %qs declared with attribute warning: %s" | |
32193 | msgstr "%Kla llamada a %qs se redecló con aviso de atributo: %s" | |
32194 | @@ -16853,12 +17003,12 @@ | |
32195 | msgid "the frame size of %wd bytes is larger than %wd bytes" | |
32196 | msgstr "el tamaño de marco de %wd bytes es mayor que %wd bytes" | |
32197 | ||
32198 | -#: final.c:4430 toplev.c:1421 tree-optimize.c:171 | |
32199 | +#: final.c:4430 toplev.c:1421 tree-optimize.c:173 | |
32200 | #, gcc-internal-format | |
32201 | msgid "could not open final insn dump file %qs: %m" | |
32202 | msgstr "no se puede abrir el fichero de volcado de insn final %qs: %m" | |
32203 | ||
32204 | -#: final.c:4483 tree-optimize.c:187 | |
32205 | +#: final.c:4483 tree-optimize.c:189 | |
32206 | #, gcc-internal-format | |
32207 | msgid "could not close final insn dump file %qs: %m" | |
32208 | msgstr "no se puede cerrar el fichero de volcado de insn final %qs: %m" | |
32209 | @@ -16913,7 +17063,7 @@ | |
32210 | msgid "assuming signed overflow does not occur when combining constants around a comparison" | |
32211 | msgstr "se asume que el desbordamiento con signo no sucede cuando se combinan constantes alrededor de una comparación" | |
32212 | ||
32213 | -#: fold-const.c:14205 | |
32214 | +#: fold-const.c:14219 | |
32215 | #, gcc-internal-format | |
32216 | msgid "fold check: original tree changed by fold" | |
32217 | msgstr "fold check: el árbol original cambió por un pliegue" | |
32218 | @@ -16923,7 +17073,7 @@ | |
32219 | msgid "total size of local objects too large" | |
32220 | msgstr "el tamaño total de los objetos locales es demasiado grande" | |
32221 | ||
32222 | -#: function.c:1732 gimplify.c:5155 | |
32223 | +#: function.c:1732 gimplify.c:5156 | |
32224 | #, gcc-internal-format | |
32225 | msgid "impossible constraint in %<asm%>" | |
32226 | msgstr "restricción imposible en %<asm%>" | |
32227 | @@ -16948,132 +17098,132 @@ | |
32228 | msgid "unused parameter %q+D" | |
32229 | msgstr "parámetro %q+D sin uso" | |
32230 | ||
32231 | -#: gcc.c:1726 gcc.c:1746 | |
32232 | +#: gcc.c:1732 gcc.c:1752 | |
32233 | #, gcc-internal-format, gfc-internal-format | |
32234 | msgid "specs %%include syntax malformed after %ld characters" | |
32235 | msgstr "sintaxis de specs %%include mal formada después de %ld caracteres" | |
32236 | ||
32237 | -#: gcc.c:1772 gcc.c:1781 gcc.c:1791 gcc.c:1801 | |
32238 | +#: gcc.c:1778 gcc.c:1787 gcc.c:1797 gcc.c:1807 | |
32239 | #, gcc-internal-format, gfc-internal-format | |
32240 | msgid "specs %%rename syntax malformed after %ld characters" | |
32241 | msgstr "sintaxis de specs %%rename mal formada después de %ld caracteres" | |
32242 | ||
32243 | -#: gcc.c:1811 | |
32244 | +#: gcc.c:1817 | |
32245 | #, gcc-internal-format, gfc-internal-format | |
32246 | msgid "specs %s spec was not found to be renamed" | |
32247 | msgstr "la especificación specs %s no se encontró para ser renombrada" | |
32248 | ||
32249 | -#: gcc.c:1818 | |
32250 | +#: gcc.c:1824 | |
32251 | #, gcc-internal-format | |
32252 | msgid "%s: attempt to rename spec %qs to already defined spec %qs" | |
32253 | msgstr "%s: se intentó renombrar la especificación %qs a la especificación %qs que ya estaba definida" | |
32254 | ||
32255 | -#: gcc.c:1839 | |
32256 | +#: gcc.c:1845 | |
32257 | #, gcc-internal-format, gfc-internal-format | |
32258 | msgid "specs unknown %% command after %ld characters" | |
32259 | msgstr "orden specs %% desconocida después de %ld caracteres" | |
32260 | ||
32261 | -#: gcc.c:1850 gcc.c:1863 | |
32262 | +#: gcc.c:1856 gcc.c:1869 | |
32263 | #, gcc-internal-format, gfc-internal-format | |
32264 | msgid "specs file malformed after %ld characters" | |
32265 | msgstr "fichero specs mal formado después de %ld caracteres" | |
32266 | ||
32267 | -#: gcc.c:1915 | |
32268 | +#: gcc.c:1921 | |
32269 | #, gcc-internal-format | |
32270 | msgid "spec file has no spec for linking" | |
32271 | msgstr "el fichero de especificación no tiene especificaciones para enlazar" | |
32272 | ||
32273 | -#: gcc.c:2444 | |
32274 | +#: gcc.c:2450 | |
32275 | #, gcc-internal-format | |
32276 | msgid "system path %qs is not absolute" | |
32277 | msgstr "la ruta del sistema %qs no es absoluta" | |
32278 | ||
32279 | -#: gcc.c:2529 | |
32280 | +#: gcc.c:2535 | |
32281 | #, gcc-internal-format | |
32282 | msgid "-pipe not supported" | |
32283 | msgstr "no se admite -pipe" | |
32284 | ||
32285 | -#: gcc.c:2691 | |
32286 | +#: gcc.c:2697 | |
32287 | #, gcc-internal-format | |
32288 | msgid "failed to get exit status: %m" | |
32289 | msgstr "no se puede obtener el estado de salida: %m" | |
32290 | ||
32291 | -#: gcc.c:2697 | |
32292 | +#: gcc.c:2703 | |
32293 | #, gcc-internal-format | |
32294 | msgid "failed to get process times: %m" | |
32295 | msgstr "no se pueden obtener los tiempos de proceso: %m" | |
32296 | ||
32297 | -#: gcc.c:2723 | |
32298 | +#: gcc.c:2729 | |
32299 | #, gcc-internal-format, gfc-internal-format | |
32300 | msgid "%s (program %s)" | |
32301 | msgstr "%s (programa %s)" | |
32302 | ||
32303 | -#: gcc.c:3142 opts-common.c:986 opts-common.c:1058 | |
32304 | +#: gcc.c:3148 opts-common.c:986 opts-common.c:1058 | |
32305 | #, gcc-internal-format | |
32306 | msgid "unrecognized command line option %qs" | |
32307 | msgstr "no se reconoce la opción de línea de órdenes %qs" | |
32308 | ||
32309 | -#: gcc.c:3395 | |
32310 | +#: gcc.c:3401 | |
32311 | #, gcc-internal-format | |
32312 | msgid "%qs is an unknown -save-temps option" | |
32313 | msgstr "%qs es una opción desconocida para -save-temps" | |
32314 | ||
32315 | -#: gcc.c:3856 | |
32316 | +#: gcc.c:3862 | |
32317 | #, gcc-internal-format | |
32318 | msgid "-pipe ignored because -save-temps specified" | |
32319 | msgstr "se descarta -pipe porque se especificó -save-temps" | |
32320 | ||
32321 | -#: gcc.c:3942 | |
32322 | +#: gcc.c:3948 | |
32323 | #, gcc-internal-format | |
32324 | msgid "%<-x %s%> after last input file has no effect" | |
32325 | msgstr "%<-x %s%> después del último fichero de entrada no tiene efecto" | |
32326 | ||
32327 | -#: gcc.c:4109 | |
32328 | +#: gcc.c:4115 | |
32329 | #, gcc-internal-format | |
32330 | msgid "unable to locate default linker script %qs in the library search paths" | |
32331 | msgstr "no se puede localizar el guión de enlazador por defecto %qs en las rutas de búsqueda de bibliotecas" | |
32332 | ||
32333 | -#: gcc.c:4312 | |
32334 | +#: gcc.c:4318 | |
32335 | #, gcc-internal-format | |
32336 | msgid "switch %qs does not start with %<-%>" | |
32337 | msgstr "la opción %qs no inicia con %<-%>" | |
32338 | ||
32339 | -#: gcc.c:4315 | |
32340 | +#: gcc.c:4321 | |
32341 | #, gcc-internal-format | |
32342 | msgid "spec-generated switch is just %<-%>" | |
32343 | msgstr "la opción generada de especificación sólo es %<-%>" | |
32344 | ||
32345 | -#: gcc.c:4406 | |
32346 | +#: gcc.c:4412 | |
32347 | #, gcc-internal-format, gfc-internal-format | |
32348 | msgid "could not open temporary response file %s" | |
32349 | msgstr "no se puede abrir el fichero de respuesta temporal %s" | |
32350 | ||
32351 | -#: gcc.c:4412 | |
32352 | +#: gcc.c:4418 | |
32353 | #, gcc-internal-format, gfc-internal-format | |
32354 | msgid "could not write to temporary response file %s" | |
32355 | msgstr "no se puede escribir en el fichero de respuesta temporal %s" | |
32356 | ||
32357 | -#: gcc.c:4418 | |
32358 | +#: gcc.c:4424 | |
32359 | #, gcc-internal-format, gfc-internal-format | |
32360 | msgid "could not close temporary response file %s" | |
32361 | msgstr "no se puede cerrar el fichero de respuesta temporal %s" | |
32362 | ||
32363 | -#: gcc.c:4541 | |
32364 | +#: gcc.c:4547 | |
32365 | #, gcc-internal-format | |
32366 | msgid "spec %qs invalid" | |
32367 | msgstr "la especificación %qs es inválida" | |
32368 | ||
32369 | -#: gcc.c:4690 | |
32370 | +#: gcc.c:4696 | |
32371 | #, gcc-internal-format | |
32372 | msgid "spec %qs has invalid %<%%0%c%>" | |
32373 | msgstr "la especificación %qs tiene un %<%%0%c%> inválido" | |
32374 | ||
32375 | -#: gcc.c:5000 | |
32376 | +#: gcc.c:5006 | |
32377 | #, gcc-internal-format | |
32378 | msgid "spec %qs has invalid %<%%W%c%>" | |
32379 | msgstr "la especificación %qs tiene un %<%%W%c%> inválido" | |
32380 | ||
32381 | -#: gcc.c:5022 | |
32382 | +#: gcc.c:5028 | |
32383 | #, gcc-internal-format | |
32384 | msgid "spec %qs has invalid %<%%x%c%>" | |
32385 | msgstr "la especificación %qs tiene un %<%%x%c%> inválido" | |
32386 | @@ -17081,210 +17231,210 @@ | |
32387 | #. Catch the case where a spec string contains something like | |
32388 | #. '%{foo:%*}'. i.e. there is no * in the pattern on the left | |
32389 | #. hand side of the :. | |
32390 | -#: gcc.c:5210 | |
32391 | +#: gcc.c:5216 | |
32392 | #, gcc-internal-format | |
32393 | msgid "spec failure: %<%%*%> has not been initialized by pattern match" | |
32394 | msgstr "falla de especificación: %<%%*%> no ha sido inicializado por coincidencia de patrón" | |
32395 | ||
32396 | -#: gcc.c:5253 | |
32397 | +#: gcc.c:5259 | |
32398 | #, gcc-internal-format | |
32399 | msgid "spec failure: unrecognized spec option %qc" | |
32400 | msgstr "falla de especificación: no se reconoce la opción de especificación %qc" | |
32401 | ||
32402 | -#: gcc.c:5313 | |
32403 | +#: gcc.c:5319 | |
32404 | #, gcc-internal-format | |
32405 | msgid "unknown spec function %qs" | |
32406 | msgstr "función de especificación %qs desconocida" | |
32407 | ||
32408 | -#: gcc.c:5331 | |
32409 | +#: gcc.c:5337 | |
32410 | #, gcc-internal-format | |
32411 | msgid "error in args to spec function %qs" | |
32412 | msgstr "error en los argumentos para la función de especificación %qs" | |
32413 | ||
32414 | -#: gcc.c:5379 | |
32415 | +#: gcc.c:5385 | |
32416 | #, gcc-internal-format | |
32417 | msgid "malformed spec function name" | |
32418 | msgstr "nombre de la función de especificación malformado" | |
32419 | ||
32420 | #. ) | |
32421 | -#: gcc.c:5382 | |
32422 | +#: gcc.c:5388 | |
32423 | #, gcc-internal-format | |
32424 | msgid "no arguments for spec function" | |
32425 | msgstr "no hay argumentos para la función de especificación" | |
32426 | ||
32427 | -#: gcc.c:5401 | |
32428 | +#: gcc.c:5407 | |
32429 | #, gcc-internal-format | |
32430 | msgid "malformed spec function arguments" | |
32431 | msgstr "argumentos de la función de especificación malformados" | |
32432 | ||
32433 | -#: gcc.c:5647 | |
32434 | +#: gcc.c:5668 | |
32435 | #, gcc-internal-format | |
32436 | msgid "braced spec %qs is invalid at %qc" | |
32437 | msgstr "la especificación entre llaves %qs es inválida en %qc" | |
32438 | ||
32439 | -#: gcc.c:5735 | |
32440 | +#: gcc.c:5756 | |
32441 | #, gcc-internal-format | |
32442 | msgid "braced spec body %qs is invalid" | |
32443 | msgstr "el cuerpo de la especificación entre llaves %qs es inválido" | |
32444 | ||
32445 | -#: gcc.c:5984 | |
32446 | +#: gcc.c:6005 | |
32447 | #, gcc-internal-format, gfc-internal-format | |
32448 | msgid "%s: could not determine length of compare-debug file %s" | |
32449 | msgstr "%s: no se puede determinar la longitud del fichero para comparar depuración %s" | |
32450 | ||
32451 | -#: gcc.c:5995 | |
32452 | +#: gcc.c:6016 | |
32453 | #, gcc-internal-format, gfc-internal-format | |
32454 | msgid "%s: -fcompare-debug failure (length)" | |
32455 | msgstr "%s: falló -fcompare-debug (longitud)" | |
32456 | ||
32457 | -#: gcc.c:6005 gcc.c:6046 | |
32458 | +#: gcc.c:6026 gcc.c:6067 | |
32459 | #, gcc-internal-format, gfc-internal-format | |
32460 | msgid "%s: could not open compare-debug file %s" | |
32461 | msgstr "%s: no se puede abrir el fichero para comparar depuración %s" | |
32462 | ||
32463 | -#: gcc.c:6025 gcc.c:6062 | |
32464 | +#: gcc.c:6046 gcc.c:6083 | |
32465 | #, gcc-internal-format, gfc-internal-format | |
32466 | msgid "%s: -fcompare-debug failure" | |
32467 | msgstr "%s: falló -fcompare-debug" | |
32468 | ||
32469 | -#: gcc.c:6140 | |
32470 | +#: gcc.c:6161 | |
32471 | #, gcc-internal-format | |
32472 | msgid "atexit failed" | |
32473 | msgstr "falló atexit" | |
32474 | ||
32475 | -#: gcc.c:6281 | |
32476 | +#: gcc.c:6302 | |
32477 | #, gcc-internal-format | |
32478 | msgid "spec failure: more than one arg to SYSROOT_SUFFIX_SPEC" | |
32479 | msgstr "falla de especificación: más de un argumento para SYSROOT_SUFFIX_SPEC" | |
32480 | ||
32481 | -#: gcc.c:6304 | |
32482 | +#: gcc.c:6325 | |
32483 | #, gcc-internal-format | |
32484 | msgid "spec failure: more than one arg to SYSROOT_HEADERS_SUFFIX_SPEC" | |
32485 | msgstr "falla de especificación: más de un argumento para SYSROOT_HEADERS_SUFFIX_SPEC" | |
32486 | ||
32487 | -#: gcc.c:6466 | |
32488 | +#: gcc.c:6491 | |
32489 | #, gcc-internal-format | |
32490 | msgid "unrecognized option %<-%s%>" | |
32491 | msgstr "no se reconoce la opción %<-%s%>" | |
32492 | ||
32493 | #. The error status indicates that only one set of fixed | |
32494 | #. headers should be built. | |
32495 | -#: gcc.c:6543 | |
32496 | +#: gcc.c:6568 | |
32497 | #, gcc-internal-format | |
32498 | msgid "not configured with sysroot headers suffix" | |
32499 | msgstr "no se configuró con el sufijo de encabezados sysroot" | |
32500 | ||
32501 | -#: gcc.c:6626 | |
32502 | +#: gcc.c:6651 | |
32503 | #, gcc-internal-format | |
32504 | msgid "no input files" | |
32505 | msgstr "no hay ficheros de entrada" | |
32506 | ||
32507 | -#: gcc.c:6675 | |
32508 | +#: gcc.c:6700 | |
32509 | #, gcc-internal-format | |
32510 | msgid "cannot specify -o with -c, -S or -E with multiple files" | |
32511 | msgstr "no se puede especificar -o con -c, -S o -E y con múltiples ficheros" | |
32512 | ||
32513 | -#: gcc.c:6705 | |
32514 | +#: gcc.c:6730 | |
32515 | #, gcc-internal-format, gfc-internal-format | |
32516 | msgid "%s: %s compiler not installed on this system" | |
32517 | msgstr "%s: el compilador %s no está instalado en este sistema" | |
32518 | ||
32519 | -#: gcc.c:6727 | |
32520 | +#: gcc.c:6752 | |
32521 | #, gcc-internal-format | |
32522 | msgid "recompiling with -fcompare-debug" | |
32523 | msgstr "se recompila con -fcompare-debug" | |
32524 | ||
32525 | -#: gcc.c:6743 | |
32526 | +#: gcc.c:6768 | |
32527 | #, gcc-internal-format | |
32528 | msgid "during -fcompare-debug recompilation" | |
32529 | msgstr "durante la recompilación -fcompare-debug" | |
32530 | ||
32531 | -#: gcc.c:6752 | |
32532 | +#: gcc.c:6777 | |
32533 | #, gcc-internal-format | |
32534 | msgid "comparing final insns dumps" | |
32535 | msgstr "se comparan volcados finales de insns" | |
32536 | ||
32537 | -#: gcc.c:6853 | |
32538 | +#: gcc.c:6883 | |
32539 | #, gcc-internal-format, gfc-internal-format | |
32540 | msgid "-fuse-linker-plugin, but %s not found" | |
32541 | msgstr "-fuse-linker-plugin, pero no se encontró %s" | |
32542 | ||
32543 | -#: gcc.c:6883 | |
32544 | +#: gcc.c:6915 | |
32545 | #, gcc-internal-format, gfc-internal-format | |
32546 | msgid "%s: linker input file unused because linking not done" | |
32547 | msgstr "%s: no se usó el fichero de entrada del enlazador porque no se hizo enlace" | |
32548 | ||
32549 | -#: gcc.c:6924 | |
32550 | +#: gcc.c:6956 | |
32551 | #, gcc-internal-format, gfc-internal-format | |
32552 | msgid "language %s not recognized" | |
32553 | msgstr "no se reconoce el lenguaje %s" | |
32554 | ||
32555 | -#: gcc.c:7150 | |
32556 | +#: gcc.c:7182 | |
32557 | #, gcc-internal-format | |
32558 | msgid "multilib spec %qs is invalid" | |
32559 | msgstr "la especificación multilib %qs es inválida" | |
32560 | ||
32561 | -#: gcc.c:7342 | |
32562 | +#: gcc.c:7374 | |
32563 | #, gcc-internal-format | |
32564 | msgid "multilib exclusions %qs is invalid" | |
32565 | msgstr "las exclusiones multilib %qs son inválidas" | |
32566 | ||
32567 | -#: gcc.c:7400 gcc.c:7541 | |
32568 | +#: gcc.c:7432 gcc.c:7573 | |
32569 | #, gcc-internal-format | |
32570 | msgid "multilib select %qs is invalid" | |
32571 | msgstr "la selección multilib %qs es inválida" | |
32572 | ||
32573 | -#: gcc.c:7579 | |
32574 | +#: gcc.c:7611 | |
32575 | #, gcc-internal-format | |
32576 | msgid "multilib exclusion %qs is invalid" | |
32577 | msgstr "la exclusión multilib %qs es inválida" | |
32578 | ||
32579 | -#: gcc.c:7785 | |
32580 | +#: gcc.c:7817 | |
32581 | #, gcc-internal-format | |
32582 | msgid "environment variable %qs not defined" | |
32583 | msgstr "no se definió la variable de ambiente %qs" | |
32584 | ||
32585 | -#: gcc.c:7897 gcc.c:7902 | |
32586 | +#: gcc.c:7929 gcc.c:7934 | |
32587 | #, gcc-internal-format | |
32588 | msgid "invalid version number %qs" | |
32589 | msgstr "número de versión %qs inválido" | |
32590 | ||
32591 | -#: gcc.c:7945 | |
32592 | +#: gcc.c:7977 | |
32593 | #, gcc-internal-format, gfc-internal-format | |
32594 | msgid "too few arguments to %%:version-compare" | |
32595 | msgstr "faltan argumentos para %%:version-compare" | |
32596 | ||
32597 | -#: gcc.c:7951 | |
32598 | +#: gcc.c:7983 | |
32599 | #, gcc-internal-format, gfc-internal-format | |
32600 | msgid "too many arguments to %%:version-compare" | |
32601 | msgstr "demasiados argumentos para %%:version-compare" | |
32602 | ||
32603 | -#: gcc.c:7992 | |
32604 | +#: gcc.c:8024 | |
32605 | #, gcc-internal-format | |
32606 | msgid "unknown operator %qs in %%:version-compare" | |
32607 | msgstr "operador %qs desconocido en %%:version-compare" | |
32608 | ||
32609 | -#: gcc.c:8115 | |
32610 | +#: gcc.c:8147 | |
32611 | #, gcc-internal-format, gfc-internal-format | |
32612 | msgid "too many arguments to %%:compare-debug-dump-opt" | |
32613 | msgstr "demasiados argumentos para %%:compare-debug-dump-opt" | |
32614 | ||
32615 | -#: gcc.c:8183 | |
32616 | +#: gcc.c:8215 | |
32617 | #, gcc-internal-format, gfc-internal-format | |
32618 | msgid "too many arguments to %%:compare-debug-self-opt" | |
32619 | msgstr "demasiados argumentos para %%:compare-debug-self-opt" | |
32620 | ||
32621 | -#: gcc.c:8218 | |
32622 | +#: gcc.c:8250 | |
32623 | #, gcc-internal-format, gfc-internal-format | |
32624 | msgid "too few arguments to %%:compare-debug-auxbase-opt" | |
32625 | msgstr "faltan argumentos para %%:compare-debug-auxbase-opt" | |
32626 | ||
32627 | -#: gcc.c:8221 | |
32628 | +#: gcc.c:8253 | |
32629 | #, gcc-internal-format, gfc-internal-format | |
32630 | msgid "too many arguments to %%:compare-debug-auxbase-opt" | |
32631 | msgstr "demasiados argumentos para %%:compare-debug-auxbase-opt" | |
32632 | ||
32633 | -#: gcc.c:8228 | |
32634 | +#: gcc.c:8260 | |
32635 | #, gcc-internal-format, gfc-internal-format | |
32636 | msgid "argument to %%:compare-debug-auxbase-opt does not end in .gk" | |
32637 | msgstr "el argumento para %%:compare-debug-auxbase-opt no termina en .gk" | |
32638 | @@ -17367,67 +17517,67 @@ | |
32639 | msgid "gimple check: expected %s(%s), have %s(%s) in %s, at %s:%d" | |
32640 | msgstr "revisión gimple: se esperaba %s(%s), se tiene %s(%s) en %s, en %s:%d" | |
32641 | ||
32642 | -#: gimplify.c:2510 | |
32643 | +#: gimplify.c:2511 | |
32644 | #, gcc-internal-format | |
32645 | msgid "using result of function returning %<void%>" | |
32646 | msgstr "se usa el resultado de una función que devuelve %<void%>" | |
32647 | ||
32648 | -#: gimplify.c:5040 | |
32649 | +#: gimplify.c:5041 | |
32650 | #, gcc-internal-format, gfc-internal-format | |
32651 | msgid "invalid lvalue in asm output %d" | |
32652 | msgstr "l-valor inválido en la salida asm %d" | |
32653 | ||
32654 | -#: gimplify.c:5156 | |
32655 | +#: gimplify.c:5157 | |
32656 | #, gcc-internal-format, gfc-internal-format | |
32657 | msgid "non-memory input %d must stay in memory" | |
32658 | msgstr "la entrada que no es de memoria %d debe permanecer en memoria" | |
32659 | ||
32660 | -#: gimplify.c:5178 | |
32661 | +#: gimplify.c:5179 | |
32662 | #, gcc-internal-format, gfc-internal-format | |
32663 | msgid "memory input %d is not directly addressable" | |
32664 | msgstr "la entrada de memoria %d no es directamente direccionable" | |
32665 | ||
32666 | -#: gimplify.c:5673 | |
32667 | +#: gimplify.c:5674 | |
32668 | #, gcc-internal-format | |
32669 | msgid "threadprivate variable %qE used in untied task" | |
32670 | msgstr "se usó la variable threadprivate %qE en una tarea sin atar" | |
32671 | ||
32672 | -#: gimplify.c:5675 gimplify.c:5737 | |
32673 | +#: gimplify.c:5676 gimplify.c:5738 | |
32674 | #, gcc-internal-format | |
32675 | msgid "enclosing task" | |
32676 | msgstr "tarea contenedora" | |
32677 | ||
32678 | -#: gimplify.c:5734 | |
32679 | +#: gimplify.c:5735 | |
32680 | #, gcc-internal-format | |
32681 | msgid "%qE not specified in enclosing parallel" | |
32682 | msgstr "no se especificó %qE en el paralelo que lo contiene" | |
32683 | ||
32684 | -#: gimplify.c:5739 | |
32685 | +#: gimplify.c:5740 | |
32686 | #, gcc-internal-format | |
32687 | msgid "enclosing parallel" | |
32688 | msgstr "paralelo contenedor" | |
32689 | ||
32690 | -#: gimplify.c:5844 | |
32691 | +#: gimplify.c:5845 | |
32692 | #, gcc-internal-format | |
32693 | msgid "iteration variable %qE should be private" | |
32694 | msgstr "la variable de iteración %qE debe ser private" | |
32695 | ||
32696 | -#: gimplify.c:5858 | |
32697 | +#: gimplify.c:5859 | |
32698 | #, gcc-internal-format | |
32699 | msgid "iteration variable %qE should not be firstprivate" | |
32700 | msgstr "la variable de iteración %qE no debe ser firstprivate" | |
32701 | ||
32702 | -#: gimplify.c:5861 | |
32703 | +#: gimplify.c:5862 | |
32704 | #, gcc-internal-format | |
32705 | msgid "iteration variable %qE should not be reduction" | |
32706 | msgstr "la variable de iteración %qE no debe ser reduction" | |
32707 | ||
32708 | -#: gimplify.c:6024 | |
32709 | +#: gimplify.c:6025 | |
32710 | #, gcc-internal-format | |
32711 | msgid "%s variable %qE is private in outer context" | |
32712 | msgstr "la variable %s %qE es private en el contexto externo" | |
32713 | ||
32714 | -#: gimplify.c:7778 | |
32715 | +#: gimplify.c:7787 | |
32716 | #, gcc-internal-format | |
32717 | msgid "gimplification failed" | |
32718 | msgstr "falló la gimplificación" | |
32719 | @@ -17661,18 +17811,18 @@ | |
32720 | msgid "critical region may not be nested inside a critical region with the same name" | |
32721 | msgstr "la región crítica puede no estar bien anidada dentro de una región crítica con el mismo nombre" | |
32722 | ||
32723 | -#: omp-low.c:7011 cp/decl.c:2880 cp/parser.c:9853 cp/parser.c:9873 | |
32724 | +#: omp-low.c:7012 cp/decl.c:2885 cp/parser.c:9853 cp/parser.c:9873 | |
32725 | #, gcc-internal-format | |
32726 | msgid "invalid exit from OpenMP structured block" | |
32727 | msgstr "salida inválida de un bloque estructurado OpenMP" | |
32728 | ||
32729 | -#: omp-low.c:7013 omp-low.c:7018 | |
32730 | +#: omp-low.c:7014 omp-low.c:7019 | |
32731 | #, gcc-internal-format | |
32732 | msgid "invalid entry to OpenMP structured block" | |
32733 | msgstr "entrada inválida a un bloque estructurado OpenMP" | |
32734 | ||
32735 | #. Otherwise, be vague and lazy, but efficient. | |
32736 | -#: omp-low.c:7021 | |
32737 | +#: omp-low.c:7022 | |
32738 | #, gcc-internal-format | |
32739 | msgid "invalid branch to/from an OpenMP structured block" | |
32740 | msgstr "ramificación inválida desde/para un bloque estructurado OpenMP" | |
32741 | @@ -17768,12 +17918,12 @@ | |
32742 | msgid "section anchors must be disabled when toplevel reorder is disabled" | |
32743 | msgstr "las anclas de seccions se deben desactivar cando el reordenamiento de nivel principal se desactiva" | |
32744 | ||
32745 | -#: opts.c:721 config/darwin.c:3002 config/sh/sh.c:804 | |
32746 | +#: opts.c:721 config/darwin.c:3002 config/sh/sh.c:809 | |
32747 | #, gcc-internal-format | |
32748 | msgid "-freorder-blocks-and-partition does not work with exceptions on this architecture" | |
32749 | msgstr "-freorder-blocks-and-partition no funciona con excepciones en esta arquitectura" | |
32750 | ||
32751 | -#: opts.c:736 config/sh/sh.c:812 | |
32752 | +#: opts.c:736 config/sh/sh.c:817 | |
32753 | #, gcc-internal-format | |
32754 | msgid "-freorder-blocks-and-partition does not support unwind info on this architecture" | |
32755 | msgstr "-freorder-blocks-and-partition no admite información de desenredo en esta arquitectura" | |
32756 | @@ -17911,7 +18061,7 @@ | |
32757 | ||
32758 | #: passes.c:712 | |
32759 | #, gcc-internal-format, gfc-internal-format | |
32760 | -msgid "unknown pass %s specified in -fdisble" | |
32761 | +msgid "unknown pass %s specified in -fdisable" | |
32762 | msgstr "se especificó el paso desconocido %s en -fdisable" | |
32763 | ||
32764 | #: passes.c:739 passes.c:829 | |
32765 | @@ -18127,49 +18277,49 @@ | |
32766 | msgid "validate_value_data: [%u] Non-empty reg in chain (%s %u %i)" | |
32767 | msgstr "validate_value_data: [%u] Registro no vacío en la cadena (%s %u %i)" | |
32768 | ||
32769 | -#: reginfo.c:820 | |
32770 | +#: reginfo.c:822 | |
32771 | #, gcc-internal-format | |
32772 | msgid "can%'t use %qs as a call-saved register" | |
32773 | msgstr "no se puede usar %qs como un registro guardado de llamada" | |
32774 | ||
32775 | -#: reginfo.c:824 | |
32776 | +#: reginfo.c:826 | |
32777 | #, gcc-internal-format | |
32778 | msgid "can%'t use %qs as a call-used register" | |
32779 | msgstr "no se puede usar %qs como un registro usado de llamada" | |
32780 | ||
32781 | -#: reginfo.c:836 | |
32782 | +#: reginfo.c:838 | |
32783 | #, gcc-internal-format | |
32784 | msgid "can%'t use %qs as a fixed register" | |
32785 | msgstr "no se puede usar %qs como un registro fijo" | |
32786 | ||
32787 | -#: reginfo.c:862 config/ia64/ia64.c:5749 config/ia64/ia64.c:5756 | |
32788 | -#: config/pa/pa.c:424 config/pa/pa.c:431 config/sh/sh.c:8744 | |
32789 | -#: config/sh/sh.c:8751 config/spu/spu.c:5198 config/spu/spu.c:5205 | |
32790 | +#: reginfo.c:864 config/ia64/ia64.c:5749 config/ia64/ia64.c:5756 | |
32791 | +#: config/pa/pa.c:424 config/pa/pa.c:431 config/sh/sh.c:8749 | |
32792 | +#: config/sh/sh.c:8756 config/spu/spu.c:5198 config/spu/spu.c:5205 | |
32793 | #, gcc-internal-format, gfc-internal-format | |
32794 | msgid "unknown register name: %s" | |
32795 | msgstr "nombre de registro desconocido: %s" | |
32796 | ||
32797 | -#: reginfo.c:875 | |
32798 | +#: reginfo.c:877 | |
32799 | #, gcc-internal-format | |
32800 | msgid "stack register used for global register variable" | |
32801 | msgstr "se usó un nombre de registro para una variable de registro global" | |
32802 | ||
32803 | -#: reginfo.c:881 | |
32804 | +#: reginfo.c:883 | |
32805 | #, gcc-internal-format | |
32806 | msgid "global register variable follows a function definition" | |
32807 | msgstr "la variable de registro global después de una definición de función" | |
32808 | ||
32809 | -#: reginfo.c:886 | |
32810 | +#: reginfo.c:888 | |
32811 | #, gcc-internal-format | |
32812 | msgid "register of %qD used for multiple global register variables" | |
32813 | msgstr "se usó el registro de %qD para múltiples variables de registro globales" | |
32814 | ||
32815 | -#: reginfo.c:889 | |
32816 | +#: reginfo.c:891 | |
32817 | #, gcc-internal-format | |
32818 | msgid "conflicts with %qD" | |
32819 | msgstr "genera un conflicto con %qD" | |
32820 | ||
32821 | -#: reginfo.c:894 | |
32822 | +#: reginfo.c:896 | |
32823 | #, gcc-internal-format | |
32824 | msgid "call-clobbered register used for global register variable" | |
32825 | msgstr "se usó un registro de llamada alterada para una variable de registro global" | |
32826 | @@ -18414,7 +18564,7 @@ | |
32827 | msgid "packed attribute is unnecessary for %q+D" | |
32828 | msgstr "el atributo packed es innecesario para %q+D" | |
32829 | ||
32830 | -#: stor-layout.c:1153 | |
32831 | +#: stor-layout.c:1152 | |
32832 | #, gcc-internal-format | |
32833 | msgid "padding struct to align %q+D" | |
32834 | msgstr "estructura de relleno para alinear %q+D" | |
32835 | @@ -18459,47 +18609,47 @@ | |
32836 | msgid "__builtin_saveregs not supported by this target" | |
32837 | msgstr "no se admite __builtin_saveregs en este objetivo" | |
32838 | ||
32839 | -#: targhooks.c:806 | |
32840 | +#: targhooks.c:807 | |
32841 | #, gcc-internal-format | |
32842 | msgid "nested functions not supported on this target" | |
32843 | msgstr "no se admiten funciones anidadas en este objetivo" | |
32844 | ||
32845 | -#: targhooks.c:819 | |
32846 | +#: targhooks.c:820 | |
32847 | #, gcc-internal-format | |
32848 | msgid "nested function trampolines not supported on this target" | |
32849 | msgstr "no se admiten trampolines de funciones anidadas para este objetivo" | |
32850 | ||
32851 | -#: targhooks.c:1153 | |
32852 | +#: targhooks.c:1154 | |
32853 | #, gcc-internal-format | |
32854 | msgid "target attribute is not supported on this machine" | |
32855 | msgstr "el atributo target no se admite en esta plataforma" | |
32856 | ||
32857 | -#: targhooks.c:1163 | |
32858 | +#: targhooks.c:1164 | |
32859 | #, gcc-internal-format | |
32860 | msgid "#pragma GCC target is not supported for this machine" | |
32861 | msgstr "No se admite #pragma GCC target en este objetivo" | |
32862 | ||
32863 | -#: tlink.c:481 | |
32864 | +#: tlink.c:492 | |
32865 | #, gcc-internal-format | |
32866 | msgid "removing .rpo file: %m" | |
32867 | msgstr "se elimina el fichero .rpo: %m" | |
32868 | ||
32869 | -#: tlink.c:483 | |
32870 | +#: tlink.c:494 | |
32871 | #, gcc-internal-format | |
32872 | msgid "renaming .rpo file: %m" | |
32873 | msgstr "se renombra el fichero .rpo: %m" | |
32874 | ||
32875 | -#: tlink.c:487 | |
32876 | +#: tlink.c:498 | |
32877 | #, gcc-internal-format, gfc-internal-format | |
32878 | msgid "repository file '%s' does not contain command-line arguments" | |
32879 | msgstr "el fichero de repositorio '%s' no contiene argumentos de línea de órdenes" | |
32880 | ||
32881 | -#: tlink.c:735 | |
32882 | +#: tlink.c:624 | |
32883 | #, gcc-internal-format, gfc-internal-format | |
32884 | msgid "'%s' was assigned to '%s', but was not defined during recompilation, or vice versa" | |
32885 | msgstr "'%s' se asignó a '%s', pero no se definió durante la recompilación, o viceversa" | |
32886 | ||
32887 | -#: tlink.c:805 | |
32888 | +#: tlink.c:859 | |
32889 | #, gcc-internal-format, gfc-internal-format | |
32890 | msgid "ld returned %d exit status" | |
32891 | msgstr "ld devolvió el estado de salida %d" | |
32892 | @@ -18664,7 +18814,7 @@ | |
32893 | msgid "%<transaction_may_cancel_outer%> function call not within outer transaction or %<transaction_may_cancel_outer%>" | |
32894 | msgstr "la llamada a la función %<transaction_may_cancel_outer%> no está en una transacción más externa o %<transaction_may_cancel_outer%>" | |
32895 | ||
32896 | -#: trans-mem.c:664 trans-mem.c:4137 | |
32897 | +#: trans-mem.c:664 trans-mem.c:4191 | |
32898 | #, gcc-internal-format | |
32899 | msgid "unsafe function call %qD within atomic transaction" | |
32900 | msgstr "llamada a función %qD insegura dentro de una transacción atómica" | |
32901 | @@ -18679,7 +18829,7 @@ | |
32902 | msgid "unsafe indirect function call within atomic transaction" | |
32903 | msgstr "llamada a función indirecta insegura dentro de una transacción atómica" | |
32904 | ||
32905 | -#: trans-mem.c:682 trans-mem.c:4070 | |
32906 | +#: trans-mem.c:682 trans-mem.c:4124 | |
32907 | #, gcc-internal-format | |
32908 | msgid "unsafe function call %qD within %<transaction_safe%> function" | |
32909 | msgstr "llamada a función %qD insegura dentro de la función %<transaction_safe%>" | |
32910 | @@ -18694,7 +18844,7 @@ | |
32911 | msgid "unsafe indirect function call within %<transaction_safe%> function" | |
32912 | msgstr "llamada a función indirecta insegura dentro de la función %<transaction_safe%>" | |
32913 | ||
32914 | -#: trans-mem.c:707 trans-mem.c:4109 | |
32915 | +#: trans-mem.c:707 trans-mem.c:4163 | |
32916 | #, gcc-internal-format | |
32917 | msgid "asm not allowed in atomic transaction" | |
32918 | msgstr "no se permite asm en una transacción atómica" | |
32919 | @@ -18729,6 +18879,11 @@ | |
32920 | msgid "outer transaction in %<transaction_safe%> function" | |
32921 | msgstr "transacción más externa en la función %<transaction_safe%>" | |
32922 | ||
32923 | +#: trans-mem.c:3789 | |
32924 | +#, gcc-internal-format | |
32925 | +msgid "%Kasm not allowed in %<transaction_safe%> function" | |
32926 | +msgstr "%Kno se permite asm en una función %<transaction_safe%>" | |
32927 | + | |
32928 | #: tree-cfg.c:2616 | |
32929 | #, gcc-internal-format | |
32930 | msgid "constant not recomputed when ADDR_EXPR changed" | |
32931 | @@ -18749,7 +18904,7 @@ | |
32932 | msgid "SSA name in freelist but still referenced" | |
32933 | msgstr "hay un nombre SSA en la lista libre, pero aún está referenciado" | |
32934 | ||
32935 | -#: tree-cfg.c:2667 tree-cfg.c:3953 | |
32936 | +#: tree-cfg.c:2667 tree-cfg.c:3950 | |
32937 | #, gcc-internal-format | |
32938 | msgid "INDIRECT_REF in gimple IL" | |
32939 | msgstr "INDIRECT_REF en gimple IL" | |
32940 | @@ -18989,347 +19144,347 @@ | |
32941 | msgid "invalid operand in unary operation" | |
32942 | msgstr "operando inválido en la operación unaria" | |
32943 | ||
32944 | -#: tree-cfg.c:3369 | |
32945 | +#: tree-cfg.c:3366 | |
32946 | #, gcc-internal-format | |
32947 | msgid "invalid types in nop conversion" | |
32948 | msgstr "tipos inválidos en la conversión nop" | |
32949 | ||
32950 | -#: tree-cfg.c:3384 | |
32951 | +#: tree-cfg.c:3381 | |
32952 | #, gcc-internal-format | |
32953 | msgid "invalid types in address space conversion" | |
32954 | msgstr "tipos inválidos en la conversión nop" | |
32955 | ||
32956 | -#: tree-cfg.c:3398 | |
32957 | +#: tree-cfg.c:3395 | |
32958 | #, gcc-internal-format | |
32959 | msgid "invalid types in fixed-point conversion" | |
32960 | msgstr "tipos inválidos en la conversión de coma fija" | |
32961 | ||
32962 | -#: tree-cfg.c:3413 | |
32963 | +#: tree-cfg.c:3410 | |
32964 | #, gcc-internal-format | |
32965 | msgid "invalid types in conversion to floating point" | |
32966 | msgstr "tipos inválidos en la conversión a coma flotante" | |
32967 | ||
32968 | -#: tree-cfg.c:3428 | |
32969 | +#: tree-cfg.c:3425 | |
32970 | #, gcc-internal-format | |
32971 | msgid "invalid types in conversion to integer" | |
32972 | msgstr "tipos inválidos en la conversión a entero" | |
32973 | ||
32974 | -#: tree-cfg.c:3462 | |
32975 | +#: tree-cfg.c:3459 | |
32976 | #, gcc-internal-format | |
32977 | msgid "non-trivial conversion in unary operation" | |
32978 | msgstr "conversión que no es trivial en la operación unaria" | |
32979 | ||
32980 | -#: tree-cfg.c:3487 | |
32981 | +#: tree-cfg.c:3484 | |
32982 | #, gcc-internal-format | |
32983 | msgid "non-register as LHS of binary operation" | |
32984 | msgstr "el LHS de una operación binaria no es un registro" | |
32985 | ||
32986 | -#: tree-cfg.c:3494 | |
32987 | +#: tree-cfg.c:3491 | |
32988 | #, gcc-internal-format | |
32989 | msgid "invalid operands in binary operation" | |
32990 | msgstr "operandos inválidos en la operación binaria" | |
32991 | ||
32992 | -#: tree-cfg.c:3509 | |
32993 | +#: tree-cfg.c:3506 | |
32994 | #, gcc-internal-format | |
32995 | msgid "type mismatch in complex expression" | |
32996 | msgstr "los tipos de datos no coinciden en la expresión compleja" | |
32997 | ||
32998 | -#: tree-cfg.c:3538 | |
32999 | +#: tree-cfg.c:3535 | |
33000 | #, gcc-internal-format | |
33001 | msgid "type mismatch in shift expression" | |
33002 | msgstr "los tipos de datos no coinciden en la expresión shift" | |
33003 | ||
33004 | -#: tree-cfg.c:3561 | |
33005 | +#: tree-cfg.c:3558 | |
33006 | #, gcc-internal-format | |
33007 | msgid "type mismatch in vector shift expression" | |
33008 | msgstr "los tipos de datos no coinciden en la expresión shift de vector" | |
33009 | ||
33010 | -#: tree-cfg.c:3574 | |
33011 | +#: tree-cfg.c:3571 | |
33012 | #, gcc-internal-format | |
33013 | msgid "non-element sized vector shift of floating point vector" | |
33014 | msgstr "desplazamiento de vector de tamaño que no es elemento de vector de coma flotante" | |
33015 | ||
33016 | -#: tree-cfg.c:3588 tree-cfg.c:3609 | |
33017 | +#: tree-cfg.c:3585 tree-cfg.c:3606 | |
33018 | #, gcc-internal-format | |
33019 | msgid "type mismatch in widening vector shift expression" | |
33020 | msgstr "los tipos no coinciden en la expresión shift de ensanchamiento de vector" | |
33021 | ||
33022 | -#: tree-cfg.c:3631 | |
33023 | +#: tree-cfg.c:3628 | |
33024 | #, gcc-internal-format | |
33025 | msgid "invalid non-vector operands to vector valued plus" | |
33026 | msgstr "operandos que no son vectores inválidos para un vector valuado con más" | |
33027 | ||
33028 | -#: tree-cfg.c:3651 | |
33029 | +#: tree-cfg.c:3648 | |
33030 | #, gcc-internal-format | |
33031 | msgid "invalid (pointer) operands to plus/minus" | |
33032 | msgstr "operandos (punteros) inválidos para más/menos" | |
33033 | ||
33034 | -#: tree-cfg.c:3666 | |
33035 | +#: tree-cfg.c:3663 | |
33036 | #, gcc-internal-format | |
33037 | msgid "type mismatch in pointer plus expression" | |
33038 | msgstr "los tipos de datos no coinciden en la expresión puntero más" | |
33039 | ||
33040 | -#: tree-cfg.c:3743 | |
33041 | +#: tree-cfg.c:3740 | |
33042 | #, gcc-internal-format | |
33043 | msgid "type mismatch in binary expression" | |
33044 | msgstr "los tipos de datos no coinciden en la expresión binaria" | |
33045 | ||
33046 | -#: tree-cfg.c:3771 | |
33047 | +#: tree-cfg.c:3768 | |
33048 | #, gcc-internal-format | |
33049 | msgid "non-register as LHS of ternary operation" | |
33050 | msgstr "el LHS de una operación terniaria no es un registro" | |
33051 | ||
33052 | -#: tree-cfg.c:3780 | |
33053 | +#: tree-cfg.c:3777 | |
33054 | #, gcc-internal-format | |
33055 | msgid "invalid operands in ternary operation" | |
33056 | msgstr "operandos inválidos en la operación terniaria" | |
33057 | ||
33058 | -#: tree-cfg.c:3796 | |
33059 | +#: tree-cfg.c:3793 | |
33060 | #, gcc-internal-format | |
33061 | msgid "type mismatch in widening multiply-accumulate expression" | |
33062 | msgstr "los tipos no coinciden en la expresión de ensanchado multiplicar-acumular" | |
33063 | ||
33064 | -#: tree-cfg.c:3810 | |
33065 | +#: tree-cfg.c:3807 | |
33066 | #, gcc-internal-format | |
33067 | msgid "type mismatch in fused multiply-add expression" | |
33068 | msgstr "los tipos no coinciden en la expresión fusionada multiplicar-sumar" | |
33069 | ||
33070 | -#: tree-cfg.c:3836 | |
33071 | +#: tree-cfg.c:3833 | |
33072 | #, gcc-internal-format | |
33073 | msgid "type mismatch in vector permute expression" | |
33074 | msgstr "los tipos no coinciden en la expresión de permutación de vector" | |
33075 | ||
33076 | -#: tree-cfg.c:3848 | |
33077 | +#: tree-cfg.c:3845 | |
33078 | #, gcc-internal-format | |
33079 | msgid "vector types expected in vector permute expression" | |
33080 | msgstr "se esperaban tipos vector en una expresión de permutación de vector" | |
33081 | ||
33082 | -#: tree-cfg.c:3862 | |
33083 | +#: tree-cfg.c:3859 | |
33084 | #, gcc-internal-format | |
33085 | msgid "vectors with different element number found in vector permute expression" | |
33086 | msgstr "se encontraron vectores con número de elementos diferentes en la expresión de permutación" | |
33087 | ||
33088 | -#: tree-cfg.c:3875 | |
33089 | +#: tree-cfg.c:3872 | |
33090 | #, gcc-internal-format | |
33091 | msgid "invalid mask type in vector permute expression" | |
33092 | msgstr "tipo de máscara inválido en la expresión de permutación de vector" | |
33093 | ||
33094 | -#: tree-cfg.c:3911 | |
33095 | +#: tree-cfg.c:3908 | |
33096 | #, gcc-internal-format | |
33097 | msgid "non-trivial conversion at assignment" | |
33098 | msgstr "conversión que no es trivial en la asignación" | |
33099 | ||
33100 | -#: tree-cfg.c:3928 | |
33101 | +#: tree-cfg.c:3925 | |
33102 | #, gcc-internal-format | |
33103 | msgid "invalid operand in unary expression" | |
33104 | msgstr "operando inválido en la expresión unaria" | |
33105 | ||
33106 | -#: tree-cfg.c:3942 | |
33107 | +#: tree-cfg.c:3939 | |
33108 | #, gcc-internal-format | |
33109 | msgid "type mismatch in address expression" | |
33110 | msgstr "no coincide el tipo en la expresión de dirección" | |
33111 | ||
33112 | -#: tree-cfg.c:3968 tree-cfg.c:3994 | |
33113 | +#: tree-cfg.c:3965 tree-cfg.c:3991 | |
33114 | #, gcc-internal-format | |
33115 | msgid "invalid rhs for gimple memory store" | |
33116 | msgstr "rhs inválido para el almacenamiento de memoria gimple" | |
33117 | ||
33118 | -#: tree-cfg.c:4056 | |
33119 | +#: tree-cfg.c:4053 | |
33120 | #, gcc-internal-format | |
33121 | msgid "invalid operand in return statement" | |
33122 | msgstr "operando inválido en la declaración return" | |
33123 | ||
33124 | -#: tree-cfg.c:4070 | |
33125 | +#: tree-cfg.c:4067 | |
33126 | #, gcc-internal-format | |
33127 | msgid "invalid conversion in return statement" | |
33128 | msgstr "conversión inválida en la declaración return" | |
33129 | ||
33130 | -#: tree-cfg.c:4094 | |
33131 | +#: tree-cfg.c:4091 | |
33132 | #, gcc-internal-format | |
33133 | msgid "goto destination is neither a label nor a pointer" | |
33134 | msgstr "el destino de goto no es una etiqueta ni un puntero" | |
33135 | ||
33136 | -#: tree-cfg.c:4109 | |
33137 | +#: tree-cfg.c:4106 | |
33138 | #, gcc-internal-format | |
33139 | msgid "invalid operand to switch statement" | |
33140 | msgstr "operando inválido para la declaración switch" | |
33141 | ||
33142 | -#: tree-cfg.c:4151 | |
33143 | +#: tree-cfg.c:4148 | |
33144 | #, gcc-internal-format | |
33145 | msgid "incorrect entry in label_to_block_map" | |
33146 | msgstr "entrada incorrecta en label_to_block_map" | |
33147 | ||
33148 | -#: tree-cfg.c:4161 | |
33149 | +#: tree-cfg.c:4158 | |
33150 | #, gcc-internal-format | |
33151 | msgid "incorrect setting of landing pad number" | |
33152 | msgstr "definición incorrecta del número de relleno de aterrizaje" | |
33153 | ||
33154 | -#: tree-cfg.c:4189 | |
33155 | +#: tree-cfg.c:4186 | |
33156 | #, gcc-internal-format | |
33157 | msgid "invalid comparison code in gimple cond" | |
33158 | msgstr "código de comparación inválido en la condición gimple" | |
33159 | ||
33160 | -#: tree-cfg.c:4197 | |
33161 | +#: tree-cfg.c:4194 | |
33162 | #, gcc-internal-format | |
33163 | msgid "invalid labels in gimple cond" | |
33164 | msgstr "etiquetas inválidas en la condición gimple" | |
33165 | ||
33166 | -#: tree-cfg.c:4258 tree-cfg.c:4267 | |
33167 | +#: tree-cfg.c:4255 tree-cfg.c:4264 | |
33168 | #, gcc-internal-format | |
33169 | msgid "invalid PHI result" | |
33170 | msgstr "resultado PHI inválido" | |
33171 | ||
33172 | -#: tree-cfg.c:4277 | |
33173 | +#: tree-cfg.c:4274 | |
33174 | #, gcc-internal-format | |
33175 | msgid "missing PHI def" | |
33176 | msgstr "falta la definición PHI" | |
33177 | ||
33178 | -#: tree-cfg.c:4291 | |
33179 | +#: tree-cfg.c:4288 | |
33180 | #, gcc-internal-format | |
33181 | msgid "invalid PHI argument" | |
33182 | msgstr "argumento PHI inválido" | |
33183 | ||
33184 | -#: tree-cfg.c:4298 | |
33185 | +#: tree-cfg.c:4295 | |
33186 | #, gcc-internal-format, gfc-internal-format | |
33187 | msgid "incompatible types in PHI argument %u" | |
33188 | msgstr "tipos incompatibles en el argumento PHI %u" | |
33189 | ||
33190 | -#: tree-cfg.c:4382 tree-cfg.c:4578 | |
33191 | +#: tree-cfg.c:4379 tree-cfg.c:4575 | |
33192 | #, gcc-internal-format | |
33193 | msgid "verify_gimple failed" | |
33194 | msgstr "falló verify_gimple" | |
33195 | ||
33196 | -#: tree-cfg.c:4443 | |
33197 | +#: tree-cfg.c:4440 | |
33198 | #, gcc-internal-format | |
33199 | msgid "dead STMT in EH table" | |
33200 | msgstr "STMT muerto en la tabla EH" | |
33201 | ||
33202 | -#: tree-cfg.c:4477 | |
33203 | +#: tree-cfg.c:4474 | |
33204 | #, gcc-internal-format | |
33205 | msgid "gimple_bb (phi) is set to a wrong basic block" | |
33206 | msgstr "se estableció gimple_bb (phi) a un bloque básico erróneo" | |
33207 | ||
33208 | -#: tree-cfg.c:4489 tree-cfg.c:4523 | |
33209 | +#: tree-cfg.c:4486 tree-cfg.c:4520 | |
33210 | #, gcc-internal-format | |
33211 | msgid "incorrect sharing of tree nodes" | |
33212 | msgstr "compartición incorrecta de nodos de árbol" | |
33213 | ||
33214 | -#: tree-cfg.c:4512 | |
33215 | +#: tree-cfg.c:4509 | |
33216 | #, gcc-internal-format | |
33217 | msgid "gimple_bb (stmt) is set to a wrong basic block" | |
33218 | msgstr "se estableció gimple_bb (stmt) a un bloque básico erróneo" | |
33219 | ||
33220 | -#: tree-cfg.c:4538 | |
33221 | +#: tree-cfg.c:4535 | |
33222 | #, gcc-internal-format | |
33223 | msgid "in statement" | |
33224 | msgstr "en la sentencia" | |
33225 | ||
33226 | -#: tree-cfg.c:4553 | |
33227 | +#: tree-cfg.c:4550 | |
33228 | #, gcc-internal-format | |
33229 | msgid "statement marked for throw, but doesn%'t" | |
33230 | msgstr "se marcó la sentencia para throw, pero no lo hace" | |
33231 | ||
33232 | -#: tree-cfg.c:4560 | |
33233 | +#: tree-cfg.c:4557 | |
33234 | #, gcc-internal-format | |
33235 | msgid "statement marked for throw in middle of block" | |
33236 | msgstr "se marcó la sentencia para throw en medio del bloque" | |
33237 | ||
33238 | -#: tree-cfg.c:4601 | |
33239 | +#: tree-cfg.c:4598 | |
33240 | #, gcc-internal-format | |
33241 | msgid "ENTRY_BLOCK has IL associated with it" | |
33242 | msgstr "ENTRY_BLOCK tiene IL asociado con él" | |
33243 | ||
33244 | -#: tree-cfg.c:4607 | |
33245 | +#: tree-cfg.c:4604 | |
33246 | #, gcc-internal-format | |
33247 | msgid "EXIT_BLOCK has IL associated with it" | |
33248 | msgstr "EXIT_BLOCK tiene IL asociado con él" | |
33249 | ||
33250 | -#: tree-cfg.c:4614 | |
33251 | +#: tree-cfg.c:4611 | |
33252 | #, gcc-internal-format, gfc-internal-format | |
33253 | msgid "fallthru to exit from bb %d" | |
33254 | msgstr "caida para salir del bb %d" | |
33255 | ||
33256 | -#: tree-cfg.c:4638 | |
33257 | +#: tree-cfg.c:4635 | |
33258 | #, gcc-internal-format | |
33259 | msgid "nonlocal label " | |
33260 | msgstr "etiqueta no local " | |
33261 | ||
33262 | -#: tree-cfg.c:4647 | |
33263 | +#: tree-cfg.c:4644 | |
33264 | #, gcc-internal-format | |
33265 | msgid "EH landing pad label " | |
33266 | msgstr "etiqueta de relleno de aterrizaje EH " | |
33267 | ||
33268 | -#: tree-cfg.c:4656 tree-cfg.c:4665 tree-cfg.c:4690 | |
33269 | +#: tree-cfg.c:4653 tree-cfg.c:4662 tree-cfg.c:4687 | |
33270 | #, gcc-internal-format | |
33271 | msgid "label " | |
33272 | msgstr "etiqueta " | |
33273 | ||
33274 | -#: tree-cfg.c:4680 | |
33275 | +#: tree-cfg.c:4677 | |
33276 | #, gcc-internal-format, gfc-internal-format | |
33277 | msgid "control flow in the middle of basic block %d" | |
33278 | msgstr "control de flujo enmedio del bloque básico %d" | |
33279 | ||
33280 | -#: tree-cfg.c:4713 | |
33281 | +#: tree-cfg.c:4710 | |
33282 | #, gcc-internal-format, gfc-internal-format | |
33283 | msgid "fallthru edge after a control statement in bb %d" | |
33284 | msgstr "borde de caída después de una sentencia de control en bb %d" | |
33285 | ||
33286 | -#: tree-cfg.c:4726 | |
33287 | +#: tree-cfg.c:4723 | |
33288 | #, gcc-internal-format, gfc-internal-format | |
33289 | msgid "true/false edge after a non-GIMPLE_COND in bb %d" | |
33290 | msgstr "borde verdadero/falso después de una expresión que no es GIMPLE_COND en bb %d" | |
33291 | ||
33292 | -#: tree-cfg.c:4749 tree-cfg.c:4771 tree-cfg.c:4788 tree-cfg.c:4857 | |
33293 | +#: tree-cfg.c:4746 tree-cfg.c:4768 tree-cfg.c:4785 tree-cfg.c:4854 | |
33294 | #, gcc-internal-format, gfc-internal-format | |
33295 | msgid "wrong outgoing edge flags at end of bb %d" | |
33296 | msgstr "banderas de borde de salida erróneas al final del bb %d" | |
33297 | ||
33298 | -#: tree-cfg.c:4759 | |
33299 | +#: tree-cfg.c:4756 | |
33300 | #, gcc-internal-format, gfc-internal-format | |
33301 | msgid "explicit goto at end of bb %d" | |
33302 | msgstr "goto explícito al final del bb %d" | |
33303 | ||
33304 | -#: tree-cfg.c:4793 | |
33305 | +#: tree-cfg.c:4790 | |
33306 | #, gcc-internal-format, gfc-internal-format | |
33307 | msgid "return edge does not point to exit in bb %d" | |
33308 | msgstr "el borde de devolución no apunta a exit en el bb %d" | |
33309 | ||
33310 | -#: tree-cfg.c:4823 | |
33311 | +#: tree-cfg.c:4820 | |
33312 | #, gcc-internal-format | |
33313 | msgid "found default case not at the start of case vector" | |
33314 | msgstr "se encontró un case por defecto que no está al inicio del vector case" | |
33315 | ||
33316 | -#: tree-cfg.c:4831 | |
33317 | +#: tree-cfg.c:4828 | |
33318 | #, gcc-internal-format | |
33319 | msgid "case labels not sorted: " | |
33320 | msgstr "las etiquetas case no están ordenadas:" | |
33321 | ||
33322 | -#: tree-cfg.c:4848 | |
33323 | +#: tree-cfg.c:4845 | |
33324 | #, gcc-internal-format, gfc-internal-format | |
33325 | msgid "extra outgoing edge %d->%d" | |
33326 | msgstr "borde de salida extra %d->%d" | |
33327 | ||
33328 | -#: tree-cfg.c:4871 | |
33329 | +#: tree-cfg.c:4868 | |
33330 | #, gcc-internal-format, gfc-internal-format | |
33331 | msgid "missing edge %i->%i" | |
33332 | msgstr "falta el borde %i->%i" | |
33333 | ||
33334 | -#: tree-cfg.c:7527 | |
33335 | +#: tree-cfg.c:7524 | |
33336 | #, gcc-internal-format | |
33337 | msgid "%<noreturn%> function does return" | |
33338 | msgstr "la función %<noreturn%> devuelve" | |
33339 | ||
33340 | -#: tree-cfg.c:7547 | |
33341 | +#: tree-cfg.c:7544 | |
33342 | #, gcc-internal-format | |
33343 | msgid "control reaches end of non-void function" | |
33344 | msgstr "el control alcanza el final de una función que no es void" | |
33345 | ||
33346 | -#: tree-cfg.c:7685 | |
33347 | +#: tree-cfg.c:7682 | |
33348 | #, gcc-internal-format | |
33349 | msgid "ignoring return value of %qD, declared with attribute warn_unused_result" | |
33350 | msgstr "se descarta el valor de devolución de %qD, se declaró con el atributo warn_unused_result" | |
33351 | ||
33352 | -#: tree-cfg.c:7690 | |
33353 | +#: tree-cfg.c:7687 | |
33354 | #, gcc-internal-format | |
33355 | msgid "ignoring return value of function declared with attribute warn_unused_result" | |
33356 | msgstr "se descarta el valor de devolución de la función declarada con atributo warn_unused_result" | |
33357 | @@ -19479,12 +19634,12 @@ | |
33358 | msgid "mudflap: this language is not supported" | |
33359 | msgstr "mudflap: este lenguaje no se admite" | |
33360 | ||
33361 | -#: tree-optimize.c:448 | |
33362 | +#: tree-optimize.c:450 | |
33363 | #, gcc-internal-format | |
33364 | msgid "size of return value of %q+D is %u bytes" | |
33365 | msgstr "el tamaño del valor de devolución de %q+D es de %u bytes" | |
33366 | ||
33367 | -#: tree-optimize.c:451 | |
33368 | +#: tree-optimize.c:453 | |
33369 | #, gcc-internal-format | |
33370 | msgid "size of return value of %q+D is larger than %wd bytes" | |
33371 | msgstr "el tamaño del valor de devolución de %q+D es más grande que %wd bytes" | |
33372 | @@ -19500,52 +19655,52 @@ | |
33373 | msgid "unimplemented functionality" | |
33374 | msgstr "funcionalidad sin implementar" | |
33375 | ||
33376 | -#: tree-ssa-operands.c:1116 | |
33377 | +#: tree-ssa-operands.c:1127 | |
33378 | #, gcc-internal-format | |
33379 | msgid "virtual definition of statement not up-to-date" | |
33380 | msgstr "la definición virtual de la declaración no está actualizada" | |
33381 | ||
33382 | -#: tree-ssa-operands.c:1123 | |
33383 | +#: tree-ssa-operands.c:1134 | |
33384 | #, gcc-internal-format | |
33385 | msgid "virtual def operand missing for stmt" | |
33386 | msgstr "falta el operando def virtual para stmt" | |
33387 | ||
33388 | -#: tree-ssa-operands.c:1133 | |
33389 | +#: tree-ssa-operands.c:1144 | |
33390 | #, gcc-internal-format | |
33391 | msgid "virtual use of statement not up-to-date" | |
33392 | msgstr "el uso de la declaración virtual no está actualizada" | |
33393 | ||
33394 | -#: tree-ssa-operands.c:1140 | |
33395 | +#: tree-ssa-operands.c:1151 | |
33396 | #, gcc-internal-format | |
33397 | msgid "virtual use operand missing for stmt" | |
33398 | msgstr "falta el operando use virtual para stmt" | |
33399 | ||
33400 | -#: tree-ssa-operands.c:1156 | |
33401 | +#: tree-ssa-operands.c:1167 | |
33402 | #, gcc-internal-format | |
33403 | msgid "excess use operand for stmt" | |
33404 | msgstr "operando use en exceso para stmt" | |
33405 | ||
33406 | -#: tree-ssa-operands.c:1164 | |
33407 | +#: tree-ssa-operands.c:1175 | |
33408 | #, gcc-internal-format | |
33409 | msgid "use operand missing for stmt" | |
33410 | msgstr "falta el operando use para stmt" | |
33411 | ||
33412 | -#: tree-ssa-operands.c:1181 | |
33413 | +#: tree-ssa-operands.c:1192 | |
33414 | #, gcc-internal-format | |
33415 | msgid "excess def operand for stmt" | |
33416 | msgstr "operando def en exceso para stmt" | |
33417 | ||
33418 | -#: tree-ssa-operands.c:1189 | |
33419 | +#: tree-ssa-operands.c:1200 | |
33420 | #, gcc-internal-format | |
33421 | msgid "def operand missing for stmt" | |
33422 | msgstr "falta el operando def para stmt" | |
33423 | ||
33424 | -#: tree-ssa-operands.c:1196 | |
33425 | +#: tree-ssa-operands.c:1207 | |
33426 | #, gcc-internal-format | |
33427 | msgid "stmt volatile flag not up-to-date" | |
33428 | msgstr "la opción volatile de stmt no está actualizada" | |
33429 | ||
33430 | -#: tree-ssa-uninit.c:1958 tree-ssa.c:1655 | |
33431 | +#: tree-ssa-uninit.c:1958 tree-ssa.c:1653 | |
33432 | #, gcc-internal-format | |
33433 | msgid "%qD may be used uninitialized in this function" | |
33434 | msgstr "puede ser que se utilice %qD sin inicializar en esta función" | |
33435 | @@ -19595,7 +19750,7 @@ | |
33436 | msgid "SSA_NAME created in two different blocks %i and %i" | |
33437 | msgstr "se creó SSA_NAME en dos bloques diferentes %i y %i" | |
33438 | ||
33439 | -#: tree-ssa.c:709 tree-ssa.c:1023 | |
33440 | +#: tree-ssa.c:709 tree-ssa.c:1021 | |
33441 | #, gcc-internal-format | |
33442 | msgid "SSA_NAME_DEF_STMT is wrong" | |
33443 | msgstr "SSA_NAME_DEF_STMT es erróneo" | |
33444 | @@ -19650,37 +19805,37 @@ | |
33445 | msgid "wrong edge %d->%d for PHI argument" | |
33446 | msgstr "borde erróneo %d->%d para el argumento PHI" | |
33447 | ||
33448 | -#: tree-ssa.c:970 | |
33449 | +#: tree-ssa.c:968 | |
33450 | #, gcc-internal-format, gfc-internal-format | |
33451 | msgid "AUX pointer initialized for edge %d->%d" | |
33452 | msgstr "se inicializó el puntero AUX para el borde %d->%d" | |
33453 | ||
33454 | -#: tree-ssa.c:995 | |
33455 | +#: tree-ssa.c:993 | |
33456 | #, gcc-internal-format | |
33457 | msgid "stmt (%p) marked modified after optimization pass: " | |
33458 | msgstr "se modificó el stmt (%p) marcado después del paso de optimización: " | |
33459 | ||
33460 | -#: tree-ssa.c:1052 | |
33461 | +#: tree-ssa.c:1050 | |
33462 | #, gcc-internal-format | |
33463 | msgid "verify_ssa failed" | |
33464 | msgstr "falló verify_ssa" | |
33465 | ||
33466 | -#: tree-ssa.c:1618 varasm.c:321 | |
33467 | +#: tree-ssa.c:1616 varasm.c:321 | |
33468 | #, gcc-internal-format | |
33469 | msgid "%qD was declared here" | |
33470 | msgstr "%qD se declaró aquí" | |
33471 | ||
33472 | -#: tree-ssa.c:1650 | |
33473 | +#: tree-ssa.c:1648 | |
33474 | #, gcc-internal-format | |
33475 | msgid "%qD is used uninitialized in this function" | |
33476 | msgstr "se utiliza %qD sin inicializar en esta función" | |
33477 | ||
33478 | -#: tree-ssa.c:1687 | |
33479 | +#: tree-ssa.c:1685 | |
33480 | #, gcc-internal-format | |
33481 | msgid "%qE is used uninitialized in this function" | |
33482 | msgstr "se utiliza %qE sin inicializar en esta función" | |
33483 | ||
33484 | -#: tree-ssa.c:1692 | |
33485 | +#: tree-ssa.c:1690 | |
33486 | #, gcc-internal-format | |
33487 | msgid "%qE may be used uninitialized in this function" | |
33488 | msgstr "puede ser que se utilice %qE sin inicializar en esta función" | |
33489 | @@ -19780,22 +19935,22 @@ | |
33490 | msgid "ignoring attributes applied to %qT after definition" | |
33491 | msgstr "se descartan los atributos aplicados al %qT después de la definición" | |
33492 | ||
33493 | -#: tree.c:5457 | |
33494 | +#: tree.c:5459 | |
33495 | #, gcc-internal-format | |
33496 | msgid "%q+D already declared with dllexport attribute: dllimport ignored" | |
33497 | msgstr "%q+D se declaró anteriormente con el atributo dllimport: se descarta dllimport" | |
33498 | ||
33499 | -#: tree.c:5469 | |
33500 | +#: tree.c:5471 | |
33501 | #, gcc-internal-format | |
33502 | msgid "%q+D redeclared without dllimport attribute after being referenced with dll linkage" | |
33503 | msgstr "%q+D se redeclara sin el atributo dllimport después de ser referenciado con enlace dllimport" | |
33504 | ||
33505 | -#: tree.c:5484 | |
33506 | +#: tree.c:5486 | |
33507 | #, gcc-internal-format | |
33508 | msgid "%q+D redeclared without dllimport attribute: previous dllimport ignored" | |
33509 | msgstr "%q+D se redeclara sin el atributo dllimport: se descarta el dllimport previo" | |
33510 | ||
33511 | -#: tree.c:5527 tree.c:5539 tree.c:5549 c-family/c-common.c:5865 | |
33512 | +#: tree.c:5529 tree.c:5541 tree.c:5551 c-family/c-common.c:5865 | |
33513 | #: c-family/c-common.c:5884 c-family/c-common.c:5902 c-family/c-common.c:5930 | |
33514 | #: c-family/c-common.c:5957 c-family/c-common.c:5983 c-family/c-common.c:6002 | |
33515 | #: c-family/c-common.c:6019 c-family/c-common.c:6043 c-family/c-common.c:6066 | |
33516 | @@ -19810,140 +19965,140 @@ | |
33517 | #: c-family/c-common.c:7680 c-family/c-common.c:7971 c-family/c-common.c:7994 | |
33518 | #: c-family/c-common.c:8033 c-family/c-common.c:8111 c-family/c-common.c:8260 | |
33519 | #: config/darwin.c:1942 config/arm/arm.c:5007 config/arm/arm.c:5035 | |
33520 | -#: config/arm/arm.c:5052 config/avr/avr.c:6728 config/h8300/h8300.c:5418 | |
33521 | -#: config/h8300/h8300.c:5442 config/i386/i386.c:4944 config/i386/i386.c:31811 | |
33522 | -#: config/ia64/ia64.c:734 config/rs6000/rs6000.c:24318 config/spu/spu.c:4035 | |
33523 | -#: ada/gcc-interface/utils.c:5482 lto/lto-lang.c:215 | |
33524 | +#: config/arm/arm.c:5052 config/avr/avr.c:6846 config/h8300/h8300.c:5418 | |
33525 | +#: config/h8300/h8300.c:5442 config/i386/i386.c:4944 config/i386/i386.c:31845 | |
33526 | +#: config/ia64/ia64.c:734 config/rs6000/rs6000.c:24335 config/spu/spu.c:4035 | |
33527 | +#: ada/gcc-interface/utils.c:5488 lto/lto-lang.c:215 | |
33528 | #, gcc-internal-format | |
33529 | msgid "%qE attribute ignored" | |
33530 | msgstr "se descarta el atributo %qE" | |
33531 | ||
33532 | -#: tree.c:5567 | |
33533 | +#: tree.c:5569 | |
33534 | #, gcc-internal-format | |
33535 | msgid "inline function %q+D declared as dllimport: attribute ignored" | |
33536 | msgstr "la función inline %q+D se declara como dllimport: se descarta el atributo" | |
33537 | ||
33538 | -#: tree.c:5575 | |
33539 | +#: tree.c:5577 | |
33540 | #, gcc-internal-format | |
33541 | msgid "function %q+D definition is marked dllimport" | |
33542 | msgstr "la definición de la función %q+D se marca como dllimport" | |
33543 | ||
33544 | -#: tree.c:5583 | |
33545 | +#: tree.c:5585 | |
33546 | #, gcc-internal-format | |
33547 | msgid "variable %q+D definition is marked dllimport" | |
33548 | msgstr "la definición de la variable %q+D se marca como dllimport" | |
33549 | ||
33550 | -#: tree.c:5611 | |
33551 | +#: tree.c:5613 | |
33552 | #, gcc-internal-format | |
33553 | msgid "external linkage required for symbol %q+D because of %qE attribute" | |
33554 | msgstr "se requiere enlace externo para el símbolo %q+D debido al atributo %qE" | |
33555 | ||
33556 | -#: tree.c:5625 | |
33557 | +#: tree.c:5627 | |
33558 | #, gcc-internal-format | |
33559 | msgid "%qE implies default visibility, but %qD has already been declared with a different visibility" | |
33560 | msgstr "%qE implica visibilidad por defecto, pero %qD ya se había declarado con una visibilidad diferente" | |
33561 | ||
33562 | -#: tree.c:7375 | |
33563 | +#: tree.c:7377 | |
33564 | #, gcc-internal-format | |
33565 | msgid "arrays of functions are not meaningful" | |
33566 | msgstr "las matrices de funciones no tienen significado" | |
33567 | ||
33568 | -#: tree.c:7542 | |
33569 | +#: tree.c:7544 | |
33570 | #, gcc-internal-format | |
33571 | msgid "function return type cannot be function" | |
33572 | msgstr "el tipo de devolución de función no puede ser función" | |
33573 | ||
33574 | -#: tree.c:8838 tree.c:8923 tree.c:8984 | |
33575 | +#: tree.c:8840 tree.c:8925 tree.c:8986 | |
33576 | #, gcc-internal-format, gfc-internal-format | |
33577 | msgid "tree check: %s, have %s in %s, at %s:%d" | |
33578 | msgstr "revisión de árbol: %s, se tiene %s en %s, en %s:%d" | |
33579 | ||
33580 | -#: tree.c:8875 | |
33581 | +#: tree.c:8877 | |
33582 | #, gcc-internal-format, gfc-internal-format | |
33583 | msgid "tree check: expected none of %s, have %s in %s, at %s:%d" | |
33584 | msgstr "revisión de árbol: no se esperaba ninguno de %s, se tiene %s en %s, en %s:%d" | |
33585 | ||
33586 | -#: tree.c:8888 | |
33587 | +#: tree.c:8890 | |
33588 | #, gcc-internal-format | |
33589 | msgid "tree check: expected class %qs, have %qs (%s) in %s, at %s:%d" | |
33590 | msgstr "revisión de árbol: se esperaba la clase %qs, se tiene %qs (%s) en %s, en %s:%d" | |
33591 | ||
33592 | -#: tree.c:8937 | |
33593 | +#: tree.c:8939 | |
33594 | #, gcc-internal-format | |
33595 | msgid "tree check: did not expect class %qs, have %qs (%s) in %s, at %s:%d" | |
33596 | msgstr "revisión de árbol: no se esperaba la clase %qs, se tiene %qs (%s) en %s, en %s:%d" | |
33597 | ||
33598 | -#: tree.c:8950 | |
33599 | +#: tree.c:8952 | |
33600 | #, gcc-internal-format, gfc-internal-format | |
33601 | msgid "tree check: expected omp_clause %s, have %s in %s, at %s:%d" | |
33602 | msgstr "revisión de árbol: se esperaba omp_clause %s, se tiene %s en %s, en %s:%d" | |
33603 | ||
33604 | -#: tree.c:9010 | |
33605 | +#: tree.c:9012 | |
33606 | #, gcc-internal-format | |
33607 | msgid "tree check: expected tree that contains %qs structure, have %qs in %s, at %s:%d" | |
33608 | msgstr "revisión de árbol: se esperaba un árbol que contenga la estructura %qs, se tiene %qs en %s, en %s:%d" | |
33609 | ||
33610 | -#: tree.c:9024 | |
33611 | +#: tree.c:9026 | |
33612 | #, gcc-internal-format, gfc-internal-format | |
33613 | msgid "tree check: accessed elt %d of tree_vec with %d elts in %s, at %s:%d" | |
33614 | msgstr "revisión de árbol: acceso de elt %d de tree_vec con %d elts en %s, en %s:%d" | |
33615 | ||
33616 | -#: tree.c:9037 | |
33617 | +#: tree.c:9039 | |
33618 | #, gcc-internal-format, gfc-internal-format | |
33619 | msgid "tree check: accessed operand %d of %s with %d operands in %s, at %s:%d" | |
33620 | msgstr "revisión de árbol: acceso del operando %d de %s con %d operandos en %s, en %s:%d" | |
33621 | ||
33622 | -#: tree.c:9050 | |
33623 | +#: tree.c:9052 | |
33624 | #, gcc-internal-format, gfc-internal-format | |
33625 | msgid "tree check: accessed operand %d of omp_clause %s with %d operands in %s, at %s:%d" | |
33626 | msgstr "revisión de árbol: acceso del operando %d de omp_clause %s con %d operandos en %s, en %s:%d" | |
33627 | ||
33628 | -#: tree.c:11330 | |
33629 | +#: tree.c:11336 | |
33630 | #, gcc-internal-format | |
33631 | msgid "%qD is deprecated (declared at %s:%d): %s" | |
33632 | msgstr "%qD es obsoleto (declarado en %s:%d): %s" | |
33633 | ||
33634 | -#: tree.c:11334 | |
33635 | +#: tree.c:11340 | |
33636 | #, gcc-internal-format | |
33637 | msgid "%qD is deprecated (declared at %s:%d)" | |
33638 | msgstr "%qD es obsoleto (declarado en %s:%d)" | |
33639 | ||
33640 | -#: tree.c:11359 | |
33641 | +#: tree.c:11365 | |
33642 | #, gcc-internal-format | |
33643 | msgid "%qE is deprecated (declared at %s:%d): %s" | |
33644 | msgstr "%qE es obsoleto (declarado en %s:%d): %s" | |
33645 | ||
33646 | -#: tree.c:11363 | |
33647 | +#: tree.c:11369 | |
33648 | #, gcc-internal-format | |
33649 | msgid "%qE is deprecated (declared at %s:%d)" | |
33650 | msgstr "%qE es obsoleto (declarado en %s:%d)" | |
33651 | ||
33652 | -#: tree.c:11370 | |
33653 | +#: tree.c:11376 | |
33654 | #, gcc-internal-format, gfc-internal-format | |
33655 | msgid "type is deprecated (declared at %s:%d): %s" | |
33656 | msgstr "el tipo es obsoleto (declarado en %s:%d): %s" | |
33657 | ||
33658 | -#: tree.c:11374 | |
33659 | +#: tree.c:11380 | |
33660 | #, gcc-internal-format, gfc-internal-format | |
33661 | msgid "type is deprecated (declared at %s:%d)" | |
33662 | msgstr "el tipo es obsoleto (declarado en %s:%d)" | |
33663 | ||
33664 | -#: tree.c:11383 | |
33665 | +#: tree.c:11389 | |
33666 | #, gcc-internal-format | |
33667 | msgid "%qE is deprecated: %s" | |
33668 | msgstr "%qE es obsoleto: %s" | |
33669 | ||
33670 | -#: tree.c:11386 | |
33671 | +#: tree.c:11392 | |
33672 | #, gcc-internal-format | |
33673 | msgid "%qE is deprecated" | |
33674 | msgstr "%qE es obsoleto" | |
33675 | ||
33676 | -#: tree.c:11391 | |
33677 | +#: tree.c:11397 | |
33678 | #, gcc-internal-format, gfc-internal-format | |
33679 | msgid "type is deprecated: %s" | |
33680 | msgstr "el tipo es obsoleto: %s" | |
33681 | ||
33682 | -#: tree.c:11394 | |
33683 | +#: tree.c:11400 | |
33684 | #, gcc-internal-format | |
33685 | msgid "type is deprecated" | |
33686 | msgstr "el tipo es obsoleto" | |
33687 | @@ -19983,12 +20138,12 @@ | |
33688 | msgid "Skipping target %s with mismatching types for icall " | |
33689 | msgstr "Se salta el objetivo %s con tipos que no coinciden para icall " | |
33690 | ||
33691 | -#: var-tracking.c:6582 | |
33692 | +#: var-tracking.c:6586 | |
33693 | #, gcc-internal-format | |
33694 | msgid "variable tracking size limit exceeded with -fvar-tracking-assignments, retrying without" | |
33695 | msgstr "se excedió el límite de tamaño de rastreo de variable con -fvar-tracking-assignments, se reintenta sin esa opción" | |
33696 | ||
33697 | -#: var-tracking.c:6586 | |
33698 | +#: var-tracking.c:6590 | |
33699 | #, gcc-internal-format | |
33700 | msgid "variable tracking size limit exceeded" | |
33701 | msgstr "se excedió el límite de tamaño de rastreo de variable" | |
33702 | @@ -20138,6 +20293,11 @@ | |
33703 | msgid "visibility attribute not supported in this configuration; ignored" | |
33704 | msgstr "no se admiten los atributos de visibilidad en esta configuración; descartados" | |
33705 | ||
33706 | +#: varpool.c:486 | |
33707 | +#, gcc-internal-format | |
33708 | +msgid "variable %q+D part of alias cycle" | |
33709 | +msgstr "la variable %q+D es parte de un ciclo de alias" | |
33710 | + | |
33711 | #: vec.c:527 | |
33712 | #, gcc-internal-format, gfc-internal-format | |
33713 | msgid "vector %s %s domain error, in %s at %s:%u" | |
33714 | @@ -20169,8 +20329,8 @@ | |
33715 | msgid "string length %qd is greater than the length %qd ISO C%d compilers are required to support" | |
33716 | msgstr "la longitud de la cadena %qd es mayor que la longitud %qd, la máxima que los compiladores ISO C%d deben admitir" | |
33717 | ||
33718 | -#: c-family/c-common.c:1494 c-family/c-common.c:1506 cp/semantics.c:6634 | |
33719 | -#: cp/semantics.c:8017 | |
33720 | +#: c-family/c-common.c:1494 c-family/c-common.c:1506 cp/semantics.c:6649 | |
33721 | +#: cp/semantics.c:8032 | |
33722 | #, gcc-internal-format | |
33723 | msgid "overflow in constant expression" | |
33724 | msgstr "desbordamiento en la expresión constante" | |
33725 | @@ -20798,40 +20958,40 @@ | |
33726 | msgid "invalid vector type for attribute %qE" | |
33727 | msgstr "tipo de vector inválido para el atributo %qE" | |
33728 | ||
33729 | -#: c-family/c-common.c:7720 ada/gcc-interface/utils.c:5600 | |
33730 | -#: ada/gcc-interface/utils.c:5694 | |
33731 | +#: c-family/c-common.c:7720 ada/gcc-interface/utils.c:5606 | |
33732 | +#: ada/gcc-interface/utils.c:5700 | |
33733 | #, gcc-internal-format | |
33734 | msgid "vector size not an integral multiple of component size" | |
33735 | msgstr "el tamaño del vector no es un múltiplo integral del tamaño del componente" | |
33736 | ||
33737 | -#: c-family/c-common.c:7726 ada/gcc-interface/utils.c:5606 | |
33738 | -#: ada/gcc-interface/utils.c:5700 | |
33739 | +#: c-family/c-common.c:7726 ada/gcc-interface/utils.c:5612 | |
33740 | +#: ada/gcc-interface/utils.c:5706 | |
33741 | #, gcc-internal-format | |
33742 | msgid "zero vector size" | |
33743 | msgstr "vector de tamaño cero" | |
33744 | ||
33745 | -#: c-family/c-common.c:7734 ada/gcc-interface/utils.c:5614 | |
33746 | -#: ada/gcc-interface/utils.c:5707 | |
33747 | +#: c-family/c-common.c:7734 ada/gcc-interface/utils.c:5620 | |
33748 | +#: ada/gcc-interface/utils.c:5713 | |
33749 | #, gcc-internal-format | |
33750 | msgid "number of components of the vector not a power of two" | |
33751 | msgstr "el número de componentes del vector no es una potencia de dos" | |
33752 | ||
33753 | -#: c-family/c-common.c:7762 ada/gcc-interface/utils.c:5341 | |
33754 | +#: c-family/c-common.c:7762 ada/gcc-interface/utils.c:5347 | |
33755 | #, gcc-internal-format | |
33756 | msgid "nonnull attribute without arguments on a non-prototype" | |
33757 | msgstr "un atributo que no es nulo sin argumento es un atributo que no es prototipo" | |
33758 | ||
33759 | -#: c-family/c-common.c:7776 ada/gcc-interface/utils.c:5355 | |
33760 | +#: c-family/c-common.c:7776 ada/gcc-interface/utils.c:5361 | |
33761 | #, gcc-internal-format, gfc-internal-format | |
33762 | msgid "nonnull argument has invalid operand number (argument %lu)" | |
33763 | msgstr "un argumento que no es nulo tiene un número de operando inválido (argumento %lu)" | |
33764 | ||
33765 | -#: c-family/c-common.c:7798 ada/gcc-interface/utils.c:5377 | |
33766 | +#: c-family/c-common.c:7798 ada/gcc-interface/utils.c:5383 | |
33767 | #, gcc-internal-format, gfc-internal-format | |
33768 | msgid "nonnull argument with out-of-range operand number (argument %lu, operand %lu)" | |
33769 | msgstr "un argumento que no es nulo con número de operando fuera de rango (argumento %lu, operando %lu)" | |
33770 | ||
33771 | -#: c-family/c-common.c:7806 ada/gcc-interface/utils.c:5386 | |
33772 | +#: c-family/c-common.c:7806 ada/gcc-interface/utils.c:5392 | |
33773 | #, gcc-internal-format, gfc-internal-format | |
33774 | msgid "nonnull argument references non-pointer operand (argument %lu, operand %lu)" | |
33775 | msgstr "un argumento que no es nulo hace referencia a un operando que no es puntero (argumento %lu, operando %lu)" | |
33776 | @@ -20871,12 +21031,12 @@ | |
33777 | msgid "%qE attribute only applies to variadic functions" | |
33778 | msgstr "el atributo %qE se aplica solamente a funciones variadic" | |
33779 | ||
33780 | -#: c-family/c-common.c:8069 ada/gcc-interface/utils.c:5428 | |
33781 | +#: c-family/c-common.c:8069 ada/gcc-interface/utils.c:5434 | |
33782 | #, gcc-internal-format | |
33783 | msgid "requested position is not an integer constant" | |
33784 | msgstr "la posición solicitada no es una constante entera" | |
33785 | ||
33786 | -#: c-family/c-common.c:8077 ada/gcc-interface/utils.c:5435 | |
33787 | +#: c-family/c-common.c:8077 ada/gcc-interface/utils.c:5441 | |
33788 | #, gcc-internal-format | |
33789 | msgid "requested position is less than zero" | |
33790 | msgstr "la posición solicitada es menor a cero" | |
33791 | @@ -21126,177 +21286,177 @@ | |
33792 | msgid "size of array is too large" | |
33793 | msgstr "el tamaño de la matriz es demasiado grande" | |
33794 | ||
33795 | -#: c-family/c-common.c:9425 | |
33796 | +#: c-family/c-common.c:9427 | |
33797 | #, gcc-internal-format | |
33798 | msgid "incorrect number of arguments to function %qE" | |
33799 | msgstr "número incorrecto de argumentos para la función %qE" | |
33800 | ||
33801 | -#: c-family/c-common.c:9433 | |
33802 | +#: c-family/c-common.c:9435 | |
33803 | #, gcc-internal-format | |
33804 | msgid "argument 1 of %qE must be a non-void pointer type" | |
33805 | msgstr "el argumento 1 de %qE debe ser un tipo puntero que no sea void" | |
33806 | ||
33807 | -#: c-family/c-common.c:9442 | |
33808 | +#: c-family/c-common.c:9444 | |
33809 | #, gcc-internal-format | |
33810 | msgid "argument 1 of %qE must be a pointer to a constant size type" | |
33811 | msgstr "el argumento 1 de %qE debe ser un puntero a un tipo de tamaño constante" | |
33812 | ||
33813 | -#: c-family/c-common.c:9453 | |
33814 | +#: c-family/c-common.c:9455 | |
33815 | #, gcc-internal-format | |
33816 | msgid "argument 1 of %qE must be a pointer to a nonzero size object" | |
33817 | msgstr "el argumento 1 de %qE debe ser un puntero a un objeto de tamaño diferente de cero" | |
33818 | ||
33819 | -#: c-family/c-common.c:9468 | |
33820 | +#: c-family/c-common.c:9470 | |
33821 | #, gcc-internal-format | |
33822 | msgid "argument %d of %qE must be a pointer type" | |
33823 | msgstr "el argumento %d de %qE debe ser un tipo puntero" | |
33824 | ||
33825 | -#: c-family/c-common.c:9475 | |
33826 | +#: c-family/c-common.c:9477 | |
33827 | #, gcc-internal-format | |
33828 | msgid "size mismatch in argument %d of %qE" | |
33829 | msgstr "no coincide el tamaño en el argumento %d de %qE" | |
33830 | ||
33831 | -#: c-family/c-common.c:9491 | |
33832 | +#: c-family/c-common.c:9493 | |
33833 | #, gcc-internal-format | |
33834 | msgid "invalid memory model argument %d of %qE" | |
33835 | msgstr "argumento de modelo de memoria %d inválido de %qE" | |
33836 | ||
33837 | -#: c-family/c-common.c:9498 | |
33838 | +#: c-family/c-common.c:9500 | |
33839 | #, gcc-internal-format | |
33840 | msgid "non-integer memory model argument %d of %qE" | |
33841 | msgstr "argumento de modelo de memoria %d que no es entero de %qE" | |
33842 | ||
33843 | -#: c-family/c-common.c:10024 | |
33844 | +#: c-family/c-common.c:10026 | |
33845 | #, gcc-internal-format | |
33846 | msgid "array subscript has type %<char%>" | |
33847 | msgstr "el subíndice de la matriz es de tipo %<char%>" | |
33848 | ||
33849 | -#: c-family/c-common.c:10059 | |
33850 | +#: c-family/c-common.c:10061 | |
33851 | #, gcc-internal-format | |
33852 | msgid "suggest parentheses around %<+%> inside %<<<%>" | |
33853 | msgstr "se sugieren paréntesis alrededor de %<+%> dentro de %<<<%>" | |
33854 | ||
33855 | -#: c-family/c-common.c:10062 | |
33856 | +#: c-family/c-common.c:10064 | |
33857 | #, gcc-internal-format | |
33858 | msgid "suggest parentheses around %<-%> inside %<<<%>" | |
33859 | msgstr "se sugieren paréntesis alrededor de %<-%> dentro de %<<<%>" | |
33860 | ||
33861 | -#: c-family/c-common.c:10068 | |
33862 | +#: c-family/c-common.c:10070 | |
33863 | #, gcc-internal-format | |
33864 | msgid "suggest parentheses around %<+%> inside %<>>%>" | |
33865 | msgstr "se sugieren paréntesis alrededor de %<+%> dentro de %<>>%>" | |
33866 | ||
33867 | -#: c-family/c-common.c:10071 | |
33868 | +#: c-family/c-common.c:10073 | |
33869 | #, gcc-internal-format | |
33870 | msgid "suggest parentheses around %<-%> inside %<>>%>" | |
33871 | msgstr "se sugieren paréntesis alrededor de %<-%> dentro de %<>>%>" | |
33872 | ||
33873 | -#: c-family/c-common.c:10077 | |
33874 | +#: c-family/c-common.c:10079 | |
33875 | #, gcc-internal-format | |
33876 | msgid "suggest parentheses around %<&&%> within %<||%>" | |
33877 | msgstr "se sugieren paréntesis alrededor de %<&&%> junto con %<||%>" | |
33878 | ||
33879 | -#: c-family/c-common.c:10086 | |
33880 | +#: c-family/c-common.c:10088 | |
33881 | #, gcc-internal-format | |
33882 | msgid "suggest parentheses around arithmetic in operand of %<|%>" | |
33883 | msgstr "se sugieren paréntesis alrededor de la aritmética para un operando de %<|%>" | |
33884 | ||
33885 | -#: c-family/c-common.c:10091 | |
33886 | +#: c-family/c-common.c:10093 | |
33887 | #, gcc-internal-format | |
33888 | msgid "suggest parentheses around comparison in operand of %<|%>" | |
33889 | msgstr "se sugieren paréntesis alrededor de la comparación para un operando de %<|%>" | |
33890 | ||
33891 | -#: c-family/c-common.c:10095 | |
33892 | +#: c-family/c-common.c:10097 | |
33893 | #, gcc-internal-format | |
33894 | msgid "suggest parentheses around operand of %<!%> or change %<|%> to %<||%> or %<!%> to %<~%>" | |
33895 | msgstr "se sugieren paréntesis alrededor del operando de %<!%> o cambie %<|%> a %<||%> o %<!%> a %<~%>" | |
33896 | ||
33897 | -#: c-family/c-common.c:10105 | |
33898 | +#: c-family/c-common.c:10107 | |
33899 | #, gcc-internal-format | |
33900 | msgid "suggest parentheses around arithmetic in operand of %<^%>" | |
33901 | msgstr "se sugieren paréntesis alrededor de la aritmética para un operando de %<^%>" | |
33902 | ||
33903 | -#: c-family/c-common.c:10110 | |
33904 | +#: c-family/c-common.c:10112 | |
33905 | #, gcc-internal-format | |
33906 | msgid "suggest parentheses around comparison in operand of %<^%>" | |
33907 | msgstr "se sugieren paréntesis alrededor de la comparación para un operando de %<^%>" | |
33908 | ||
33909 | -#: c-family/c-common.c:10116 | |
33910 | +#: c-family/c-common.c:10118 | |
33911 | #, gcc-internal-format | |
33912 | msgid "suggest parentheses around %<+%> in operand of %<&%>" | |
33913 | msgstr "se sugieren paréntesis alrededor de %<+%> para un operando de %<&%>" | |
33914 | ||
33915 | -#: c-family/c-common.c:10119 | |
33916 | +#: c-family/c-common.c:10121 | |
33917 | #, gcc-internal-format | |
33918 | msgid "suggest parentheses around %<-%> in operand of %<&%>" | |
33919 | msgstr "se sugieren paréntesis alrededor de %<-%> para un operando de %<&%>" | |
33920 | ||
33921 | -#: c-family/c-common.c:10124 | |
33922 | +#: c-family/c-common.c:10126 | |
33923 | #, gcc-internal-format | |
33924 | msgid "suggest parentheses around comparison in operand of %<&%>" | |
33925 | msgstr "se sugieren paréntesis alrededor de la comparación para un operando de %<&%>" | |
33926 | ||
33927 | -#: c-family/c-common.c:10128 | |
33928 | +#: c-family/c-common.c:10130 | |
33929 | #, gcc-internal-format | |
33930 | msgid "suggest parentheses around operand of %<!%> or change %<&%> to %<&&%> or %<!%> to %<~%>" | |
33931 | msgstr "se sugieren paréntesis alrededor de un operando de %<!%> o cambie %<&%> a %<&&%> o %<!%> a %<~%>" | |
33932 | ||
33933 | -#: c-family/c-common.c:10136 | |
33934 | +#: c-family/c-common.c:10138 | |
33935 | #, gcc-internal-format | |
33936 | msgid "suggest parentheses around comparison in operand of %<==%>" | |
33937 | msgstr "se sugieren paréntesis alrededor de la comparación en un operando de %<==%>" | |
33938 | ||
33939 | -#: c-family/c-common.c:10142 | |
33940 | +#: c-family/c-common.c:10144 | |
33941 | #, gcc-internal-format | |
33942 | msgid "suggest parentheses around comparison in operand of %<!=%>" | |
33943 | msgstr "se sugieren paréntesis alrededor de la comparación en un operando de %<!=%>" | |
33944 | ||
33945 | -#: c-family/c-common.c:10153 | |
33946 | +#: c-family/c-common.c:10155 | |
33947 | #, gcc-internal-format | |
33948 | msgid "comparisons like %<X<=Y<=Z%> do not have their mathematical meaning" | |
33949 | msgstr "las comparaciones como %<X<=Y<=Z%> no tienen su significado matemático" | |
33950 | ||
33951 | -#: c-family/c-common.c:10168 | |
33952 | +#: c-family/c-common.c:10170 | |
33953 | #, gcc-internal-format | |
33954 | msgid "label %q+D defined but not used" | |
33955 | msgstr "se define la etiqueta %q+D pero no se usa" | |
33956 | ||
33957 | -#: c-family/c-common.c:10170 | |
33958 | +#: c-family/c-common.c:10172 | |
33959 | #, gcc-internal-format | |
33960 | msgid "label %q+D declared but not defined" | |
33961 | msgstr "se declara la etiqueta %q+D pero no está definida" | |
33962 | ||
33963 | -#: c-family/c-common.c:10186 | |
33964 | +#: c-family/c-common.c:10188 | |
33965 | #, gcc-internal-format | |
33966 | msgid "division by zero" | |
33967 | msgstr "división por cero" | |
33968 | ||
33969 | -#: c-family/c-common.c:10218 | |
33970 | +#: c-family/c-common.c:10220 | |
33971 | #, gcc-internal-format | |
33972 | msgid "comparison between types %qT and %qT" | |
33973 | msgstr "comparación entre los tipos %qT y %qT" | |
33974 | ||
33975 | -#: c-family/c-common.c:10269 | |
33976 | +#: c-family/c-common.c:10271 | |
33977 | #, gcc-internal-format | |
33978 | msgid "comparison between signed and unsigned integer expressions" | |
33979 | msgstr "comparación entre expresiones enteras signed y unsigned" | |
33980 | ||
33981 | -#: c-family/c-common.c:10320 | |
33982 | +#: c-family/c-common.c:10322 | |
33983 | #, gcc-internal-format | |
33984 | msgid "promoted ~unsigned is always non-zero" | |
33985 | msgstr "el ~unsigned promovido es siempre diferente de cero" | |
33986 | ||
33987 | -#: c-family/c-common.c:10323 | |
33988 | +#: c-family/c-common.c:10325 | |
33989 | #, gcc-internal-format | |
33990 | msgid "comparison of promoted ~unsigned with constant" | |
33991 | msgstr "comparación de un ~unsigned promovido con una constante" | |
33992 | ||
33993 | -#: c-family/c-common.c:10333 | |
33994 | +#: c-family/c-common.c:10335 | |
33995 | #, gcc-internal-format | |
33996 | msgid "comparison of promoted ~unsigned with unsigned" | |
33997 | msgstr "comparación de un ~unsigned promovido con unsigned" | |
33998 | ||
33999 | -#: c-family/c-common.c:10511 | |
34000 | +#: c-family/c-common.c:10513 | |
34001 | #, gcc-internal-format | |
34002 | msgid "typedef %qD locally defined but not used" | |
34003 | msgstr "se define tipo %qD localmente pero no se usa" | |
34004 | @@ -22560,7 +22720,7 @@ | |
34005 | #. coalesced sections. Weak aliases (or any other kind of aliases) are | |
34006 | #. not supported. Weak symbols that aren't visible outside the .s file | |
34007 | #. are not supported. | |
34008 | -#: config/darwin.h:439 | |
34009 | +#: config/darwin.h:441 | |
34010 | #, gcc-internal-format | |
34011 | msgid "alias definitions not supported in Mach-O; ignored" | |
34012 | msgstr "las definiciones de alias no se admiten en Mach-O; descartadas" | |
34013 | @@ -22571,284 +22731,285 @@ | |
34014 | msgid "profiler support for VxWorks" | |
34015 | msgstr "soporte de análisis de perfil para VxWorks" | |
34016 | ||
34017 | -#: config/alpha/alpha.c:277 | |
34018 | +#: config/alpha/alpha.c:282 | |
34019 | #, gcc-internal-format | |
34020 | msgid "bad value %qs for -mtrap-precision switch" | |
34021 | msgstr "valor %qs erróneo para el interruptor -mtrap-precision" | |
34022 | ||
34023 | -#: config/alpha/alpha.c:291 | |
34024 | +#: config/alpha/alpha.c:296 | |
34025 | #, gcc-internal-format | |
34026 | msgid "bad value %qs for -mfp-rounding-mode switch" | |
34027 | msgstr "valor %qs erróneo para el interruptor -mfp-rounding-mode" | |
34028 | ||
34029 | -#: config/alpha/alpha.c:306 | |
34030 | +#: config/alpha/alpha.c:311 | |
34031 | #, gcc-internal-format | |
34032 | msgid "bad value %qs for -mfp-trap-mode switch" | |
34033 | msgstr "valor %qs erróneo para el interruptor -mfp-trap-mode" | |
34034 | ||
34035 | -#: config/alpha/alpha.c:320 | |
34036 | +#: config/alpha/alpha.c:325 | |
34037 | #, gcc-internal-format | |
34038 | msgid "bad value %qs for -mcpu switch" | |
34039 | msgstr "valor %qs erróneo para el interruptor -mcpu" | |
34040 | ||
34041 | -#: config/alpha/alpha.c:332 | |
34042 | +#: config/alpha/alpha.c:337 | |
34043 | #, gcc-internal-format | |
34044 | msgid "bad value %qs for -mtune switch" | |
34045 | msgstr "valor erróneo %qs para la opción -mtune" | |
34046 | ||
34047 | -#: config/alpha/alpha.c:340 | |
34048 | +#: config/alpha/alpha.c:345 | |
34049 | #, gcc-internal-format | |
34050 | msgid "fp software completion requires -mtrap-precision=i" | |
34051 | msgstr "el completado por software de fp requiere una opción -mtrap-precision=i" | |
34052 | ||
34053 | -#: config/alpha/alpha.c:356 | |
34054 | +#: config/alpha/alpha.c:361 | |
34055 | #, gcc-internal-format | |
34056 | msgid "rounding mode not supported for VAX floats" | |
34057 | msgstr "el modo de redondeo no se admite para floats de VAX" | |
34058 | ||
34059 | -#: config/alpha/alpha.c:361 | |
34060 | +#: config/alpha/alpha.c:366 | |
34061 | #, gcc-internal-format | |
34062 | msgid "trap mode not supported for VAX floats" | |
34063 | msgstr "el modo de captura no se admite para valores de coma flotante VAX" | |
34064 | ||
34065 | -#: config/alpha/alpha.c:365 | |
34066 | +#: config/alpha/alpha.c:370 | |
34067 | #, gcc-internal-format | |
34068 | msgid "128-bit long double not supported for VAX floats" | |
34069 | msgstr "los long double de 128 bits no se admiten para valores de coma flotante VAX" | |
34070 | ||
34071 | -#: config/alpha/alpha.c:393 | |
34072 | +#: config/alpha/alpha.c:398 | |
34073 | #, gcc-internal-format, gfc-internal-format | |
34074 | msgid "L%d cache latency unknown for %s" | |
34075 | msgstr "latencia de caché L%d desconocida para %s" | |
34076 | ||
34077 | -#: config/alpha/alpha.c:408 | |
34078 | +#: config/alpha/alpha.c:413 | |
34079 | #, gcc-internal-format | |
34080 | msgid "bad value %qs for -mmemory-latency" | |
34081 | msgstr "valor %qs erróneo para -mmemory-latency" | |
34082 | ||
34083 | -#: config/alpha/alpha.c:6551 config/alpha/alpha.c:6554 config/s390/s390.c:9157 | |
34084 | -#: config/s390/s390.c:9160 | |
34085 | +#: config/alpha/alpha.c:6556 config/alpha/alpha.c:6559 config/s390/s390.c:9162 | |
34086 | +#: config/s390/s390.c:9165 config/tilegx/tilegx.c:3394 | |
34087 | +#: config/tilepro/tilepro.c:3098 | |
34088 | #, gcc-internal-format | |
34089 | msgid "bad builtin fcode" | |
34090 | msgstr "fcode interno erróneo" | |
34091 | ||
34092 | -#: config/arm/arm.c:1523 | |
34093 | +#: config/arm/arm.c:1512 | |
34094 | #, gcc-internal-format, gfc-internal-format | |
34095 | msgid "switch -mcpu=%s conflicts with -march=%s switch" | |
34096 | msgstr "la opción -mcpu=%s genera un conflicto con la opción -march=%s" | |
34097 | ||
34098 | -#: config/arm/arm.c:1640 | |
34099 | +#: config/arm/arm.c:1629 | |
34100 | #, gcc-internal-format | |
34101 | msgid "target CPU does not support ARM mode" | |
34102 | msgstr "el CPU objetivo no tiene soporte para el modo ARM" | |
34103 | ||
34104 | -#: config/arm/arm.c:1646 | |
34105 | +#: config/arm/arm.c:1635 | |
34106 | #, gcc-internal-format | |
34107 | msgid "target CPU does not support interworking" | |
34108 | msgstr "el CPU objetivo no admite trabajo interno" | |
34109 | ||
34110 | -#: config/arm/arm.c:1652 | |
34111 | +#: config/arm/arm.c:1641 | |
34112 | #, gcc-internal-format | |
34113 | msgid "target CPU does not support THUMB instructions" | |
34114 | msgstr "el CPU objetivo no admite las instrucciones THUMB" | |
34115 | ||
34116 | -#: config/arm/arm.c:1670 | |
34117 | +#: config/arm/arm.c:1659 | |
34118 | #, gcc-internal-format | |
34119 | msgid "enabling backtrace support is only meaningful when compiling for the Thumb" | |
34120 | msgstr "habilitar el soporte de rastreo hacia atrás sólo tiene significado cuando se compila para el Thumb" | |
34121 | ||
34122 | -#: config/arm/arm.c:1673 | |
34123 | +#: config/arm/arm.c:1662 | |
34124 | #, gcc-internal-format | |
34125 | msgid "enabling callee interworking support is only meaningful when compiling for the Thumb" | |
34126 | msgstr "habilitar el soporte de trabajo interno de llamado sólo tiene significado cuando se compila para el Thumb" | |
34127 | ||
34128 | -#: config/arm/arm.c:1677 | |
34129 | +#: config/arm/arm.c:1666 | |
34130 | #, gcc-internal-format | |
34131 | msgid "-mapcs-stack-check incompatible with -mno-apcs-frame" | |
34132 | msgstr "-mapcs-stack-check es incompatible con -mno-apcs-frame" | |
34133 | ||
34134 | -#: config/arm/arm.c:1685 | |
34135 | +#: config/arm/arm.c:1674 | |
34136 | #, gcc-internal-format | |
34137 | msgid "-fpic and -mapcs-reent are incompatible" | |
34138 | msgstr "-fpic y -mapcs-reent son incompatibles" | |
34139 | ||
34140 | -#: config/arm/arm.c:1688 | |
34141 | +#: config/arm/arm.c:1677 | |
34142 | #, gcc-internal-format | |
34143 | msgid "APCS reentrant code not supported. Ignored" | |
34144 | msgstr "no se admite el código reentrante APCS. Descartado" | |
34145 | ||
34146 | -#: config/arm/arm.c:1696 | |
34147 | +#: config/arm/arm.c:1685 | |
34148 | #, gcc-internal-format | |
34149 | msgid "-g with -mno-apcs-frame may not give sensible debugging" | |
34150 | msgstr "-g con -mno-apcs-frame no permite una depuración sensible" | |
34151 | ||
34152 | -#: config/arm/arm.c:1699 | |
34153 | +#: config/arm/arm.c:1688 | |
34154 | #, gcc-internal-format | |
34155 | msgid "passing floating point arguments in fp regs not yet supported" | |
34156 | msgstr "aún no se admite el paso de argumentos de coma flotante en registros fp" | |
34157 | ||
34158 | -#: config/arm/arm.c:1702 | |
34159 | +#: config/arm/arm.c:1691 | |
34160 | #, gcc-internal-format | |
34161 | msgid "%<mwords-little-endian%> is deprecated and will be removed in a future release" | |
34162 | msgstr "%<mwords-little-endian%> es obsoleto y se eliminará en una versión futura" | |
34163 | ||
34164 | -#: config/arm/arm.c:1764 | |
34165 | +#: config/arm/arm.c:1753 | |
34166 | #, gcc-internal-format | |
34167 | msgid "iwmmxt requires an AAPCS compatible ABI for proper operation" | |
34168 | msgstr "iwmmxt requiere una ABI compatible con AAPCS para una operación adecuada" | |
34169 | ||
34170 | -#: config/arm/arm.c:1767 | |
34171 | +#: config/arm/arm.c:1756 | |
34172 | #, gcc-internal-format | |
34173 | msgid "iwmmxt abi requires an iwmmxt capable cpu" | |
34174 | msgstr "el abi iwmmxt requiere un cpu capaz de iwmmxt" | |
34175 | ||
34176 | -#: config/arm/arm.c:1815 | |
34177 | +#: config/arm/arm.c:1804 | |
34178 | #, gcc-internal-format | |
34179 | msgid "FPA is unsupported in the AAPCS" | |
34180 | msgstr "no se admite FPA en el AAPCS" | |
34181 | ||
34182 | -#: config/arm/arm.c:1820 | |
34183 | +#: config/arm/arm.c:1809 | |
34184 | #, gcc-internal-format | |
34185 | msgid "AAPCS does not support -mcaller-super-interworking" | |
34186 | msgstr "AAPCS no admite -mcaller-super-interworking" | |
34187 | ||
34188 | -#: config/arm/arm.c:1823 | |
34189 | +#: config/arm/arm.c:1812 | |
34190 | #, gcc-internal-format | |
34191 | msgid "AAPCS does not support -mcallee-super-interworking" | |
34192 | msgstr "AAPCS no admite -mcallee-super-interworking" | |
34193 | ||
34194 | -#: config/arm/arm.c:1830 | |
34195 | +#: config/arm/arm.c:1819 | |
34196 | #, gcc-internal-format | |
34197 | msgid "iWMMXt and hardware floating point" | |
34198 | msgstr "coma flotante iWMMXt y de hardware" | |
34199 | ||
34200 | -#: config/arm/arm.c:1834 | |
34201 | +#: config/arm/arm.c:1823 | |
34202 | #, gcc-internal-format | |
34203 | msgid "Thumb-2 iWMMXt" | |
34204 | msgstr "iWMMXt de Thumb-2" | |
34205 | ||
34206 | -#: config/arm/arm.c:1838 | |
34207 | +#: config/arm/arm.c:1827 | |
34208 | #, gcc-internal-format | |
34209 | msgid "__fp16 and no ldrh" | |
34210 | msgstr "__fp16 sin ldrh" | |
34211 | ||
34212 | -#: config/arm/arm.c:1858 | |
34213 | +#: config/arm/arm.c:1847 | |
34214 | #, gcc-internal-format | |
34215 | msgid "-mfloat-abi=hard and VFP" | |
34216 | msgstr "-mfloat-abi=hard y VFP" | |
34217 | ||
34218 | -#: config/arm/arm.c:1883 | |
34219 | +#: config/arm/arm.c:1872 | |
34220 | #, gcc-internal-format | |
34221 | msgid "can not use -mtp=cp15 with 16-bit Thumb" | |
34222 | msgstr "no se puede usar -mtp=cp15 con Thumb de 16-bit" | |
34223 | ||
34224 | -#: config/arm/arm.c:1899 | |
34225 | +#: config/arm/arm.c:1888 | |
34226 | #, gcc-internal-format | |
34227 | msgid "structure size boundary can only be set to 8, 32 or 64" | |
34228 | msgstr "el límite del tamaño de la estructura sólo se puede establecer a 8, 32 o 64" | |
34229 | ||
34230 | -#: config/arm/arm.c:1901 | |
34231 | +#: config/arm/arm.c:1890 | |
34232 | #, gcc-internal-format | |
34233 | msgid "structure size boundary can only be set to 8 or 32" | |
34234 | msgstr "el límite del tamaño de la estructura sólo se puede establecer a 8 o 32" | |
34235 | ||
34236 | -#: config/arm/arm.c:1909 | |
34237 | +#: config/arm/arm.c:1898 | |
34238 | #, gcc-internal-format | |
34239 | msgid "RTP PIC is incompatible with Thumb" | |
34240 | msgstr "El PIC de RTP es incompatible con Thumb" | |
34241 | ||
34242 | -#: config/arm/arm.c:1918 | |
34243 | +#: config/arm/arm.c:1907 | |
34244 | #, gcc-internal-format | |
34245 | msgid "RTP PIC is incompatible with -msingle-pic-base" | |
34246 | msgstr "El PIC de RTP es incompatible con -msingle-pic-base" | |
34247 | ||
34248 | -#: config/arm/arm.c:1930 | |
34249 | +#: config/arm/arm.c:1919 | |
34250 | #, gcc-internal-format | |
34251 | msgid "-mpic-register= is useless without -fpic" | |
34252 | msgstr "-mpic-register= es inútil sin -fpic" | |
34253 | ||
34254 | -#: config/arm/arm.c:1939 | |
34255 | +#: config/arm/arm.c:1928 | |
34256 | #, gcc-internal-format, gfc-internal-format | |
34257 | msgid "unable to use '%s' for PIC register" | |
34258 | msgstr "no se puede usar '%s' para registro PIC" | |
34259 | ||
34260 | -#: config/arm/arm.c:1971 | |
34261 | +#: config/arm/arm.c:1960 | |
34262 | #, gcc-internal-format | |
34263 | msgid "target CPU does not support unaligned accesses" | |
34264 | msgstr "el CPU objetivo no admite accesos sin alinear" | |
34265 | ||
34266 | -#: config/arm/arm.c:1995 | |
34267 | +#: config/arm/arm.c:1984 | |
34268 | #, gcc-internal-format | |
34269 | msgid "-freorder-blocks-and-partition not supported on this architecture" | |
34270 | msgstr "no se admite -freorder-blocks-and-partition en esta arquitectura" | |
34271 | ||
34272 | -#: config/arm/arm.c:4043 | |
34273 | +#: config/arm/arm.c:4036 | |
34274 | #, gcc-internal-format | |
34275 | msgid "non-AAPCS derived PCS variant" | |
34276 | msgstr "variante PCS derivada de un no AAPCS" | |
34277 | ||
34278 | -#: config/arm/arm.c:4045 | |
34279 | +#: config/arm/arm.c:4038 | |
34280 | #, gcc-internal-format | |
34281 | msgid "variadic functions must use the base AAPCS variant" | |
34282 | msgstr "las funciones variadic debe usar la variante AAPCS base" | |
34283 | ||
34284 | -#: config/arm/arm.c:4064 | |
34285 | +#: config/arm/arm.c:4057 | |
34286 | #, gcc-internal-format | |
34287 | msgid "PCS variant" | |
34288 | msgstr "variante PCS" | |
34289 | ||
34290 | -#: config/arm/arm.c:4259 | |
34291 | +#: config/arm/arm.c:4252 | |
34292 | #, gcc-internal-format | |
34293 | msgid "Thumb-1 hard-float VFP ABI" | |
34294 | msgstr "ABI de VFP de coma flotante dura de Thumb-1" | |
34295 | ||
34296 | -#: config/arm/arm.c:4975 config/arm/arm.c:4993 config/avr/avr.c:6748 | |
34297 | -#: config/avr/avr.c:6764 config/bfin/bfin.c:4636 config/bfin/bfin.c:4697 | |
34298 | +#: config/arm/arm.c:4975 config/arm/arm.c:4993 config/avr/avr.c:6866 | |
34299 | +#: config/avr/avr.c:6882 config/bfin/bfin.c:4636 config/bfin/bfin.c:4697 | |
34300 | #: config/bfin/bfin.c:4726 config/h8300/h8300.c:5394 config/i386/i386.c:4899 | |
34301 | -#: config/i386/i386.c:31712 config/i386/i386.c:31763 config/i386/i386.c:31836 | |
34302 | +#: config/i386/i386.c:31746 config/i386/i386.c:31797 config/i386/i386.c:31870 | |
34303 | #: config/m68k/m68k.c:725 config/mcore/mcore.c:3076 config/mep/mep.c:4011 | |
34304 | #: config/mep/mep.c:4025 config/mep/mep.c:4099 config/rl78/rl78.c:478 | |
34305 | -#: config/rs6000/rs6000.c:24244 config/rx/rx.c:2502 config/sh/sh.c:8885 | |
34306 | -#: config/sh/sh.c:8903 config/sh/sh.c:8932 config/sh/sh.c:9014 | |
34307 | -#: config/sh/sh.c:9037 config/spu/spu.c:3977 config/stormy16/stormy16.c:2200 | |
34308 | +#: config/rs6000/rs6000.c:24261 config/rx/rx.c:2502 config/sh/sh.c:8890 | |
34309 | +#: config/sh/sh.c:8908 config/sh/sh.c:8937 config/sh/sh.c:9019 | |
34310 | +#: config/sh/sh.c:9042 config/spu/spu.c:3977 config/stormy16/stormy16.c:2200 | |
34311 | #: config/v850/v850.c:2057 | |
34312 | #, gcc-internal-format | |
34313 | msgid "%qE attribute only applies to functions" | |
34314 | msgstr "el atributo %qE se aplica solamente a funciones" | |
34315 | ||
34316 | -#: config/arm/arm.c:18922 | |
34317 | +#: config/arm/arm.c:18925 | |
34318 | #, gcc-internal-format | |
34319 | msgid "unable to compute real location of stacked parameter" | |
34320 | msgstr "no se puede calcular la ubicación real del parámetro apilado" | |
34321 | ||
34322 | -#: config/arm/arm.c:20660 | |
34323 | +#: config/arm/arm.c:20665 | |
34324 | #, gcc-internal-format | |
34325 | msgid "argument must be a constant" | |
34326 | msgstr "el argumento debe ser una constante" | |
34327 | ||
34328 | #. @@@ better error message | |
34329 | -#: config/arm/arm.c:21029 config/arm/arm.c:21066 | |
34330 | +#: config/arm/arm.c:21034 config/arm/arm.c:21071 | |
34331 | #, gcc-internal-format | |
34332 | msgid "selector must be an immediate" | |
34333 | msgstr "el selector debe ser un inmediato" | |
34334 | ||
34335 | #. @@@ better error message | |
34336 | -#: config/arm/arm.c:21109 | |
34337 | +#: config/arm/arm.c:21114 | |
34338 | #, gcc-internal-format | |
34339 | msgid "mask must be an immediate" | |
34340 | msgstr "la máscara debe ser un inmediato" | |
34341 | ||
34342 | -#: config/arm/arm.c:21893 | |
34343 | +#: config/arm/arm.c:21898 | |
34344 | #, gcc-internal-format | |
34345 | msgid "no low registers available for popping high registers" | |
34346 | msgstr "no hay registros inferiores disponibles para extraer registros superiores" | |
34347 | ||
34348 | -#: config/arm/arm.c:22118 | |
34349 | +#: config/arm/arm.c:22123 | |
34350 | #, gcc-internal-format | |
34351 | msgid "interrupt Service Routines cannot be coded in Thumb mode" | |
34352 | msgstr "no se pueden codificar las Rutinas de Servicios de Interrupción en el modo Thumb" | |
34353 | ||
34354 | -#: config/arm/arm.c:24404 | |
34355 | +#: config/arm/arm.c:24409 | |
34356 | #, gcc-internal-format | |
34357 | msgid "the mangling of %<va_list%> has changed in GCC 4.4" | |
34358 | msgstr "la decodificación de %<va_list%> cambió en GCC 4.4" | |
34359 | @@ -22863,91 +23024,101 @@ | |
34360 | msgid "static variable %q+D is marked dllimport" | |
34361 | msgstr "la variable estática %q+D se marcó como dllimport" | |
34362 | ||
34363 | -#: config/avr/avr.c:742 | |
34364 | +#: config/avr/avr.c:666 | |
34365 | #, gcc-internal-format | |
34366 | msgid "'builtin_return_address' contains only 2 bytes of address" | |
34367 | msgstr "'builtin_return_address' sólo contiene 2 bytes de dirección" | |
34368 | ||
34369 | -#: config/avr/avr.c:1778 | |
34370 | +#: config/avr/avr.c:1775 | |
34371 | #, gcc-internal-format | |
34372 | msgid "pointer offset from symbol maybe incorrect" | |
34373 | msgstr "el desplazamiento del puntero desde el símbolo tal vez es incorrecto" | |
34374 | ||
34375 | -#: config/avr/avr.c:1895 | |
34376 | +#: config/avr/avr.c:1898 | |
34377 | #, gcc-internal-format | |
34378 | msgid "accessing data memory with program memory address" | |
34379 | msgstr "se accede a memoria de datos con dirección de memoria de programa" | |
34380 | ||
34381 | -#: config/avr/avr.c:1944 | |
34382 | +#: config/avr/avr.c:1947 | |
34383 | #, gcc-internal-format | |
34384 | msgid "accessing program memory with data memory address" | |
34385 | msgstr "se accede a memoria de programa con dirección de memoria de datos" | |
34386 | ||
34387 | -#: config/avr/avr.c:2350 | |
34388 | +#: config/avr/avr.c:2353 | |
34389 | #, gcc-internal-format, gfc-internal-format | |
34390 | msgid "fixed register %s used to pass parameter to function" | |
34391 | msgstr "se usó el registro fijo %s para pasar un parámetro a la función" | |
34392 | ||
34393 | -#: config/avr/avr.c:2622 | |
34394 | +#: config/avr/avr.c:2625 | |
34395 | #, gcc-internal-format | |
34396 | msgid "writing to address space %qs not supported" | |
34397 | msgstr "no se admite escribir al espacio de direcciones %qs" | |
34398 | ||
34399 | -#: config/avr/avr.c:6660 | |
34400 | +#: config/avr/avr.c:6778 | |
34401 | #, gcc-internal-format | |
34402 | msgid "%qs appears to be a misspelled interrupt handler" | |
34403 | msgstr "%qs parece ser un manejador de interrupciones mal escrito" | |
34404 | ||
34405 | -#: config/avr/avr.c:6669 | |
34406 | +#: config/avr/avr.c:6787 | |
34407 | #, gcc-internal-format | |
34408 | msgid "%qs appears to be a misspelled signal handler" | |
34409 | msgstr "%qs parece ser un manejador de señales mal escrito" | |
34410 | ||
34411 | -#: config/avr/avr.c:6932 | |
34412 | +#: config/avr/avr.c:7060 | |
34413 | #, gcc-internal-format | |
34414 | +msgid "%qT uses address space %qs beyond flash of %qs" | |
34415 | +msgstr "%qT usa el espacio de direcciones %qs más allá del destello de %qs" | |
34416 | + | |
34417 | +#: config/avr/avr.c:7063 | |
34418 | +#, gcc-internal-format | |
34419 | +msgid "%s %q+D uses address space %qs beyond flash of %qs" | |
34420 | +msgstr "%s %q+D usa el espacio de direcciones %qs más allá del destello de %qs" | |
34421 | + | |
34422 | +#: config/avr/avr.c:7070 | |
34423 | +#, gcc-internal-format | |
34424 | msgid "pointer targeting address space %qs must be const in %qT" | |
34425 | msgstr "el espacio de direcciones %qs que apuntan a punteros debe ser const en %qT" | |
34426 | ||
34427 | -#: config/avr/avr.c:6935 | |
34428 | +#: config/avr/avr.c:7073 | |
34429 | #, gcc-internal-format | |
34430 | msgid "pointer targeting address space %qs must be const in %s %q+D" | |
34431 | msgstr "el espacio de direcciones %qs que apuntan a punteros debe ser const en %s %q+D" | |
34432 | ||
34433 | -#: config/avr/avr.c:6978 | |
34434 | +#: config/avr/avr.c:7111 | |
34435 | #, gcc-internal-format | |
34436 | +msgid "variable %q+D located in address space %qs beyond flash of %qs" | |
34437 | +msgstr "la variable %q+D se ubica en el espacio de direcciones %qs más allá del destello de %qs" | |
34438 | + | |
34439 | +#: config/avr/avr.c:7127 | |
34440 | +#, gcc-internal-format | |
34441 | msgid "variable %q+D must be const in order to be put into read-only section by means of %qs" | |
34442 | msgstr "la variable %q+D debe ser const para que se ponga en la sección de sólo lectura a través de %qs" | |
34443 | ||
34444 | -#: config/avr/avr.c:7188 | |
34445 | +#: config/avr/avr.c:7341 | |
34446 | #, gcc-internal-format | |
34447 | msgid "only uninitialized variables can be placed in the .noinit section" | |
34448 | msgstr "Sólo las variables sin inicializar se pueden colocar en la sección .noinit" | |
34449 | ||
34450 | -#: config/avr/avr.c:7229 | |
34451 | +#: config/avr/avr.c:7382 | |
34452 | #, gcc-internal-format | |
34453 | msgid "uninitialized variable %q+D put into program memory area" | |
34454 | msgstr "se colocó la variable %q+D sin inicializar en el área de memoria del programa" | |
34455 | ||
34456 | -#: config/avr/avr.c:7296 | |
34457 | +#: config/avr/avr.c:7449 | |
34458 | #, gcc-internal-format | |
34459 | msgid "MCU %qs supported for assembler only" | |
34460 | msgstr "MCU %qs sólo se admite para ensamblador" | |
34461 | ||
34462 | -#: config/avr/avr.c:10519 | |
34463 | +#: config/avr/avr.c:10677 | |
34464 | #, gcc-internal-format, gfc-internal-format | |
34465 | msgid "%s expects a compile time integer constant" | |
34466 | msgstr "%s expera una constante entera en tiempo de compilación" | |
34467 | ||
34468 | -#: config/avr/avr.c:10532 | |
34469 | +#: config/avr/avr.c:10691 | |
34470 | #, gcc-internal-format, gfc-internal-format | |
34471 | msgid "%s expects a compile time long integer constant as first argument" | |
34472 | msgstr "%s espera una constante entera long en tiempo de compilación como primer argumento" | |
34473 | ||
34474 | -#: config/avr/avr.c:10545 | |
34475 | -#, gcc-internal-format, gfc-internal-format | |
34476 | -msgid "%s expects a compile time long long integer constant as first argument" | |
34477 | -msgstr "%s espera una constante entera long long en tiempo de compilación como primer argumento" | |
34478 | - | |
34479 | #: config/bfin/bfin.c:2348 | |
34480 | #, gcc-internal-format | |
34481 | msgid "-mfdpic is not supported, please use a bfin-linux-uclibc target" | |
34482 | @@ -23029,6 +23200,21 @@ | |
34483 | msgid "profiling is not yet implemented for this architecture" | |
34484 | msgstr "el análisis de perfil aún no se implementa en esta arquitectura" | |
34485 | ||
34486 | +#: config/cr16/cr16.c:294 | |
34487 | +#, gcc-internal-format | |
34488 | +msgid "data-model=far not valid for cr16c architecture" | |
34489 | +msgstr "data-model=far no es válido para la arquitectura cr16c" | |
34490 | + | |
34491 | +#: config/cr16/cr16.c:297 | |
34492 | +#, gcc-internal-format, gfc-internal-format | |
34493 | +msgid "invalid data model option -mdata-model=%s" | |
34494 | +msgstr "opción de modelo de datos -mdata-model=%s inválida" | |
34495 | + | |
34496 | +#: config/cr16/cr16.h:431 | |
34497 | +#, gcc-internal-format | |
34498 | +msgid "profiler support for CR16" | |
34499 | +msgstr "soporte de análisis de perfil para CR16" | |
34500 | + | |
34501 | #. This function is for retrieving a part of an instruction name for | |
34502 | #. an operator, for immediate output. If that ever happens for | |
34503 | #. MULT, we need to apply TARGET_MUL_BUG in the caller. Make sure | |
34504 | @@ -23168,22 +23354,22 @@ | |
34505 | msgid "no FUNCTION_PROFILER for CRIS" | |
34506 | msgstr "no hay FUNCTION_PROFILER para CRIS" | |
34507 | ||
34508 | -#: config/epiphany/epiphany.c:433 | |
34509 | +#: config/epiphany/epiphany.c:441 config/epiphany/epiphany.c:481 | |
34510 | #, gcc-internal-format | |
34511 | msgid "argument of %qE attribute is not a string constant" | |
34512 | msgstr "el argumento del atributo %qE no es una cadena constante" | |
34513 | ||
34514 | -#: config/epiphany/epiphany.c:448 | |
34515 | +#: config/epiphany/epiphany.c:456 | |
34516 | #, gcc-internal-format | |
34517 | msgid "argument of %qE attribute is not \"reset\", \"software_exception\", \"page_miss\", \"timer0\", \"timer1\", \"message\", \"dma0\", \"dma1\", \"wand\" or \"swi\"" | |
34518 | msgstr "el argumento del atributo %qE no es \"reset\", \"software_exception\", \"page_miss\", \"timer0\", \"timer1\", \"message\", \"dma0\", \"dma1\", \"wand\" o \"swi\"" | |
34519 | ||
34520 | -#: config/epiphany/epiphany.c:1428 | |
34521 | +#: config/epiphany/epiphany.c:1431 | |
34522 | #, gcc-internal-format | |
34523 | msgid "stack_offset must be at least 4" | |
34524 | msgstr "stack_offset debe ser por lo menos 4" | |
34525 | ||
34526 | -#: config/epiphany/epiphany.c:1430 | |
34527 | +#: config/epiphany/epiphany.c:1433 | |
34528 | #, gcc-internal-format | |
34529 | msgid "stack_offset must be a multiple of 4" | |
34530 | msgstr "stack_offset debe ser un múltiplo de 4" | |
34531 | @@ -23390,7 +23576,7 @@ | |
34532 | msgid "-mno-fentry isn%'t compatible with SEH" | |
34533 | msgstr "-mno-fentry no es compatible con SEH" | |
34534 | ||
34535 | -#: config/i386/i386.c:3861 config/rs6000/rs6000.c:3318 | |
34536 | +#: config/i386/i386.c:3861 config/rs6000/rs6000.c:3331 | |
34537 | #, gcc-internal-format, gfc-internal-format | |
34538 | msgid "unknown option for -mrecip=%s" | |
34539 | msgstr "opción desconocida para -mrecip=%s" | |
34540 | @@ -23415,7 +23601,7 @@ | |
34541 | msgid "regparam and thiscall attributes are not compatible" | |
34542 | msgstr "los atributos regparam y thiscall no son compatibles" | |
34543 | ||
34544 | -#: config/i386/i386.c:4924 config/i386/i386.c:31732 | |
34545 | +#: config/i386/i386.c:4924 config/i386/i386.c:31766 | |
34546 | #, gcc-internal-format | |
34547 | msgid "%qE attribute requires an integer constant argument" | |
34548 | msgstr "el atributo %qE requiere un argumento constante entero" | |
34549 | @@ -23567,112 +23753,112 @@ | |
34550 | msgid "-fsplit-stack does not support 3 register parameters" | |
34551 | msgstr "-fsplit-stack no admite 3 parámetros de registro" | |
34552 | ||
34553 | -#: config/i386/i386.c:13557 | |
34554 | +#: config/i386/i386.c:13584 | |
34555 | #, gcc-internal-format | |
34556 | msgid "extended registers have no high halves" | |
34557 | msgstr "los registros extendidos no tiene mitades superiores" | |
34558 | ||
34559 | -#: config/i386/i386.c:13572 | |
34560 | +#: config/i386/i386.c:13599 | |
34561 | #, gcc-internal-format | |
34562 | msgid "unsupported operand size for extended register" | |
34563 | msgstr "no se admite el tamaño de operando para el registro extendido" | |
34564 | ||
34565 | -#: config/i386/i386.c:13819 | |
34566 | +#: config/i386/i386.c:13846 | |
34567 | #, gcc-internal-format, gfc-internal-format | |
34568 | msgid "non-integer operand used with operand code '%c'" | |
34569 | msgstr "se usó un operando que no es entero con el código de operando '%c'" | |
34570 | ||
34571 | -#: config/i386/i386.c:27703 config/i386/i386.c:28640 | |
34572 | +#: config/i386/i386.c:27737 config/i386/i386.c:28674 | |
34573 | #, gcc-internal-format | |
34574 | msgid "the last argument must be a 2-bit immediate" | |
34575 | msgstr "el tercer argumento debe ser un inmediato de 2-bit" | |
34576 | ||
34577 | -#: config/i386/i386.c:28109 | |
34578 | +#: config/i386/i386.c:28143 | |
34579 | #, gcc-internal-format | |
34580 | msgid "the fifth argument must be an 8-bit immediate" | |
34581 | msgstr "el quinto argumento debe ser un inmediato de 8-bit" | |
34582 | ||
34583 | -#: config/i386/i386.c:28204 | |
34584 | +#: config/i386/i386.c:28238 | |
34585 | #, gcc-internal-format | |
34586 | msgid "the third argument must be an 8-bit immediate" | |
34587 | msgstr "el tercer argumento debe ser un inmediato de 8-bit" | |
34588 | ||
34589 | -#: config/i386/i386.c:28612 | |
34590 | +#: config/i386/i386.c:28646 | |
34591 | #, gcc-internal-format | |
34592 | msgid "the last argument must be an 1-bit immediate" | |
34593 | msgstr "el último argumento debe ser un inmediato de 1-bit" | |
34594 | ||
34595 | -#: config/i386/i386.c:28631 | |
34596 | +#: config/i386/i386.c:28665 | |
34597 | #, gcc-internal-format | |
34598 | msgid "the last argument must be a 4-bit immediate" | |
34599 | msgstr "el último argumento debe ser un inmediato de 4-bit" | |
34600 | ||
34601 | -#: config/i386/i386.c:28649 | |
34602 | +#: config/i386/i386.c:28683 | |
34603 | #, gcc-internal-format | |
34604 | msgid "the last argument must be a 1-bit immediate" | |
34605 | msgstr "el último argumento debe ser un inmediato de 1-bit" | |
34606 | ||
34607 | -#: config/i386/i386.c:28658 | |
34608 | +#: config/i386/i386.c:28692 | |
34609 | #, gcc-internal-format | |
34610 | msgid "the last argument must be a 5-bit immediate" | |
34611 | msgstr "el tercer argumento debe ser un inmediato de 5-bit" | |
34612 | ||
34613 | -#: config/i386/i386.c:28667 | |
34614 | +#: config/i386/i386.c:28701 | |
34615 | #, gcc-internal-format | |
34616 | msgid "the next to last argument must be an 8-bit immediate" | |
34617 | msgstr "el penúltimo argumento debe ser un inmediato de 8-bit" | |
34618 | ||
34619 | -#: config/i386/i386.c:28671 config/i386/i386.c:28895 | |
34620 | +#: config/i386/i386.c:28705 config/i386/i386.c:28929 | |
34621 | #, gcc-internal-format | |
34622 | msgid "the last argument must be an 8-bit immediate" | |
34623 | msgstr "el último argumento debe ser un inmediato de 8-bit" | |
34624 | ||
34625 | -#: config/i386/i386.c:28893 | |
34626 | +#: config/i386/i386.c:28927 | |
34627 | #, gcc-internal-format | |
34628 | msgid "the last argument must be a 32-bit immediate" | |
34629 | msgstr "el último argumento debe ser un inmediato de 32-bit" | |
34630 | ||
34631 | -#: config/i386/i386.c:28961 config/rs6000/rs6000.c:10535 | |
34632 | +#: config/i386/i386.c:28995 config/rs6000/rs6000.c:10551 | |
34633 | #, gcc-internal-format | |
34634 | msgid "selector must be an integer constant in the range 0..%wi" | |
34635 | msgstr "el selector debe ser una constante entera en el rango 0..%wi" | |
34636 | ||
34637 | -#: config/i386/i386.c:29104 | |
34638 | +#: config/i386/i386.c:29138 | |
34639 | #, gcc-internal-format | |
34640 | msgid "%qE needs unknown isa option" | |
34641 | msgstr "%qE necesita la opción isa desconocida" | |
34642 | ||
34643 | -#: config/i386/i386.c:29108 | |
34644 | +#: config/i386/i386.c:29142 | |
34645 | #, gcc-internal-format | |
34646 | msgid "%qE needs isa option %s" | |
34647 | msgstr "%qE necesita la opción isa %s" | |
34648 | ||
34649 | -#: config/i386/i386.c:29279 | |
34650 | +#: config/i386/i386.c:29313 | |
34651 | #, gcc-internal-format | |
34652 | msgid "last argument must be an immediate" | |
34653 | msgstr "el último argumento debe ser un inmediato" | |
34654 | ||
34655 | -#: config/i386/i386.c:29473 | |
34656 | +#: config/i386/i386.c:29507 | |
34657 | #, gcc-internal-format | |
34658 | msgid "last argument must be scale 1, 2, 4, 8" | |
34659 | msgstr "el argumento izquierdo debe ser un escalar 1, 2, 4, 8" | |
34660 | ||
34661 | -#: config/i386/i386.c:31719 | |
34662 | +#: config/i386/i386.c:31753 | |
34663 | #, gcc-internal-format | |
34664 | msgid "%qE attribute only available for 32-bit" | |
34665 | msgstr "el atributo %qE solamente está disponible para 64-bit" | |
34666 | ||
34667 | -#: config/i386/i386.c:31740 | |
34668 | +#: config/i386/i386.c:31774 | |
34669 | #, gcc-internal-format | |
34670 | msgid "argument to %qE attribute is neither zero, nor one" | |
34671 | msgstr "el argumento del atributo %qE no es cero ni uno" | |
34672 | ||
34673 | -#: config/i386/i386.c:31774 config/i386/i386.c:31783 | |
34674 | +#: config/i386/i386.c:31808 config/i386/i386.c:31817 | |
34675 | #, gcc-internal-format | |
34676 | msgid "ms_abi and sysv_abi attributes are not compatible" | |
34677 | msgstr "los atributos ms_abi y sysv_abi no son compatibles" | |
34678 | ||
34679 | -#: config/i386/i386.c:31821 config/rs6000/rs6000.c:24327 | |
34680 | +#: config/i386/i386.c:31855 config/rs6000/rs6000.c:24344 | |
34681 | #, gcc-internal-format | |
34682 | msgid "%qE incompatible attribute ignored" | |
34683 | msgstr "se descarta el atributo incompatible %qE" | |
34684 | @@ -23742,13 +23928,13 @@ | |
34685 | msgid "%qE attribute requires a string constant argument" | |
34686 | msgstr "el atributo %qE requiere una constante entera como argumento" | |
34687 | ||
34688 | -#: config/ia64/ia64.c:5737 config/pa/pa.c:412 config/sh/sh.c:8733 | |
34689 | +#: config/ia64/ia64.c:5737 config/pa/pa.c:412 config/sh/sh.c:8738 | |
34690 | #: config/spu/spu.c:5187 | |
34691 | #, gcc-internal-format | |
34692 | msgid "value of -mfixed-range must have form REG1-REG2" | |
34693 | msgstr "el valor de -mfixed-range debe ser de la forma REG1-REG2" | |
34694 | ||
34695 | -#: config/ia64/ia64.c:5764 config/pa/pa.c:439 config/sh/sh.c:8759 | |
34696 | +#: config/ia64/ia64.c:5764 config/pa/pa.c:439 config/sh/sh.c:8764 | |
34697 | #: config/spu/spu.c:5213 | |
34698 | #, gcc-internal-format, gfc-internal-format | |
34699 | msgid "%s-%s is an empty range" | |
34700 | @@ -23820,7 +24006,7 @@ | |
34701 | msgstr "no se admite el atributo %qE para el objetivo R8C" | |
34702 | ||
34703 | #. The argument must be a constant integer. | |
34704 | -#: config/m32c/m32c.c:3169 config/sh/sh.c:8940 config/sh/sh.c:9046 | |
34705 | +#: config/m32c/m32c.c:3169 config/sh/sh.c:8945 config/sh/sh.c:9051 | |
34706 | #, gcc-internal-format | |
34707 | msgid "%qE attribute argument not an integer constant" | |
34708 | msgstr "el argumento del atributo %qE no es una constante entera" | |
34709 | @@ -23875,7 +24061,7 @@ | |
34710 | msgid "interrupt_thread is available only on fido" | |
34711 | msgstr "interrupt_thread sólo está disponible en fido" | |
34712 | ||
34713 | -#: config/m68k/m68k.c:1072 config/rs6000/rs6000.c:18605 | |
34714 | +#: config/m68k/m68k.c:1072 config/rs6000/rs6000.c:18621 | |
34715 | #, gcc-internal-format | |
34716 | msgid "stack limit expression is not supported" | |
34717 | msgstr "no se admite la expresión del límite de la pila" | |
34718 | @@ -24168,112 +24354,112 @@ | |
34719 | msgid "-mxl-multiply-high requires -mno-xl-soft-mul" | |
34720 | msgstr "-mxl-multiply-high requiere -mno-xl-soft-mul" | |
34721 | ||
34722 | -#: config/mips/mips.c:1273 config/mips/mips.c:1275 | |
34723 | +#: config/mips/mips.c:1282 config/mips/mips.c:1284 | |
34724 | #, gcc-internal-format | |
34725 | msgid "%qs attribute only applies to functions" | |
34726 | msgstr "el atributo %qs se aplica solamente a funciones" | |
34727 | ||
34728 | -#: config/mips/mips.c:1285 | |
34729 | +#: config/mips/mips.c:1294 | |
34730 | #, gcc-internal-format | |
34731 | msgid "%qE cannot have both %<mips16%> and %<nomips16%> attributes" | |
34732 | msgstr "%qE no puede tener atributos %<mips16%> y %<nomips16%> al mismo tiempo" | |
34733 | ||
34734 | -#: config/mips/mips.c:1307 config/mips/mips.c:1310 | |
34735 | +#: config/mips/mips.c:1316 config/mips/mips.c:1319 | |
34736 | #, gcc-internal-format | |
34737 | msgid "%qE redeclared with conflicting %qs attributes" | |
34738 | msgstr "%qE se redeclaró con los atributos %qs en conflicto" | |
34739 | ||
34740 | -#: config/mips/mips.c:6408 | |
34741 | +#: config/mips/mips.c:6570 | |
34742 | #, gcc-internal-format | |
34743 | msgid "cannot handle inconsistent calls to %qs" | |
34744 | msgstr "no se pueden manejar llamadas inconsistentes a %qs" | |
34745 | ||
34746 | -#: config/mips/mips.c:9352 | |
34747 | +#: config/mips/mips.c:9523 | |
34748 | #, gcc-internal-format | |
34749 | msgid "the %<interrupt%> attribute requires a MIPS32r2 processor" | |
34750 | msgstr "el atributo %<interrupt%> requiere un procesador MIPS32r2" | |
34751 | ||
34752 | -#: config/mips/mips.c:9354 | |
34753 | +#: config/mips/mips.c:9525 | |
34754 | #, gcc-internal-format | |
34755 | msgid "the %<interrupt%> attribute requires %<-msoft-float%>" | |
34756 | msgstr "el atributo %<interrupt%> requiere %<-msoft-float%>" | |
34757 | ||
34758 | -#: config/mips/mips.c:9356 | |
34759 | +#: config/mips/mips.c:9527 | |
34760 | #, gcc-internal-format | |
34761 | msgid "interrupt handlers cannot be MIPS16 functions" | |
34762 | msgstr "los manejadores de interrupciones no pueden ser funciones MIPS16" | |
34763 | ||
34764 | -#: config/mips/mips.c:13418 | |
34765 | +#: config/mips/mips.c:13589 | |
34766 | #, gcc-internal-format | |
34767 | msgid "invalid argument to built-in function" | |
34768 | msgstr "argumento inválido para la función interna" | |
34769 | ||
34770 | -#: config/mips/mips.c:13618 | |
34771 | +#: config/mips/mips.c:13789 | |
34772 | #, gcc-internal-format | |
34773 | msgid "built-in function %qE not supported for MIPS16" | |
34774 | msgstr "no se admite la función interna %qE para MIPS16" | |
34775 | ||
34776 | -#: config/mips/mips.c:14210 | |
34777 | +#: config/mips/mips.c:14381 | |
34778 | #, gcc-internal-format | |
34779 | msgid "%qs does not support MIPS16 code" | |
34780 | msgstr "%qs no admite código MIPS16" | |
34781 | ||
34782 | -#: config/mips/mips.c:15452 | |
34783 | +#: config/mips/mips.c:15623 | |
34784 | #, gcc-internal-format | |
34785 | msgid "MIPS16 PIC for ABIs other than o32 and o64" | |
34786 | msgstr "PIC MIPS16 para ABIs diferentes de o32 y o64" | |
34787 | ||
34788 | -#: config/mips/mips.c:15455 | |
34789 | +#: config/mips/mips.c:15626 | |
34790 | #, gcc-internal-format | |
34791 | msgid "MIPS16 -mxgot code" | |
34792 | msgstr "código MIPS16 -mxgot" | |
34793 | ||
34794 | -#: config/mips/mips.c:15458 | |
34795 | +#: config/mips/mips.c:15629 | |
34796 | #, gcc-internal-format | |
34797 | msgid "hard-float MIPS16 code for ABIs other than o32 and o64" | |
34798 | msgstr "código MIPS16 de coma flotante hard para ABIs diferentes de o32 y o64" | |
34799 | ||
34800 | -#: config/mips/mips.c:15647 | |
34801 | +#: config/mips/mips.c:15818 | |
34802 | #, gcc-internal-format | |
34803 | msgid "%<-%s%> conflicts with the other architecture options, which specify a %s processor" | |
34804 | msgstr "%<-%s%> genera un conflicto con las otras opciones de la arquitectura, las cuales especifican un procesador %s" | |
34805 | ||
34806 | -#: config/mips/mips.c:15657 | |
34807 | +#: config/mips/mips.c:15828 | |
34808 | #, gcc-internal-format | |
34809 | msgid "%<-march=%s%> is not compatible with the selected ABI" | |
34810 | msgstr "%<-march=%s%> no es compatible con la ABI seleccionada" | |
34811 | ||
34812 | -#: config/mips/mips.c:15672 | |
34813 | +#: config/mips/mips.c:15843 | |
34814 | #, gcc-internal-format | |
34815 | msgid "%<-mgp64%> used with a 32-bit processor" | |
34816 | msgstr "se utiliza %<-mgp64%> con un procesador de 32-bit" | |
34817 | ||
34818 | -#: config/mips/mips.c:15674 | |
34819 | +#: config/mips/mips.c:15845 | |
34820 | #, gcc-internal-format | |
34821 | msgid "%<-mgp32%> used with a 64-bit ABI" | |
34822 | msgstr "se utiliza %<-mgp32%> con una ABI de 64-bit" | |
34823 | ||
34824 | -#: config/mips/mips.c:15676 | |
34825 | +#: config/mips/mips.c:15847 | |
34826 | #, gcc-internal-format | |
34827 | msgid "%<-mgp64%> used with a 32-bit ABI" | |
34828 | msgstr "se utiliza %<-mgp64%> con una ABI de 32-bit" | |
34829 | ||
34830 | -#: config/mips/mips.c:15692 config/mips/mips.c:15694 config/mips/mips.c:15785 | |
34831 | +#: config/mips/mips.c:15863 config/mips/mips.c:15865 config/mips/mips.c:15956 | |
34832 | #, gcc-internal-format, gfc-internal-format | |
34833 | msgid "unsupported combination: %s" | |
34834 | msgstr "no se admite la combinación: %s" | |
34835 | ||
34836 | -#: config/mips/mips.c:15698 | |
34837 | +#: config/mips/mips.c:15869 | |
34838 | #, gcc-internal-format | |
34839 | msgid "%<-mgp32%> and %<-mfp64%> can only be combined if the target supports the mfhc1 and mthc1 instructions" | |
34840 | msgstr "%<-mgp32%> y %<-mfp64%> sólo se pueden combinar si el objetivo admite las instrucciones mfhc1 y mthc1" | |
34841 | ||
34842 | -#: config/mips/mips.c:15701 | |
34843 | +#: config/mips/mips.c:15872 | |
34844 | #, gcc-internal-format | |
34845 | msgid "%<-mgp32%> and %<-mfp64%> can only be combined when using the o32 ABI" | |
34846 | msgstr "%<-mgp32%> y %<-mfp64%> sólo se pueden combinar al usar la ABI o32" | |
34847 | ||
34848 | -#: config/mips/mips.c:15724 config/mips/mips.c:15726 config/mips/mips.c:15739 | |
34849 | +#: config/mips/mips.c:15895 config/mips/mips.c:15897 config/mips/mips.c:15910 | |
34850 | #, gcc-internal-format | |
34851 | msgid "%qs is incompatible with %qs" | |
34852 | msgstr "%qs es incompatible con %qs" | |
34853 | @@ -24283,57 +24469,57 @@ | |
34854 | #. effort to support the combination of 32-bit GOT entries | |
34855 | #. and 64-bit pointers, so we treat the abicalls case as | |
34856 | #. an error. | |
34857 | -#: config/mips/mips.c:15733 | |
34858 | +#: config/mips/mips.c:15904 | |
34859 | #, gcc-internal-format | |
34860 | msgid "the combination of %qs and %qs is incompatible with %qs" | |
34861 | msgstr "la combinacion de %qs y %qs es incompatible con %qs" | |
34862 | ||
34863 | -#: config/mips/mips.c:15779 | |
34864 | +#: config/mips/mips.c:15950 | |
34865 | #, gcc-internal-format | |
34866 | msgid "the %qs architecture does not support branch-likely instructions" | |
34867 | msgstr "la arquitectura %qs no admite las instrucciones con probabilidad de ramificación" | |
34868 | ||
34869 | -#: config/mips/mips.c:15819 | |
34870 | +#: config/mips/mips.c:15990 | |
34871 | #, gcc-internal-format | |
34872 | msgid "%<-mno-gpopt%> needs %<-mexplicit-relocs%>" | |
34873 | msgstr "%<-mno-gpopt%> necesita %<-mexplicit-relocs%>" | |
34874 | ||
34875 | -#: config/mips/mips.c:15827 config/mips/mips.c:15830 | |
34876 | +#: config/mips/mips.c:15998 config/mips/mips.c:16001 | |
34877 | #, gcc-internal-format | |
34878 | msgid "cannot use small-data accesses for %qs" | |
34879 | msgstr "no se pueden usar accesos de data small para %qs" | |
34880 | ||
34881 | -#: config/mips/mips.c:15844 | |
34882 | +#: config/mips/mips.c:16015 | |
34883 | #, gcc-internal-format | |
34884 | msgid "%<-mips3d%> requires %<-mpaired-single%>" | |
34885 | msgstr "%<-mips3d%> requiere %<-mpaired-single%>" | |
34886 | ||
34887 | -#: config/mips/mips.c:15853 | |
34888 | +#: config/mips/mips.c:16024 | |
34889 | #, gcc-internal-format | |
34890 | msgid "%qs must be used with %qs" | |
34891 | msgstr "%qs se debe usar con %qs" | |
34892 | ||
34893 | -#: config/mips/mips.c:15860 | |
34894 | +#: config/mips/mips.c:16031 | |
34895 | #, gcc-internal-format | |
34896 | msgid "the %qs architecture does not support paired-single instructions" | |
34897 | msgstr "la arquitectura %qs no admite las instrucciones par-sencillo" | |
34898 | ||
34899 | -#: config/mips/mips.c:15866 | |
34900 | +#: config/mips/mips.c:16037 | |
34901 | #, gcc-internal-format | |
34902 | msgid "%qs requires a target that provides the %qs instruction" | |
34903 | msgstr "%qs requiere un objetivo que provea la instrucción %qs" | |
34904 | ||
34905 | -#: config/mips/mips.c:15971 | |
34906 | +#: config/mips/mips.c:16142 | |
34907 | #, gcc-internal-format | |
34908 | msgid "%qs requires branch-likely instructions" | |
34909 | msgstr "%qs requiere instrucciones con probabilidad de ramificación" | |
34910 | ||
34911 | -#: config/mips/mips.c:15975 | |
34912 | +#: config/mips/mips.c:16146 | |
34913 | #, gcc-internal-format | |
34914 | msgid "the %qs architecture does not support the synci instruction" | |
34915 | msgstr "la arquitectura %qs no admite la instrucción synci" | |
34916 | ||
34917 | -#: config/mips/mips.c:16425 | |
34918 | +#: config/mips/mips.c:16596 | |
34919 | #, gcc-internal-format | |
34920 | msgid "mips16 function profiling" | |
34921 | msgstr "análisis de perfil de las funciones mips16" | |
34922 | @@ -24414,7 +24600,7 @@ | |
34923 | msgid "-g option disabled" | |
34924 | msgstr "opción -g desactivada" | |
34925 | ||
34926 | -#: config/pa/pa.c:8598 | |
34927 | +#: config/pa/pa.c:8619 | |
34928 | #, gcc-internal-format, gfc-internal-format | |
34929 | msgid "alignment (%u) for %s exceeds maximum alignment for global common data. Using %u" | |
34930 | msgstr "la alineación (%u) para %s excede la alineación máxima para los datos comunes globales. Se usará %u" | |
34931 | @@ -24634,288 +24820,288 @@ | |
34932 | msgid "-m64 requires PowerPC64 architecture, enabling" | |
34933 | msgstr "-m64 requiere la arquitectura PowerPC64, activando" | |
34934 | ||
34935 | -#: config/rs6000/rs6000.c:2615 | |
34936 | +#: config/rs6000/rs6000.c:2616 | |
34937 | #, gcc-internal-format | |
34938 | msgid "-malign-power is not supported for 64-bit Darwin; it is incompatible with the installed C and C++ libraries" | |
34939 | msgstr "no se admite -malign-power para Darwin de 64-bit; es incompatible con las bibliotecas C y C++ instaladas" | |
34940 | ||
34941 | -#: config/rs6000/rs6000.c:2621 | |
34942 | +#: config/rs6000/rs6000.c:2622 | |
34943 | #, gcc-internal-format | |
34944 | msgid "not configured for SPE ABI" | |
34945 | msgstr "no se configuró para ABI SPE" | |
34946 | ||
34947 | -#: config/rs6000/rs6000.c:2697 | |
34948 | +#: config/rs6000/rs6000.c:2710 | |
34949 | #, gcc-internal-format | |
34950 | msgid "AltiVec not supported in this target" | |
34951 | msgstr "no se admite AltiVec en este objetivo" | |
34952 | ||
34953 | -#: config/rs6000/rs6000.c:2699 | |
34954 | +#: config/rs6000/rs6000.c:2712 | |
34955 | #, gcc-internal-format | |
34956 | msgid "SPE not supported in this target" | |
34957 | msgstr "no se admite SPE en este objetivo" | |
34958 | ||
34959 | -#: config/rs6000/rs6000.c:2726 | |
34960 | +#: config/rs6000/rs6000.c:2739 | |
34961 | #, gcc-internal-format | |
34962 | msgid "-mmultiple is not supported on little endian systems" | |
34963 | msgstr "no se admite -mmultiple en sistemas little endian" | |
34964 | ||
34965 | -#: config/rs6000/rs6000.c:2733 | |
34966 | +#: config/rs6000/rs6000.c:2746 | |
34967 | #, gcc-internal-format | |
34968 | msgid "-mstring is not supported on little endian systems" | |
34969 | msgstr "no se admite -mstring en sistemas little endian" | |
34970 | ||
34971 | -#: config/rs6000/rs6000.c:2839 | |
34972 | +#: config/rs6000/rs6000.c:2852 | |
34973 | #, gcc-internal-format, gfc-internal-format | |
34974 | msgid "unknown vectorization library ABI type (%s) for -mveclibabi= switch" | |
34975 | msgstr "tipo de ABI de biblioteca de vectorización desconocida (%s) para la opción -mveclibabi=" | |
34976 | ||
34977 | -#: config/rs6000/rs6000.c:2851 | |
34978 | +#: config/rs6000/rs6000.c:2864 | |
34979 | #, gcc-internal-format | |
34980 | msgid "target attribute or pragma changes long double size" | |
34981 | msgstr "el atributo o pragma target cambia el tamaño de double long" | |
34982 | ||
34983 | -#: config/rs6000/rs6000.c:2872 config/rs6000/rs6000.c:2887 | |
34984 | +#: config/rs6000/rs6000.c:2885 config/rs6000/rs6000.c:2900 | |
34985 | #, gcc-internal-format | |
34986 | msgid "target attribute or pragma changes AltiVec ABI" | |
34987 | msgstr "el atributo o pragma target cambia la ABI Altivec" | |
34988 | ||
34989 | -#: config/rs6000/rs6000.c:2904 | |
34990 | +#: config/rs6000/rs6000.c:2917 | |
34991 | #, gcc-internal-format | |
34992 | msgid "target attribute or pragma changes darwin64 ABI" | |
34993 | msgstr "el atributo o pragma target cambia la ABI darwin64" | |
34994 | ||
34995 | -#: config/rs6000/rs6000.c:2945 | |
34996 | +#: config/rs6000/rs6000.c:2958 | |
34997 | #, gcc-internal-format | |
34998 | msgid "target attribute or pragma changes SPE ABI" | |
34999 | msgstr "el atributo o pragma target cabia la ABI SPE" | |
35000 | ||
35001 | -#: config/rs6000/rs6000.c:3268 | |
35002 | +#: config/rs6000/rs6000.c:3281 | |
35003 | #, gcc-internal-format | |
35004 | msgid "target attribute or pragma changes single precision floating point" | |
35005 | msgstr "el atributo o pragma target cambia la coma flotante de precisión sencilla" | |
35006 | ||
35007 | -#: config/rs6000/rs6000.c:3271 | |
35008 | +#: config/rs6000/rs6000.c:3284 | |
35009 | #, gcc-internal-format | |
35010 | msgid "target attribute or pragma changes double precision floating point" | |
35011 | msgstr "el atributo o pragma target cambia la coma flotante de precisión doble" | |
35012 | ||
35013 | -#: config/rs6000/rs6000.c:7407 | |
35014 | +#: config/rs6000/rs6000.c:7420 | |
35015 | #, gcc-internal-format | |
35016 | msgid "GCC vector returned by reference: non-standard ABI extension with no compatibility guarantee" | |
35017 | msgstr "Se devolvió un vector GCC por referencia: extensión de ABI no estándar sin garantía de compatibilidad" | |
35018 | ||
35019 | -#: config/rs6000/rs6000.c:7545 | |
35020 | +#: config/rs6000/rs6000.c:7561 | |
35021 | #, gcc-internal-format | |
35022 | msgid "cannot return value in vector register because altivec instructions are disabled, use -maltivec to enable them" | |
35023 | msgstr "no se puede devolver un valor en el registro vector porque las instrucciones altivec están desactivadas, use -maltivec para activarlas" | |
35024 | ||
35025 | -#: config/rs6000/rs6000.c:7888 | |
35026 | +#: config/rs6000/rs6000.c:7904 | |
35027 | #, gcc-internal-format | |
35028 | msgid "cannot pass argument in vector register because altivec instructions are disabled, use -maltivec to enable them" | |
35029 | msgstr "no se puede pasar argumentos en el registro vector porque las instrucciones altivec están desactivadas, use -maltivec para activarlas" | |
35030 | ||
35031 | -#: config/rs6000/rs6000.c:8814 | |
35032 | +#: config/rs6000/rs6000.c:8830 | |
35033 | #, gcc-internal-format | |
35034 | msgid "GCC vector passed by reference: non-standard ABI extension with no compatibility guarantee" | |
35035 | msgstr "vector GCC pasado por referencia: extensión ABI que no es estándar sin garantía de compatibilidad" | |
35036 | ||
35037 | -#: config/rs6000/rs6000.c:9443 | |
35038 | +#: config/rs6000/rs6000.c:9459 | |
35039 | #, gcc-internal-format, gfc-internal-format | |
35040 | msgid "internal error: builtin function %s already processed" | |
35041 | msgstr "error interno: la función interna %s ya se procesó" | |
35042 | ||
35043 | -#: config/rs6000/rs6000.c:9816 | |
35044 | +#: config/rs6000/rs6000.c:9832 | |
35045 | #, gcc-internal-format | |
35046 | msgid "argument 1 must be a 5-bit signed literal" | |
35047 | msgstr "el argumento 1 debe ser una literal con signo de 5-bit" | |
35048 | ||
35049 | -#: config/rs6000/rs6000.c:9919 config/rs6000/rs6000.c:10936 | |
35050 | +#: config/rs6000/rs6000.c:9935 config/rs6000/rs6000.c:10952 | |
35051 | #, gcc-internal-format | |
35052 | msgid "argument 2 must be a 5-bit unsigned literal" | |
35053 | msgstr "el argumento 2 debe ser una literal sin signo de 5-bit" | |
35054 | ||
35055 | -#: config/rs6000/rs6000.c:9958 | |
35056 | +#: config/rs6000/rs6000.c:9974 | |
35057 | #, gcc-internal-format | |
35058 | msgid "argument 1 of __builtin_altivec_predicate must be a constant" | |
35059 | msgstr "el argumento 1 de __builtin_altivec_predicate debe ser una constante" | |
35060 | ||
35061 | -#: config/rs6000/rs6000.c:10010 | |
35062 | +#: config/rs6000/rs6000.c:10026 | |
35063 | #, gcc-internal-format | |
35064 | msgid "argument 1 of __builtin_altivec_predicate is out of range" | |
35065 | msgstr "el argumento 1 de __builtin_altivec_predicate está fuera de rango" | |
35066 | ||
35067 | -#: config/rs6000/rs6000.c:10267 | |
35068 | +#: config/rs6000/rs6000.c:10283 | |
35069 | #, gcc-internal-format | |
35070 | msgid "argument 3 must be a 4-bit unsigned literal" | |
35071 | msgstr "el argumento 3 debe ser una literal sin signo de 4-bit" | |
35072 | ||
35073 | -#: config/rs6000/rs6000.c:10285 | |
35074 | +#: config/rs6000/rs6000.c:10301 | |
35075 | #, gcc-internal-format | |
35076 | msgid "argument 3 must be a 2-bit unsigned literal" | |
35077 | msgstr "el argumento 3 debe ser una literal sin signo de 2-bit" | |
35078 | ||
35079 | -#: config/rs6000/rs6000.c:10297 | |
35080 | +#: config/rs6000/rs6000.c:10313 | |
35081 | #, gcc-internal-format | |
35082 | msgid "argument 3 must be a 1-bit unsigned literal" | |
35083 | msgstr "el argumento 3 debe ser una literal sin signo de 1-bit" | |
35084 | ||
35085 | -#: config/rs6000/rs6000.c:10480 | |
35086 | +#: config/rs6000/rs6000.c:10496 | |
35087 | #, gcc-internal-format | |
35088 | msgid "argument to %qs must be a 2-bit unsigned literal" | |
35089 | msgstr "el argumento para %qs debe ser una literal sin signo de 2-bit" | |
35090 | ||
35091 | -#: config/rs6000/rs6000.c:10621 | |
35092 | +#: config/rs6000/rs6000.c:10637 | |
35093 | #, gcc-internal-format | |
35094 | msgid "unresolved overload for Altivec builtin %qF" | |
35095 | msgstr "sobrecarga sin resolver para el interno Altivec %qF" | |
35096 | ||
35097 | -#: config/rs6000/rs6000.c:10727 | |
35098 | +#: config/rs6000/rs6000.c:10743 | |
35099 | #, gcc-internal-format | |
35100 | msgid "argument to dss must be a 2-bit unsigned literal" | |
35101 | msgstr "el argumento para dss debe ser una literal sin signo de 2-bit" | |
35102 | ||
35103 | # continuar aqui | |
35104 | -#: config/rs6000/rs6000.c:11056 | |
35105 | +#: config/rs6000/rs6000.c:11072 | |
35106 | #, gcc-internal-format | |
35107 | msgid "argument 1 of __builtin_paired_predicate must be a constant" | |
35108 | msgstr "el argumento 1 de __builtin_paired_predicate debe ser una constante" | |
35109 | ||
35110 | -#: config/rs6000/rs6000.c:11103 | |
35111 | +#: config/rs6000/rs6000.c:11119 | |
35112 | #, gcc-internal-format | |
35113 | msgid "argument 1 of __builtin_paired_predicate is out of range" | |
35114 | msgstr "el argumento 1 de __builtin_paired_predicate está fuera de rango" | |
35115 | ||
35116 | -#: config/rs6000/rs6000.c:11128 | |
35117 | +#: config/rs6000/rs6000.c:11144 | |
35118 | #, gcc-internal-format | |
35119 | msgid "argument 1 of __builtin_spe_predicate must be a constant" | |
35120 | msgstr "el argumento 1 de __builtin_spe_predicate debe ser una constante" | |
35121 | ||
35122 | -#: config/rs6000/rs6000.c:11200 | |
35123 | +#: config/rs6000/rs6000.c:11216 | |
35124 | #, gcc-internal-format | |
35125 | msgid "argument 1 of __builtin_spe_predicate is out of range" | |
35126 | msgstr "el argumento 1 de __builtin_spe_predicate está fuera de rango" | |
35127 | ||
35128 | -#: config/rs6000/rs6000.c:11282 | |
35129 | +#: config/rs6000/rs6000.c:11298 | |
35130 | #, gcc-internal-format, gfc-internal-format | |
35131 | msgid "Builtin function %s is only valid for the cell processor" | |
35132 | msgstr "La función interna %s sólo es válida para el procesador cell" | |
35133 | ||
35134 | -#: config/rs6000/rs6000.c:11284 | |
35135 | +#: config/rs6000/rs6000.c:11300 | |
35136 | #, gcc-internal-format, gfc-internal-format | |
35137 | msgid "Builtin function %s requires the -mvsx option" | |
35138 | msgstr "La función interna %s requiere la opción -mvsx" | |
35139 | ||
35140 | -#: config/rs6000/rs6000.c:11286 | |
35141 | +#: config/rs6000/rs6000.c:11302 | |
35142 | #, gcc-internal-format, gfc-internal-format | |
35143 | msgid "Builtin function %s requires the -maltivec option" | |
35144 | msgstr "La función interna %s requiere la opción -maltivec" | |
35145 | ||
35146 | -#: config/rs6000/rs6000.c:11288 | |
35147 | +#: config/rs6000/rs6000.c:11304 | |
35148 | #, gcc-internal-format, gfc-internal-format | |
35149 | msgid "Builtin function %s requires the -mpaired option" | |
35150 | msgstr "La función interna %s requiere la opción -mpaired" | |
35151 | ||
35152 | -#: config/rs6000/rs6000.c:11290 | |
35153 | +#: config/rs6000/rs6000.c:11306 | |
35154 | #, gcc-internal-format, gfc-internal-format | |
35155 | msgid "Builtin function %s requires the -mspe option" | |
35156 | msgstr "La función interna %s requiere la opción -mspe" | |
35157 | ||
35158 | -#: config/rs6000/rs6000.c:11292 | |
35159 | +#: config/rs6000/rs6000.c:11308 | |
35160 | #, gcc-internal-format, gfc-internal-format | |
35161 | msgid "Builtin function %s is not supported with the current options" | |
35162 | msgstr "La función interna %s no se admite con las opciones actuales" | |
35163 | ||
35164 | -#: config/rs6000/rs6000.c:12552 | |
35165 | +#: config/rs6000/rs6000.c:12568 | |
35166 | #, gcc-internal-format, gfc-internal-format | |
35167 | msgid "internal error: builtin function %s had no type" | |
35168 | msgstr "error interno: la función interna %s no tiene tipo" | |
35169 | ||
35170 | -#: config/rs6000/rs6000.c:12559 | |
35171 | +#: config/rs6000/rs6000.c:12575 | |
35172 | #, gcc-internal-format, gfc-internal-format | |
35173 | msgid "internal error: builtin function %s had an unexpected return type %s" | |
35174 | msgstr "error interno: la función interna %s tiene un tipo de devolución inesperado %s" | |
35175 | ||
35176 | -#: config/rs6000/rs6000.c:12575 | |
35177 | +#: config/rs6000/rs6000.c:12591 | |
35178 | #, gcc-internal-format, gfc-internal-format | |
35179 | msgid "internal error: builtin function %s, argument %d had unexpected argument type %s" | |
35180 | msgstr "error interno: función interna %s, el argumento %d tiene el tipo de argumento inesperado %s" | |
35181 | ||
35182 | -#: config/rs6000/rs6000.c:18575 | |
35183 | +#: config/rs6000/rs6000.c:18591 | |
35184 | #, gcc-internal-format | |
35185 | msgid "stack frame too large" | |
35186 | msgstr "marco de pila demasiado grande" | |
35187 | ||
35188 | -#: config/rs6000/rs6000.c:22049 | |
35189 | +#: config/rs6000/rs6000.c:22065 | |
35190 | #, gcc-internal-format | |
35191 | msgid "no profiling of 64-bit code for this ABI" | |
35192 | msgstr "no hay análisis de perfil del código de 64-bit para esta ABI" | |
35193 | ||
35194 | -#: config/rs6000/rs6000.c:24034 | |
35195 | +#: config/rs6000/rs6000.c:24050 | |
35196 | #, gcc-internal-format | |
35197 | -msgid "-mno-r11 must not be used if you have trampolines" | |
35198 | -msgstr "no se debe usar -mno-r11 si tiene trampolines" | |
35199 | +msgid "You cannot take the address of a nested function if you use the -mno-pointers-to-nested-functions option." | |
35200 | +msgstr "No se puede tomar la dirección de una función anindada si se usa la opción -mno-pointers-to-nested-functions." | |
35201 | ||
35202 | -#: config/rs6000/rs6000.c:24114 | |
35203 | +#: config/rs6000/rs6000.c:24131 | |
35204 | #, gcc-internal-format | |
35205 | msgid "use of %<long double%> in AltiVec types is invalid" | |
35206 | msgstr "el uso de %<long double%> en tipos AltiVec es inválido" | |
35207 | ||
35208 | -#: config/rs6000/rs6000.c:24116 | |
35209 | +#: config/rs6000/rs6000.c:24133 | |
35210 | #, gcc-internal-format | |
35211 | msgid "use of boolean types in AltiVec types is invalid" | |
35212 | msgstr "el uso de tipos booleanos en tipos AltiVec es inválido" | |
35213 | ||
35214 | -#: config/rs6000/rs6000.c:24118 | |
35215 | +#: config/rs6000/rs6000.c:24135 | |
35216 | #, gcc-internal-format | |
35217 | msgid "use of %<complex%> in AltiVec types is invalid" | |
35218 | msgstr "el uso de %<complex%> en tipos AltiVec es inválido" | |
35219 | ||
35220 | -#: config/rs6000/rs6000.c:24120 | |
35221 | +#: config/rs6000/rs6000.c:24137 | |
35222 | #, gcc-internal-format | |
35223 | msgid "use of decimal floating point types in AltiVec types is invalid" | |
35224 | msgstr "el uso de tipos de coma flotante decimal en tipos AltiVec es inválido" | |
35225 | ||
35226 | -#: config/rs6000/rs6000.c:24126 | |
35227 | +#: config/rs6000/rs6000.c:24143 | |
35228 | #, gcc-internal-format | |
35229 | msgid "use of %<long%> in AltiVec types is invalid for 64-bit code without -mvsx" | |
35230 | msgstr "el uso de %<long%> en tipos AltiVec es inválido para código de 64 bit sin -mvsx" | |
35231 | ||
35232 | -#: config/rs6000/rs6000.c:24129 | |
35233 | +#: config/rs6000/rs6000.c:24146 | |
35234 | #, gcc-internal-format | |
35235 | msgid "use of %<long%> in AltiVec types is deprecated; use %<int%>" | |
35236 | msgstr "el uso de %<long%> en tipos AltiVec es obsoleto; use %<int%>" | |
35237 | ||
35238 | -#: config/rs6000/rs6000.c:24134 | |
35239 | +#: config/rs6000/rs6000.c:24151 | |
35240 | #, gcc-internal-format | |
35241 | msgid "use of %<long long%> in AltiVec types is invalid without -mvsx" | |
35242 | msgstr "el uso de %<long long%> en tipos AltiVec es inválido sin -mvsx" | |
35243 | ||
35244 | -#: config/rs6000/rs6000.c:24137 | |
35245 | +#: config/rs6000/rs6000.c:24154 | |
35246 | #, gcc-internal-format | |
35247 | msgid "use of %<double%> in AltiVec types is invalid without -mvsx" | |
35248 | msgstr "el uso de %<double%> en tipos AltiVec es inválido sin -mvsx" | |
35249 | ||
35250 | -#: config/rs6000/rs6000.c:26976 | |
35251 | +#: config/rs6000/rs6000.c:26993 | |
35252 | #, gcc-internal-format, gfc-internal-format | |
35253 | msgid "emitting microcode insn %s\t[%s] #%d" | |
35254 | msgstr "se emite el insn de microcódigo %s\t[%s] #%d" | |
35255 | ||
35256 | -#: config/rs6000/rs6000.c:26980 | |
35257 | +#: config/rs6000/rs6000.c:26997 | |
35258 | #, gcc-internal-format, gfc-internal-format | |
35259 | msgid "emitting conditional microcode insn %s\t[%s] #%d" | |
35260 | msgstr "se emite el insn de microcódigo condicional %s\t[%s] #%d" | |
35261 | ||
35262 | -#: config/rs6000/rs6000.c:27204 | |
35263 | +#: config/rs6000/rs6000.c:27221 | |
35264 | #, gcc-internal-format, gfc-internal-format | |
35265 | msgid "invalid cpu \"%s\" for %s\"%s\"%s" | |
35266 | msgstr "cpu \"%s\" inválido para %s\"%s\"%s" | |
35267 | ||
35268 | -#: config/rs6000/rs6000.c:27207 | |
35269 | +#: config/rs6000/rs6000.c:27224 | |
35270 | #, gcc-internal-format, gfc-internal-format | |
35271 | msgid "%s\"%s\"%s is not allowed" | |
35272 | msgstr "%s\"%s\"%s no está definido" | |
35273 | ||
35274 | -#: config/rs6000/rs6000.c:27209 | |
35275 | +#: config/rs6000/rs6000.c:27226 | |
35276 | #, gcc-internal-format, gfc-internal-format | |
35277 | msgid "%s\"%s\"%s is invalid" | |
35278 | msgstr "%s\"%s\"%s es inválido" | |
35279 | @@ -25088,123 +25274,123 @@ | |
35280 | msgid "64-bit ABI not supported in ESA/390 mode" | |
35281 | msgstr "no se admite la ABI de 64-bit en el modo ESA/390" | |
35282 | ||
35283 | -#: config/s390/s390.c:1548 | |
35284 | +#: config/s390/s390.c:1553 | |
35285 | #, gcc-internal-format, gfc-internal-format | |
35286 | msgid "hardware decimal floating point instructions not available on %s" | |
35287 | msgstr "las instrucciones de coma flotante decimal de hardware no están disponibles en %s" | |
35288 | ||
35289 | -#: config/s390/s390.c:1551 | |
35290 | +#: config/s390/s390.c:1556 | |
35291 | #, gcc-internal-format | |
35292 | msgid "hardware decimal floating point instructions not available in ESA/390 mode" | |
35293 | msgstr "las instrucciones de coma flotante decimal de hardware no están disponibles en el modo ESA/390" | |
35294 | ||
35295 | -#: config/s390/s390.c:1561 | |
35296 | +#: config/s390/s390.c:1566 | |
35297 | #, gcc-internal-format | |
35298 | msgid "-mhard-dfp can%'t be used in conjunction with -msoft-float" | |
35299 | msgstr "-mhard-dfp no se puede usar en conjunción con -msoft-float" | |
35300 | ||
35301 | -#: config/s390/s390.c:1585 | |
35302 | +#: config/s390/s390.c:1590 | |
35303 | #, gcc-internal-format | |
35304 | msgid "-mbackchain -mpacked-stack -mhard-float are not supported in combination" | |
35305 | msgstr "no se admiten -mbackchain -mpacked-stack -mhard-float en combinación" | |
35306 | ||
35307 | -#: config/s390/s390.c:1591 | |
35308 | +#: config/s390/s390.c:1596 | |
35309 | #, gcc-internal-format | |
35310 | msgid "stack size must be greater than the stack guard value" | |
35311 | msgstr "el tamaño de la pila debe ser mayor que el valor de la guardia de pila" | |
35312 | ||
35313 | -#: config/s390/s390.c:1593 | |
35314 | +#: config/s390/s390.c:1598 | |
35315 | #, gcc-internal-format | |
35316 | msgid "stack size must not be greater than 64k" | |
35317 | msgstr "el tamaño de la pila no debe ser mayor a 64k" | |
35318 | ||
35319 | -#: config/s390/s390.c:1596 | |
35320 | +#: config/s390/s390.c:1601 | |
35321 | #, gcc-internal-format | |
35322 | msgid "-mstack-guard implies use of -mstack-size" | |
35323 | msgstr "-mstack-guard implica el uso de -mstack-size" | |
35324 | ||
35325 | -#: config/s390/s390.c:7365 | |
35326 | +#: config/s390/s390.c:7370 | |
35327 | #, gcc-internal-format | |
35328 | msgid "total size of local variables exceeds architecture limit" | |
35329 | msgstr "el tamaño total de las variables locales excede el límite de la arquitectura" | |
35330 | ||
35331 | -#: config/s390/s390.c:8072 | |
35332 | +#: config/s390/s390.c:8077 | |
35333 | #, gcc-internal-format | |
35334 | msgid "frame size of function %qs is %wd bytes exceeding user provided stack limit of %d bytes. An unconditional trap is added." | |
35335 | msgstr "el tamaño de marco de la función %qs de %wd bytes excede el límite de pila definido por el usuario de %d bytes. Se agrega una trampa incondicional." | |
35336 | ||
35337 | -#: config/s390/s390.c:8087 | |
35338 | +#: config/s390/s390.c:8092 | |
35339 | #, gcc-internal-format | |
35340 | msgid "frame size of function %qs is %wd bytes which is more than half the stack size. The dynamic check would not be reliable. No check emitted for this function." | |
35341 | msgstr "el tamaño de marco de la función %qs de %wd bytes es mayor que la mitad del tamaño de la pila. La revisión dinámica no será confiable. No se emitirá revisión para esta función." | |
35342 | ||
35343 | -#: config/s390/s390.c:8115 | |
35344 | +#: config/s390/s390.c:8120 | |
35345 | #, gcc-internal-format | |
35346 | msgid "frame size of %qs is %wd bytes" | |
35347 | msgstr "el tamaño de marco de %qs es de %wd bytes" | |
35348 | ||
35349 | -#: config/s390/s390.c:8119 | |
35350 | +#: config/s390/s390.c:8124 | |
35351 | #, gcc-internal-format | |
35352 | msgid "%qs uses dynamic stack allocation" | |
35353 | msgstr "%qs utiliza alojamiento dinámico de pila" | |
35354 | ||
35355 | -#: config/sh/sh.c:770 | |
35356 | +#: config/sh/sh.c:775 | |
35357 | #, gcc-internal-format | |
35358 | msgid "ignoring -fschedule-insns because of exception handling bug" | |
35359 | msgstr "se descarta -fschedule-insns debido a un error de manejo de excepciones" | |
35360 | ||
35361 | -#: config/sh/sh.c:791 | |
35362 | +#: config/sh/sh.c:796 | |
35363 | #, gcc-internal-format | |
35364 | msgid "unwind tables currently require either a frame pointer or -maccumulate-outgoing-args for correctness" | |
35365 | msgstr "actualmente las tablas de desenredo requieren un puntero de marco o -maccumulate-outgoing-args para ser correctas" | |
35366 | ||
35367 | -#: config/sh/sh.c:7655 | |
35368 | +#: config/sh/sh.c:7660 | |
35369 | #, gcc-internal-format | |
35370 | msgid "__builtin_saveregs not supported by this subtarget" | |
35371 | msgstr "no se admite __builtin_saveregs en este subobjetivo" | |
35372 | ||
35373 | -#: config/sh/sh.c:8821 | |
35374 | +#: config/sh/sh.c:8826 | |
35375 | #, gcc-internal-format | |
35376 | msgid "%qE attribute only applies to interrupt functions" | |
35377 | msgstr "el atributo %qE se aplica solamente a funciones de interrupción" | |
35378 | ||
35379 | -#: config/sh/sh.c:8879 | |
35380 | +#: config/sh/sh.c:8884 | |
35381 | #, gcc-internal-format | |
35382 | msgid "%qE attribute is supported only for SH2A" | |
35383 | msgstr "el atributo %qE solo se admite para SH2A" | |
35384 | ||
35385 | -#: config/sh/sh.c:8909 | |
35386 | +#: config/sh/sh.c:8914 | |
35387 | #, gcc-internal-format | |
35388 | msgid "attribute interrupt_handler is not compatible with -m5-compact" | |
35389 | msgstr "el atributo interrupt_handler no es compatible con -m5-compact" | |
35390 | ||
35391 | -#: config/sh/sh.c:8926 | |
35392 | +#: config/sh/sh.c:8931 | |
35393 | #, gcc-internal-format | |
35394 | msgid "%qE attribute only applies to SH2A" | |
35395 | msgstr "el atributo %qE solo se aplica a SH2A" | |
35396 | ||
35397 | -#: config/sh/sh.c:8948 | |
35398 | +#: config/sh/sh.c:8953 | |
35399 | #, gcc-internal-format | |
35400 | msgid "%qE attribute argument should be between 0 to 255" | |
35401 | msgstr "el argumento del atributo %qE debe estar entre 0 y 255" | |
35402 | ||
35403 | #. The argument must be a constant string. | |
35404 | -#: config/sh/sh.c:9021 | |
35405 | +#: config/sh/sh.c:9026 | |
35406 | #, gcc-internal-format | |
35407 | msgid "%qE attribute argument not a string constant" | |
35408 | msgstr "el argumento del atributo %qE no es una constante de cadena" | |
35409 | ||
35410 | -#: config/sh/sh.c:11601 | |
35411 | +#: config/sh/sh.c:11599 | |
35412 | #, gcc-internal-format | |
35413 | msgid "r0 needs to be available as a call-clobbered register" | |
35414 | msgstr "r0 necesita estar disponible como un registro sobreescrito por llamada" | |
35415 | ||
35416 | -#: config/sh/sh.c:11622 | |
35417 | +#: config/sh/sh.c:11620 | |
35418 | #, gcc-internal-format | |
35419 | msgid "need a second call-clobbered general purpose register" | |
35420 | msgstr "se necesita un segundo registro de propósito general sobreescrito por llamada" | |
35421 | ||
35422 | -#: config/sh/sh.c:11630 | |
35423 | +#: config/sh/sh.c:11628 | |
35424 | #, gcc-internal-format | |
35425 | msgid "need a call-clobbered target register" | |
35426 | msgstr "se necesita un registro objetivo sobreescrito por llamada" | |
35427 | @@ -25326,6 +25512,16 @@ | |
35428 | msgid "__BELOW100__ attribute not allowed with auto storage class" | |
35429 | msgstr "no se permite el atributo __BELOW100__ con una clase de auto almacenamiento" | |
35430 | ||
35431 | +#: config/tilegx/tilegx.c:3397 config/tilepro/tilepro.c:3101 | |
35432 | +#, gcc-internal-format | |
35433 | +msgid "bad builtin icode" | |
35434 | +msgstr "icode interno erróneo" | |
35435 | + | |
35436 | +#: config/tilegx/tilegx.c:3438 config/tilepro/tilepro.c:3127 | |
35437 | +#, gcc-internal-format | |
35438 | +msgid "operand must be an immediate of the right size" | |
35439 | +msgstr "el operando debe ser un inmediato del tamaño correcto" | |
35440 | + | |
35441 | #: config/v850/v850-c.c:67 | |
35442 | #, gcc-internal-format | |
35443 | msgid "#pragma GHS endXXXX found without previous startXXX" | |
35444 | @@ -25536,38 +25732,38 @@ | |
35445 | msgid "-fexcess-precision=standard for Ada" | |
35446 | msgstr "-fexcess-precision=standard para Ada" | |
35447 | ||
35448 | -#: ada/gcc-interface/utils.c:5289 ada/gcc-interface/utils.c:5464 | |
35449 | -#: ada/gcc-interface/utils.c:5506 ada/gcc-interface/utils.c:5560 | |
35450 | +#: ada/gcc-interface/utils.c:5295 ada/gcc-interface/utils.c:5470 | |
35451 | +#: ada/gcc-interface/utils.c:5512 ada/gcc-interface/utils.c:5566 | |
35452 | #, gcc-internal-format | |
35453 | msgid "%qs attribute ignored" | |
35454 | msgstr "se descarta el atributo %qs" | |
35455 | ||
35456 | -#: ada/gcc-interface/utils.c:5407 | |
35457 | +#: ada/gcc-interface/utils.c:5413 | |
35458 | #, gcc-internal-format | |
35459 | msgid "%qs attribute requires prototypes with named arguments" | |
35460 | msgstr "el atributo %qs requiere prototipos con argumentos nombrados" | |
35461 | ||
35462 | -#: ada/gcc-interface/utils.c:5416 | |
35463 | +#: ada/gcc-interface/utils.c:5422 | |
35464 | #, gcc-internal-format | |
35465 | msgid "%qs attribute only applies to variadic functions" | |
35466 | msgstr "el atributo %qs se aplica solamente a funciones variadic" | |
35467 | ||
35468 | -#: ada/gcc-interface/utils.c:5487 | |
35469 | +#: ada/gcc-interface/utils.c:5493 | |
35470 | #, gcc-internal-format | |
35471 | msgid "%qE attribute has no effect" | |
35472 | msgstr "el atributo %qE no tiene efecto" | |
35473 | ||
35474 | -#: ada/gcc-interface/utils.c:5593 | |
35475 | +#: ada/gcc-interface/utils.c:5599 | |
35476 | #, gcc-internal-format | |
35477 | msgid "invalid vector type for attribute %qs" | |
35478 | msgstr "tipo de vector inválido para el atributo %qs" | |
35479 | ||
35480 | -#: ada/gcc-interface/utils.c:5656 | |
35481 | +#: ada/gcc-interface/utils.c:5662 | |
35482 | #, gcc-internal-format | |
35483 | msgid "attribute %qs applies to array types only" | |
35484 | msgstr "el atributo %qs solamente se aplica a tipos de matriz" | |
35485 | ||
35486 | -#: ada/gcc-interface/utils.c:5683 | |
35487 | +#: ada/gcc-interface/utils.c:5689 | |
35488 | #, gcc-internal-format | |
35489 | msgid "invalid element type for attribute %qs" | |
35490 | msgstr "tipo de elemento inválido para el atributo %qs" | |
35491 | @@ -25583,7 +25779,7 @@ | |
35492 | msgid " no known conversion for argument %d from %qT to %qT" | |
35493 | msgstr " no hay una conversión conocida para el argumento %d de %qT a %qT" | |
35494 | ||
35495 | -#: cp/call.c:3125 cp/pt.c:5560 | |
35496 | +#: cp/call.c:3125 cp/pt.c:5562 | |
35497 | #, gcc-internal-format, gfc-internal-format | |
35498 | msgid " candidate expects %d argument, %d provided" | |
35499 | msgid_plural " candidate expects %d arguments, %d provided" | |
35500 | @@ -25903,7 +26099,7 @@ | |
35501 | msgid "cannot bind rvalue %qE to %qT" | |
35502 | msgstr "no se puede unir el r-valor %qE a %qT" | |
35503 | ||
35504 | -#: cp/call.c:6012 cp/cvt.c:1643 | |
35505 | +#: cp/call.c:6012 cp/cvt.c:1654 | |
35506 | #, gcc-internal-format | |
35507 | msgid "scoped enum %qT will not promote to an integral type in a future version of GCC" | |
35508 | msgstr "el enum en ámbito %qT no se promoverá a un tipo integral en una versión futura de GCC" | |
35509 | @@ -26346,144 +26542,144 @@ | |
35510 | msgid " %q+T is not an aggregate, does not have a trivial default constructor, and has no constexpr constructor that is not a copy or move constructor" | |
35511 | msgstr " %q+T no es un agregado, no tiene un constructor trivial por defecto y no tiene un constructor constexpr que no es un constructor copy o move" | |
35512 | ||
35513 | -#: cp/class.c:4924 | |
35514 | +#: cp/class.c:4944 | |
35515 | #, gcc-internal-format | |
35516 | msgid " base class %qT of %q+T is non-literal" | |
35517 | msgstr " la clase base %qT de %q+T no es literal" | |
35518 | ||
35519 | -#: cp/class.c:4938 | |
35520 | +#: cp/class.c:4958 | |
35521 | #, gcc-internal-format | |
35522 | msgid " non-static data member %q+D has non-literal type" | |
35523 | msgstr " el dato miembro que no es estático %q+D tiene un tipo que no es literal" | |
35524 | ||
35525 | -#: cp/class.c:5050 | |
35526 | +#: cp/class.c:5070 | |
35527 | #, gcc-internal-format | |
35528 | msgid "non-static reference %q+#D in class without a constructor" | |
35529 | msgstr "referencia %q+#D que no es static en una clase sin un constructor" | |
35530 | ||
35531 | -#: cp/class.c:5055 | |
35532 | +#: cp/class.c:5075 | |
35533 | #, gcc-internal-format | |
35534 | msgid "non-static const member %q+#D in class without a constructor" | |
35535 | msgstr "miembro const %q+#D que no es static en una clase sin un constructor" | |
35536 | ||
35537 | #. If the function is defaulted outside the class, we just | |
35538 | #. give the synthesis error. | |
35539 | -#: cp/class.c:5081 | |
35540 | +#: cp/class.c:5101 | |
35541 | #, gcc-internal-format | |
35542 | msgid "%q+D declared to take const reference, but implicit declaration would take non-const" | |
35543 | msgstr "se declaró %q+D para tomar referencia const, pero la declaración implícita tomaría algo que no es const" | |
35544 | ||
35545 | -#: cp/class.c:5084 | |
35546 | +#: cp/class.c:5104 | |
35547 | #, gcc-internal-format | |
35548 | msgid "%q+D declared to take non-const reference cannot be defaulted in the class body" | |
35549 | msgstr "se declaró %q+D para tomar referencia que no es const y no se puede definir por omisión en el cuerpo de clase" | |
35550 | ||
35551 | -#: cp/class.c:5308 | |
35552 | +#: cp/class.c:5328 | |
35553 | #, gcc-internal-format | |
35554 | msgid "offset of virtual base %qT is not ABI-compliant and may change in a future version of GCC" | |
35555 | msgstr "el desplazamiento de la base virtual %qT no cumple con la ABI y puede cambiar en una versión futura de GCC" | |
35556 | ||
35557 | -#: cp/class.c:5409 | |
35558 | +#: cp/class.c:5429 | |
35559 | #, gcc-internal-format | |
35560 | msgid "direct base %qT inaccessible in %qT due to ambiguity" | |
35561 | msgstr "base directa %qT inaccesible en %qT debido a ambigüedad" | |
35562 | ||
35563 | -#: cp/class.c:5421 | |
35564 | +#: cp/class.c:5441 | |
35565 | #, gcc-internal-format | |
35566 | msgid "virtual base %qT inaccessible in %qT due to ambiguity" | |
35567 | msgstr "base virtual %qT inaccesible en %qT debido a ambigüedad" | |
35568 | ||
35569 | -#: cp/class.c:5607 | |
35570 | +#: cp/class.c:5627 | |
35571 | #, gcc-internal-format | |
35572 | msgid "size assigned to %qT may not be ABI-compliant and may change in a future version of GCC" | |
35573 | msgstr "el tamaño asignado a %qT puede no cumplir con la ABI y puede cambiar en una versión futura de GCC" | |
35574 | ||
35575 | -#: cp/class.c:5647 | |
35576 | +#: cp/class.c:5667 | |
35577 | #, gcc-internal-format | |
35578 | msgid "the offset of %qD may not be ABI-compliant and may change in a future version of GCC" | |
35579 | msgstr "el desplazamiento de %qD tal vez no cumple con la ABI y puede cambiar en una versión futura de GCC" | |
35580 | ||
35581 | -#: cp/class.c:5675 | |
35582 | +#: cp/class.c:5695 | |
35583 | #, gcc-internal-format | |
35584 | msgid "offset of %q+D is not ABI-compliant and may change in a future version of GCC" | |
35585 | msgstr "el desplazamiento de %q+D no cumple con la ABI y puede cambiar en una versión futura de GCC" | |
35586 | ||
35587 | -#: cp/class.c:5685 | |
35588 | +#: cp/class.c:5705 | |
35589 | #, gcc-internal-format | |
35590 | msgid "%q+D contains empty classes which may cause base classes to be placed at different locations in a future version of GCC" | |
35591 | msgstr "%q+D contiene clases vacías las cuales pueden causar que las clases base se coloquen en diferentes ubicaciones en una versión futura de GCC" | |
35592 | ||
35593 | -#: cp/class.c:5773 | |
35594 | +#: cp/class.c:5793 | |
35595 | #, gcc-internal-format | |
35596 | msgid "layout of classes derived from empty class %qT may change in a future version of GCC" | |
35597 | msgstr "la disposición de clases derivadas de la clase vacía %qT puede cambiar en una versión futura de GCC" | |
35598 | ||
35599 | -#: cp/class.c:5942 cp/decl.c:11802 cp/parser.c:18577 | |
35600 | +#: cp/class.c:5962 cp/decl.c:11816 cp/parser.c:18577 | |
35601 | #, gcc-internal-format | |
35602 | msgid "redefinition of %q#T" | |
35603 | msgstr "redefinición de %q#T" | |
35604 | ||
35605 | -#: cp/class.c:6093 | |
35606 | +#: cp/class.c:6113 | |
35607 | #, gcc-internal-format | |
35608 | msgid "%q#T has virtual functions and accessible non-virtual destructor" | |
35609 | msgstr "%q#T tiene funciones virtuales y destructor no virtual accesible" | |
35610 | ||
35611 | -#: cp/class.c:6119 | |
35612 | +#: cp/class.c:6139 | |
35613 | #, gcc-internal-format | |
35614 | msgid "type transparent class %qT does not have any fields" | |
35615 | msgstr "la clase transparente tipo %qT no tiene ningún campo" | |
35616 | ||
35617 | -#: cp/class.c:6125 | |
35618 | +#: cp/class.c:6145 | |
35619 | #, gcc-internal-format | |
35620 | msgid "type transparent class %qT has base classes" | |
35621 | msgstr "la clase transparente tipo %qT tiene clases base" | |
35622 | ||
35623 | -#: cp/class.c:6129 | |
35624 | +#: cp/class.c:6149 | |
35625 | #, gcc-internal-format | |
35626 | msgid "type transparent class %qT has virtual functions" | |
35627 | msgstr "la clase transparente tipo %qT tiene funciones virtuales" | |
35628 | ||
35629 | -#: cp/class.c:6231 | |
35630 | +#: cp/class.c:6251 | |
35631 | #, gcc-internal-format | |
35632 | msgid "trying to finish struct, but kicked out due to previous parse errors" | |
35633 | msgstr "se trató de terminar struct, pero fue sacado debido a errores previos de decodificación" | |
35634 | ||
35635 | -#: cp/class.c:6737 | |
35636 | +#: cp/class.c:6757 | |
35637 | #, gcc-internal-format | |
35638 | msgid "language string %<\"%E\"%> not recognized" | |
35639 | msgstr "no se reconoce la cadena de lenguaje %<\"%E\"%>" | |
35640 | ||
35641 | -#: cp/class.c:6827 | |
35642 | +#: cp/class.c:6847 | |
35643 | #, gcc-internal-format | |
35644 | msgid "cannot resolve overloaded function %qD based on conversion to type %qT" | |
35645 | msgstr "no se puede resolver la función sobrecargada %qD basándose en la conversión al tipo %qT" | |
35646 | ||
35647 | -#: cp/class.c:6951 | |
35648 | +#: cp/class.c:6971 | |
35649 | #, gcc-internal-format | |
35650 | msgid "no matches converting function %qD to type %q#T" | |
35651 | msgstr "no hay coincidencias al convertir la función %qD al tipo %q#T" | |
35652 | ||
35653 | -#: cp/class.c:6974 | |
35654 | +#: cp/class.c:6994 | |
35655 | #, gcc-internal-format | |
35656 | msgid "converting overloaded function %qD to type %q#T is ambiguous" | |
35657 | msgstr "la conversión de la función sobrecargada %qD al tipo %q#T es ambigua" | |
35658 | ||
35659 | -#: cp/class.c:7001 | |
35660 | +#: cp/class.c:7021 | |
35661 | #, gcc-internal-format | |
35662 | msgid "assuming pointer to member %qD" | |
35663 | msgstr "asumiendo el puntero a miembro %qD" | |
35664 | ||
35665 | -#: cp/class.c:7004 | |
35666 | +#: cp/class.c:7024 | |
35667 | #, gcc-internal-format | |
35668 | msgid "(a pointer to member can only be formed with %<&%E%>)" | |
35669 | msgstr "(un puntero a miembro solamente se puede formar con %<&%E%>)" | |
35670 | ||
35671 | -#: cp/class.c:7066 cp/class.c:7100 | |
35672 | +#: cp/class.c:7086 cp/class.c:7120 | |
35673 | #, gcc-internal-format | |
35674 | msgid "not enough type information" | |
35675 | msgstr "no hay suficiente información de tipo" | |
35676 | ||
35677 | -#: cp/class.c:7083 cp/cvt.c:169 cp/cvt.c:194 cp/cvt.c:244 | |
35678 | +#: cp/class.c:7103 cp/cvt.c:169 cp/cvt.c:194 cp/cvt.c:244 | |
35679 | #, gcc-internal-format | |
35680 | msgid "cannot convert %qE from type %qT to type %qT" | |
35681 | msgstr "no se puede convertir %qE desde el tipo %qT al tipo %qT" | |
35682 | @@ -26493,12 +26689,12 @@ | |
35683 | #. A name N used in a class S shall refer to the same declaration | |
35684 | #. in its context and when re-evaluated in the completed scope of | |
35685 | #. S. | |
35686 | -#: cp/class.c:7394 cp/decl.c:1287 | |
35687 | +#: cp/class.c:7414 cp/decl.c:1287 | |
35688 | #, gcc-internal-format | |
35689 | msgid "declaration of %q#D" | |
35690 | msgstr "la declaración de %q#D" | |
35691 | ||
35692 | -#: cp/class.c:7395 | |
35693 | +#: cp/class.c:7415 | |
35694 | #, gcc-internal-format | |
35695 | msgid "changes meaning of %qD from %q+#D" | |
35696 | msgstr "cambia el significado de %qD a partir de %q+#D" | |
35697 | @@ -26828,13 +27024,18 @@ | |
35698 | msgid "converting NULL to non-pointer type" | |
35699 | msgstr "se convierte NULL a un tipo que no es puntero" | |
35700 | ||
35701 | -#: cp/cvt.c:1584 | |
35702 | +#: cp/cvt.c:1546 cp/cvt.c:1595 | |
35703 | #, gcc-internal-format | |
35704 | msgid "ambiguous default type conversion from %qT" | |
35705 | msgstr "conversión de tipo por defecto ambigua desde %qT" | |
35706 | ||
35707 | -#: cp/cvt.c:1586 | |
35708 | +#: cp/cvt.c:1548 | |
35709 | #, gcc-internal-format | |
35710 | +msgid " candidate conversions include %qD" | |
35711 | +msgstr " las conversiones candidatas incluyen %qD" | |
35712 | + | |
35713 | +#: cp/cvt.c:1597 | |
35714 | +#, gcc-internal-format | |
35715 | msgid " candidate conversions include %qD and %qD" | |
35716 | msgstr " las conversiones candidatas incluyen %qD y %qD" | |
35717 | ||
35718 | @@ -27076,27 +27277,27 @@ | |
35719 | msgstr "genera un conflicto con la declaración previa aquí" | |
35720 | ||
35721 | #. Reject two definitions. | |
35722 | -#: cp/decl.c:2364 cp/decl.c:2393 cp/decl.c:2422 cp/decl.c:2439 cp/decl.c:2511 | |
35723 | +#: cp/decl.c:2369 cp/decl.c:2398 cp/decl.c:2427 cp/decl.c:2444 cp/decl.c:2516 | |
35724 | #, gcc-internal-format | |
35725 | msgid "redefinition of %q#D" | |
35726 | msgstr "redefinición de %q#D" | |
35727 | ||
35728 | -#: cp/decl.c:2380 | |
35729 | +#: cp/decl.c:2385 | |
35730 | #, gcc-internal-format | |
35731 | msgid "%qD conflicts with used function" | |
35732 | msgstr "%qD genera un conflicto con la función utilizada" | |
35733 | ||
35734 | -#: cp/decl.c:2390 | |
35735 | +#: cp/decl.c:2395 | |
35736 | #, gcc-internal-format | |
35737 | msgid "%q#D not declared in class" | |
35738 | msgstr "%q#D no se declaró en la clase" | |
35739 | ||
35740 | -#: cp/decl.c:2404 cp/decl.c:2449 | |
35741 | +#: cp/decl.c:2409 cp/decl.c:2454 | |
35742 | #, gcc-internal-format | |
35743 | msgid "%q+D redeclared inline with %<gnu_inline%> attribute" | |
35744 | msgstr "%q+D se redeclaró incluída en línea con el atributo %<gnu_inline%>" | |
35745 | ||
35746 | -#: cp/decl.c:2407 cp/decl.c:2452 | |
35747 | +#: cp/decl.c:2412 cp/decl.c:2457 | |
35748 | #, gcc-internal-format | |
35749 | msgid "%q+D redeclared inline without %<gnu_inline%> attribute" | |
35750 | msgstr "%q+D se redeclaró incluída en línea sin el atributo %<gnu_inline%>" | |
35751 | @@ -27104,339 +27305,339 @@ | |
35752 | #. is_primary= | |
35753 | #. is_partial= | |
35754 | #. is_friend_decl= | |
35755 | -#: cp/decl.c:2468 | |
35756 | +#: cp/decl.c:2473 | |
35757 | #, gcc-internal-format | |
35758 | msgid "redeclaration of friend %q#D may not have default template arguments" | |
35759 | msgstr "la redeclaración de friend %q#D no puede tener argumentos de plantilla por defecto" | |
35760 | ||
35761 | -#: cp/decl.c:2482 | |
35762 | +#: cp/decl.c:2487 | |
35763 | #, gcc-internal-format | |
35764 | msgid "thread-local declaration of %q#D follows non-thread-local declaration" | |
35765 | msgstr "declaración thread-local de %q#D después de una declaración que no es thread-local" | |
35766 | ||
35767 | -#: cp/decl.c:2485 | |
35768 | +#: cp/decl.c:2490 | |
35769 | #, gcc-internal-format | |
35770 | msgid "non-thread-local declaration of %q#D follows thread-local declaration" | |
35771 | msgstr "declaración que no es thread-local de %q#D después de una declaración thread-local" | |
35772 | ||
35773 | -#: cp/decl.c:2500 cp/decl.c:2519 cp/name-lookup.c:550 cp/name-lookup.c:1132 | |
35774 | +#: cp/decl.c:2505 cp/decl.c:2524 cp/name-lookup.c:550 cp/name-lookup.c:1132 | |
35775 | #, gcc-internal-format | |
35776 | msgid "redeclaration of %q#D" | |
35777 | msgstr "redeclaración de %q#D" | |
35778 | ||
35779 | -#: cp/decl.c:2674 | |
35780 | +#: cp/decl.c:2679 | |
35781 | #, gcc-internal-format | |
35782 | msgid "jump to label %qD" | |
35783 | msgstr "salto a la etiqueta %qD" | |
35784 | ||
35785 | -#: cp/decl.c:2676 | |
35786 | +#: cp/decl.c:2681 | |
35787 | #, gcc-internal-format | |
35788 | msgid "jump to case label" | |
35789 | msgstr "salto a la etiqueta case" | |
35790 | ||
35791 | -#: cp/decl.c:2678 cp/decl.c:2820 cp/decl.c:2860 | |
35792 | +#: cp/decl.c:2683 cp/decl.c:2825 cp/decl.c:2865 | |
35793 | #, gcc-internal-format | |
35794 | msgid " from here" | |
35795 | msgstr " desde aquí" | |
35796 | ||
35797 | -#: cp/decl.c:2697 cp/decl.c:2863 | |
35798 | +#: cp/decl.c:2702 cp/decl.c:2868 | |
35799 | #, gcc-internal-format | |
35800 | msgid " exits OpenMP structured block" | |
35801 | msgstr " sale del bloque estructurado OpenMP" | |
35802 | ||
35803 | -#: cp/decl.c:2719 | |
35804 | +#: cp/decl.c:2724 | |
35805 | #, gcc-internal-format | |
35806 | msgid " crosses initialization of %q+#D" | |
35807 | msgstr " cruza la inicialización de %q+#D" | |
35808 | ||
35809 | -#: cp/decl.c:2721 cp/decl.c:2837 | |
35810 | +#: cp/decl.c:2726 cp/decl.c:2842 | |
35811 | #, gcc-internal-format | |
35812 | msgid " enters scope of %q+#D which has non-trivial destructor" | |
35813 | msgstr " entra al ámbito de %q+#D el cual tiene un destructor que no es trivial" | |
35814 | ||
35815 | -#: cp/decl.c:2735 cp/decl.c:2842 | |
35816 | +#: cp/decl.c:2740 cp/decl.c:2847 | |
35817 | #, gcc-internal-format | |
35818 | msgid " enters try block" | |
35819 | msgstr " entra al bloque try" | |
35820 | ||
35821 | #. Can't skip init of __exception_info. | |
35822 | -#: cp/decl.c:2737 cp/decl.c:2831 cp/decl.c:2844 | |
35823 | +#: cp/decl.c:2742 cp/decl.c:2836 cp/decl.c:2849 | |
35824 | #, gcc-internal-format | |
35825 | msgid " enters catch block" | |
35826 | msgstr " entra al bloque catch" | |
35827 | ||
35828 | -#: cp/decl.c:2747 cp/decl.c:2847 | |
35829 | +#: cp/decl.c:2752 cp/decl.c:2852 | |
35830 | #, gcc-internal-format | |
35831 | msgid " enters OpenMP structured block" | |
35832 | msgstr " entra al bloque estructurado OpenMP" | |
35833 | ||
35834 | -#: cp/decl.c:2819 cp/decl.c:2859 | |
35835 | +#: cp/decl.c:2824 cp/decl.c:2864 | |
35836 | #, gcc-internal-format | |
35837 | msgid "jump to label %q+D" | |
35838 | msgstr "salto a la etiqueta %q+D" | |
35839 | ||
35840 | -#: cp/decl.c:2835 | |
35841 | +#: cp/decl.c:2840 | |
35842 | #, gcc-internal-format | |
35843 | msgid " skips initialization of %q+#D" | |
35844 | msgstr " salta la inicialización de %q+#D" | |
35845 | ||
35846 | -#: cp/decl.c:2912 | |
35847 | +#: cp/decl.c:2917 | |
35848 | #, gcc-internal-format | |
35849 | msgid "label named wchar_t" | |
35850 | msgstr "etiqueta nombrada wchar_t" | |
35851 | ||
35852 | -#: cp/decl.c:3220 | |
35853 | +#: cp/decl.c:3225 | |
35854 | #, gcc-internal-format | |
35855 | msgid "%qD is not a type" | |
35856 | msgstr "%qD no es un tipo" | |
35857 | ||
35858 | -#: cp/decl.c:3226 cp/parser.c:5049 | |
35859 | +#: cp/decl.c:3231 cp/parser.c:5049 | |
35860 | #, gcc-internal-format | |
35861 | msgid "%qD used without template parameters" | |
35862 | msgstr "se usa %qD sin parámetros de plantilla" | |
35863 | ||
35864 | -#: cp/decl.c:3235 | |
35865 | +#: cp/decl.c:3240 | |
35866 | #, gcc-internal-format | |
35867 | msgid "%q#T is not a class" | |
35868 | msgstr "%q#T no es una clase" | |
35869 | ||
35870 | -#: cp/decl.c:3259 cp/decl.c:3349 | |
35871 | +#: cp/decl.c:3264 cp/decl.c:3354 | |
35872 | #, gcc-internal-format | |
35873 | msgid "no class template named %q#T in %q#T" | |
35874 | msgstr "no hay una plantilla de clase llamada %q#T en %q#T" | |
35875 | ||
35876 | -#: cp/decl.c:3260 | |
35877 | +#: cp/decl.c:3265 | |
35878 | #, gcc-internal-format | |
35879 | msgid "no type named %q#T in %q#T" | |
35880 | msgstr "no hay un tipo llamado %q#T en %q#T" | |
35881 | ||
35882 | -#: cp/decl.c:3272 | |
35883 | +#: cp/decl.c:3277 | |
35884 | #, gcc-internal-format | |
35885 | msgid "lookup of %qT in %qT is ambiguous" | |
35886 | msgstr "la búsqueda de %qT en %qT es ambigua" | |
35887 | ||
35888 | -#: cp/decl.c:3281 | |
35889 | +#: cp/decl.c:3286 | |
35890 | #, gcc-internal-format | |
35891 | msgid "%<typename %T::%D%> names %q#T, which is not a class template" | |
35892 | msgstr "%<typename %T::%D%> nombra a %q#T, el cual no es una plantilla de clase" | |
35893 | ||
35894 | -#: cp/decl.c:3288 | |
35895 | +#: cp/decl.c:3293 | |
35896 | #, gcc-internal-format | |
35897 | msgid "%<typename %T::%D%> names %q#T, which is not a type" | |
35898 | msgstr "%<typename %T::%D%> nombra a %q#T, el cual no es un tipo" | |
35899 | ||
35900 | -#: cp/decl.c:3358 | |
35901 | +#: cp/decl.c:3363 | |
35902 | #, gcc-internal-format | |
35903 | msgid "template parameters do not match template" | |
35904 | msgstr "los parámetros de la plantilla no coinciden con la plantilla" | |
35905 | ||
35906 | -#: cp/decl.c:3359 cp/friend.c:327 cp/friend.c:335 | |
35907 | +#: cp/decl.c:3364 cp/friend.c:327 cp/friend.c:335 | |
35908 | #, gcc-internal-format | |
35909 | msgid "%q+D declared here" | |
35910 | msgstr "%q+D declarado aquí" | |
35911 | ||
35912 | -#: cp/decl.c:4077 | |
35913 | +#: cp/decl.c:4082 | |
35914 | #, gcc-internal-format | |
35915 | msgid "an anonymous struct cannot have function members" | |
35916 | msgstr "un struct anónimo no puede tener funciones miembro" | |
35917 | ||
35918 | -#: cp/decl.c:4080 | |
35919 | +#: cp/decl.c:4085 | |
35920 | #, gcc-internal-format | |
35921 | msgid "an anonymous union cannot have function members" | |
35922 | msgstr "un union anónimo no puede tener funciones miembro" | |
35923 | ||
35924 | -#: cp/decl.c:4098 | |
35925 | +#: cp/decl.c:4103 | |
35926 | #, gcc-internal-format | |
35927 | msgid "member %q+#D with constructor not allowed in anonymous aggregate" | |
35928 | msgstr "no se permite el miembro %q+#D con constructor en un agregado anónimo" | |
35929 | ||
35930 | -#: cp/decl.c:4101 | |
35931 | +#: cp/decl.c:4106 | |
35932 | #, gcc-internal-format | |
35933 | msgid "member %q+#D with destructor not allowed in anonymous aggregate" | |
35934 | msgstr "no se permite el miembro %q+#D con destructor en un agregado anónimo" | |
35935 | ||
35936 | -#: cp/decl.c:4104 | |
35937 | +#: cp/decl.c:4109 | |
35938 | #, gcc-internal-format | |
35939 | msgid "member %q+#D with copy assignment operator not allowed in anonymous aggregate" | |
35940 | msgstr "no se permite el miembro %q+#D con operador de asignación de copia en un agregado anónimo" | |
35941 | ||
35942 | -#: cp/decl.c:4129 | |
35943 | +#: cp/decl.c:4134 | |
35944 | #, gcc-internal-format | |
35945 | msgid "multiple types in one declaration" | |
35946 | msgstr "tipos múltiples en una declaración" | |
35947 | ||
35948 | -#: cp/decl.c:4133 | |
35949 | +#: cp/decl.c:4138 | |
35950 | #, gcc-internal-format | |
35951 | msgid "redeclaration of C++ built-in type %qT" | |
35952 | msgstr "redeclaración del tipo interno de C++ %qT" | |
35953 | ||
35954 | -#: cp/decl.c:4150 | |
35955 | +#: cp/decl.c:4155 | |
35956 | #, gcc-internal-format | |
35957 | msgid "%<auto%> can only be specified for variables or function declarations" | |
35958 | msgstr "%<auto%> sólo se puede especificar para variables o declaraciones de función" | |
35959 | ||
35960 | -#: cp/decl.c:4176 | |
35961 | +#: cp/decl.c:4181 | |
35962 | #, gcc-internal-format | |
35963 | msgid "missing type-name in typedef-declaration" | |
35964 | msgstr "falta el nombre del tipo en la declaración typedef" | |
35965 | ||
35966 | -#: cp/decl.c:4183 | |
35967 | +#: cp/decl.c:4188 | |
35968 | #, gcc-internal-format | |
35969 | msgid "ISO C++ prohibits anonymous structs" | |
35970 | msgstr "ISO C++ prohíbe structs anónimos" | |
35971 | ||
35972 | -#: cp/decl.c:4190 | |
35973 | +#: cp/decl.c:4195 | |
35974 | #, gcc-internal-format | |
35975 | msgid "%qs can only be specified for functions" | |
35976 | msgstr "%qs sólo se puede especificar para funciones" | |
35977 | ||
35978 | -#: cp/decl.c:4196 | |
35979 | +#: cp/decl.c:4201 | |
35980 | #, gcc-internal-format | |
35981 | msgid "%<friend%> can only be specified inside a class" | |
35982 | msgstr "%<friend%> sólo se puede especificar dentro de una clase" | |
35983 | ||
35984 | -#: cp/decl.c:4198 | |
35985 | +#: cp/decl.c:4203 | |
35986 | #, gcc-internal-format | |
35987 | msgid "%<explicit%> can only be specified for constructors" | |
35988 | msgstr "%<explicit%> sólo se puede especificar para constructores" | |
35989 | ||
35990 | -#: cp/decl.c:4200 | |
35991 | +#: cp/decl.c:4205 | |
35992 | #, gcc-internal-format | |
35993 | msgid "a storage class can only be specified for objects and functions" | |
35994 | msgstr "una clase de almacenamiento sólo se puede especificar para objetos y funciones" | |
35995 | ||
35996 | -#: cp/decl.c:4206 | |
35997 | +#: cp/decl.c:4211 | |
35998 | #, gcc-internal-format | |
35999 | msgid "qualifiers can only be specified for objects and functions" | |
36000 | msgstr "los calificadores sólo se pueden especificar para objetos y funciones" | |
36001 | ||
36002 | -#: cp/decl.c:4209 | |
36003 | +#: cp/decl.c:4214 | |
36004 | #, gcc-internal-format | |
36005 | msgid "%<typedef%> was ignored in this declaration" | |
36006 | msgstr "se descartó %<typedef%> en esta declaración" | |
36007 | ||
36008 | -#: cp/decl.c:4211 | |
36009 | +#: cp/decl.c:4216 | |
36010 | #, gcc-internal-format | |
36011 | msgid "%<constexpr%> cannot be used for type declarations" | |
36012 | msgstr "%<constexpr%> no se puede usar en declaraciones de tipo" | |
36013 | ||
36014 | -#: cp/decl.c:4240 | |
36015 | +#: cp/decl.c:4226 | |
36016 | #, gcc-internal-format | |
36017 | -msgid "attribute ignored in declaration of %q+#T" | |
36018 | -msgstr "se descarta el atributo en la declaración de %q+#T" | |
36019 | +msgid "attribute ignored in declaration of %q#T" | |
36020 | +msgstr "se descarta el atributo en la declaración de %q#T" | |
36021 | ||
36022 | -#: cp/decl.c:4241 | |
36023 | +#: cp/decl.c:4227 | |
36024 | #, gcc-internal-format | |
36025 | -msgid "attribute for %q+#T must follow the %qs keyword" | |
36026 | -msgstr "el atributo para %q+#T debe estar a continuación de la palabra clave %qs" | |
36027 | +msgid "attribute for %q#T must follow the %qs keyword" | |
36028 | +msgstr "el atributo para %q#T debe estar a continuación de la palabra clave %qs" | |
36029 | ||
36030 | -#: cp/decl.c:4286 | |
36031 | +#: cp/decl.c:4296 | |
36032 | #, gcc-internal-format | |
36033 | msgid "ignoring attributes applied to class type %qT outside of definition" | |
36034 | msgstr "se descartan los atributos aplicados al tipo de clase %qT fuera de la definición" | |
36035 | ||
36036 | #. A template type parameter or other dependent type. | |
36037 | -#: cp/decl.c:4290 | |
36038 | +#: cp/decl.c:4300 | |
36039 | #, gcc-internal-format | |
36040 | msgid "ignoring attributes applied to dependent type %qT without an associated declaration" | |
36041 | msgstr "se descartan los atributos aplicados al tipo dependiente %qT sin una declaración asociada" | |
36042 | ||
36043 | -#: cp/decl.c:4360 cp/decl2.c:815 | |
36044 | +#: cp/decl.c:4370 cp/decl2.c:815 | |
36045 | #, gcc-internal-format | |
36046 | msgid "typedef %qD is initialized (use decltype instead)" | |
36047 | msgstr "typedef %qD está inicializado (utilice decltype en su lugar)" | |
36048 | ||
36049 | -#: cp/decl.c:4378 | |
36050 | +#: cp/decl.c:4388 | |
36051 | #, gcc-internal-format | |
36052 | msgid "declaration of %q#D has %<extern%> and is initialized" | |
36053 | msgstr "la declaración de %q#D tiene %<extern%> y está inicializada" | |
36054 | ||
36055 | -#: cp/decl.c:4407 | |
36056 | +#: cp/decl.c:4417 | |
36057 | #, gcc-internal-format | |
36058 | msgid "definition of %q#D is marked %<dllimport%>" | |
36059 | msgstr "la definición de %q#D se marca como %<dllimport%>" | |
36060 | ||
36061 | -#: cp/decl.c:4426 | |
36062 | +#: cp/decl.c:4436 | |
36063 | #, gcc-internal-format | |
36064 | msgid "%q#D is not a static member of %q#T" | |
36065 | msgstr "%q#D no es un miembro static de %q#T" | |
36066 | ||
36067 | -#: cp/decl.c:4432 | |
36068 | +#: cp/decl.c:4442 | |
36069 | #, gcc-internal-format | |
36070 | msgid "ISO C++ does not permit %<%T::%D%> to be defined as %<%T::%D%>" | |
36071 | msgstr "ISO C++ no permite que %<%T::%D%> se defina como %<%T::%D%>" | |
36072 | ||
36073 | -#: cp/decl.c:4441 | |
36074 | +#: cp/decl.c:4451 | |
36075 | #, gcc-internal-format | |
36076 | msgid "template header not allowed in member definition of explicitly specialized class" | |
36077 | msgstr "no se permite un encabezado de plantilla en la definición de miembro de una clase explícitamente especializada" | |
36078 | ||
36079 | -#: cp/decl.c:4449 | |
36080 | +#: cp/decl.c:4459 | |
36081 | #, gcc-internal-format | |
36082 | msgid "duplicate initialization of %qD" | |
36083 | msgstr "inicialización duplicada de %qD" | |
36084 | ||
36085 | -#: cp/decl.c:4454 | |
36086 | +#: cp/decl.c:4464 | |
36087 | #, gcc-internal-format | |
36088 | msgid "%qD declared %<constexpr%> outside its class" | |
36089 | msgstr "%qD se declaró %<constexpr%> fuera de su clase" | |
36090 | ||
36091 | -#: cp/decl.c:4493 | |
36092 | +#: cp/decl.c:4503 | |
36093 | #, gcc-internal-format | |
36094 | msgid "declaration of %q#D outside of class is not definition" | |
36095 | msgstr "la declaración de %q#D fuera de la clase no es una definición" | |
36096 | ||
36097 | -#: cp/decl.c:4588 | |
36098 | +#: cp/decl.c:4598 | |
36099 | #, gcc-internal-format | |
36100 | msgid "variable %q#D has initializer but incomplete type" | |
36101 | msgstr "la variable %q#D tiene inicializador pero de tipo de dato incompleto" | |
36102 | ||
36103 | -#: cp/decl.c:4594 cp/decl.c:5389 | |
36104 | +#: cp/decl.c:4604 cp/decl.c:5399 | |
36105 | #, gcc-internal-format | |
36106 | msgid "elements of array %q#D have incomplete type" | |
36107 | msgstr "elementos de la matriz %q#D con tipo de dato incompleto" | |
36108 | ||
36109 | -#: cp/decl.c:4601 cp/decl.c:5999 | |
36110 | +#: cp/decl.c:4611 cp/decl.c:6009 | |
36111 | #, gcc-internal-format | |
36112 | msgid "declaration of %q#D has no initializer" | |
36113 | msgstr "la declaración de %q#D no tiene inicializadores" | |
36114 | ||
36115 | -#: cp/decl.c:4603 | |
36116 | +#: cp/decl.c:4613 | |
36117 | #, gcc-internal-format | |
36118 | msgid "aggregate %q#D has incomplete type and cannot be defined" | |
36119 | msgstr "el agregado %q#D tiene un tipo incompleto y no se puede definir" | |
36120 | ||
36121 | -#: cp/decl.c:4637 | |
36122 | +#: cp/decl.c:4647 | |
36123 | #, gcc-internal-format | |
36124 | msgid "%qD declared as reference but not initialized" | |
36125 | msgstr "%qD declarado como referencia pero no se inicializa" | |
36126 | ||
36127 | -#: cp/decl.c:4678 | |
36128 | +#: cp/decl.c:4688 | |
36129 | #, gcc-internal-format | |
36130 | msgid "name used in a GNU-style designated initializer for an array" | |
36131 | msgstr "se usó un nombre en un inicializador designado de estilo GNU para una matriz" | |
36132 | ||
36133 | -#: cp/decl.c:4686 cp/typeck2.c:1084 cp/typeck2.c:1189 | |
36134 | +#: cp/decl.c:4696 cp/typeck2.c:1084 cp/typeck2.c:1189 | |
36135 | #, gcc-internal-format | |
36136 | msgid "non-trivial designated initializers not supported" | |
36137 | msgstr "no se admiten los inicializadores designados como no triviales" | |
36138 | ||
36139 | -#: cp/decl.c:4691 | |
36140 | +#: cp/decl.c:4701 | |
36141 | #, gcc-internal-format | |
36142 | msgid "name %qD used in a GNU-style designated initializer for an array" | |
36143 | msgstr "el nombre %qD se utiliza en un inicializador designado en estilo GNU para una matriz" | |
36144 | ||
36145 | -#: cp/decl.c:4739 | |
36146 | +#: cp/decl.c:4749 | |
36147 | #, gcc-internal-format | |
36148 | msgid "initializer fails to determine size of %qD" | |
36149 | msgstr "el inicializador no puede determinar el tamaño de %qD" | |
36150 | ||
36151 | -#: cp/decl.c:4746 | |
36152 | +#: cp/decl.c:4756 | |
36153 | #, gcc-internal-format | |
36154 | msgid "array size missing in %qD" | |
36155 | msgstr "falta el tamaño de la matriz en %qD" | |
36156 | ||
36157 | -#: cp/decl.c:4758 | |
36158 | +#: cp/decl.c:4768 | |
36159 | #, gcc-internal-format | |
36160 | msgid "zero-size array %qD" | |
36161 | msgstr "matriz %qD de tamaño cero" | |
36162 | @@ -27444,389 +27645,389 @@ | |
36163 | #. An automatic variable with an incomplete type: that is an error. | |
36164 | #. Don't talk about array types here, since we took care of that | |
36165 | #. message in grokdeclarator. | |
36166 | -#: cp/decl.c:4801 | |
36167 | +#: cp/decl.c:4811 | |
36168 | #, gcc-internal-format | |
36169 | msgid "storage size of %qD isn%'t known" | |
36170 | msgstr "no se conoce el tamaño de almacenamiento de %qD" | |
36171 | ||
36172 | -#: cp/decl.c:4824 | |
36173 | +#: cp/decl.c:4834 | |
36174 | #, gcc-internal-format | |
36175 | msgid "storage size of %qD isn%'t constant" | |
36176 | msgstr "el tamaño de almacenamiento de %qD no es constante" | |
36177 | ||
36178 | -#: cp/decl.c:4870 | |
36179 | +#: cp/decl.c:4880 | |
36180 | #, gcc-internal-format | |
36181 | msgid "sorry: semantics of inline function static data %q+#D are wrong (you%'ll wind up with multiple copies)" | |
36182 | msgstr "perdón: la semántica de los datos static de la función inline %q+#D es errónea (terminará con múltiples copias)" | |
36183 | ||
36184 | -#: cp/decl.c:4874 | |
36185 | +#: cp/decl.c:4884 | |
36186 | #, gcc-internal-format | |
36187 | msgid " you can work around this by removing the initializer" | |
36188 | msgstr " puede evitar esto eliminando el inicializador" | |
36189 | ||
36190 | -#: cp/decl.c:4905 | |
36191 | +#: cp/decl.c:4915 | |
36192 | #, gcc-internal-format | |
36193 | msgid "uninitialized const %qD" | |
36194 | msgstr "const %qD sin inicializar" | |
36195 | ||
36196 | -#: cp/decl.c:4912 | |
36197 | +#: cp/decl.c:4922 | |
36198 | #, gcc-internal-format | |
36199 | msgid "%q#T has no user-provided default constructor" | |
36200 | msgstr "%q#T no tiene constructor por defecto proporcionado por el usuario" | |
36201 | ||
36202 | -#: cp/decl.c:4916 | |
36203 | +#: cp/decl.c:4926 | |
36204 | #, gcc-internal-format | |
36205 | msgid "constructor is not user-provided because it is explicitly defaulted in the class body" | |
36206 | msgstr "el constructor no es proporcionado por el usuario porque está marcado explícitamente por defecto en el cuerpo de la clase" | |
36207 | ||
36208 | -#: cp/decl.c:4918 | |
36209 | +#: cp/decl.c:4928 | |
36210 | #, gcc-internal-format | |
36211 | msgid "and the implicitly-defined constructor does not initialize %q+#D" | |
36212 | msgstr "y el constructor implícitamente definido no inicializa %q+#D" | |
36213 | ||
36214 | -#: cp/decl.c:5037 | |
36215 | +#: cp/decl.c:5047 | |
36216 | #, gcc-internal-format | |
36217 | msgid "invalid type %qT as initializer for a vector of type %qT" | |
36218 | msgstr "tipo %qT inválido como inicializador para un vector de tipo %qT" | |
36219 | ||
36220 | -#: cp/decl.c:5078 | |
36221 | +#: cp/decl.c:5088 | |
36222 | #, gcc-internal-format | |
36223 | msgid "initializer for %qT must be brace-enclosed" | |
36224 | msgstr "el inicializador para %qT debe estar encerrado entre llaves" | |
36225 | ||
36226 | -#: cp/decl.c:5095 | |
36227 | +#: cp/decl.c:5105 | |
36228 | #, gcc-internal-format | |
36229 | msgid "%<[%E] =%> used in a GNU-style designated initializer for class %qT" | |
36230 | msgstr "se usa %<[%E] =%> en un inicializador designado en estilo GNU para la clase %qT" | |
36231 | ||
36232 | -#: cp/decl.c:5105 | |
36233 | +#: cp/decl.c:5115 | |
36234 | #, gcc-internal-format | |
36235 | msgid "%qT has no non-static data member named %qD" | |
36236 | msgstr "%qT no tiene un dato miembro que no es static llamado %qD" | |
36237 | ||
36238 | -#: cp/decl.c:5146 | |
36239 | +#: cp/decl.c:5156 | |
36240 | #, gcc-internal-format | |
36241 | msgid "C99 designator %qE outside aggregate initializer" | |
36242 | msgstr "asignador C99 %qE fuera del inicializador agregado" | |
36243 | ||
36244 | -#: cp/decl.c:5183 cp/decl.c:5368 cp/typeck2.c:1071 cp/typeck2.c:1270 | |
36245 | +#: cp/decl.c:5193 cp/decl.c:5378 cp/typeck2.c:1071 cp/typeck2.c:1270 | |
36246 | #: cp/typeck2.c:1299 cp/typeck2.c:1346 | |
36247 | #, gcc-internal-format | |
36248 | msgid "too many initializers for %qT" | |
36249 | msgstr "demasiados inicializadores para %qT" | |
36250 | ||
36251 | -#: cp/decl.c:5216 | |
36252 | +#: cp/decl.c:5226 | |
36253 | #, gcc-internal-format | |
36254 | msgid "braces around scalar initializer for type %qT" | |
36255 | msgstr "llaves alrededor del inicializador escalar para el tipo %qT" | |
36256 | ||
36257 | -#: cp/decl.c:5309 | |
36258 | +#: cp/decl.c:5319 | |
36259 | #, gcc-internal-format | |
36260 | msgid "missing braces around initializer for %qT" | |
36261 | msgstr "faltan llaves alrededor del inicializador para %qT" | |
36262 | ||
36263 | -#: cp/decl.c:5391 | |
36264 | +#: cp/decl.c:5401 | |
36265 | #, gcc-internal-format | |
36266 | msgid "elements of array %q#T have incomplete type" | |
36267 | msgstr "elementos de la matriz %q#T tienen tipo de dato incompleto" | |
36268 | ||
36269 | -#: cp/decl.c:5400 | |
36270 | +#: cp/decl.c:5410 | |
36271 | #, gcc-internal-format | |
36272 | msgid "variable-sized object %qD may not be initialized" | |
36273 | msgstr "el objeto de tamaño variable %qD no se puede inicializar" | |
36274 | ||
36275 | -#: cp/decl.c:5402 | |
36276 | +#: cp/decl.c:5412 | |
36277 | #, gcc-internal-format | |
36278 | msgid "variable-sized compound literal" | |
36279 | msgstr "literal compuesta de tamaño variable" | |
36280 | ||
36281 | -#: cp/decl.c:5457 | |
36282 | +#: cp/decl.c:5467 | |
36283 | #, gcc-internal-format | |
36284 | msgid "%q#D has incomplete type" | |
36285 | msgstr "%q#D tiene un tipo incompleto" | |
36286 | ||
36287 | -#: cp/decl.c:5477 | |
36288 | +#: cp/decl.c:5487 | |
36289 | #, gcc-internal-format | |
36290 | msgid "scalar object %qD requires one element in initializer" | |
36291 | msgstr "el objeto escalar %qD requiere un elemento en el inicializador" | |
36292 | ||
36293 | -#: cp/decl.c:5520 | |
36294 | +#: cp/decl.c:5530 | |
36295 | #, gcc-internal-format | |
36296 | msgid "in C++98 %qD must be initialized by constructor, not by %<{...}%>" | |
36297 | msgstr "en C++98 %qD debe ser inicializado por un constructor, no por %<{...}%>" | |
36298 | ||
36299 | -#: cp/decl.c:5600 | |
36300 | +#: cp/decl.c:5610 | |
36301 | #, gcc-internal-format | |
36302 | msgid "array %qD initialized by parenthesized string literal %qE" | |
36303 | msgstr "matriz %qD inicializada con una constante de cadena entre paréntesis %qE" | |
36304 | ||
36305 | -#: cp/decl.c:5627 | |
36306 | +#: cp/decl.c:5637 | |
36307 | #, gcc-internal-format | |
36308 | msgid "initializer invalid for static member with constructor" | |
36309 | msgstr "inicializador inválido para el miembro static con constructor" | |
36310 | ||
36311 | -#: cp/decl.c:5629 | |
36312 | +#: cp/decl.c:5639 | |
36313 | #, gcc-internal-format | |
36314 | msgid "non-constant in-class initialization invalid for static member %qD" | |
36315 | msgstr "inicialización en clase que no es constante inválida para el miembro static %qD" | |
36316 | ||
36317 | -#: cp/decl.c:5633 | |
36318 | +#: cp/decl.c:5643 | |
36319 | #, gcc-internal-format | |
36320 | msgid "(an out of class initialization is required)" | |
36321 | msgstr "(se requiere una inicialización fuera de la clase)" | |
36322 | ||
36323 | -#: cp/decl.c:5968 | |
36324 | +#: cp/decl.c:5978 | |
36325 | #, gcc-internal-format | |
36326 | msgid "assignment (not initialization) in declaration" | |
36327 | msgstr "asignación (no inicialización) en la declaración" | |
36328 | ||
36329 | -#: cp/decl.c:6126 | |
36330 | +#: cp/decl.c:6136 | |
36331 | #, gcc-internal-format | |
36332 | msgid "shadowing previous type declaration of %q#D" | |
36333 | msgstr "se oscurece la declaración de tipo previa de %q#D" | |
36334 | ||
36335 | -#: cp/decl.c:6158 | |
36336 | +#: cp/decl.c:6168 | |
36337 | #, gcc-internal-format | |
36338 | msgid "%qD cannot be thread-local because it has non-trivial type %qT" | |
36339 | msgstr "%qD no puede ser thread-local porque es de tipo %qT que no es trivial" | |
36340 | ||
36341 | -#: cp/decl.c:6200 | |
36342 | +#: cp/decl.c:6210 | |
36343 | #, gcc-internal-format | |
36344 | msgid "Java object %qD not allocated with %<new%>" | |
36345 | msgstr "El objeto Java %qD no se aloja con %<new%>" | |
36346 | ||
36347 | -#: cp/decl.c:6208 | |
36348 | +#: cp/decl.c:6218 | |
36349 | #, gcc-internal-format | |
36350 | msgid "%qD is thread-local and so cannot be dynamically initialized" | |
36351 | msgstr "q%D es thread-local y por lo tanto no se puede inicializar dinámicamente" | |
36352 | ||
36353 | -#: cp/decl.c:6226 | |
36354 | +#: cp/decl.c:6236 | |
36355 | #, gcc-internal-format | |
36356 | msgid "%qD cannot be initialized by a non-constant expression when being declared" | |
36357 | msgstr "%qD no se puede inicializar con una expresion no constante al declararse" | |
36358 | ||
36359 | -#: cp/decl.c:6274 | |
36360 | +#: cp/decl.c:6284 | |
36361 | #, gcc-internal-format | |
36362 | msgid "non-static data member %qD has Java class type" | |
36363 | msgstr "el dato miembro que no es estático %qD tiene un tipo de clase Java" | |
36364 | ||
36365 | -#: cp/decl.c:6339 | |
36366 | +#: cp/decl.c:6349 | |
36367 | #, gcc-internal-format | |
36368 | msgid "function %q#D is initialized like a variable" | |
36369 | msgstr "la función %q#D se inicializa como una variable" | |
36370 | ||
36371 | -#: cp/decl.c:6938 | |
36372 | +#: cp/decl.c:6948 | |
36373 | #, gcc-internal-format | |
36374 | msgid "initializer fails to determine size of %qT" | |
36375 | msgstr "el inicializador no puede determinar el tamaño de %qT" | |
36376 | ||
36377 | -#: cp/decl.c:6942 | |
36378 | +#: cp/decl.c:6952 | |
36379 | #, gcc-internal-format | |
36380 | msgid "array size missing in %qT" | |
36381 | msgstr "falta el tamaño de la matriz en %qT" | |
36382 | ||
36383 | -#: cp/decl.c:6945 | |
36384 | +#: cp/decl.c:6955 | |
36385 | #, gcc-internal-format | |
36386 | msgid "zero-size array %qT" | |
36387 | msgstr "matriz %qT de tamaño cero" | |
36388 | ||
36389 | -#: cp/decl.c:6961 | |
36390 | +#: cp/decl.c:6971 | |
36391 | #, gcc-internal-format | |
36392 | msgid "destructor for alien class %qT cannot be a member" | |
36393 | msgstr "el destructor para la clase extranjera %qT no puede ser un miembro" | |
36394 | ||
36395 | -#: cp/decl.c:6963 | |
36396 | +#: cp/decl.c:6973 | |
36397 | #, gcc-internal-format | |
36398 | msgid "constructor for alien class %qT cannot be a member" | |
36399 | msgstr "el constructor para la clase extranjera %qT no puede ser un miembro" | |
36400 | ||
36401 | -#: cp/decl.c:6987 | |
36402 | +#: cp/decl.c:6997 | |
36403 | #, gcc-internal-format | |
36404 | msgid "%qD declared as a %<virtual%> variable" | |
36405 | msgstr "%qD se declaró como una variable %<virtual%>" | |
36406 | ||
36407 | -#: cp/decl.c:6989 | |
36408 | +#: cp/decl.c:6999 | |
36409 | #, gcc-internal-format | |
36410 | msgid "%qD declared as an %<inline%> variable" | |
36411 | msgstr "%qD se declaró como una variable %<inline%>" | |
36412 | ||
36413 | -#: cp/decl.c:6991 | |
36414 | +#: cp/decl.c:7001 | |
36415 | #, gcc-internal-format | |
36416 | msgid "%<const%> and %<volatile%> function specifiers on %qD invalid in variable declaration" | |
36417 | msgstr "los especificadores de función %<const%> y %<volatile%> en %qD son inválidos en la declaración de variable" | |
36418 | ||
36419 | -#: cp/decl.c:6996 | |
36420 | +#: cp/decl.c:7006 | |
36421 | #, gcc-internal-format | |
36422 | msgid "%qD declared as a %<virtual%> parameter" | |
36423 | msgstr "%qD se declaró como un parámetro %<virtual%>" | |
36424 | ||
36425 | -#: cp/decl.c:6998 | |
36426 | +#: cp/decl.c:7008 | |
36427 | #, gcc-internal-format | |
36428 | msgid "%qD declared as an %<inline%> parameter" | |
36429 | msgstr "%qD se declaró como un parámetro %<inline%>" | |
36430 | ||
36431 | -#: cp/decl.c:7000 | |
36432 | +#: cp/decl.c:7010 | |
36433 | #, gcc-internal-format | |
36434 | msgid "%<const%> and %<volatile%> function specifiers on %qD invalid in parameter declaration" | |
36435 | msgstr "los especificadores de función %<const%> y %<volatile%> en %qD son inválidos en la declaración de parámetro" | |
36436 | ||
36437 | -#: cp/decl.c:7005 | |
36438 | +#: cp/decl.c:7015 | |
36439 | #, gcc-internal-format | |
36440 | msgid "%qD declared as a %<virtual%> type" | |
36441 | msgstr "%qD se declaró como un tipo %<virtual%>" | |
36442 | ||
36443 | -#: cp/decl.c:7007 | |
36444 | +#: cp/decl.c:7017 | |
36445 | #, gcc-internal-format | |
36446 | msgid "%qD declared as an %<inline%> type" | |
36447 | msgstr "%qD se declaró como un tipo %<inline%>" | |
36448 | ||
36449 | -#: cp/decl.c:7009 | |
36450 | +#: cp/decl.c:7019 | |
36451 | #, gcc-internal-format | |
36452 | msgid "%<const%> and %<volatile%> function specifiers on %qD invalid in type declaration" | |
36453 | msgstr "los especificadores de función %<const%> y %<volatile%> en %qD son inválidos en la declaración de tipo" | |
36454 | ||
36455 | -#: cp/decl.c:7014 | |
36456 | +#: cp/decl.c:7024 | |
36457 | #, gcc-internal-format | |
36458 | msgid "%qD declared as a %<virtual%> field" | |
36459 | msgstr "%qD se declaró como un campo %<virtual%>" | |
36460 | ||
36461 | -#: cp/decl.c:7016 | |
36462 | +#: cp/decl.c:7026 | |
36463 | #, gcc-internal-format | |
36464 | msgid "%qD declared as an %<inline%> field" | |
36465 | msgstr "%qD se declaró como un campo %<inline%>" | |
36466 | ||
36467 | -#: cp/decl.c:7018 | |
36468 | +#: cp/decl.c:7028 | |
36469 | #, gcc-internal-format | |
36470 | msgid "%<const%> and %<volatile%> function specifiers on %qD invalid in field declaration" | |
36471 | msgstr "los especificadores de función %<const%> y %<volatile%> en %qD son inválidos en la declaración de campo" | |
36472 | ||
36473 | -#: cp/decl.c:7025 | |
36474 | +#: cp/decl.c:7035 | |
36475 | #, gcc-internal-format | |
36476 | msgid "%q+D declared as a friend" | |
36477 | msgstr "%q+D se declaró como friend" | |
36478 | ||
36479 | -#: cp/decl.c:7031 | |
36480 | +#: cp/decl.c:7041 | |
36481 | #, gcc-internal-format | |
36482 | msgid "%q+D declared with an exception specification" | |
36483 | msgstr "%q+D se declaró con una especificación de excepción" | |
36484 | ||
36485 | -#: cp/decl.c:7065 | |
36486 | +#: cp/decl.c:7075 | |
36487 | #, gcc-internal-format | |
36488 | msgid "definition of %qD is not in namespace enclosing %qT" | |
36489 | msgstr "la definición de %qD no está en un espacio de nombres que contenga a %qT" | |
36490 | ||
36491 | -#: cp/decl.c:7105 | |
36492 | +#: cp/decl.c:7115 | |
36493 | #, gcc-internal-format | |
36494 | msgid "static member function %q#D declared with type qualifiers" | |
36495 | msgstr "la función miembro static %q#D se declara con calificadores de tipo" | |
36496 | ||
36497 | -#: cp/decl.c:7204 | |
36498 | +#: cp/decl.c:7214 | |
36499 | #, gcc-internal-format | |
36500 | msgid "defining explicit specialization %qD in friend declaration" | |
36501 | msgstr "definiendo la especialización explícita %qD en la declaración friend" | |
36502 | ||
36503 | #. Something like `template <class T> friend void f<T>()'. | |
36504 | -#: cp/decl.c:7214 | |
36505 | +#: cp/decl.c:7224 | |
36506 | #, gcc-internal-format | |
36507 | msgid "invalid use of template-id %qD in declaration of primary template" | |
36508 | msgstr "uso inválido del id de plantilla %qD en la declaración de la plantilla primaria" | |
36509 | ||
36510 | -#: cp/decl.c:7244 | |
36511 | +#: cp/decl.c:7254 | |
36512 | #, gcc-internal-format | |
36513 | msgid "default arguments are not allowed in declaration of friend template specialization %qD" | |
36514 | msgstr "no se permiten los argumentos por defecto en la declaración de la especialización friend de la plantilla %qD" | |
36515 | ||
36516 | -#: cp/decl.c:7252 | |
36517 | +#: cp/decl.c:7262 | |
36518 | #, gcc-internal-format | |
36519 | msgid "%<inline%> is not allowed in declaration of friend template specialization %qD" | |
36520 | msgstr "no se permite %<inline%> en la declaración de la especialización friend de la plantilla %qD" | |
36521 | ||
36522 | -#: cp/decl.c:7294 | |
36523 | +#: cp/decl.c:7304 | |
36524 | #, gcc-internal-format | |
36525 | msgid "cannot declare %<::main%> to be a template" | |
36526 | msgstr "no se puede declarar %<::main%> como plantilla" | |
36527 | ||
36528 | -#: cp/decl.c:7296 | |
36529 | +#: cp/decl.c:7306 | |
36530 | #, gcc-internal-format | |
36531 | msgid "cannot declare %<::main%> to be inline" | |
36532 | msgstr "no se puede declarar %<::main%> como inline" | |
36533 | ||
36534 | -#: cp/decl.c:7298 | |
36535 | +#: cp/decl.c:7308 | |
36536 | #, gcc-internal-format | |
36537 | msgid "cannot declare %<::main%> to be static" | |
36538 | msgstr "no se puede declarar %<::main%> como static" | |
36539 | ||
36540 | -#: cp/decl.c:7326 | |
36541 | +#: cp/decl.c:7336 | |
36542 | #, gcc-internal-format | |
36543 | msgid "anonymous type with no linkage used to declare function %q#D with linkage" | |
36544 | msgstr "se usó un tipo anónimo sin enlace para declarar la función %q#D con enlace" | |
36545 | ||
36546 | -#: cp/decl.c:7330 cp/decl.c:7687 cp/decl2.c:3673 | |
36547 | +#: cp/decl.c:7340 cp/decl.c:7697 cp/decl2.c:3673 | |
36548 | #, gcc-internal-format | |
36549 | msgid "%q+#D does not refer to the unqualified type, so it is not used for linkage" | |
36550 | msgstr "%q+#D no se refiere al tipo sin calificar, así que no se usa para el enlace" | |
36551 | ||
36552 | -#: cp/decl.c:7336 | |
36553 | +#: cp/decl.c:7346 | |
36554 | #, gcc-internal-format | |
36555 | msgid "type %qT with no linkage used to declare function %q#D with linkage" | |
36556 | msgstr "se usó el tipo %qT sin enlace para declarar la función %q#D con enlace" | |
36557 | ||
36558 | -#: cp/decl.c:7358 | |
36559 | +#: cp/decl.c:7368 | |
36560 | #, gcc-internal-format | |
36561 | msgid "static member function %qD cannot have cv-qualifier" | |
36562 | msgstr "la función miembro static %qD no puede tener calificador-cv" | |
36563 | ||
36564 | -#: cp/decl.c:7359 | |
36565 | +#: cp/decl.c:7369 | |
36566 | #, gcc-internal-format | |
36567 | msgid "non-member function %qD cannot have cv-qualifier" | |
36568 | msgstr "la función que no es miembro %qD no puede tener calificador-cv" | |
36569 | ||
36570 | -#: cp/decl.c:7375 | |
36571 | +#: cp/decl.c:7385 | |
36572 | #, gcc-internal-format | |
36573 | msgid "literal operator with C linkage" | |
36574 | msgstr "operador literal con enlace C" | |
36575 | ||
36576 | -#: cp/decl.c:7384 | |
36577 | +#: cp/decl.c:7394 | |
36578 | #, gcc-internal-format | |
36579 | msgid "%qD has invalid argument list" | |
36580 | msgstr "%qD tien una lista de argumentos inválida" | |
36581 | ||
36582 | -#: cp/decl.c:7392 | |
36583 | +#: cp/decl.c:7402 | |
36584 | #, gcc-internal-format | |
36585 | msgid "integer suffix %<%s%> shadowed by implementation" | |
36586 | msgstr "se oscurece el sufijo entero %<%s%> por la implementación" | |
36587 | ||
36588 | -#: cp/decl.c:7398 | |
36589 | +#: cp/decl.c:7408 | |
36590 | #, gcc-internal-format | |
36591 | msgid "floating point suffix %<%s%> shadowed by implementation" | |
36592 | msgstr "se oscurece el sufijo de coma flotante %<%s%> por la implementación" | |
36593 | ||
36594 | -#: cp/decl.c:7404 | |
36595 | +#: cp/decl.c:7414 | |
36596 | #, gcc-internal-format | |
36597 | msgid "%qD must be a non-member function" | |
36598 | msgstr "%qD debe ser una función que no sea miembro" | |
36599 | ||
36600 | -#: cp/decl.c:7448 | |
36601 | +#: cp/decl.c:7458 | |
36602 | #, gcc-internal-format | |
36603 | msgid "%<::main%> must return %<int%>" | |
36604 | msgstr "%<::main%> debe devolver %<int%>" | |
36605 | ||
36606 | -#: cp/decl.c:7490 | |
36607 | +#: cp/decl.c:7500 | |
36608 | #, gcc-internal-format | |
36609 | msgid "definition of implicitly-declared %qD" | |
36610 | msgstr "la definición de %qD declarado implícitamente" | |
36611 | ||
36612 | -#: cp/decl.c:7495 | |
36613 | +#: cp/decl.c:7505 | |
36614 | #, gcc-internal-format | |
36615 | msgid "definition of explicitly-defaulted %q+D" | |
36616 | msgstr "la definición de %qD explícitamente por defecto" | |
36617 | ||
36618 | -#: cp/decl.c:7496 | |
36619 | +#: cp/decl.c:7506 | |
36620 | #, gcc-internal-format | |
36621 | msgid "%q+#D explicitly defaulted here" | |
36622 | msgstr "%q+#D explícitamente por defecto aquí" | |
36623 | ||
36624 | -#: cp/decl.c:7513 cp/decl2.c:736 | |
36625 | +#: cp/decl.c:7523 cp/decl2.c:736 | |
36626 | #, gcc-internal-format | |
36627 | msgid "no %q#D member function declared in class %qT" | |
36628 | msgstr "no hay una función miembro %q#D declarada en la clase %qT" | |
36629 | @@ -27835,886 +28036,891 @@ | |
36630 | #. no linkage can only be used to declare extern "C" | |
36631 | #. entities. Since it's not always an error in the | |
36632 | #. ISO C++ 90 Standard, we only issue a warning. | |
36633 | -#: cp/decl.c:7684 | |
36634 | +#: cp/decl.c:7694 | |
36635 | #, gcc-internal-format | |
36636 | msgid "anonymous type with no linkage used to declare variable %q#D with linkage" | |
36637 | msgstr "se usó un tipo anónimo sin enlace para declarar la variable %q#D sin enlace" | |
36638 | ||
36639 | -#: cp/decl.c:7693 | |
36640 | +#: cp/decl.c:7703 | |
36641 | #, gcc-internal-format | |
36642 | msgid "type %qT with no linkage used to declare variable %q#D with linkage" | |
36643 | msgstr "se usó el tipo %qT sin enlace para declarar la variable %q#D con enlace" | |
36644 | ||
36645 | -#: cp/decl.c:7816 | |
36646 | +#: cp/decl.c:7826 | |
36647 | #, gcc-internal-format | |
36648 | msgid "in-class initialization of static data member %q#D of incomplete type" | |
36649 | msgstr "inicialización en la clase del miembro de datos static %q#D de tipo incompleto" | |
36650 | ||
36651 | -#: cp/decl.c:7820 | |
36652 | +#: cp/decl.c:7830 | |
36653 | #, gcc-internal-format | |
36654 | msgid "%<constexpr%> needed for in-class initialization of static data member %q#D of non-integral type" | |
36655 | msgstr "se necesita %<constexpr%> para la inicialización en la clase inválida del miembro de datos static %q#D de tipo que no es integral" | |
36656 | ||
36657 | -#: cp/decl.c:7823 | |
36658 | +#: cp/decl.c:7833 | |
36659 | #, gcc-internal-format | |
36660 | msgid "in-class initialization of static data member %q#D of non-literal type" | |
36661 | msgstr "inicialización en la clase del miembro de datos static %q#D de tipo que no es literal" | |
36662 | ||
36663 | -#: cp/decl.c:7836 | |
36664 | +#: cp/decl.c:7846 | |
36665 | #, gcc-internal-format | |
36666 | msgid "invalid in-class initialization of static data member of non-integral type %qT" | |
36667 | msgstr "inicialización en la clase inválida para el miembro de datos static de tipo %qT que no es integral" | |
36668 | ||
36669 | -#: cp/decl.c:7842 | |
36670 | +#: cp/decl.c:7852 | |
36671 | #, gcc-internal-format | |
36672 | msgid "ISO C++ forbids in-class initialization of non-const static member %qD" | |
36673 | msgstr "ISO C++ prohíbe la inicialización en la clase del miembro static %qD que no es constante" | |
36674 | ||
36675 | -#: cp/decl.c:7846 | |
36676 | +#: cp/decl.c:7856 | |
36677 | #, gcc-internal-format | |
36678 | msgid "ISO C++ forbids initialization of member constant %qD of non-integral type %qT" | |
36679 | msgstr "ISO C++ prohíbe la inicialización de la constante miembro %qD del tipo %qT que no es entero" | |
36680 | ||
36681 | -#: cp/decl.c:7923 cp/decl.c:7951 | |
36682 | +#: cp/decl.c:7933 cp/decl.c:7961 | |
36683 | #, gcc-internal-format | |
36684 | msgid "size of array %qD has non-integral type %qT" | |
36685 | msgstr "el tamaño de la matriz %qD tiene un tipo %qT que no es integral" | |
36686 | ||
36687 | -#: cp/decl.c:7926 cp/decl.c:7953 | |
36688 | +#: cp/decl.c:7936 cp/decl.c:7963 | |
36689 | #, gcc-internal-format | |
36690 | msgid "size of array has non-integral type %qT" | |
36691 | msgstr "el tamaño de la matriz tiene un tipo %qT que no es integral" | |
36692 | ||
36693 | -#: cp/decl.c:8003 | |
36694 | +#: cp/decl.c:8013 | |
36695 | #, gcc-internal-format | |
36696 | msgid "size of array %qD is negative" | |
36697 | msgstr "el tamaño de la matriz %qD es negativo" | |
36698 | ||
36699 | -#: cp/decl.c:8005 | |
36700 | +#: cp/decl.c:8015 | |
36701 | #, gcc-internal-format | |
36702 | msgid "size of array is negative" | |
36703 | msgstr "el tamaño de la matriz es negativo" | |
36704 | ||
36705 | -#: cp/decl.c:8019 | |
36706 | +#: cp/decl.c:8029 | |
36707 | #, gcc-internal-format | |
36708 | msgid "ISO C++ forbids zero-size array %qD" | |
36709 | msgstr "ISO C++ prohíbe la matriz %qD de tamaño cero" | |
36710 | ||
36711 | -#: cp/decl.c:8021 | |
36712 | +#: cp/decl.c:8031 | |
36713 | #, gcc-internal-format | |
36714 | msgid "ISO C++ forbids zero-size array" | |
36715 | msgstr "ISO C++ prohíbe matrices de tamaño cero" | |
36716 | ||
36717 | -#: cp/decl.c:8033 | |
36718 | +#: cp/decl.c:8043 | |
36719 | #, gcc-internal-format | |
36720 | msgid "size of array %qD is not an integral constant-expression" | |
36721 | msgstr "el tamaño de la matriz %qD no es una expresion constante integral" | |
36722 | ||
36723 | -#: cp/decl.c:8036 | |
36724 | +#: cp/decl.c:8046 | |
36725 | #, gcc-internal-format | |
36726 | msgid "size of array is not an integral constant-expression" | |
36727 | msgstr "el tamaño de la matriz no es una expresion constante integral" | |
36728 | ||
36729 | -#: cp/decl.c:8042 | |
36730 | +#: cp/decl.c:8052 | |
36731 | #, gcc-internal-format | |
36732 | msgid "ISO C++ forbids variable length array %qD" | |
36733 | msgstr "ISO C++ prohíbe la matriz %qD de longitud variable" | |
36734 | ||
36735 | -#: cp/decl.c:8044 | |
36736 | +#: cp/decl.c:8054 | |
36737 | #, gcc-internal-format | |
36738 | msgid "ISO C++ forbids variable length array" | |
36739 | msgstr "ISO C++ prohíbe las matrices de longitud variable" | |
36740 | ||
36741 | -#: cp/decl.c:8050 | |
36742 | +#: cp/decl.c:8060 | |
36743 | #, gcc-internal-format | |
36744 | msgid "variable length array %qD is used" | |
36745 | msgstr "se usa la matriz de longitud variable %qD" | |
36746 | ||
36747 | -#: cp/decl.c:8088 | |
36748 | +#: cp/decl.c:8098 | |
36749 | #, gcc-internal-format | |
36750 | msgid "overflow in array dimension" | |
36751 | msgstr "desbordamiento en la dimensión de la matriz" | |
36752 | ||
36753 | -#: cp/decl.c:8148 | |
36754 | +#: cp/decl.c:8158 | |
36755 | #, gcc-internal-format | |
36756 | msgid "declaration of %qD as array of %<auto%>" | |
36757 | msgstr "la declaración de %qD como una matriz %<auto%>" | |
36758 | ||
36759 | -#: cp/decl.c:8156 | |
36760 | +#: cp/decl.c:8166 | |
36761 | #, gcc-internal-format | |
36762 | msgid "declaration of %qD as array of void" | |
36763 | msgstr "la declaración de %qD como una matriz de voids" | |
36764 | ||
36765 | -#: cp/decl.c:8158 | |
36766 | +#: cp/decl.c:8168 | |
36767 | #, gcc-internal-format | |
36768 | msgid "creating array of void" | |
36769 | msgstr "se crea la matriz de voids" | |
36770 | ||
36771 | -#: cp/decl.c:8163 | |
36772 | +#: cp/decl.c:8173 | |
36773 | #, gcc-internal-format | |
36774 | msgid "declaration of %qD as array of functions" | |
36775 | msgstr "la declaración de %qD como una matriz de funciones" | |
36776 | ||
36777 | -#: cp/decl.c:8165 | |
36778 | +#: cp/decl.c:8175 | |
36779 | #, gcc-internal-format | |
36780 | msgid "creating array of functions" | |
36781 | msgstr "se crea la matriz de funciones" | |
36782 | ||
36783 | -#: cp/decl.c:8170 | |
36784 | +#: cp/decl.c:8180 | |
36785 | #, gcc-internal-format | |
36786 | msgid "declaration of %qD as array of references" | |
36787 | msgstr "la declaración de %qD como una matriz de referencias" | |
36788 | ||
36789 | -#: cp/decl.c:8172 | |
36790 | +#: cp/decl.c:8182 | |
36791 | #, gcc-internal-format | |
36792 | msgid "creating array of references" | |
36793 | msgstr "se crea la matriz de referencias" | |
36794 | ||
36795 | -#: cp/decl.c:8177 | |
36796 | +#: cp/decl.c:8187 | |
36797 | #, gcc-internal-format | |
36798 | msgid "declaration of %qD as array of function members" | |
36799 | msgstr "la declaración de %qD como una matriz de miembros de función" | |
36800 | ||
36801 | -#: cp/decl.c:8179 | |
36802 | +#: cp/decl.c:8189 | |
36803 | #, gcc-internal-format | |
36804 | msgid "creating array of function members" | |
36805 | msgstr "se crea la matriz de miembros de función" | |
36806 | ||
36807 | -#: cp/decl.c:8193 | |
36808 | +#: cp/decl.c:8203 | |
36809 | #, gcc-internal-format | |
36810 | msgid "declaration of %qD as multidimensional array must have bounds for all dimensions except the first" | |
36811 | msgstr "la declaración de %qD como una matriz multidimensional debe tener límites para todas las dimensiones excepto la primera" | |
36812 | ||
36813 | -#: cp/decl.c:8197 | |
36814 | +#: cp/decl.c:8207 | |
36815 | #, gcc-internal-format | |
36816 | msgid "multidimensional array must have bounds for all dimensions except the first" | |
36817 | msgstr "una matriz multidimensional debe tener límites para todas las dimensiones excepto para la primera" | |
36818 | ||
36819 | -#: cp/decl.c:8232 | |
36820 | +#: cp/decl.c:8242 | |
36821 | #, gcc-internal-format | |
36822 | msgid "return type specification for constructor invalid" | |
36823 | msgstr "la especificación del tipo de devolución para el constructor es inválida" | |
36824 | ||
36825 | -#: cp/decl.c:8242 | |
36826 | +#: cp/decl.c:8252 | |
36827 | #, gcc-internal-format | |
36828 | msgid "return type specification for destructor invalid" | |
36829 | msgstr "la especificación del tipo de devolución para el destructor es inválida" | |
36830 | ||
36831 | -#: cp/decl.c:8255 | |
36832 | +#: cp/decl.c:8265 | |
36833 | #, gcc-internal-format | |
36834 | msgid "return type specified for %<operator %T%>" | |
36835 | msgstr "se especificó un tipo de devolución para %<operator %T%>" | |
36836 | ||
36837 | -#: cp/decl.c:8277 | |
36838 | +#: cp/decl.c:8287 | |
36839 | #, gcc-internal-format | |
36840 | msgid "unnamed variable or field declared void" | |
36841 | msgstr "se declaró la variable o campo sin nombre como void" | |
36842 | ||
36843 | -#: cp/decl.c:8284 | |
36844 | +#: cp/decl.c:8294 | |
36845 | #, gcc-internal-format | |
36846 | msgid "variable or field declared void" | |
36847 | msgstr "se declaró la variable o campo como void" | |
36848 | ||
36849 | -#: cp/decl.c:8468 | |
36850 | +#: cp/decl.c:8478 | |
36851 | #, gcc-internal-format | |
36852 | msgid "invalid use of qualified-name %<::%D%>" | |
36853 | msgstr "uso inválido del nombre calificado %<::%D%>" | |
36854 | ||
36855 | -#: cp/decl.c:8471 | |
36856 | +#: cp/decl.c:8481 | |
36857 | #, gcc-internal-format | |
36858 | msgid "invalid use of qualified-name %<%T::%D%>" | |
36859 | msgstr "uso inválido del nombre calificado %<%T::%D%>" | |
36860 | ||
36861 | -#: cp/decl.c:8474 | |
36862 | +#: cp/decl.c:8484 | |
36863 | #, gcc-internal-format | |
36864 | msgid "invalid use of qualified-name %<%D::%D%>" | |
36865 | msgstr "uso inválido del nombre calificado %<%D::%D%>" | |
36866 | ||
36867 | -#: cp/decl.c:8483 | |
36868 | +#: cp/decl.c:8493 | |
36869 | #, gcc-internal-format | |
36870 | msgid "%q#T is not a class or a namespace" | |
36871 | msgstr "%q#T no es una clase o un espacio de nombres" | |
36872 | ||
36873 | -#: cp/decl.c:8491 | |
36874 | +#: cp/decl.c:8501 | |
36875 | #, gcc-internal-format | |
36876 | msgid "type %qT is not derived from type %qT" | |
36877 | msgstr "el tipo %qT no es derivado del tipo %T" | |
36878 | ||
36879 | # FIXME traducción | |
36880 | -#: cp/decl.c:8507 cp/decl.c:8599 cp/decl.c:8608 cp/decl.c:9951 | |
36881 | +#: cp/decl.c:8517 cp/decl.c:8609 cp/decl.c:8618 cp/decl.c:9961 | |
36882 | #, gcc-internal-format | |
36883 | msgid "declaration of %qD as non-function" | |
36884 | msgstr "la declaración de %qD como algo que no es función" | |
36885 | ||
36886 | # FIXME traducción | |
36887 | -#: cp/decl.c:8513 | |
36888 | +#: cp/decl.c:8523 | |
36889 | #, gcc-internal-format | |
36890 | msgid "declaration of %qD as non-member" | |
36891 | msgstr "declaración de %qD como algo que no es miembro" | |
36892 | ||
36893 | -#: cp/decl.c:8544 | |
36894 | +#: cp/decl.c:8554 | |
36895 | #, gcc-internal-format | |
36896 | msgid "declarator-id missing; using reserved word %qD" | |
36897 | msgstr "falta el id del declarador; se utiliza la palabra reservada %qD" | |
36898 | ||
36899 | -#: cp/decl.c:8591 | |
36900 | +#: cp/decl.c:8601 | |
36901 | #, gcc-internal-format | |
36902 | msgid "function definition does not declare parameters" | |
36903 | msgstr "la definición de la función no declara parámetros" | |
36904 | ||
36905 | -#: cp/decl.c:8616 | |
36906 | +#: cp/decl.c:8626 | |
36907 | #, gcc-internal-format | |
36908 | msgid "declaration of %qD as %<typedef%>" | |
36909 | msgstr "declaración de %qD como %<typedef%>" | |
36910 | ||
36911 | -#: cp/decl.c:8621 | |
36912 | +#: cp/decl.c:8631 | |
36913 | #, gcc-internal-format | |
36914 | msgid "declaration of %qD as parameter" | |
36915 | msgstr "la declaración de %qD como parámetro" | |
36916 | ||
36917 | -#: cp/decl.c:8654 | |
36918 | +#: cp/decl.c:8664 | |
36919 | #, gcc-internal-format | |
36920 | msgid "%<constexpr%> cannot appear in a typedef declaration" | |
36921 | msgstr "%<constexpr%> no puede aparecer en una declaración typedef" | |
36922 | ||
36923 | -#: cp/decl.c:8662 | |
36924 | +#: cp/decl.c:8672 | |
36925 | #, gcc-internal-format | |
36926 | msgid "two or more data types in declaration of %qs" | |
36927 | msgstr "dos o más tipos de datos en la declaración de %qs" | |
36928 | ||
36929 | -#: cp/decl.c:8668 | |
36930 | +#: cp/decl.c:8678 | |
36931 | #, gcc-internal-format | |
36932 | msgid "conflicting specifiers in declaration of %qs" | |
36933 | msgstr "especificadores en conflicto en la declaración de %qs" | |
36934 | ||
36935 | -#: cp/decl.c:8740 cp/decl.c:8743 cp/decl.c:8746 | |
36936 | +#: cp/decl.c:8750 cp/decl.c:8753 cp/decl.c:8756 | |
36937 | #, gcc-internal-format | |
36938 | msgid "ISO C++ forbids declaration of %qs with no type" | |
36939 | msgstr "ISO C++ prohíbe la declaración de %qs sin tipo" | |
36940 | ||
36941 | -#: cp/decl.c:8757 | |
36942 | +#: cp/decl.c:8767 | |
36943 | #, gcc-internal-format | |
36944 | msgid "%<__int128%> is not supported by this target" | |
36945 | msgstr "no se admite %<__int128%> en este objetivo" | |
36946 | ||
36947 | -#: cp/decl.c:8762 | |
36948 | +#: cp/decl.c:8772 | |
36949 | #, gcc-internal-format | |
36950 | msgid "ISO C++ does not support %<__int128%> for %qs" | |
36951 | msgstr "ISO C++ no admite %<__int128%> para %qs" | |
36952 | ||
36953 | -#: cp/decl.c:8783 cp/decl.c:8803 | |
36954 | +#: cp/decl.c:8793 cp/decl.c:8813 | |
36955 | #, gcc-internal-format | |
36956 | msgid "%<signed%> or %<unsigned%> invalid for %qs" | |
36957 | msgstr "%<signed%> o %<unsigned%> inválido para %qs" | |
36958 | ||
36959 | -#: cp/decl.c:8785 | |
36960 | +#: cp/decl.c:8795 | |
36961 | #, gcc-internal-format | |
36962 | msgid "%<signed%> and %<unsigned%> specified together for %qs" | |
36963 | msgstr "%<signed%> y %<unsigned%> se especificaron juntos para %qs" | |
36964 | ||
36965 | -#: cp/decl.c:8787 | |
36966 | +#: cp/decl.c:8797 | |
36967 | #, gcc-internal-format | |
36968 | msgid "%<long long%> invalid for %qs" | |
36969 | msgstr "%<long long%> inválido para %qs" | |
36970 | ||
36971 | -#: cp/decl.c:8789 | |
36972 | +#: cp/decl.c:8799 | |
36973 | #, gcc-internal-format | |
36974 | msgid "%<long%> invalid for %qs" | |
36975 | msgstr "%<long%> inválido para %qs" | |
36976 | ||
36977 | -#: cp/decl.c:8791 | |
36978 | +#: cp/decl.c:8801 | |
36979 | #, gcc-internal-format | |
36980 | msgid "%<short%> invalid for %qs" | |
36981 | msgstr "%<short%> inválido para %qs" | |
36982 | ||
36983 | -#: cp/decl.c:8793 | |
36984 | +#: cp/decl.c:8803 | |
36985 | #, gcc-internal-format | |
36986 | msgid "%<long%> or %<short%> invalid for %qs" | |
36987 | msgstr "%<long%> o %<short%> inválidos para %qs" | |
36988 | ||
36989 | -#: cp/decl.c:8795 | |
36990 | +#: cp/decl.c:8805 | |
36991 | #, gcc-internal-format | |
36992 | msgid "%<long%>, %<int%>, %<short%>, or %<char%> invalid for %qs" | |
36993 | msgstr "%<long%>, %<int%>, %<short%>, o %<char%> inválido para %qs" | |
36994 | ||
36995 | -#: cp/decl.c:8797 | |
36996 | +#: cp/decl.c:8807 | |
36997 | #, gcc-internal-format | |
36998 | msgid "%<long%> or %<short%> specified with char for %qs" | |
36999 | msgstr "se especificó %<long%> o %<short%> con char para %qs" | |
37000 | ||
37001 | -#: cp/decl.c:8799 | |
37002 | +#: cp/decl.c:8809 | |
37003 | #, gcc-internal-format | |
37004 | msgid "%<long%> and %<short%> specified together for %qs" | |
37005 | msgstr "%<long%> y %<short%> se especificaron juntos para %qs" | |
37006 | ||
37007 | -#: cp/decl.c:8805 | |
37008 | +#: cp/decl.c:8815 | |
37009 | #, gcc-internal-format | |
37010 | msgid "%<short%> or %<long%> invalid for %qs" | |
37011 | msgstr "%<short%> o %<long%> inválidos para %qs" | |
37012 | ||
37013 | -#: cp/decl.c:8813 | |
37014 | +#: cp/decl.c:8823 | |
37015 | #, gcc-internal-format | |
37016 | msgid "long, short, signed or unsigned used invalidly for %qs" | |
37017 | msgstr "uso inválido de long, short, signed ó unsigned para %qs" | |
37018 | ||
37019 | -#: cp/decl.c:8881 | |
37020 | +#: cp/decl.c:8891 | |
37021 | #, gcc-internal-format | |
37022 | msgid "complex invalid for %qs" | |
37023 | msgstr "complex inválido para %qs" | |
37024 | ||
37025 | -#: cp/decl.c:8909 | |
37026 | +#: cp/decl.c:8919 | |
37027 | #, gcc-internal-format | |
37028 | msgid "qualifiers are not allowed on declaration of %<operator %T%>" | |
37029 | msgstr "no se permiten calificadores en la declaración de %<operator %T%>" | |
37030 | ||
37031 | -#: cp/decl.c:8930 | |
37032 | +#: cp/decl.c:8940 | |
37033 | #, gcc-internal-format | |
37034 | msgid "member %qD cannot be declared both virtual and static" | |
37035 | msgstr "el miembro %qD no se puede declarar como virtual y static al mismo tiempo" | |
37036 | ||
37037 | -#: cp/decl.c:8938 | |
37038 | +#: cp/decl.c:8948 | |
37039 | #, gcc-internal-format | |
37040 | msgid "%<%T::%D%> is not a valid declarator" | |
37041 | msgstr "%<%T::%D%> no es un declarador válido" | |
37042 | ||
37043 | -#: cp/decl.c:8947 | |
37044 | +#: cp/decl.c:8957 | |
37045 | #, gcc-internal-format | |
37046 | msgid "typedef declaration invalid in parameter declaration" | |
37047 | msgstr "declaración typedef inválida en la declaración de parámetros" | |
37048 | ||
37049 | -#: cp/decl.c:8952 | |
37050 | +#: cp/decl.c:8962 | |
37051 | #, gcc-internal-format | |
37052 | msgid "storage class specified for template parameter %qs" | |
37053 | msgstr "se especificó una clase de almacenamiento para el parámetro de plantilla %qs" | |
37054 | ||
37055 | -#: cp/decl.c:8958 | |
37056 | +#: cp/decl.c:8968 | |
37057 | #, gcc-internal-format | |
37058 | msgid "storage class specifiers invalid in parameter declarations" | |
37059 | msgstr "especificadores de clase de almacenamiento inválidos en las declaraciones de parámetros" | |
37060 | ||
37061 | -#: cp/decl.c:8964 | |
37062 | +#: cp/decl.c:8974 | |
37063 | #, gcc-internal-format | |
37064 | msgid "a parameter cannot be declared %<constexpr%>" | |
37065 | msgstr "un parámetro no se puede declarar %<constexpr%>" | |
37066 | ||
37067 | -#: cp/decl.c:8973 | |
37068 | +#: cp/decl.c:8983 | |
37069 | #, gcc-internal-format | |
37070 | msgid "%<virtual%> outside class declaration" | |
37071 | msgstr "declaración de clase fuera de %<virtual%>" | |
37072 | ||
37073 | -#: cp/decl.c:8991 | |
37074 | +#: cp/decl.c:9001 | |
37075 | #, gcc-internal-format | |
37076 | msgid "multiple storage classes in declaration of %qs" | |
37077 | msgstr "múltiples clases de almacenamiento en la declaración de %qs" | |
37078 | ||
37079 | -#: cp/decl.c:9014 | |
37080 | +#: cp/decl.c:9024 | |
37081 | #, gcc-internal-format | |
37082 | msgid "storage class specified for %qs" | |
37083 | msgstr "se especificó una clase de almacenamiento para %qs" | |
37084 | ||
37085 | -#: cp/decl.c:9018 | |
37086 | +#: cp/decl.c:9028 | |
37087 | #, gcc-internal-format | |
37088 | msgid "storage class specified for parameter %qs" | |
37089 | msgstr "se especificó una clase de almacenamiento para el parámetro %qs" | |
37090 | ||
37091 | -#: cp/decl.c:9031 | |
37092 | +#: cp/decl.c:9041 | |
37093 | #, gcc-internal-format | |
37094 | msgid "nested function %qs declared %<extern%>" | |
37095 | msgstr "la función anidada %qs se declaró %<extern%>" | |
37096 | ||
37097 | -#: cp/decl.c:9035 | |
37098 | +#: cp/decl.c:9045 | |
37099 | #, gcc-internal-format | |
37100 | msgid "top-level declaration of %qs specifies %<auto%>" | |
37101 | msgstr "la declaración del nivel superior de %qs especifica %<auto%>" | |
37102 | ||
37103 | -#: cp/decl.c:9041 | |
37104 | +#: cp/decl.c:9051 | |
37105 | #, gcc-internal-format | |
37106 | msgid "function-scope %qs implicitly auto and declared %<__thread%>" | |
37107 | msgstr "el ámbito de la función %qs es implícitamente auto y declarado %<__thread%>" | |
37108 | ||
37109 | -#: cp/decl.c:9048 | |
37110 | +#: cp/decl.c:9058 | |
37111 | #, gcc-internal-format | |
37112 | msgid "storage class specifiers invalid in friend function declarations" | |
37113 | msgstr "especificadores de clase de almacenamiento inválidos en las declaraciones de funciones friend" | |
37114 | ||
37115 | -#: cp/decl.c:9142 | |
37116 | +#: cp/decl.c:9152 | |
37117 | #, gcc-internal-format | |
37118 | msgid "%qs declared as function returning a function" | |
37119 | msgstr "%qs que se declaró como función devuelve una función" | |
37120 | ||
37121 | -#: cp/decl.c:9147 | |
37122 | +#: cp/decl.c:9157 | |
37123 | #, gcc-internal-format | |
37124 | msgid "%qs declared as function returning an array" | |
37125 | msgstr "%qs que se declaró como función devuelve una matriz" | |
37126 | ||
37127 | -#: cp/decl.c:9173 | |
37128 | +#: cp/decl.c:9183 | |
37129 | #, gcc-internal-format | |
37130 | msgid "%qs function uses %<auto%> type specifier without trailing return type" | |
37131 | msgstr "la función %qs usa el especificador de tipo %<auto%> sin un tipo de devolución trailing" | |
37132 | ||
37133 | -#: cp/decl.c:9179 | |
37134 | +#: cp/decl.c:9189 | |
37135 | #, gcc-internal-format | |
37136 | msgid "%qs function with trailing return type has %qT as its type rather than plain %<auto%>" | |
37137 | msgstr "la función %qs con tipo de devolución trailing tiene %qT como su tipo en lugar de un simple %<auto%>" | |
37138 | ||
37139 | #. Not using maybe_warn_cpp0x because this should | |
37140 | #. always be an error. | |
37141 | -#: cp/decl.c:9190 | |
37142 | +#: cp/decl.c:9200 | |
37143 | #, gcc-internal-format | |
37144 | msgid "trailing return type only available with -std=c++11 or -std=gnu++11" | |
37145 | msgstr "el tipo de devolución trailing sólo está disponible con -std=c++11 o -std=gnu++11" | |
37146 | ||
37147 | -#: cp/decl.c:9193 | |
37148 | +#: cp/decl.c:9203 | |
37149 | #, gcc-internal-format | |
37150 | msgid "%qs function with trailing return type not declared with %<auto%> type specifier" | |
37151 | msgstr "no se declaró la función %qs con tipo de devolución trailing con el especificador de tipo %<auto%>" | |
37152 | ||
37153 | -#: cp/decl.c:9226 | |
37154 | +#: cp/decl.c:9236 | |
37155 | #, gcc-internal-format | |
37156 | msgid "destructor cannot be static member function" | |
37157 | msgstr "el destructor no puede ser una función miembro de tipo static" | |
37158 | ||
37159 | -#: cp/decl.c:9227 | |
37160 | +#: cp/decl.c:9237 | |
37161 | #, gcc-internal-format | |
37162 | msgid "constructor cannot be static member function" | |
37163 | msgstr "el constructor no puede ser una función miembro de tipo static" | |
37164 | ||
37165 | -#: cp/decl.c:9231 | |
37166 | +#: cp/decl.c:9241 | |
37167 | #, gcc-internal-format | |
37168 | msgid "destructors may not be cv-qualified" | |
37169 | msgstr "los destructores no pueden ser cv-calificados" | |
37170 | ||
37171 | -#: cp/decl.c:9232 | |
37172 | +#: cp/decl.c:9242 | |
37173 | #, gcc-internal-format | |
37174 | msgid "constructors may not be cv-qualified" | |
37175 | msgstr "los constructores tal vez no sean cv-calificados" | |
37176 | ||
37177 | -#: cp/decl.c:9249 | |
37178 | +#: cp/decl.c:9259 | |
37179 | #, gcc-internal-format | |
37180 | msgid "constructors cannot be declared virtual" | |
37181 | msgstr "los constructores no se pueden declarar virtual" | |
37182 | ||
37183 | -#: cp/decl.c:9262 | |
37184 | +#: cp/decl.c:9272 | |
37185 | #, gcc-internal-format | |
37186 | msgid "can%'t initialize friend function %qs" | |
37187 | msgstr "no se puede inicializar la función friend %qs" | |
37188 | ||
37189 | #. Cannot be both friend and virtual. | |
37190 | -#: cp/decl.c:9266 | |
37191 | +#: cp/decl.c:9276 | |
37192 | #, gcc-internal-format | |
37193 | msgid "virtual functions cannot be friends" | |
37194 | msgstr "las funciones virtual no pueden ser friend" | |
37195 | ||
37196 | -#: cp/decl.c:9270 | |
37197 | +#: cp/decl.c:9280 | |
37198 | #, gcc-internal-format | |
37199 | msgid "friend declaration not in class definition" | |
37200 | msgstr "la declaración friend no está en una definición de clase" | |
37201 | ||
37202 | -#: cp/decl.c:9272 | |
37203 | +#: cp/decl.c:9282 | |
37204 | #, gcc-internal-format | |
37205 | msgid "can%'t define friend function %qs in a local class definition" | |
37206 | msgstr "no se puede definir la función friend %qs en una definición de clase local" | |
37207 | ||
37208 | -#: cp/decl.c:9293 | |
37209 | +#: cp/decl.c:9303 | |
37210 | #, gcc-internal-format | |
37211 | msgid "destructors may not have parameters" | |
37212 | msgstr "los destructores no pueden tener parámetros" | |
37213 | ||
37214 | -#: cp/decl.c:9312 | |
37215 | +#: cp/decl.c:9322 | |
37216 | #, gcc-internal-format | |
37217 | msgid "cannot declare pointer to %q#T" | |
37218 | msgstr "no se puede declarar el puntero a %q#T" | |
37219 | ||
37220 | -#: cp/decl.c:9325 cp/decl.c:9332 | |
37221 | +#: cp/decl.c:9335 cp/decl.c:9342 | |
37222 | #, gcc-internal-format | |
37223 | msgid "cannot declare reference to %q#T" | |
37224 | msgstr "no se puede declarar la referencia a %q#T" | |
37225 | ||
37226 | -#: cp/decl.c:9334 | |
37227 | +#: cp/decl.c:9344 | |
37228 | #, gcc-internal-format | |
37229 | msgid "cannot declare pointer to %q#T member" | |
37230 | msgstr "no se puede declarar el puntero al miembro %q#T" | |
37231 | ||
37232 | -#: cp/decl.c:9357 | |
37233 | +#: cp/decl.c:9367 | |
37234 | #, gcc-internal-format | |
37235 | msgid "cannot declare reference to qualified function type %qT" | |
37236 | msgstr "no se puede declarar la referencia para el tipo de función calificado %qT" | |
37237 | ||
37238 | -#: cp/decl.c:9358 | |
37239 | +#: cp/decl.c:9368 | |
37240 | #, gcc-internal-format | |
37241 | msgid "cannot declare pointer to qualified function type %qT" | |
37242 | msgstr "no se puede declarar el puntero para el tipo de función calificado %qT" | |
37243 | ||
37244 | -#: cp/decl.c:9432 | |
37245 | +#: cp/decl.c:9442 | |
37246 | #, gcc-internal-format | |
37247 | msgid "cannot declare reference to %q#T, which is not a typedef or a template type argument" | |
37248 | msgstr "no se puede declarar la referencia a %q#T, el cual no es una definición de tipo o un argumento de tipo de plantilla" | |
37249 | ||
37250 | -#: cp/decl.c:9485 | |
37251 | +#: cp/decl.c:9495 | |
37252 | #, gcc-internal-format | |
37253 | msgid "both %<const%> and %<constexpr%> cannot be used here" | |
37254 | msgstr "no se pueden usar aquí %<const%> ni %<constexpr%>" | |
37255 | ||
37256 | -#: cp/decl.c:9487 | |
37257 | +#: cp/decl.c:9497 | |
37258 | #, gcc-internal-format | |
37259 | msgid "both %<volatile%> and %<constexpr%> cannot be used here" | |
37260 | msgstr "no se pueden usar aquí %<volatile%> ni %<constexpr%>" | |
37261 | ||
37262 | -#: cp/decl.c:9499 | |
37263 | +#: cp/decl.c:9509 | |
37264 | #, gcc-internal-format | |
37265 | msgid "template-id %qD used as a declarator" | |
37266 | msgstr "el id de plantilla %qD se usa como un declarador" | |
37267 | ||
37268 | -#: cp/decl.c:9550 | |
37269 | +#: cp/decl.c:9560 | |
37270 | #, gcc-internal-format | |
37271 | msgid "member functions are implicitly friends of their class" | |
37272 | msgstr "las funciones miembros son implícitamente friends de su clase" | |
37273 | ||
37274 | -#: cp/decl.c:9555 | |
37275 | +#: cp/decl.c:9565 | |
37276 | #, gcc-internal-format | |
37277 | msgid "extra qualification %<%T::%> on member %qs" | |
37278 | msgstr "calificación extra %<%T::%> en el miembro %qs" | |
37279 | ||
37280 | -#: cp/decl.c:9585 | |
37281 | +#: cp/decl.c:9595 | |
37282 | #, gcc-internal-format | |
37283 | msgid "cannot define member function %<%T::%s%> within %<%T%>" | |
37284 | msgstr "no se puede definir la función miembro %<%T::%s%> dentro de %<%T%>" | |
37285 | ||
37286 | -#: cp/decl.c:9587 | |
37287 | +#: cp/decl.c:9597 | |
37288 | #, gcc-internal-format | |
37289 | msgid "cannot declare member function %<%T::%s%> within %<%T%>" | |
37290 | msgstr "no se puede declarar la función miembro %<%T::%s%> dentro de %<%T%>" | |
37291 | ||
37292 | -#: cp/decl.c:9596 | |
37293 | +#: cp/decl.c:9606 | |
37294 | #, gcc-internal-format | |
37295 | msgid "cannot declare member %<%T::%s%> within %qT" | |
37296 | msgstr "no se puede declarar el miembro %<%T::%s%> dentro de %qT" | |
37297 | ||
37298 | -#: cp/decl.c:9622 | |
37299 | +#: cp/decl.c:9632 | |
37300 | #, gcc-internal-format | |
37301 | msgid "non-parameter %qs cannot be a parameter pack" | |
37302 | msgstr "%qs que no es parámetro no puede ser un paquete de parámetro" | |
37303 | ||
37304 | -#: cp/decl.c:9632 | |
37305 | +#: cp/decl.c:9642 | |
37306 | #, gcc-internal-format | |
37307 | msgid "size of array %qs is too large" | |
37308 | msgstr "el tamaño de la matriz %qs es demasiado grande" | |
37309 | ||
37310 | -#: cp/decl.c:9643 | |
37311 | +#: cp/decl.c:9653 | |
37312 | #, gcc-internal-format | |
37313 | msgid "data member may not have variably modified type %qT" | |
37314 | msgstr "los datos miembro pueden no tener el tipo modificado variablemente %qT" | |
37315 | ||
37316 | -#: cp/decl.c:9645 | |
37317 | +#: cp/decl.c:9655 | |
37318 | #, gcc-internal-format | |
37319 | msgid "parameter may not have variably modified type %qT" | |
37320 | msgstr "el parámetro puede no tener el tipo modificado variablemente %qT" | |
37321 | ||
37322 | #. [dcl.fct.spec] The explicit specifier shall only be used in | |
37323 | #. declarations of constructors within a class definition. | |
37324 | -#: cp/decl.c:9653 | |
37325 | +#: cp/decl.c:9663 | |
37326 | #, gcc-internal-format | |
37327 | msgid "only declarations of constructors can be %<explicit%>" | |
37328 | msgstr "solamente las declaraciones de constructores pueden ser %<explicit%>" | |
37329 | ||
37330 | -#: cp/decl.c:9661 | |
37331 | +#: cp/decl.c:9671 | |
37332 | #, gcc-internal-format | |
37333 | msgid "non-member %qs cannot be declared %<mutable%>" | |
37334 | msgstr "el no-miembro %qs no se puede declarar %<mutable%>" | |
37335 | ||
37336 | -#: cp/decl.c:9666 | |
37337 | +#: cp/decl.c:9676 | |
37338 | #, gcc-internal-format | |
37339 | msgid "non-object member %qs cannot be declared %<mutable%>" | |
37340 | msgstr "el miembro que no es objeto %qs no se puede declarar %<mutable%>" | |
37341 | ||
37342 | -#: cp/decl.c:9672 | |
37343 | +#: cp/decl.c:9682 | |
37344 | #, gcc-internal-format | |
37345 | msgid "function %qs cannot be declared %<mutable%>" | |
37346 | msgstr "la función %qs no se puede declarar %<mutable%>" | |
37347 | ||
37348 | -#: cp/decl.c:9677 | |
37349 | +#: cp/decl.c:9687 | |
37350 | #, gcc-internal-format | |
37351 | msgid "static %qs cannot be declared %<mutable%>" | |
37352 | msgstr "static %qs no se puede declarar %<mutable%>" | |
37353 | ||
37354 | -#: cp/decl.c:9682 | |
37355 | +#: cp/decl.c:9692 | |
37356 | #, gcc-internal-format | |
37357 | msgid "const %qs cannot be declared %<mutable%>" | |
37358 | msgstr "const %qs no se puede declarar %<mutable%>" | |
37359 | ||
37360 | -#: cp/decl.c:9687 | |
37361 | +#: cp/decl.c:9697 | |
37362 | #, gcc-internal-format | |
37363 | msgid "reference %qs cannot be declared %<mutable%>" | |
37364 | msgstr "la referencia %qs no se puede declarar %<mutable%>" | |
37365 | ||
37366 | -#: cp/decl.c:9722 | |
37367 | +#: cp/decl.c:9732 | |
37368 | #, gcc-internal-format | |
37369 | msgid "typedef declared %<auto%>" | |
37370 | msgstr "la definición de tipo se declaró %<auto%>" | |
37371 | ||
37372 | -#: cp/decl.c:9732 | |
37373 | +#: cp/decl.c:9742 | |
37374 | #, gcc-internal-format | |
37375 | msgid "typedef name may not be a nested-name-specifier" | |
37376 | msgstr "el nombre del typedef puede no ser un especificador-de-nombre-anidado" | |
37377 | ||
37378 | -#: cp/decl.c:9750 | |
37379 | +#: cp/decl.c:9760 | |
37380 | #, gcc-internal-format | |
37381 | msgid "ISO C++ forbids nested type %qD with same name as enclosing class" | |
37382 | msgstr "ISO C++ prohíbe el tipo anidado %qD con el mismo nombre que la clase que lo contiene" | |
37383 | ||
37384 | -#: cp/decl.c:9852 | |
37385 | +#: cp/decl.c:9862 | |
37386 | #, gcc-internal-format | |
37387 | msgid "qualified function types cannot be used to declare static member functions" | |
37388 | msgstr "los tipos de función calificados no se pueden usar para declarar una función miembro estática" | |
37389 | ||
37390 | -#: cp/decl.c:9854 | |
37391 | +#: cp/decl.c:9864 | |
37392 | #, gcc-internal-format | |
37393 | msgid "qualified function types cannot be used to declare free functions" | |
37394 | msgstr "los tipos de función calificados no se pueden usar para declarar funciones libres" | |
37395 | ||
37396 | -#: cp/decl.c:9881 | |
37397 | +#: cp/decl.c:9891 | |
37398 | #, gcc-internal-format | |
37399 | msgid "type qualifiers specified for friend class declaration" | |
37400 | msgstr "se especificaron calificadores de tipo para la declaración de clase friend" | |
37401 | ||
37402 | -#: cp/decl.c:9886 | |
37403 | +#: cp/decl.c:9896 | |
37404 | #, gcc-internal-format | |
37405 | msgid "%<inline%> specified for friend class declaration" | |
37406 | msgstr "se especificó %<inline%> para la declaración de clase friend" | |
37407 | ||
37408 | -#: cp/decl.c:9894 | |
37409 | +#: cp/decl.c:9904 | |
37410 | #, gcc-internal-format | |
37411 | msgid "template parameters cannot be friends" | |
37412 | msgstr "los parámetros de la plantilla no pueden ser friends" | |
37413 | ||
37414 | -#: cp/decl.c:9896 | |
37415 | +#: cp/decl.c:9906 | |
37416 | #, gcc-internal-format | |
37417 | msgid "friend declaration requires class-key, i.e. %<friend class %T::%D%>" | |
37418 | msgstr "la declaración friend requere una llave de clase, p.e. %<friend class %T::%D%>" | |
37419 | ||
37420 | -#: cp/decl.c:9900 | |
37421 | +#: cp/decl.c:9910 | |
37422 | #, gcc-internal-format | |
37423 | msgid "friend declaration requires class-key, i.e. %<friend %#T%>" | |
37424 | msgstr "la declaración friend requiere una llave de clase, p.e. %<friend %#T%>" | |
37425 | ||
37426 | -#: cp/decl.c:9913 | |
37427 | +#: cp/decl.c:9923 | |
37428 | #, gcc-internal-format | |
37429 | msgid "trying to make class %qT a friend of global scope" | |
37430 | msgstr "se intenta hacer que la clase %qT sea un friend de ámbito global" | |
37431 | ||
37432 | -#: cp/decl.c:9931 | |
37433 | +#: cp/decl.c:9941 | |
37434 | #, gcc-internal-format | |
37435 | msgid "invalid qualifiers on non-member function type" | |
37436 | msgstr "calificadores inválidos en el tipo de función que no es miembro" | |
37437 | ||
37438 | -#: cp/decl.c:9941 | |
37439 | +#: cp/decl.c:9951 | |
37440 | #, gcc-internal-format | |
37441 | msgid "abstract declarator %qT used as declaration" | |
37442 | msgstr "el declarador abstracto %qT se usó como declaración" | |
37443 | ||
37444 | -#: cp/decl.c:9970 | |
37445 | +#: cp/decl.c:9980 | |
37446 | #, gcc-internal-format | |
37447 | msgid "cannot use %<::%> in parameter declaration" | |
37448 | msgstr "no se puede usar %<::%> en la declaración de parámetros" | |
37449 | ||
37450 | -#: cp/decl.c:9974 | |
37451 | +#: cp/decl.c:9984 | |
37452 | #, gcc-internal-format | |
37453 | msgid "parameter declared %<auto%>" | |
37454 | msgstr "el parámetro se declaró %<auto%>" | |
37455 | ||
37456 | -#: cp/decl.c:10016 | |
37457 | +#: cp/decl.c:10026 | |
37458 | #, gcc-internal-format | |
37459 | msgid "non-static data member declared %<auto%>" | |
37460 | msgstr "se declaró el miembro dato que no es static como %<auto%>" | |
37461 | ||
37462 | #. Something like struct S { int N::j; }; | |
37463 | -#: cp/decl.c:10038 | |
37464 | +#: cp/decl.c:10048 | |
37465 | #, gcc-internal-format | |
37466 | msgid "invalid use of %<::%>" | |
37467 | msgstr "uso inválido de %<::%>" | |
37468 | ||
37469 | -#: cp/decl.c:10060 | |
37470 | +#: cp/decl.c:10070 | |
37471 | #, gcc-internal-format | |
37472 | msgid "declaration of function %qD in invalid context" | |
37473 | msgstr "declaración de la función %qD en un contexto inválido" | |
37474 | ||
37475 | -#: cp/decl.c:10069 | |
37476 | +#: cp/decl.c:10079 | |
37477 | #, gcc-internal-format | |
37478 | msgid "function %qD declared virtual inside a union" | |
37479 | msgstr "la función %qD se declaró virtual dentro de un union" | |
37480 | ||
37481 | -#: cp/decl.c:10078 | |
37482 | +#: cp/decl.c:10088 | |
37483 | #, gcc-internal-format | |
37484 | msgid "%qD cannot be declared virtual, since it is always static" | |
37485 | msgstr "%qD no se puede declarar virtual, ya que siempre es static" | |
37486 | ||
37487 | -#: cp/decl.c:10094 | |
37488 | +#: cp/decl.c:10104 | |
37489 | #, gcc-internal-format | |
37490 | msgid "expected qualified name in friend declaration for destructor %qD" | |
37491 | msgstr "se esperaba un nombre calificado en la declaración friend para el destructor %qD" | |
37492 | ||
37493 | -#: cp/decl.c:10101 | |
37494 | +#: cp/decl.c:10111 | |
37495 | #, gcc-internal-format | |
37496 | msgid "declaration of %qD as member of %qT" | |
37497 | msgstr "declaración de %qD como miembro de %qT" | |
37498 | ||
37499 | -#: cp/decl.c:10107 | |
37500 | +#: cp/decl.c:10117 | |
37501 | #, gcc-internal-format | |
37502 | msgid "a destructor cannot be %<constexpr%>" | |
37503 | msgstr "un destructor no puede ser %<constexpr%>" | |
37504 | ||
37505 | -#: cp/decl.c:10113 | |
37506 | +#: cp/decl.c:10123 | |
37507 | #, gcc-internal-format | |
37508 | msgid "expected qualified name in friend declaration for constructor %qD" | |
37509 | msgstr "se esperaba un nombre calificado en la declaración friend para el constructor %qD" | |
37510 | ||
37511 | -#: cp/decl.c:10159 | |
37512 | +#: cp/decl.c:10169 | |
37513 | #, gcc-internal-format | |
37514 | msgid "field %qD has incomplete type" | |
37515 | msgstr "el campo %qD tiene tipo de dato incompleto" | |
37516 | ||
37517 | -#: cp/decl.c:10161 | |
37518 | +#: cp/decl.c:10171 | |
37519 | #, gcc-internal-format | |
37520 | msgid "name %qT has incomplete type" | |
37521 | msgstr "el nombre %qT tiene tipo de dato incompleto" | |
37522 | ||
37523 | -#: cp/decl.c:10170 | |
37524 | +#: cp/decl.c:10180 | |
37525 | #, gcc-internal-format | |
37526 | msgid " in instantiation of template %qT" | |
37527 | msgstr " en la instanciación de la plantilla %qT" | |
37528 | ||
37529 | -#: cp/decl.c:10179 | |
37530 | +#: cp/decl.c:10189 | |
37531 | #, gcc-internal-format | |
37532 | msgid "%qE is neither function nor member function; cannot be declared friend" | |
37533 | msgstr "%qE no es ni función ni función miembro; no se puede declarar friend" | |
37534 | ||
37535 | -#: cp/decl.c:10231 | |
37536 | +#: cp/decl.c:10241 | |
37537 | #, gcc-internal-format | |
37538 | msgid "constexpr static data member %qD must have an initializer" | |
37539 | msgstr "el miembro dato static constexpr %qD debe tener un inicializador" | |
37540 | ||
37541 | -#: cp/decl.c:10240 | |
37542 | +#: cp/decl.c:10250 | |
37543 | #, gcc-internal-format | |
37544 | msgid "non-static data member %qE declared %<constexpr%>" | |
37545 | msgstr "se declaró el miembro dato que no es static %qE como %<constexpr%>" | |
37546 | ||
37547 | -#: cp/decl.c:10290 | |
37548 | +#: cp/decl.c:10300 | |
37549 | #, gcc-internal-format | |
37550 | msgid "storage class %<auto%> invalid for function %qs" | |
37551 | msgstr "la clase de almacenamiento %<auto%> es inválida para la función %qs" | |
37552 | ||
37553 | -#: cp/decl.c:10292 | |
37554 | +#: cp/decl.c:10302 | |
37555 | #, gcc-internal-format | |
37556 | msgid "storage class %<register%> invalid for function %qs" | |
37557 | msgstr "la clase de almacenamiento %<register%> es inválida para la función %qs" | |
37558 | ||
37559 | -#: cp/decl.c:10294 | |
37560 | +#: cp/decl.c:10304 | |
37561 | #, gcc-internal-format | |
37562 | msgid "storage class %<__thread%> invalid for function %qs" | |
37563 | msgstr "la clase de almacenamiento %<__thread%> es inválida para la función %qs" | |
37564 | ||
37565 | -#: cp/decl.c:10297 | |
37566 | +#: cp/decl.c:10307 | |
37567 | #, gcc-internal-format | |
37568 | msgid "virt-specifiers in %qs not allowed outside a class definition" | |
37569 | msgstr "no se permiten los especificadores-virt en %qs fuera de una definición de clase" | |
37570 | ||
37571 | -#: cp/decl.c:10308 | |
37572 | +#: cp/decl.c:10318 | |
37573 | #, gcc-internal-format | |
37574 | msgid "%<static%> specified invalid for function %qs declared out of global scope" | |
37575 | msgstr "el especificador %<static%> es inválido para la función %qs declarada fuera del ámbito global" | |
37576 | ||
37577 | -#: cp/decl.c:10312 | |
37578 | +#: cp/decl.c:10322 | |
37579 | #, gcc-internal-format | |
37580 | msgid "%<inline%> specifier invalid for function %qs declared out of global scope" | |
37581 | msgstr "el especificador %<inline%> es inválido para la función %qs declarada fuera del ámbito global" | |
37582 | ||
37583 | -#: cp/decl.c:10320 | |
37584 | +#: cp/decl.c:10330 | |
37585 | #, gcc-internal-format | |
37586 | msgid "virtual non-class function %qs" | |
37587 | msgstr "función virtual %qs que no es clase" | |
37588 | ||
37589 | -#: cp/decl.c:10327 | |
37590 | +#: cp/decl.c:10337 | |
37591 | #, gcc-internal-format | |
37592 | msgid "%qs defined in a non-class scope" | |
37593 | msgstr "se definió %qs en un ámbito que no es una clase" | |
37594 | ||
37595 | -#: cp/decl.c:10328 | |
37596 | +#: cp/decl.c:10338 | |
37597 | #, gcc-internal-format | |
37598 | msgid "%qs declared in a non-class scope" | |
37599 | msgstr "se declaró %qs en un ámbito que no es una clase" | |
37600 | ||
37601 | -#: cp/decl.c:10356 | |
37602 | +#: cp/decl.c:10366 | |
37603 | #, gcc-internal-format | |
37604 | msgid "cannot declare member function %qD to have static linkage" | |
37605 | msgstr "no se puede declarar que la función miembro %qD tenga enlace estático" | |
37606 | ||
37607 | #. FIXME need arm citation | |
37608 | -#: cp/decl.c:10363 | |
37609 | +#: cp/decl.c:10373 | |
37610 | #, gcc-internal-format | |
37611 | msgid "cannot declare static function inside another function" | |
37612 | msgstr "no se puede declarar una función static dentro de otra función" | |
37613 | ||
37614 | -#: cp/decl.c:10393 | |
37615 | +#: cp/decl.c:10403 | |
37616 | #, gcc-internal-format | |
37617 | msgid "%<static%> may not be used when defining (as opposed to declaring) a static data member" | |
37618 | msgstr "%<static%> puede no ser utilizado cuando se define (opuesto a la declaración) un dato miembro static" | |
37619 | ||
37620 | -#: cp/decl.c:10400 | |
37621 | +#: cp/decl.c:10410 | |
37622 | #, gcc-internal-format | |
37623 | msgid "static member %qD declared %<register%>" | |
37624 | msgstr "se declaró el miembro static %qD como %<register%>" | |
37625 | ||
37626 | -#: cp/decl.c:10406 | |
37627 | +#: cp/decl.c:10416 | |
37628 | #, gcc-internal-format | |
37629 | msgid "cannot explicitly declare member %q#D to have extern linkage" | |
37630 | msgstr "no se puede declarar explícitamente que el miembro %q#D tenga un enlace externo" | |
37631 | ||
37632 | -#: cp/decl.c:10413 | |
37633 | +#: cp/decl.c:10423 | |
37634 | #, gcc-internal-format | |
37635 | msgid "declaration of constexpr variable %qD is not a definition" | |
37636 | msgstr "la declaración de la variable constexpr %qD no es una definición" | |
37637 | ||
37638 | -#: cp/decl.c:10426 | |
37639 | +#: cp/decl.c:10436 | |
37640 | #, gcc-internal-format | |
37641 | msgid "%qs initialized and declared %<extern%>" | |
37642 | msgstr "%qs inicializado y declarado como %<extern%>" | |
37643 | ||
37644 | -#: cp/decl.c:10430 | |
37645 | +#: cp/decl.c:10440 | |
37646 | #, gcc-internal-format | |
37647 | msgid "%qs has both %<extern%> and initializer" | |
37648 | msgstr "%qs tiene %<extern%> e inicializador al mismo tiempo" | |
37649 | ||
37650 | -#: cp/decl.c:10557 | |
37651 | +#: cp/decl.c:10568 | |
37652 | #, gcc-internal-format | |
37653 | msgid "default argument for %q#D has type %qT" | |
37654 | msgstr "el argumento por defecto de %q#D tiene tipo %qT" | |
37655 | ||
37656 | -#: cp/decl.c:10560 | |
37657 | +#: cp/decl.c:10571 | |
37658 | #, gcc-internal-format | |
37659 | msgid "default argument for parameter of type %qT has type %qT" | |
37660 | msgstr "el argumento por defecto para el parámetro del tipo %qT tiene el tipo %qT" | |
37661 | ||
37662 | -#: cp/decl.c:10576 | |
37663 | +#: cp/decl.c:10588 | |
37664 | #, gcc-internal-format | |
37665 | +msgid "default argument %qE uses %qD" | |
37666 | +msgstr "el argumento por defecto %qE usa %qD" | |
37667 | + | |
37668 | +#: cp/decl.c:10590 | |
37669 | +#, gcc-internal-format | |
37670 | msgid "default argument %qE uses local variable %qD" | |
37671 | msgstr "el argumento por defecto %qE usa la variable local %qD" | |
37672 | ||
37673 | -#: cp/decl.c:10664 | |
37674 | +#: cp/decl.c:10678 | |
37675 | #, gcc-internal-format | |
37676 | msgid "parameter %qD has Java class type" | |
37677 | msgstr "el parámetro %qD tiene tipo de clase Java" | |
37678 | ||
37679 | -#: cp/decl.c:10692 | |
37680 | +#: cp/decl.c:10706 | |
37681 | #, gcc-internal-format | |
37682 | msgid "parameter %qD invalidly declared method type" | |
37683 | msgstr "el parámetro %qD se declaró inválidamente como tipo de método" | |
37684 | ||
37685 | -#: cp/decl.c:10717 | |
37686 | +#: cp/decl.c:10731 | |
37687 | #, gcc-internal-format | |
37688 | msgid "parameter %qD includes pointer to array of unknown bound %qT" | |
37689 | msgstr "el parámetro %qD incluye un puntero a matriz %qT de límite desconocido" | |
37690 | ||
37691 | -#: cp/decl.c:10719 | |
37692 | +#: cp/decl.c:10733 | |
37693 | #, gcc-internal-format | |
37694 | msgid "parameter %qD includes reference to array of unknown bound %qT" | |
37695 | msgstr "el parámetro %qD incluye una referencia a matriz %qT de límite desconocido" | |
37696 | @@ -28734,170 +28940,170 @@ | |
37697 | #. or implicitly defined), there's no need to worry about their | |
37698 | #. existence. Theoretically, they should never even be | |
37699 | #. instantiated, but that's hard to forestall. | |
37700 | -#: cp/decl.c:10960 | |
37701 | +#: cp/decl.c:10974 | |
37702 | #, gcc-internal-format | |
37703 | msgid "invalid constructor; you probably meant %<%T (const %T&)%>" | |
37704 | msgstr "constructor inválido; tal vez quiso decir %<%T (const %T&)%>" | |
37705 | ||
37706 | -#: cp/decl.c:11082 | |
37707 | +#: cp/decl.c:11096 | |
37708 | #, gcc-internal-format | |
37709 | msgid "%qD may not be declared within a namespace" | |
37710 | msgstr "%qD no se puede declarar dentro de un espacio de nombres" | |
37711 | ||
37712 | -#: cp/decl.c:11087 | |
37713 | +#: cp/decl.c:11101 | |
37714 | #, gcc-internal-format | |
37715 | msgid "%qD may not be declared as static" | |
37716 | msgstr "%qD no se puede declarar como static" | |
37717 | ||
37718 | -#: cp/decl.c:11113 | |
37719 | +#: cp/decl.c:11127 | |
37720 | #, gcc-internal-format | |
37721 | msgid "%qD must be a nonstatic member function" | |
37722 | msgstr "%qD debe ser una función miembro que no sea static" | |
37723 | ||
37724 | -#: cp/decl.c:11122 | |
37725 | +#: cp/decl.c:11136 | |
37726 | #, gcc-internal-format | |
37727 | msgid "%qD must be either a non-static member function or a non-member function" | |
37728 | msgstr "%qD debe ser una función miembro que no sea static o una función que no sea miembro" | |
37729 | ||
37730 | -#: cp/decl.c:11144 | |
37731 | +#: cp/decl.c:11158 | |
37732 | #, gcc-internal-format | |
37733 | msgid "%qD must have an argument of class or enumerated type" | |
37734 | msgstr "%qD debe tener un argumento de tipo clase o enumerado" | |
37735 | ||
37736 | -#: cp/decl.c:11173 | |
37737 | +#: cp/decl.c:11187 | |
37738 | #, gcc-internal-format | |
37739 | msgid "conversion to a reference to void will never use a type conversion operator" | |
37740 | msgstr "la conversión a una referencia a void nunca usará un operador de conversión de tipo" | |
37741 | ||
37742 | -#: cp/decl.c:11175 | |
37743 | +#: cp/decl.c:11189 | |
37744 | #, gcc-internal-format | |
37745 | msgid "conversion to void will never use a type conversion operator" | |
37746 | msgstr "la conversión a void nunca usará un operador de conversión de tipo" | |
37747 | ||
37748 | -#: cp/decl.c:11182 | |
37749 | +#: cp/decl.c:11196 | |
37750 | #, gcc-internal-format | |
37751 | msgid "conversion to a reference to the same type will never use a type conversion operator" | |
37752 | msgstr "la conversión a una referencia al mismo tipo nunca usará un operador de conversión de tipo" | |
37753 | ||
37754 | -#: cp/decl.c:11184 | |
37755 | +#: cp/decl.c:11198 | |
37756 | #, gcc-internal-format | |
37757 | msgid "conversion to the same type will never use a type conversion operator" | |
37758 | msgstr "la conversión al mismo tipo nunca usará un operador de conversión de tipo" | |
37759 | ||
37760 | -#: cp/decl.c:11192 | |
37761 | +#: cp/decl.c:11206 | |
37762 | #, gcc-internal-format | |
37763 | msgid "conversion to a reference to a base class will never use a type conversion operator" | |
37764 | msgstr "la conversión a una referencia a una clase base nunca usará un operador de conversión de tipo" | |
37765 | ||
37766 | -#: cp/decl.c:11194 | |
37767 | +#: cp/decl.c:11208 | |
37768 | #, gcc-internal-format | |
37769 | msgid "conversion to a base class will never use a type conversion operator" | |
37770 | msgstr "la conversión a una clase base nunca usará un operador de conversión de tipo" | |
37771 | ||
37772 | #. 13.4.0.3 | |
37773 | -#: cp/decl.c:11203 | |
37774 | +#: cp/decl.c:11217 | |
37775 | #, gcc-internal-format | |
37776 | msgid "ISO C++ prohibits overloading operator ?:" | |
37777 | msgstr "ISO C++ prohíbe la sobrecarga del operador ?:" | |
37778 | ||
37779 | -#: cp/decl.c:11208 | |
37780 | +#: cp/decl.c:11222 | |
37781 | #, gcc-internal-format | |
37782 | msgid "%qD must not have variable number of arguments" | |
37783 | msgstr "%qD no debe tener un número variable de argumentos" | |
37784 | ||
37785 | -#: cp/decl.c:11259 | |
37786 | +#: cp/decl.c:11273 | |
37787 | #, gcc-internal-format | |
37788 | msgid "postfix %qD must take %<int%> as its argument" | |
37789 | msgstr "el postfijo %qD debe tomar %<int%> como su argumento" | |
37790 | ||
37791 | -#: cp/decl.c:11262 | |
37792 | +#: cp/decl.c:11276 | |
37793 | #, gcc-internal-format | |
37794 | msgid "postfix %qD must take %<int%> as its second argument" | |
37795 | msgstr "el postfijo %qD debe tomar %<int%> como su segundo argumento" | |
37796 | ||
37797 | -#: cp/decl.c:11270 | |
37798 | +#: cp/decl.c:11284 | |
37799 | #, gcc-internal-format | |
37800 | msgid "%qD must take either zero or one argument" | |
37801 | msgstr "%qD debe tomar cero o un argumentos" | |
37802 | ||
37803 | -#: cp/decl.c:11272 | |
37804 | +#: cp/decl.c:11286 | |
37805 | #, gcc-internal-format | |
37806 | msgid "%qD must take either one or two arguments" | |
37807 | msgstr "%qD debe tomar uno o dos argumentos" | |
37808 | ||
37809 | # En esta traducción se emplea 'devolver' por 'return'. Si embargo, aquí | |
37810 | # se cambió por cacofonía: no es agradable escuchar 'debe devolver'. cfuga | |
37811 | -#: cp/decl.c:11294 | |
37812 | +#: cp/decl.c:11308 | |
37813 | #, gcc-internal-format | |
37814 | msgid "prefix %qD should return %qT" | |
37815 | msgstr "el prefijo %qD debe regresar %qT" | |
37816 | ||
37817 | -#: cp/decl.c:11300 | |
37818 | +#: cp/decl.c:11314 | |
37819 | #, gcc-internal-format | |
37820 | msgid "postfix %qD should return %qT" | |
37821 | msgstr "el postfijo %qD debe regresar %qT" | |
37822 | ||
37823 | -#: cp/decl.c:11309 | |
37824 | +#: cp/decl.c:11323 | |
37825 | #, gcc-internal-format | |
37826 | msgid "%qD must take %<void%>" | |
37827 | msgstr "%qD debe tomar %<void%>" | |
37828 | ||
37829 | -#: cp/decl.c:11311 cp/decl.c:11320 | |
37830 | +#: cp/decl.c:11325 cp/decl.c:11334 | |
37831 | #, gcc-internal-format | |
37832 | msgid "%qD must take exactly one argument" | |
37833 | msgstr "%qD debe tomar un argumento exactamente" | |
37834 | ||
37835 | -#: cp/decl.c:11322 | |
37836 | +#: cp/decl.c:11336 | |
37837 | #, gcc-internal-format | |
37838 | msgid "%qD must take exactly two arguments" | |
37839 | msgstr "%qD debe tomar dos argumentos exactamente" | |
37840 | ||
37841 | -#: cp/decl.c:11331 | |
37842 | +#: cp/decl.c:11345 | |
37843 | #, gcc-internal-format | |
37844 | msgid "user-defined %qD always evaluates both arguments" | |
37845 | msgstr "el %qD definido por el usuario siempre evalúa ambos argumentos" | |
37846 | ||
37847 | -#: cp/decl.c:11345 | |
37848 | +#: cp/decl.c:11359 | |
37849 | #, gcc-internal-format | |
37850 | msgid "%qD should return by value" | |
37851 | msgstr "%qD debe devolver por valor" | |
37852 | ||
37853 | -#: cp/decl.c:11356 cp/decl.c:11361 | |
37854 | +#: cp/decl.c:11370 cp/decl.c:11375 | |
37855 | #, gcc-internal-format | |
37856 | msgid "%qD cannot have default arguments" | |
37857 | msgstr "%qD no puede tener argumentos por defecto" | |
37858 | ||
37859 | -#: cp/decl.c:11422 | |
37860 | +#: cp/decl.c:11436 | |
37861 | #, gcc-internal-format | |
37862 | msgid "using template type parameter %qT after %qs" | |
37863 | msgstr "usando el parámetro de tipo plantilla %qT después de %qs" | |
37864 | ||
37865 | -#: cp/decl.c:11444 | |
37866 | +#: cp/decl.c:11458 | |
37867 | #, gcc-internal-format | |
37868 | msgid "using alias template specialization %qT after %qs" | |
37869 | msgstr "se usa especialización de plantilla %qT alias después de %qs" | |
37870 | ||
37871 | -#: cp/decl.c:11447 | |
37872 | +#: cp/decl.c:11461 | |
37873 | #, gcc-internal-format | |
37874 | msgid "using typedef-name %qD after %qs" | |
37875 | msgstr "se usó el nombre de definición de tipo %qD después de %qs" | |
37876 | ||
37877 | -#: cp/decl.c:11449 | |
37878 | +#: cp/decl.c:11463 | |
37879 | #, gcc-internal-format | |
37880 | msgid "%qD has a previous declaration here" | |
37881 | msgstr "%qD tiene una declaración previa aquí" | |
37882 | ||
37883 | -#: cp/decl.c:11457 | |
37884 | +#: cp/decl.c:11471 | |
37885 | #, gcc-internal-format | |
37886 | msgid "%qT referred to as %qs" | |
37887 | msgstr "se refirió a %qT como %qs" | |
37888 | ||
37889 | -#: cp/decl.c:11458 cp/decl.c:11465 | |
37890 | +#: cp/decl.c:11472 cp/decl.c:11479 | |
37891 | #, gcc-internal-format | |
37892 | msgid "%q+T has a previous declaration here" | |
37893 | msgstr "%q+T tiene una declaración previa aquí" | |
37894 | ||
37895 | -#: cp/decl.c:11464 | |
37896 | +#: cp/decl.c:11478 | |
37897 | #, gcc-internal-format | |
37898 | msgid "%qT referred to as enum" | |
37899 | msgstr "se refirió a %qT como un enum" | |
37900 | @@ -28909,90 +29115,90 @@ | |
37901 | #. void f(class C); // No template header here | |
37902 | #. | |
37903 | #. then the required template argument is missing. | |
37904 | -#: cp/decl.c:11479 | |
37905 | +#: cp/decl.c:11493 | |
37906 | #, gcc-internal-format | |
37907 | msgid "template argument required for %<%s %T%>" | |
37908 | msgstr "se requiere un argumento de plantilla para %<%s %T%>" | |
37909 | ||
37910 | -#: cp/decl.c:11527 cp/name-lookup.c:3049 | |
37911 | +#: cp/decl.c:11541 cp/name-lookup.c:3049 | |
37912 | #, gcc-internal-format | |
37913 | msgid "%qD has the same name as the class in which it is declared" | |
37914 | msgstr "%qD tiene el mismo nombre que la clase en la cual se declaró" | |
37915 | ||
37916 | -#: cp/decl.c:11557 cp/name-lookup.c:2548 cp/name-lookup.c:3373 | |
37917 | +#: cp/decl.c:11571 cp/name-lookup.c:2548 cp/name-lookup.c:3373 | |
37918 | #: cp/name-lookup.c:3418 cp/parser.c:5054 cp/parser.c:20501 | |
37919 | #, gcc-internal-format | |
37920 | msgid "reference to %qD is ambiguous" | |
37921 | msgstr "la referencia a %qD es ambigua" | |
37922 | ||
37923 | -#: cp/decl.c:11669 | |
37924 | +#: cp/decl.c:11683 | |
37925 | #, gcc-internal-format | |
37926 | msgid "use of enum %q#D without previous declaration" | |
37927 | msgstr "uso del enum %q#D sin declaración previa" | |
37928 | ||
37929 | -#: cp/decl.c:11690 | |
37930 | +#: cp/decl.c:11704 | |
37931 | #, gcc-internal-format | |
37932 | msgid "redeclaration of %qT as a non-template" | |
37933 | msgstr "redeclaración de %qT como algo que no es plantilla" | |
37934 | ||
37935 | -#: cp/decl.c:11691 | |
37936 | +#: cp/decl.c:11705 | |
37937 | #, gcc-internal-format | |
37938 | msgid "previous declaration %q+D" | |
37939 | msgstr "declaración previa de %q+D" | |
37940 | ||
37941 | -#: cp/decl.c:11825 | |
37942 | +#: cp/decl.c:11839 | |
37943 | #, gcc-internal-format | |
37944 | msgid "derived union %qT invalid" | |
37945 | msgstr "union derivada %qT inválida" | |
37946 | ||
37947 | -#: cp/decl.c:11834 | |
37948 | +#: cp/decl.c:11848 | |
37949 | #, gcc-internal-format | |
37950 | msgid "Java class %qT cannot have multiple bases" | |
37951 | msgstr "la clase Java %qT no puede tener bases múltiples" | |
37952 | ||
37953 | -#: cp/decl.c:11845 | |
37954 | +#: cp/decl.c:11859 | |
37955 | #, gcc-internal-format | |
37956 | msgid "Java class %qT cannot have virtual bases" | |
37957 | msgstr "la clase Java %qT no puede tener bases virtuales" | |
37958 | ||
37959 | # No me gusta mucho esta traducción. Creo que es mejor | |
37960 | # "el tipo base %qT no es de tipo struct o clase". cfuga | |
37961 | -#: cp/decl.c:11865 | |
37962 | +#: cp/decl.c:11879 | |
37963 | #, gcc-internal-format | |
37964 | msgid "base type %qT fails to be a struct or class type" | |
37965 | msgstr "el tipo base %qT falla en ser un tipo struct o clase" | |
37966 | ||
37967 | -#: cp/decl.c:11898 | |
37968 | +#: cp/decl.c:11912 | |
37969 | #, gcc-internal-format | |
37970 | msgid "recursive type %qT undefined" | |
37971 | msgstr "tipo recursivo %qT sin definir" | |
37972 | ||
37973 | -#: cp/decl.c:11900 | |
37974 | +#: cp/decl.c:11914 | |
37975 | #, gcc-internal-format | |
37976 | msgid "duplicate base type %qT invalid" | |
37977 | msgstr "tipo base duplicado %qT inválido" | |
37978 | ||
37979 | -#: cp/decl.c:12024 | |
37980 | +#: cp/decl.c:12038 | |
37981 | #, gcc-internal-format | |
37982 | msgid "scoped/unscoped mismatch in enum %q#T" | |
37983 | msgstr "no coinciden scoped/unscoped en el enum %q#T" | |
37984 | ||
37985 | -#: cp/decl.c:12027 cp/decl.c:12035 cp/decl.c:12047 cp/parser.c:14514 | |
37986 | +#: cp/decl.c:12041 cp/decl.c:12049 cp/decl.c:12061 cp/parser.c:14514 | |
37987 | #, gcc-internal-format | |
37988 | msgid "previous definition here" | |
37989 | msgstr "la definición previa está aquí" | |
37990 | ||
37991 | -#: cp/decl.c:12032 | |
37992 | +#: cp/decl.c:12046 | |
37993 | #, gcc-internal-format | |
37994 | msgid "underlying type mismatch in enum %q#T" | |
37995 | msgstr "no coincide el tipo subyacente en el enum %q#T" | |
37996 | ||
37997 | -#: cp/decl.c:12044 | |
37998 | +#: cp/decl.c:12058 | |
37999 | #, gcc-internal-format | |
38000 | msgid "different underlying type in enum %q#T" | |
38001 | msgstr "tipos subyacentes diferentes en el enum %q#T" | |
38002 | ||
38003 | -#: cp/decl.c:12111 | |
38004 | +#: cp/decl.c:12125 | |
38005 | #, gcc-internal-format | |
38006 | msgid "underlying type %<%T%> of %<%T%> must be an integral type" | |
38007 | msgstr "el tipo subyacente %<%T%> de %<%T%> debe ser un tipo integral" | |
38008 | @@ -29001,72 +29207,72 @@ | |
38009 | #. | |
38010 | #. IF no integral type can represent all the enumerator values, the | |
38011 | #. enumeration is ill-formed. | |
38012 | -#: cp/decl.c:12245 | |
38013 | +#: cp/decl.c:12259 | |
38014 | #, gcc-internal-format | |
38015 | msgid "no integral type can represent all of the enumerator values for %qT" | |
38016 | msgstr "ningún tipo integral puede representar todos los valores de enumerador de %qT" | |
38017 | ||
38018 | -#: cp/decl.c:12380 | |
38019 | +#: cp/decl.c:12394 | |
38020 | #, gcc-internal-format | |
38021 | msgid "enumerator value for %qD is not an integer constant" | |
38022 | msgstr "el valor de enumerador para %qD no es una constante entera" | |
38023 | ||
38024 | -#: cp/decl.c:12430 | |
38025 | +#: cp/decl.c:12444 | |
38026 | #, gcc-internal-format | |
38027 | msgid "incremented enumerator value is too large for %<unsigned long%>" | |
38028 | msgstr "el valor del enumerador incrementado es demasiado grande para %<unsigned long%>" | |
38029 | ||
38030 | -#: cp/decl.c:12442 | |
38031 | +#: cp/decl.c:12456 | |
38032 | #, gcc-internal-format | |
38033 | msgid "overflow in enumeration values at %qD" | |
38034 | msgstr "desbordamiento en valores de enumeración en %qD" | |
38035 | ||
38036 | -#: cp/decl.c:12462 | |
38037 | +#: cp/decl.c:12476 | |
38038 | #, gcc-internal-format | |
38039 | msgid "enumerator value %E is too large for underlying type %<%T%>" | |
38040 | msgstr "el valor de enumerador %E es demasiado grande para el tipo subyacente %<%T%>" | |
38041 | ||
38042 | -#: cp/decl.c:12559 | |
38043 | +#: cp/decl.c:12573 | |
38044 | #, gcc-internal-format | |
38045 | msgid "return type %q#T is incomplete" | |
38046 | msgstr "el tipo de devolución %q#T es un tipo de dato incompleto" | |
38047 | ||
38048 | -#: cp/decl.c:12561 | |
38049 | +#: cp/decl.c:12575 | |
38050 | #, gcc-internal-format | |
38051 | msgid "return type has Java class type %q#T" | |
38052 | msgstr "el tipo de devolución tiene tipo de clase Java %q#T" | |
38053 | ||
38054 | -#: cp/decl.c:12685 cp/typeck.c:7896 | |
38055 | +#: cp/decl.c:12699 cp/typeck.c:7896 | |
38056 | #, gcc-internal-format | |
38057 | msgid "%<operator=%> should return a reference to %<*this%>" | |
38058 | msgstr "%<operator=%> debe devolver una referencia a %<*this%>" | |
38059 | ||
38060 | -#: cp/decl.c:12780 | |
38061 | +#: cp/decl.c:12794 | |
38062 | #, gcc-internal-format | |
38063 | msgid "no previous declaration for %q+D" | |
38064 | msgstr "no hay declaración previa para %q+D" | |
38065 | ||
38066 | -#: cp/decl.c:12995 | |
38067 | +#: cp/decl.c:13009 | |
38068 | #, gcc-internal-format | |
38069 | msgid "invalid function declaration" | |
38070 | msgstr "declaración de función inválida" | |
38071 | ||
38072 | -#: cp/decl.c:13079 | |
38073 | +#: cp/decl.c:13093 | |
38074 | #, gcc-internal-format | |
38075 | msgid "parameter %qD declared void" | |
38076 | msgstr "el parámetro %qD se declaró void" | |
38077 | ||
38078 | -#: cp/decl.c:13532 | |
38079 | +#: cp/decl.c:13546 | |
38080 | #, gcc-internal-format | |
38081 | msgid "parameter %q+D set but not used" | |
38082 | msgstr "se define el parámetro %q+D pero no se usa" | |
38083 | ||
38084 | -#: cp/decl.c:13627 | |
38085 | +#: cp/decl.c:13641 | |
38086 | #, gcc-internal-format | |
38087 | msgid "invalid member function declaration" | |
38088 | msgstr "declaración de la función miembro inválida" | |
38089 | ||
38090 | -#: cp/decl.c:13641 | |
38091 | +#: cp/decl.c:13655 | |
38092 | #, gcc-internal-format | |
38093 | msgid "%qD is already defined in class %qT" | |
38094 | msgstr "%qD ya se definió en la clase %qT" | |
38095 | @@ -29106,7 +29312,7 @@ | |
38096 | msgid "deleting %qT is undefined" | |
38097 | msgstr "el borrado de %qT está indefinido" | |
38098 | ||
38099 | -#: cp/decl2.c:512 cp/pt.c:4875 | |
38100 | +#: cp/decl2.c:512 cp/pt.c:4877 | |
38101 | #, gcc-internal-format | |
38102 | msgid "template declaration of %q#D" | |
38103 | msgstr "declaración plantilla de %q#D" | |
38104 | @@ -29297,87 +29503,87 @@ | |
38105 | msgid "use of deleted function %qD" | |
38106 | msgstr "se usó la función borrada %q+D" | |
38107 | ||
38108 | -#: cp/error.c:3261 | |
38109 | +#: cp/error.c:3263 | |
38110 | #, gcc-internal-format | |
38111 | msgid "extended initializer lists only available with -std=c++11 or -std=gnu++11" | |
38112 | msgstr "las listas de inicializador extendidas sólo está disponibles con -std=c++11 o -std=gnu++11" | |
38113 | ||
38114 | -#: cp/error.c:3266 | |
38115 | +#: cp/error.c:3268 | |
38116 | #, gcc-internal-format | |
38117 | msgid "explicit conversion operators only available with -std=c++11 or -std=gnu++11" | |
38118 | msgstr "los operadores de conversión explícita sólo están disponibles con -std=c++11 o -std=gnu++11" | |
38119 | ||
38120 | -#: cp/error.c:3271 | |
38121 | +#: cp/error.c:3273 | |
38122 | #, gcc-internal-format | |
38123 | msgid "variadic templates only available with -std=c++11 or -std=gnu++11" | |
38124 | msgstr "las plantillas variadic sólo están disponibles con -std=c++11 o -std=gnu++11" | |
38125 | ||
38126 | -#: cp/error.c:3276 | |
38127 | +#: cp/error.c:3278 | |
38128 | #, gcc-internal-format | |
38129 | msgid "lambda expressions only available with -std=c++11 or -std=gnu++11" | |
38130 | msgstr "las expresiones lambda sólo están disponibles con -std=c++11 o -std=gnu++11" | |
38131 | ||
38132 | -#: cp/error.c:3281 | |
38133 | +#: cp/error.c:3283 | |
38134 | #, gcc-internal-format | |
38135 | msgid "C++0x auto only available with -std=c++11 or -std=gnu++11" | |
38136 | msgstr "C++0x automático sólo está disponible con -std=c++11 o -std=gnu++11" | |
38137 | ||
38138 | -#: cp/error.c:3285 | |
38139 | +#: cp/error.c:3287 | |
38140 | #, gcc-internal-format | |
38141 | msgid "scoped enums only available with -std=c++11 or -std=gnu++11" | |
38142 | msgstr "los enums con ámbito sólo están disponibles con -std=c++11 o -std=gnu++11" | |
38143 | ||
38144 | -#: cp/error.c:3289 | |
38145 | +#: cp/error.c:3291 | |
38146 | #, gcc-internal-format | |
38147 | msgid "defaulted and deleted functions only available with -std=c++11 or -std=gnu++11" | |
38148 | msgstr "las funciones por defecto y borradas sólo están disponibles con -std=c++11 o -std=gnu++11" | |
38149 | ||
38150 | -#: cp/error.c:3294 | |
38151 | +#: cp/error.c:3296 | |
38152 | #, gcc-internal-format | |
38153 | msgid "inline namespaces only available with -std=c++11 or -std=gnu++11" | |
38154 | msgstr "los nombres de espacio incluídos en línea sólo están disponibles con -std=c++11 o -std=gnu++11" | |
38155 | ||
38156 | -#: cp/error.c:3299 | |
38157 | +#: cp/error.c:3301 | |
38158 | #, gcc-internal-format | |
38159 | msgid "override controls (override/final) only available with -std=c++11 or -std=gnu++11" | |
38160 | msgstr "los controles de anulación (override/final) sólo están disponibles con -std=c++11 o -std=gnu++11" | |
38161 | ||
38162 | -#: cp/error.c:3304 | |
38163 | +#: cp/error.c:3306 | |
38164 | #, gcc-internal-format | |
38165 | msgid "non-static data member initializers only available with -std=c++11 or -std=gnu++11" | |
38166 | msgstr "los inicializadores de datos miembro que no son static sólo está disponibles con -std=c++11 o -std=gnu++11" | |
38167 | ||
38168 | -#: cp/error.c:3309 | |
38169 | +#: cp/error.c:3311 | |
38170 | #, gcc-internal-format | |
38171 | msgid "user-defined literals only available with -std=c++11 or -std=gnu++11" | |
38172 | msgstr "las literales definidas por el usuario sólo está disponibles con -std=c++11 o -std=gnu++11" | |
38173 | ||
38174 | -#: cp/error.c:3314 | |
38175 | +#: cp/error.c:3316 | |
38176 | #, gcc-internal-format | |
38177 | msgid "delegating constructors only available with -std=c++11 or -std=gnu++11" | |
38178 | msgstr "los constructores delegadores sólo están disponibles con -std=c++11 o -std=gnu++11" | |
38179 | ||
38180 | -#: cp/error.c:3361 | |
38181 | +#: cp/error.c:3363 | |
38182 | #, gcc-internal-format | |
38183 | msgid "incomplete type %qT used in nested name specifier" | |
38184 | msgstr "se utilizó el tipo incompleto %qT en un especificador de nombre anidado" | |
38185 | ||
38186 | -#: cp/error.c:3365 | |
38187 | +#: cp/error.c:3367 | |
38188 | #, gcc-internal-format | |
38189 | msgid "reference to %<%T::%D%> is ambiguous" | |
38190 | msgstr "la referencia a %<%T::%D%> es ambigua" | |
38191 | ||
38192 | -#: cp/error.c:3370 cp/typeck.c:2178 | |
38193 | +#: cp/error.c:3372 cp/typeck.c:2178 | |
38194 | #, gcc-internal-format | |
38195 | msgid "%qD is not a member of %qT" | |
38196 | msgstr "%qD no es un miembro de %qT" | |
38197 | ||
38198 | -#: cp/error.c:3374 | |
38199 | +#: cp/error.c:3376 | |
38200 | #, gcc-internal-format | |
38201 | msgid "%qD is not a member of %qD" | |
38202 | msgstr "%qD no es un miembro de %qD" | |
38203 | ||
38204 | -#: cp/error.c:3379 | |
38205 | +#: cp/error.c:3381 | |
38206 | #, gcc-internal-format | |
38207 | msgid "%<::%D%> has not been declared" | |
38208 | msgstr "%<::%D%> no se ha declarado" | |
38209 | @@ -29878,42 +30084,42 @@ | |
38210 | msgid "(if you use %<-fpermissive%>, G++ will accept your code, but allowing the use of an undeclared name is deprecated)" | |
38211 | msgstr "(si utiliza %<-fpermissive%>, G++ aceptará su código, pero permitir el uso de un nombre sin declarar es obsoleto)" | |
38212 | ||
38213 | -#: cp/mangle.c:2024 | |
38214 | +#: cp/mangle.c:2022 | |
38215 | #, gcc-internal-format | |
38216 | msgid "mangling typeof, use decltype instead" | |
38217 | msgstr "se decodifica typeof, utilice decltype en su lugar" | |
38218 | ||
38219 | -#: cp/mangle.c:2028 | |
38220 | +#: cp/mangle.c:2026 | |
38221 | #, gcc-internal-format | |
38222 | msgid "mangling __underlying_type" | |
38223 | msgstr "se decodifica __underlying_type" | |
38224 | ||
38225 | -#: cp/mangle.c:2252 | |
38226 | +#: cp/mangle.c:2250 | |
38227 | #, gcc-internal-format | |
38228 | msgid "mangling unknown fixed point type" | |
38229 | msgstr "se decodifica el tipo de coma fija desconocido" | |
38230 | ||
38231 | -#: cp/mangle.c:2811 | |
38232 | +#: cp/mangle.c:2809 | |
38233 | #, gcc-internal-format, gfc-internal-format | |
38234 | msgid "mangling %C" | |
38235 | msgstr "decodificando %C" | |
38236 | ||
38237 | -#: cp/mangle.c:2886 | |
38238 | +#: cp/mangle.c:2884 | |
38239 | #, gcc-internal-format | |
38240 | msgid "omitted middle operand to %<?:%> operand cannot be mangled" | |
38241 | msgstr "se omitió el operando de enmedio de %<?%>: no se puede revolver el operando" | |
38242 | ||
38243 | -#: cp/mangle.c:2950 | |
38244 | +#: cp/mangle.c:2948 | |
38245 | #, gcc-internal-format | |
38246 | msgid "string literal in function template signature" | |
38247 | msgstr "literal de cadena en la firma de plantilla de función" | |
38248 | ||
38249 | -#: cp/mangle.c:3239 | |
38250 | +#: cp/mangle.c:3237 | |
38251 | #, gcc-internal-format | |
38252 | msgid "the mangled name of %qD will change in a future version of GCC" | |
38253 | msgstr "el nombre revuelto de %qD cambiará en una versión futura de GCC" | |
38254 | ||
38255 | -#: cp/mangle.c:3383 | |
38256 | +#: cp/mangle.c:3381 | |
38257 | #, gcc-internal-format | |
38258 | msgid "-fabi-version=6 (or =0) avoids this error with a change in mangling" | |
38259 | msgstr "-fabi-version=6 (o =0) evita este error con un cambio en la decodificación" | |
38260 | @@ -30428,7 +30634,7 @@ | |
38261 | msgid "(perhaps a semicolon is missing after the definition of %qT)" | |
38262 | msgstr "(tal vez falta un punto y coma después de la definición de %qT)" | |
38263 | ||
38264 | -#: cp/parser.c:2604 cp/parser.c:5102 cp/pt.c:7239 | |
38265 | +#: cp/parser.c:2604 cp/parser.c:5102 cp/pt.c:7241 | |
38266 | #, gcc-internal-format | |
38267 | msgid "%qT is not a template" | |
38268 | msgstr "%qT no es una plantilla" | |
38269 | @@ -30448,7 +30654,7 @@ | |
38270 | msgid "floating-point literal cannot appear in a constant-expression" | |
38271 | msgstr "una literal de coma flotante no puede aparecer en una expresión constante" | |
38272 | ||
38273 | -#: cp/parser.c:2645 cp/pt.c:13485 | |
38274 | +#: cp/parser.c:2645 cp/pt.c:13498 | |
38275 | #, gcc-internal-format | |
38276 | msgid "a cast to a type other than an integral or enumeration type cannot appear in a constant-expression" | |
38277 | msgstr "una conversión a un tipo diferente de un tipo integral o de enumeración no puede aparecer en una expresión constante" | |
38278 | @@ -31838,7 +32044,7 @@ | |
38279 | msgid "parenthesized initialization is not allowed in OpenMP %<for%> loop" | |
38280 | msgstr "no se permite la inicialización entre paréntesis para el bucle %<for%> en OpenMP" | |
38281 | ||
38282 | -#: cp/parser.c:26407 cp/pt.c:12680 | |
38283 | +#: cp/parser.c:26407 cp/pt.c:12693 | |
38284 | #, gcc-internal-format | |
38285 | msgid "iteration variable %qD should not be reduction" | |
38286 | msgstr "la variable de iteración %qD no debe ser reduction" | |
38287 | @@ -32060,109 +32266,109 @@ | |
38288 | msgid "expansion pattern %<%E%> contains no argument packs" | |
38289 | msgstr "el patrón de expansión %<%E%> no contiene paquetes de argumento" | |
38290 | ||
38291 | -#: cp/pt.c:3277 | |
38292 | +#: cp/pt.c:3279 | |
38293 | #, gcc-internal-format | |
38294 | msgid "parameter packs not expanded with %<...%>:" | |
38295 | msgstr "no se expanden los paquetes de parámetro con %<...%>" | |
38296 | ||
38297 | -#: cp/pt.c:3292 cp/pt.c:4370 | |
38298 | +#: cp/pt.c:3294 cp/pt.c:4372 | |
38299 | #, gcc-internal-format | |
38300 | msgid " %qD" | |
38301 | msgstr " %qD" | |
38302 | ||
38303 | -#: cp/pt.c:3294 | |
38304 | +#: cp/pt.c:3296 | |
38305 | #, gcc-internal-format | |
38306 | msgid " <anonymous>" | |
38307 | msgstr " <anónimo>" | |
38308 | ||
38309 | -#: cp/pt.c:3411 | |
38310 | +#: cp/pt.c:3413 | |
38311 | #, gcc-internal-format | |
38312 | msgid "declaration of %q+#D" | |
38313 | msgstr "la declaración de %q+#D" | |
38314 | ||
38315 | -#: cp/pt.c:3412 | |
38316 | +#: cp/pt.c:3414 | |
38317 | #, gcc-internal-format | |
38318 | msgid " shadows template parm %q+#D" | |
38319 | msgstr " oscurece el parámetro de plantilla %q+#D" | |
38320 | ||
38321 | -#: cp/pt.c:4366 | |
38322 | +#: cp/pt.c:4368 | |
38323 | #, gcc-internal-format | |
38324 | msgid "template parameters not used in partial specialization:" | |
38325 | msgstr "no se usan los parámetros de plantilla en la especialización parcial:" | |
38326 | ||
38327 | -#: cp/pt.c:4384 | |
38328 | +#: cp/pt.c:4386 | |
38329 | #, gcc-internal-format | |
38330 | msgid "partial specialization %qT does not specialize any template arguments" | |
38331 | msgstr "la especialización parcial %qT no especializa ningún argumento de plantilla" | |
38332 | ||
38333 | -#: cp/pt.c:4429 | |
38334 | +#: cp/pt.c:4431 | |
38335 | #, gcc-internal-format | |
38336 | msgid "parameter pack argument %qE must be at the end of the template argument list" | |
38337 | msgstr "el argumento de paquete de parámetro %qE debe estar al final de la lista de argumentos de plantilla" | |
38338 | ||
38339 | -#: cp/pt.c:4432 | |
38340 | +#: cp/pt.c:4434 | |
38341 | #, gcc-internal-format | |
38342 | msgid "parameter pack argument %qT must be at the end of the template argument list" | |
38343 | msgstr "el argumento de paquete de parámetro %qT debe estar al final de la lista de argumentos de plantilla" | |
38344 | ||
38345 | -#: cp/pt.c:4451 | |
38346 | +#: cp/pt.c:4453 | |
38347 | #, gcc-internal-format | |
38348 | msgid "template argument %qE involves template parameter(s)" | |
38349 | msgstr "el argumento de plantilla %qE involucra a el(los) parámetro(s) de plantilla" | |
38350 | ||
38351 | -#: cp/pt.c:4497 | |
38352 | +#: cp/pt.c:4499 | |
38353 | #, gcc-internal-format | |
38354 | msgid "type %qT of template argument %qE depends on a template parameter" | |
38355 | msgid_plural "type %qT of template argument %qE depends on template parameters" | |
38356 | msgstr[0] "el tipo %qT del argumento de plantilla %qE depende de un parámetro de plantilla" | |
38357 | msgstr[1] "el tipo %qT del argumento de plantilla %qE depende de parámetros de plantilla" | |
38358 | ||
38359 | -#: cp/pt.c:4527 | |
38360 | +#: cp/pt.c:4529 | |
38361 | #, gcc-internal-format | |
38362 | msgid "partial specialization of %qT after instantiation of %qT" | |
38363 | msgstr "especialización parcial de %qT después de la instanciación %qT" | |
38364 | ||
38365 | -#: cp/pt.c:4620 | |
38366 | +#: cp/pt.c:4622 | |
38367 | #, gcc-internal-format | |
38368 | msgid "no default argument for %qD" | |
38369 | msgstr "no hay un argumento por defecto para %qD" | |
38370 | ||
38371 | -#: cp/pt.c:4641 | |
38372 | +#: cp/pt.c:4643 | |
38373 | #, gcc-internal-format | |
38374 | msgid "parameter pack %qE must be at the end of the template parameter list" | |
38375 | msgstr "el parámetro de paquete %qE debe estar al final de la lista de parámetros de plantilla" | |
38376 | ||
38377 | -#: cp/pt.c:4644 | |
38378 | +#: cp/pt.c:4646 | |
38379 | #, gcc-internal-format | |
38380 | msgid "parameter pack %qT must be at the end of the template parameter list" | |
38381 | msgstr "el parámetro de paquete %qT debe estar al final de la lista de parámetros de plantilla" | |
38382 | ||
38383 | -#: cp/pt.c:4681 | |
38384 | +#: cp/pt.c:4683 | |
38385 | #, gcc-internal-format | |
38386 | msgid "default template arguments may not be used in function template friend re-declaration" | |
38387 | msgstr "no se pueden usar los argumentos de plantilla por defecto en la re-declaración friend de la plantilla de función" | |
38388 | ||
38389 | -#: cp/pt.c:4684 | |
38390 | +#: cp/pt.c:4686 | |
38391 | #, gcc-internal-format | |
38392 | msgid "default template arguments may not be used in function template friend declarations" | |
38393 | msgstr "no se pueden usar los argumentos de plantilla por defecto en las declaraciones friend de la plantilla de función" | |
38394 | ||
38395 | -#: cp/pt.c:4687 | |
38396 | +#: cp/pt.c:4689 | |
38397 | #, gcc-internal-format | |
38398 | msgid "default template arguments may not be used in function templates without -std=c++11 or -std=gnu++11" | |
38399 | msgstr "los argumentos de plantilla por defecto no se pueden usar en las plantillas de función sin -std=c++11 o -std=gnu++11" | |
38400 | ||
38401 | -#: cp/pt.c:4690 | |
38402 | +#: cp/pt.c:4692 | |
38403 | #, gcc-internal-format | |
38404 | msgid "default template arguments may not be used in partial specializations" | |
38405 | msgstr "no se pueden usar los argumentos de plantilla por defecto en las especializaciones parciales" | |
38406 | ||
38407 | -#: cp/pt.c:4693 cp/pt.c:4744 | |
38408 | +#: cp/pt.c:4695 cp/pt.c:4746 | |
38409 | #, gcc-internal-format | |
38410 | msgid "default argument for template parameter for class enclosing %qD" | |
38411 | msgstr "argumento por defecto para el parámetro de plantilla para la clase incluyente %qD" | |
38412 | ||
38413 | -#: cp/pt.c:4837 | |
38414 | +#: cp/pt.c:4839 | |
38415 | #, gcc-internal-format | |
38416 | msgid "template class without a name" | |
38417 | msgstr "clase de plantilla sin nombre" | |
38418 | @@ -32170,7 +32376,7 @@ | |
38419 | #. [temp.mem] | |
38420 | #. | |
38421 | #. A destructor shall not be a member template. | |
38422 | -#: cp/pt.c:4847 | |
38423 | +#: cp/pt.c:4849 | |
38424 | #, gcc-internal-format | |
38425 | msgid "destructor %qD declared as member template" | |
38426 | msgstr "se declaró el destructor %qD como una plantilla miembro" | |
38427 | @@ -32180,76 +32386,76 @@ | |
38428 | #. An allocation function can be a function | |
38429 | #. template. ... Template allocation functions shall | |
38430 | #. have two or more parameters. | |
38431 | -#: cp/pt.c:4862 | |
38432 | +#: cp/pt.c:4864 | |
38433 | #, gcc-internal-format | |
38434 | msgid "invalid template declaration of %qD" | |
38435 | msgstr "declaración de la plantilla de %qD inválida" | |
38436 | ||
38437 | -#: cp/pt.c:4986 | |
38438 | +#: cp/pt.c:4988 | |
38439 | #, gcc-internal-format | |
38440 | msgid "template definition of non-template %q#D" | |
38441 | msgstr "definición de plantilla de %q#D que no es plantilla" | |
38442 | ||
38443 | -#: cp/pt.c:5029 | |
38444 | +#: cp/pt.c:5031 | |
38445 | #, gcc-internal-format | |
38446 | msgid "expected %d levels of template parms for %q#D, got %d" | |
38447 | msgstr "se esperaban %d niveles de parámetros de plantilla para %q#D, se obtuvieron %d" | |
38448 | ||
38449 | -#: cp/pt.c:5041 | |
38450 | +#: cp/pt.c:5043 | |
38451 | #, gcc-internal-format | |
38452 | msgid "got %d template parameters for %q#D" | |
38453 | msgstr "se obtuvieron %d parámetros de plantilla para %q#D" | |
38454 | ||
38455 | -#: cp/pt.c:5044 | |
38456 | +#: cp/pt.c:5046 | |
38457 | #, gcc-internal-format | |
38458 | msgid "got %d template parameters for %q#T" | |
38459 | msgstr "se obtuvieron %d parámetros de plantilla para %q#T" | |
38460 | ||
38461 | -#: cp/pt.c:5046 | |
38462 | +#: cp/pt.c:5048 | |
38463 | #, gcc-internal-format, gfc-internal-format | |
38464 | msgid " but %d required" | |
38465 | msgstr " pero se requieren %d" | |
38466 | ||
38467 | -#: cp/pt.c:5067 | |
38468 | +#: cp/pt.c:5069 | |
38469 | #, gcc-internal-format | |
38470 | msgid "template arguments to %qD do not match original template %qD" | |
38471 | msgstr "los argumentos de plantilla para %qD no coinciden con la plantilla original %qD" | |
38472 | ||
38473 | -#: cp/pt.c:5071 | |
38474 | +#: cp/pt.c:5073 | |
38475 | #, gcc-internal-format | |
38476 | msgid "use template<> for an explicit specialization" | |
38477 | msgstr "utilice template<> para una especialización explícita" | |
38478 | ||
38479 | -#: cp/pt.c:5172 | |
38480 | +#: cp/pt.c:5174 | |
38481 | #, gcc-internal-format | |
38482 | msgid "%qT is not a template type" | |
38483 | msgstr "%qT no es un tipo plantilla" | |
38484 | ||
38485 | -#: cp/pt.c:5185 | |
38486 | +#: cp/pt.c:5187 | |
38487 | #, gcc-internal-format | |
38488 | msgid "template specifiers not specified in declaration of %qD" | |
38489 | msgstr "no se especificaron los especificadores de plantilla en la declaración de %qD" | |
38490 | ||
38491 | -#: cp/pt.c:5196 | |
38492 | +#: cp/pt.c:5198 | |
38493 | #, gcc-internal-format, gfc-internal-format | |
38494 | msgid "redeclared with %d template parameter" | |
38495 | msgid_plural "redeclared with %d template parameters" | |
38496 | msgstr[0] "se redeclaró con %d parámetro de plantilla" | |
38497 | msgstr[1] "se redeclaró con %d parámetros de plantilla" | |
38498 | ||
38499 | -#: cp/pt.c:5200 | |
38500 | +#: cp/pt.c:5202 | |
38501 | #, gcc-internal-format | |
38502 | msgid "previous declaration %q+D used %d template parameter" | |
38503 | msgid_plural "previous declaration %q+D used %d template parameters" | |
38504 | msgstr[0] "la declaración previa de %q+#D usó %d parámetro de plantilla" | |
38505 | msgstr[1] "la declaración previa de %q+#D usó %d parámetros de plantilla" | |
38506 | ||
38507 | -#: cp/pt.c:5237 | |
38508 | +#: cp/pt.c:5239 | |
38509 | #, gcc-internal-format | |
38510 | msgid "template parameter %q+#D" | |
38511 | msgstr "parámetro de plantilla %q+#D" | |
38512 | ||
38513 | -#: cp/pt.c:5238 | |
38514 | +#: cp/pt.c:5240 | |
38515 | #, gcc-internal-format | |
38516 | msgid "redeclared here as %q#D" | |
38517 | msgstr "redeclarado aquí como %q#D" | |
38518 | @@ -32258,328 +32464,328 @@ | |
38519 | #. | |
38520 | #. A template-parameter may not be given default arguments | |
38521 | #. by two different declarations in the same scope. | |
38522 | -#: cp/pt.c:5248 | |
38523 | +#: cp/pt.c:5250 | |
38524 | #, gcc-internal-format | |
38525 | msgid "redefinition of default argument for %q#D" | |
38526 | msgstr "redefinición del argumento por defecto para %q#D" | |
38527 | ||
38528 | -#: cp/pt.c:5250 | |
38529 | +#: cp/pt.c:5252 | |
38530 | #, gcc-internal-format | |
38531 | msgid "original definition appeared here" | |
38532 | msgstr "la definición original apareció aquí" | |
38533 | ||
38534 | -#: cp/pt.c:5368 | |
38535 | +#: cp/pt.c:5370 | |
38536 | #, gcc-internal-format | |
38537 | msgid "%qE is not a valid template argument for type %qT because %qD has no linkage" | |
38538 | msgstr "%qE no es un argumento válido de plantilla para el tipo %qT porque %qD no tiene enlace" | |
38539 | ||
38540 | -#: cp/pt.c:5372 | |
38541 | +#: cp/pt.c:5374 | |
38542 | #, gcc-internal-format | |
38543 | msgid "%qE is not a valid template argument for type %qT because %qD does not have external linkage" | |
38544 | msgstr "%qE no es un argumento válido de plantilla para el tipo %qT porque %qD no tiene enlace externo" | |
38545 | ||
38546 | -#: cp/pt.c:5396 cp/pt.c:5997 | |
38547 | +#: cp/pt.c:5398 cp/pt.c:5999 | |
38548 | #, gcc-internal-format | |
38549 | msgid "%qE is not a valid template argument for type %qT" | |
38550 | msgstr "%qE no es un argumento de plantilla válido para el tipo %qT" | |
38551 | ||
38552 | -#: cp/pt.c:5398 | |
38553 | +#: cp/pt.c:5400 | |
38554 | #, gcc-internal-format | |
38555 | msgid "it must be a pointer-to-member of the form %<&X::Y%>" | |
38556 | msgstr "debe ser un puntero-a-miembro de la forma %<&X::Y%>" | |
38557 | ||
38558 | -#: cp/pt.c:5449 | |
38559 | +#: cp/pt.c:5451 | |
38560 | #, gcc-internal-format | |
38561 | msgid " couldn't deduce template parameter %qD" | |
38562 | msgstr " no se puede deducir el parámetro de plantilla %qD" | |
38563 | ||
38564 | -#: cp/pt.c:5464 | |
38565 | +#: cp/pt.c:5466 | |
38566 | #, gcc-internal-format | |
38567 | msgid " types %qT and %qT have incompatible cv-qualifiers" | |
38568 | msgstr " los tipos %qT y %qT tiene calificadores-cv incompatibles" | |
38569 | ||
38570 | -#: cp/pt.c:5473 | |
38571 | +#: cp/pt.c:5475 | |
38572 | #, gcc-internal-format | |
38573 | msgid " mismatched types %qT and %qT" | |
38574 | msgstr " no coinciden los tipos %qT y %qT" | |
38575 | ||
38576 | -#: cp/pt.c:5482 | |
38577 | +#: cp/pt.c:5484 | |
38578 | #, gcc-internal-format | |
38579 | msgid " template parameter %qD is not a parameter pack, but argument %qD is" | |
38580 | msgstr " el parámetro de plantilla %qD no es un paquete de parámetro, pero el argumento %qD sí" | |
38581 | ||
38582 | -#: cp/pt.c:5493 | |
38583 | +#: cp/pt.c:5495 | |
38584 | #, gcc-internal-format | |
38585 | msgid " template argument %qE does not match pointer-to-member constant %qE" | |
38586 | msgstr " el argumento de plantilla %qE no coincide con la constante puntero-a-miembro %qE" | |
38587 | ||
38588 | -#: cp/pt.c:5503 | |
38589 | +#: cp/pt.c:5505 | |
38590 | #, gcc-internal-format | |
38591 | msgid " %qE is not equivalent to %qE" | |
38592 | msgstr " %qE no es equivalente a %qE" | |
38593 | ||
38594 | -#: cp/pt.c:5512 | |
38595 | +#: cp/pt.c:5514 | |
38596 | #, gcc-internal-format | |
38597 | msgid " inconsistent parameter pack deduction with %qT and %qT" | |
38598 | msgstr " deducción de paquete de parámetros inconsistente con %qT y %qT" | |
38599 | ||
38600 | -#: cp/pt.c:5524 | |
38601 | +#: cp/pt.c:5526 | |
38602 | #, gcc-internal-format | |
38603 | msgid " deduced conflicting types for parameter %qT (%qT and %qT)" | |
38604 | msgstr " se deducen tipos en conflicto para el parámetro %qT (%qT y %qT)" | |
38605 | ||
38606 | -#: cp/pt.c:5528 | |
38607 | +#: cp/pt.c:5530 | |
38608 | #, gcc-internal-format | |
38609 | msgid " deduced conflicting values for non-type parameter %qE (%qE and %qE)" | |
38610 | msgstr " se deducen valores en conflicto para el parámetro %qE que no es tipo (%qE y %qE)" | |
38611 | ||
38612 | -#: cp/pt.c:5539 | |
38613 | +#: cp/pt.c:5541 | |
38614 | #, gcc-internal-format | |
38615 | msgid " variable-sized array type %qT is not a valid template argument" | |
38616 | msgstr " el tipo matriz de tamaño variable %qT no es un argumento de plantilla válido" | |
38617 | ||
38618 | -#: cp/pt.c:5550 | |
38619 | +#: cp/pt.c:5552 | |
38620 | #, gcc-internal-format | |
38621 | msgid " member function type %qT is not a valid template argument" | |
38622 | msgstr " el tipo de función miembro %qT no es un argumento de plantilla válido" | |
38623 | ||
38624 | -#: cp/pt.c:5583 | |
38625 | +#: cp/pt.c:5585 | |
38626 | #, gcc-internal-format | |
38627 | msgid " cannot convert %qE (type %qT) to type %qT" | |
38628 | msgstr " no se puede convertir %qE (tipo %qT) al tipo %qT" | |
38629 | ||
38630 | -#: cp/pt.c:5596 | |
38631 | +#: cp/pt.c:5598 | |
38632 | #, gcc-internal-format | |
38633 | msgid " %qT is an ambiguous base class of %qT" | |
38634 | msgstr " %qT es una clase base ambigua de %qT" | |
38635 | ||
38636 | -#: cp/pt.c:5600 | |
38637 | +#: cp/pt.c:5602 | |
38638 | #, gcc-internal-format | |
38639 | msgid " %qT is not derived from %qT" | |
38640 | msgstr " %qT no es derivado de %qT" | |
38641 | ||
38642 | -#: cp/pt.c:5611 | |
38643 | +#: cp/pt.c:5613 | |
38644 | #, gcc-internal-format | |
38645 | msgid " template parameters of a template template argument are inconsistent with other deduced template arguments" | |
38646 | msgstr " los parámetros de plantilla de un argumento de plantilla plantilla son inconsistentes con otros argumentos de plantilla deducidos" | |
38647 | ||
38648 | -#: cp/pt.c:5621 | |
38649 | +#: cp/pt.c:5623 | |
38650 | #, gcc-internal-format | |
38651 | msgid " can't deduce a template for %qT from non-template type %qT" | |
38652 | msgstr " no se puede deducir una plantilla para %qT del tipo %qT que no es plantilla" | |
38653 | ||
38654 | -#: cp/pt.c:5631 | |
38655 | +#: cp/pt.c:5633 | |
38656 | #, gcc-internal-format | |
38657 | msgid " template argument %qE does not match %qD" | |
38658 | msgstr " el argumento de plantilla %qE no coincide con %qD" | |
38659 | ||
38660 | -#: cp/pt.c:5640 | |
38661 | +#: cp/pt.c:5642 | |
38662 | #, gcc-internal-format | |
38663 | msgid " could not resolve address from overloaded function %qE" | |
38664 | msgstr " no se puede resolver la dirección de la función sobrecargada %qE" | |
38665 | ||
38666 | -#: cp/pt.c:5679 | |
38667 | +#: cp/pt.c:5681 | |
38668 | #, gcc-internal-format | |
38669 | msgid "%qE is not a valid template argument for type %qT because string literals can never be used in this context" | |
38670 | msgstr "%qE no es un argumento válido de plantilla para el tipo %qT porque las literales de cadena nunca se pueden usar en este contexto" | |
38671 | ||
38672 | -#: cp/pt.c:5816 | |
38673 | +#: cp/pt.c:5818 | |
38674 | #, gcc-internal-format | |
38675 | msgid "in template argument for type %qT " | |
38676 | msgstr "en el argumento de plantilla para el tipo %qT " | |
38677 | ||
38678 | -#: cp/pt.c:5858 | |
38679 | +#: cp/pt.c:5860 | |
38680 | #, gcc-internal-format | |
38681 | msgid "%qD is not a valid template argument because %qD is a variable, not the address of a variable" | |
38682 | msgstr "%qD no es un argumento válido de plantilla porque %qD es una variable, no la dirección de una variable" | |
38683 | ||
38684 | -#: cp/pt.c:5876 | |
38685 | +#: cp/pt.c:5878 | |
38686 | #, gcc-internal-format | |
38687 | msgid "%qE is not a valid template argument of type %qT because %qE is not a variable" | |
38688 | msgstr "%qE no es un argumento válido de plantilla de tipo %qT porque %qE no es una variable" | |
38689 | ||
38690 | -#: cp/pt.c:5883 | |
38691 | +#: cp/pt.c:5885 | |
38692 | #, gcc-internal-format | |
38693 | msgid "%qE is not a valid template argument of type %qT because %qD does not have external linkage" | |
38694 | msgstr "%qE no es un argumento válido de plantilla de tipo %qT porque %qD no tiene enlace externo" | |
38695 | ||
38696 | -#: cp/pt.c:5890 | |
38697 | +#: cp/pt.c:5892 | |
38698 | #, gcc-internal-format | |
38699 | msgid "%qE is not a valid template argument of type %qT because %qD has no linkage" | |
38700 | msgstr "%qE no es un argumento válido de plantilla de tipo %qT porque %qD no tiene enlace" | |
38701 | ||
38702 | -#: cp/pt.c:5920 | |
38703 | +#: cp/pt.c:5922 | |
38704 | #, gcc-internal-format | |
38705 | msgid "%qE is not a valid template argument for type %qT because of conflicts in cv-qualification" | |
38706 | msgstr "%qE no es un argumento de plantilla válido para el tipo %qT debido a conflictos en la calificación cv" | |
38707 | ||
38708 | -#: cp/pt.c:5927 | |
38709 | +#: cp/pt.c:5929 | |
38710 | #, gcc-internal-format | |
38711 | msgid "%qE is not a valid template argument for type %qT because it is not an lvalue" | |
38712 | msgstr "%qE no es un argumento válido de plantilla para el tipo %qT porque no es un l-valor" | |
38713 | ||
38714 | -#: cp/pt.c:5944 | |
38715 | +#: cp/pt.c:5946 | |
38716 | #, gcc-internal-format | |
38717 | msgid "%q#D is not a valid template argument for type %qT because a reference variable does not have a constant address" | |
38718 | msgstr "%q#D no es un argumento válido de plantilla para el tipo %qT porque una referencia variable no tiene una dirección constante" | |
38719 | ||
38720 | -#: cp/pt.c:5953 | |
38721 | +#: cp/pt.c:5955 | |
38722 | #, gcc-internal-format | |
38723 | msgid "%qE is not a valid template argument for type %qT because it is not an object with external linkage" | |
38724 | msgstr "%qE no es un argumento válido de plantilla para el tipo %qT porque no es un objeto con enlace externo" | |
38725 | ||
38726 | -#: cp/pt.c:5961 | |
38727 | +#: cp/pt.c:5963 | |
38728 | #, gcc-internal-format | |
38729 | msgid "%qE is not a valid template argument for type %qT because object %qD has not external linkage" | |
38730 | msgstr "%qE no es un argumento válido de plantilla para el tipo %qT porque el objeto %qD no tiene enlace externo" | |
38731 | ||
38732 | -#: cp/pt.c:5998 | |
38733 | +#: cp/pt.c:6000 | |
38734 | #, gcc-internal-format | |
38735 | msgid "it must be the address of a function with external linkage" | |
38736 | msgstr "debe ser la dirección de una función con enlace externo" | |
38737 | ||
38738 | -#: cp/pt.c:6012 | |
38739 | +#: cp/pt.c:6014 | |
38740 | #, gcc-internal-format | |
38741 | msgid "%qE is not a valid template argument for type %qT because it is a pointer" | |
38742 | msgstr "%qE no es un argumento de plantilla válido para el tipo %qT porque es un puntero" | |
38743 | ||
38744 | -#: cp/pt.c:6014 | |
38745 | +#: cp/pt.c:6016 | |
38746 | #, gcc-internal-format | |
38747 | msgid "try using %qE instead" | |
38748 | msgstr "intente utilizar %qE en su lugar" | |
38749 | ||
38750 | -#: cp/pt.c:6052 cp/pt.c:6081 | |
38751 | +#: cp/pt.c:6054 cp/pt.c:6083 | |
38752 | #, gcc-internal-format | |
38753 | msgid "%qE is not a valid template argument for type %qT because it is of type %qT" | |
38754 | msgstr "%qE no es un argumento de plantilla válido para el tipo %qT porque es de tipo %qT" | |
38755 | ||
38756 | -#: cp/pt.c:6058 | |
38757 | +#: cp/pt.c:6060 | |
38758 | #, gcc-internal-format | |
38759 | msgid "standard conversions are not allowed in this context" | |
38760 | msgstr "no se permiten las conversiones estándar en este contexto" | |
38761 | ||
38762 | -#: cp/pt.c:6368 | |
38763 | +#: cp/pt.c:6370 | |
38764 | #, gcc-internal-format | |
38765 | msgid "ignoring attributes on template argument %qT" | |
38766 | msgstr "se descartan los atributos en el argumento de plantilla %qT" | |
38767 | ||
38768 | -#: cp/pt.c:6426 | |
38769 | +#: cp/pt.c:6428 | |
38770 | #, gcc-internal-format | |
38771 | msgid "injected-class-name %qD used as template template argument" | |
38772 | msgstr "se usó el nombre-de-clase-inyectada %qD como un argumento de plantilla plantilla" | |
38773 | ||
38774 | -#: cp/pt.c:6454 | |
38775 | +#: cp/pt.c:6456 | |
38776 | #, gcc-internal-format | |
38777 | msgid "invalid use of destructor %qE as a type" | |
38778 | msgstr "uso inválido del destructor %qE como un tipo" | |
38779 | ||
38780 | -#: cp/pt.c:6459 | |
38781 | +#: cp/pt.c:6461 | |
38782 | #, gcc-internal-format | |
38783 | msgid "to refer to a type member of a template parameter, use %<typename %E%>" | |
38784 | msgstr "para hacer referencia a un tipo miembro de un parámetro de plantilla, use %<typename %E%>" | |
38785 | ||
38786 | -#: cp/pt.c:6475 cp/pt.c:6494 cp/pt.c:6540 | |
38787 | +#: cp/pt.c:6477 cp/pt.c:6496 cp/pt.c:6542 | |
38788 | #, gcc-internal-format | |
38789 | msgid "type/value mismatch at argument %d in template parameter list for %qD" | |
38790 | msgstr "no coincide el tipo/valor en el argumento %d en la lista de parámetros de plantilla para %qD" | |
38791 | ||
38792 | -#: cp/pt.c:6479 | |
38793 | +#: cp/pt.c:6481 | |
38794 | #, gcc-internal-format | |
38795 | msgid " expected a constant of type %qT, got %qT" | |
38796 | msgstr " se esperaba una constante de tipo %qT, se obtuvo %qT" | |
38797 | ||
38798 | -#: cp/pt.c:6483 | |
38799 | +#: cp/pt.c:6485 | |
38800 | #, gcc-internal-format | |
38801 | msgid " expected a class template, got %qE" | |
38802 | msgstr " se esperaba una plantilla de clase, se obtuvo %qE" | |
38803 | ||
38804 | -#: cp/pt.c:6485 | |
38805 | +#: cp/pt.c:6487 | |
38806 | #, gcc-internal-format | |
38807 | msgid " expected a type, got %qE" | |
38808 | msgstr " se esperaba un tipo, se obtuvo %qE" | |
38809 | ||
38810 | -#: cp/pt.c:6498 | |
38811 | +#: cp/pt.c:6500 | |
38812 | #, gcc-internal-format | |
38813 | msgid " expected a type, got %qT" | |
38814 | msgstr " se esperaba un tipo, se obtuvo %qT" | |
38815 | ||
38816 | -#: cp/pt.c:6500 | |
38817 | +#: cp/pt.c:6502 | |
38818 | #, gcc-internal-format | |
38819 | msgid " expected a class template, got %qT" | |
38820 | msgstr " se esperaba una plantilla de clase, se obtuvo %qT" | |
38821 | ||
38822 | -#: cp/pt.c:6543 | |
38823 | +#: cp/pt.c:6545 | |
38824 | #, gcc-internal-format | |
38825 | msgid " expected a template of type %qD, got %qT" | |
38826 | msgstr " se esperaba una plantilla de tipo %qD, se obtuvo %qT" | |
38827 | ||
38828 | #. Not sure if this is reachable, but it doesn't hurt | |
38829 | #. to be robust. | |
38830 | -#: cp/pt.c:6576 | |
38831 | +#: cp/pt.c:6578 | |
38832 | #, gcc-internal-format | |
38833 | msgid "type mismatch in nontype parameter pack" | |
38834 | msgstr "los tipos no coinciden en el parámetro pack que no es de tipo" | |
38835 | ||
38836 | -#: cp/pt.c:6598 | |
38837 | +#: cp/pt.c:6600 | |
38838 | #, gcc-internal-format | |
38839 | msgid "could not convert template argument %qE to %qT" | |
38840 | msgstr "no se puede convertir el argumento de plantilla %qE a %qT" | |
38841 | ||
38842 | -#: cp/pt.c:6664 cp/pt.c:6813 | |
38843 | +#: cp/pt.c:6666 cp/pt.c:6815 | |
38844 | #, gcc-internal-format, gfc-internal-format | |
38845 | msgid "wrong number of template arguments (%d, should be %d)" | |
38846 | msgstr "número erróneo de argumentos de plantilla (%d, debe ser %d)" | |
38847 | ||
38848 | -#: cp/pt.c:6809 | |
38849 | +#: cp/pt.c:6811 | |
38850 | #, gcc-internal-format, gfc-internal-format | |
38851 | msgid "wrong number of template arguments (%d, should be %d or more)" | |
38852 | msgstr "número erróneo de argumentos de plantilla (%d, debe ser %d o más)" | |
38853 | ||
38854 | -#: cp/pt.c:6817 | |
38855 | +#: cp/pt.c:6819 | |
38856 | #, gcc-internal-format | |
38857 | msgid "provided for %q+D" | |
38858 | msgstr "provisto por %q+D" | |
38859 | ||
38860 | -#: cp/pt.c:6898 | |
38861 | +#: cp/pt.c:6900 | |
38862 | #, gcc-internal-format, gfc-internal-format | |
38863 | msgid "template argument %d is invalid" | |
38864 | msgstr "el argumento de plantilla %d es inválido" | |
38865 | ||
38866 | -#: cp/pt.c:7087 | |
38867 | +#: cp/pt.c:7089 | |
38868 | #, gcc-internal-format | |
38869 | msgid "%q#D is not a function template" | |
38870 | msgstr "%q#D no es una plantilla de función" | |
38871 | ||
38872 | -#: cp/pt.c:7251 | |
38873 | +#: cp/pt.c:7253 | |
38874 | #, gcc-internal-format | |
38875 | msgid "non-template type %qT used as a template" | |
38876 | msgstr "se usa el tipo %qT que no es plantilla como una plantilla" | |
38877 | ||
38878 | -#: cp/pt.c:7253 | |
38879 | +#: cp/pt.c:7255 | |
38880 | #, gcc-internal-format | |
38881 | msgid "for template declaration %q+D" | |
38882 | msgstr "para la declaración de plantilla %q+D" | |
38883 | ||
38884 | -#: cp/pt.c:8058 | |
38885 | +#: cp/pt.c:8060 | |
38886 | msgid "template instantiation depth exceeds maximum of %d (use -ftemplate-depth= to increase the maximum) substituting %qS" | |
38887 | msgstr "la profundidad de instanciación de la plantilla excede el máximo de %d (use -ftemplate-depth= para incrementar el máximo) al sustituir %qS" | |
38888 | ||
38889 | -#: cp/pt.c:8062 | |
38890 | +#: cp/pt.c:8064 | |
38891 | #, gcc-internal-format | |
38892 | msgid "template instantiation depth exceeds maximum of %d (use -ftemplate-depth= to increase the maximum) instantiating %qD" | |
38893 | msgstr "la profundidad de instanciación de la plantilla excede el máximo de %d (use -ftemplate-depth= para incrementar el máximo) al instanciar %qD" | |
38894 | ||
38895 | -#: cp/pt.c:9409 | |
38896 | +#: cp/pt.c:9411 | |
38897 | #, gcc-internal-format | |
38898 | msgid "mismatched argument pack lengths while expanding %<%T%>" | |
38899 | msgstr "no coinciden las longitudes de los paquetes de argumentos al expandir %<%T%>" | |
38900 | ||
38901 | -#: cp/pt.c:9413 | |
38902 | +#: cp/pt.c:9415 | |
38903 | #, gcc-internal-format | |
38904 | msgid "mismatched argument pack lengths while expanding %<%E%>" | |
38905 | msgstr "no coinciden las longitudes de los paquetes de argumentos al expandir %<%E%>" | |
38906 | ||
38907 | -#: cp/pt.c:10539 | |
38908 | +#: cp/pt.c:10541 | |
38909 | #, gcc-internal-format | |
38910 | msgid "instantiation of %q+D as type %qT" | |
38911 | msgstr "instanciación de %q+D como tipo %qT" | |
38912 | @@ -32597,257 +32803,257 @@ | |
38913 | #. | |
38914 | #. is an attempt to declare a variable with function | |
38915 | #. type. | |
38916 | -#: cp/pt.c:10695 | |
38917 | +#: cp/pt.c:10697 | |
38918 | #, gcc-internal-format | |
38919 | msgid "variable %qD has function type" | |
38920 | msgstr "la variable %qD tiene tipo de función" | |
38921 | ||
38922 | -#: cp/pt.c:10864 | |
38923 | +#: cp/pt.c:10866 | |
38924 | #, gcc-internal-format | |
38925 | msgid "invalid parameter type %qT" | |
38926 | msgstr "tipo de parámetro %qT inválido" | |
38927 | ||
38928 | -#: cp/pt.c:10866 | |
38929 | +#: cp/pt.c:10868 | |
38930 | #, gcc-internal-format | |
38931 | msgid "in declaration %q+D" | |
38932 | msgstr "en la declaración %q+D" | |
38933 | ||
38934 | -#: cp/pt.c:10943 | |
38935 | +#: cp/pt.c:10945 | |
38936 | #, gcc-internal-format | |
38937 | msgid "function returning an array" | |
38938 | msgstr "la función devuelve una matriz" | |
38939 | ||
38940 | -#: cp/pt.c:10945 | |
38941 | +#: cp/pt.c:10947 | |
38942 | #, gcc-internal-format | |
38943 | msgid "function returning a function" | |
38944 | msgstr "la función devuelve una función" | |
38945 | ||
38946 | -#: cp/pt.c:10975 | |
38947 | +#: cp/pt.c:10977 | |
38948 | #, gcc-internal-format | |
38949 | msgid "creating pointer to member function of non-class type %qT" | |
38950 | msgstr "se crea un puntero a función miembro del tipo %qT que no es clase" | |
38951 | ||
38952 | -#: cp/pt.c:11514 | |
38953 | +#: cp/pt.c:11518 | |
38954 | #, gcc-internal-format | |
38955 | msgid "forming reference to void" | |
38956 | msgstr "se forma la referencia a void" | |
38957 | ||
38958 | -#: cp/pt.c:11516 | |
38959 | +#: cp/pt.c:11520 | |
38960 | #, gcc-internal-format | |
38961 | msgid "forming pointer to reference type %qT" | |
38962 | msgstr "se forma un puntero para referenciar al tipo %qT" | |
38963 | ||
38964 | -#: cp/pt.c:11518 | |
38965 | +#: cp/pt.c:11522 | |
38966 | #, gcc-internal-format | |
38967 | msgid "forming reference to reference type %qT" | |
38968 | msgstr "se forma una referencia para referenciar al tipo %qT" | |
38969 | ||
38970 | -#: cp/pt.c:11567 | |
38971 | +#: cp/pt.c:11571 | |
38972 | #, gcc-internal-format | |
38973 | msgid "creating pointer to member of non-class type %qT" | |
38974 | msgstr "se crea un puntero al miembro del tipo %qT que no es clase" | |
38975 | ||
38976 | -#: cp/pt.c:11573 | |
38977 | +#: cp/pt.c:11577 | |
38978 | #, gcc-internal-format | |
38979 | msgid "creating pointer to member reference type %qT" | |
38980 | msgstr "se crea un puntero al miembro de referencia de tipo %qT" | |
38981 | ||
38982 | -#: cp/pt.c:11579 | |
38983 | +#: cp/pt.c:11583 | |
38984 | #, gcc-internal-format | |
38985 | msgid "creating pointer to member of type void" | |
38986 | msgstr "se crea un puntero al miembro de tipo void" | |
38987 | ||
38988 | -#: cp/pt.c:11641 | |
38989 | +#: cp/pt.c:11645 | |
38990 | #, gcc-internal-format | |
38991 | msgid "creating array of %qT" | |
38992 | msgstr "se crea la matriz de %qT" | |
38993 | ||
38994 | -#: cp/pt.c:11647 | |
38995 | +#: cp/pt.c:11651 | |
38996 | #, gcc-internal-format | |
38997 | msgid "creating array of %qT, which is an abstract class type" | |
38998 | msgstr "se crea la matriz de %qT, la cual es un tipo de clase abstracta" | |
38999 | ||
39000 | -#: cp/pt.c:11676 | |
39001 | +#: cp/pt.c:11680 | |
39002 | #, gcc-internal-format | |
39003 | msgid "%qT is not a class, struct, or union type" | |
39004 | msgstr "%qT no es de tipo clase, struct o union" | |
39005 | ||
39006 | -#: cp/pt.c:11713 | |
39007 | +#: cp/pt.c:11717 | |
39008 | #, gcc-internal-format | |
39009 | msgid "%qT resolves to %qT, which is not an enumeration type" | |
39010 | msgstr "%qT resuelve a %qT, el cual no es un tipo enumerado" | |
39011 | ||
39012 | -#: cp/pt.c:11721 | |
39013 | +#: cp/pt.c:11725 | |
39014 | #, gcc-internal-format | |
39015 | msgid "%qT resolves to %qT, which is is not a class type" | |
39016 | msgstr "%qT resuelve a %qT, el cual no es un tipo de clase" | |
39017 | ||
39018 | -#: cp/pt.c:11838 | |
39019 | +#: cp/pt.c:11842 | |
39020 | #, gcc-internal-format | |
39021 | msgid "use of %qs in template" | |
39022 | msgstr "uso de %qs en la plantilla" | |
39023 | ||
39024 | -#: cp/pt.c:11974 | |
39025 | +#: cp/pt.c:11978 | |
39026 | #, gcc-internal-format | |
39027 | msgid "qualifying type %qT does not match destructor name ~%qT" | |
39028 | msgstr "el tipo calificador %qT no coincide con el nombre del destructor ~%qT" | |
39029 | ||
39030 | -#: cp/pt.c:11989 | |
39031 | +#: cp/pt.c:11993 | |
39032 | #, gcc-internal-format | |
39033 | msgid "dependent-name %qE is parsed as a non-type, but instantiation yields a type" | |
39034 | msgstr "el nombre dependiente %qE se decodifica como un no tipo, pero la instanciación genera un tipo" | |
39035 | ||
39036 | -#: cp/pt.c:11991 | |
39037 | +#: cp/pt.c:11995 | |
39038 | #, gcc-internal-format | |
39039 | msgid "say %<typename %E%> if a type is meant" | |
39040 | msgstr "escriba %<typename %E%> si quiere un tipo" | |
39041 | ||
39042 | -#: cp/pt.c:12144 | |
39043 | +#: cp/pt.c:12148 | |
39044 | #, gcc-internal-format | |
39045 | msgid "using invalid field %qD" | |
39046 | msgstr "se usa el campo inválido %qD" | |
39047 | ||
39048 | -#: cp/pt.c:12499 cp/pt.c:13300 | |
39049 | +#: cp/pt.c:12503 cp/pt.c:13313 | |
39050 | #, gcc-internal-format | |
39051 | msgid "invalid use of pack expansion expression" | |
39052 | msgstr "uso inválido de la expresión de expansión de paquete" | |
39053 | ||
39054 | -#: cp/pt.c:12503 cp/pt.c:13304 | |
39055 | +#: cp/pt.c:12507 cp/pt.c:13317 | |
39056 | #, gcc-internal-format | |
39057 | msgid "use %<...%> to expand argument pack" | |
39058 | msgstr "use %<...%> para expandir el paquete de argumentos" | |
39059 | ||
39060 | -#: cp/pt.c:13880 | |
39061 | +#: cp/pt.c:13893 | |
39062 | #, gcc-internal-format | |
39063 | msgid "%qD was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation" | |
39064 | msgstr "%qD no se declaró en este ámbito, y no se encontraron declaraciones en la búsqueda dependiente de argumentos en el punto de la instanciación" | |
39065 | ||
39066 | -#: cp/pt.c:13889 | |
39067 | +#: cp/pt.c:13902 | |
39068 | #, gcc-internal-format | |
39069 | msgid "declarations in dependent base %qT are not found by unqualified lookup" | |
39070 | msgstr "no se encontraron declaraciones en la base dependiente %qT pur la búsqueda no calificada" | |
39071 | ||
39072 | -#: cp/pt.c:13894 | |
39073 | +#: cp/pt.c:13907 | |
39074 | #, gcc-internal-format | |
39075 | msgid "use %<this->%D%> instead" | |
39076 | msgstr "use %<this->%D%> en su lugar" | |
39077 | ||
39078 | -#: cp/pt.c:13897 | |
39079 | +#: cp/pt.c:13910 | |
39080 | #, gcc-internal-format | |
39081 | msgid "use %<%T::%D%> instead" | |
39082 | msgstr "use %<%T::%D%> en su lugar" | |
39083 | ||
39084 | -#: cp/pt.c:13901 | |
39085 | +#: cp/pt.c:13914 | |
39086 | #, gcc-internal-format | |
39087 | msgid "%q+D declared here, later in the translation unit" | |
39088 | msgstr "%q+D se declaró aquí, después en la unidad de translación" | |
39089 | ||
39090 | -#: cp/pt.c:14134 | |
39091 | +#: cp/pt.c:14147 | |
39092 | #, gcc-internal-format | |
39093 | msgid "%qT is not a class or namespace" | |
39094 | msgstr "%qT no es una clase o un espacio de nombres" | |
39095 | ||
39096 | -#: cp/pt.c:14137 | |
39097 | +#: cp/pt.c:14150 | |
39098 | #, gcc-internal-format | |
39099 | msgid "%qD is not a class or namespace" | |
39100 | msgstr "%qD no es una clase o un espacio de nombres" | |
39101 | ||
39102 | -#: cp/pt.c:14429 | |
39103 | +#: cp/pt.c:14442 | |
39104 | #, gcc-internal-format | |
39105 | msgid "%qT is/uses anonymous type" | |
39106 | msgstr "%qT es/usa un tipo anónimo" | |
39107 | ||
39108 | -#: cp/pt.c:14431 | |
39109 | +#: cp/pt.c:14444 | |
39110 | #, gcc-internal-format | |
39111 | msgid "template argument for %qD uses local type %qT" | |
39112 | msgstr "el argumento de plantilla para %qD usa el tipo local %qT" | |
39113 | ||
39114 | -#: cp/pt.c:14441 | |
39115 | +#: cp/pt.c:14454 | |
39116 | #, gcc-internal-format | |
39117 | msgid "%qT is a variably modified type" | |
39118 | msgstr "%qT es un tipo modificado variablemente" | |
39119 | ||
39120 | -#: cp/pt.c:14452 | |
39121 | +#: cp/pt.c:14465 | |
39122 | #, gcc-internal-format | |
39123 | msgid "integral expression %qE is not constant" | |
39124 | msgstr "la expresión integral %qE no es una constante" | |
39125 | ||
39126 | -#: cp/pt.c:14470 | |
39127 | +#: cp/pt.c:14483 | |
39128 | #, gcc-internal-format | |
39129 | msgid " trying to instantiate %qD" | |
39130 | msgstr " se trata de instanciar %qD" | |
39131 | ||
39132 | -#: cp/pt.c:17791 | |
39133 | +#: cp/pt.c:17804 | |
39134 | #, gcc-internal-format | |
39135 | msgid "ambiguous class template instantiation for %q#T" | |
39136 | msgstr "instanciación de plantilla clase ambigua para %q#T" | |
39137 | ||
39138 | -#: cp/pt.c:17795 | |
39139 | +#: cp/pt.c:17808 | |
39140 | #, gcc-internal-format | |
39141 | msgid "%s %+#T" | |
39142 | msgstr "%s %+#T" | |
39143 | ||
39144 | -#: cp/pt.c:17819 cp/pt.c:17902 | |
39145 | +#: cp/pt.c:17832 cp/pt.c:17915 | |
39146 | #, gcc-internal-format | |
39147 | msgid "explicit instantiation of non-template %q#D" | |
39148 | msgstr "instanciación explícita de %q#D que no es plantilla" | |
39149 | ||
39150 | -#: cp/pt.c:17834 | |
39151 | +#: cp/pt.c:17847 | |
39152 | #, gcc-internal-format | |
39153 | msgid "%qD is not a static data member of a class template" | |
39154 | msgstr "%qD no es un dato miembro static de una plantilla de clase" | |
39155 | ||
39156 | -#: cp/pt.c:17840 cp/pt.c:17897 | |
39157 | +#: cp/pt.c:17853 cp/pt.c:17910 | |
39158 | #, gcc-internal-format | |
39159 | msgid "no matching template for %qD found" | |
39160 | msgstr "no se encontró una plantilla coincidente para %qD" | |
39161 | ||
39162 | -#: cp/pt.c:17845 | |
39163 | +#: cp/pt.c:17858 | |
39164 | #, gcc-internal-format | |
39165 | msgid "type %qT for explicit instantiation %qD does not match declared type %qT" | |
39166 | msgstr "el tipo %qT para la instanciación explícita %qD no coincide con el tipo declarado %qT" | |
39167 | ||
39168 | -#: cp/pt.c:17853 | |
39169 | +#: cp/pt.c:17866 | |
39170 | #, gcc-internal-format | |
39171 | msgid "explicit instantiation of %q#D" | |
39172 | msgstr "instanciación explícita de %q#D" | |
39173 | ||
39174 | -#: cp/pt.c:17889 | |
39175 | +#: cp/pt.c:17902 | |
39176 | #, gcc-internal-format | |
39177 | msgid "duplicate explicit instantiation of %q#D" | |
39178 | msgstr "instanciación explícita duplicada de %q#D" | |
39179 | ||
39180 | -#: cp/pt.c:17912 cp/pt.c:18009 | |
39181 | +#: cp/pt.c:17925 cp/pt.c:18022 | |
39182 | #, gcc-internal-format | |
39183 | msgid "ISO C++ 1998 forbids the use of %<extern%> on explicit instantiations" | |
39184 | msgstr "ISO C++ 1998 prohíbe el uso de %<extern%> en instanciaciones explícitas" | |
39185 | ||
39186 | -#: cp/pt.c:17917 cp/pt.c:18026 | |
39187 | +#: cp/pt.c:17930 cp/pt.c:18039 | |
39188 | #, gcc-internal-format | |
39189 | msgid "storage class %qD applied to template instantiation" | |
39190 | msgstr "clase de almacenamiento %qD aplicada a la instanciación de una plantilla" | |
39191 | ||
39192 | -#: cp/pt.c:17985 | |
39193 | +#: cp/pt.c:17998 | |
39194 | #, gcc-internal-format | |
39195 | msgid "explicit instantiation of non-class template %qD" | |
39196 | msgstr "instanciación explícita de la plantilla %qD que no es clase" | |
39197 | ||
39198 | -#: cp/pt.c:17987 | |
39199 | +#: cp/pt.c:18000 | |
39200 | #, gcc-internal-format | |
39201 | msgid "explicit instantiation of non-template type %qT" | |
39202 | msgstr "instanciación explícita del tipo %qT que no es plantilla" | |
39203 | ||
39204 | -#: cp/pt.c:17996 | |
39205 | +#: cp/pt.c:18009 | |
39206 | #, gcc-internal-format | |
39207 | msgid "explicit instantiation of %q#T before definition of template" | |
39208 | msgstr "instanciación explícita de %q#T antes de la definición de la plantilla" | |
39209 | ||
39210 | -#: cp/pt.c:18014 | |
39211 | +#: cp/pt.c:18027 | |
39212 | #, gcc-internal-format | |
39213 | msgid "ISO C++ forbids the use of %qE on explicit instantiations" | |
39214 | msgstr "ISO C++ prohíbe el uso de %qE en las instanciaciones explícitas" | |
39215 | ||
39216 | -#: cp/pt.c:18060 | |
39217 | +#: cp/pt.c:18073 | |
39218 | #, gcc-internal-format | |
39219 | msgid "duplicate explicit instantiation of %q#T" | |
39220 | msgstr "instanciación explícita duplicada de %q#T" | |
39221 | @@ -32859,32 +33065,32 @@ | |
39222 | #. member function or static data member of a class template | |
39223 | #. shall be present in every translation unit in which it is | |
39224 | #. explicitly instantiated. | |
39225 | -#: cp/pt.c:18614 | |
39226 | +#: cp/pt.c:18627 | |
39227 | #, gcc-internal-format | |
39228 | msgid "explicit instantiation of %qD but no definition available" | |
39229 | msgstr "instanciación explícita de %qD pero no hay una definición disponible" | |
39230 | ||
39231 | -#: cp/pt.c:18790 | |
39232 | +#: cp/pt.c:18803 | |
39233 | #, gcc-internal-format | |
39234 | msgid "template instantiation depth exceeds maximum of %d instantiating %q+D, possibly from virtual table generation (use -ftemplate-depth= to increase the maximum)" | |
39235 | msgstr "la profundidad de instanciación de la plantilla excede el máximo de %d al instanciar %q+D, posiblemente de la generación de tabla virtual (use -ftemplate-depth= para incrementar el máximo)" | |
39236 | ||
39237 | -#: cp/pt.c:19161 | |
39238 | +#: cp/pt.c:19175 | |
39239 | #, gcc-internal-format | |
39240 | msgid "invalid template non-type parameter" | |
39241 | msgstr "parámetro que no es tipo plantilla inválido" | |
39242 | ||
39243 | -#: cp/pt.c:19163 | |
39244 | +#: cp/pt.c:19177 | |
39245 | #, gcc-internal-format | |
39246 | msgid "%q#T is not a valid type for a template non-type parameter" | |
39247 | msgstr "%q#T no es un tipo válido para un parámetro que no es tipo plantilla" | |
39248 | ||
39249 | -#: cp/pt.c:20249 | |
39250 | +#: cp/pt.c:20263 | |
39251 | #, gcc-internal-format | |
39252 | msgid "deducing from brace-enclosed initializer list requires #include <initializer_list>" | |
39253 | msgstr "la deducción de una lista inicializadora encerrada entre llaves requiere #include <initializer_list>" | |
39254 | ||
39255 | -#: cp/pt.c:20308 | |
39256 | +#: cp/pt.c:20322 | |
39257 | #, gcc-internal-format | |
39258 | msgid "variable %q#D with %<auto%> type used in its own initializer" | |
39259 | msgstr "se usó la variable %q#D con tipo %<auto%> en su propio inicializador" | |
39260 | @@ -32892,12 +33098,12 @@ | |
39261 | #. If type is error_mark_node a diagnostic must have been | |
39262 | #. emitted by now. Also, having a mention to '<type error>' | |
39263 | #. in the diagnostic is not really useful to the user. | |
39264 | -#: cp/pt.c:20340 | |
39265 | +#: cp/pt.c:20354 | |
39266 | #, gcc-internal-format | |
39267 | msgid "unable to deduce %qT from %qE" | |
39268 | msgstr "no se puede deducir %qT de %qE" | |
39269 | ||
39270 | -#: cp/pt.c:20351 | |
39271 | +#: cp/pt.c:20365 | |
39272 | #, gcc-internal-format | |
39273 | msgid "inconsistent deduction for %qT: %qT and then %qT" | |
39274 | msgstr "deducción inconsistente para %qT: %qT y después %qT" | |
39275 | @@ -33134,7 +33340,7 @@ | |
39276 | msgid "invalid base-class specification" | |
39277 | msgstr "especificación de clase base inválida" | |
39278 | ||
39279 | -#: cp/semantics.c:2999 cp/semantics.c:8802 | |
39280 | +#: cp/semantics.c:2999 cp/semantics.c:8817 | |
39281 | #, gcc-internal-format | |
39282 | msgid "%qD is not captured" | |
39283 | msgstr "%qD no se capturó" | |
39284 | @@ -33312,203 +33518,208 @@ | |
39285 | msgid "constexpr constructor does not have empty body" | |
39286 | msgstr "el constructor constexpr no tiene cuerpo vacío" | |
39287 | ||
39288 | -#: cp/semantics.c:6065 | |
39289 | +#: cp/semantics.c:6042 | |
39290 | #, gcc-internal-format | |
39291 | +msgid "%<constexpr%> constructor for union %qT must initialize exactly one non-static data member" | |
39292 | +msgstr "el constructor %<constexpr%> para union %qT debe inicializar exactamente un dato miembro que no es static" | |
39293 | + | |
39294 | +#: cp/semantics.c:6080 | |
39295 | +#, gcc-internal-format | |
39296 | msgid "uninitialized member %qD in %<constexpr%> constructor" | |
39297 | msgstr "miembro %qD sin inicializar en el constructor %<constexpr%>" | |
39298 | ||
39299 | -#: cp/semantics.c:6096 | |
39300 | +#: cp/semantics.c:6111 | |
39301 | #, gcc-internal-format | |
39302 | msgid "body of constexpr function %qD not a return-statement" | |
39303 | msgstr "el cuerpo de la función constexpr %qD no es una declaración de devolución" | |
39304 | ||
39305 | -#: cp/semantics.c:6151 | |
39306 | +#: cp/semantics.c:6166 | |
39307 | #, gcc-internal-format | |
39308 | msgid "%q+D is not usable as a constexpr function because:" | |
39309 | msgstr "%q+D no se puede usar como una función constexpr porque:" | |
39310 | ||
39311 | -#: cp/semantics.c:6475 | |
39312 | +#: cp/semantics.c:6490 | |
39313 | #, gcc-internal-format | |
39314 | msgid "expression %qE does not designate a constexpr function" | |
39315 | msgstr "la expresión %qE no designa una función constexpr" | |
39316 | ||
39317 | -#: cp/semantics.c:6489 cp/semantics.c:8072 | |
39318 | +#: cp/semantics.c:6504 cp/semantics.c:8087 | |
39319 | #, gcc-internal-format | |
39320 | msgid "call to non-constexpr function %qD" | |
39321 | msgstr "llamada a la función %qD que no es constexpr" | |
39322 | ||
39323 | #. The definition of fun was somehow unsuitable. | |
39324 | -#: cp/semantics.c:6517 | |
39325 | +#: cp/semantics.c:6532 | |
39326 | #, gcc-internal-format | |
39327 | msgid "%qD called in a constant expression" | |
39328 | msgstr "se llamó %qD en una expresión constante" | |
39329 | ||
39330 | -#: cp/semantics.c:6521 | |
39331 | +#: cp/semantics.c:6536 | |
39332 | #, gcc-internal-format | |
39333 | msgid "%qD used before its definition" | |
39334 | msgstr "se usó %qD antes de su definición" | |
39335 | ||
39336 | -#: cp/semantics.c:6555 | |
39337 | +#: cp/semantics.c:6570 | |
39338 | #, gcc-internal-format | |
39339 | msgid "call has circular dependency" | |
39340 | msgstr "la llamada tiene una dependencia circular" | |
39341 | ||
39342 | -#: cp/semantics.c:6563 | |
39343 | +#: cp/semantics.c:6578 | |
39344 | #, gcc-internal-format, gfc-internal-format | |
39345 | msgid "constexpr evaluation depth exceeds maximum of %d (use -fconstexpr-depth= to increase the maximum)" | |
39346 | msgstr "la profundidad de evaluación de constexpr excede el máximo de %d (use -fconstexpr-depth= para incrementar el máximo)" | |
39347 | ||
39348 | -#: cp/semantics.c:6641 | |
39349 | +#: cp/semantics.c:6656 | |
39350 | #, gcc-internal-format | |
39351 | msgid "%q+E is not a constant expression" | |
39352 | msgstr "%q+E no es una expresión constante" | |
39353 | ||
39354 | -#: cp/semantics.c:6781 | |
39355 | +#: cp/semantics.c:6796 | |
39356 | #, gcc-internal-format | |
39357 | msgid "array subscript out of bound" | |
39358 | msgstr "el subíndice de la matriz está fuera de los límites" | |
39359 | ||
39360 | -#: cp/semantics.c:6827 cp/semantics.c:6887 cp/semantics.c:7523 | |
39361 | +#: cp/semantics.c:6842 cp/semantics.c:6902 cp/semantics.c:7538 | |
39362 | #, gcc-internal-format | |
39363 | msgid "%qE is not a constant expression" | |
39364 | msgstr "%qE no es una expresión constante" | |
39365 | ||
39366 | -#: cp/semantics.c:6833 | |
39367 | +#: cp/semantics.c:6848 | |
39368 | #, gcc-internal-format | |
39369 | msgid "mutable %qD is not usable in a constant expression" | |
39370 | msgstr "%qD mutable no se puede usar en una expresión constante" | |
39371 | ||
39372 | -#: cp/semantics.c:6848 | |
39373 | +#: cp/semantics.c:6863 | |
39374 | #, gcc-internal-format | |
39375 | msgid "accessing %qD member instead of initialized %qD member in constant expression" | |
39376 | msgstr "se accede al miembro %qD en lugar del miembro inicializado %qD en la expresión constante" | |
39377 | ||
39378 | -#: cp/semantics.c:7388 | |
39379 | +#: cp/semantics.c:7403 | |
39380 | #, gcc-internal-format | |
39381 | msgid "accessing value of %qE through a %qT glvalue in a constant expression" | |
39382 | msgstr "se accede al valor de %qE a través de glvalue %qT en una expresión constante" | |
39383 | ||
39384 | -#: cp/semantics.c:7419 | |
39385 | +#: cp/semantics.c:7434 | |
39386 | #, gcc-internal-format | |
39387 | msgid "the value of %qD is not usable in a constant expression" | |
39388 | msgstr "el valor de %qD no se puede usar en una expresión constante" | |
39389 | ||
39390 | -#: cp/semantics.c:7426 | |
39391 | +#: cp/semantics.c:7441 | |
39392 | #, gcc-internal-format | |
39393 | msgid "%qD used in its own initializer" | |
39394 | msgstr "se usó %qD en su propio inicializador" | |
39395 | ||
39396 | -#: cp/semantics.c:7431 | |
39397 | +#: cp/semantics.c:7446 | |
39398 | #, gcc-internal-format | |
39399 | msgid "%q#D is not const" | |
39400 | msgstr "%q#D no es const" | |
39401 | ||
39402 | -#: cp/semantics.c:7434 | |
39403 | +#: cp/semantics.c:7449 | |
39404 | #, gcc-internal-format | |
39405 | msgid "%q#D is volatile" | |
39406 | msgstr "%q+#D es volatile" | |
39407 | ||
39408 | -#: cp/semantics.c:7438 | |
39409 | +#: cp/semantics.c:7453 | |
39410 | #, gcc-internal-format | |
39411 | msgid "%qD was not initialized with a constant expression" | |
39412 | msgstr "%qD no se inicializó con una expresion constante" | |
39413 | ||
39414 | -#: cp/semantics.c:7447 | |
39415 | +#: cp/semantics.c:7462 | |
39416 | #, gcc-internal-format | |
39417 | msgid "%qD was not declared %<constexpr%>" | |
39418 | msgstr "%qD no se declaró %<constexpr%>" | |
39419 | ||
39420 | -#: cp/semantics.c:7450 | |
39421 | +#: cp/semantics.c:7465 | |
39422 | #, gcc-internal-format | |
39423 | msgid "%qD does not have integral or enumeration type" | |
39424 | msgstr "%qD no tiene tipo integral o de enumeración" | |
39425 | ||
39426 | -#: cp/semantics.c:7511 cp/semantics.c:8204 | |
39427 | +#: cp/semantics.c:7526 cp/semantics.c:8219 | |
39428 | #, gcc-internal-format | |
39429 | msgid "use of the value of the object being constructed in a constant expression" | |
39430 | msgstr "uso del valor del objeto en construcción en una expresión constante" | |
39431 | ||
39432 | -#: cp/semantics.c:7539 cp/semantics.c:8342 | |
39433 | +#: cp/semantics.c:7554 cp/semantics.c:8357 | |
39434 | #, gcc-internal-format | |
39435 | msgid "temporary of non-literal type %qT in a constant expression" | |
39436 | msgstr "temporal del tipo %qT que no es literal en una expresión constante" | |
39437 | ||
39438 | -#: cp/semantics.c:7787 cp/semantics.c:8246 cp/semantics.c:8495 | |
39439 | +#: cp/semantics.c:7802 cp/semantics.c:8261 cp/semantics.c:8510 | |
39440 | #, gcc-internal-format | |
39441 | msgid "expression %qE is not a constant-expression" | |
39442 | msgstr "la expresión %qE no es una expresión constante" | |
39443 | ||
39444 | -#: cp/semantics.c:7792 | |
39445 | +#: cp/semantics.c:7807 | |
39446 | #, gcc-internal-format | |
39447 | msgid "unexpected expression %qE of kind %s" | |
39448 | msgstr "expresión %qE inesperada de género %s" | |
39449 | ||
39450 | -#: cp/semantics.c:7823 | |
39451 | +#: cp/semantics.c:7838 | |
39452 | #, gcc-internal-format | |
39453 | msgid "%qT cannot be the type of a complete constant expression because it has mutable sub-objects" | |
39454 | msgstr "%qT no puede ser el tipo de una expresión constante completa porque tiene sub-objetos mutables" | |
39455 | ||
39456 | -#: cp/semantics.c:7836 | |
39457 | +#: cp/semantics.c:7851 | |
39458 | #, gcc-internal-format | |
39459 | msgid "conversion from pointer type %qT to arithmetic type %qT in a constant-expression" | |
39460 | msgstr "conversión del tipo puntero %qT al tipo aritmético %qT en una expresión constante" | |
39461 | ||
39462 | -#: cp/semantics.c:8007 | |
39463 | +#: cp/semantics.c:8022 | |
39464 | #, gcc-internal-format | |
39465 | msgid "expression %qE has side-effects" | |
39466 | msgstr "la expresión %qE tiene efectos colaterales" | |
39467 | ||
39468 | -#: cp/semantics.c:8090 | |
39469 | +#: cp/semantics.c:8105 | |
39470 | #, gcc-internal-format | |
39471 | msgid "calling a member function of the object being constructed in a constant expression" | |
39472 | msgstr "se llamó a una función miembro del objeto en construcción en una expresión constante" | |
39473 | ||
39474 | -#: cp/semantics.c:8172 | |
39475 | +#: cp/semantics.c:8187 | |
39476 | #, gcc-internal-format | |
39477 | msgid "address-of an object %qE with thread local or automatic storage is not a constant expression" | |
39478 | msgstr "la dirección de un objeto %qE con hilo local o almacenamiento automático no es una expresión constante" | |
39479 | ||
39480 | -#: cp/semantics.c:8258 | |
39481 | +#: cp/semantics.c:8273 | |
39482 | #, gcc-internal-format | |
39483 | msgid "typeid-expression is not a constant expression because %qE is of polymorphic type" | |
39484 | msgstr "la expresión id de tipo no es una expresión constante porque %qE es de tipo polimórfico" | |
39485 | ||
39486 | -#: cp/semantics.c:8271 | |
39487 | +#: cp/semantics.c:8286 | |
39488 | #, gcc-internal-format | |
39489 | msgid "difference of two pointer expressions is not a constant expression" | |
39490 | msgstr "la diferencia de dos expresiones puntero no es una expresión constante" | |
39491 | ||
39492 | -#: cp/semantics.c:8290 | |
39493 | +#: cp/semantics.c:8305 | |
39494 | #, gcc-internal-format | |
39495 | msgid "pointer comparison expression is not a constant expression" | |
39496 | msgstr "la expresión de comparación de punteros no es una expresión constante" | |
39497 | ||
39498 | -#: cp/semantics.c:8391 | |
39499 | +#: cp/semantics.c:8406 | |
39500 | #, gcc-internal-format | |
39501 | msgid "division by zero is not a constant-expression" | |
39502 | msgstr "la división entre cero no es una expresión constante" | |
39503 | ||
39504 | -#: cp/semantics.c:8503 | |
39505 | +#: cp/semantics.c:8518 | |
39506 | #, gcc-internal-format | |
39507 | msgid "non-constant array initialization" | |
39508 | msgstr "inicialización de una matriz que no es constante" | |
39509 | ||
39510 | -#: cp/semantics.c:8509 | |
39511 | +#: cp/semantics.c:8524 | |
39512 | #, gcc-internal-format, gfc-internal-format | |
39513 | msgid "unexpected AST of kind %s" | |
39514 | msgstr "AST inesperado de género %s" | |
39515 | ||
39516 | -#: cp/semantics.c:8999 | |
39517 | +#: cp/semantics.c:9014 | |
39518 | #, gcc-internal-format | |
39519 | msgid "cannot capture %qE by reference" | |
39520 | msgstr "no se puede capturar %qE por referencia" | |
39521 | ||
39522 | -#: cp/semantics.c:9022 | |
39523 | +#: cp/semantics.c:9037 | |
39524 | #, gcc-internal-format | |
39525 | msgid "already captured %qD in lambda expression" | |
39526 | msgstr "ya se capturó %qD en la expresión lambda" | |
39527 | ||
39528 | -#: cp/semantics.c:9168 | |
39529 | +#: cp/semantics.c:9183 | |
39530 | #, gcc-internal-format | |
39531 | msgid "%<this%> was not captured for this lambda function" | |
39532 | msgstr "no se capturó %<this%> para esta función lambda" | |
39533 | @@ -34703,7 +34914,7 @@ | |
39534 | ||
39535 | #: fortran/array.c:216 fortran/array.c:576 fortran/check.c:2149 | |
39536 | #: fortran/check.c:3915 fortran/check.c:3953 fortran/check.c:4120 | |
39537 | -#: fortran/match.c:1767 fortran/match.c:2834 fortran/match.c:3030 | |
39538 | +#: fortran/match.c:1766 fortran/match.c:2833 fortran/match.c:3029 | |
39539 | #: fortran/simplify.c:4538 | |
39540 | #, gcc-internal-format, gfc-internal-format | |
39541 | msgid "Coarrays disabled at %C, use -fcoarray= to enable" | |
39542 | @@ -34824,7 +35035,7 @@ | |
39543 | msgid "Fortran 2003: Array constructor including type specification at %C" | |
39544 | msgstr "Fortran 2003: Los constructores de matriz incluyen especificación de tipo en %C" | |
39545 | ||
39546 | -#: fortran/array.c:1055 fortran/match.c:3466 | |
39547 | +#: fortran/array.c:1055 fortran/match.c:3465 | |
39548 | #, gcc-internal-format, gfc-internal-format | |
39549 | msgid "Type-spec at %L cannot contain a deferred type parameter" | |
39550 | msgstr "La especificación de tipo en %L no puede tener un parámetro de tipo diferido" | |
39551 | @@ -34846,7 +35057,7 @@ | |
39552 | ||
39553 | #. Problems occur when we get something like | |
39554 | #. integer :: a(lots) = (/(i, i=1, lots)/) | |
39555 | -#: fortran/array.c:1621 fortran/expr.c:1538 fortran/trans-array.c:5260 | |
39556 | +#: fortran/array.c:1621 fortran/expr.c:1538 fortran/trans-array.c:5259 | |
39557 | #, gcc-internal-format, gfc-internal-format | |
39558 | msgid "The number of elements in the array constructor at %L requires an increase of the allowed %d upper limit. See -fmax-array-constructor option" | |
39559 | msgstr "El número de elementos en el constructor de matriz en %L requiere un incremento del límite superior %d permitido. Vea la opción -fmax-array-constructor" | |
39560 | @@ -35016,7 +35227,7 @@ | |
39561 | ||
39562 | #: fortran/check.c:910 fortran/check.c:946 fortran/check.c:2853 | |
39563 | #, gcc-internal-format, gfc-internal-format | |
39564 | -msgid "'%s' argument of '%s' intrinsic at %L shall not be conindexed" | |
39565 | +msgid "'%s' argument of '%s' intrinsic at %L shall not be coindexed" | |
39566 | msgstr "El argumento '%s' del intrínseco '%s' en %L no debe ser coindizado" | |
39567 | ||
39568 | #: fortran/check.c:928 | |
39569 | @@ -35397,19 +35608,19 @@ | |
39570 | msgid "'%s' argument of '%s' intrinsic at %L must be INTEGER or LOGICAL" | |
39571 | msgstr "El argumento '%s' del intrínseco '%s' en %L debe ser INTEGER o LOGICAL" | |
39572 | ||
39573 | -#: fortran/class.c:345 | |
39574 | +#: fortran/class.c:470 | |
39575 | #, gcc-internal-format, gfc-internal-format | |
39576 | msgid "Assumed size polymorphic objects or components, such as that at %C, have not yet been implemented" | |
39577 | msgstr "Objetos o componentes polimórficos de tamaño asumido, tales como el que está en %C, aún no están implementados" | |
39578 | ||
39579 | #. Since the extension field is 8 bit wide, we can only have | |
39580 | #. up to 255 extension levels. | |
39581 | -#: fortran/class.c:431 fortran/decl.c:7562 | |
39582 | +#: fortran/class.c:556 fortran/decl.c:7561 | |
39583 | #, gcc-internal-format, gfc-internal-format | |
39584 | msgid "Maximum extension level reached with type '%s' at %L" | |
39585 | msgstr "Se alcanzó el nivel de extensión máximo con el tipo '%s' en %L" | |
39586 | ||
39587 | -#: fortran/class.c:822 fortran/class.c:896 | |
39588 | +#: fortran/class.c:948 fortran/class.c:1022 | |
39589 | #, gcc-internal-format, gfc-internal-format | |
39590 | msgid "'%s' of '%s' is PRIVATE at %L" | |
39591 | msgstr "'%s' de '%s' es PRIVATE en %L" | |
39592 | @@ -35459,227 +35670,227 @@ | |
39593 | msgid "Extension: re-initialization of '%s' at %L" | |
39594 | msgstr "Extensión: reinicialización de '%s' en %L" | |
39595 | ||
39596 | -#: fortran/decl.c:260 | |
39597 | +#: fortran/decl.c:264 | |
39598 | #, gcc-internal-format, gfc-internal-format | |
39599 | msgid "Host associated variable '%s' may not be in the DATA statement at %C" | |
39600 | msgstr "La variable asociada al anfitrión '%s' no debe estar en la declaración DATA en %C" | |
39601 | ||
39602 | -#: fortran/decl.c:267 | |
39603 | +#: fortran/decl.c:271 | |
39604 | #, gcc-internal-format, gfc-internal-format | |
39605 | msgid "Extension: initialization of common block variable '%s' in DATA statement at %C" | |
39606 | msgstr "Extensión: inicialización de la variable de bloque común '%s' en la declaración DATA en %C" | |
39607 | ||
39608 | -#: fortran/decl.c:376 | |
39609 | +#: fortran/decl.c:380 | |
39610 | #, gcc-internal-format, gfc-internal-format | |
39611 | msgid "Symbol '%s' must be a PARAMETER in DATA statement at %C" | |
39612 | msgstr "El símbolo '%s' debe ser un PARAMETER en la declaración DATA en %C" | |
39613 | ||
39614 | -#: fortran/decl.c:401 | |
39615 | +#: fortran/decl.c:405 | |
39616 | #, gcc-internal-format, gfc-internal-format | |
39617 | msgid "Invalid initializer %s in Data statement at %C" | |
39618 | msgstr "Inicializador %s inválido en la declaración Data en %C" | |
39619 | ||
39620 | -#: fortran/decl.c:504 | |
39621 | +#: fortran/decl.c:508 | |
39622 | #, gcc-internal-format, gfc-internal-format | |
39623 | msgid "Initialization at %C is not allowed in a PURE procedure" | |
39624 | msgstr "No se permite la inicialización de %C en un procedimiento PURE" | |
39625 | ||
39626 | -#: fortran/decl.c:566 | |
39627 | +#: fortran/decl.c:570 | |
39628 | #, gcc-internal-format, gfc-internal-format | |
39629 | msgid "DATA statement at %C is not allowed in a PURE procedure" | |
39630 | msgstr "No se permite la declaración DATA en %C en un procedimiento PURE" | |
39631 | ||
39632 | -#: fortran/decl.c:654 | |
39633 | +#: fortran/decl.c:658 | |
39634 | #, gcc-internal-format, gfc-internal-format | |
39635 | msgid "Bad INTENT specification at %C" | |
39636 | msgstr "Especificación INTENT errónea en %C" | |
39637 | ||
39638 | -#: fortran/decl.c:675 | |
39639 | +#: fortran/decl.c:679 | |
39640 | #, gcc-internal-format, gfc-internal-format | |
39641 | msgid "Fortran 2003: deferred type parameter at %C" | |
39642 | msgstr "Fortran 2003: parámetro de tipo diferido en %C" | |
39643 | ||
39644 | -#: fortran/decl.c:712 | |
39645 | +#: fortran/decl.c:716 | |
39646 | #, gcc-internal-format, gfc-internal-format | |
39647 | msgid "Conflict in attributes of function argument at %C" | |
39648 | msgstr "Conflicto en los atributos de los argumentos de la función en %C" | |
39649 | ||
39650 | -#: fortran/decl.c:737 | |
39651 | +#: fortran/decl.c:741 | |
39652 | #, gcc-internal-format, gfc-internal-format | |
39653 | msgid "Obsolescent feature: Old-style character length at %C" | |
39654 | msgstr "Característica obsoleta: Longitud de carácter de estilo antiguo en %C" | |
39655 | ||
39656 | -#: fortran/decl.c:769 | |
39657 | +#: fortran/decl.c:773 | |
39658 | #, gcc-internal-format, gfc-internal-format | |
39659 | msgid "Syntax error in character length specification at %C" | |
39660 | msgstr "Error sintáctico en la especificación de longitud de carácter en %C" | |
39661 | ||
39662 | -#: fortran/decl.c:892 | |
39663 | +#: fortran/decl.c:896 | |
39664 | #, gcc-internal-format, gfc-internal-format | |
39665 | msgid "Procedure '%s' at %C is already defined at %L" | |
39666 | msgstr "El procedimiento '%s' en %C ya se había definido en %L" | |
39667 | ||
39668 | -#: fortran/decl.c:900 | |
39669 | +#: fortran/decl.c:904 | |
39670 | #, gcc-internal-format, gfc-internal-format | |
39671 | msgid "Name '%s' at %C is already defined as a generic interface at %L" | |
39672 | msgstr "El nombre '%s' en %C ya se definió como una interfaz genérica en %L" | |
39673 | ||
39674 | -#: fortran/decl.c:913 | |
39675 | +#: fortran/decl.c:917 | |
39676 | #, gcc-internal-format, gfc-internal-format | |
39677 | msgid "Procedure '%s' at %C has an explicit interface and must not have attributes declared at %L" | |
39678 | msgstr "El procedimiento '%s' en %C tiene una interfaz explícita y no debe tener atributos declarados en %L" | |
39679 | ||
39680 | -#: fortran/decl.c:985 | |
39681 | +#: fortran/decl.c:989 | |
39682 | #, gcc-internal-format, gfc-internal-format | |
39683 | msgid "Procedure '%s' at %L must have the BIND(C) attribute to be C interoperable" | |
39684 | msgstr "El procedimiento '%s' en %L debe tener el atributo BIND(C) para que sea interoperable con C" | |
39685 | ||
39686 | -#: fortran/decl.c:1013 | |
39687 | +#: fortran/decl.c:1017 | |
39688 | #, gcc-internal-format, gfc-internal-format | |
39689 | msgid "Variable '%s' at %L is a dummy argument to the BIND(C) procedure '%s' but is not C interoperable because derived type '%s' is not C interoperable" | |
39690 | msgstr "La variable '%s' en %L es un argumento dummy del procedimiento BIND(C) '%s' pero no es interoperable con C porque el tipo derivado '%s' no es interoperable con C" | |
39691 | ||
39692 | -#: fortran/decl.c:1020 | |
39693 | +#: fortran/decl.c:1024 | |
39694 | #, gcc-internal-format, gfc-internal-format | |
39695 | msgid "Variable '%s' at %L is a dummy argument to the BIND(C) procedure '%s' but is not C interoperable because it is polymorphic" | |
39696 | msgstr "La variable '%s' en %L es un argumento dummy del procedimiento BIND(C) '%s' pero puede no ser interoperable con C porque es polimórfica" | |
39697 | ||
39698 | -#: fortran/decl.c:1026 | |
39699 | +#: fortran/decl.c:1030 | |
39700 | #, gcc-internal-format, gfc-internal-format | |
39701 | msgid "Variable '%s' at %L is a parameter to the BIND(C) procedure '%s' but may not be C interoperable" | |
39702 | msgstr "La variable '%s' en %L es un parámetro del procedimiento BIND(C) '%s' pero puede no ser interoperable con C" | |
39703 | ||
39704 | -#: fortran/decl.c:1041 | |
39705 | +#: fortran/decl.c:1045 | |
39706 | #, gcc-internal-format, gfc-internal-format | |
39707 | msgid "Character argument '%s' at %L must be length 1 because procedure '%s' is BIND(C)" | |
39708 | msgstr "El argumento de carácter '%s' en %L debe ser de longitud 1 porque el procedimiento '%s' es BIND(C)" | |
39709 | ||
39710 | -#: fortran/decl.c:1055 | |
39711 | +#: fortran/decl.c:1059 | |
39712 | #, gcc-internal-format, gfc-internal-format | |
39713 | msgid "Variable '%s' at %L cannot have the ALLOCATABLE attribute because procedure '%s' is BIND(C)" | |
39714 | msgstr "La variable '%s' en %L no puede tener el atributo ALLOCATABLE porque el procedimiento '%s' es BIND(C)" | |
39715 | ||
39716 | -#: fortran/decl.c:1064 | |
39717 | +#: fortran/decl.c:1068 | |
39718 | #, gcc-internal-format, gfc-internal-format | |
39719 | msgid "Variable '%s' at %L cannot have the POINTER attribute because procedure '%s' is BIND(C)" | |
39720 | msgstr "La variable '%s' en %L no puede tener el atributo POINTER porque el procedimiento '%s' es BIND(C)" | |
39721 | ||
39722 | -#: fortran/decl.c:1073 | |
39723 | +#: fortran/decl.c:1077 | |
39724 | #, gcc-internal-format, gfc-internal-format | |
39725 | msgid "Variable '%s' at %L cannot have both the OPTIONAL and the VALUE attribute because procedure '%s' is BIND(C)" | |
39726 | msgstr "La variable '%s' en %L no puede tener los atributos OPTIONAL y VALUE al mismo tiempo porque el procedimiento '%s' es BIND(C)" | |
39727 | ||
39728 | -#: fortran/decl.c:1080 | |
39729 | +#: fortran/decl.c:1084 | |
39730 | #, gcc-internal-format, gfc-internal-format | |
39731 | msgid "TS29113: Variable '%s' at %L with OPTIONAL attribute in procedure '%s' which is BIND(C)" | |
39732 | msgstr "TS29113: La variable '%s' en %L con atributo OPTIONAL en el procedimiento '%s' que es BIND(C)" | |
39733 | ||
39734 | -#: fortran/decl.c:1094 | |
39735 | +#: fortran/decl.c:1098 | |
39736 | #, gcc-internal-format, gfc-internal-format | |
39737 | msgid "Assumed-shape array '%s' at %L cannot be an argument to the procedure '%s' at %L because the procedure is BIND(C)" | |
39738 | msgstr "La matriz de forma asumida '%s' en %L no puede ser un argumento para el procedimiento '%s' en %L porque el procedimiento es BIND(C)" | |
39739 | ||
39740 | -#: fortran/decl.c:1104 | |
39741 | +#: fortran/decl.c:1108 | |
39742 | #, gcc-internal-format, gfc-internal-format | |
39743 | msgid "Deferred-shape array '%s' at %L cannot be an argument to the procedure '%s' at %L because the procedure is BIND(C)" | |
39744 | msgstr "La matriz de forma diferida '%s' en %L no puede ser un argumento para el procedimiento '%s' en %L porque el procedimiento es BIND(C)" | |
39745 | ||
39746 | -#: fortran/decl.c:1185 | |
39747 | +#: fortran/decl.c:1189 | |
39748 | #, gcc-internal-format, gfc-internal-format | |
39749 | msgid "Variable '%s' in common block '%s' at %C must be declared with a C interoperable kind since common block '%s' is BIND(C)" | |
39750 | msgstr "La variable '%s' en el bloque común '%s' en %C se debe declarar con un género interoperable con C porque el bloque común '%s' es BIND(C)" | |
39751 | ||
39752 | -#: fortran/decl.c:1227 | |
39753 | +#: fortran/decl.c:1231 | |
39754 | #, gcc-internal-format, gfc-internal-format | |
39755 | msgid "CHARACTER expression at %L is being truncated (%d/%d)" | |
39756 | msgstr "Se trunca la expresión CHARACTER en %L (%d/%d)" | |
39757 | ||
39758 | -#: fortran/decl.c:1234 | |
39759 | +#: fortran/decl.c:1238 | |
39760 | #, gcc-internal-format, gfc-internal-format | |
39761 | msgid "The CHARACTER elements of the array constructor at %L must have the same length (%d/%d)" | |
39762 | msgstr "Los elementos CHARACTER del constructor de matriz en %L deben tener la misma longitud (%d/%d)" | |
39763 | ||
39764 | -#: fortran/decl.c:1324 | |
39765 | +#: fortran/decl.c:1328 | |
39766 | #, gcc-internal-format, gfc-internal-format | |
39767 | msgid "Initializer not allowed for PARAMETER '%s' at %C" | |
39768 | msgstr "No se permite un inicializador para el PARAMETER '%s' en %C" | |
39769 | ||
39770 | -#: fortran/decl.c:1334 | |
39771 | +#: fortran/decl.c:1338 | |
39772 | #, gcc-internal-format, gfc-internal-format | |
39773 | msgid "PARAMETER at %L is missing an initializer" | |
39774 | msgstr "Falta un inicializador para el PARAMETER en %L" | |
39775 | ||
39776 | -#: fortran/decl.c:1344 | |
39777 | +#: fortran/decl.c:1348 | |
39778 | #, gcc-internal-format, gfc-internal-format | |
39779 | msgid "Variable '%s' at %C with an initializer already appears in a DATA statement" | |
39780 | msgstr "La variable '%s' en %C con un inicializador ya aparecía en una declaración DATA" | |
39781 | ||
39782 | -#: fortran/decl.c:1425 | |
39783 | +#: fortran/decl.c:1429 | |
39784 | #, gcc-internal-format, gfc-internal-format | |
39785 | msgid "Can't initialize implied-shape array at %L with scalar" | |
39786 | msgstr "No se puede inicializar la matriz de tamaño implícito en %L con un escalar" | |
39787 | ||
39788 | -#: fortran/decl.c:1443 | |
39789 | +#: fortran/decl.c:1447 | |
39790 | #, gcc-internal-format, gfc-internal-format | |
39791 | msgid "Non-constant lower bound in implied-shape declaration at %L" | |
39792 | msgstr "El límite inferior no es constante en la declaración de forma implícita en %L" | |
39793 | ||
39794 | -#: fortran/decl.c:1538 | |
39795 | +#: fortran/decl.c:1542 | |
39796 | #, gcc-internal-format, gfc-internal-format | |
39797 | msgid "Component at %C must have the POINTER attribute" | |
39798 | msgstr "El componente en %C debe tener el atributo POINTER" | |
39799 | ||
39800 | -#: fortran/decl.c:1546 | |
39801 | +#: fortran/decl.c:1550 | |
39802 | #, gcc-internal-format, gfc-internal-format | |
39803 | msgid "Array component of structure at %C must have explicit or deferred shape" | |
39804 | msgstr "El componente de matriz de la estructura en %C debe tener una forma explícita o diferida" | |
39805 | ||
39806 | -#: fortran/decl.c:1627 | |
39807 | +#: fortran/decl.c:1631 | |
39808 | #, gcc-internal-format, gfc-internal-format | |
39809 | msgid "Pointer array component of structure at %C must have a deferred shape" | |
39810 | msgstr "El componente de matriz de puntero de la estructura en %C debe tener una forma diferida" | |
39811 | ||
39812 | -#: fortran/decl.c:1636 | |
39813 | +#: fortran/decl.c:1640 | |
39814 | #, gcc-internal-format, gfc-internal-format | |
39815 | msgid "Allocatable component of structure at %C must have a deferred shape" | |
39816 | msgstr "El componente allocatable de la estructura en %C debe tener una forma diferida" | |
39817 | ||
39818 | -#: fortran/decl.c:1645 | |
39819 | +#: fortran/decl.c:1649 | |
39820 | #, gcc-internal-format, gfc-internal-format | |
39821 | msgid "Array component of structure at %C must have an explicit shape" | |
39822 | msgstr "El componente de matriz de la estructura en %C debe tener una forma explícita" | |
39823 | ||
39824 | -#: fortran/decl.c:1679 | |
39825 | +#: fortran/decl.c:1683 | |
39826 | #, gcc-internal-format, gfc-internal-format | |
39827 | msgid "NULL() initialization at %C is ambiguous" | |
39828 | msgstr "La inicialización NULL() en %C es ambigua" | |
39829 | ||
39830 | -#: fortran/decl.c:1706 | |
39831 | +#: fortran/decl.c:1710 | |
39832 | #, gcc-internal-format, gfc-internal-format | |
39833 | msgid "Initialization of pointer at %C is not allowed in a PURE procedure" | |
39834 | msgstr "No se permite la inicialización de un puntero en %C en un procedimiento PURE" | |
39835 | ||
39836 | -#: fortran/decl.c:1726 | |
39837 | +#: fortran/decl.c:1730 | |
39838 | #, gcc-internal-format, gfc-internal-format | |
39839 | msgid "Error in pointer initialization at %C" | |
39840 | msgstr "Error en la inicialización de puntero en %C" | |
39841 | ||
39842 | -#: fortran/decl.c:1733 | |
39843 | +#: fortran/decl.c:1737 | |
39844 | #, gcc-internal-format, gfc-internal-format | |
39845 | msgid "Fortran 2008: non-NULL pointer initialization at %C" | |
39846 | msgstr "Fortran 2008: inicialización de puntero que no es NULL en %C" | |
39847 | ||
39848 | -#: fortran/decl.c:1756 | |
39849 | +#: fortran/decl.c:1760 | |
39850 | #, gcc-internal-format, gfc-internal-format | |
39851 | msgid "Function name '%s' not allowed at %C" | |
39852 | msgstr "No se permite el nombre de función '%s' en %C" | |
39853 | ||
39854 | -#: fortran/decl.c:1819 | |
39855 | +#: fortran/decl.c:1823 | |
39856 | #, gcc-internal-format, gfc-internal-format | |
39857 | msgid "Non-PARAMETER symbol '%s' at %L can't be implied-shape" | |
39858 | msgstr "El símbolo '%s' que no es PARAMETER en %L no puede ser de forma implícita" | |
39859 | ||
39860 | -#: fortran/decl.c:1830 | |
39861 | +#: fortran/decl.c:1834 | |
39862 | #, gcc-internal-format, gfc-internal-format | |
39863 | msgid "Fortran 2008: Implied-shape array at %L" | |
39864 | msgstr "Fortran 2008: Matriz de forma implícita en %L" | |
39865 | @@ -35689,1076 +35900,1076 @@ | |
39866 | # como `apuntado'. cfuga | |
39867 | # Referencia: http://gcc.gnu.org/onlinedocs/gfortran/Cray-pointers.html | |
39868 | # | |
39869 | -#: fortran/decl.c:1894 fortran/decl.c:6419 | |
39870 | +#: fortran/decl.c:1898 fortran/decl.c:6418 | |
39871 | #, gcc-internal-format, gfc-internal-format | |
39872 | msgid "Duplicate array spec for Cray pointee at %C" | |
39873 | msgstr "Especificación de matriz duplicada para el apuntado Cray en %C" | |
39874 | ||
39875 | -#: fortran/decl.c:1965 | |
39876 | +#: fortran/decl.c:1969 | |
39877 | #, gcc-internal-format, gfc-internal-format | |
39878 | msgid "The type of '%s' at %C has not been declared within the interface" | |
39879 | msgstr "No se declaró el tipo de '%s' en %C en la interfaz" | |
39880 | ||
39881 | -#: fortran/decl.c:1989 | |
39882 | +#: fortran/decl.c:1993 | |
39883 | #, gcc-internal-format, gfc-internal-format | |
39884 | msgid "Extension: Old-style initialization at %C" | |
39885 | msgstr "Extensión: Inicialización de estilo antiguo en %C" | |
39886 | ||
39887 | -#: fortran/decl.c:2004 fortran/decl.c:4911 | |
39888 | +#: fortran/decl.c:2008 fortran/decl.c:4916 | |
39889 | #, gcc-internal-format, gfc-internal-format | |
39890 | msgid "Initialization at %C isn't for a pointer variable" | |
39891 | msgstr "La inicialización en %C no es para una variable puntero" | |
39892 | ||
39893 | -#: fortran/decl.c:2017 | |
39894 | +#: fortran/decl.c:2021 | |
39895 | #, gcc-internal-format, gfc-internal-format | |
39896 | msgid "Pointer initialization at %C requires '=>', not '='" | |
39897 | msgstr "La inicialización de puntero en %C requiere '=>', no '='" | |
39898 | ||
39899 | -#: fortran/decl.c:2026 fortran/decl.c:7714 | |
39900 | +#: fortran/decl.c:2030 fortran/decl.c:7713 | |
39901 | #, gcc-internal-format, gfc-internal-format | |
39902 | msgid "Expected an initialization expression at %C" | |
39903 | msgstr "Se esperaba una expresión de inicialización en %C" | |
39904 | ||
39905 | -#: fortran/decl.c:2033 | |
39906 | +#: fortran/decl.c:2037 | |
39907 | #, gcc-internal-format, gfc-internal-format | |
39908 | msgid "Initialization of variable at %C is not allowed in a PURE procedure" | |
39909 | msgstr "No se permite la inicialización de una variable en %C en un procedimiento PURE" | |
39910 | ||
39911 | -#: fortran/decl.c:2046 | |
39912 | +#: fortran/decl.c:2050 | |
39913 | #, gcc-internal-format, gfc-internal-format | |
39914 | msgid "Initialization of allocatable component at %C is not allowed" | |
39915 | msgstr "No se permite la inicialización del componente allocatable en %C" | |
39916 | ||
39917 | -#: fortran/decl.c:2100 fortran/decl.c:2136 | |
39918 | +#: fortran/decl.c:2104 fortran/decl.c:2140 | |
39919 | #, gcc-internal-format, gfc-internal-format | |
39920 | msgid "Old-style type declaration %s*%d not supported at %C" | |
39921 | msgstr "No se admite la declaración de tipo de estilo antiguo %s*%d en %C" | |
39922 | ||
39923 | -#: fortran/decl.c:2141 | |
39924 | +#: fortran/decl.c:2145 | |
39925 | #, gcc-internal-format, gfc-internal-format | |
39926 | msgid "Nonstandard type declaration %s*%d at %C" | |
39927 | msgstr "Declaración de tipo %s*%d no estándar en %C" | |
39928 | ||
39929 | -#: fortran/decl.c:2192 fortran/decl.c:2268 | |
39930 | +#: fortran/decl.c:2196 fortran/decl.c:2272 | |
39931 | #, gcc-internal-format, gfc-internal-format | |
39932 | msgid "Missing right parenthesis at %C" | |
39933 | msgstr "Falta el paréntesis derecho en %C" | |
39934 | ||
39935 | -#: fortran/decl.c:2205 fortran/decl.c:2339 | |
39936 | +#: fortran/decl.c:2209 fortran/decl.c:2343 | |
39937 | #, gcc-internal-format, gfc-internal-format | |
39938 | msgid "Expected initialization expression at %C" | |
39939 | msgstr "Se esperaba una expresión de inicialización en %C" | |
39940 | ||
39941 | -#: fortran/decl.c:2213 fortran/decl.c:2345 | |
39942 | +#: fortran/decl.c:2217 fortran/decl.c:2349 | |
39943 | #, gcc-internal-format, gfc-internal-format | |
39944 | msgid "Expected scalar initialization expression at %C" | |
39945 | msgstr "Se esperaba una expresión de inicialización escalar en %C" | |
39946 | ||
39947 | -#: fortran/decl.c:2244 | |
39948 | +#: fortran/decl.c:2248 | |
39949 | #, gcc-internal-format, gfc-internal-format | |
39950 | msgid "Kind %d not supported for type %s at %C" | |
39951 | msgstr "No se admite el género %d para el tipo %s en %C" | |
39952 | ||
39953 | -#: fortran/decl.c:2257 | |
39954 | +#: fortran/decl.c:2261 | |
39955 | #, gcc-internal-format, gfc-internal-format | |
39956 | msgid "C kind type parameter is for type %s but type at %L is %s" | |
39957 | msgstr "El parámetro de tipo de género C es para el tipo %s, pero el tipo en %L es %s" | |
39958 | ||
39959 | -#: fortran/decl.c:2266 | |
39960 | +#: fortran/decl.c:2270 | |
39961 | #, gcc-internal-format, gfc-internal-format | |
39962 | msgid "Missing right parenthesis or comma at %C" | |
39963 | msgstr "Falta el paréntesis derecho o una coma en %C" | |
39964 | ||
39965 | -#: fortran/decl.c:2365 | |
39966 | +#: fortran/decl.c:2369 | |
39967 | #, gcc-internal-format, gfc-internal-format | |
39968 | msgid "Kind %d is not supported for CHARACTER at %C" | |
39969 | msgstr "No se admite el género %d para CHARACTER en %C" | |
39970 | ||
39971 | -#: fortran/decl.c:2497 | |
39972 | +#: fortran/decl.c:2501 | |
39973 | #, gcc-internal-format, gfc-internal-format | |
39974 | msgid "Syntax error in CHARACTER declaration at %C" | |
39975 | msgstr "Error sintáctico en la declaración CHARACTER en %C" | |
39976 | ||
39977 | -#: fortran/decl.c:2582 | |
39978 | +#: fortran/decl.c:2586 | |
39979 | #, gcc-internal-format, gfc-internal-format | |
39980 | msgid "Extension: BYTE type at %C" | |
39981 | msgstr "Extensión: tipo BYTE en %C" | |
39982 | ||
39983 | -#: fortran/decl.c:2588 | |
39984 | +#: fortran/decl.c:2592 | |
39985 | #, gcc-internal-format, gfc-internal-format | |
39986 | msgid "BYTE type used at %C is not available on the target machine" | |
39987 | msgstr "El tipo BYTE usado en %C no está disponible en la máquina objetivo" | |
39988 | ||
39989 | -#: fortran/decl.c:2614 fortran/decl.c:2645 fortran/decl.c:2675 | |
39990 | -#: fortran/decl.c:2825 | |
39991 | +#: fortran/decl.c:2618 fortran/decl.c:2649 fortran/decl.c:2679 | |
39992 | +#: fortran/decl.c:2829 | |
39993 | #, gcc-internal-format, gfc-internal-format | |
39994 | msgid "Fortran 2008: TYPE with intrinsic-type-spec at %C" | |
39995 | msgstr "Fortran 2008: TYPE con especificación de tipo intrínseco en %C" | |
39996 | ||
39997 | -#: fortran/decl.c:2670 | |
39998 | +#: fortran/decl.c:2674 | |
39999 | #, gcc-internal-format, gfc-internal-format | |
40000 | msgid "Extension: DOUBLE COMPLEX at %C" | |
40001 | msgstr "Extensión: DOUBLE COMPLEX en %C" | |
40002 | ||
40003 | -#: fortran/decl.c:2708 | |
40004 | +#: fortran/decl.c:2712 | |
40005 | #, gcc-internal-format, gfc-internal-format | |
40006 | msgid "Unlimited polymorphism at %C not yet supported" | |
40007 | msgstr "Aún no se admite polimorfismo ilimitado en %C" | |
40008 | ||
40009 | -#: fortran/decl.c:2717 | |
40010 | +#: fortran/decl.c:2721 | |
40011 | #, gcc-internal-format, gfc-internal-format | |
40012 | msgid "Fortran 2003: CLASS statement at %C" | |
40013 | msgstr "Fortran 2003: Declaración CLASS en %C" | |
40014 | ||
40015 | -#: fortran/decl.c:2753 fortran/decl.c:2766 fortran/decl.c:3140 | |
40016 | -#: fortran/decl.c:3148 | |
40017 | +#: fortran/decl.c:2757 fortran/decl.c:2770 fortran/decl.c:3144 | |
40018 | +#: fortran/decl.c:3152 | |
40019 | #, gcc-internal-format, gfc-internal-format | |
40020 | msgid "Type name '%s' at %C is ambiguous" | |
40021 | msgstr "El nombre de tipo '%s' en %C es ambiguo" | |
40022 | ||
40023 | -#: fortran/decl.c:2781 | |
40024 | +#: fortran/decl.c:2785 | |
40025 | #, gcc-internal-format, gfc-internal-format | |
40026 | msgid "Type name '%s' at %C conflicts with previously declared entity at %L, which has the same name" | |
40027 | msgstr "El nombre de tipo '%s' en %C tiene conflictos con la entidad declarada previamente en %L, la cual tiene el mismo nombre" | |
40028 | ||
40029 | -#: fortran/decl.c:2901 | |
40030 | +#: fortran/decl.c:2905 | |
40031 | #, gcc-internal-format, gfc-internal-format | |
40032 | msgid "Missing character range in IMPLICIT at %C" | |
40033 | msgstr "Falta el rango de carácter en IMPLICIT en %C" | |
40034 | ||
40035 | -#: fortran/decl.c:2947 | |
40036 | +#: fortran/decl.c:2951 | |
40037 | #, gcc-internal-format, gfc-internal-format | |
40038 | msgid "Letters must be in alphabetic order in IMPLICIT statement at %C" | |
40039 | msgstr "Las letras debe estar en orden alfabético en la declaración IMPLICIT en %C" | |
40040 | ||
40041 | -#: fortran/decl.c:3003 | |
40042 | +#: fortran/decl.c:3007 | |
40043 | #, gcc-internal-format, gfc-internal-format | |
40044 | msgid "Empty IMPLICIT statement at %C" | |
40045 | msgstr "Declaración IMPLICIT vacía en %C" | |
40046 | ||
40047 | -#: fortran/decl.c:3105 | |
40048 | +#: fortran/decl.c:3109 | |
40049 | #, gcc-internal-format, gfc-internal-format | |
40050 | msgid "IMPORT statement at %C only permitted in an INTERFACE body" | |
40051 | msgstr "La declaración IMPORT en %C sólo se permite en un cuerpo INTERFACE" | |
40052 | ||
40053 | -#: fortran/decl.c:3110 | |
40054 | +#: fortran/decl.c:3114 | |
40055 | #, gcc-internal-format, gfc-internal-format | |
40056 | msgid "Fortran 2003: IMPORT statement at %C" | |
40057 | msgstr "Fortran 2003: Declaración IMPORT en %C" | |
40058 | ||
40059 | -#: fortran/decl.c:3125 | |
40060 | +#: fortran/decl.c:3129 | |
40061 | #, gcc-internal-format, gfc-internal-format | |
40062 | msgid "Expecting list of named entities at %C" | |
40063 | msgstr "Se espera la lista de entidades nombradas %C" | |
40064 | ||
40065 | -#: fortran/decl.c:3154 | |
40066 | +#: fortran/decl.c:3158 | |
40067 | #, gcc-internal-format, gfc-internal-format | |
40068 | msgid "Cannot IMPORT '%s' from host scoping unit at %C - does not exist." | |
40069 | msgstr "No se puede IMPORTar '%s' desde la unidad de ámbito del anfitrión en %C - no existe." | |
40070 | ||
40071 | -#: fortran/decl.c:3161 | |
40072 | +#: fortran/decl.c:3165 | |
40073 | #, gcc-internal-format, gfc-internal-format | |
40074 | msgid "'%s' is already IMPORTed from host scoping unit at %C." | |
40075 | msgstr "'%s' ya se IMPORTó desde la unidad de ámbito del anfitrión en %C." | |
40076 | ||
40077 | -#: fortran/decl.c:3204 | |
40078 | +#: fortran/decl.c:3208 | |
40079 | #, gcc-internal-format, gfc-internal-format | |
40080 | msgid "Syntax error in IMPORT statement at %C" | |
40081 | msgstr "Error sintáctico en la declaración IMPORT en %C" | |
40082 | ||
40083 | -#: fortran/decl.c:3503 | |
40084 | +#: fortran/decl.c:3507 | |
40085 | #, gcc-internal-format, gfc-internal-format | |
40086 | msgid "Missing codimension specification at %C" | |
40087 | msgstr "Falta la especificación de codimensión en %C" | |
40088 | ||
40089 | -#: fortran/decl.c:3505 | |
40090 | +#: fortran/decl.c:3509 | |
40091 | #, gcc-internal-format, gfc-internal-format | |
40092 | msgid "Missing dimension specification at %C" | |
40093 | msgstr "Falta la especificación de dimensión en %C" | |
40094 | ||
40095 | -#: fortran/decl.c:3588 | |
40096 | +#: fortran/decl.c:3592 | |
40097 | #, gcc-internal-format, gfc-internal-format | |
40098 | msgid "Duplicate %s attribute at %L" | |
40099 | msgstr "Atributo %s duplicado en %L" | |
40100 | ||
40101 | -#: fortran/decl.c:3607 | |
40102 | +#: fortran/decl.c:3611 | |
40103 | #, gcc-internal-format, gfc-internal-format | |
40104 | msgid "Fortran 2003: ALLOCATABLE attribute at %C in a TYPE definition" | |
40105 | msgstr "Fortran 2003: atributo ALLOCATABLE en %C en una definición TYPE" | |
40106 | ||
40107 | -#: fortran/decl.c:3617 | |
40108 | +#: fortran/decl.c:3621 | |
40109 | #, gcc-internal-format, gfc-internal-format | |
40110 | msgid "Attribute at %L is not allowed in a TYPE definition" | |
40111 | msgstr "No se permite el atributo %L en una definición TYPE" | |
40112 | ||
40113 | -#: fortran/decl.c:3635 | |
40114 | +#: fortran/decl.c:3639 | |
40115 | #, gcc-internal-format, gfc-internal-format | |
40116 | msgid "Fortran 2003: Attribute %s at %L in a TYPE definition" | |
40117 | msgstr "Fortran 2003: Atributo %s en %L en una definición TYPE" | |
40118 | ||
40119 | -#: fortran/decl.c:3646 | |
40120 | +#: fortran/decl.c:3650 | |
40121 | #, gcc-internal-format, gfc-internal-format | |
40122 | msgid "%s attribute at %L is not allowed outside of the specification part of a module" | |
40123 | msgstr "No se permite el atributo %s en %L fuera de la parte de especificación de un módulo" | |
40124 | ||
40125 | -#: fortran/decl.c:3661 | |
40126 | +#: fortran/decl.c:3665 | |
40127 | #, gcc-internal-format, gfc-internal-format | |
40128 | msgid "Fortran 2003: ASYNCHRONOUS attribute at %C" | |
40129 | msgstr "Fortran 2003: Atributo ASYNCHRONOUS en %C" | |
40130 | ||
40131 | -#: fortran/decl.c:3674 | |
40132 | +#: fortran/decl.c:3678 | |
40133 | #, gcc-internal-format, gfc-internal-format | |
40134 | msgid "Fortran 2008: CONTIGUOUS attribute at %C" | |
40135 | msgstr "Fortran 2008: Atributo CONTIGUOUS en %C" | |
40136 | ||
40137 | -#: fortran/decl.c:3720 fortran/decl.c:6714 | |
40138 | +#: fortran/decl.c:3724 fortran/decl.c:6713 | |
40139 | #, gcc-internal-format, gfc-internal-format | |
40140 | msgid "PROTECTED at %C only allowed in specification part of a module" | |
40141 | msgstr "Sólo se permite PROTECTED en %C en la parte de especificación de un módulo" | |
40142 | ||
40143 | -#: fortran/decl.c:3726 | |
40144 | +#: fortran/decl.c:3730 | |
40145 | #, gcc-internal-format, gfc-internal-format | |
40146 | msgid "Fortran 2003: PROTECTED attribute at %C" | |
40147 | msgstr "Fortran 2003: Atributo PROTECTED en %C" | |
40148 | ||
40149 | -#: fortran/decl.c:3757 | |
40150 | +#: fortran/decl.c:3761 | |
40151 | #, gcc-internal-format, gfc-internal-format | |
40152 | msgid "Fortran 2003: VALUE attribute at %C" | |
40153 | msgstr "Fortran 2003: Atributo VALUE en %C" | |
40154 | ||
40155 | -#: fortran/decl.c:3767 | |
40156 | +#: fortran/decl.c:3771 | |
40157 | #, gcc-internal-format, gfc-internal-format | |
40158 | msgid "Fortran 2003: VOLATILE attribute at %C" | |
40159 | msgstr "Fortran 2003: Atributo VOLATILE en %C" | |
40160 | ||
40161 | -#: fortran/decl.c:3811 | |
40162 | +#: fortran/decl.c:3816 | |
40163 | #, gcc-internal-format, gfc-internal-format | |
40164 | msgid "Multiple identifiers provided with single NAME= specifier at %C" | |
40165 | msgstr "Se proveen múltiples identificadores con un sólo especificador NAME= en %C" | |
40166 | ||
40167 | -#: fortran/decl.c:3910 | |
40168 | +#: fortran/decl.c:3913 | |
40169 | #, gcc-internal-format, gfc-internal-format | |
40170 | msgid "Implicitly declared BIND(C) function '%s' at %L may not be C interoperable" | |
40171 | msgstr "La función implícitamente declarada BIND(C) '%s' en %L no puede ser interoperable con C" | |
40172 | ||
40173 | -#: fortran/decl.c:3931 | |
40174 | +#: fortran/decl.c:3934 | |
40175 | #, gcc-internal-format, gfc-internal-format | |
40176 | msgid "Variable '%s' in common block '%s' at %L may not be a C interoperable kind though common block '%s' is BIND(C)" | |
40177 | msgstr "La variable '%s' en el bloque común '%s' en %L no puede ser un género interoperable con C ya que el bloque común '%s' es BIND(C)" | |
40178 | ||
40179 | -#: fortran/decl.c:3940 | |
40180 | +#: fortran/decl.c:3943 | |
40181 | #, gcc-internal-format, gfc-internal-format | |
40182 | msgid "Type declaration '%s' at %L is not C interoperable but it is BIND(C)" | |
40183 | msgstr "La declaración de tipo '%s' en %L no es interoperable con C pero es BIND(C)" | |
40184 | ||
40185 | -#: fortran/decl.c:3944 | |
40186 | +#: fortran/decl.c:3947 | |
40187 | #, gcc-internal-format, gfc-internal-format | |
40188 | msgid "Variable '%s' at %L may not be a C interoperable kind but it is bind(c)" | |
40189 | msgstr "La variable '%s' en %L no es de un género interoperable con C pero es BIND(C)" | |
40190 | ||
40191 | -#: fortran/decl.c:3956 | |
40192 | +#: fortran/decl.c:3959 | |
40193 | #, gcc-internal-format, gfc-internal-format | |
40194 | msgid "Variable '%s' in common block '%s' at %L cannot be declared with BIND(C) since it is not a global" | |
40195 | msgstr "La variable '%s' en el bloque común '%s' en %L no se puede declarar con BIND(C) porque no es un global" | |
40196 | ||
40197 | -#: fortran/decl.c:3970 | |
40198 | +#: fortran/decl.c:3973 | |
40199 | #, gcc-internal-format, gfc-internal-format | |
40200 | msgid "Variable '%s' at %L cannot have both the POINTER and BIND(C) attributes" | |
40201 | msgstr "La variable '%s' en %L no puede tener los atributos POINTER y BIND(C) al mismo tiempo" | |
40202 | ||
40203 | -#: fortran/decl.c:3978 | |
40204 | +#: fortran/decl.c:3981 | |
40205 | #, gcc-internal-format, gfc-internal-format | |
40206 | msgid "Variable '%s' at %L cannot have both the ALLOCATABLE and BIND(C) attributes" | |
40207 | msgstr "La variable '%s' en %L no puede tener los atributos ALLOCATABLE y BIND(C) al mismo tiempo" | |
40208 | ||
40209 | -#: fortran/decl.c:3990 | |
40210 | +#: fortran/decl.c:3993 | |
40211 | #, gcc-internal-format, gfc-internal-format | |
40212 | msgid "Return type of BIND(C) function '%s' at %L cannot be an array" | |
40213 | msgstr "El tipo de devolución de la función BIND(C) '%s' en %L no puede ser una matriz" | |
40214 | ||
40215 | -#: fortran/decl.c:3998 | |
40216 | +#: fortran/decl.c:4001 | |
40217 | #, gcc-internal-format, gfc-internal-format | |
40218 | msgid "Return type of BIND(C) function '%s' at %L cannot be a character string" | |
40219 | msgstr "El tipo de devolución de la función BIND(C) '%s' en %L no puede ser una cadena de caracteres" | |
40220 | ||
40221 | #. Use gfc_warning_now because we won't say that the symbol fails | |
40222 | #. just because of this. | |
40223 | -#: fortran/decl.c:4009 | |
40224 | +#: fortran/decl.c:4012 | |
40225 | #, gcc-internal-format, gfc-internal-format | |
40226 | msgid "Symbol '%s' at %L is marked PRIVATE but has been given the binding label '%s'" | |
40227 | msgstr "El símbolo '%s' en %L se marcó PRIVATE pero se le dio la etiqueta de asignación '%s'" | |
40228 | ||
40229 | -#: fortran/decl.c:4084 | |
40230 | +#: fortran/decl.c:4088 | |
40231 | #, gcc-internal-format, gfc-internal-format | |
40232 | msgid "Need either entity or common block name for attribute specification statement at %C" | |
40233 | msgstr "Se necesita una entidad o un nombre de bloque común para la declaración de especificación de atributo en %C" | |
40234 | ||
40235 | -#: fortran/decl.c:4131 | |
40236 | +#: fortran/decl.c:4135 | |
40237 | #, gcc-internal-format, gfc-internal-format | |
40238 | msgid "Missing entity or common block name for attribute specification statement at %C" | |
40239 | msgstr "Falta la entidad o el nombre de bloque común para la declaración de especificación de atributo en %C" | |
40240 | ||
40241 | #. Now we have an error, which we signal, and then fix up | |
40242 | #. because the knock-on is plain and simple confusing. | |
40243 | -#: fortran/decl.c:4240 | |
40244 | +#: fortran/decl.c:4244 | |
40245 | #, gcc-internal-format, gfc-internal-format | |
40246 | msgid "Derived type at %C has not been previously defined and so cannot appear in a derived type definition" | |
40247 | msgstr "El tipo derivado en %C no se definió previamente y no puede aparecer en una definición de tipo derivado" | |
40248 | ||
40249 | -#: fortran/decl.c:4272 | |
40250 | +#: fortran/decl.c:4276 | |
40251 | #, gcc-internal-format, gfc-internal-format | |
40252 | msgid "Syntax error in data declaration at %C" | |
40253 | msgstr "Error sintáctico en la declaración de datos en %C" | |
40254 | ||
40255 | -#: fortran/decl.c:4346 | |
40256 | +#: fortran/decl.c:4350 | |
40257 | #, gcc-internal-format, gfc-internal-format | |
40258 | msgid "Fortran 2008: IMPURE procedure at %C" | |
40259 | msgstr "Fortran 2008: Procedimiento IMPURE en %C" | |
40260 | ||
40261 | -#: fortran/decl.c:4359 | |
40262 | +#: fortran/decl.c:4363 | |
40263 | #, gcc-internal-format, gfc-internal-format | |
40264 | msgid "PURE and IMPURE must not appear both at %C" | |
40265 | msgstr "No deben aparecer PURE con IMPURE en %C" | |
40266 | ||
40267 | -#: fortran/decl.c:4465 | |
40268 | +#: fortran/decl.c:4469 | |
40269 | #, gcc-internal-format, gfc-internal-format | |
40270 | msgid "Name '%s' at %C is the name of the procedure" | |
40271 | msgstr "El nombre '%s' en %C es el nombre del procedimiento" | |
40272 | ||
40273 | -#: fortran/decl.c:4477 | |
40274 | +#: fortran/decl.c:4481 | |
40275 | #, gcc-internal-format, gfc-internal-format | |
40276 | msgid "Unexpected junk in formal argument list at %C" | |
40277 | msgstr "Basura inesperada en la lista de argumentos formales en %C" | |
40278 | ||
40279 | -#: fortran/decl.c:4494 | |
40280 | +#: fortran/decl.c:4498 | |
40281 | #, gcc-internal-format, gfc-internal-format | |
40282 | msgid "Duplicate symbol '%s' in formal argument list at %C" | |
40283 | msgstr "Símbolo '%s' duplicado en la lista de argumentos formales en %C" | |
40284 | ||
40285 | -#: fortran/decl.c:4545 | |
40286 | +#: fortran/decl.c:4549 | |
40287 | #, gcc-internal-format, gfc-internal-format | |
40288 | msgid "RESULT variable at %C must be different than function name" | |
40289 | msgstr "La variable RESULT en %C debe ser diferente que el nombre de la función" | |
40290 | ||
40291 | -#: fortran/decl.c:4622 | |
40292 | +#: fortran/decl.c:4626 | |
40293 | #, gcc-internal-format, gfc-internal-format | |
40294 | msgid "Unexpected junk after function declaration at %C" | |
40295 | msgstr "Basura inesperada después de la declaración de la función en %C" | |
40296 | ||
40297 | -#: fortran/decl.c:4632 fortran/decl.c:5665 | |
40298 | +#: fortran/decl.c:4636 fortran/decl.c:5670 | |
40299 | #, gcc-internal-format, gfc-internal-format | |
40300 | msgid "Fortran 2008: BIND(C) attribute at %L may not be specified for an internal procedure" | |
40301 | msgstr "Fortran 2008: El atributo BIND(C) en %L no se puede especificar para un procedimiento internal" | |
40302 | ||
40303 | -#: fortran/decl.c:4776 | |
40304 | +#: fortran/decl.c:4780 | |
40305 | #, gcc-internal-format, gfc-internal-format | |
40306 | msgid "Interface '%s' at %C may not be generic" | |
40307 | msgstr "La interfaz '%s' en %C puede no ser generic" | |
40308 | ||
40309 | -#: fortran/decl.c:4782 | |
40310 | +#: fortran/decl.c:4786 | |
40311 | #, gcc-internal-format, gfc-internal-format | |
40312 | msgid "Interface '%s' at %C may not be a statement function" | |
40313 | msgstr "La interfaz '%s' en %C puede no ser una función de declaración" | |
40314 | ||
40315 | -#: fortran/decl.c:4795 | |
40316 | +#: fortran/decl.c:4799 | |
40317 | #, gcc-internal-format, gfc-internal-format | |
40318 | msgid "Intrinsic procedure '%s' not allowed in PROCEDURE statement at %C" | |
40319 | msgstr "El procedimiento intrínseco '%s' no se permite en la declaración PROCEDURE en %C" | |
40320 | ||
40321 | -#: fortran/decl.c:4850 | |
40322 | +#: fortran/decl.c:4854 | |
40323 | #, gcc-internal-format, gfc-internal-format | |
40324 | msgid "BIND(C) attribute at %C requires an interface with BIND(C)" | |
40325 | msgstr "El atributo BIND(C) en %C requiere una interfaz con BIND(C)" | |
40326 | ||
40327 | -#: fortran/decl.c:4857 | |
40328 | +#: fortran/decl.c:4861 | |
40329 | #, gcc-internal-format, gfc-internal-format | |
40330 | msgid "BIND(C) procedure with NAME may not have POINTER attribute at %C" | |
40331 | msgstr "El procedimiento BIND(C) con NAME no debe tener atributo POINTER en %C" | |
40332 | ||
40333 | -#: fortran/decl.c:4863 | |
40334 | +#: fortran/decl.c:4867 | |
40335 | #, gcc-internal-format, gfc-internal-format | |
40336 | msgid "Dummy procedure at %C may not have BIND(C) attribute with NAME" | |
40337 | msgstr "El procedimiento dummy en %C no puede tener atributo BIND(C) con NAME" | |
40338 | ||
40339 | -#: fortran/decl.c:4886 | |
40340 | +#: fortran/decl.c:4891 | |
40341 | #, gcc-internal-format, gfc-internal-format | |
40342 | msgid "Procedure '%s' at %L already has basic type of %s" | |
40343 | msgstr "El procedimiento '%s' en %L ya tenía el tipo básico de %s" | |
40344 | ||
40345 | -#: fortran/decl.c:4935 fortran/decl.c:5103 fortran/decl.c:8196 | |
40346 | +#: fortran/decl.c:4940 fortran/decl.c:5108 fortran/decl.c:8195 | |
40347 | #, gcc-internal-format, gfc-internal-format | |
40348 | msgid "Syntax error in PROCEDURE statement at %C" | |
40349 | msgstr "Error sintáctico en la declaración PROCEDURE en %C" | |
40350 | ||
40351 | -#: fortran/decl.c:4984 fortran/decl.c:8097 | |
40352 | +#: fortran/decl.c:4989 fortran/decl.c:8096 | |
40353 | #, gcc-internal-format, gfc-internal-format | |
40354 | msgid "Expected '::' after binding-attributes at %C" | |
40355 | msgstr "Se esperaba '::' después de los atributos de enlazado en %C" | |
40356 | ||
40357 | -#: fortran/decl.c:4991 | |
40358 | +#: fortran/decl.c:4996 | |
40359 | #, gcc-internal-format, gfc-internal-format | |
40360 | msgid "NOPASS or explicit interface required at %C" | |
40361 | msgstr "Se requiere NOPASS o una interfaz explícita en %C" | |
40362 | ||
40363 | -#: fortran/decl.c:4995 | |
40364 | +#: fortran/decl.c:5000 | |
40365 | #, gcc-internal-format, gfc-internal-format | |
40366 | msgid "Fortran 2003: Procedure pointer component at %C" | |
40367 | msgstr "Fortran 2003: Procedimiento de componente puntero en %C" | |
40368 | ||
40369 | -#: fortran/decl.c:5060 | |
40370 | +#: fortran/decl.c:5065 | |
40371 | #, gcc-internal-format, gfc-internal-format | |
40372 | msgid "Syntax error in procedure pointer component at %C" | |
40373 | msgstr "Error sintáctico en el procedimiento de componente puntero en %C" | |
40374 | ||
40375 | -#: fortran/decl.c:5077 | |
40376 | +#: fortran/decl.c:5082 | |
40377 | #, gcc-internal-format, gfc-internal-format | |
40378 | msgid "PROCEDURE at %C must be in a generic interface" | |
40379 | msgstr "PROCEDURE en %C debe estar en una interfaz genérica" | |
40380 | ||
40381 | -#: fortran/decl.c:5143 | |
40382 | +#: fortran/decl.c:5148 | |
40383 | #, gcc-internal-format, gfc-internal-format | |
40384 | msgid "Fortran 2003: PROCEDURE statement at %C" | |
40385 | msgstr "Fortran 2003: Declaración PROCEDURE en %C" | |
40386 | ||
40387 | -#: fortran/decl.c:5211 | |
40388 | +#: fortran/decl.c:5216 | |
40389 | #, gcc-internal-format, gfc-internal-format | |
40390 | msgid "Expected formal argument list in function definition at %C" | |
40391 | msgstr "Se esperaba una lista de argumentos formales en la definición de la función en %C" | |
40392 | ||
40393 | -#: fortran/decl.c:5235 fortran/decl.c:5239 fortran/decl.c:5443 | |
40394 | -#: fortran/decl.c:5447 fortran/decl.c:5633 fortran/decl.c:5637 | |
40395 | +#: fortran/decl.c:5240 fortran/decl.c:5244 fortran/decl.c:5448 | |
40396 | +#: fortran/decl.c:5452 fortran/decl.c:5638 fortran/decl.c:5642 | |
40397 | #: fortran/symbol.c:1588 | |
40398 | #, gcc-internal-format, gfc-internal-format | |
40399 | msgid "BIND(C) attribute at %L can only be used for variables or common blocks" | |
40400 | msgstr "El atributo BIND(C) en %L sólo se puede usar para variables o bloques comunes" | |
40401 | ||
40402 | -#: fortran/decl.c:5354 | |
40403 | +#: fortran/decl.c:5359 | |
40404 | #, gcc-internal-format, gfc-internal-format | |
40405 | msgid "Fortran 2008 obsolescent feature: ENTRY statement at %C" | |
40406 | msgstr "Característica obsoleta de Fortran 2008: declaración ENTRY en %C" | |
40407 | ||
40408 | -#: fortran/decl.c:5364 | |
40409 | +#: fortran/decl.c:5369 | |
40410 | #, gcc-internal-format, gfc-internal-format | |
40411 | msgid "ENTRY statement at %C cannot appear within a PROGRAM" | |
40412 | msgstr "La declaración ENTRY en %C no puede aparecer dentro de un PROGRAM" | |
40413 | ||
40414 | -#: fortran/decl.c:5367 | |
40415 | +#: fortran/decl.c:5372 | |
40416 | #, gcc-internal-format, gfc-internal-format | |
40417 | msgid "ENTRY statement at %C cannot appear within a MODULE" | |
40418 | msgstr "La declaración ENTRY en %C no puede aparecer dentro de un MODULE" | |
40419 | ||
40420 | -#: fortran/decl.c:5370 | |
40421 | +#: fortran/decl.c:5375 | |
40422 | #, gcc-internal-format, gfc-internal-format | |
40423 | msgid "ENTRY statement at %C cannot appear within a BLOCK DATA" | |
40424 | msgstr "La declaración ENTRY en %C no puede aparecer dentro de un BLOCK DATA" | |
40425 | ||
40426 | -#: fortran/decl.c:5374 | |
40427 | +#: fortran/decl.c:5379 | |
40428 | #, gcc-internal-format, gfc-internal-format | |
40429 | msgid "ENTRY statement at %C cannot appear within an INTERFACE" | |
40430 | msgstr "La declaración ENTRY en %C no puede aparecer dentro de un INTERFACE" | |
40431 | ||
40432 | -#: fortran/decl.c:5378 | |
40433 | +#: fortran/decl.c:5383 | |
40434 | #, gcc-internal-format, gfc-internal-format | |
40435 | msgid "ENTRY statement at %C cannot appear within a DERIVED TYPE block" | |
40436 | msgstr "La declaración ENTRY en %C no puede aparecer dentro de un bloque DERIVED TYPE" | |
40437 | ||
40438 | -#: fortran/decl.c:5382 | |
40439 | +#: fortran/decl.c:5387 | |
40440 | #, gcc-internal-format, gfc-internal-format | |
40441 | msgid "ENTRY statement at %C cannot appear within an IF-THEN block" | |
40442 | msgstr "La declaración ENTRY en %C no puede aparecer dentro de un bloque IF-THEN" | |
40443 | ||
40444 | -#: fortran/decl.c:5387 | |
40445 | +#: fortran/decl.c:5392 | |
40446 | #, gcc-internal-format, gfc-internal-format | |
40447 | msgid "ENTRY statement at %C cannot appear within a DO block" | |
40448 | msgstr "La declaración ENTRY en %C no puede aparecer dentro de un bloque DO" | |
40449 | ||
40450 | -#: fortran/decl.c:5391 | |
40451 | +#: fortran/decl.c:5396 | |
40452 | #, gcc-internal-format, gfc-internal-format | |
40453 | msgid "ENTRY statement at %C cannot appear within a SELECT block" | |
40454 | msgstr "La declaración ENTRY en %C no puede aparecer dentro de un bloque SELECT" | |
40455 | ||
40456 | -#: fortran/decl.c:5395 | |
40457 | +#: fortran/decl.c:5400 | |
40458 | #, gcc-internal-format, gfc-internal-format | |
40459 | msgid "ENTRY statement at %C cannot appear within a FORALL block" | |
40460 | msgstr "La declaración ENTRY en %C no puede aparecer dentro de un bloque FORALL" | |
40461 | ||
40462 | -#: fortran/decl.c:5399 | |
40463 | +#: fortran/decl.c:5404 | |
40464 | #, gcc-internal-format, gfc-internal-format | |
40465 | msgid "ENTRY statement at %C cannot appear within a WHERE block" | |
40466 | msgstr "La declaración ENTRY en %C no puede aparecer dentro de un bloque WHERE" | |
40467 | ||
40468 | -#: fortran/decl.c:5403 | |
40469 | +#: fortran/decl.c:5408 | |
40470 | #, gcc-internal-format, gfc-internal-format | |
40471 | msgid "ENTRY statement at %C cannot appear within a contained subprogram" | |
40472 | msgstr "La declaración ENTRY en %C no puede aparecer dentro de un subprograma contenido" | |
40473 | ||
40474 | -#: fortran/decl.c:5421 | |
40475 | +#: fortran/decl.c:5426 | |
40476 | #, gcc-internal-format, gfc-internal-format | |
40477 | msgid "ENTRY statement at %C cannot appear in a contained procedure" | |
40478 | msgstr "La declaración ENTRY en %C no puede aparecer dentro de un procedimiento contenido" | |
40479 | ||
40480 | -#: fortran/decl.c:5475 fortran/decl.c:5673 | |
40481 | +#: fortran/decl.c:5480 fortran/decl.c:5678 | |
40482 | #, gcc-internal-format, gfc-internal-format | |
40483 | msgid "Missing required parentheses before BIND(C) at %C" | |
40484 | msgstr "Faltan los paréntesis requeridos antes de BIND(C) en %C" | |
40485 | ||
40486 | -#: fortran/decl.c:5735 fortran/decl.c:5751 | |
40487 | +#: fortran/decl.c:5736 fortran/decl.c:5752 | |
40488 | #, gcc-internal-format, gfc-internal-format | |
40489 | msgid "Syntax error in NAME= specifier for binding label at %C" | |
40490 | msgstr "Error sintáctico en el especificador NAME= para la etiqueta de asignación %C" | |
40491 | ||
40492 | -#: fortran/decl.c:5766 | |
40493 | +#: fortran/decl.c:5767 | |
40494 | #, gcc-internal-format, gfc-internal-format | |
40495 | msgid "Missing closing quote '\"' for binding label at %C" | |
40496 | msgstr "Falta la comilla '\"' que cierra en la etiqueta de asignación en %C" | |
40497 | ||
40498 | -#: fortran/decl.c:5775 | |
40499 | +#: fortran/decl.c:5776 | |
40500 | #, gcc-internal-format, gfc-internal-format | |
40501 | msgid "Missing closing quote ''' for binding label at %C" | |
40502 | msgstr "Falta la comilla ''' que cierra en la etiqueta de asignación en %C" | |
40503 | ||
40504 | -#: fortran/decl.c:5785 | |
40505 | +#: fortran/decl.c:5786 | |
40506 | #, gcc-internal-format, gfc-internal-format | |
40507 | msgid "Missing closing paren for binding label at %C" | |
40508 | msgstr "Falta el paréntesis que cierra en la etiqueta de asignación en %C" | |
40509 | ||
40510 | -#: fortran/decl.c:5791 | |
40511 | +#: fortran/decl.c:5792 | |
40512 | #, gcc-internal-format, gfc-internal-format | |
40513 | msgid "No binding name is allowed in BIND(C) at %C" | |
40514 | msgstr "No se permite un nombre de enlazado en BIND(C) en %C" | |
40515 | ||
40516 | -#: fortran/decl.c:5797 | |
40517 | +#: fortran/decl.c:5798 | |
40518 | #, gcc-internal-format, gfc-internal-format | |
40519 | msgid "For dummy procedure %s, no binding name is allowed in BIND(C) at %C" | |
40520 | msgstr "Para el procedimiento dummy %s, no se permite un nombre de enlazado en BIND(C) en %C" | |
40521 | ||
40522 | -#: fortran/decl.c:5828 | |
40523 | +#: fortran/decl.c:5827 | |
40524 | #, gcc-internal-format, gfc-internal-format | |
40525 | msgid "NAME not allowed on BIND(C) for ABSTRACT INTERFACE at %C" | |
40526 | msgstr "No se permite NAME en BIND(C) para ABSTRACT INTERFACE en %C" | |
40527 | ||
40528 | -#: fortran/decl.c:6033 | |
40529 | +#: fortran/decl.c:6032 | |
40530 | #, gcc-internal-format, gfc-internal-format | |
40531 | msgid "Unexpected END statement at %C" | |
40532 | msgstr "Declaración END inesperada en %C" | |
40533 | ||
40534 | -#: fortran/decl.c:6041 | |
40535 | +#: fortran/decl.c:6040 | |
40536 | #, gcc-internal-format, gfc-internal-format | |
40537 | msgid "Fortran 2008: END statement instead of %s statement at %L" | |
40538 | msgstr "Fortran 2008: Declaración END en lugar de una declaración %s en %L" | |
40539 | ||
40540 | #. We would have required END [something]. | |
40541 | -#: fortran/decl.c:6049 | |
40542 | +#: fortran/decl.c:6048 | |
40543 | #, gcc-internal-format, gfc-internal-format | |
40544 | msgid "%s statement expected at %L" | |
40545 | msgstr "Se esperaba %s en la declaración en %L" | |
40546 | ||
40547 | -#: fortran/decl.c:6060 | |
40548 | +#: fortran/decl.c:6059 | |
40549 | #, gcc-internal-format, gfc-internal-format | |
40550 | msgid "Expecting %s statement at %C" | |
40551 | msgstr "Se esperaba la declaración %s en %C" | |
40552 | ||
40553 | -#: fortran/decl.c:6076 | |
40554 | +#: fortran/decl.c:6075 | |
40555 | #, gcc-internal-format, gfc-internal-format | |
40556 | msgid "Expected block name of '%s' in %s statement at %C" | |
40557 | msgstr "Se esperaba el nombre de bloque de '%s' en la declaración %s en %C" | |
40558 | ||
40559 | -#: fortran/decl.c:6093 | |
40560 | +#: fortran/decl.c:6092 | |
40561 | #, gcc-internal-format, gfc-internal-format | |
40562 | msgid "Expected terminating name at %C" | |
40563 | msgstr "Se esperaba un nombre terminal en %C" | |
40564 | ||
40565 | -#: fortran/decl.c:6102 fortran/decl.c:6110 | |
40566 | +#: fortran/decl.c:6101 fortran/decl.c:6109 | |
40567 | #, gcc-internal-format, gfc-internal-format | |
40568 | msgid "Expected label '%s' for %s statement at %C" | |
40569 | msgstr "Se esperaba la etiqueta '%s' para la declaración %s en %C" | |
40570 | ||
40571 | -#: fortran/decl.c:6175 | |
40572 | +#: fortran/decl.c:6174 | |
40573 | #, gcc-internal-format, gfc-internal-format | |
40574 | msgid "Missing array specification at %L in DIMENSION statement" | |
40575 | msgstr "Falta la especificación de matriz en %L en la declaración DIMENSION" | |
40576 | ||
40577 | -#: fortran/decl.c:6183 | |
40578 | +#: fortran/decl.c:6182 | |
40579 | #, gcc-internal-format, gfc-internal-format | |
40580 | msgid "Dimensions specified for %s at %L after its initialisation" | |
40581 | msgstr "Se especificarion dimensiones para %s en %L después de su inicialización" | |
40582 | ||
40583 | -#: fortran/decl.c:6191 | |
40584 | +#: fortran/decl.c:6190 | |
40585 | #, gcc-internal-format, gfc-internal-format | |
40586 | msgid "Missing array specification at %L in CODIMENSION statement" | |
40587 | msgstr "Falta la especificación de matriz en %L en la declaración CODIMENSION" | |
40588 | ||
40589 | -#: fortran/decl.c:6200 | |
40590 | +#: fortran/decl.c:6199 | |
40591 | #, gcc-internal-format, gfc-internal-format | |
40592 | msgid "Array specification must be deferred at %L" | |
40593 | msgstr "La especificación de matriz se debe diferir en %L" | |
40594 | ||
40595 | -#: fortran/decl.c:6299 | |
40596 | +#: fortran/decl.c:6298 | |
40597 | #, gcc-internal-format, gfc-internal-format | |
40598 | msgid "Unexpected character in variable list at %C" | |
40599 | msgstr "Carácter inesperado en la lista de variables en %C" | |
40600 | ||
40601 | -#: fortran/decl.c:6336 | |
40602 | +#: fortran/decl.c:6335 | |
40603 | #, gcc-internal-format, gfc-internal-format | |
40604 | msgid "Expected '(' at %C" | |
40605 | msgstr "Se esperaba '(' en %C" | |
40606 | ||
40607 | -#: fortran/decl.c:6350 fortran/decl.c:6390 | |
40608 | +#: fortran/decl.c:6349 fortran/decl.c:6389 | |
40609 | #, gcc-internal-format, gfc-internal-format | |
40610 | msgid "Expected variable name at %C" | |
40611 | msgstr "se esperaba un nombre variable en %C" | |
40612 | ||
40613 | -#: fortran/decl.c:6366 | |
40614 | +#: fortran/decl.c:6365 | |
40615 | #, gcc-internal-format, gfc-internal-format | |
40616 | msgid "Cray pointer at %C must be an integer" | |
40617 | msgstr "El puntero Cray en %C debe ser un entero" | |
40618 | ||
40619 | -#: fortran/decl.c:6370 | |
40620 | +#: fortran/decl.c:6369 | |
40621 | #, gcc-internal-format, gfc-internal-format | |
40622 | msgid "Cray pointer at %C has %d bytes of precision; memory addresses require %d bytes" | |
40623 | msgstr "El puntero Cray en %C tiene %d bytes de precisión; las direcciones de memoria requieren %d bytes" | |
40624 | ||
40625 | -#: fortran/decl.c:6376 | |
40626 | +#: fortran/decl.c:6375 | |
40627 | #, gcc-internal-format, gfc-internal-format | |
40628 | msgid "Expected \",\" at %C" | |
40629 | msgstr "Se esperaba \",\" en %C" | |
40630 | ||
40631 | -#: fortran/decl.c:6439 | |
40632 | +#: fortran/decl.c:6438 | |
40633 | #, gcc-internal-format, gfc-internal-format | |
40634 | msgid "Expected \")\" at %C" | |
40635 | msgstr "Se esperaba \")\" en %C" | |
40636 | ||
40637 | -#: fortran/decl.c:6451 | |
40638 | +#: fortran/decl.c:6450 | |
40639 | #, gcc-internal-format, gfc-internal-format | |
40640 | msgid "Expected \",\" or end of statement at %C" | |
40641 | msgstr "Se esperaba \",\" o el final de la declaración en %C" | |
40642 | ||
40643 | -#: fortran/decl.c:6477 | |
40644 | +#: fortran/decl.c:6476 | |
40645 | #, gcc-internal-format, gfc-internal-format | |
40646 | msgid "INTENT is not allowed inside of BLOCK at %C" | |
40647 | msgstr "No se permite INTENT dentro de BLOCK en %C" | |
40648 | ||
40649 | -#: fortran/decl.c:6509 | |
40650 | +#: fortran/decl.c:6508 | |
40651 | #, gcc-internal-format, gfc-internal-format | |
40652 | msgid "OPTIONAL is not allowed inside of BLOCK at %C" | |
40653 | msgstr "No se permite OPTIONAL dentro de BLOCK en %C" | |
40654 | ||
40655 | -#: fortran/decl.c:6528 | |
40656 | +#: fortran/decl.c:6527 | |
40657 | #, gcc-internal-format, gfc-internal-format | |
40658 | msgid "Cray pointer declaration at %C requires -fcray-pointer flag" | |
40659 | msgstr "La declaración de punteros Cray en %C requiere la opción -fcray-pointer" | |
40660 | ||
40661 | -#: fortran/decl.c:6567 | |
40662 | +#: fortran/decl.c:6566 | |
40663 | #, gcc-internal-format, gfc-internal-format | |
40664 | msgid "Fortran 2008: CONTIGUOUS statement at %C" | |
40665 | msgstr "Fortran 2008: Declaración CONTIGUOUS en %C" | |
40666 | ||
40667 | -#: fortran/decl.c:6665 | |
40668 | +#: fortran/decl.c:6664 | |
40669 | #, gcc-internal-format, gfc-internal-format | |
40670 | msgid "Access specification of the %s operator at %C has already been specified" | |
40671 | msgstr "La especificación de acceso del operador %s en %C ya se había especificado" | |
40672 | ||
40673 | -#: fortran/decl.c:6682 | |
40674 | +#: fortran/decl.c:6681 | |
40675 | #, gcc-internal-format, gfc-internal-format | |
40676 | msgid "Access specification of the .%s. operator at %C has already been specified" | |
40677 | msgstr "La especificación de acceso del operador .%s. en %C ya se había especificado" | |
40678 | ||
40679 | -#: fortran/decl.c:6720 | |
40680 | +#: fortran/decl.c:6719 | |
40681 | #, gcc-internal-format, gfc-internal-format | |
40682 | msgid "Fortran 2003: PROTECTED statement at %C" | |
40683 | msgstr "Fortran 2003: Declaración PROTECTED en %C" | |
40684 | ||
40685 | -#: fortran/decl.c:6760 | |
40686 | +#: fortran/decl.c:6759 | |
40687 | #, gcc-internal-format, gfc-internal-format | |
40688 | msgid "Syntax error in PROTECTED statement at %C" | |
40689 | msgstr "Error sintáctico en la declaración PROTECTED en %C" | |
40690 | ||
40691 | -#: fortran/decl.c:6784 | |
40692 | +#: fortran/decl.c:6783 | |
40693 | #, gcc-internal-format, gfc-internal-format | |
40694 | msgid "PRIVATE statement at %C is only allowed in the specification part of a module" | |
40695 | msgstr "Sólo se permite la declaración PRIVATE en %C en la parte de especificación de un módulo" | |
40696 | ||
40697 | -#: fortran/decl.c:6821 | |
40698 | +#: fortran/decl.c:6820 | |
40699 | #, gcc-internal-format, gfc-internal-format | |
40700 | msgid "PUBLIC statement at %C is only allowed in the specification part of a module" | |
40701 | msgstr "Sólo se permite la declaración PRIVATE en %C en la parte de especificación de un módulo" | |
40702 | ||
40703 | -#: fortran/decl.c:6849 | |
40704 | +#: fortran/decl.c:6848 | |
40705 | #, gcc-internal-format, gfc-internal-format | |
40706 | msgid "Expected variable name at %C in PARAMETER statement" | |
40707 | msgstr "Se esperaba un nombre de variable en %C en la declaración PARAMETER" | |
40708 | ||
40709 | -#: fortran/decl.c:6856 | |
40710 | +#: fortran/decl.c:6855 | |
40711 | #, gcc-internal-format, gfc-internal-format | |
40712 | msgid "Expected = sign in PARAMETER statement at %C" | |
40713 | msgstr "Se esperaba un signo = en la declaración PARAMETER en %C" | |
40714 | ||
40715 | -#: fortran/decl.c:6862 | |
40716 | +#: fortran/decl.c:6861 | |
40717 | #, gcc-internal-format, gfc-internal-format | |
40718 | msgid "Expected expression at %C in PARAMETER statement" | |
40719 | msgstr "Se esperaba una expresión en %C en la declaración PARAMETER" | |
40720 | ||
40721 | -#: fortran/decl.c:6882 | |
40722 | +#: fortran/decl.c:6881 | |
40723 | #, gcc-internal-format, gfc-internal-format | |
40724 | msgid "Initializing already initialized variable at %C" | |
40725 | msgstr "Se inicializa una variable ya inicializada en %C" | |
40726 | ||
40727 | -#: fortran/decl.c:6917 | |
40728 | +#: fortran/decl.c:6916 | |
40729 | #, gcc-internal-format, gfc-internal-format | |
40730 | msgid "Unexpected characters in PARAMETER statement at %C" | |
40731 | msgstr "Caracteres inesperados en la declaración PARAMETER en %C" | |
40732 | ||
40733 | -#: fortran/decl.c:6941 | |
40734 | +#: fortran/decl.c:6940 | |
40735 | #, gcc-internal-format, gfc-internal-format | |
40736 | msgid "Blanket SAVE statement at %C follows previous SAVE statement" | |
40737 | msgstr "Declaración SAVE incondicional en %C después de una declaración SAVE previa" | |
40738 | ||
40739 | -#: fortran/decl.c:6953 | |
40740 | +#: fortran/decl.c:6952 | |
40741 | #, gcc-internal-format, gfc-internal-format | |
40742 | msgid "SAVE statement at %C follows blanket SAVE statement" | |
40743 | msgstr "Declaración SAVE en %C después de una declaración SAVE incondicional" | |
40744 | ||
40745 | -#: fortran/decl.c:7000 | |
40746 | +#: fortran/decl.c:6999 | |
40747 | #, gcc-internal-format, gfc-internal-format | |
40748 | msgid "Syntax error in SAVE statement at %C" | |
40749 | msgstr "Error sintáctico en la declaración SAVE en %C" | |
40750 | ||
40751 | -#: fortran/decl.c:7014 | |
40752 | +#: fortran/decl.c:7013 | |
40753 | #, gcc-internal-format, gfc-internal-format | |
40754 | msgid "VALUE is not allowed inside of BLOCK at %C" | |
40755 | msgstr "No se permite VALUE dentro de BLOCK en %C" | |
40756 | ||
40757 | -#: fortran/decl.c:7018 | |
40758 | +#: fortran/decl.c:7017 | |
40759 | #, gcc-internal-format, gfc-internal-format | |
40760 | msgid "Fortran 2003: VALUE statement at %C" | |
40761 | msgstr "Fortran 2003: Declaración VALUE en %C" | |
40762 | ||
40763 | -#: fortran/decl.c:7058 | |
40764 | +#: fortran/decl.c:7057 | |
40765 | #, gcc-internal-format, gfc-internal-format | |
40766 | msgid "Syntax error in VALUE statement at %C" | |
40767 | msgstr "Error sintáctico en la declaración VALUE en %C" | |
40768 | ||
40769 | -#: fortran/decl.c:7069 | |
40770 | +#: fortran/decl.c:7068 | |
40771 | #, gcc-internal-format, gfc-internal-format | |
40772 | msgid "Fortran 2003: VOLATILE statement at %C" | |
40773 | msgstr "Fortran 2003: Declaración VOLATILE en %C" | |
40774 | ||
40775 | -#: fortran/decl.c:7093 | |
40776 | +#: fortran/decl.c:7092 | |
40777 | #, gcc-internal-format, gfc-internal-format | |
40778 | msgid "Specifying VOLATILE for coarray variable '%s' at %C, which is use-/host-associated" | |
40779 | msgstr "Se especifica VOLATILE para la variable de comatriz '%s' en %C, la cual es asociada a uso/anfitrión" | |
40780 | ||
40781 | -#: fortran/decl.c:7119 | |
40782 | +#: fortran/decl.c:7118 | |
40783 | #, gcc-internal-format, gfc-internal-format | |
40784 | msgid "Syntax error in VOLATILE statement at %C" | |
40785 | msgstr "Error sintáctico en la declaración VOLATILE en %C" | |
40786 | ||
40787 | -#: fortran/decl.c:7130 | |
40788 | +#: fortran/decl.c:7129 | |
40789 | #, gcc-internal-format, gfc-internal-format | |
40790 | msgid "Fortran 2003: ASYNCHRONOUS statement at %C" | |
40791 | msgstr "Fortran 2003: Declaración ASYNCHRONOUS en %C" | |
40792 | ||
40793 | -#: fortran/decl.c:7172 | |
40794 | +#: fortran/decl.c:7171 | |
40795 | #, gcc-internal-format, gfc-internal-format | |
40796 | msgid "Syntax error in ASYNCHRONOUS statement at %C" | |
40797 | msgstr "Error sintáctico en la declaración ASYNCHRONOUS en %C" | |
40798 | ||
40799 | -#: fortran/decl.c:7196 | |
40800 | +#: fortran/decl.c:7195 | |
40801 | #, gcc-internal-format, gfc-internal-format | |
40802 | msgid "MODULE PROCEDURE at %C must be in a generic module interface" | |
40803 | msgstr "MODULE PROCEDURE en %C debe estar en una interfaz genérica de módulo" | |
40804 | ||
40805 | -#: fortran/decl.c:7221 | |
40806 | +#: fortran/decl.c:7220 | |
40807 | #, gcc-internal-format, gfc-internal-format | |
40808 | msgid "Fortran 2008: double colon in MODULE PROCEDURE statement at %L" | |
40809 | msgstr "Fortran 2008: dos puntos dobles en la declaración MODULE PROCEDURE en %L" | |
40810 | ||
40811 | -#: fortran/decl.c:7255 | |
40812 | +#: fortran/decl.c:7254 | |
40813 | #, gcc-internal-format, gfc-internal-format | |
40814 | msgid "Intrinsic procedure at %L cannot be a MODULE PROCEDURE" | |
40815 | msgstr "El procedimiento intrínseco en %L no puede ser un MODULE PROCEDURE" | |
40816 | ||
40817 | -#: fortran/decl.c:7304 | |
40818 | +#: fortran/decl.c:7303 | |
40819 | #, gcc-internal-format, gfc-internal-format | |
40820 | msgid "Ambiguous symbol in TYPE definition at %C" | |
40821 | msgstr "Símbolo ambiguo en la definición TYPE en %C" | |
40822 | ||
40823 | -#: fortran/decl.c:7310 | |
40824 | +#: fortran/decl.c:7309 | |
40825 | #, gcc-internal-format, gfc-internal-format | |
40826 | msgid "No such symbol in TYPE definition at %C" | |
40827 | msgstr "No existe ese símbolo en la definición TYPE en %C" | |
40828 | ||
40829 | -#: fortran/decl.c:7318 | |
40830 | +#: fortran/decl.c:7317 | |
40831 | #, gcc-internal-format, gfc-internal-format | |
40832 | msgid "'%s' in EXTENDS expression at %C is not a derived type" | |
40833 | msgstr "'%s' en la expresión EXTENDS en %C no es un tipo derivado" | |
40834 | ||
40835 | -#: fortran/decl.c:7325 | |
40836 | +#: fortran/decl.c:7324 | |
40837 | #, gcc-internal-format, gfc-internal-format | |
40838 | msgid "'%s' cannot be extended at %C because it is BIND(C)" | |
40839 | msgstr "'%s' no se puede extender en %C porque es BIND(C)" | |
40840 | ||
40841 | -#: fortran/decl.c:7332 | |
40842 | +#: fortran/decl.c:7331 | |
40843 | #, gcc-internal-format, gfc-internal-format | |
40844 | msgid "'%s' cannot be extended at %C because it is a SEQUENCE type" | |
40845 | msgstr "'%s' no se puede extender en %C porque es un tipo SEQUENCE" | |
40846 | ||
40847 | -#: fortran/decl.c:7355 | |
40848 | +#: fortran/decl.c:7354 | |
40849 | #, gcc-internal-format, gfc-internal-format | |
40850 | msgid "Derived type at %C can only be PRIVATE in the specification part of a module" | |
40851 | msgstr "El tipo derivado en %C sólo puede ser PRIVATE en la parte de especificación de un módulo" | |
40852 | ||
40853 | -#: fortran/decl.c:7367 | |
40854 | +#: fortran/decl.c:7366 | |
40855 | #, gcc-internal-format, gfc-internal-format | |
40856 | msgid "Derived type at %C can only be PUBLIC in the specification part of a module" | |
40857 | msgstr "El tipo derivado en %C sólo puede ser PUBLIC en la parte de especificación de un módulo" | |
40858 | ||
40859 | -#: fortran/decl.c:7388 | |
40860 | +#: fortran/decl.c:7387 | |
40861 | #, gcc-internal-format, gfc-internal-format | |
40862 | msgid "Fortran 2003: ABSTRACT type at %C" | |
40863 | msgstr "Fortran 2003: Tipo ABSTRACT en %C" | |
40864 | ||
40865 | -#: fortran/decl.c:7453 | |
40866 | +#: fortran/decl.c:7452 | |
40867 | #, gcc-internal-format, gfc-internal-format | |
40868 | msgid "Expected :: in TYPE definition at %C" | |
40869 | msgstr "Se esperaba :: en la definición TYPE en %C" | |
40870 | ||
40871 | -#: fortran/decl.c:7464 | |
40872 | +#: fortran/decl.c:7463 | |
40873 | #, gcc-internal-format, gfc-internal-format | |
40874 | msgid "Type name '%s' at %C cannot be the same as an intrinsic type" | |
40875 | msgstr "El nombre de tipo '%s' en %C no puede ser el mismo que un tipo intrínseco" | |
40876 | ||
40877 | -#: fortran/decl.c:7474 | |
40878 | +#: fortran/decl.c:7473 | |
40879 | #, gcc-internal-format, gfc-internal-format | |
40880 | msgid "Derived type name '%s' at %C already has a basic type of %s" | |
40881 | msgstr "El nombre de tipo derivado '%s' en %C ya tiene un tipo básico de %s" | |
40882 | ||
40883 | -#: fortran/decl.c:7491 | |
40884 | +#: fortran/decl.c:7490 | |
40885 | #, gcc-internal-format, gfc-internal-format | |
40886 | msgid "Derived type definition of '%s' at %C has already been defined" | |
40887 | msgstr "La definición del tipo derivado de '%s' en %C ya se había definido" | |
40888 | ||
40889 | -#: fortran/decl.c:7599 | |
40890 | +#: fortran/decl.c:7598 | |
40891 | #, gcc-internal-format, gfc-internal-format | |
40892 | msgid "Cray Pointee at %C cannot be assumed shape array" | |
40893 | msgstr "El Apuntado Cray en %C no puede ser una matriz de forma asumida" | |
40894 | ||
40895 | -#: fortran/decl.c:7619 | |
40896 | +#: fortran/decl.c:7618 | |
40897 | #, gcc-internal-format, gfc-internal-format | |
40898 | msgid "Fortran 2003: ENUM and ENUMERATOR at %C" | |
40899 | msgstr "Fortran 2003: ENUM y ENUMERATOR en %C" | |
40900 | ||
40901 | -#: fortran/decl.c:7652 | |
40902 | +#: fortran/decl.c:7651 | |
40903 | #, gcc-internal-format, gfc-internal-format | |
40904 | msgid "Enumerator exceeds the C integer type at %C" | |
40905 | msgstr "El enumerador excede el tipo entero de C en %C" | |
40906 | ||
40907 | -#: fortran/decl.c:7731 | |
40908 | +#: fortran/decl.c:7730 | |
40909 | #, gcc-internal-format, gfc-internal-format | |
40910 | msgid "ENUMERATOR %L not initialized with integer expression" | |
40911 | msgstr "ENUMERATOR %L no se inicializó con una expresión entera" | |
40912 | ||
40913 | -#: fortran/decl.c:7779 | |
40914 | +#: fortran/decl.c:7778 | |
40915 | #, gcc-internal-format, gfc-internal-format | |
40916 | msgid "ENUM definition statement expected before %C" | |
40917 | msgstr "Se esperaba una declaración de definición ENUM antes de %C" | |
40918 | ||
40919 | -#: fortran/decl.c:7815 | |
40920 | +#: fortran/decl.c:7814 | |
40921 | #, gcc-internal-format, gfc-internal-format | |
40922 | msgid "Syntax error in ENUMERATOR definition at %C" | |
40923 | msgstr "Error sintáctico en la definición ENUMERATOR en %C" | |
40924 | ||
40925 | -#: fortran/decl.c:7862 fortran/decl.c:7877 | |
40926 | +#: fortran/decl.c:7861 fortran/decl.c:7876 | |
40927 | #, gcc-internal-format, gfc-internal-format | |
40928 | msgid "Duplicate access-specifier at %C" | |
40929 | msgstr "Especificador de acceso duplicado en %C" | |
40930 | ||
40931 | -#: fortran/decl.c:7897 | |
40932 | +#: fortran/decl.c:7896 | |
40933 | #, gcc-internal-format, gfc-internal-format | |
40934 | msgid "Binding attributes already specify passing, illegal NOPASS at %C" | |
40935 | msgstr "Los atributos de enlace ya especifican paso, NOPASS ilegal en %C" | |
40936 | ||
40937 | -#: fortran/decl.c:7917 | |
40938 | +#: fortran/decl.c:7916 | |
40939 | #, gcc-internal-format, gfc-internal-format | |
40940 | msgid "Binding attributes already specify passing, illegal PASS at %C" | |
40941 | msgstr "Los atributos de enlace ya especifican paso, PASS ilegal en %C" | |
40942 | ||
40943 | -#: fortran/decl.c:7944 | |
40944 | +#: fortran/decl.c:7943 | |
40945 | #, gcc-internal-format, gfc-internal-format | |
40946 | msgid "Duplicate POINTER attribute at %C" | |
40947 | msgstr "Atributo POINTER duplicado en %C" | |
40948 | ||
40949 | -#: fortran/decl.c:7962 | |
40950 | +#: fortran/decl.c:7961 | |
40951 | #, gcc-internal-format, gfc-internal-format | |
40952 | msgid "Duplicate NON_OVERRIDABLE at %C" | |
40953 | msgstr "NON_OVERRIDABLE duplicado en %C" | |
40954 | ||
40955 | -#: fortran/decl.c:7978 | |
40956 | +#: fortran/decl.c:7977 | |
40957 | #, gcc-internal-format, gfc-internal-format | |
40958 | msgid "Duplicate DEFERRED at %C" | |
40959 | msgstr "DEFERRED duplicado en %C" | |
40960 | ||
40961 | -#: fortran/decl.c:7991 | |
40962 | +#: fortran/decl.c:7990 | |
40963 | #, gcc-internal-format, gfc-internal-format | |
40964 | msgid "Expected access-specifier at %C" | |
40965 | msgstr "Se esperaba un especificador de acceso en %C" | |
40966 | ||
40967 | -#: fortran/decl.c:7993 | |
40968 | +#: fortran/decl.c:7992 | |
40969 | #, gcc-internal-format, gfc-internal-format | |
40970 | msgid "Expected binding attribute at %C" | |
40971 | msgstr "Se esperaba un atributo de enlace en %C" | |
40972 | ||
40973 | -#: fortran/decl.c:8001 | |
40974 | +#: fortran/decl.c:8000 | |
40975 | #, gcc-internal-format, gfc-internal-format | |
40976 | msgid "NON_OVERRIDABLE and DEFERRED can't both appear at %C" | |
40977 | msgstr "No pueden aparecer NON_OVERRIDABLE y DEFERRED al mismo tiempo en %C" | |
40978 | ||
40979 | -#: fortran/decl.c:8013 | |
40980 | +#: fortran/decl.c:8012 | |
40981 | #, gcc-internal-format, gfc-internal-format | |
40982 | msgid "POINTER attribute is required for procedure pointer component at %C" | |
40983 | msgstr "Se requiere el atributo POINTER para el procedimiento de componente puntero en %C" | |
40984 | ||
40985 | -#: fortran/decl.c:8055 | |
40986 | +#: fortran/decl.c:8054 | |
40987 | #, gcc-internal-format, gfc-internal-format | |
40988 | msgid "Interface-name expected after '(' at %C" | |
40989 | msgstr "Se esperaba un nombre de interfaz después de '(' en %C" | |
40990 | ||
40991 | -#: fortran/decl.c:8061 | |
40992 | +#: fortran/decl.c:8060 | |
40993 | #, gcc-internal-format, gfc-internal-format | |
40994 | msgid "')' expected at %C" | |
40995 | msgstr "Se esperaba ')' en %C" | |
40996 | ||
40997 | -#: fortran/decl.c:8081 | |
40998 | +#: fortran/decl.c:8080 | |
40999 | #, gcc-internal-format, gfc-internal-format | |
41000 | msgid "Interface must be specified for DEFERRED binding at %C" | |
41001 | msgstr "Se debe especificar una interfaz para el enlace DEFERRED en %C" | |
41002 | ||
41003 | -#: fortran/decl.c:8086 | |
41004 | +#: fortran/decl.c:8085 | |
41005 | #, gcc-internal-format, gfc-internal-format | |
41006 | msgid "PROCEDURE(interface) at %C should be declared DEFERRED" | |
41007 | msgstr "PROCEDURE(interface) en %C se debe declarar DEFERRED" | |
41008 | ||
41009 | -#: fortran/decl.c:8109 | |
41010 | +#: fortran/decl.c:8108 | |
41011 | #, gcc-internal-format, gfc-internal-format | |
41012 | msgid "Expected binding name at %C" | |
41013 | msgstr "Se esperaba un nombre de enlace en %C" | |
41014 | ||
41015 | -#: fortran/decl.c:8113 | |
41016 | +#: fortran/decl.c:8112 | |
41017 | #, gcc-internal-format, gfc-internal-format | |
41018 | msgid "Fortran 2008: PROCEDURE list at %C" | |
41019 | msgstr "Fortran 2008: Lista PROCEDURE en %C" | |
41020 | ||
41021 | -#: fortran/decl.c:8126 | |
41022 | +#: fortran/decl.c:8125 | |
41023 | #, gcc-internal-format, gfc-internal-format | |
41024 | msgid "'=> target' is invalid for DEFERRED binding at %C" | |
41025 | msgstr "'=> objetivo' es inválido para el enlace DEFERRED en %C" | |
41026 | ||
41027 | -#: fortran/decl.c:8132 | |
41028 | +#: fortran/decl.c:8131 | |
41029 | #, gcc-internal-format, gfc-internal-format | |
41030 | msgid "'::' needed in PROCEDURE binding with explicit target at %C" | |
41031 | msgstr "Se necesita '::' en el enlace PROCEDURE con objetivo explícito en %C" | |
41032 | ||
41033 | -#: fortran/decl.c:8142 | |
41034 | +#: fortran/decl.c:8141 | |
41035 | #, gcc-internal-format, gfc-internal-format | |
41036 | msgid "Expected binding target after '=>' at %C" | |
41037 | msgstr "Se esperaba un objetivo de enlace después de '=>' en %C" | |
41038 | ||
41039 | -#: fortran/decl.c:8159 | |
41040 | +#: fortran/decl.c:8158 | |
41041 | #, gcc-internal-format, gfc-internal-format | |
41042 | msgid "Type '%s' containing DEFERRED binding at %C is not ABSTRACT" | |
41043 | msgstr "El tipo '%s' que contiene el enlace DEFERRED en %C no es ABSTRACT" | |
41044 | ||
41045 | -#: fortran/decl.c:8170 | |
41046 | +#: fortran/decl.c:8169 | |
41047 | #, gcc-internal-format, gfc-internal-format | |
41048 | msgid "There is already a procedure with binding name '%s' for the derived type '%s' at %C" | |
41049 | msgstr "Ya existe un procedimiento con nombre de enlazado '%s' para el tipo derivado '%s' en %C" | |
41050 | ||
41051 | -#: fortran/decl.c:8219 | |
41052 | +#: fortran/decl.c:8218 | |
41053 | #, gcc-internal-format, gfc-internal-format | |
41054 | msgid "GENERIC at %C must be inside a derived-type CONTAINS" | |
41055 | msgstr "GENERIC en %C debe estar dentro de un tipo derivado CONTAINS" | |
41056 | ||
41057 | -#: fortran/decl.c:8239 | |
41058 | +#: fortran/decl.c:8238 | |
41059 | #, gcc-internal-format, gfc-internal-format | |
41060 | msgid "Expected '::' at %C" | |
41061 | msgstr "Se esperaba '::' en %C" | |
41062 | ||
41063 | -#: fortran/decl.c:8251 | |
41064 | +#: fortran/decl.c:8250 | |
41065 | #, gcc-internal-format, gfc-internal-format | |
41066 | msgid "Expected generic name or operator descriptor at %C" | |
41067 | msgstr "Se esperaba un nombre genérico o un descriptor de operador en %C" | |
41068 | ||
41069 | -#: fortran/decl.c:8277 | |
41070 | +#: fortran/decl.c:8276 | |
41071 | #, gcc-internal-format, gfc-internal-format | |
41072 | msgid "Expected '=>' at %C" | |
41073 | msgstr "Se esperaba '=>' en %C" | |
41074 | ||
41075 | -#: fortran/decl.c:8319 | |
41076 | +#: fortran/decl.c:8318 | |
41077 | #, gcc-internal-format, gfc-internal-format | |
41078 | msgid "There's already a non-generic procedure with binding name '%s' for the derived type '%s' at %C" | |
41079 | msgstr "Ya existe un procedimiento que no es genérico con el nombre de enlace '%s' para el tipo derivado '%s' en %C" | |
41080 | ||
41081 | -#: fortran/decl.c:8327 | |
41082 | +#: fortran/decl.c:8326 | |
41083 | #, gcc-internal-format, gfc-internal-format | |
41084 | msgid "Binding at %C must have the same access as already defined binding '%s'" | |
41085 | msgstr "El enlace en %C debe tener el mismo acceso que el enlace '%s' que ya está definido" | |
41086 | ||
41087 | -#: fortran/decl.c:8376 | |
41088 | +#: fortran/decl.c:8375 | |
41089 | #, gcc-internal-format, gfc-internal-format | |
41090 | msgid "Expected specific binding name at %C" | |
41091 | msgstr "Se esperaba un nombre de enlace específico en %C" | |
41092 | ||
41093 | -#: fortran/decl.c:8386 | |
41094 | +#: fortran/decl.c:8385 | |
41095 | #, gcc-internal-format, gfc-internal-format | |
41096 | msgid "'%s' already defined as specific binding for the generic '%s' at %C" | |
41097 | msgstr "Ya se definió '%s' como un enlace específico para el genérico '%s' en %C" | |
41098 | ||
41099 | -#: fortran/decl.c:8402 | |
41100 | +#: fortran/decl.c:8403 | |
41101 | #, gcc-internal-format, gfc-internal-format | |
41102 | msgid "Junk after GENERIC binding at %C" | |
41103 | msgstr "Basura después del enlace GENERIC en %C" | |
41104 | ||
41105 | -#: fortran/decl.c:8437 | |
41106 | +#: fortran/decl.c:8438 | |
41107 | #, gcc-internal-format, gfc-internal-format | |
41108 | msgid "FINAL declaration at %C must be inside a derived type CONTAINS section" | |
41109 | msgstr "La declaración FINAL en %C debe estar dentro de una sección de tipo derivado CONTAINS" | |
41110 | ||
41111 | -#: fortran/decl.c:8448 | |
41112 | +#: fortran/decl.c:8449 | |
41113 | #, gcc-internal-format, gfc-internal-format | |
41114 | msgid "Derived type declaration with FINAL at %C must be in the specification part of a MODULE" | |
41115 | msgstr "La declaración de tipo derivado con FINAL en %C debe estar en la parte de especificación de un MODULE" | |
41116 | ||
41117 | -#: fortran/decl.c:8470 | |
41118 | +#: fortran/decl.c:8471 | |
41119 | #, gcc-internal-format, gfc-internal-format | |
41120 | msgid "Empty FINAL at %C" | |
41121 | msgstr "FINAL vacío en %C" | |
41122 | ||
41123 | -#: fortran/decl.c:8477 | |
41124 | +#: fortran/decl.c:8478 | |
41125 | #, gcc-internal-format, gfc-internal-format | |
41126 | msgid "Expected module procedure name at %C" | |
41127 | msgstr "Se esperaba un nombre de procedimiento de módulo en %C" | |
41128 | ||
41129 | -#: fortran/decl.c:8487 | |
41130 | +#: fortran/decl.c:8488 | |
41131 | #, gcc-internal-format, gfc-internal-format | |
41132 | msgid "Expected ',' at %C" | |
41133 | msgstr "Se esperaba ',' en %C" | |
41134 | ||
41135 | -#: fortran/decl.c:8493 | |
41136 | +#: fortran/decl.c:8494 | |
41137 | #, gcc-internal-format, gfc-internal-format | |
41138 | msgid "Unknown procedure name \"%s\" at %C" | |
41139 | msgstr "Nombre de procedimiento \"%s\" desconocido en %C" | |
41140 | ||
41141 | -#: fortran/decl.c:8507 | |
41142 | +#: fortran/decl.c:8508 | |
41143 | #, gcc-internal-format, gfc-internal-format | |
41144 | msgid "'%s' at %C is already defined as FINAL procedure!" | |
41145 | msgstr "¡'%s' en %C ya se había definido como un procedimiento FINAL!" | |
41146 | ||
41147 | -#: fortran/decl.c:8576 | |
41148 | +#: fortran/decl.c:8577 | |
41149 | #, gcc-internal-format, gfc-internal-format | |
41150 | msgid "Unknown attribute in !GCC$ ATTRIBUTES statement at %C" | |
41151 | msgstr "Atributo desconocido en la declaración !GCC$ ATTRIBUTES en %C" | |
41152 | ||
41153 | -#: fortran/decl.c:8623 | |
41154 | +#: fortran/decl.c:8624 | |
41155 | #, gcc-internal-format, gfc-internal-format | |
41156 | msgid "Syntax error in !GCC$ ATTRIBUTES statement at %C" | |
41157 | msgstr "Error sintáctico en la declaración !GCC$ ATTRIBUTES en %C" | |
41158 | @@ -36998,27 +37209,27 @@ | |
41159 | msgid "Extension: BOZ literal at %L used to initialize non-integer variable '%s'" | |
41160 | msgstr "Extensión: se usa la literal BOZ en %L para inicializar la variable '%s' que no es entera" | |
41161 | ||
41162 | -#: fortran/expr.c:3177 fortran/resolve.c:9109 | |
41163 | +#: fortran/expr.c:3177 fortran/resolve.c:9096 | |
41164 | #, gcc-internal-format, gfc-internal-format | |
41165 | msgid "Extension: BOZ literal at %L outside a DATA statement and outside INT/REAL/DBLE/CMPLX" | |
41166 | msgstr "Extensión: la literal BOZ en %L está fuera de una declaración DATA y fuera de INT/REAL/DBLE/CMPLX" | |
41167 | ||
41168 | -#: fortran/expr.c:3187 fortran/resolve.c:9119 | |
41169 | +#: fortran/expr.c:3187 fortran/resolve.c:9106 | |
41170 | #, gcc-internal-format, gfc-internal-format | |
41171 | msgid "BOZ literal at %L is bitwise transferred non-integer symbol '%s'" | |
41172 | msgstr "La literal BOZ en %L se transfiere por bits al símbolo '%s' que no es entero" | |
41173 | ||
41174 | -#: fortran/expr.c:3195 fortran/resolve.c:9128 | |
41175 | +#: fortran/expr.c:3195 fortran/resolve.c:9115 | |
41176 | #, gcc-internal-format, gfc-internal-format | |
41177 | msgid "Arithmetic underflow of bit-wise transferred BOZ at %L. This check can be disabled with the option -fno-range-check" | |
41178 | msgstr "Desborde aritmético por debajo del BOZ transferido por bits en %L. Esta revisión se puede desactivar con la opción -fno-range-check" | |
41179 | ||
41180 | -#: fortran/expr.c:3199 fortran/resolve.c:9132 | |
41181 | +#: fortran/expr.c:3199 fortran/resolve.c:9119 | |
41182 | #, gcc-internal-format, gfc-internal-format | |
41183 | msgid "Arithmetic overflow of bit-wise transferred BOZ at %L. This check can be disabled with the option -fno-range-check" | |
41184 | msgstr "Desborde aritmético del BOZ transferido por bits en %L. Esta revisión se puede desactivar con la opción -fno-range-check" | |
41185 | ||
41186 | -#: fortran/expr.c:3203 fortran/resolve.c:9136 | |
41187 | +#: fortran/expr.c:3203 fortran/resolve.c:9123 | |
41188 | #, gcc-internal-format, gfc-internal-format | |
41189 | msgid "Arithmetic NaN of bit-wise transferred BOZ at %L. This check can be disabled with the option -fno-range-check" | |
41190 | msgstr "NaN aritmético del BOZ transferido por bits en %L. Esta revisión se puede desactivar con la opción -fno-range-check" | |
41191 | @@ -37198,72 +37409,72 @@ | |
41192 | msgid "Procedure pointer initialization target at %L may not be a procedure pointer" | |
41193 | msgstr "El objetivo de inicialización de puntero a procedimiento en %L tal vez no es un puntero a procedimiento" | |
41194 | ||
41195 | -#: fortran/expr.c:4587 | |
41196 | +#: fortran/expr.c:4593 | |
41197 | #, gcc-internal-format, gfc-internal-format | |
41198 | msgid "Fortran 2008: Pointer functions in variable definition context (%s) at %L" | |
41199 | msgstr "Fortran 2008: Funciones puntero en un contexto de definición variable (%s) en %L" | |
41200 | ||
41201 | -#: fortran/expr.c:4595 | |
41202 | +#: fortran/expr.c:4601 | |
41203 | #, gcc-internal-format, gfc-internal-format | |
41204 | msgid "Non-variable expression in variable definition context (%s) at %L" | |
41205 | msgstr "Expresión que no es variable en el contexto de definición variable (%s) en %L" | |
41206 | ||
41207 | -#: fortran/expr.c:4603 | |
41208 | +#: fortran/expr.c:4609 | |
41209 | #, gcc-internal-format, gfc-internal-format | |
41210 | msgid "Named constant '%s' in variable definition context (%s) at %L" | |
41211 | msgstr "Constante nombrada '%s' en el contexto de definición variable (%s) en %L" | |
41212 | ||
41213 | -#: fortran/expr.c:4612 | |
41214 | +#: fortran/expr.c:4618 | |
41215 | #, gcc-internal-format, gfc-internal-format | |
41216 | msgid "'%s' in variable definition context (%s) at %L is not a variable" | |
41217 | msgstr "'%s' en el contexto de definición variable (%s) en %L no es una variable" | |
41218 | ||
41219 | -#: fortran/expr.c:4623 | |
41220 | +#: fortran/expr.c:4629 | |
41221 | #, gcc-internal-format, gfc-internal-format | |
41222 | msgid "Non-POINTER in pointer association context (%s) at %L" | |
41223 | msgstr "Uno que no es POINTER en el contexto de asociación de puntero (%s) en %L" | |
41224 | ||
41225 | -#: fortran/expr.c:4636 | |
41226 | +#: fortran/expr.c:4642 | |
41227 | #, gcc-internal-format, gfc-internal-format | |
41228 | msgid "LOCK_TYPE in variable definition context (%s) at %L" | |
41229 | msgstr "LOCK_TYPE en el contexto de definición variable (%s) en %L" | |
41230 | ||
41231 | -#: fortran/expr.c:4658 | |
41232 | +#: fortran/expr.c:4664 | |
41233 | #, gcc-internal-format, gfc-internal-format | |
41234 | msgid "Dummy argument '%s' with INTENT(IN) in pointer association context (%s) at %L" | |
41235 | msgstr "Argumento dummy '%s' con INTENT(IN) en el contexto de asociación de puntero (%s) en %L" | |
41236 | ||
41237 | -#: fortran/expr.c:4666 | |
41238 | +#: fortran/expr.c:4672 | |
41239 | #, gcc-internal-format, gfc-internal-format | |
41240 | msgid "Dummy argument '%s' with INTENT(IN) in variable definition context (%s) at %L" | |
41241 | msgstr "Argumento dummy '%s' con INTENT(IN) en el contexto de definición de variable (%s) en %L" | |
41242 | ||
41243 | -#: fortran/expr.c:4679 | |
41244 | +#: fortran/expr.c:4685 | |
41245 | #, gcc-internal-format, gfc-internal-format | |
41246 | msgid "Variable '%s' is PROTECTED and can not appear in a pointer association context (%s) at %L" | |
41247 | msgstr "La variable '%s' es PROTECTED y no puede aparecer en un contexto de asociación de puntero (%s) en %L" | |
41248 | ||
41249 | -#: fortran/expr.c:4687 | |
41250 | +#: fortran/expr.c:4693 | |
41251 | #, gcc-internal-format, gfc-internal-format | |
41252 | msgid "Variable '%s' is PROTECTED and can not appear in a variable definition context (%s) at %L" | |
41253 | msgstr "La variable '%s' es PROTECTED y no puede aparecer en un contexto de definición variable (%s) en %L" | |
41254 | ||
41255 | -#: fortran/expr.c:4699 | |
41256 | +#: fortran/expr.c:4705 | |
41257 | #, gcc-internal-format, gfc-internal-format | |
41258 | msgid "Variable '%s' can not appear in a variable definition context (%s) at %L in PURE procedure" | |
41259 | msgstr "La variable '%s' no puede aparecer en un contexto de definición variable (%s) en %L en el procedimiento PURE" | |
41260 | ||
41261 | -#: fortran/expr.c:4758 | |
41262 | +#: fortran/expr.c:4764 | |
41263 | #, gcc-internal-format, gfc-internal-format | |
41264 | msgid "'%s' at %L associated to vector-indexed target can not be used in a variable definition context (%s)" | |
41265 | msgstr "No se puede usar '%s' en %L asociado al objetivo con índice vectorial en un contexto de definición variable (%s)" | |
41266 | ||
41267 | -#: fortran/expr.c:4762 | |
41268 | +#: fortran/expr.c:4768 | |
41269 | #, gcc-internal-format, gfc-internal-format | |
41270 | msgid "'%s' at %L associated to expression can not be used in a variable definition context (%s)" | |
41271 | msgstr "No se puede usar '%s' en %L asociado a una expresión en un contexto de definición variable (%s)" | |
41272 | ||
41273 | -#: fortran/expr.c:4774 | |
41274 | +#: fortran/expr.c:4780 | |
41275 | #, gcc-internal-format, gfc-internal-format | |
41276 | msgid "Associate-name '%s' can not appear in a variable definition context (%s) at %L because its target at %L can not, either" | |
41277 | msgstr "El nombre asociado '%s' no puede aparecer en un contexto de definición variable (%s) en %L porque su obtetivo en %L tampoco puede aparecer" | |
41278 | @@ -37279,7 +37490,7 @@ | |
41279 | msgstr "no se puede abrir el fichero de entrada: %s" | |
41280 | ||
41281 | #: fortran/frontend-passes.c:334 fortran/trans-array.c:1024 | |
41282 | -#: fortran/trans-array.c:5756 fortran/trans-array.c:7002 | |
41283 | +#: fortran/trans-array.c:5755 fortran/trans-array.c:7001 | |
41284 | #: fortran/trans-intrinsic.c:5422 | |
41285 | #, gcc-internal-format, gfc-internal-format | |
41286 | msgid "Creating array temporary at %L" | |
41287 | @@ -37395,12 +37606,12 @@ | |
41288 | msgid "Second argument of defined assignment at %L must be INTENT(IN)" | |
41289 | msgstr "El segundo argumento de la asignación definida en %L debe ser INTENT(IN)" | |
41290 | ||
41291 | -#: fortran/interface.c:705 fortran/resolve.c:13770 | |
41292 | +#: fortran/interface.c:705 fortran/resolve.c:13758 | |
41293 | #, gcc-internal-format, gfc-internal-format | |
41294 | msgid "First argument of operator interface at %L must be INTENT(IN)" | |
41295 | msgstr "El primer argumento de la interfaz de operador en %L debe ser INTENT(IN)" | |
41296 | ||
41297 | -#: fortran/interface.c:712 fortran/resolve.c:13788 | |
41298 | +#: fortran/interface.c:712 fortran/resolve.c:13776 | |
41299 | #, gcc-internal-format, gfc-internal-format | |
41300 | msgid "Second argument of operator interface at %L must be INTENT(IN)" | |
41301 | msgstr "El segundo argumento de la interfaz de operador en %L debe ser INTENT(IN)" | |
41302 | @@ -37430,447 +37641,447 @@ | |
41303 | msgid "In %s at %L procedures must be all FUNCTIONs as the generic name is also the name of a derived type" | |
41304 | msgstr "En %s en %L los procedimientos deben ser puras FUNCTIONs ya que el nombre genérico es también el nombre de un tipo derivado" | |
41305 | ||
41306 | -#: fortran/interface.c:1296 | |
41307 | +#: fortran/interface.c:1297 | |
41308 | #, gcc-internal-format, gfc-internal-format | |
41309 | -msgid "Extension: Internal procedure '%s' in %s at %L" | |
41310 | -msgstr "Extensión: Procedimiento interno '%s' en %s en %L" | |
41311 | +msgid "Fortran 2008: Internal procedure '%s' in %s at %L" | |
41312 | +msgstr "Fortran 2008: Procedimiento interno '%s' en %s en %L" | |
41313 | ||
41314 | -#: fortran/interface.c:1353 fortran/interface.c:1357 | |
41315 | +#: fortran/interface.c:1354 fortran/interface.c:1358 | |
41316 | #, gcc-internal-format, gfc-internal-format | |
41317 | msgid "Ambiguous interfaces '%s' and '%s' in %s at %L" | |
41318 | msgstr "Las interfaces '%s' y '%s' son ambiguas en %s en %L" | |
41319 | ||
41320 | -#: fortran/interface.c:1361 | |
41321 | +#: fortran/interface.c:1362 | |
41322 | #, gcc-internal-format, gfc-internal-format | |
41323 | msgid "Although not referenced, '%s' has ambiguous interfaces at %L" | |
41324 | msgstr "Aunque no esté referenciado, '%s' tiene interfaces ambiguas en %L" | |
41325 | ||
41326 | -#: fortran/interface.c:1395 | |
41327 | +#: fortran/interface.c:1396 | |
41328 | #, gcc-internal-format, gfc-internal-format | |
41329 | msgid "'%s' at %L is not a module procedure" | |
41330 | msgstr "'%s' en %L no es un procedimiento de módulo" | |
41331 | ||
41332 | -#: fortran/interface.c:1605 | |
41333 | +#: fortran/interface.c:1606 | |
41334 | #, gcc-internal-format, gfc-internal-format | |
41335 | msgid "Rank mismatch in argument '%s' at %L (scalar and rank-%d)" | |
41336 | msgstr "No coincide el rango en el argumento '%s' en %L (escalar y rango %d)" | |
41337 | ||
41338 | -#: fortran/interface.c:1610 | |
41339 | +#: fortran/interface.c:1611 | |
41340 | #, gcc-internal-format, gfc-internal-format | |
41341 | msgid "Rank mismatch in argument '%s' at %L (rank-%d and scalar)" | |
41342 | msgstr "No coincide el rango en el argumento '%s' en %L (rango %d y escalar)" | |
41343 | ||
41344 | -#: fortran/interface.c:1615 | |
41345 | +#: fortran/interface.c:1616 | |
41346 | #, gcc-internal-format, gfc-internal-format | |
41347 | msgid "Rank mismatch in argument '%s' at %L (rank-%d and rank-%d)" | |
41348 | msgstr "No coincide el rango en el argumento '%s' en %L (rango %d y rango %d)" | |
41349 | ||
41350 | -#: fortran/interface.c:1657 | |
41351 | +#: fortran/interface.c:1658 | |
41352 | #, gcc-internal-format, gfc-internal-format | |
41353 | msgid "Invalid procedure argument at %L" | |
41354 | msgstr "Argumento de procedimiento inválido en %L" | |
41355 | ||
41356 | -#: fortran/interface.c:1665 | |
41357 | +#: fortran/interface.c:1666 | |
41358 | #, gcc-internal-format, gfc-internal-format | |
41359 | msgid "Interface mismatch in dummy procedure '%s' at %L: %s" | |
41360 | msgstr "La interfaz no coincide en el procedimiento dummy '%s' en %L: %s" | |
41361 | ||
41362 | -#: fortran/interface.c:1690 | |
41363 | +#: fortran/interface.c:1691 | |
41364 | #, gcc-internal-format, gfc-internal-format | |
41365 | msgid "Actual argument to contiguous pointer dummy '%s' at %L must be simply contigous" | |
41366 | msgstr "El argumento actual para el puntero dummy contiguo '%s' en %L debe ser simplemente contiguo" | |
41367 | ||
41368 | -#: fortran/interface.c:1703 | |
41369 | +#: fortran/interface.c:1704 | |
41370 | #, gcc-internal-format, gfc-internal-format | |
41371 | msgid "Type mismatch in argument '%s' at %L; passed %s to %s" | |
41372 | msgstr "No coincide el tipo en el argumento '%s' en %L; se pasa %s a %s" | |
41373 | ||
41374 | -#: fortran/interface.c:1717 | |
41375 | +#: fortran/interface.c:1718 | |
41376 | #, gcc-internal-format, gfc-internal-format | |
41377 | msgid "Actual argument to '%s' at %L must be polymorphic" | |
41378 | msgstr "El argumento actual para '%s' en %L debe ser polimórfico" | |
41379 | ||
41380 | -#: fortran/interface.c:1725 | |
41381 | +#: fortran/interface.c:1726 | |
41382 | #, gcc-internal-format, gfc-internal-format | |
41383 | msgid "Actual argument to '%s' at %L must have the same declared type" | |
41384 | msgstr "El argumento actual para '%s' en %L debe tener el mismo tipo declarado" | |
41385 | ||
41386 | -#: fortran/interface.c:1734 | |
41387 | +#: fortran/interface.c:1735 | |
41388 | #, gcc-internal-format, gfc-internal-format | |
41389 | msgid "Actual argument to '%s' at %L must be a coarray" | |
41390 | msgstr "El argumento actual para '%s' en %L debe ser una comatriz" | |
41391 | ||
41392 | -#: fortran/interface.c:1753 | |
41393 | +#: fortran/interface.c:1754 | |
41394 | #, gcc-internal-format, gfc-internal-format | |
41395 | msgid "Corank mismatch in argument '%s' at %L (%d and %d)" | |
41396 | msgstr "No coincide el corango en el argumento '%s' en %L (%d y %d)" | |
41397 | ||
41398 | -#: fortran/interface.c:1770 | |
41399 | +#: fortran/interface.c:1771 | |
41400 | #, gcc-internal-format, gfc-internal-format | |
41401 | msgid "Actual argument to '%s' at %L must be simply contiguous" | |
41402 | msgstr "El argumento actual para '%s' en %L debe ser simplemente contiguo" | |
41403 | ||
41404 | -#: fortran/interface.c:1784 | |
41405 | +#: fortran/interface.c:1785 | |
41406 | #, gcc-internal-format, gfc-internal-format | |
41407 | msgid "Actual argument to non-INTENT(INOUT) dummy '%s' at %L, which is LOCK_TYPE or has a LOCK_TYPE component" | |
41408 | msgstr "Argumento actual para el dummy que no es INTENT(OUT) '%s' en %L, el cual es LOCK_TYPE o tiene un componente LOCK_TYPE" | |
41409 | ||
41410 | -#: fortran/interface.c:1801 | |
41411 | +#: fortran/interface.c:1802 | |
41412 | #, gcc-internal-format, gfc-internal-format | |
41413 | msgid "Dummy argument '%s' has to be a pointer or assumed-shape array without CONTIGUOUS attribute - as actual argument at %L is not simply contiguous and both are ASYNCHRONOUS or VOLATILE" | |
41414 | msgstr "El argumento dummy '%s' tiene que ser un puntero o una matriz de tamaño asumida sin atributo CONTIGUOUS - porque el argumento actual en %L no es simplemente contiguo y ambos son ASYNCHRONOUS o VOLATILE" | |
41415 | ||
41416 | -#: fortran/interface.c:1814 | |
41417 | +#: fortran/interface.c:1815 | |
41418 | #, gcc-internal-format, gfc-internal-format | |
41419 | msgid "Passing coarray at %L to allocatable, noncoarray, INTENT(OUT) dummy argument '%s'" | |
41420 | msgstr "Se pasa una comatriz en %L al argumento dummy INTENT(OUT) '%s', que no es comatriz, alojable" | |
41421 | ||
41422 | -#: fortran/interface.c:1821 | |
41423 | +#: fortran/interface.c:1822 | |
41424 | #, gcc-internal-format, gfc-internal-format | |
41425 | msgid "Passing coarray at %L to allocatable, noncoarray dummy argument '%s', which is invalid if the allocation status is modified" | |
41426 | msgstr "Se pasa una comatriz en %L al argumento dummy '%s' que no es comatriz, el cual es inválido si se modifica el estado de alojamiento" | |
41427 | ||
41428 | -#: fortran/interface.c:1883 | |
41429 | +#: fortran/interface.c:1884 | |
41430 | #, gcc-internal-format, gfc-internal-format | |
41431 | msgid "Polymorphic scalar passed to array dummy argument '%s' at %L" | |
41432 | msgstr "Se pasó un escalar polimórfico al argumento dummy de matriz '%s' en %L" | |
41433 | ||
41434 | -#: fortran/interface.c:1892 | |
41435 | +#: fortran/interface.c:1893 | |
41436 | #, gcc-internal-format, gfc-internal-format | |
41437 | msgid "Element of assumed-shaped or pointer array passed to array dummy argument '%s' at %L" | |
41438 | msgstr "Se pasó un elemento de forma asumida o puntero a matriz al argumento dummy de matriz '%s' en %L" | |
41439 | ||
41440 | -#: fortran/interface.c:1904 | |
41441 | +#: fortran/interface.c:1905 | |
41442 | #, gcc-internal-format, gfc-internal-format | |
41443 | msgid "Extension: Scalar non-default-kind, non-C_CHAR-kind CHARACTER actual argument with array dummy argument '%s' at %L" | |
41444 | msgstr "Extensión: Argumento actual CHARACTER de género diferente a C_CHAR, sin género por defecto escalar con argumento dummy de matriz '%s' en %L" | |
41445 | ||
41446 | -#: fortran/interface.c:1912 | |
41447 | +#: fortran/interface.c:1913 | |
41448 | #, gcc-internal-format, gfc-internal-format | |
41449 | msgid "Fortran 2003: Scalar CHARACTER actual argument with array dummy argument '%s' at %L" | |
41450 | msgstr "Fortran 2003: Argumento actual CHARACTER escalar con argumento dummy de matriz '%s' en %L" | |
41451 | ||
41452 | -#: fortran/interface.c:2212 | |
41453 | +#: fortran/interface.c:2213 | |
41454 | #, gcc-internal-format, gfc-internal-format | |
41455 | msgid "Keyword argument '%s' at %L is not in the procedure" | |
41456 | msgstr "El argumento de palabra clave '%s' en %L no está en el procedimiento" | |
41457 | ||
41458 | -#: fortran/interface.c:2220 | |
41459 | +#: fortran/interface.c:2221 | |
41460 | #, gcc-internal-format, gfc-internal-format | |
41461 | msgid "Keyword argument '%s' at %L is already associated with another actual argument" | |
41462 | msgstr "El argumento de palabra clave '%s' en %L ya está asociado con otro argumento actual" | |
41463 | ||
41464 | -#: fortran/interface.c:2230 | |
41465 | +#: fortran/interface.c:2231 | |
41466 | #, gcc-internal-format, gfc-internal-format | |
41467 | msgid "More actual than formal arguments in procedure call at %L" | |
41468 | msgstr "Más argumentos actuales que formales en la llamada a procedimento en %L" | |
41469 | ||
41470 | -#: fortran/interface.c:2242 fortran/interface.c:2568 | |
41471 | +#: fortran/interface.c:2243 fortran/interface.c:2569 | |
41472 | #, gcc-internal-format, gfc-internal-format | |
41473 | msgid "Missing alternate return spec in subroutine call at %L" | |
41474 | msgstr "Falta la especificación de devolución alternativa en la llamada a subrutina en %L" | |
41475 | ||
41476 | -#: fortran/interface.c:2250 | |
41477 | +#: fortran/interface.c:2251 | |
41478 | #, gcc-internal-format, gfc-internal-format | |
41479 | msgid "Unexpected alternate return spec in subroutine call at %L" | |
41480 | msgstr "Especificación de devolución alternativa inesperada en la llamada a subrutina en %L" | |
41481 | ||
41482 | -#: fortran/interface.c:2260 | |
41483 | +#: fortran/interface.c:2261 | |
41484 | #, gcc-internal-format, gfc-internal-format | |
41485 | msgid "Unexpected NULL() intrinsic at %L to dummy '%s'" | |
41486 | msgstr "Intrínseco NULL inesperado en %L para el dummy '%s'" | |
41487 | ||
41488 | -#: fortran/interface.c:2263 | |
41489 | +#: fortran/interface.c:2264 | |
41490 | #, gcc-internal-format, gfc-internal-format | |
41491 | msgid "Fortran 2008: Null pointer at %L to non-pointer dummy '%s'" | |
41492 | msgstr "Fortran 2008: Puntero nulo en %L a un dummy '%s' que no es puntero" | |
41493 | ||
41494 | -#: fortran/interface.c:2287 | |
41495 | +#: fortran/interface.c:2288 | |
41496 | #, gcc-internal-format, gfc-internal-format | |
41497 | msgid "Character length mismatch (%ld/%ld) between actual argument and pointer or allocatable dummy argument '%s' at %L" | |
41498 | msgstr "No coincide la longitud de carácter (%ld/%ld) entre el argumento actual y el argumento dummy puntero o alojable '%s' en %L" | |
41499 | ||
41500 | -#: fortran/interface.c:2294 | |
41501 | +#: fortran/interface.c:2295 | |
41502 | #, gcc-internal-format, gfc-internal-format | |
41503 | msgid "Character length mismatch (%ld/%ld) between actual argument and assumed-shape dummy argument '%s' at %L" | |
41504 | msgstr "No coincide la longitud de carácter (%ld/%ld) entre el argumento actual y el argumento dummy de forma asumida '%s' en %L" | |
41505 | ||
41506 | -#: fortran/interface.c:2308 | |
41507 | +#: fortran/interface.c:2309 | |
41508 | #, gcc-internal-format, gfc-internal-format | |
41509 | -msgid "Actual argument argument at %L to allocatable or pointer dummy argument '%s' must have a deferred length type parameter if and only if the dummy has one" | |
41510 | -msgstr "El argumento actual del argumento en %L para el argumento alojable o dummy puntero '%s' debe tener un parámetro de tipo de longitud diferido si y sólo si el dummy tiene uno" | |
41511 | +msgid "Actual argument at %L to allocatable or pointer dummy argument '%s' must have a deferred length type parameter if and only if the dummy has one" | |
41512 | +msgstr "El argumento actual en %L para el argumento alojable o dummy puntero '%s' debe tener un parámetro de tipo de longitud diferido si y sólo si el dummy tiene uno" | |
41513 | ||
41514 | -#: fortran/interface.c:2325 | |
41515 | +#: fortran/interface.c:2326 | |
41516 | #, gcc-internal-format, gfc-internal-format | |
41517 | msgid "Character length of actual argument shorter than of dummy argument '%s' (%lu/%lu) at %L" | |
41518 | msgstr "La longitud del carácter del argumento actual es más corta que la del argumento dummy '%s' (%lu/%lu) en %L" | |
41519 | ||
41520 | -#: fortran/interface.c:2330 | |
41521 | +#: fortran/interface.c:2331 | |
41522 | #, gcc-internal-format, gfc-internal-format | |
41523 | msgid "Actual argument contains too few elements for dummy argument '%s' (%lu/%lu) at %L" | |
41524 | msgstr "El argumento actual contiene muy pocos elementos para el argumento dummy '%s' (%lu/%lu) en %L" | |
41525 | ||
41526 | -#: fortran/interface.c:2349 | |
41527 | +#: fortran/interface.c:2350 | |
41528 | #, gcc-internal-format, gfc-internal-format | |
41529 | msgid "Expected a procedure pointer for argument '%s' at %L" | |
41530 | msgstr "Se esperaba un puntero procedimiento para el argumento '%s' en %L" | |
41531 | ||
41532 | -#: fortran/interface.c:2361 | |
41533 | +#: fortran/interface.c:2362 | |
41534 | #, gcc-internal-format, gfc-internal-format | |
41535 | msgid "Expected a procedure for argument '%s' at %L" | |
41536 | msgstr "Falta un procedimiento para el argumento '%s' en %L" | |
41537 | ||
41538 | -#: fortran/interface.c:2375 | |
41539 | +#: fortran/interface.c:2376 | |
41540 | #, gcc-internal-format, gfc-internal-format | |
41541 | msgid "Actual argument for '%s' cannot be an assumed-size array at %L" | |
41542 | msgstr "El argumento actual para '%s' no puede ser una matriz de tamaño asumido en %L" | |
41543 | ||
41544 | -#: fortran/interface.c:2384 | |
41545 | +#: fortran/interface.c:2385 | |
41546 | #, gcc-internal-format, gfc-internal-format | |
41547 | msgid "Actual argument for '%s' must be a pointer at %L" | |
41548 | msgstr "El argumento actual para '%s' debe ser un puntero en %L" | |
41549 | ||
41550 | -#: fortran/interface.c:2394 | |
41551 | +#: fortran/interface.c:2395 | |
41552 | #, gcc-internal-format, gfc-internal-format | |
41553 | msgid "Fortran 2008: Non-pointer actual argument at %L to pointer dummy '%s'" | |
41554 | msgstr "Fortran 2008: El argumento actual que no es puntero en %L para el puntero dummy '%s'" | |
41555 | ||
41556 | -#: fortran/interface.c:2404 | |
41557 | +#: fortran/interface.c:2405 | |
41558 | #, gcc-internal-format, gfc-internal-format | |
41559 | msgid "Coindexed actual argument at %L to pointer dummy '%s'" | |
41560 | msgstr "Argumento actual coindizado en %L para el puntero dummy '%s'" | |
41561 | ||
41562 | -#: fortran/interface.c:2417 | |
41563 | +#: fortran/interface.c:2418 | |
41564 | #, gcc-internal-format, gfc-internal-format | |
41565 | msgid "Coindexed actual argument at %L to allocatable dummy '%s' requires INTENT(IN)" | |
41566 | msgstr "El argumento actual coindizado en %L para el dummy alojable '%s' requiere INTENT(IN)" | |
41567 | ||
41568 | -#: fortran/interface.c:2431 | |
41569 | +#: fortran/interface.c:2432 | |
41570 | #, gcc-internal-format, gfc-internal-format | |
41571 | -msgid "Coindexed ASYNCHRONOUS or VOLATILE actual argument at at %L requires that dummy %s' has neither ASYNCHRONOUS nor VOLATILE" | |
41572 | +msgid "Coindexed ASYNCHRONOUS or VOLATILE actual argument at %L requires that dummy '%s' has neither ASYNCHRONOUS nor VOLATILE" | |
41573 | msgstr "El argumento actual coindizado ASYNCHRONOUS o VOLATILE en %L requiere que el dummy '%s' no tenga ASYNCHRONOUS ni VOLATILE" | |
41574 | ||
41575 | -#: fortran/interface.c:2445 | |
41576 | +#: fortran/interface.c:2446 | |
41577 | #, gcc-internal-format, gfc-internal-format | |
41578 | msgid "Coindexed actual argument at %L with allocatable ultimate component to dummy '%s' requires either VALUE or INTENT(IN)" | |
41579 | msgstr "El argumento actual coindizado en %L con componente último alojable para el dummy '%s' requiere uno de VALUE o INTENT(IN)" | |
41580 | ||
41581 | -#: fortran/interface.c:2457 | |
41582 | +#: fortran/interface.c:2458 | |
41583 | #, gcc-internal-format, gfc-internal-format | |
41584 | msgid "Actual CLASS array argument for '%s' must be a full array at %L" | |
41585 | msgstr "El argumento de la matriz CLASS actual para '%s' debe ser una matriz completa en %L" | |
41586 | ||
41587 | -#: fortran/interface.c:2467 | |
41588 | +#: fortran/interface.c:2468 | |
41589 | #, gcc-internal-format, gfc-internal-format | |
41590 | msgid "Actual argument for '%s' must be ALLOCATABLE at %L" | |
41591 | msgstr "El argumento actual para '%s' debe ser ALLOCATABLE en %L" | |
41592 | ||
41593 | -#: fortran/interface.c:2496 | |
41594 | +#: fortran/interface.c:2497 | |
41595 | #, gcc-internal-format, gfc-internal-format | |
41596 | msgid "Array-section actual argument with vector subscripts at %L is incompatible with INTENT(OUT), INTENT(INOUT), VOLATILE or ASYNCHRONOUS attribute of the dummy argument '%s'" | |
41597 | msgstr "El argumento actual de sección de matriz con subíndices vectoriales en %L es incompatible con el atributo INTENT(OUT), INTENT(INOUT), VOLATILE o ASYNCHRONOUS del argumento dummy '%s'" | |
41598 | ||
41599 | -#: fortran/interface.c:2514 | |
41600 | +#: fortran/interface.c:2515 | |
41601 | #, gcc-internal-format, gfc-internal-format | |
41602 | msgid "Assumed-shape actual argument at %L is incompatible with the non-assumed-shape dummy argument '%s' due to VOLATILE attribute" | |
41603 | msgstr "El argumento actual de forma asumida en %L es incompatible con el argumento dummy de forma no asumida '%s' debido al atributo VOLATILE" | |
41604 | ||
41605 | -#: fortran/interface.c:2526 | |
41606 | +#: fortran/interface.c:2527 | |
41607 | #, gcc-internal-format, gfc-internal-format | |
41608 | msgid "Array-section actual argument at %L is incompatible with the non-assumed-shape dummy argument '%s' due to VOLATILE attribute" | |
41609 | msgstr "El argumento actual de sección de matriz en %L es incompatible con el argumento dummy de forma no asumida '%s' debido al atributo VOLATILE" | |
41610 | ||
41611 | -#: fortran/interface.c:2545 | |
41612 | +#: fortran/interface.c:2546 | |
41613 | #, gcc-internal-format, gfc-internal-format | |
41614 | msgid "Pointer-array actual argument at %L requires an assumed-shape or pointer-array dummy argument '%s' due to VOLATILE attribute" | |
41615 | msgstr "El argumento actual de matriz de puntero en %L requiere un argumento dummy de forma asumida o matriz de puntero '%s' debido al atributo VOLATILE" | |
41616 | ||
41617 | -#: fortran/interface.c:2575 | |
41618 | +#: fortran/interface.c:2576 | |
41619 | #, gcc-internal-format, gfc-internal-format | |
41620 | msgid "Missing actual argument for argument '%s' at %L" | |
41621 | msgstr "Falta el argumento actual para el argumento '%s' en %L" | |
41622 | ||
41623 | -#: fortran/interface.c:2761 | |
41624 | +#: fortran/interface.c:2762 | |
41625 | #, gcc-internal-format, gfc-internal-format | |
41626 | msgid "Same actual argument associated with INTENT(%s) argument '%s' and INTENT(%s) argument '%s' at %L" | |
41627 | msgstr "El mismo argumento actual está asociado con el argumento INTENT(%s) '%s' y el argumento INTENT(%s) '%s' en %L" | |
41628 | ||
41629 | -#: fortran/interface.c:2817 | |
41630 | +#: fortran/interface.c:2818 | |
41631 | #, gcc-internal-format, gfc-internal-format | |
41632 | msgid "Procedure argument at %L is INTENT(IN) while interface specifies INTENT(%s)" | |
41633 | msgstr "El argumento del procedimiento en %L es INTENT(IN) mientras que la interfaz especifica INTENT(%s)" | |
41634 | ||
41635 | -#: fortran/interface.c:2827 | |
41636 | +#: fortran/interface.c:2828 | |
41637 | #, gcc-internal-format, gfc-internal-format | |
41638 | msgid "Procedure argument at %L is local to a PURE procedure and is passed to an INTENT(%s) argument" | |
41639 | msgstr "El argumento del procedimiento en %L es local a un procedimiento PURE y se pasa a un argumento INTENT(%s)" | |
41640 | ||
41641 | -#: fortran/interface.c:2835 | |
41642 | +#: fortran/interface.c:2836 | |
41643 | #, gcc-internal-format, gfc-internal-format | |
41644 | msgid "Procedure argument at %L is local to a PURE procedure and has the POINTER attribute" | |
41645 | msgstr "El argumento del procedimiento en %L es local a un procedimiento PURE y tiene el atributo POINTER" | |
41646 | ||
41647 | -#: fortran/interface.c:2847 | |
41648 | +#: fortran/interface.c:2848 | |
41649 | #, gcc-internal-format, gfc-internal-format | |
41650 | msgid "Coindexed actual argument at %L in PURE procedure is passed to an INTENT(%s) argument" | |
41651 | msgstr "El argumento coindizado en %L en un procedimiento PURE se pasa a un argumento INTENT(%s)" | |
41652 | ||
41653 | -#: fortran/interface.c:2855 | |
41654 | +#: fortran/interface.c:2856 | |
41655 | #, gcc-internal-format, gfc-internal-format | |
41656 | msgid "Coindexed actual argument at %L in PURE procedure is passed to a POINTER dummy argument" | |
41657 | msgstr "El argumento actual coindizado en %L es un procedimiento PURE se pasa a un argumento dummy POINTER" | |
41658 | ||
41659 | -#: fortran/interface.c:2866 | |
41660 | +#: fortran/interface.c:2867 | |
41661 | #, gcc-internal-format, gfc-internal-format | |
41662 | msgid "Coindexed polymorphic actual argument at %L is passed polymorphic dummy argument '%s'" | |
41663 | msgstr "El argumento actual polimórfico coindizado en %L se pasa al argumento dummy polimórfico '%s'" | |
41664 | ||
41665 | -#: fortran/interface.c:2892 | |
41666 | +#: fortran/interface.c:2893 | |
41667 | #, gcc-internal-format, gfc-internal-format | |
41668 | msgid "Procedure '%s' called with an implicit interface at %L" | |
41669 | msgstr "Se llamó al procedimiento '%s' con una interfaz implícita en %L" | |
41670 | ||
41671 | -#: fortran/interface.c:2896 | |
41672 | +#: fortran/interface.c:2897 | |
41673 | #, gcc-internal-format, gfc-internal-format | |
41674 | msgid "Procedure '%s' called at %L is not explicitly declared" | |
41675 | msgstr "El procedimiento '%s' que se llama en %L no tiene una interfaz explícita" | |
41676 | ||
41677 | -#: fortran/interface.c:2906 | |
41678 | +#: fortran/interface.c:2907 | |
41679 | #, gcc-internal-format, gfc-internal-format | |
41680 | msgid "The pointer object '%s' at %L must have an explicit function interface or be declared as array" | |
41681 | msgstr "El objeto puntero '%s' en %L debe tener una interfaz de función explícita o declrararse como matriz" | |
41682 | ||
41683 | -#: fortran/interface.c:2914 | |
41684 | +#: fortran/interface.c:2915 | |
41685 | #, gcc-internal-format, gfc-internal-format | |
41686 | msgid "The allocatable object '%s' at %L must have an explicit function interface or be declared as array" | |
41687 | msgstr "El objeto allocatable '%s' en %L debe tener una interfaz de función explícita o declararse como matriz" | |
41688 | ||
41689 | -#: fortran/interface.c:2922 | |
41690 | +#: fortran/interface.c:2923 | |
41691 | #, gcc-internal-format, gfc-internal-format | |
41692 | msgid "Allocatable function '%s' at %L must have an explicit function interface" | |
41693 | msgstr "La función allocatable '%s' en %L debe tener una interfaz de función explícita" | |
41694 | ||
41695 | -#: fortran/interface.c:2932 | |
41696 | +#: fortran/interface.c:2933 | |
41697 | #, gcc-internal-format, gfc-internal-format | |
41698 | msgid "Keyword argument requires explicit interface for procedure '%s' at %L" | |
41699 | msgstr "El argumento de palabra clave requiere una interfaz explícita para el procedimiento '%s' en %L" | |
41700 | ||
41701 | -#: fortran/interface.c:2944 | |
41702 | +#: fortran/interface.c:2945 | |
41703 | #, gcc-internal-format, gfc-internal-format | |
41704 | msgid "Actual argument of LOCK_TYPE or with LOCK_TYPE component at %L requires an explicit interface for procedure '%s'" | |
41705 | msgstr "El argumento actual de LOCK_TYPE o con componente LOCK_TYPE en %L requiere una interfaz explícita para el procedimiento '%s'" | |
41706 | ||
41707 | -#: fortran/interface.c:2953 | |
41708 | +#: fortran/interface.c:2954 | |
41709 | #, gcc-internal-format, gfc-internal-format | |
41710 | msgid "MOLD argument to NULL required at %L" | |
41711 | msgstr "se requiere el argumento MOLD para NULL en %L" | |
41712 | ||
41713 | -#: fortran/interface.c:2984 | |
41714 | +#: fortran/interface.c:2985 | |
41715 | #, gcc-internal-format, gfc-internal-format | |
41716 | msgid "Procedure pointer component '%s' called with an implicit interface at %L" | |
41717 | msgstr "Se llamó al procedimiento de componente puntero '%s' con una interfaz implícita en %L" | |
41718 | ||
41719 | -#: fortran/interface.c:2995 | |
41720 | +#: fortran/interface.c:2996 | |
41721 | #, gcc-internal-format, gfc-internal-format | |
41722 | msgid "Keyword argument requires explicit interface for procedure pointer component '%s' at %L" | |
41723 | msgstr "El argumento de palabra clave requiere una interfaz explícita para el procedimiento de componente puntero '%s' en %L" | |
41724 | ||
41725 | -#: fortran/interface.c:3075 | |
41726 | +#: fortran/interface.c:3076 | |
41727 | #, gcc-internal-format, gfc-internal-format | |
41728 | msgid "MOLD= required in NULL() argument at %L: Ambiguity between specific functions %s and %s" | |
41729 | msgstr "Se require MOLD= en un argumento NULL en %L: Ambigüedad entre las funciones específicas %s y %s " | |
41730 | ||
41731 | -#: fortran/interface.c:3526 | |
41732 | +#: fortran/interface.c:3527 | |
41733 | #, gcc-internal-format, gfc-internal-format | |
41734 | msgid "Entity '%s' at %C is already present in the interface" | |
41735 | msgstr "La entidad '%s' en %C ya está presente en la interfaz" | |
41736 | ||
41737 | -#: fortran/interface.c:3723 | |
41738 | +#: fortran/interface.c:3724 | |
41739 | #, gcc-internal-format, gfc-internal-format | |
41740 | msgid "Can't overwrite GENERIC '%s' at %L" | |
41741 | msgstr "No se puede sobreescribir el GENERIC '%s' en %L" | |
41742 | ||
41743 | -#: fortran/interface.c:3735 | |
41744 | +#: fortran/interface.c:3736 | |
41745 | #, gcc-internal-format, gfc-internal-format | |
41746 | msgid "'%s' at %L overrides a procedure binding declared NON_OVERRIDABLE" | |
41747 | msgstr "'%s' en %L sobreescribe un enlace de procedimiento declarad como NON_OVERRIDABLE" | |
41748 | ||
41749 | -#: fortran/interface.c:3743 | |
41750 | +#: fortran/interface.c:3744 | |
41751 | #, gcc-internal-format, gfc-internal-format | |
41752 | msgid "'%s' at %L must not be DEFERRED as it overrides a non-DEFERRED binding" | |
41753 | msgstr "'%s' en %L no debe ser DEFERRED porque sobreescribe un enlazado que no es DEFERRED" | |
41754 | ||
41755 | -#: fortran/interface.c:3751 | |
41756 | +#: fortran/interface.c:3752 | |
41757 | #, gcc-internal-format, gfc-internal-format | |
41758 | msgid "'%s' at %L overrides a PURE procedure and must also be PURE" | |
41759 | msgstr "'%s' en %L sobreescribe un procedimiento PURE y también debe ser PURE" | |
41760 | ||
41761 | -#: fortran/interface.c:3760 | |
41762 | +#: fortran/interface.c:3761 | |
41763 | #, gcc-internal-format, gfc-internal-format | |
41764 | msgid "'%s' at %L overrides an ELEMENTAL procedure and must also be ELEMENTAL" | |
41765 | msgstr "'%s' en %L sobreescribe un procedimiento ELEMENTAL y también debe ser ELEMENTAL" | |
41766 | ||
41767 | -#: fortran/interface.c:3766 | |
41768 | +#: fortran/interface.c:3767 | |
41769 | #, gcc-internal-format, gfc-internal-format | |
41770 | msgid "'%s' at %L overrides a non-ELEMENTAL procedure and must not be ELEMENTAL, either" | |
41771 | msgstr "'%s' en %L sobreeescribe un procedimiento que no es ELEMENTAL y tampoco debe ser ELEMENTAL" | |
41772 | ||
41773 | -#: fortran/interface.c:3775 | |
41774 | +#: fortran/interface.c:3776 | |
41775 | #, gcc-internal-format, gfc-internal-format | |
41776 | msgid "'%s' at %L overrides a SUBROUTINE and must also be a SUBROUTINE" | |
41777 | msgstr "'%s' en %L sobreescribe una SUBROUTINE y también debe ser una SUBROUTINE" | |
41778 | ||
41779 | -#: fortran/interface.c:3786 | |
41780 | +#: fortran/interface.c:3787 | |
41781 | #, gcc-internal-format, gfc-internal-format | |
41782 | msgid "'%s' at %L overrides a FUNCTION and must also be a FUNCTION" | |
41783 | msgstr "'%s' en %L sobreescribe una FUNCTION y también debe ser una FUNCTION" | |
41784 | ||
41785 | -#: fortran/interface.c:3796 | |
41786 | +#: fortran/interface.c:3797 | |
41787 | #, gcc-internal-format, gfc-internal-format | |
41788 | msgid "'%s' at %L and the overridden FUNCTION should have matching result types and ranks" | |
41789 | msgstr "'%s' en %L y la FUNCION sobreescrita deben tener tipos de resultado y rangos coincidentes" | |
41790 | ||
41791 | -#: fortran/interface.c:3812 | |
41792 | +#: fortran/interface.c:3813 | |
41793 | #, gcc-internal-format, gfc-internal-format | |
41794 | msgid "Character length mismatch between '%s' at '%L' and overridden FUNCTION" | |
41795 | msgstr "No coincide la longitud de caracteres entre '%s' en %L y FUNCTION sobreescrita" | |
41796 | ||
41797 | -#: fortran/interface.c:3817 | |
41798 | +#: fortran/interface.c:3818 | |
41799 | #, gcc-internal-format, gfc-internal-format | |
41800 | msgid "Possible character length mismatch between '%s' at '%L' and overridden FUNCTION" | |
41801 | msgstr "Tal vez no coincide la longitud de caracteres entre '%s' en '%L' y FUNCTION sobreescrita" | |
41802 | ||
41803 | -#: fortran/interface.c:3837 | |
41804 | +#: fortran/interface.c:3838 | |
41805 | #, gcc-internal-format, gfc-internal-format | |
41806 | msgid "'%s' at %L overrides a PUBLIC procedure and must not be PRIVATE" | |
41807 | msgstr "'%s' en %L sobreescribe un procedimiento PUBLIC y no debe ser PRIVATE" | |
41808 | ||
41809 | -#: fortran/interface.c:3866 | |
41810 | +#: fortran/interface.c:3867 | |
41811 | #, gcc-internal-format, gfc-internal-format | |
41812 | msgid "Dummy argument '%s' of '%s' at %L should be named '%s' as to match the corresponding argument of the overridden procedure" | |
41813 | msgstr "El argumento dummy '%s' de '%s' en %L se debe llamar '%s' para que coincida con el argumento correspondiente al procedimiento sobreescrito" | |
41814 | ||
41815 | -#: fortran/interface.c:3877 | |
41816 | +#: fortran/interface.c:3878 | |
41817 | #, gcc-internal-format, gfc-internal-format | |
41818 | msgid "Argument mismatch for the overriding procedure '%s' at %L: %s" | |
41819 | msgstr "La interfaz no coincide en el procedimiento '%s' que sobreescribe en %L: %s" | |
41820 | ||
41821 | -#: fortran/interface.c:3886 | |
41822 | +#: fortran/interface.c:3887 | |
41823 | #, gcc-internal-format, gfc-internal-format | |
41824 | msgid "'%s' at %L must have the same number of formal arguments as the overridden procedure" | |
41825 | msgstr "'%s' en %L debe tener el mismo nombre de argumentos formales que el procedimiento sobreeescrito" | |
41826 | ||
41827 | -#: fortran/interface.c:3895 | |
41828 | +#: fortran/interface.c:3896 | |
41829 | #, gcc-internal-format, gfc-internal-format | |
41830 | msgid "'%s' at %L overrides a NOPASS binding and must also be NOPASS" | |
41831 | msgstr "'%s' en %L sobreescribe un enlace NOPASS y también debe ser NOPASS" | |
41832 | ||
41833 | -#: fortran/interface.c:3906 | |
41834 | +#: fortran/interface.c:3907 | |
41835 | #, gcc-internal-format, gfc-internal-format | |
41836 | msgid "'%s' at %L overrides a binding with PASS and must also be PASS" | |
41837 | msgstr "'%s' en %L sobreescribe un enlace con PASS y también debe ser PASS" | |
41838 | ||
41839 | -#: fortran/interface.c:3913 | |
41840 | +#: fortran/interface.c:3914 | |
41841 | #, gcc-internal-format, gfc-internal-format | |
41842 | msgid "Passed-object dummy argument of '%s' at %L must be at the same position as the passed-object dummy argument of the overridden procedure" | |
41843 | msgstr "El argumento dummy del objeto pasado de '%s' en %L debe estar en la misma posición que el argumento dummy del objeto pasado del procedimiento sobreescrito" | |
41844 | @@ -38195,801 +38406,796 @@ | |
41845 | msgid "Fortran 2003: ASYNCHRONOUS= at %C not allowed in Fortran 95" | |
41846 | msgstr "Fortran 2003: no se permite ASYNCHRONOUS= en %C en Fortran 95" | |
41847 | ||
41848 | -#: fortran/io.c:1914 fortran/io.c:3367 | |
41849 | +#: fortran/io.c:1914 fortran/io.c:3363 | |
41850 | #, gcc-internal-format, gfc-internal-format | |
41851 | msgid "Fortran 2003: BLANK= at %C not allowed in Fortran 95" | |
41852 | msgstr "Fortran 2003: no se permite BLANK= en %C en Fortran 95" | |
41853 | ||
41854 | -#: fortran/io.c:1932 fortran/io.c:3346 | |
41855 | +#: fortran/io.c:1932 fortran/io.c:3342 | |
41856 | #, gcc-internal-format, gfc-internal-format | |
41857 | msgid "Fortran 2003: DECIMAL= at %C not allowed in Fortran 95" | |
41858 | msgstr "Fortran 2003: no se permite DECIMAL= en %C en Fortran 95" | |
41859 | ||
41860 | -#: fortran/io.c:1950 fortran/io.c:3454 | |
41861 | +#: fortran/io.c:1964 | |
41862 | #, gcc-internal-format, gfc-internal-format | |
41863 | -msgid "Fortran 2003: DELIM= at %C not allowed in Fortran 95" | |
41864 | -msgstr "Fortran 2003: no se permite DELIM= en %C en Fortran 95" | |
41865 | - | |
41866 | -#: fortran/io.c:1968 | |
41867 | -#, gcc-internal-format, gfc-internal-format | |
41868 | msgid "Fortran 2003: ENCODING= at %C not allowed in Fortran 95" | |
41869 | msgstr "Fortran 2003: no se permite ENCODING= en %C en Fortran 95" | |
41870 | ||
41871 | -#: fortran/io.c:2019 | |
41872 | +#: fortran/io.c:2015 fortran/io.c:3405 | |
41873 | #, gcc-internal-format, gfc-internal-format | |
41874 | -msgid "Fortran F2003: ROUND= at %C not allowed in Fortran 95" | |
41875 | -msgstr "Fortran F2003: No se permite ROUND= en %C en Fortran 95" | |
41876 | +msgid "Fortran 2003: ROUND= at %C not allowed in Fortran 95" | |
41877 | +msgstr "Fortran 2003: No se permite ROUND= en %C en Fortran 95" | |
41878 | ||
41879 | -#: fortran/io.c:2039 | |
41880 | +#: fortran/io.c:2035 | |
41881 | #, gcc-internal-format, gfc-internal-format | |
41882 | msgid "Fortran 2003: SIGN= at %C not allowed in Fortran 95" | |
41883 | msgstr "Fortran 2003: no se permite SIGN= en %C en Fortran 95" | |
41884 | ||
41885 | -#: fortran/io.c:2252 | |
41886 | +#: fortran/io.c:2248 | |
41887 | #, gcc-internal-format, gfc-internal-format | |
41888 | msgid "CLOSE statement not allowed in PURE procedure at %C" | |
41889 | msgstr "No se permite una declaración CLOSE en el procedimiento PURE en %C" | |
41890 | ||
41891 | -#: fortran/io.c:2312 | |
41892 | +#: fortran/io.c:2308 | |
41893 | #, gcc-internal-format, gfc-internal-format | |
41894 | msgid "CLOSE statement at %L requires a UNIT number" | |
41895 | msgstr "La declaración CLOSE en %L requiere un número UNIT" | |
41896 | ||
41897 | -#: fortran/io.c:2320 | |
41898 | +#: fortran/io.c:2316 | |
41899 | #, gcc-internal-format, gfc-internal-format | |
41900 | msgid "UNIT number in CLOSE statement at %L must be non-negative" | |
41901 | msgstr "El número UNIT en la declaración CLOSE en %L debe ser no negativo" | |
41902 | ||
41903 | -#: fortran/io.c:2418 fortran/match.c:2683 | |
41904 | +#: fortran/io.c:2414 fortran/match.c:2682 | |
41905 | #, gcc-internal-format, gfc-internal-format | |
41906 | msgid "%s statement not allowed in PURE procedure at %C" | |
41907 | msgstr "No se permite una declaración %s en el procedimiento PURE en %C" | |
41908 | ||
41909 | -#: fortran/io.c:2453 fortran/io.c:2885 | |
41910 | +#: fortran/io.c:2449 fortran/io.c:2881 | |
41911 | #, gcc-internal-format, gfc-internal-format | |
41912 | msgid "UNIT number in statement at %L must be non-negative" | |
41913 | msgstr "El número UNIT en la declaración en %L debe ser no negativo" | |
41914 | ||
41915 | -#: fortran/io.c:2485 | |
41916 | +#: fortran/io.c:2481 | |
41917 | #, gcc-internal-format, gfc-internal-format | |
41918 | msgid "Fortran 2003: FLUSH statement at %C" | |
41919 | msgstr "Fortran 2003: Declaración FLUSH en %C" | |
41920 | ||
41921 | -#: fortran/io.c:2541 | |
41922 | +#: fortran/io.c:2537 | |
41923 | #, gcc-internal-format, gfc-internal-format | |
41924 | msgid "Duplicate UNIT specification at %C" | |
41925 | msgstr "Especificación UNIT duplicada en %C" | |
41926 | ||
41927 | -#: fortran/io.c:2615 | |
41928 | +#: fortran/io.c:2611 | |
41929 | #, gcc-internal-format, gfc-internal-format | |
41930 | msgid "Duplicate format specification at %C" | |
41931 | msgstr "Especificación de formato duplicada en %C" | |
41932 | ||
41933 | -#: fortran/io.c:2632 | |
41934 | +#: fortran/io.c:2628 | |
41935 | #, gcc-internal-format, gfc-internal-format | |
41936 | msgid "Symbol '%s' in namelist '%s' is INTENT(IN) at %C" | |
41937 | msgstr "El símbolo '%s' en la lista de nombres '%s' es INTENT(IN) en %C" | |
41938 | ||
41939 | -#: fortran/io.c:2668 | |
41940 | +#: fortran/io.c:2664 | |
41941 | #, gcc-internal-format, gfc-internal-format | |
41942 | msgid "Duplicate NML specification at %C" | |
41943 | msgstr "Especificación NML duplicada en %C" | |
41944 | ||
41945 | -#: fortran/io.c:2677 | |
41946 | +#: fortran/io.c:2673 | |
41947 | #, gcc-internal-format, gfc-internal-format | |
41948 | msgid "Symbol '%s' at %C must be a NAMELIST group name" | |
41949 | msgstr "El símbolo '%s' en %C debe ser un nombre de grupo NAMELIST" | |
41950 | ||
41951 | -#: fortran/io.c:2742 | |
41952 | +#: fortran/io.c:2738 | |
41953 | #, gcc-internal-format, gfc-internal-format | |
41954 | msgid "END tag at %C not allowed in output statement" | |
41955 | msgstr "No se permite la etiqueta END en %C en la declaración de salida" | |
41956 | ||
41957 | -#: fortran/io.c:2819 | |
41958 | +#: fortran/io.c:2815 | |
41959 | #, gcc-internal-format, gfc-internal-format | |
41960 | msgid "UNIT not specified at %L" | |
41961 | msgstr "No se especificó UNIT en %L" | |
41962 | ||
41963 | -#: fortran/io.c:2831 | |
41964 | +#: fortran/io.c:2827 | |
41965 | #, gcc-internal-format, gfc-internal-format | |
41966 | msgid "UNIT specification at %L must be an INTEGER expression or a CHARACTER variable" | |
41967 | msgstr "La especificación UNIT en %L debe ser una expresión INTEGER o una variable CHARACTER" | |
41968 | ||
41969 | -#: fortran/io.c:2853 | |
41970 | +#: fortran/io.c:2849 | |
41971 | #, gcc-internal-format, gfc-internal-format | |
41972 | msgid "Invalid form of WRITE statement at %L, UNIT required" | |
41973 | msgstr "Forma inválida de la declaración WRITE en %L, se requiere UNIT" | |
41974 | ||
41975 | -#: fortran/io.c:2864 | |
41976 | +#: fortran/io.c:2860 | |
41977 | #, gcc-internal-format, gfc-internal-format | |
41978 | msgid "Internal unit with vector subscript at %L" | |
41979 | msgstr "Unidad interna con subíndice vectorial en %L" | |
41980 | ||
41981 | -#: fortran/io.c:2878 | |
41982 | +#: fortran/io.c:2874 | |
41983 | #, gcc-internal-format, gfc-internal-format | |
41984 | msgid "External IO UNIT cannot be an array at %L" | |
41985 | msgstr "Un IO UNIT externo no puede ser una matriz en %L" | |
41986 | ||
41987 | -#: fortran/io.c:2906 | |
41988 | +#: fortran/io.c:2902 | |
41989 | #, gcc-internal-format, gfc-internal-format | |
41990 | msgid "NAMELIST '%s' in READ statement at %L contains the symbol '%s' which may not appear in a variable definition context" | |
41991 | msgstr "NAMELIST '%s' en la declaración READ en %L contiene el símbolo '%s' el cual puede no aparecer en un contexto de definición de variable" | |
41992 | ||
41993 | -#: fortran/io.c:2916 | |
41994 | +#: fortran/io.c:2912 | |
41995 | #, gcc-internal-format, gfc-internal-format | |
41996 | msgid "Extension: Comma before i/o item list at %L" | |
41997 | msgstr "Extensión: Una coma antes de una lista de elementos de e/s en %L" | |
41998 | ||
41999 | -#: fortran/io.c:2926 | |
42000 | +#: fortran/io.c:2922 | |
42001 | #, gcc-internal-format, gfc-internal-format | |
42002 | msgid "ERR tag label %d at %L not defined" | |
42003 | msgstr "La etiqueta ERR %d en %L no está definida" | |
42004 | ||
42005 | -#: fortran/io.c:2938 | |
42006 | +#: fortran/io.c:2934 | |
42007 | #, gcc-internal-format, gfc-internal-format | |
42008 | msgid "END tag label %d at %L not defined" | |
42009 | msgstr "La etiqueta END %d en %L no está definida" | |
42010 | ||
42011 | -#: fortran/io.c:2950 | |
42012 | +#: fortran/io.c:2946 | |
42013 | #, gcc-internal-format, gfc-internal-format | |
42014 | msgid "EOR tag label %d at %L not defined" | |
42015 | msgstr "La etiqueta EOR %d en %L no está definida" | |
42016 | ||
42017 | -#: fortran/io.c:2960 | |
42018 | +#: fortran/io.c:2956 | |
42019 | #, gcc-internal-format, gfc-internal-format | |
42020 | msgid "FORMAT label %d at %L not defined" | |
42021 | msgstr "La etiqueta FORMAT %d en %L no está definida" | |
42022 | ||
42023 | -#: fortran/io.c:3082 | |
42024 | +#: fortran/io.c:3078 | |
42025 | #, gcc-internal-format, gfc-internal-format | |
42026 | msgid "Syntax error in I/O iterator at %C" | |
42027 | msgstr "Error sintáctico en el iterador de E/S en %C" | |
42028 | ||
42029 | -#: fortran/io.c:3113 | |
42030 | +#: fortran/io.c:3109 | |
42031 | #, gcc-internal-format, gfc-internal-format | |
42032 | msgid "Expected variable in READ statement at %C" | |
42033 | msgstr "Se esperaba una variable en la declaración READ en %C" | |
42034 | ||
42035 | -#: fortran/io.c:3119 | |
42036 | +#: fortran/io.c:3115 | |
42037 | #, gcc-internal-format, gfc-internal-format | |
42038 | msgid "Expected expression in %s statement at %C" | |
42039 | msgstr "Se esperaba una expresión en la declaración %s en %C" | |
42040 | ||
42041 | #. A general purpose syntax error. | |
42042 | -#: fortran/io.c:3177 fortran/io.c:3776 fortran/gfortran.h:2465 | |
42043 | +#: fortran/io.c:3173 fortran/io.c:3772 fortran/gfortran.h:2465 | |
42044 | #, gcc-internal-format, gfc-internal-format | |
42045 | msgid "Syntax error in %s statement at %C" | |
42046 | msgstr "Error sintáctico en la declaración %s en %C" | |
42047 | ||
42048 | -#: fortran/io.c:3262 | |
42049 | +#: fortran/io.c:3258 | |
42050 | #, gcc-internal-format, gfc-internal-format | |
42051 | msgid "Fortran 2003: Internal file at %L with namelist" | |
42052 | msgstr "Fortran 2003: Fichero interno en %L con lista de nombres" | |
42053 | ||
42054 | -#: fortran/io.c:3320 | |
42055 | +#: fortran/io.c:3316 | |
42056 | #, gcc-internal-format, gfc-internal-format | |
42057 | msgid "ASYNCHRONOUS= specifier at %L must be an initialization expression" | |
42058 | msgstr "El especificador ASYNCHRONOUS= en %L debe ser una expresión de inicialización" | |
42059 | ||
42060 | -#: fortran/io.c:3388 | |
42061 | +#: fortran/io.c:3384 | |
42062 | #, gcc-internal-format, gfc-internal-format | |
42063 | msgid "Fortran 2003: PAD= at %C not allowed in Fortran 95" | |
42064 | msgstr "Fortran 2003: No se permite PAD= en %C en Fortran 95" | |
42065 | ||
42066 | -#: fortran/io.c:3409 | |
42067 | +#: fortran/io.c:3450 | |
42068 | #, gcc-internal-format, gfc-internal-format | |
42069 | -msgid "Fortran 2003: ROUND= at %C not allowed in Fortran 95" | |
42070 | -msgstr "Fortran 2003: No se permite ROUND= en %C en Fortran 95" | |
42071 | +msgid "Fortran 2003: DELIM= at %C not allowed in Fortran 95" | |
42072 | +msgstr "Fortran 2003: no se permite DELIM= en %C en Fortran 95" | |
42073 | ||
42074 | -#: fortran/io.c:3603 | |
42075 | +#: fortran/io.c:3599 | |
42076 | #, gcc-internal-format, gfc-internal-format | |
42077 | msgid "PRINT namelist at %C is an extension" | |
42078 | msgstr "La lista de nombres PRINT en %C es una extensión" | |
42079 | ||
42080 | -#: fortran/io.c:3746 | |
42081 | +#: fortran/io.c:3742 | |
42082 | #, gcc-internal-format, gfc-internal-format | |
42083 | msgid "Expected comma in I/O list at %C" | |
42084 | msgstr "Se esperaba una coma en la lista E/S en %C" | |
42085 | ||
42086 | -#: fortran/io.c:3810 | |
42087 | +#: fortran/io.c:3806 | |
42088 | #, gcc-internal-format, gfc-internal-format | |
42089 | msgid "PRINT statement at %C not allowed within PURE procedure" | |
42090 | msgstr "No se permite la declaración PRINT en %C dentro un procedimiento PURE" | |
42091 | ||
42092 | -#: fortran/io.c:3969 fortran/io.c:4023 | |
42093 | +#: fortran/io.c:3965 fortran/io.c:4019 | |
42094 | #, gcc-internal-format, gfc-internal-format | |
42095 | msgid "INQUIRE statement not allowed in PURE procedure at %C" | |
42096 | msgstr "No se permite la declaración INQUIRE en el procedimiento PURE en %C" | |
42097 | ||
42098 | -#: fortran/io.c:3999 | |
42099 | +#: fortran/io.c:3995 | |
42100 | #, gcc-internal-format, gfc-internal-format | |
42101 | msgid "IOLENGTH tag invalid in INQUIRE statement at %C" | |
42102 | msgstr "La etiqueta IOLENGHT es inválida en la declaración INQUIRE en %C" | |
42103 | ||
42104 | -#: fortran/io.c:4009 fortran/trans-io.c:1229 | |
42105 | +#: fortran/io.c:4005 fortran/trans-io.c:1229 | |
42106 | #, gcc-internal-format, gfc-internal-format | |
42107 | msgid "INQUIRE statement at %L cannot contain both FILE and UNIT specifiers" | |
42108 | msgstr "La declaración INQUIRE en %L no puede contener especificadores FILE y UNIT al mismo tiempo" | |
42109 | ||
42110 | -#: fortran/io.c:4016 | |
42111 | +#: fortran/io.c:4012 | |
42112 | #, gcc-internal-format, gfc-internal-format | |
42113 | msgid "INQUIRE statement at %L requires either FILE or UNIT specifier" | |
42114 | msgstr "La declaración INQUIRE en %L requiere un especificador FILE o UNIT" | |
42115 | ||
42116 | -#: fortran/io.c:4032 | |
42117 | +#: fortran/io.c:4028 | |
42118 | #, gcc-internal-format, gfc-internal-format | |
42119 | msgid "INQUIRE statement at %L requires a PENDING= specifier with the ID= specifier" | |
42120 | msgstr "La declaración INQUIRE en %L requiere un especificador PENDING= con el especificador ID=" | |
42121 | ||
42122 | -#: fortran/io.c:4203 | |
42123 | +#: fortran/io.c:4199 | |
42124 | #, gcc-internal-format, gfc-internal-format | |
42125 | msgid "Fortran 2003: WAIT at %C not allowed in Fortran 95" | |
42126 | msgstr "Fortran 2003: No se permite WAIT en %C en Fortran 95" | |
42127 | ||
42128 | -#: fortran/io.c:4209 | |
42129 | +#: fortran/io.c:4205 | |
42130 | #, gcc-internal-format, gfc-internal-format | |
42131 | msgid "WAIT statement not allowed in PURE procedure at %C" | |
42132 | msgstr "No se permite una declaración WAIT en un procedimiento PURE en %C" | |
42133 | ||
42134 | -#: fortran/match.c:164 | |
42135 | +#: fortran/match.c:165 | |
42136 | #, gcc-internal-format, gfc-internal-format | |
42137 | msgid "Missing ')' in statement at or before %L" | |
42138 | msgstr "Falta un ')' en la declaración en o antes de %L" | |
42139 | ||
42140 | -#: fortran/match.c:169 | |
42141 | +#: fortran/match.c:170 | |
42142 | #, gcc-internal-format, gfc-internal-format | |
42143 | msgid "Missing '(' in statement at or before %L" | |
42144 | msgstr "Falta un '(' en la declaración en o antes de %L" | |
42145 | ||
42146 | -#: fortran/match.c:366 | |
42147 | +#: fortran/match.c:367 | |
42148 | #, gcc-internal-format, gfc-internal-format | |
42149 | msgid "Integer too large at %C" | |
42150 | msgstr "Entero demasiado grande en %C" | |
42151 | ||
42152 | -#: fortran/match.c:459 fortran/parse.c:693 | |
42153 | +#: fortran/match.c:460 fortran/parse.c:693 | |
42154 | #, gcc-internal-format, gfc-internal-format | |
42155 | msgid "Too many digits in statement label at %C" | |
42156 | msgstr "Demasiados dígitos en la declaración de etiqueta en %C" | |
42157 | ||
42158 | -#: fortran/match.c:465 | |
42159 | +#: fortran/match.c:466 | |
42160 | #, gcc-internal-format, gfc-internal-format | |
42161 | msgid "Statement label at %C is zero" | |
42162 | msgstr "La etiqueta de declaración en %C es cero" | |
42163 | ||
42164 | -#: fortran/match.c:498 | |
42165 | +#: fortran/match.c:499 | |
42166 | #, gcc-internal-format, gfc-internal-format | |
42167 | msgid "Label name '%s' at %C is ambiguous" | |
42168 | msgstr "El nombre de etiqueta '%s' en %C es ambigua" | |
42169 | ||
42170 | -#: fortran/match.c:504 | |
42171 | +#: fortran/match.c:505 | |
42172 | #, gcc-internal-format, gfc-internal-format | |
42173 | msgid "Duplicate construct label '%s' at %C" | |
42174 | msgstr "Etiqueta construct '%s' duplicada en %C" | |
42175 | ||
42176 | -#: fortran/match.c:535 | |
42177 | +#: fortran/match.c:536 | |
42178 | #, gcc-internal-format, gfc-internal-format | |
42179 | msgid "Invalid character in name at %C" | |
42180 | msgstr "Carácter inválido en el nombre en %C" | |
42181 | ||
42182 | -#: fortran/match.c:548 fortran/match.c:629 | |
42183 | +#: fortran/match.c:549 | |
42184 | #, gcc-internal-format, gfc-internal-format | |
42185 | msgid "Name at %C is too long" | |
42186 | msgstr "El nombre en %C es demasiado largo" | |
42187 | ||
42188 | -#: fortran/match.c:559 | |
42189 | +#: fortran/match.c:560 | |
42190 | #, gcc-internal-format, gfc-internal-format | |
42191 | msgid "Invalid character '$' at %C. Use -fdollar-ok to allow it as an extension" | |
42192 | msgstr "Carácter '$' inválido en %C. Use -fdollar-ok para permitirlo como una extensión" | |
42193 | ||
42194 | -#: fortran/match.c:610 fortran/match.c:658 | |
42195 | +#: fortran/match.c:610 fortran/match.c:657 | |
42196 | #, gcc-internal-format, gfc-internal-format | |
42197 | msgid "Invalid C name in NAME= specifier at %C" | |
42198 | msgstr "Nombre C inválido en el especificador NAME= en %C" | |
42199 | ||
42200 | -#: fortran/match.c:649 | |
42201 | +#: fortran/match.c:648 | |
42202 | #, gcc-internal-format, gfc-internal-format | |
42203 | msgid "Embedded space in NAME= specifier at %C" | |
42204 | msgstr "Espacio incrustado en el especificador NAME= en %C" | |
42205 | ||
42206 | -#: fortran/match.c:973 | |
42207 | +#: fortran/match.c:972 | |
42208 | #, gcc-internal-format, gfc-internal-format | |
42209 | msgid "Loop variable at %C cannot be a coarray" | |
42210 | msgstr "La variable de bucle en %C no puede ser una comatriz" | |
42211 | ||
42212 | -#: fortran/match.c:979 | |
42213 | +#: fortran/match.c:978 | |
42214 | #, gcc-internal-format, gfc-internal-format | |
42215 | msgid "Loop variable at %C cannot be a sub-component" | |
42216 | msgstr "La variable de bucle en %C no puede ser un subcomponente" | |
42217 | ||
42218 | -#: fortran/match.c:1013 | |
42219 | +#: fortran/match.c:1012 | |
42220 | #, gcc-internal-format, gfc-internal-format | |
42221 | msgid "Expected a step value in iterator at %C" | |
42222 | msgstr "Se esperaba un valor de paso en el iterador en %C" | |
42223 | ||
42224 | -#: fortran/match.c:1025 | |
42225 | +#: fortran/match.c:1024 | |
42226 | #, gcc-internal-format, gfc-internal-format | |
42227 | msgid "Syntax error in iterator at %C" | |
42228 | msgstr "Error sintáctico en el iterador en %C" | |
42229 | ||
42230 | -#: fortran/match.c:1266 | |
42231 | +#: fortran/match.c:1265 | |
42232 | #, gcc-internal-format, gfc-internal-format | |
42233 | msgid "Invalid form of PROGRAM statement at %C" | |
42234 | msgstr "Forma inválida de la declaración PROGRAM en %C" | |
42235 | ||
42236 | -#: fortran/match.c:1396 fortran/match.c:1477 | |
42237 | +#: fortran/match.c:1395 fortran/match.c:1476 | |
42238 | #, gcc-internal-format, gfc-internal-format | |
42239 | msgid "Obsolescent feature: Arithmetic IF statement at %C" | |
42240 | msgstr "Característica obsoleta: Declaración IF aritmética en %C" | |
42241 | ||
42242 | -#: fortran/match.c:1452 | |
42243 | +#: fortran/match.c:1451 | |
42244 | #, gcc-internal-format, gfc-internal-format | |
42245 | msgid "Syntax error in IF-expression at %C" | |
42246 | msgstr "Error sintáctico en la expresión IF en %C" | |
42247 | ||
42248 | -#: fortran/match.c:1463 | |
42249 | +#: fortran/match.c:1462 | |
42250 | #, gcc-internal-format, gfc-internal-format | |
42251 | msgid "Block label not appropriate for arithmetic IF statement at %C" | |
42252 | msgstr "La etiqueta de bloque no es apropiada para la declaración IF aritmética en %C" | |
42253 | ||
42254 | -#: fortran/match.c:1501 | |
42255 | +#: fortran/match.c:1500 | |
42256 | #, gcc-internal-format, gfc-internal-format | |
42257 | msgid "Block label is not appropriate for IF statement at %C" | |
42258 | msgstr "La etiqueta de bloque no es apropiada para la declaración IF en %C" | |
42259 | ||
42260 | -#: fortran/match.c:1587 | |
42261 | +#: fortran/match.c:1586 | |
42262 | #, gcc-internal-format, gfc-internal-format | |
42263 | msgid "Cannot assign to a named constant at %C" | |
42264 | msgstr "No se puede asignar a una constante nombrada en %C" | |
42265 | ||
42266 | -#: fortran/match.c:1597 | |
42267 | +#: fortran/match.c:1596 | |
42268 | #, gcc-internal-format, gfc-internal-format | |
42269 | msgid "Unclassifiable statement in IF-clause at %C" | |
42270 | msgstr "Declaración inclasificable en la cláusula IF en %C" | |
42271 | ||
42272 | -#: fortran/match.c:1604 | |
42273 | +#: fortran/match.c:1603 | |
42274 | #, gcc-internal-format, gfc-internal-format | |
42275 | msgid "Syntax error in IF-clause at %C" | |
42276 | msgstr "Error sintáctico en la cláusula IF en %C" | |
42277 | ||
42278 | -#: fortran/match.c:1648 | |
42279 | +#: fortran/match.c:1647 | |
42280 | #, gcc-internal-format, gfc-internal-format | |
42281 | msgid "Unexpected junk after ELSE statement at %C" | |
42282 | msgstr "Basura inesperada después de la declaración ELSE en %C" | |
42283 | ||
42284 | -#: fortran/match.c:1654 fortran/match.c:1689 | |
42285 | +#: fortran/match.c:1653 fortran/match.c:1688 | |
42286 | #, gcc-internal-format, gfc-internal-format | |
42287 | msgid "Label '%s' at %C doesn't match IF label '%s'" | |
42288 | msgstr "La etiqueta '%s' en %C no coincide con la etiqueta IF '%s'" | |
42289 | ||
42290 | -#: fortran/match.c:1683 | |
42291 | +#: fortran/match.c:1682 | |
42292 | #, gcc-internal-format, gfc-internal-format | |
42293 | msgid "Unexpected junk after ELSE IF statement at %C" | |
42294 | msgstr "Basura inesperada después de la declaración ELSE IF en %C" | |
42295 | ||
42296 | -#: fortran/match.c:1747 | |
42297 | +#: fortran/match.c:1746 | |
42298 | #, gcc-internal-format, gfc-internal-format | |
42299 | msgid "Image control statement CRITICAL at %C in PURE procedure" | |
42300 | msgstr "Declaración de control de imagen CRITICAL en %C en un procedimiento PURE" | |
42301 | ||
42302 | -#: fortran/match.c:1753 | |
42303 | +#: fortran/match.c:1752 | |
42304 | #, gcc-internal-format, gfc-internal-format | |
42305 | msgid "Image control statement CRITICAL at %C in DO CONCURRENT block" | |
42306 | msgstr "Declaración de control de imagen CRITICAL en %C en un bloque DO CONCURRENT" | |
42307 | ||
42308 | -#: fortran/match.c:1761 | |
42309 | +#: fortran/match.c:1760 | |
42310 | #, gcc-internal-format, gfc-internal-format | |
42311 | msgid "Fortran 2008: CRITICAL statement at %C" | |
42312 | msgstr "Fortran 2008: Declaración CRITICAL en %C" | |
42313 | ||
42314 | -#: fortran/match.c:1773 | |
42315 | +#: fortran/match.c:1772 | |
42316 | #, gcc-internal-format, gfc-internal-format | |
42317 | msgid "Nested CRITICAL block at %C" | |
42318 | msgstr "Bloque CRITICAL anidado en %C" | |
42319 | ||
42320 | -#: fortran/match.c:1825 | |
42321 | +#: fortran/match.c:1824 | |
42322 | #, gcc-internal-format, gfc-internal-format | |
42323 | msgid "Expected association list at %C" | |
42324 | msgstr "Se esperaba una lista lista de asociación en %C" | |
42325 | ||
42326 | -#: fortran/match.c:1838 | |
42327 | +#: fortran/match.c:1837 | |
42328 | #, gcc-internal-format, gfc-internal-format | |
42329 | msgid "Expected association at %C" | |
42330 | msgstr "Se esperaba una asociación en %C" | |
42331 | ||
42332 | -#: fortran/match.c:1847 | |
42333 | +#: fortran/match.c:1846 | |
42334 | #, gcc-internal-format, gfc-internal-format | |
42335 | msgid "Duplicate name '%s' in association at %C" | |
42336 | msgstr "Nombre '%s' duplicado en la asociación en %C" | |
42337 | ||
42338 | -#: fortran/match.c:1855 | |
42339 | +#: fortran/match.c:1854 | |
42340 | #, gcc-internal-format, gfc-internal-format | |
42341 | msgid "Association target at %C must not be coindexed" | |
42342 | msgstr "El objetivo de asociación en %C no debe estar coindizado" | |
42343 | ||
42344 | -#: fortran/match.c:1873 | |
42345 | +#: fortran/match.c:1872 | |
42346 | #, gcc-internal-format, gfc-internal-format | |
42347 | msgid "Expected ')' or ',' at %C" | |
42348 | msgstr "Se esperaba ')' o ',' en %C" | |
42349 | ||
42350 | -#: fortran/match.c:1891 | |
42351 | +#: fortran/match.c:1890 | |
42352 | #, gcc-internal-format, gfc-internal-format | |
42353 | msgid "Junk after ASSOCIATE statement at %C" | |
42354 | msgstr "Basura después de la declaración ASSOCIATE en %C" | |
42355 | ||
42356 | -#: fortran/match.c:1960 | |
42357 | +#: fortran/match.c:1959 | |
42358 | #, gcc-internal-format, gfc-internal-format | |
42359 | msgid "Derived type '%s' at %L may not be ABSTRACT" | |
42360 | msgstr "El tipo derivado '%s' en %L no debe ser ABSTRACT" | |
42361 | ||
42362 | -#: fortran/match.c:2023 | |
42363 | +#: fortran/match.c:2022 | |
42364 | #, gcc-internal-format, gfc-internal-format | |
42365 | msgid "Invalid type-spec at %C" | |
42366 | msgstr "Especificación de tipo inválida en %C" | |
42367 | ||
42368 | -#: fortran/match.c:2117 | |
42369 | +#: fortran/match.c:2116 | |
42370 | #, gcc-internal-format, gfc-internal-format | |
42371 | msgid "Syntax error in FORALL iterator at %C" | |
42372 | msgstr "Error sintáctico en el iterador FORALL en %C" | |
42373 | ||
42374 | -#: fortran/match.c:2385 | |
42375 | +#: fortran/match.c:2384 | |
42376 | #, gcc-internal-format, gfc-internal-format | |
42377 | msgid "Fortran 2008: DO CONCURRENT construct at %C" | |
42378 | msgstr "Fortran 2008: Constructor DO CONCURRENT en %C" | |
42379 | ||
42380 | -#: fortran/match.c:2511 | |
42381 | +#: fortran/match.c:2510 | |
42382 | #, gcc-internal-format, gfc-internal-format | |
42383 | msgid "Name '%s' in %s statement at %C is unknown" | |
42384 | msgstr "Se desconoce el nombre '%s' en la declaración %s en %C" | |
42385 | ||
42386 | -#: fortran/match.c:2519 | |
42387 | +#: fortran/match.c:2518 | |
42388 | #, gcc-internal-format, gfc-internal-format | |
42389 | msgid "Name '%s' in %s statement at %C is not a construct name" | |
42390 | msgstr "El nombre '%s' en la declaración %s en %C no es un nombre de constructor" | |
42391 | ||
42392 | -#: fortran/match.c:2531 | |
42393 | +#: fortran/match.c:2530 | |
42394 | #, gcc-internal-format, gfc-internal-format | |
42395 | msgid "%s statement at %C leaves CRITICAL construct" | |
42396 | msgstr "La declaración %s en %C deja una construcción CRITICAL" | |
42397 | ||
42398 | #. F2008, C821 & C845. | |
42399 | -#: fortran/match.c:2539 | |
42400 | +#: fortran/match.c:2538 | |
42401 | #, gcc-internal-format, gfc-internal-format | |
42402 | msgid "%s statement at %C leaves DO CONCURRENT construct" | |
42403 | msgstr "La declaración %s en %C deja una construcción DO CONCURRENT" | |
42404 | ||
42405 | -#: fortran/match.c:2551 | |
42406 | +#: fortran/match.c:2550 | |
42407 | #, gcc-internal-format, gfc-internal-format | |
42408 | msgid "%s statement at %C is not within a construct" | |
42409 | msgstr "La declaración %s en %C no está dentro de una construcción" | |
42410 | ||
42411 | -#: fortran/match.c:2554 | |
42412 | +#: fortran/match.c:2553 | |
42413 | #, gcc-internal-format, gfc-internal-format | |
42414 | msgid "%s statement at %C is not within construct '%s'" | |
42415 | msgstr "La declaración %s en %C no está dentro de la construcción '%s'" | |
42416 | ||
42417 | -#: fortran/match.c:2579 | |
42418 | +#: fortran/match.c:2578 | |
42419 | #, gcc-internal-format, gfc-internal-format | |
42420 | msgid "CYCLE statement at %C is not applicable to non-loop construct '%s'" | |
42421 | msgstr "La declaración CYCLE en %C no se aplica a la construcción '%s' que no es bucle" | |
42422 | ||
42423 | -#: fortran/match.c:2584 | |
42424 | +#: fortran/match.c:2583 | |
42425 | #, gcc-internal-format, gfc-internal-format | |
42426 | msgid "Fortran 2008: EXIT statement with no do-construct-name at %C" | |
42427 | msgstr "Fortran 2008: Declaración EXIT sin nombre de constructor do en %C" | |
42428 | ||
42429 | -#: fortran/match.c:2590 | |
42430 | +#: fortran/match.c:2589 | |
42431 | #, gcc-internal-format, gfc-internal-format | |
42432 | msgid "%s statement at %C is not applicable to construct '%s'" | |
42433 | msgstr "La declaración %s en %C no se aplica a la construcción '%s'" | |
42434 | ||
42435 | -#: fortran/match.c:2597 | |
42436 | +#: fortran/match.c:2596 | |
42437 | #, gcc-internal-format, gfc-internal-format | |
42438 | msgid "%s statement at %C leaving OpenMP structured block" | |
42439 | msgstr "La declaración %s en %C deja un bloque estructurado OpenMP" | |
42440 | ||
42441 | -#: fortran/match.c:2621 | |
42442 | +#: fortran/match.c:2620 | |
42443 | #, gcc-internal-format, gfc-internal-format | |
42444 | msgid "EXIT statement at %C terminating !$OMP DO loop" | |
42445 | msgstr "La declaración EXIT en %C termina el bucle !$OMP DO" | |
42446 | ||
42447 | -#: fortran/match.c:2626 | |
42448 | +#: fortran/match.c:2625 | |
42449 | #, gcc-internal-format, gfc-internal-format | |
42450 | msgid "CYCLE statement at %C to non-innermost collapsed !$OMP DO loop" | |
42451 | msgstr "La declaración CYCLE en %C para el bucle !$OMP DO colapsado que no es el más interno" | |
42452 | ||
42453 | -#: fortran/match.c:2693 | |
42454 | +#: fortran/match.c:2692 | |
42455 | #, gcc-internal-format, gfc-internal-format | |
42456 | msgid "Image control statement STOP at %C in CRITICAL block" | |
42457 | msgstr "Declaración de control de imagen STOP en %C en el bloque CRITICAL" | |
42458 | ||
42459 | -#: fortran/match.c:2698 | |
42460 | +#: fortran/match.c:2697 | |
42461 | #, gcc-internal-format, gfc-internal-format | |
42462 | msgid "Image control statement STOP at %C in DO CONCURRENT block" | |
42463 | msgstr "Declaración de control de imagen STOP en %C en el bloque DO CONCURRENT" | |
42464 | ||
42465 | -#: fortran/match.c:2706 | |
42466 | +#: fortran/match.c:2705 | |
42467 | #, gcc-internal-format, gfc-internal-format | |
42468 | msgid "STOP code at %L must be either INTEGER or CHARACTER type" | |
42469 | msgstr "El código STOP en %L debe ser de tipo INTEGER o CHARACTER" | |
42470 | ||
42471 | -#: fortran/match.c:2713 | |
42472 | +#: fortran/match.c:2712 | |
42473 | #, gcc-internal-format, gfc-internal-format | |
42474 | msgid "STOP code at %L must be scalar" | |
42475 | msgstr "El código STOP en %L debe ser escalar" | |
42476 | ||
42477 | -#: fortran/match.c:2721 | |
42478 | +#: fortran/match.c:2720 | |
42479 | #, gcc-internal-format, gfc-internal-format | |
42480 | msgid "STOP code at %L must be default character KIND=%d" | |
42481 | msgstr "El código STOP en %L debe ser un carácter por defecto KIND=%d" | |
42482 | ||
42483 | -#: fortran/match.c:2729 | |
42484 | +#: fortran/match.c:2728 | |
42485 | #, gcc-internal-format, gfc-internal-format | |
42486 | msgid "STOP code at %L must be default integer KIND=%d" | |
42487 | msgstr "El código STOP en %L debe ser un entero por defecto KIND=%d" | |
42488 | ||
42489 | -#: fortran/match.c:2775 | |
42490 | +#: fortran/match.c:2774 | |
42491 | #, gcc-internal-format, gfc-internal-format | |
42492 | msgid "Deleted feature: PAUSE statement at %C" | |
42493 | msgstr "Característica eliminada: declaración PAUSE en %C" | |
42494 | ||
42495 | -#: fortran/match.c:2798 | |
42496 | +#: fortran/match.c:2797 | |
42497 | #, gcc-internal-format, gfc-internal-format | |
42498 | msgid "Fortran 2008: ERROR STOP statement at %C" | |
42499 | msgstr "Fortran 2008: Declaración ERROR STOP en %C" | |
42500 | ||
42501 | -#: fortran/match.c:2824 | |
42502 | +#: fortran/match.c:2823 | |
42503 | #, gcc-internal-format, gfc-internal-format | |
42504 | msgid "Image control statement %s at %C in PURE procedure" | |
42505 | msgstr "Declaración de control de imagen %s en %C en un procedimiento PURE" | |
42506 | ||
42507 | -#: fortran/match.c:2840 | |
42508 | +#: fortran/match.c:2839 | |
42509 | #, gcc-internal-format, gfc-internal-format | |
42510 | msgid "Image control statement %s at %C in CRITICAL block" | |
42511 | msgstr "Declaración de control de imagen %s en %C en el bloque CRITICAL" | |
42512 | ||
42513 | -#: fortran/match.c:2847 | |
42514 | +#: fortran/match.c:2846 | |
42515 | #, gcc-internal-format, gfc-internal-format | |
42516 | msgid "Image control statement %s at %C in DO CONCURRENT block" | |
42517 | msgstr "Declaración de control de imagen %s en %C en el bloque DO CONCURRENT" | |
42518 | ||
42519 | -#: fortran/match.c:2877 fortran/match.c:3088 fortran/match.c:3600 | |
42520 | -#: fortran/match.c:3924 | |
42521 | +#: fortran/match.c:2876 fortran/match.c:3087 fortran/match.c:3599 | |
42522 | +#: fortran/match.c:3923 | |
42523 | #, gcc-internal-format, gfc-internal-format | |
42524 | msgid "Redundant STAT tag found at %L " | |
42525 | msgstr "Se encontró una etiqueta STAT redundante en %L " | |
42526 | ||
42527 | -#: fortran/match.c:2898 fortran/match.c:3108 fortran/match.c:3627 | |
42528 | -#: fortran/match.c:3950 | |
42529 | +#: fortran/match.c:2897 fortran/match.c:3107 fortran/match.c:3626 | |
42530 | +#: fortran/match.c:3949 | |
42531 | #, gcc-internal-format, gfc-internal-format | |
42532 | msgid "Redundant ERRMSG tag found at %L " | |
42533 | msgstr "Se encontró una etiqueta ERRMSG redundante en %L " | |
42534 | ||
42535 | -#: fortran/match.c:2919 | |
42536 | +#: fortran/match.c:2918 | |
42537 | #, gcc-internal-format, gfc-internal-format | |
42538 | msgid "Redundant ACQUIRED_LOCK tag found at %L " | |
42539 | msgstr "Se encontró una etiqueta ACQUIRED_LOCK redundante en %L " | |
42540 | ||
42541 | -#: fortran/match.c:2980 | |
42542 | +#: fortran/match.c:2979 | |
42543 | #, gcc-internal-format, gfc-internal-format | |
42544 | msgid "Fortran 2008: LOCK statement at %C" | |
42545 | msgstr "Fortran 2008: Declaración LOCK en %C" | |
42546 | ||
42547 | -#: fortran/match.c:2991 | |
42548 | +#: fortran/match.c:2990 | |
42549 | #, gcc-internal-format, gfc-internal-format | |
42550 | msgid "Fortran 2008: UNLOCK statement at %C" | |
42551 | msgstr "Fortran 2008: Declaración UNLOCK en %C" | |
42552 | ||
42553 | -#: fortran/match.c:3017 | |
42554 | +#: fortran/match.c:3016 | |
42555 | #, gcc-internal-format, gfc-internal-format | |
42556 | msgid "Image control statement SYNC at %C in PURE procedure" | |
42557 | msgstr "Declaración de control de imagen SYNC en %C en un procedimiento PURE" | |
42558 | ||
42559 | -#: fortran/match.c:3024 | |
42560 | +#: fortran/match.c:3023 | |
42561 | #, gcc-internal-format, gfc-internal-format | |
42562 | msgid "Fortran 2008: SYNC statement at %C" | |
42563 | msgstr "Fortran 2008: Declaración SYNC en %C" | |
42564 | ||
42565 | -#: fortran/match.c:3036 | |
42566 | +#: fortran/match.c:3035 | |
42567 | #, gcc-internal-format, gfc-internal-format | |
42568 | msgid "Image control statement SYNC at %C in CRITICAL block" | |
42569 | msgstr "Declaración de control de imagen SYNC en %C en un bloque CRITICAL" | |
42570 | ||
42571 | -#: fortran/match.c:3042 | |
42572 | +#: fortran/match.c:3041 | |
42573 | #, gcc-internal-format, gfc-internal-format | |
42574 | msgid "Image control statement SYNC at %C in DO CONCURRENT block" | |
42575 | msgstr "Declaración de control de imagen SYNC en %C en un bloque DO CONCURRENT" | |
42576 | ||
42577 | -#: fortran/match.c:3222 | |
42578 | +#: fortran/match.c:3221 | |
42579 | #, gcc-internal-format, gfc-internal-format | |
42580 | msgid "Deleted feature: ASSIGN statement at %C" | |
42581 | msgstr "Característica eliminada: declaración ASSIGN en %C" | |
42582 | ||
42583 | -#: fortran/match.c:3268 | |
42584 | +#: fortran/match.c:3267 | |
42585 | #, gcc-internal-format, gfc-internal-format | |
42586 | msgid "Deleted feature: Assigned GOTO statement at %C" | |
42587 | msgstr "Característica eliminada: declaración GOTO asignada en %C" | |
42588 | ||
42589 | -#: fortran/match.c:3315 fortran/match.c:3368 | |
42590 | +#: fortran/match.c:3314 fortran/match.c:3367 | |
42591 | #, gcc-internal-format, gfc-internal-format | |
42592 | msgid "Statement label list in GOTO at %C cannot be empty" | |
42593 | msgstr "La lista de etiquetas de declaración en GOTO en %C no puede estar vacía" | |
42594 | ||
42595 | -#: fortran/match.c:3378 | |
42596 | +#: fortran/match.c:3377 | |
42597 | #, gcc-internal-format, gfc-internal-format | |
42598 | msgid "Obsolescent feature: Computed GOTO at %C" | |
42599 | msgstr "Característica obsoleta: GOTO computado en %C" | |
42600 | ||
42601 | -#: fortran/match.c:3450 | |
42602 | +#: fortran/match.c:3449 | |
42603 | #, gcc-internal-format, gfc-internal-format | |
42604 | msgid "Error in type-spec at %L" | |
42605 | msgstr "Error en la especificación de tipo en %L" | |
42606 | ||
42607 | -#: fortran/match.c:3460 | |
42608 | +#: fortran/match.c:3459 | |
42609 | #, gcc-internal-format, gfc-internal-format | |
42610 | msgid "Fortran 2003: typespec in ALLOCATE at %L" | |
42611 | msgstr "Fortran 2003: Especificación de tipo en ALLOCATE en %L" | |
42612 | ||
42613 | -#: fortran/match.c:3499 | |
42614 | +#: fortran/match.c:3498 | |
42615 | #, gcc-internal-format, gfc-internal-format | |
42616 | msgid "Bad allocate-object at %C for a PURE procedure" | |
42617 | msgstr "Objeto de alojamiento erróneo en %C para un procedimiento PURE" | |
42618 | ||
42619 | -#: fortran/match.c:3524 | |
42620 | +#: fortran/match.c:3523 | |
42621 | #, gcc-internal-format, gfc-internal-format | |
42622 | msgid "ALLOCATE of coarray at %C in DO CONCURRENT block" | |
42623 | msgstr "ALLOCATE de comatriz en %C en el bloque DO CONCURRENT" | |
42624 | ||
42625 | -#: fortran/match.c:3529 | |
42626 | +#: fortran/match.c:3528 | |
42627 | #, gcc-internal-format, gfc-internal-format | |
42628 | msgid "ALLOCATE of coarray at %C in CRITICAL block" | |
42629 | msgstr "ALLOCATE de comatriz en %C en el bloque CRITICAL" | |
42630 | ||
42631 | -#: fortran/match.c:3541 | |
42632 | +#: fortran/match.c:3540 | |
42633 | #, gcc-internal-format, gfc-internal-format | |
42634 | msgid "Type of entity at %L is type incompatible with typespec" | |
42635 | msgstr "El tipo de entidad en %L es de tipo incompatible con la especificación de tipo" | |
42636 | ||
42637 | -#: fortran/match.c:3549 | |
42638 | +#: fortran/match.c:3548 | |
42639 | #, gcc-internal-format, gfc-internal-format | |
42640 | msgid "Kind type parameter for entity at %L differs from the kind type parameter of the typespec" | |
42641 | msgstr "El parámetro de tipo de género para la entidad en %L difiere del parámetro de tipo de género de la especificación de tipo" | |
42642 | ||
42643 | -#: fortran/match.c:3576 | |
42644 | +#: fortran/match.c:3575 | |
42645 | #, gcc-internal-format, gfc-internal-format | |
42646 | msgid "Allocate-object at %L is not a nonprocedure pointer or an allocatable variable" | |
42647 | msgstr "El objeto de alojamiento en %L no es un puntero que no es procedimiento o una variable de alojamiento" | |
42648 | ||
42649 | -#: fortran/match.c:3583 | |
42650 | +#: fortran/match.c:3582 | |
42651 | #, gcc-internal-format, gfc-internal-format | |
42652 | msgid "Shape specification for allocatable scalar at %C" | |
42653 | msgstr "Especificación de forma para el escalar asignable en %C" | |
42654 | ||
42655 | -#: fortran/match.c:3620 | |
42656 | +#: fortran/match.c:3619 | |
42657 | #, gcc-internal-format, gfc-internal-format | |
42658 | msgid "Fortran 2003: ERRMSG tag at %L" | |
42659 | msgstr "Fortran 2003: Etiqueta ERRMSG en %L" | |
42660 | ||
42661 | -#: fortran/match.c:3644 | |
42662 | +#: fortran/match.c:3643 | |
42663 | #, gcc-internal-format, gfc-internal-format | |
42664 | msgid "Fortran 2003: SOURCE tag at %L" | |
42665 | msgstr "Fortran 2003: Etiqueta SOURCE en %L" | |
42666 | ||
42667 | -#: fortran/match.c:3651 | |
42668 | +#: fortran/match.c:3650 | |
42669 | #, gcc-internal-format, gfc-internal-format | |
42670 | msgid "Redundant SOURCE tag found at %L " | |
42671 | msgstr "Se encontró una etiqueta SOURCE redundante en %L " | |
42672 | ||
42673 | -#: fortran/match.c:3658 | |
42674 | +#: fortran/match.c:3657 | |
42675 | #, gcc-internal-format, gfc-internal-format | |
42676 | msgid "SOURCE tag at %L conflicts with the typespec at %L" | |
42677 | msgstr "La etiqueta SOURCE en %L tiene conflictos con la especificación de tipo en %L" | |
42678 | ||
42679 | -#: fortran/match.c:3664 | |
42680 | +#: fortran/match.c:3663 | |
42681 | #, gcc-internal-format, gfc-internal-format | |
42682 | -msgid "Fortran 2008: SOURCE tag at %L with more than a single allocate objects" | |
42683 | +msgid "Fortran 2008: SOURCE tag at %L with more than a single allocate object" | |
42684 | msgstr "Fortran 2008: Etiqueta SOURCE en %L con más de un objeto de alojamiento sencillo" | |
42685 | ||
42686 | -#: fortran/match.c:3682 | |
42687 | +#: fortran/match.c:3681 | |
42688 | #, gcc-internal-format, gfc-internal-format | |
42689 | msgid "Fortran 2008: MOLD tag at %L" | |
42690 | msgstr "Fortran 2008: Etiqueta MOLD en %L" | |
42691 | ||
42692 | -#: fortran/match.c:3689 | |
42693 | +#: fortran/match.c:3688 | |
42694 | #, gcc-internal-format, gfc-internal-format | |
42695 | msgid "Redundant MOLD tag found at %L " | |
42696 | msgstr "Se encontró una etiqueta MOLD redundante en %L " | |
42697 | ||
42698 | -#: fortran/match.c:3696 | |
42699 | +#: fortran/match.c:3695 | |
42700 | #, gcc-internal-format, gfc-internal-format | |
42701 | msgid "MOLD tag at %L conflicts with the typespec at %L" | |
42702 | msgstr "La etiqueta MOLD en %L tiene conflictos con la especificación de tipo en %L" | |
42703 | ||
42704 | -#: fortran/match.c:3722 | |
42705 | +#: fortran/match.c:3721 | |
42706 | #, gcc-internal-format, gfc-internal-format | |
42707 | msgid "MOLD tag at %L conflicts with SOURCE tag at %L" | |
42708 | msgstr "La etiqueta MOLD en %L tiene conflictos con la etiqueta SOURCE en %L" | |
42709 | ||
42710 | -#: fortran/match.c:3730 | |
42711 | +#: fortran/match.c:3729 | |
42712 | #, gcc-internal-format, gfc-internal-format | |
42713 | msgid "Allocate-object at %L with a deferred type parameter requires either a type-spec or SOURCE tag or a MOLD tag" | |
42714 | msgstr "El objeto de alojamiento en %L con un parámetro de tipo diferido requiere una especificación de tipo o una etiqueta SOURCE o una etiqueta MOLD" | |
42715 | ||
42716 | -#: fortran/match.c:3791 | |
42717 | +#: fortran/match.c:3790 | |
42718 | #, gcc-internal-format, gfc-internal-format | |
42719 | -msgid "Pointer object at %C shall not be conindexed" | |
42720 | +msgid "Pointer object at %C shall not be coindexed" | |
42721 | msgstr "El objeto puntero en %C no debe tener un coíndice" | |
42722 | ||
42723 | -#: fortran/match.c:3874 | |
42724 | +#: fortran/match.c:3873 | |
42725 | #, gcc-internal-format, gfc-internal-format | |
42726 | msgid "Illegal allocate-object at %C for a PURE procedure" | |
42727 | msgstr "Objeto de alojamiento ilegal en %C para un procedimiento PURE" | |
42728 | ||
42729 | -#: fortran/match.c:3884 | |
42730 | +#: fortran/match.c:3883 | |
42731 | #, gcc-internal-format, gfc-internal-format | |
42732 | msgid "DEALLOCATE of coarray at %C in DO CONCURRENT block" | |
42733 | msgstr "DEALLOCATE de comatriz en %C en el bloque DO CONCURRENT" | |
42734 | ||
42735 | -#: fortran/match.c:3891 | |
42736 | +#: fortran/match.c:3890 | |
42737 | #, gcc-internal-format, gfc-internal-format | |
42738 | msgid "DEALLOCATE of coarray at %C in CRITICAL block" | |
42739 | msgstr "DEALLOCATE de comatriz en %C en el bloque CRITICAL" | |
42740 | ||
42741 | -#: fortran/match.c:3907 | |
42742 | +#: fortran/match.c:3906 | |
42743 | #, gcc-internal-format, gfc-internal-format | |
42744 | msgid "Allocate-object at %C is not a nonprocedure pointer or an allocatable variable" | |
42745 | msgstr "El objeto de alojamiento en %C no es un puntero que no es procedimiento o una variable de alojamiento" | |
42746 | ||
42747 | -#: fortran/match.c:3944 | |
42748 | +#: fortran/match.c:3943 | |
42749 | #, gcc-internal-format, gfc-internal-format | |
42750 | msgid "Fortran 2003: ERRMSG at %L" | |
42751 | msgstr "Fortran 2003: ERRMSG en %L" | |
42752 | ||
42753 | -#: fortran/match.c:4002 | |
42754 | +#: fortran/match.c:4001 | |
42755 | #, gcc-internal-format, gfc-internal-format | |
42756 | msgid "Image control statement RETURN at %C in CRITICAL block" | |
42757 | msgstr "Declaración de control de imagen RETURN en %C en un bloque CRITICAL" | |
42758 | ||
42759 | -#: fortran/match.c:4008 | |
42760 | +#: fortran/match.c:4007 | |
42761 | #, gcc-internal-format, gfc-internal-format | |
42762 | msgid "Image control statement RETURN at %C in DO CONCURRENT block" | |
42763 | msgstr "Declaración de control de imagen RETURN en %C en un bloque DO CRITICAL" | |
42764 | ||
42765 | -#: fortran/match.c:4017 | |
42766 | +#: fortran/match.c:4016 | |
42767 | #, gcc-internal-format, gfc-internal-format | |
42768 | msgid "Alternate RETURN statement at %C is only allowed within a SUBROUTINE" | |
42769 | msgstr "La declaración RETURN alternativa en %C sólo se permite dentro de una SUBROUTINE" | |
42770 | ||
42771 | -#: fortran/match.c:4022 | |
42772 | +#: fortran/match.c:4021 | |
42773 | #, gcc-internal-format, gfc-internal-format | |
42774 | msgid "Obsolescent feature: Alternate RETURN at %C" | |
42775 | msgstr "Característica obsoleta: RETURN alternativo en %C" | |
42776 | ||
42777 | -#: fortran/match.c:4052 | |
42778 | +#: fortran/match.c:4051 | |
42779 | #, gcc-internal-format, gfc-internal-format | |
42780 | msgid "Extension: RETURN statement in main program at %C" | |
42781 | msgstr "Extensión: declaración RETURN en el programa principal en %C" | |
42782 | ||
42783 | -#: fortran/match.c:4080 | |
42784 | +#: fortran/match.c:4079 | |
42785 | #, gcc-internal-format, gfc-internal-format | |
42786 | msgid "Expected component reference at %C" | |
42787 | msgstr "Se esperaba una referencia de componente en %C" | |
42788 | ||
42789 | -#: fortran/match.c:4086 | |
42790 | +#: fortran/match.c:4085 | |
42791 | #, gcc-internal-format, gfc-internal-format | |
42792 | msgid "Junk after CALL at %C" | |
42793 | msgstr "Basura después de CALL en %C" | |
42794 | ||
42795 | -#: fortran/match.c:4096 | |
42796 | +#: fortran/match.c:4095 | |
42797 | #, gcc-internal-format, gfc-internal-format | |
42798 | msgid "Expected type-bound procedure or procedure pointer component at %C" | |
42799 | msgstr "Se esperaba un procedimiento enlazado a tipo o un procedimiento de componente puntero en %C" | |
42800 | ||
42801 | -#: fortran/match.c:4316 | |
42802 | +#: fortran/match.c:4315 | |
42803 | #, gcc-internal-format, gfc-internal-format | |
42804 | msgid "Syntax error in common block name at %C" | |
42805 | msgstr "Error sintáctico en el nombre de bloque común en %C" | |
42806 | ||
42807 | -#: fortran/match.c:4352 | |
42808 | +#: fortran/match.c:4351 | |
42809 | #, gcc-internal-format, gfc-internal-format | |
42810 | msgid "Symbol '%s' at %C is already an external symbol that is not COMMON" | |
42811 | msgstr "El símbolo '%s' en %C ya es un símbolo externo que no es COMMON" | |
42812 | @@ -38997,137 +39203,137 @@ | |
42813 | #. If we find an error, just print it and continue, | |
42814 | #. cause it's just semantic, and we can see if there | |
42815 | #. are more errors. | |
42816 | -#: fortran/match.c:4411 | |
42817 | +#: fortran/match.c:4410 | |
42818 | #, gcc-internal-format, gfc-internal-format | |
42819 | msgid "Variable '%s' at %L in common block '%s' at %C must be declared with a C interoperable kind since common block '%s' is bind(c)" | |
42820 | msgstr "La variable '%s' en %L en el bloque común '%s' en %C se debe declarar con género interoperable con C porque el bloque común '%s' es bind(c)" | |
42821 | ||
42822 | -#: fortran/match.c:4420 | |
42823 | +#: fortran/match.c:4419 | |
42824 | #, gcc-internal-format, gfc-internal-format | |
42825 | msgid "Variable '%s' in common block '%s' at %C can not be bind(c) since it is not global" | |
42826 | msgstr "La variable '%s' en el bloque común '%s' en %C no puede ser bind(c) porque no es global" | |
42827 | ||
42828 | -#: fortran/match.c:4427 | |
42829 | +#: fortran/match.c:4426 | |
42830 | #, gcc-internal-format, gfc-internal-format | |
42831 | msgid "Symbol '%s' at %C is already in a COMMON block" | |
42832 | msgstr "El símbolo '%s' en %C ya está en un bloque COMMON" | |
42833 | ||
42834 | -#: fortran/match.c:4435 | |
42835 | +#: fortran/match.c:4434 | |
42836 | #, gcc-internal-format, gfc-internal-format | |
42837 | msgid "Initialized symbol '%s' at %C can only be COMMON in BLOCK DATA" | |
42838 | msgstr "El símbolo inicializado '%s' en %C sólo puede ser COMMON en BLOCK DATA" | |
42839 | ||
42840 | -#: fortran/match.c:4462 | |
42841 | +#: fortran/match.c:4461 | |
42842 | #, gcc-internal-format, gfc-internal-format | |
42843 | msgid "Array specification for symbol '%s' in COMMON at %C must be explicit" | |
42844 | msgstr "La especificación de matriz para el símbolo '%s' en COMMON en %C debe ser explícita" | |
42845 | ||
42846 | -#: fortran/match.c:4472 | |
42847 | +#: fortran/match.c:4471 | |
42848 | #, gcc-internal-format, gfc-internal-format | |
42849 | msgid "Symbol '%s' in COMMON at %C cannot be a POINTER array" | |
42850 | msgstr "El símbolo '%s' en COMMON en %C no puede ser una matriz POINTER" | |
42851 | ||
42852 | -#: fortran/match.c:4504 | |
42853 | +#: fortran/match.c:4503 | |
42854 | #, gcc-internal-format, gfc-internal-format | |
42855 | msgid "Symbol '%s', in COMMON block '%s' at %C is being indirectly equivalenced to another COMMON block '%s'" | |
42856 | msgstr "El símbolo '%s', en el bloque COMMON '%s' en %C está siendo indirectamente equivalente a otro bloque COMMON '%s'" | |
42857 | ||
42858 | -#: fortran/match.c:4612 | |
42859 | +#: fortran/match.c:4611 | |
42860 | #, gcc-internal-format, gfc-internal-format | |
42861 | msgid "Namelist group name '%s' at %C already has a basic type of %s" | |
42862 | msgstr "El nombre de grupo de lista de nombres '%s' en %C ya tiene un tipo básico de %s" | |
42863 | ||
42864 | -#: fortran/match.c:4620 | |
42865 | +#: fortran/match.c:4619 | |
42866 | #, gcc-internal-format, gfc-internal-format | |
42867 | msgid "Namelist group name '%s' at %C already is USE associated and cannot be respecified." | |
42868 | msgstr "El nombre de grupo de lista de nombres '%s' en %C ya está asociado con USE y no se puede reespecificar." | |
42869 | ||
42870 | -#: fortran/match.c:4647 | |
42871 | +#: fortran/match.c:4646 | |
42872 | #, gcc-internal-format, gfc-internal-format | |
42873 | msgid "Assumed size array '%s' in namelist '%s' at %C is not allowed" | |
42874 | msgstr "No se permite la matriz de tamaño asumido '%s' en la lista de nombres '%s' en %C" | |
42875 | ||
42876 | -#: fortran/match.c:4781 | |
42877 | +#: fortran/match.c:4780 | |
42878 | #, gcc-internal-format, gfc-internal-format | |
42879 | msgid "Derived type component %C is not a permitted EQUIVALENCE member" | |
42880 | msgstr "El componente de tipo derivado %C no es un miembro EQUIVALENCE permitido" | |
42881 | ||
42882 | -#: fortran/match.c:4789 | |
42883 | +#: fortran/match.c:4788 | |
42884 | #, gcc-internal-format, gfc-internal-format | |
42885 | msgid "Array reference in EQUIVALENCE at %C cannot be an array section" | |
42886 | msgstr "La referencia a matriz en EQUIVALENCE en %C no puede ser una sección de matriz" | |
42887 | ||
42888 | -#: fortran/match.c:4817 | |
42889 | +#: fortran/match.c:4816 | |
42890 | #, gcc-internal-format, gfc-internal-format | |
42891 | msgid "EQUIVALENCE at %C requires two or more objects" | |
42892 | msgstr "El EQUIVALENCE en %C requiere dos o más objetos" | |
42893 | ||
42894 | -#: fortran/match.c:4831 | |
42895 | +#: fortran/match.c:4830 | |
42896 | #, gcc-internal-format, gfc-internal-format | |
42897 | msgid "Attempt to indirectly overlap COMMON blocks %s and %s by EQUIVALENCE at %C" | |
42898 | msgstr "Se intentó sobreescribir indirectamente los bloques COMMON %s y %s con EQUIVALENCE en %C" | |
42899 | ||
42900 | -#: fortran/match.c:4844 | |
42901 | +#: fortran/match.c:4843 | |
42902 | #, gcc-internal-format, gfc-internal-format | |
42903 | msgid "Expecting a comma in EQUIVALENCE at %C" | |
42904 | msgstr "Se esperaba una coma en EQUIVALENCE en %C" | |
42905 | ||
42906 | -#: fortran/match.c:4960 | |
42907 | +#: fortran/match.c:4959 | |
42908 | #, gcc-internal-format, gfc-internal-format | |
42909 | msgid "Statement function at %L is recursive" | |
42910 | msgstr "La función de declaración en %L es recursiva" | |
42911 | ||
42912 | -#: fortran/match.c:4966 | |
42913 | +#: fortran/match.c:4965 | |
42914 | #, gcc-internal-format, gfc-internal-format | |
42915 | msgid "Obsolescent feature: Statement function at %C" | |
42916 | msgstr "Característica obsoleta: Función de declaración en %C" | |
42917 | ||
42918 | -#: fortran/match.c:5052 | |
42919 | +#: fortran/match.c:5051 | |
42920 | #, gcc-internal-format, gfc-internal-format | |
42921 | msgid "Expected initialization expression in CASE at %C" | |
42922 | msgstr "Se esperaba la inicialización de la expresión en CASE en %C" | |
42923 | ||
42924 | -#: fortran/match.c:5084 | |
42925 | +#: fortran/match.c:5083 | |
42926 | #, gcc-internal-format, gfc-internal-format | |
42927 | msgid "Expected block name '%s' of SELECT construct at %C" | |
42928 | msgstr "Se esperaba el nombre de bloque '%s' de la construcción SELECT en %C" | |
42929 | ||
42930 | -#: fortran/match.c:5268 | |
42931 | +#: fortran/match.c:5267 | |
42932 | #, gcc-internal-format, gfc-internal-format | |
42933 | msgid "Selector in SELECT TYPE at %C is not a named variable; use associate-name=>" | |
42934 | msgstr "El selector en SELECT TYPE en %C no es una variable nombrada; use nombre-asociado =>" | |
42935 | ||
42936 | -#: fortran/match.c:5301 | |
42937 | +#: fortran/match.c:5300 | |
42938 | #, gcc-internal-format, gfc-internal-format | |
42939 | msgid "Unexpected CASE statement at %C" | |
42940 | msgstr "Declaración CASE inesperada en %C" | |
42941 | ||
42942 | -#: fortran/match.c:5353 | |
42943 | +#: fortran/match.c:5352 | |
42944 | #, gcc-internal-format, gfc-internal-format | |
42945 | msgid "Syntax error in CASE specification at %C" | |
42946 | msgstr "Error sintáctico en la especificación CASE en %C" | |
42947 | ||
42948 | -#: fortran/match.c:5371 | |
42949 | +#: fortran/match.c:5370 | |
42950 | #, gcc-internal-format, gfc-internal-format | |
42951 | msgid "Unexpected TYPE IS statement at %C" | |
42952 | msgstr "Declaración TYPE IS inesperada en %C" | |
42953 | ||
42954 | -#: fortran/match.c:5404 | |
42955 | +#: fortran/match.c:5403 | |
42956 | #, gcc-internal-format, gfc-internal-format | |
42957 | msgid "Syntax error in TYPE IS specification at %C" | |
42958 | msgstr "Error sintáctico en la especificación TYPE IS en %C" | |
42959 | ||
42960 | -#: fortran/match.c:5477 | |
42961 | +#: fortran/match.c:5476 | |
42962 | #, gcc-internal-format, gfc-internal-format | |
42963 | msgid "Syntax error in CLASS IS specification at %C" | |
42964 | msgstr "Error sintáctico en la especificación CLASS IS en %C" | |
42965 | ||
42966 | -#: fortran/match.c:5599 | |
42967 | +#: fortran/match.c:5598 | |
42968 | #, gcc-internal-format, gfc-internal-format | |
42969 | msgid "ELSEWHERE statement at %C not enclosed in WHERE block" | |
42970 | msgstr "La declaración ELSEWHERE en %C no está dentro de un bloque WHERE" | |
42971 | ||
42972 | -#: fortran/match.c:5637 | |
42973 | +#: fortran/match.c:5636 | |
42974 | #, gcc-internal-format, gfc-internal-format | |
42975 | msgid "Label '%s' at %C doesn't match WHERE label '%s'" | |
42976 | msgstr "La etiqueta '%s' en %C no coincide con la etiqueta WHERE '%s'" | |
42977 | @@ -39158,190 +39364,190 @@ | |
42978 | msgid "Extension: Unary operator following arithmetic operator (use parentheses) at %C" | |
42979 | msgstr "Extensión: Operador unario después de un operador aritmético (usar paréntesis) en %C" | |
42980 | ||
42981 | -#: fortran/module.c:548 | |
42982 | +#: fortran/module.c:555 | |
42983 | #, gcc-internal-format, gfc-internal-format | |
42984 | msgid "Fortran 2003: module nature in USE statement at %C" | |
42985 | msgstr "Fortran 2003: módulo natural en la declaración USE en %C" | |
42986 | ||
42987 | -#: fortran/module.c:560 | |
42988 | +#: fortran/module.c:567 | |
42989 | #, gcc-internal-format, gfc-internal-format | |
42990 | msgid "Module nature in USE statement at %C shall be either INTRINSIC or NON_INTRINSIC" | |
42991 | msgstr "El módulo natural en la declaración USE en %C debe ser uno de INTRINSIC o NON_INTRINSIC" | |
42992 | ||
42993 | -#: fortran/module.c:573 | |
42994 | +#: fortran/module.c:580 | |
42995 | #, gcc-internal-format, gfc-internal-format | |
42996 | msgid "\"::\" was expected after module nature at %C but was not found" | |
42997 | msgstr "Se esperaba \"::\" después del módulo natural en %C pero no se encontró" | |
42998 | ||
42999 | -#: fortran/module.c:583 | |
43000 | +#: fortran/module.c:590 | |
43001 | #, gcc-internal-format, gfc-internal-format | |
43002 | msgid "Fortran 2003: \"USE :: module\" at %C" | |
43003 | msgstr "Fortran 2003: \"USE :: module\" en %C" | |
43004 | ||
43005 | -#: fortran/module.c:643 | |
43006 | +#: fortran/module.c:650 | |
43007 | #, gcc-internal-format, gfc-internal-format | |
43008 | msgid "Missing generic specification in USE statement at %C" | |
43009 | msgstr "Falta la especificación genérica en la declaración USE en %C" | |
43010 | ||
43011 | -#: fortran/module.c:651 | |
43012 | +#: fortran/module.c:658 | |
43013 | #, gcc-internal-format, gfc-internal-format | |
43014 | msgid "Fortran 2003: Renaming operators in USE statements at %C" | |
43015 | msgstr "Fortran 2003: Se renombran operadores en declaraciones USE en %C" | |
43016 | ||
43017 | -#: fortran/module.c:693 | |
43018 | +#: fortran/module.c:700 | |
43019 | #, gcc-internal-format, gfc-internal-format | |
43020 | msgid "The name '%s' at %C has already been used as an external module name." | |
43021 | msgstr "El nombre '%s' en %C ya se está usando como un nombre de módulo externo." | |
43022 | ||
43023 | -#: fortran/module.c:1006 | |
43024 | +#: fortran/module.c:1013 | |
43025 | #, gcc-internal-format, gfc-internal-format | |
43026 | msgid "Reading module %s at line %d column %d: %s" | |
43027 | msgstr "Leyendo el módulo %s en la línea %d columna %d: %s" | |
43028 | ||
43029 | -#: fortran/module.c:1010 | |
43030 | +#: fortran/module.c:1017 | |
43031 | #, gcc-internal-format, gfc-internal-format | |
43032 | msgid "Writing module %s at line %d column %d: %s" | |
43033 | msgstr "Escribiendo el módulo %s en la línea %d columna %d: %s" | |
43034 | ||
43035 | -#: fortran/module.c:1014 | |
43036 | +#: fortran/module.c:1021 | |
43037 | #, gcc-internal-format, gfc-internal-format | |
43038 | msgid "Module %s at line %d column %d: %s" | |
43039 | msgstr "Módulo %s en la línea %d columna %d: %s" | |
43040 | ||
43041 | -#: fortran/module.c:1449 | |
43042 | +#: fortran/module.c:1469 | |
43043 | #, gcc-internal-format, gfc-internal-format | |
43044 | msgid "Error writing modules file: %s" | |
43045 | msgstr "Error al escribir el fichero de módulos: %s" | |
43046 | ||
43047 | -#: fortran/module.c:3396 | |
43048 | +#: fortran/module.c:3416 | |
43049 | #, gcc-internal-format, gfc-internal-format | |
43050 | msgid "Namelist %s cannot be renamed by USE association to %s" | |
43051 | msgstr "La lista de nombres %s no se puede renombrar por asociación de USE a %s" | |
43052 | ||
43053 | -#: fortran/module.c:4427 | |
43054 | +#: fortran/module.c:4461 | |
43055 | #, gcc-internal-format, gfc-internal-format | |
43056 | msgid "'%s' of module '%s', imported at %C, is also the name of the current program unit" | |
43057 | msgstr "'%s' del módulo '%s', importado en %C, es también el nombre de la unidad de programa actual" | |
43058 | ||
43059 | -#: fortran/module.c:4722 | |
43060 | +#: fortran/module.c:4760 | |
43061 | #, gcc-internal-format, gfc-internal-format | |
43062 | msgid "Symbol '%s' referenced at %L not found in module '%s'" | |
43063 | msgstr "El símbolo '%s' referenciado en %L no se encontró en el módulo '%s'" | |
43064 | ||
43065 | -#: fortran/module.c:4729 | |
43066 | +#: fortran/module.c:4767 | |
43067 | #, gcc-internal-format, gfc-internal-format | |
43068 | msgid "User operator '%s' referenced at %L not found in module '%s'" | |
43069 | msgstr "El operador de usuario '%s' referenciado en %L no se encontró en el módulo '%s'" | |
43070 | ||
43071 | -#: fortran/module.c:4734 | |
43072 | +#: fortran/module.c:4772 | |
43073 | #, gcc-internal-format, gfc-internal-format | |
43074 | msgid "Intrinsic operator '%s' referenced at %L not found in module '%s'" | |
43075 | msgstr "El operador intrínseco '%s' referenciado en %L no se encontró en el módulo '%s'" | |
43076 | ||
43077 | -#: fortran/module.c:5372 | |
43078 | +#: fortran/module.c:5409 | |
43079 | #, gcc-internal-format, gfc-internal-format | |
43080 | msgid "Can't open module file '%s' for writing at %C: %s" | |
43081 | msgstr "No se puede abrir el fichero de módulo '%s' para escritura en %C: %s" | |
43082 | ||
43083 | # El mensaje de error seguramente está mal redactado. cfuga | |
43084 | -#: fortran/module.c:5405 | |
43085 | +#: fortran/module.c:5442 | |
43086 | #, gcc-internal-format, gfc-internal-format | |
43087 | msgid "Error writing module file '%s' for writing: %s" | |
43088 | msgstr "Error al escribir al fichero de módulo '%s' para escritura: %s" | |
43089 | ||
43090 | -#: fortran/module.c:5414 | |
43091 | +#: fortran/module.c:5451 | |
43092 | #, gcc-internal-format, gfc-internal-format | |
43093 | msgid "Can't delete module file '%s': %s" | |
43094 | msgstr "No se puede borrar el fichero de módulo '%s': %s" | |
43095 | ||
43096 | -#: fortran/module.c:5417 | |
43097 | +#: fortran/module.c:5454 | |
43098 | #, gcc-internal-format, gfc-internal-format | |
43099 | msgid "Can't rename module file '%s' to '%s': %s" | |
43100 | msgstr "No se puede renombrar el fichero de módulo '%s' a '%s': %s" | |
43101 | ||
43102 | -#: fortran/module.c:5423 | |
43103 | +#: fortran/module.c:5460 | |
43104 | #, gcc-internal-format, gfc-internal-format | |
43105 | msgid "Can't delete temporary module file '%s': %s" | |
43106 | msgstr "No se puede borrar el fichero de módulo temporal '%s': %s" | |
43107 | ||
43108 | -#: fortran/module.c:5442 fortran/module.c:5654 fortran/module.c:5687 | |
43109 | -#: fortran/module.c:5729 | |
43110 | +#: fortran/module.c:5479 fortran/module.c:5691 fortran/module.c:5724 | |
43111 | +#: fortran/module.c:5766 | |
43112 | #, gcc-internal-format, gfc-internal-format | |
43113 | msgid "Symbol '%s' already declared" | |
43114 | msgstr "El símbolo '%s' ya se había declarado" | |
43115 | ||
43116 | -#: fortran/module.c:5546 fortran/module.c:5825 | |
43117 | +#: fortran/module.c:5583 fortran/module.c:5862 | |
43118 | #, gcc-internal-format, gfc-internal-format | |
43119 | msgid "The symbol '%s', referenced at %L, is not in the selected standard" | |
43120 | msgstr "El símbolo '%s' referenciado en %L, no está en el módulo estándar" | |
43121 | ||
43122 | -#: fortran/module.c:5633 | |
43123 | +#: fortran/module.c:5670 | |
43124 | #, gcc-internal-format, gfc-internal-format | |
43125 | msgid "Symbol '%s' referenced at %L not found in intrinsic module ISO_C_BINDING" | |
43126 | msgstr "El símbolo '%s' referenciado en %L no se encontró en el módulo intrínseco ISO_C_BINDING" | |
43127 | ||
43128 | -#: fortran/module.c:5810 | |
43129 | +#: fortran/module.c:5847 | |
43130 | #, gcc-internal-format, gfc-internal-format | |
43131 | msgid "Use of intrinsic module '%s' at %C conflicts with non-intrinsic module name used previously" | |
43132 | msgstr "El uso del módulo intrínseco '%s' en %C tiene conflictos con un nombre de módulo no intrínseco usado previamente" | |
43133 | ||
43134 | -#: fortran/module.c:5833 | |
43135 | +#: fortran/module.c:5870 | |
43136 | #, gcc-internal-format, gfc-internal-format | |
43137 | msgid "Use of the NUMERIC_STORAGE_SIZE named constant from intrinsic module ISO_FORTRAN_ENV at %L is incompatible with option %s" | |
43138 | msgstr "El uso de la constante nombrada NUMERIC_STORAGE_SIZE del módulo intrínseco ISO_FORTRAN_ENV en %L es incompatible con la opción %s" | |
43139 | ||
43140 | -#: fortran/module.c:5903 | |
43141 | +#: fortran/module.c:5940 | |
43142 | #, gcc-internal-format, gfc-internal-format | |
43143 | msgid "Use of the NUMERIC_STORAGE_SIZE named constant from intrinsic module ISO_FORTRAN_ENV at %C is incompatible with option %s" | |
43144 | msgstr "El uso de la constante nombrada NUMERIC_STORAGE_SIZE del módulo intrínseco ISO_FORTRAN_ENV en %C es incompatible con la opción %s" | |
43145 | ||
43146 | -#: fortran/module.c:5961 | |
43147 | +#: fortran/module.c:5998 | |
43148 | #, gcc-internal-format, gfc-internal-format | |
43149 | msgid "Symbol '%s' referenced at %L not found in intrinsic module ISO_FORTRAN_ENV" | |
43150 | msgstr "El símbolo '%s' referenciado en %L no se encontró en el módulo intrínseco ISO_FORTRAN_ENV" | |
43151 | ||
43152 | -#: fortran/module.c:6000 | |
43153 | +#: fortran/module.c:6037 | |
43154 | #, gcc-internal-format, gfc-internal-format | |
43155 | msgid "Fortran 2003: ISO_FORTRAN_ENV intrinsic module at %C" | |
43156 | msgstr "Fortran 2003: Módulo intrínseco ISO_FORTRAN_ENV en %C" | |
43157 | ||
43158 | -#: fortran/module.c:6010 | |
43159 | +#: fortran/module.c:6047 | |
43160 | #, gcc-internal-format, gfc-internal-format | |
43161 | msgid "Fortran 2003: ISO_C_BINDING module at %C" | |
43162 | msgstr "Fortran 2003: Módulo ISO_C_BINDING en %C" | |
43163 | ||
43164 | -#: fortran/module.c:6022 | |
43165 | +#: fortran/module.c:6059 | |
43166 | #, gcc-internal-format, gfc-internal-format | |
43167 | msgid "Can't find an intrinsic module named '%s' at %C" | |
43168 | msgstr "No se puede encontrar un módulo intrínseco llamado '%s' en %C" | |
43169 | ||
43170 | -#: fortran/module.c:6027 | |
43171 | +#: fortran/module.c:6064 | |
43172 | #, gcc-internal-format, gfc-internal-format | |
43173 | msgid "Can't open module file '%s' for reading at %C: %s" | |
43174 | msgstr "No se puede abrir el fichero de módulo '%s' para lectura en %C: %s" | |
43175 | ||
43176 | -#: fortran/module.c:6035 | |
43177 | +#: fortran/module.c:6072 | |
43178 | #, gcc-internal-format, gfc-internal-format | |
43179 | msgid "Use of non-intrinsic module '%s' at %C conflicts with intrinsic module name used previously" | |
43180 | msgstr "El uso del módulo '%s' que no es intrínseco en %C tiene conflictos con el nombre del módulo intrínseco usado previamente" | |
43181 | ||
43182 | -#: fortran/module.c:6055 | |
43183 | +#: fortran/module.c:6092 | |
43184 | #, gcc-internal-format, gfc-internal-format | |
43185 | msgid "File '%s' opened at %C is not a GFORTRAN module file" | |
43186 | msgstr "El fichero '%s' abierto en %C no es un fichero de módulo GFORTRAN" | |
43187 | ||
43188 | -#: fortran/module.c:6062 | |
43189 | +#: fortran/module.c:6099 | |
43190 | #, gcc-internal-format, gfc-internal-format | |
43191 | msgid "Parse error when checking module version for file '%s' opened at %C" | |
43192 | msgstr "Error de decodificación al revisar la versión de módulo para el fichero '%s' abierto en %C" | |
43193 | ||
43194 | -#: fortran/module.c:6067 | |
43195 | +#: fortran/module.c:6104 | |
43196 | #, gcc-internal-format, gfc-internal-format | |
43197 | msgid "Wrong module version '%s' (expected '%s') for file '%s' opened at %C" | |
43198 | msgstr "Versión de módulo '%s' errónea (se esperaba '%s) para el fichero '%s' abierto en %C" | |
43199 | ||
43200 | # No se puede hacer el mismo juego de palabras que en inglés. cfuga | |
43201 | -#: fortran/module.c:6082 | |
43202 | +#: fortran/module.c:6119 | |
43203 | #, gcc-internal-format | |
43204 | msgid "Can't USE the same module we're building!" | |
43205 | msgstr "¡No se puede hacer USE del mismo módulo que estamos construyendo!" | |
43206 | @@ -39426,7 +39632,7 @@ | |
43207 | msgid "Unexpected junk after NOWAIT clause at %C" | |
43208 | msgstr "Basura inesperada después de la cláusula NOWAIT en %C" | |
43209 | ||
43210 | -#: fortran/openmp.c:819 fortran/resolve.c:8998 fortran/resolve.c:9476 | |
43211 | +#: fortran/openmp.c:819 fortran/resolve.c:8985 fortran/resolve.c:9463 | |
43212 | #, gcc-internal-format, gfc-internal-format | |
43213 | msgid "IF clause at %L requires a scalar LOGICAL expression" | |
43214 | msgstr "La cláusula IF en %L requiere una expresión LOGICAL escalar" | |
43215 | @@ -40745,713 +40951,713 @@ | |
43216 | msgid "Non-RECURSIVE procedure '%s' at %L is possibly calling itself recursively. Declare it RECURSIVE or use -frecursive" | |
43217 | msgstr "El procedimiento que no es RECURSIVE '%s' en %L posiblemente se está llamando a sí mismo recursivamente. Declárelo RECURSIVE o utilice -frecursive" | |
43218 | ||
43219 | -#: fortran/resolve.c:1620 fortran/resolve.c:8534 fortran/resolve.c:9423 | |
43220 | +#: fortran/resolve.c:1610 fortran/resolve.c:8521 fortran/resolve.c:9410 | |
43221 | #, gcc-internal-format, gfc-internal-format | |
43222 | msgid "Label %d referenced at %L is never defined" | |
43223 | msgstr "La etiqueta %d referenciada en %L nunca se define" | |
43224 | ||
43225 | -#: fortran/resolve.c:1665 | |
43226 | +#: fortran/resolve.c:1655 | |
43227 | #, gcc-internal-format, gfc-internal-format | |
43228 | msgid "Statement function '%s' at %L is not allowed as an actual argument" | |
43229 | msgstr "La función de declaración '%s' en %L no se permite como un argumento actual" | |
43230 | ||
43231 | -#: fortran/resolve.c:1673 | |
43232 | +#: fortran/resolve.c:1663 | |
43233 | #, gcc-internal-format, gfc-internal-format | |
43234 | msgid "Intrinsic '%s' at %L is not allowed as an actual argument" | |
43235 | msgstr "El intrínseco '%s' en %L no se permite como un argumento actual" | |
43236 | ||
43237 | -#: fortran/resolve.c:1681 | |
43238 | +#: fortran/resolve.c:1671 | |
43239 | #, gcc-internal-format, gfc-internal-format | |
43240 | msgid "Fortran 2008: Internal procedure '%s' is used as actual argument at %L" | |
43241 | msgstr "Fortran 2008: Se usa el procedimiento interno '%s' como un argumento actual en %L" | |
43242 | ||
43243 | -#: fortran/resolve.c:1689 | |
43244 | +#: fortran/resolve.c:1679 | |
43245 | #, gcc-internal-format, gfc-internal-format | |
43246 | msgid "ELEMENTAL non-INTRINSIC procedure '%s' is not allowed as an actual argument at %L" | |
43247 | msgstr "El procedimiento ELEMENTAL que no es INTRINSIC '%s' no se permite como un argumento actual en %L" | |
43248 | ||
43249 | -#: fortran/resolve.c:1716 | |
43250 | +#: fortran/resolve.c:1706 | |
43251 | #, gcc-internal-format, gfc-internal-format | |
43252 | msgid "Unable to find a specific INTRINSIC procedure for the reference '%s' at %L" | |
43253 | msgstr "No se puede encontrar un procedimiento INTRINSIC específico para la referencia '%s' en %L" | |
43254 | ||
43255 | -#: fortran/resolve.c:1738 | |
43256 | +#: fortran/resolve.c:1728 | |
43257 | #, gcc-internal-format, gfc-internal-format | |
43258 | msgid "Symbol '%s' at %L is ambiguous" | |
43259 | msgstr "El símbolo '%s' en %L es ambiguo" | |
43260 | ||
43261 | -#: fortran/resolve.c:1793 | |
43262 | +#: fortran/resolve.c:1783 | |
43263 | #, gcc-internal-format, gfc-internal-format | |
43264 | msgid "By-value argument at %L is not of numeric type" | |
43265 | msgstr "El argumento por valor en %L no es de tipo numérico" | |
43266 | ||
43267 | -#: fortran/resolve.c:1800 | |
43268 | +#: fortran/resolve.c:1790 | |
43269 | #, gcc-internal-format, gfc-internal-format | |
43270 | msgid "By-value argument at %L cannot be an array or an array section" | |
43271 | msgstr "El argumento por valor en %L no puede ser una matriz o una sección de matriz" | |
43272 | ||
43273 | -#: fortran/resolve.c:1814 | |
43274 | +#: fortran/resolve.c:1804 | |
43275 | #, gcc-internal-format, gfc-internal-format | |
43276 | msgid "By-value argument at %L is not allowed in this context" | |
43277 | msgstr "El argumento por valor en %L no se permite en este contexto" | |
43278 | ||
43279 | -#: fortran/resolve.c:1826 | |
43280 | +#: fortran/resolve.c:1816 | |
43281 | #, gcc-internal-format, gfc-internal-format | |
43282 | msgid "Passing internal procedure at %L by location not allowed" | |
43283 | msgstr "No se permite el paso del procedimiento interno en %L por ubicación" | |
43284 | ||
43285 | -#: fortran/resolve.c:1837 | |
43286 | +#: fortran/resolve.c:1827 | |
43287 | #, gcc-internal-format, gfc-internal-format | |
43288 | msgid "Coindexed actual argument at %L with ultimate pointer component" | |
43289 | msgstr "Argumento actual coindizado en %L con componente puntero último" | |
43290 | ||
43291 | -#: fortran/resolve.c:1960 | |
43292 | +#: fortran/resolve.c:1950 | |
43293 | #, gcc-internal-format, gfc-internal-format | |
43294 | msgid "'%s' at %L is an array and OPTIONAL; IF IT IS MISSING, it cannot be the actual argument of an ELEMENTAL procedure unless there is a non-optional argument with the same rank (12.4.1.5)" | |
43295 | msgstr "'%s' en %L es una matriz y OPTIONAL; SI FALTA, no puede ser el argumento actual de un procedimiento ELEMENTAL a menos que exista un argumento que no sea opcional con el mismo rango (12.4.1.5)" | |
43296 | ||
43297 | -#: fortran/resolve.c:1999 | |
43298 | +#: fortran/resolve.c:1989 | |
43299 | #, gcc-internal-format, gfc-internal-format | |
43300 | msgid "Actual argument at %L for INTENT(%s) dummy '%s' of ELEMENTAL subroutine '%s' is a scalar, but another actual argument is an array" | |
43301 | msgstr "El argumento actual en %L para el dummy INTENT(%s) '%s' de la subrutina ELEMENTAL '%s' es un escalar, pero otro argumento actual es una matriz" | |
43302 | ||
43303 | -#: fortran/resolve.c:2161 | |
43304 | +#: fortran/resolve.c:2151 | |
43305 | #, gcc-internal-format, gfc-internal-format | |
43306 | msgid "Character length mismatch in return type of function '%s' at %L (%ld/%ld)" | |
43307 | msgstr "No coincide la longitud de caracteres en el tipo de devolución de la función '%s' en %L (%ld/%ld)" | |
43308 | ||
43309 | -#: fortran/resolve.c:2169 | |
43310 | +#: fortran/resolve.c:2159 | |
43311 | #, gcc-internal-format, gfc-internal-format | |
43312 | msgid "Return type mismatch of function '%s' at %L (%s/%s)" | |
43313 | msgstr "No coincide el tiop de devolución de la función '%s' en %L (%s/%s)" | |
43314 | ||
43315 | -#: fortran/resolve.c:2188 | |
43316 | +#: fortran/resolve.c:2178 | |
43317 | #, gcc-internal-format, gfc-internal-format | |
43318 | msgid "Dummy argument '%s' of procedure '%s' at %L has an attribute that requires an explicit interface for this procedure" | |
43319 | msgstr "El argumento dummy '%s' del procedimiento '%s' en %L tiene un atributo que requiere una interfaz explícita para este procedimiento" | |
43320 | ||
43321 | -#: fortran/resolve.c:2198 | |
43322 | +#: fortran/resolve.c:2188 | |
43323 | #, gcc-internal-format, gfc-internal-format | |
43324 | msgid "Procedure '%s' at %L with assumed-shape dummy argument '%s' must have an explicit interface" | |
43325 | msgstr "El procedimiento '%s' en %L con argumento dummy de forma asumida '%s' debe tener una interfaz explícita" | |
43326 | ||
43327 | -#: fortran/resolve.c:2206 | |
43328 | +#: fortran/resolve.c:2196 | |
43329 | #, gcc-internal-format, gfc-internal-format | |
43330 | msgid "Procedure '%s' at %L with coarray dummy argument '%s' must have an explicit interface" | |
43331 | msgstr "El procedimiento '%s' en %L con argumento dummy de comatriz '%s' debe tener una interfaz explícita" | |
43332 | ||
43333 | -#: fortran/resolve.c:2214 | |
43334 | +#: fortran/resolve.c:2204 | |
43335 | #, gcc-internal-format, gfc-internal-format | |
43336 | msgid "Procedure '%s' at %L with parametrized derived type argument '%s' must have an explicit interface" | |
43337 | msgstr "El procedimiento '%s' en %L con un argumento de tipo derivado parametrizado '%s' debe tener una interfaz explícita" | |
43338 | ||
43339 | -#: fortran/resolve.c:2223 | |
43340 | +#: fortran/resolve.c:2213 | |
43341 | #, gcc-internal-format, gfc-internal-format | |
43342 | msgid "Procedure '%s' at %L with polymorphic dummy argument '%s' must have an explicit interface" | |
43343 | msgstr "El procedimiento '%s' en %L con argumento dummy polimórfico '%s' debe tener una interfaz explícita" | |
43344 | ||
43345 | -#: fortran/resolve.c:2235 | |
43346 | +#: fortran/resolve.c:2225 | |
43347 | #, gcc-internal-format, gfc-internal-format | |
43348 | msgid "The reference to function '%s' at %L either needs an explicit INTERFACE or the rank is incorrect" | |
43349 | msgstr "La referencia a la función '%s' en %L necesita una INTERFACE explícita o el rango es incorrecto" | |
43350 | ||
43351 | -#: fortran/resolve.c:2247 | |
43352 | +#: fortran/resolve.c:2237 | |
43353 | #, gcc-internal-format, gfc-internal-format | |
43354 | msgid "Function '%s' at %L with a POINTER or ALLOCATABLE result must have an explicit interface" | |
43355 | msgstr "La función '%s' en %L con un resultado POINTER o ALLOCATABLE debe tener una interfaz explícita" | |
43356 | ||
43357 | -#: fortran/resolve.c:2260 | |
43358 | +#: fortran/resolve.c:2250 | |
43359 | #, gcc-internal-format, gfc-internal-format | |
43360 | msgid "Nonconstant character-length function '%s' at %L must have an explicit interface" | |
43361 | msgstr "La función de longitud de carácter automática '%s' que no es constante en %L debe una interfaz explícita" | |
43362 | ||
43363 | -#: fortran/resolve.c:2270 | |
43364 | +#: fortran/resolve.c:2260 | |
43365 | #, gcc-internal-format, gfc-internal-format | |
43366 | msgid "ELEMENTAL procedure '%s' at %L must have an explicit interface" | |
43367 | msgstr "El procedimiento ELEMENTAL '%s' en %L debe tener una interfaz explícita" | |
43368 | ||
43369 | -#: fortran/resolve.c:2277 | |
43370 | +#: fortran/resolve.c:2267 | |
43371 | #, gcc-internal-format, gfc-internal-format | |
43372 | msgid "Procedure '%s' at %L with BIND(C) attribute must have an explicit interface" | |
43373 | msgstr "El procedimiento '%s' en %L con atributo BIND(C) debe tener una interfaz explícita" | |
43374 | ||
43375 | -#: fortran/resolve.c:2383 | |
43376 | +#: fortran/resolve.c:2373 | |
43377 | #, gcc-internal-format, gfc-internal-format | |
43378 | msgid "There is no specific function for the generic '%s' at %L" | |
43379 | msgstr "No hay una función específica para el genérico '%s' en %L" | |
43380 | ||
43381 | -#: fortran/resolve.c:2401 | |
43382 | +#: fortran/resolve.c:2391 | |
43383 | #, gcc-internal-format, gfc-internal-format | |
43384 | msgid "Generic function '%s' at %L is not consistent with a specific intrinsic interface" | |
43385 | msgstr "La función genérica '%s' en %L no es consistente con una interfaz intrínseca específica" | |
43386 | ||
43387 | -#: fortran/resolve.c:2439 | |
43388 | +#: fortran/resolve.c:2429 | |
43389 | #, gcc-internal-format, gfc-internal-format | |
43390 | msgid "Function '%s' at %L is INTRINSIC but is not compatible with an intrinsic" | |
43391 | msgstr "La función '%s' en %L es INTRINSIC pero no es compatible con un intrínseco" | |
43392 | ||
43393 | -#: fortran/resolve.c:2488 | |
43394 | +#: fortran/resolve.c:2478 | |
43395 | #, gcc-internal-format, gfc-internal-format | |
43396 | msgid "Unable to resolve the specific function '%s' at %L" | |
43397 | msgstr "No se puede resolver la función específica '%s' en %L" | |
43398 | ||
43399 | -#: fortran/resolve.c:2544 fortran/resolve.c:13705 | |
43400 | +#: fortran/resolve.c:2534 fortran/resolve.c:13693 | |
43401 | #, gcc-internal-format, gfc-internal-format | |
43402 | msgid "Function '%s' at %L has no IMPLICIT type" | |
43403 | msgstr "La función '%s' en %L no es de tipo IMPLICIT" | |
43404 | ||
43405 | -#: fortran/resolve.c:2746 | |
43406 | +#: fortran/resolve.c:2735 | |
43407 | #, gcc-internal-format, gfc-internal-format | |
43408 | msgid "Argument to '%s' at %L is not a variable" | |
43409 | msgstr "El argumento de '%s' en %L no es una variable" | |
43410 | ||
43411 | -#: fortran/resolve.c:2793 | |
43412 | +#: fortran/resolve.c:2779 | |
43413 | #, gcc-internal-format, gfc-internal-format | |
43414 | msgid "More actual than formal arguments in '%s' call at %L" | |
43415 | msgstr "Más argumentos actuales que formales en la llamada '%s' en %L" | |
43416 | ||
43417 | -#: fortran/resolve.c:2805 | |
43418 | +#: fortran/resolve.c:2791 | |
43419 | #, gcc-internal-format, gfc-internal-format | |
43420 | msgid "Parameter '%s' to '%s' at %L must be either a TARGET or an associated pointer" | |
43421 | msgstr "El parámetro '%s' para '%s' en %L debe ser un TARGET o un puntero asociado" | |
43422 | ||
43423 | -#: fortran/resolve.c:2814 | |
43424 | +#: fortran/resolve.c:2800 | |
43425 | #, gcc-internal-format, gfc-internal-format | |
43426 | msgid "Coindexed argument not permitted in '%s' call at %L" | |
43427 | msgstr "No se permite un argumento coindizado en la llamada '%s' en %L" | |
43428 | ||
43429 | -#: fortran/resolve.c:2837 | |
43430 | +#: fortran/resolve.c:2823 | |
43431 | #, gcc-internal-format, gfc-internal-format | |
43432 | msgid "Array section not permitted in '%s' call at %L" | |
43433 | msgstr "No se permite una sección de matriz en la llamada '%s' en %L" | |
43434 | ||
43435 | -#: fortran/resolve.c:2848 | |
43436 | +#: fortran/resolve.c:2834 | |
43437 | #, gcc-internal-format, gfc-internal-format | |
43438 | msgid "Array section in '%s' call at %L" | |
43439 | msgstr "Sección de matriz en la llamada '%s' en %L" | |
43440 | ||
43441 | -#: fortran/resolve.c:2867 | |
43442 | +#: fortran/resolve.c:2853 | |
43443 | #, gcc-internal-format, gfc-internal-format | |
43444 | msgid "Allocatable variable '%s' used as a parameter to '%s' at %L must not be an array of zero size" | |
43445 | msgstr "La variable alojable '%s' usada como un parámetro para '%s' en %L no debe ser una matriz de tamaño cero" | |
43446 | ||
43447 | -#: fortran/resolve.c:2884 | |
43448 | +#: fortran/resolve.c:2870 | |
43449 | #, gcc-internal-format, gfc-internal-format | |
43450 | msgid "Assumed-shape array '%s' at %L cannot be an argument to the procedure '%s' because it is not C interoperable" | |
43451 | msgstr "La matriz de forma asumida '%s' en %L no puede ser un argumento para el procedimiento '%s' porque no es interoperable con C" | |
43452 | ||
43453 | -#: fortran/resolve.c:2894 | |
43454 | +#: fortran/resolve.c:2880 | |
43455 | #, gcc-internal-format, gfc-internal-format | |
43456 | msgid "Deferred-shape array '%s' at %L cannot be an argument to the procedure '%s' because it is not C interoperable" | |
43457 | msgstr "La matriz de forma diferida '%s' en %L no puede ser un argumento para el procedimiento '%s' porque no es interoperable con C" | |
43458 | ||
43459 | -#: fortran/resolve.c:2917 fortran/resolve.c:2954 | |
43460 | +#: fortran/resolve.c:2903 fortran/resolve.c:2940 | |
43461 | #, gcc-internal-format, gfc-internal-format | |
43462 | msgid "CHARACTER argument '%s' to '%s' at %L must have a length of 1" | |
43463 | msgstr "El argumento CHARACTER '%s' para '%s' en %L debe ser de longitud 1" | |
43464 | ||
43465 | #. Case 1c, section 15.1.2.5, J3/04-007: an associated | |
43466 | #. scalar pointer. | |
43467 | -#: fortran/resolve.c:2930 | |
43468 | +#: fortran/resolve.c:2916 | |
43469 | #, gcc-internal-format, gfc-internal-format | |
43470 | msgid "Argument '%s' to '%s' at %L must be an associated scalar POINTER" | |
43471 | msgstr "El argumento '%s' para '%s' en %L debe ser un POINTER escalar asociado" | |
43472 | ||
43473 | -#: fortran/resolve.c:2946 | |
43474 | +#: fortran/resolve.c:2932 | |
43475 | #, gcc-internal-format, gfc-internal-format | |
43476 | msgid "Parameter '%s' to '%s' at %L must be a scalar" | |
43477 | msgstr "El argumento '%s' para '%s' en %L debe ser un escalar" | |
43478 | ||
43479 | -#: fortran/resolve.c:2962 | |
43480 | +#: fortran/resolve.c:2948 | |
43481 | #, gcc-internal-format, gfc-internal-format | |
43482 | msgid "Parameter '%s' to '%s' at %L must not be polymorphic" | |
43483 | msgstr "El parámetro '%s' para '%s' en %L no debe ser polimórfico" | |
43484 | ||
43485 | #. TODO: Update this error message to allow for procedure | |
43486 | #. pointers once they are implemented. | |
43487 | -#: fortran/resolve.c:2975 | |
43488 | +#: fortran/resolve.c:2961 | |
43489 | #, gcc-internal-format, gfc-internal-format | |
43490 | msgid "Parameter '%s' to '%s' at %L must be a procedure" | |
43491 | msgstr "El parámetro '%s' para '%s' en %L debe ser un procedimiento" | |
43492 | ||
43493 | -#: fortran/resolve.c:2983 | |
43494 | +#: fortran/resolve.c:2969 | |
43495 | #, gcc-internal-format, gfc-internal-format | |
43496 | msgid "Parameter '%s' to '%s' at %L must be BIND(C)" | |
43497 | msgstr "El parámetro '%s' para '%s' en %L debe ser BIND(C)" | |
43498 | ||
43499 | -#: fortran/resolve.c:3032 | |
43500 | +#: fortran/resolve.c:3018 | |
43501 | #, gcc-internal-format, gfc-internal-format | |
43502 | msgid "'%s' at %L is not a function" | |
43503 | msgstr "'%s' en %L no es una función" | |
43504 | ||
43505 | -#: fortran/resolve.c:3040 fortran/resolve.c:3670 | |
43506 | +#: fortran/resolve.c:3026 fortran/resolve.c:3657 | |
43507 | #, gcc-internal-format, gfc-internal-format | |
43508 | msgid "ABSTRACT INTERFACE '%s' must not be referenced at %L" | |
43509 | msgstr "La ABSTRACT INTERFACE '%s' no se debe referenciar en %L" | |
43510 | ||
43511 | #. Internal procedures are taken care of in resolve_contained_fntype. | |
43512 | -#: fortran/resolve.c:3095 | |
43513 | +#: fortran/resolve.c:3081 | |
43514 | #, gcc-internal-format, gfc-internal-format | |
43515 | msgid "Function '%s' is declared CHARACTER(*) and cannot be used at %L since it is not a dummy argument" | |
43516 | msgstr "La función '%s' se declara CHARACTER(*) y no se puede usar en %L ya que no es un argumento de prueba" | |
43517 | ||
43518 | -#: fortran/resolve.c:3148 | |
43519 | +#: fortran/resolve.c:3134 | |
43520 | #, gcc-internal-format, gfc-internal-format | |
43521 | msgid "User defined non-ELEMENTAL function '%s' at %L not allowed in WORKSHARE construct" | |
43522 | msgstr "La función definida por el usuario '%s' que no es ELEMENTAL en %L no se permite en la construcción WORKSHARE" | |
43523 | ||
43524 | -#: fortran/resolve.c:3198 | |
43525 | +#: fortran/resolve.c:3184 | |
43526 | #, gcc-internal-format, gfc-internal-format | |
43527 | msgid "Reference to non-PURE function '%s' at %L inside a FORALL %s" | |
43528 | msgstr "La referencia a la función '%s' que no es PURE en %L está dentro de un FORALL %s" | |
43529 | ||
43530 | -#: fortran/resolve.c:3205 | |
43531 | +#: fortran/resolve.c:3191 | |
43532 | #, gcc-internal-format, gfc-internal-format | |
43533 | msgid "Reference to non-PURE function '%s' at %L inside a DO CONCURRENT %s" | |
43534 | msgstr "La referencia a la función '%s' que no es PURE en %L está dentro de un DO CONCURRENT %s" | |
43535 | ||
43536 | -#: fortran/resolve.c:3212 | |
43537 | +#: fortran/resolve.c:3198 | |
43538 | #, gcc-internal-format, gfc-internal-format | |
43539 | msgid "Function reference to '%s' at %L is to a non-PURE procedure within a PURE procedure" | |
43540 | msgstr "La referencia de función a '%s' en %L apunta a un procedimiento que no es PURE dentro de un procedimiento PURE" | |
43541 | ||
43542 | -#: fortran/resolve.c:3231 | |
43543 | +#: fortran/resolve.c:3217 | |
43544 | #, gcc-internal-format, gfc-internal-format | |
43545 | msgid "ENTRY '%s' at %L cannot be called recursively, as function '%s' is not RECURSIVE" | |
43546 | msgstr "ENTRY '%s' en %L no se puede llamar recursivamente, porque la función '%s' no es RECURSIVE" | |
43547 | ||
43548 | -#: fortran/resolve.c:3235 | |
43549 | +#: fortran/resolve.c:3221 | |
43550 | #, gcc-internal-format, gfc-internal-format | |
43551 | msgid "Function '%s' at %L cannot be called recursively, as it is not RECURSIVE" | |
43552 | msgstr "La función '%s' en %L no se puede llamar recursivamente, porque no es RECURSIVE" | |
43553 | ||
43554 | -#: fortran/resolve.c:3274 | |
43555 | +#: fortran/resolve.c:3260 | |
43556 | #, gcc-internal-format, gfc-internal-format | |
43557 | msgid "Subroutine call to '%s' in FORALL block at %L is not PURE" | |
43558 | msgstr "La llamada a subrutina a '%s' en el bloque FORALL en %L no es PURE" | |
43559 | ||
43560 | -#: fortran/resolve.c:3277 | |
43561 | +#: fortran/resolve.c:3263 | |
43562 | #, gcc-internal-format, gfc-internal-format | |
43563 | msgid "Subroutine call to '%s' in DO CONCURRENT block at %L is not PURE" | |
43564 | msgstr "La llamada a subrutina a '%s' en el bloque DO CONCURRENT en %L no es PURE" | |
43565 | ||
43566 | -#: fortran/resolve.c:3280 | |
43567 | +#: fortran/resolve.c:3266 | |
43568 | #, gcc-internal-format, gfc-internal-format | |
43569 | msgid "Subroutine call to '%s' at %L is not PURE" | |
43570 | msgstr "La llamada a subrutina a '%s' en %L no es PURE" | |
43571 | ||
43572 | -#: fortran/resolve.c:3346 | |
43573 | +#: fortran/resolve.c:3332 | |
43574 | #, gcc-internal-format, gfc-internal-format | |
43575 | msgid "There is no specific subroutine for the generic '%s' at %L" | |
43576 | msgstr "No hay una subrutina específica para el genérico '%s' en %L" | |
43577 | ||
43578 | -#: fortran/resolve.c:3355 | |
43579 | +#: fortran/resolve.c:3341 | |
43580 | #, gcc-internal-format, gfc-internal-format | |
43581 | msgid "Generic subroutine '%s' at %L is not consistent with an intrinsic subroutine interface" | |
43582 | msgstr "La subrutina genérica '%s' en %L no es consistente con una interfaz de subrutina intrínseca" | |
43583 | ||
43584 | -#: fortran/resolve.c:3463 | |
43585 | +#: fortran/resolve.c:3450 | |
43586 | #, gcc-internal-format, gfc-internal-format | |
43587 | msgid "Missing SHAPE parameter for call to %s at %L" | |
43588 | msgstr "Falta el parámetro SHAPE para la llamada a %s en %L" | |
43589 | ||
43590 | -#: fortran/resolve.c:3471 | |
43591 | +#: fortran/resolve.c:3458 | |
43592 | #, gcc-internal-format, gfc-internal-format | |
43593 | msgid "SHAPE parameter for call to %s at %L must be a rank 1 INTEGER array" | |
43594 | msgstr "El parámetro SHAPE para la llamada a %s en %L debe ser una matriz INTEGER de rango 1" | |
43595 | ||
43596 | -#: fortran/resolve.c:3538 | |
43597 | +#: fortran/resolve.c:3525 | |
43598 | #, gcc-internal-format, gfc-internal-format | |
43599 | msgid "Subroutine '%s' at %L is INTRINSIC but is not compatible with an intrinsic" | |
43600 | msgstr "La subrutina '%s' en %L es INTRINSIC pero no es compatible con un intrínseco" | |
43601 | ||
43602 | -#: fortran/resolve.c:3582 | |
43603 | +#: fortran/resolve.c:3569 | |
43604 | #, gcc-internal-format, gfc-internal-format | |
43605 | msgid "Unable to resolve the specific subroutine '%s' at %L" | |
43606 | msgstr "No se puede resolver la subrutina específica '%s' en %L" | |
43607 | ||
43608 | -#: fortran/resolve.c:3642 | |
43609 | +#: fortran/resolve.c:3629 | |
43610 | #, gcc-internal-format, gfc-internal-format | |
43611 | msgid "'%s' at %L has a type, which is not consistent with the CALL at %L" | |
43612 | msgstr "'%s' en %L tiene un tipo, el cual no es consistente con CALL en %L" | |
43613 | ||
43614 | -#: fortran/resolve.c:3680 | |
43615 | +#: fortran/resolve.c:3667 | |
43616 | #, gcc-internal-format, gfc-internal-format | |
43617 | msgid "ENTRY '%s' at %L cannot be called recursively, as subroutine '%s' is not RECURSIVE" | |
43618 | msgstr "ENTRY '%s' en %L no se puede llamar recursivamente, porque la subrutina '%s' no es RECURSIVE" | |
43619 | ||
43620 | -#: fortran/resolve.c:3684 | |
43621 | +#: fortran/resolve.c:3671 | |
43622 | #, gcc-internal-format, gfc-internal-format | |
43623 | msgid "SUBROUTINE '%s' at %L cannot be called recursively, as it is not RECURSIVE" | |
43624 | msgstr "SUBROUTINE '%s' en %L no se puede llamar recursivamente, porque no es RECURSIVE" | |
43625 | ||
43626 | -#: fortran/resolve.c:3760 | |
43627 | +#: fortran/resolve.c:3747 | |
43628 | #, gcc-internal-format, gfc-internal-format | |
43629 | msgid "Shapes for operands at %L and %L are not conformable" | |
43630 | msgstr "Las formas para los operandos en %L y %L no son conformables" | |
43631 | ||
43632 | -#: fortran/resolve.c:4258 | |
43633 | +#: fortran/resolve.c:4245 | |
43634 | #, gcc-internal-format, gfc-internal-format | |
43635 | msgid "Array reference at %L is out of bounds (%ld < %ld) in dimension %d" | |
43636 | msgstr "La referencia de matriz en %L está fuera de los límites (%ld < %ld) en la dimensión %d" | |
43637 | ||
43638 | -#: fortran/resolve.c:4263 | |
43639 | +#: fortran/resolve.c:4250 | |
43640 | #, gcc-internal-format, gfc-internal-format | |
43641 | msgid "Array reference at %L is out of bounds (%ld < %ld) in codimension %d" | |
43642 | msgstr "La referencia de matriz en %L está fuera de los límites (%ld < %ld) en la codimensión %d" | |
43643 | ||
43644 | -#: fortran/resolve.c:4273 | |
43645 | +#: fortran/resolve.c:4260 | |
43646 | #, gcc-internal-format, gfc-internal-format | |
43647 | msgid "Array reference at %L is out of bounds (%ld > %ld) in dimension %d" | |
43648 | msgstr "La referencia de matriz en %L está fuera de los límites (%ld > %ld) en la dimensión %d" | |
43649 | ||
43650 | -#: fortran/resolve.c:4278 | |
43651 | +#: fortran/resolve.c:4265 | |
43652 | #, gcc-internal-format, gfc-internal-format | |
43653 | msgid "Array reference at %L is out of bounds (%ld > %ld) in codimension %d" | |
43654 | msgstr "La referencia de matriz en %L está fuera de los límites (%ld > %ld) en la codimensión %d" | |
43655 | ||
43656 | -#: fortran/resolve.c:4298 | |
43657 | +#: fortran/resolve.c:4285 | |
43658 | #, gcc-internal-format, gfc-internal-format | |
43659 | msgid "Illegal stride of zero at %L" | |
43660 | msgstr "Tranco ilegal de cero en %L" | |
43661 | ||
43662 | -#: fortran/resolve.c:4315 | |
43663 | +#: fortran/resolve.c:4302 | |
43664 | #, gcc-internal-format, gfc-internal-format | |
43665 | msgid "Lower array reference at %L is out of bounds (%ld < %ld) in dimension %d" | |
43666 | msgstr "La referencia de matriz inferior en %L está fuera de los límites (%ld < %ld) en la dimensión %d" | |
43667 | ||
43668 | -#: fortran/resolve.c:4323 | |
43669 | +#: fortran/resolve.c:4310 | |
43670 | #, gcc-internal-format, gfc-internal-format | |
43671 | msgid "Lower array reference at %L is out of bounds (%ld > %ld) in dimension %d" | |
43672 | msgstr "La referencia de matriz inferior en %L está fuera de los límites (%ld > %ld) en la dimensión %d" | |
43673 | ||
43674 | -#: fortran/resolve.c:4339 | |
43675 | +#: fortran/resolve.c:4326 | |
43676 | #, gcc-internal-format, gfc-internal-format | |
43677 | msgid "Upper array reference at %L is out of bounds (%ld < %ld) in dimension %d" | |
43678 | msgstr "La referencia de matriz superior en %L está fuera de los límites (%ld < %ld) en la dimensión %d" | |
43679 | ||
43680 | -#: fortran/resolve.c:4348 | |
43681 | +#: fortran/resolve.c:4335 | |
43682 | #, gcc-internal-format, gfc-internal-format | |
43683 | msgid "Upper array reference at %L is out of bounds (%ld > %ld) in dimension %d" | |
43684 | msgstr "La referencia de matriz superior en %L está fuera de los límites (%ld > %ld) en la dimensión %d" | |
43685 | ||
43686 | -#: fortran/resolve.c:4387 | |
43687 | +#: fortran/resolve.c:4374 | |
43688 | #, gcc-internal-format, gfc-internal-format | |
43689 | msgid "Rightmost upper bound of assumed size array section not specified at %L" | |
43690 | msgstr "No se especificó el límite superior a la derecha de la sección de matriz de tamaño asumido en %L" | |
43691 | ||
43692 | -#: fortran/resolve.c:4397 | |
43693 | +#: fortran/resolve.c:4384 | |
43694 | #, gcc-internal-format, gfc-internal-format | |
43695 | msgid "Rank mismatch in array reference at %L (%d/%d)" | |
43696 | msgstr "El rango no coincide en la referencia de matriz en %L (%d/%d)" | |
43697 | ||
43698 | -#: fortran/resolve.c:4405 | |
43699 | +#: fortran/resolve.c:4392 | |
43700 | #, gcc-internal-format, gfc-internal-format | |
43701 | msgid "Coindex rank mismatch in array reference at %L (%d/%d)" | |
43702 | msgstr "El rango de coíndice no coincide en la referencia de matriz en %L (%d/%d)" | |
43703 | ||
43704 | -#: fortran/resolve.c:4421 | |
43705 | +#: fortran/resolve.c:4408 | |
43706 | #, gcc-internal-format, gfc-internal-format | |
43707 | msgid "Coindex of codimension %d must be a scalar at %L" | |
43708 | msgstr "El coíndice en la codimensión %d debe ser un escalar en %L" | |
43709 | ||
43710 | -#: fortran/resolve.c:4449 | |
43711 | +#: fortran/resolve.c:4436 | |
43712 | #, gcc-internal-format, gfc-internal-format | |
43713 | msgid "Array index at %L must be scalar" | |
43714 | msgstr "El índice de matriz en %L debe ser escalar" | |
43715 | ||
43716 | -#: fortran/resolve.c:4455 | |
43717 | +#: fortran/resolve.c:4442 | |
43718 | #, gcc-internal-format, gfc-internal-format | |
43719 | msgid "Array index at %L must be of INTEGER type, found %s" | |
43720 | msgstr "El índice de matriz en %L debe ser de tipo INTEGER, se encontró %s" | |
43721 | ||
43722 | -#: fortran/resolve.c:4461 | |
43723 | +#: fortran/resolve.c:4448 | |
43724 | #, gcc-internal-format, gfc-internal-format | |
43725 | msgid "Extension: REAL array index at %L" | |
43726 | msgstr "Extensión: índice de matriz REAL en %L" | |
43727 | ||
43728 | -#: fortran/resolve.c:4500 | |
43729 | +#: fortran/resolve.c:4487 | |
43730 | #, gcc-internal-format, gfc-internal-format | |
43731 | msgid "Argument dim at %L must be scalar" | |
43732 | msgstr "El argumento dim en %L debe ser escalar" | |
43733 | ||
43734 | -#: fortran/resolve.c:4507 | |
43735 | +#: fortran/resolve.c:4494 | |
43736 | #, gcc-internal-format, gfc-internal-format | |
43737 | msgid "Argument dim at %L must be of INTEGER type" | |
43738 | msgstr "El argumento dim en %L debe ser de tipo entero" | |
43739 | ||
43740 | -#: fortran/resolve.c:4617 | |
43741 | +#: fortran/resolve.c:4604 | |
43742 | #, gcc-internal-format, gfc-internal-format | |
43743 | msgid "Array index at %L is an array of rank %d" | |
43744 | msgstr "El índice de matriz en %L es una matriz de rango %d" | |
43745 | ||
43746 | -#: fortran/resolve.c:4715 | |
43747 | +#: fortran/resolve.c:4702 | |
43748 | #, gcc-internal-format, gfc-internal-format | |
43749 | msgid "Substring start index at %L must be of type INTEGER" | |
43750 | msgstr "El índice de inicio de la subcadena en %L debe ser de tipo INTEGER" | |
43751 | ||
43752 | -#: fortran/resolve.c:4722 | |
43753 | +#: fortran/resolve.c:4709 | |
43754 | #, gcc-internal-format, gfc-internal-format | |
43755 | msgid "Substring start index at %L must be scalar" | |
43756 | msgstr "El índice de inicio de la subcadena en %L debe ser escalar" | |
43757 | ||
43758 | -#: fortran/resolve.c:4731 | |
43759 | +#: fortran/resolve.c:4718 | |
43760 | #, gcc-internal-format, gfc-internal-format | |
43761 | msgid "Substring start index at %L is less than one" | |
43762 | msgstr "El índice de inicio de la subcadena en %L es menor a uno" | |
43763 | ||
43764 | -#: fortran/resolve.c:4744 | |
43765 | +#: fortran/resolve.c:4731 | |
43766 | #, gcc-internal-format, gfc-internal-format | |
43767 | msgid "Substring end index at %L must be of type INTEGER" | |
43768 | msgstr "El índice de final de la subcadena en %L debe ser de tipo INTEGER" | |
43769 | ||
43770 | -#: fortran/resolve.c:4751 | |
43771 | +#: fortran/resolve.c:4738 | |
43772 | #, gcc-internal-format, gfc-internal-format | |
43773 | msgid "Substring end index at %L must be scalar" | |
43774 | msgstr "El índice de final de la subcadena en %L debe ser escalar" | |
43775 | ||
43776 | -#: fortran/resolve.c:4761 | |
43777 | +#: fortran/resolve.c:4748 | |
43778 | #, gcc-internal-format, gfc-internal-format | |
43779 | msgid "Substring end index at %L exceeds the string length" | |
43780 | msgstr "El índice de final de la subcadena en %L excede la longitud de la cadena" | |
43781 | ||
43782 | -#: fortran/resolve.c:4771 | |
43783 | +#: fortran/resolve.c:4758 | |
43784 | #, gcc-internal-format, gfc-internal-format | |
43785 | msgid "Substring end index at %L is too large" | |
43786 | msgstr "El índice de final de la subcadena en %L es demasiado grande" | |
43787 | ||
43788 | -#: fortran/resolve.c:4917 | |
43789 | +#: fortran/resolve.c:4904 | |
43790 | #, gcc-internal-format, gfc-internal-format | |
43791 | msgid "Component to the right of a part reference with nonzero rank must not have the POINTER attribute at %L" | |
43792 | msgstr "El componente a la derecha de una referencia de parte con rango que no es cero no debe tener el atributo POINTER en %L" | |
43793 | ||
43794 | -#: fortran/resolve.c:4924 | |
43795 | +#: fortran/resolve.c:4911 | |
43796 | #, gcc-internal-format, gfc-internal-format | |
43797 | msgid "Component to the right of a part reference with nonzero rank must not have the ALLOCATABLE attribute at %L" | |
43798 | msgstr "El componente a la derecha de una referencia de parte con rango que no es cero no debe tener el atributo ALLOCATABLE en %L" | |
43799 | ||
43800 | -#: fortran/resolve.c:4943 | |
43801 | +#: fortran/resolve.c:4930 | |
43802 | #, gcc-internal-format, gfc-internal-format | |
43803 | msgid "Two or more part references with nonzero rank must not be specified at %L" | |
43804 | msgstr "No se deben especificar dos o más referencias de parte con rango que no es cero en %L" | |
43805 | ||
43806 | -#: fortran/resolve.c:5148 | |
43807 | +#: fortran/resolve.c:5135 | |
43808 | #, gcc-internal-format, gfc-internal-format | |
43809 | msgid "Variable '%s', used in a specification expression, is referenced at %L before the ENTRY statement in which it is a parameter" | |
43810 | msgstr "La variable '%s', usada en una expresión de especificación, se referencía en %L antes de la declaración ENTRY en la cual es un parámetro" | |
43811 | ||
43812 | -#: fortran/resolve.c:5153 | |
43813 | +#: fortran/resolve.c:5140 | |
43814 | #, gcc-internal-format, gfc-internal-format | |
43815 | msgid "Variable '%s' is used at %L before the ENTRY statement in which it is a parameter" | |
43816 | msgstr "La variable '%s' se usa en %L antes de la declaración ENTRY en la cual es un parámetro" | |
43817 | ||
43818 | -#: fortran/resolve.c:5217 | |
43819 | +#: fortran/resolve.c:5204 | |
43820 | #, gcc-internal-format, gfc-internal-format | |
43821 | msgid "Polymorphic subobject of coindexed object at %L" | |
43822 | msgstr "Subobjecto polimórfico de un objeto coindizado en %L" | |
43823 | ||
43824 | -#: fortran/resolve.c:5230 | |
43825 | +#: fortran/resolve.c:5217 | |
43826 | #, gcc-internal-format, gfc-internal-format | |
43827 | msgid "Coindexed object with polymorphic allocatable subcomponent at %L" | |
43828 | msgstr "Objeto coindizado con subcomponente alojable polimórfico en %L" | |
43829 | ||
43830 | -#: fortran/resolve.c:5556 | |
43831 | +#: fortran/resolve.c:5543 | |
43832 | #, gcc-internal-format, gfc-internal-format | |
43833 | msgid "Passed-object at %L must be scalar" | |
43834 | msgstr "El objeto pasado en %L debe ser escalar" | |
43835 | ||
43836 | -#: fortran/resolve.c:5563 | |
43837 | +#: fortran/resolve.c:5550 | |
43838 | #, gcc-internal-format, gfc-internal-format | |
43839 | msgid "Base object for procedure-pointer component call at %L is of ABSTRACT type '%s'" | |
43840 | msgstr "El objeto base para la llamada a componente procedimiento-puntero en %L es de tipo ABSTRACT '%s'" | |
43841 | ||
43842 | -#: fortran/resolve.c:5595 | |
43843 | +#: fortran/resolve.c:5582 | |
43844 | #, gcc-internal-format, gfc-internal-format | |
43845 | msgid "Base object for type-bound procedure call at %L is of ABSTRACT type '%s'" | |
43846 | msgstr "El objeto base para la llamada a procedimiento enlazada a tipo en %L es de tipo ABSTRACT '%s'" | |
43847 | ||
43848 | -#: fortran/resolve.c:5604 | |
43849 | +#: fortran/resolve.c:5591 | |
43850 | #, gcc-internal-format, gfc-internal-format | |
43851 | msgid "Base object for NOPASS type-bound procedure call at %L must be scalar" | |
43852 | msgstr "El objeto base para la llamada a procedimiento enlazada a tipo NOPASS en %L debe ser escalar" | |
43853 | ||
43854 | #. Nothing matching found! | |
43855 | -#: fortran/resolve.c:5789 | |
43856 | +#: fortran/resolve.c:5776 | |
43857 | #, gcc-internal-format, gfc-internal-format | |
43858 | msgid "Found no matching specific binding for the call to the GENERIC '%s' at %L" | |
43859 | msgstr "No se encontró un enlace específico coincidente para la llamada al GENERIC '%s' en %L" | |
43860 | ||
43861 | -#: fortran/resolve.c:5816 | |
43862 | +#: fortran/resolve.c:5803 | |
43863 | #, gcc-internal-format, gfc-internal-format | |
43864 | msgid "'%s' at %L should be a SUBROUTINE" | |
43865 | msgstr "'%s' en %L debe ser una SUBROUTINE" | |
43866 | ||
43867 | -#: fortran/resolve.c:5863 | |
43868 | +#: fortran/resolve.c:5850 | |
43869 | #, gcc-internal-format, gfc-internal-format | |
43870 | msgid "'%s' at %L should be a FUNCTION" | |
43871 | msgstr "'%s' en %L debe ser una FUNCTION" | |
43872 | ||
43873 | -#: fortran/resolve.c:6380 | |
43874 | +#: fortran/resolve.c:6367 | |
43875 | #, gcc-internal-format, gfc-internal-format | |
43876 | msgid "%s at %L must be a scalar" | |
43877 | msgstr "%s en %L debe ser un escalar" | |
43878 | ||
43879 | -#: fortran/resolve.c:6390 | |
43880 | +#: fortran/resolve.c:6377 | |
43881 | #, gcc-internal-format, gfc-internal-format | |
43882 | msgid "Deleted feature: %s at %L must be integer" | |
43883 | msgstr "Característica eliminada: %s en %L debe ser entero" | |
43884 | ||
43885 | -#: fortran/resolve.c:6394 fortran/resolve.c:6401 | |
43886 | +#: fortran/resolve.c:6381 fortran/resolve.c:6388 | |
43887 | #, gcc-internal-format, gfc-internal-format | |
43888 | msgid "%s at %L must be INTEGER" | |
43889 | msgstr "%s en %L debe ser INTEGER" | |
43890 | ||
43891 | -#: fortran/resolve.c:6442 | |
43892 | +#: fortran/resolve.c:6429 | |
43893 | #, gcc-internal-format, gfc-internal-format | |
43894 | msgid "Step expression in DO loop at %L cannot be zero" | |
43895 | msgstr "La expresión de paso en el bucle DO en %L no puede ser cero" | |
43896 | ||
43897 | -#: fortran/resolve.c:6477 | |
43898 | +#: fortran/resolve.c:6464 | |
43899 | #, gcc-internal-format, gfc-internal-format | |
43900 | msgid "DO loop at %L will be executed zero times" | |
43901 | msgstr "El bucle DO en %L se ejecutará cero veces" | |
43902 | ||
43903 | -#: fortran/resolve.c:6538 | |
43904 | +#: fortran/resolve.c:6525 | |
43905 | #, gcc-internal-format, gfc-internal-format | |
43906 | msgid "FORALL index-name at %L must be a scalar INTEGER" | |
43907 | msgstr "El nombre de índice FORALL en %L debe ser un INTEGER escalar" | |
43908 | ||
43909 | -#: fortran/resolve.c:6543 | |
43910 | +#: fortran/resolve.c:6530 | |
43911 | #, gcc-internal-format, gfc-internal-format | |
43912 | msgid "FORALL start expression at %L must be a scalar INTEGER" | |
43913 | msgstr "La expresión de inicio FORALL en %L debe ser un INTEGER escalar" | |
43914 | ||
43915 | -#: fortran/resolve.c:6550 | |
43916 | +#: fortran/resolve.c:6537 | |
43917 | #, gcc-internal-format, gfc-internal-format | |
43918 | msgid "FORALL end expression at %L must be a scalar INTEGER" | |
43919 | msgstr "La expresión de fin FORALL en %L debe ser un INTEGER escalar" | |
43920 | ||
43921 | -#: fortran/resolve.c:6558 | |
43922 | +#: fortran/resolve.c:6545 | |
43923 | #, gcc-internal-format, gfc-internal-format | |
43924 | msgid "FORALL stride expression at %L must be a scalar %s" | |
43925 | msgstr "La expresión de tranco FORALL en %L debe ser un %s escalar" | |
43926 | ||
43927 | -#: fortran/resolve.c:6563 | |
43928 | +#: fortran/resolve.c:6550 | |
43929 | #, gcc-internal-format, gfc-internal-format | |
43930 | msgid "FORALL stride expression at %L cannot be zero" | |
43931 | msgstr "La expresión de tranco FORALL en %L no puede ser cero" | |
43932 | ||
43933 | -#: fortran/resolve.c:6579 | |
43934 | +#: fortran/resolve.c:6566 | |
43935 | #, gcc-internal-format, gfc-internal-format | |
43936 | msgid "FORALL index '%s' may not appear in triplet specification at %L" | |
43937 | msgstr "El índice FORALL '%s' no puede aparecer en la especificación triplet en %L" | |
43938 | ||
43939 | -#: fortran/resolve.c:6675 fortran/resolve.c:6958 | |
43940 | +#: fortran/resolve.c:6662 fortran/resolve.c:6945 | |
43941 | #, gcc-internal-format, gfc-internal-format | |
43942 | msgid "Allocate-object at %L must be ALLOCATABLE or a POINTER" | |
43943 | msgstr "El objeto de alojamiento en %L debe ser ALLOCATABLE o un POINTER" | |
43944 | ||
43945 | -#: fortran/resolve.c:6683 fortran/resolve.c:6924 | |
43946 | +#: fortran/resolve.c:6670 fortran/resolve.c:6911 | |
43947 | #, gcc-internal-format, gfc-internal-format | |
43948 | msgid "Coindexed allocatable object at %L" | |
43949 | msgstr "Objeto alojable coindizado en %L" | |
43950 | ||
43951 | -#: fortran/resolve.c:6788 | |
43952 | +#: fortran/resolve.c:6775 | |
43953 | #, gcc-internal-format, gfc-internal-format | |
43954 | msgid "Source-expr at %L must be scalar or have the same rank as the allocate-object at %L" | |
43955 | msgstr "La expresión fuente en %L debe ser escalar o tener el mismo rango que el objeto de alojamiento en %L" | |
43956 | ||
43957 | -#: fortran/resolve.c:6816 | |
43958 | +#: fortran/resolve.c:6803 | |
43959 | #, gcc-internal-format, gfc-internal-format | |
43960 | msgid "Source-expr at %L and allocate-object at %L must have the same shape" | |
43961 | msgstr "La expresión fuente en %L y el objeto de alojamiento en %L deben tener la misma forma" | |
43962 | ||
43963 | -#: fortran/resolve.c:6969 | |
43964 | +#: fortran/resolve.c:6956 | |
43965 | #, gcc-internal-format, gfc-internal-format | |
43966 | msgid "Type of entity at %L is type incompatible with source-expr at %L" | |
43967 | msgstr "El tipo de entidad en %L es de tipo incompatible con la expresión fuente en %L" | |
43968 | ||
43969 | -#: fortran/resolve.c:6982 | |
43970 | +#: fortran/resolve.c:6969 | |
43971 | #, gcc-internal-format, gfc-internal-format | |
43972 | msgid "The allocate-object at %L and the source-expr at %L shall have the same kind type parameter" | |
43973 | msgstr "El objeto de alojamiento en %L y la expresión fuente en %L deben tener el mismo parámetro de tipo de género" | |
43974 | ||
43975 | -#: fortran/resolve.c:6996 | |
43976 | +#: fortran/resolve.c:6983 | |
43977 | #, gcc-internal-format, gfc-internal-format | |
43978 | msgid "The source-expr at %L shall neither be of type LOCK_TYPE nor have a LOCK_TYPE component if allocate-object at %L is a coarray" | |
43979 | msgstr "La expresión fuente en %L no puede ser de tipo LOCK_TYPE ni tener un componente LOCK_TYPE si el objeto-alojado en %L es una comatriz" | |
43980 | ||
43981 | -#: fortran/resolve.c:7009 | |
43982 | +#: fortran/resolve.c:6996 | |
43983 | #, gcc-internal-format, gfc-internal-format | |
43984 | msgid "Allocating %s of ABSTRACT base type at %L requires a type-spec or source-expr" | |
43985 | msgstr "El alojamiento %s del tipo de base ABSTRACT en %L requiere una especificación de tipo o una expresión source" | |
43986 | ||
43987 | -#: fortran/resolve.c:7020 | |
43988 | +#: fortran/resolve.c:7007 | |
43989 | #, gcc-internal-format, gfc-internal-format | |
43990 | msgid "Allocating %s at %L with type-spec requires the same character-length parameter as in the declaration" | |
43991 | msgstr "Alojar %s en %L con especificación de tipo requiere el mismo parámetro de longitud de carácter que el de la declaración" | |
43992 | ||
43993 | -#: fortran/resolve.c:7105 | |
43994 | +#: fortran/resolve.c:7092 | |
43995 | #, gcc-internal-format, gfc-internal-format | |
43996 | msgid "Array specification required in ALLOCATE statement at %L" | |
43997 | msgstr "Se requiere una especificación de matriz en la declaración ALLOCATE en %L" | |
43998 | ||
43999 | -#: fortran/resolve.c:7119 | |
44000 | +#: fortran/resolve.c:7106 | |
44001 | #, gcc-internal-format, gfc-internal-format | |
44002 | msgid "Coarray specification required in ALLOCATE statement at %L" | |
44003 | msgstr "Se requiere una especificación de comatriz en la declaración ALLOCATE en %L" | |
44004 | ||
44005 | -#: fortran/resolve.c:7146 | |
44006 | +#: fortran/resolve.c:7133 | |
44007 | #, gcc-internal-format, gfc-internal-format | |
44008 | msgid "Bad array specification in ALLOCATE statement at %L" | |
44009 | msgstr "Especificación de matriz errónea en la declaración ALLOCATE en %L" | |
44010 | ||
44011 | -#: fortran/resolve.c:7165 | |
44012 | +#: fortran/resolve.c:7152 | |
44013 | #, gcc-internal-format, gfc-internal-format | |
44014 | msgid "'%s' must not appear in the array specification at %L in the same ALLOCATE statement where it is itself allocated" | |
44015 | msgstr "'%s' no debe aparecer en la especificación de matriz en %L en la misma declaración ALLOCATE donde se aloja a sí misma" | |
44016 | ||
44017 | -#: fortran/resolve.c:7180 | |
44018 | +#: fortran/resolve.c:7167 | |
44019 | #, gcc-internal-format, gfc-internal-format | |
44020 | msgid "Expected '*' in coindex specification in ALLOCATE statement at %L" | |
44021 | msgstr "Se esperaba '*' en la especificación de comatriz en la declaración ALLOCATE en %L" | |
44022 | ||
44023 | -#: fortran/resolve.c:7191 | |
44024 | +#: fortran/resolve.c:7178 | |
44025 | #, gcc-internal-format, gfc-internal-format | |
44026 | msgid "Bad coarray specification in ALLOCATE statement at %L" | |
44027 | msgstr "Especificación de comatriz errónea en la declaración ALLOCATE en %L" | |
44028 | ||
44029 | -#: fortran/resolve.c:7221 | |
44030 | +#: fortran/resolve.c:7208 | |
44031 | #, gcc-internal-format, gfc-internal-format | |
44032 | msgid "Stat-variable at %L must be a scalar INTEGER variable" | |
44033 | msgstr "La variable stat en %L debe ser una variable INTEGER escalar" | |
44034 | ||
44035 | -#: fortran/resolve.c:7244 | |
44036 | +#: fortran/resolve.c:7231 | |
44037 | #, gcc-internal-format, gfc-internal-format | |
44038 | msgid "Stat-variable at %L shall not be %sd within the same %s statement" | |
44039 | msgstr "La variable stat en %L no no debe ser %sd dentro de la misma declaración %s" | |
44040 | ||
44041 | -#: fortran/resolve.c:7255 | |
44042 | +#: fortran/resolve.c:7242 | |
44043 | #, gcc-internal-format, gfc-internal-format | |
44044 | msgid "ERRMSG at %L is useless without a STAT tag" | |
44045 | msgstr "ERRMSG en %L es inútil sin una etiqueta STAT" | |
44046 | ||
44047 | -#: fortran/resolve.c:7265 | |
44048 | +#: fortran/resolve.c:7252 | |
44049 | #, gcc-internal-format, gfc-internal-format | |
44050 | msgid "Errmsg-variable at %L must be a scalar CHARACTER variable" | |
44051 | msgstr "La variable errmsg en %L debe ser una variable CHARACTER escalar" | |
44052 | ||
44053 | -#: fortran/resolve.c:7288 | |
44054 | +#: fortran/resolve.c:7275 | |
44055 | #, gcc-internal-format, gfc-internal-format | |
44056 | msgid "Errmsg-variable at %L shall not be %sd within the same %s statement" | |
44057 | msgstr "La variable errmsg en %L no debe ser %sd dentro de la misma declaración %s" | |
44058 | ||
44059 | -#: fortran/resolve.c:7318 | |
44060 | +#: fortran/resolve.c:7305 | |
44061 | #, gcc-internal-format, gfc-internal-format | |
44062 | msgid "Allocate-object at %L also appears at %L" | |
44063 | msgstr "El objeto de alojamiento en %L también aparece en %L" | |
44064 | ||
44065 | -#: fortran/resolve.c:7324 fortran/resolve.c:7330 | |
44066 | +#: fortran/resolve.c:7311 fortran/resolve.c:7317 | |
44067 | #, gcc-internal-format, gfc-internal-format | |
44068 | msgid "Allocate-object at %L is subobject of object at %L" | |
44069 | msgstr "El objeto de alojamiento en %L es un subobjeto del objeto en %L" | |
44070 | @@ -41460,175 +41666,175 @@ | |
44071 | #. element in the list. Either way, we must | |
44072 | #. issue an error and get the next case from P. | |
44073 | #. FIXME: Sort P and Q by line number. | |
44074 | -#: fortran/resolve.c:7525 | |
44075 | +#: fortran/resolve.c:7512 | |
44076 | #, gcc-internal-format, gfc-internal-format | |
44077 | msgid "CASE label at %L overlaps with CASE label at %L" | |
44078 | msgstr "La etiqueta CASE en %L se encima con la etiqueta CASE en %L" | |
44079 | ||
44080 | -#: fortran/resolve.c:7576 | |
44081 | +#: fortran/resolve.c:7563 | |
44082 | #, gcc-internal-format, gfc-internal-format | |
44083 | msgid "Expression in CASE statement at %L must be of type %s" | |
44084 | msgstr "La expresión en la declaración CASE en %L debe ser de tipo %s" | |
44085 | ||
44086 | -#: fortran/resolve.c:7587 | |
44087 | +#: fortran/resolve.c:7574 | |
44088 | #, gcc-internal-format, gfc-internal-format | |
44089 | msgid "Expression in CASE statement at %L must be of kind %d" | |
44090 | msgstr "La expresión en la declaración CASE en %L debe ser de género %d" | |
44091 | ||
44092 | -#: fortran/resolve.c:7600 | |
44093 | +#: fortran/resolve.c:7587 | |
44094 | #, gcc-internal-format, gfc-internal-format | |
44095 | msgid "Expression in CASE statement at %L must be scalar" | |
44096 | msgstr "La expresión en la declaración CASE en %L debe ser escalar" | |
44097 | ||
44098 | -#: fortran/resolve.c:7646 | |
44099 | +#: fortran/resolve.c:7633 | |
44100 | #, gcc-internal-format, gfc-internal-format | |
44101 | msgid "Selection expression in computed GOTO statement at %L must be a scalar integer expression" | |
44102 | msgstr "La expresión de selección en una declaración GOTO computada en %L debe ser una expresión entera escalar" | |
44103 | ||
44104 | -#: fortran/resolve.c:7664 | |
44105 | +#: fortran/resolve.c:7651 | |
44106 | #, gcc-internal-format, gfc-internal-format | |
44107 | msgid "Argument of SELECT statement at %L cannot be %s" | |
44108 | msgstr "El argumento de la declaración SELECT en %L no puede ser %s" | |
44109 | ||
44110 | -#: fortran/resolve.c:7682 fortran/resolve.c:7690 | |
44111 | +#: fortran/resolve.c:7669 fortran/resolve.c:7677 | |
44112 | #, gcc-internal-format, gfc-internal-format | |
44113 | msgid "Expression in CASE statement at %L is not in the range of %s" | |
44114 | msgstr "La expresión en la declaración CASE en %L no está en el rango de %s" | |
44115 | ||
44116 | -#: fortran/resolve.c:7752 fortran/resolve.c:8062 | |
44117 | +#: fortran/resolve.c:7739 fortran/resolve.c:8049 | |
44118 | #, gcc-internal-format, gfc-internal-format | |
44119 | msgid "The DEFAULT CASE at %L cannot be followed by a second DEFAULT CASE at %L" | |
44120 | msgstr "El DEFAULT CASE en %L no puede tener después un segundo DEFAULT CASE en %L" | |
44121 | ||
44122 | -#: fortran/resolve.c:7778 | |
44123 | +#: fortran/resolve.c:7765 | |
44124 | #, gcc-internal-format, gfc-internal-format | |
44125 | msgid "Logical range in CASE statement at %L is not allowed" | |
44126 | msgstr "No se permite un rango lógico en una declaración CASE en %L" | |
44127 | ||
44128 | -#: fortran/resolve.c:7790 | |
44129 | +#: fortran/resolve.c:7777 | |
44130 | #, gcc-internal-format, gfc-internal-format | |
44131 | msgid "Constant logical value in CASE statement is repeated at %L" | |
44132 | msgstr "Se repite un valor lógico constante en una declaración CASE en %L" | |
44133 | ||
44134 | -#: fortran/resolve.c:7804 | |
44135 | +#: fortran/resolve.c:7791 | |
44136 | #, gcc-internal-format, gfc-internal-format | |
44137 | msgid "Range specification at %L can never be matched" | |
44138 | msgstr "La especificación de rango en %L nunca puede coincidir" | |
44139 | ||
44140 | -#: fortran/resolve.c:7907 | |
44141 | +#: fortran/resolve.c:7894 | |
44142 | #, gcc-internal-format, gfc-internal-format | |
44143 | msgid "Logical SELECT CASE block at %L has more that two cases" | |
44144 | msgstr "El bloque SELECT CASE lógico en %L tiene más de dos cases" | |
44145 | ||
44146 | -#: fortran/resolve.c:7972 | |
44147 | +#: fortran/resolve.c:7959 | |
44148 | #, gcc-internal-format, gfc-internal-format | |
44149 | msgid "Associate-name '%s' at %L is used as array" | |
44150 | msgstr "Se usa el nombre asociado '%s' en %L como una matriz" | |
44151 | ||
44152 | -#: fortran/resolve.c:8014 | |
44153 | +#: fortran/resolve.c:8001 | |
44154 | #, gcc-internal-format, gfc-internal-format | |
44155 | msgid "Selector shall be polymorphic in SELECT TYPE statement at %L" | |
44156 | msgstr "El selector debe ser polimórfico en la declaración SELECT TYPE en %L" | |
44157 | ||
44158 | -#: fortran/resolve.c:8040 | |
44159 | +#: fortran/resolve.c:8027 | |
44160 | #, gcc-internal-format, gfc-internal-format | |
44161 | msgid "Derived type '%s' at %L must be extensible" | |
44162 | msgstr "El tipo derivado '%s' en %L debe ser extensible" | |
44163 | ||
44164 | -#: fortran/resolve.c:8050 | |
44165 | +#: fortran/resolve.c:8037 | |
44166 | #, gcc-internal-format, gfc-internal-format | |
44167 | msgid "Derived type '%s' at %L must be an extension of '%s'" | |
44168 | msgstr "El tipo derivado '%s' en %L debe ser una extensión de '%s'" | |
44169 | ||
44170 | -#: fortran/resolve.c:8222 | |
44171 | +#: fortran/resolve.c:8209 | |
44172 | #, gcc-internal-format, gfc-internal-format | |
44173 | msgid "Double CLASS IS block in SELECT TYPE statement at %L" | |
44174 | msgstr "Bloque CLASS IS doble en la declaración SELECT TYPE en %L" | |
44175 | ||
44176 | -#: fortran/resolve.c:8313 | |
44177 | +#: fortran/resolve.c:8300 | |
44178 | #, gcc-internal-format, gfc-internal-format | |
44179 | msgid "NULL intrinsic at %L in data transfer statement requires MOLD=" | |
44180 | msgstr "El NULL intrínseco en %L en la declaración de transferencia de datos requiere MOLD=" | |
44181 | ||
44182 | #. FIXME: Test for defined input/output. | |
44183 | -#: fortran/resolve.c:8341 | |
44184 | +#: fortran/resolve.c:8328 | |
44185 | #, gcc-internal-format, gfc-internal-format | |
44186 | msgid "Data transfer element at %L cannot be polymorphic unless it is processed by a defined input/output procedure" | |
44187 | msgstr "El elemento de transferencia de datos en %L no puede ser polimórfico a menos que se procese con un procedimiento de entrada/salida definido" | |
44188 | ||
44189 | -#: fortran/resolve.c:8353 | |
44190 | +#: fortran/resolve.c:8340 | |
44191 | #, gcc-internal-format, gfc-internal-format | |
44192 | msgid "Data transfer element at %L cannot have POINTER components unless it is processed by a defined input/output procedure" | |
44193 | msgstr "El elemento de transferencia de datos en %L no puede tener componentes POINTER a menos que se procese con un procedimiento de entrada/salida definido" | |
44194 | ||
44195 | -#: fortran/resolve.c:8362 | |
44196 | +#: fortran/resolve.c:8349 | |
44197 | #, gcc-internal-format, gfc-internal-format | |
44198 | msgid "Data transfer element at %L cannot have procedure pointer components" | |
44199 | msgstr "El elemento de transferencia de datos en %L no puede tener componentes de puntero a procedimiento" | |
44200 | ||
44201 | -#: fortran/resolve.c:8369 | |
44202 | +#: fortran/resolve.c:8356 | |
44203 | #, gcc-internal-format, gfc-internal-format | |
44204 | msgid "Data transfer element at %L cannot have ALLOCATABLE components unless it is processed by a defined input/output procedure" | |
44205 | msgstr "El elemento de transferencia de datos en %L no puede tener componentes ALLOCATABLE a menos que se procese con un procedimiento de entrada/salida definido" | |
44206 | ||
44207 | -#: fortran/resolve.c:8377 | |
44208 | +#: fortran/resolve.c:8364 | |
44209 | #, gcc-internal-format, gfc-internal-format | |
44210 | msgid "Data transfer element at %L cannot have PRIVATE components" | |
44211 | msgstr "El elemento de transferencia de datos en %L no puede tener componentes PRIVATE" | |
44212 | ||
44213 | -#: fortran/resolve.c:8386 | |
44214 | +#: fortran/resolve.c:8373 | |
44215 | #, gcc-internal-format, gfc-internal-format | |
44216 | msgid "Data transfer element at %L cannot be a full reference to an assumed-size array" | |
44217 | msgstr "El elemento de transferencia de datos en %L no puede ser una referencia completa a una matriz de tamaño asumido" | |
44218 | ||
44219 | -#: fortran/resolve.c:8436 | |
44220 | +#: fortran/resolve.c:8423 | |
44221 | #, gcc-internal-format, gfc-internal-format | |
44222 | msgid "Lock variable at %L must be a scalar of type LOCK_TYPE" | |
44223 | msgstr "La variable lock en %L debe ser un escalar de tipo LOCK_TYPE" | |
44224 | ||
44225 | -#: fortran/resolve.c:8443 fortran/resolve.c:8507 | |
44226 | +#: fortran/resolve.c:8430 fortran/resolve.c:8494 | |
44227 | #, gcc-internal-format, gfc-internal-format | |
44228 | msgid "STAT= argument at %L must be a scalar INTEGER variable" | |
44229 | msgstr "El argumento STAT= en %L debe ser una variable INTEGER escalar" | |
44230 | ||
44231 | -#: fortran/resolve.c:8455 fortran/resolve.c:8514 | |
44232 | +#: fortran/resolve.c:8442 fortran/resolve.c:8501 | |
44233 | #, gcc-internal-format, gfc-internal-format | |
44234 | msgid "ERRMSG= argument at %L must be a scalar CHARACTER variable" | |
44235 | msgstr "El argumento ERRMSG= en %L debe ser una variable CHARACTER escalar" | |
44236 | ||
44237 | -#: fortran/resolve.c:8467 | |
44238 | +#: fortran/resolve.c:8454 | |
44239 | #, gcc-internal-format, gfc-internal-format | |
44240 | msgid "ACQUIRED_LOCK= argument at %L must be a scalar LOGICAL variable" | |
44241 | msgstr "El argumento ACQUIRED_LOCK= en %L debe ser una variable LOGICAL escalar" | |
44242 | ||
44243 | -#: fortran/resolve.c:8484 | |
44244 | +#: fortran/resolve.c:8471 | |
44245 | #, gcc-internal-format, gfc-internal-format | |
44246 | msgid "Imageset argument at %L must be a scalar or rank-1 INTEGER expression" | |
44247 | msgstr "El argumento de conjunto de imagen %L debe ser un escalar o una expresión INTEGER de rango 1" | |
44248 | ||
44249 | -#: fortran/resolve.c:8488 fortran/resolve.c:8498 | |
44250 | +#: fortran/resolve.c:8475 fortran/resolve.c:8485 | |
44251 | #, gcc-internal-format, gfc-internal-format | |
44252 | msgid "Imageset argument at %L must between 1 and num_images()" | |
44253 | msgstr "El argumento de conjunto de imagen en %L debe estar entre 1 y num_images()" | |
44254 | ||
44255 | -#: fortran/resolve.c:8541 | |
44256 | +#: fortran/resolve.c:8528 | |
44257 | #, gcc-internal-format, gfc-internal-format | |
44258 | msgid "Statement at %L is not a valid branch target statement for the branch statement at %L" | |
44259 | msgstr "La declaración en %L no es una declaración de objetivo de ramificación válida para la declaración de ramificación en %L" | |
44260 | ||
44261 | -#: fortran/resolve.c:8550 | |
44262 | +#: fortran/resolve.c:8537 | |
44263 | #, gcc-internal-format, gfc-internal-format | |
44264 | msgid "Branch at %L may result in an infinite loop" | |
44265 | msgstr "La ramificación en %L puede resultar en un bucle infinito" | |
44266 | ||
44267 | #. Note: A label at END CRITICAL does not leave the CRITICAL | |
44268 | #. construct as END CRITICAL is still part of it. | |
44269 | -#: fortran/resolve.c:8567 fortran/resolve.c:8590 | |
44270 | +#: fortran/resolve.c:8554 fortran/resolve.c:8577 | |
44271 | #, gcc-internal-format, gfc-internal-format | |
44272 | msgid "GOTO statement at %L leaves CRITICAL construct for label at %L" | |
44273 | msgstr "La declaración GOTO en %L deja la construcción CRITICAL por la etiqueta en %L" | |
44274 | ||
44275 | -#: fortran/resolve.c:8571 fortran/resolve.c:8596 | |
44276 | +#: fortran/resolve.c:8558 fortran/resolve.c:8583 | |
44277 | #, gcc-internal-format, gfc-internal-format | |
44278 | msgid "GOTO statement at %L leaves DO CONCURRENT construct for label at %L" | |
44279 | msgstr "La declaración GOTO en %L deja la construcción DO CONCURRENT por la etiqueta en %L" | |
44280 | @@ -41636,950 +41842,950 @@ | |
44281 | #. The label is not in an enclosing block, so illegal. This was | |
44282 | #. allowed in Fortran 66, so we allow it as extension. No | |
44283 | #. further checks are necessary in this case. | |
44284 | -#: fortran/resolve.c:8611 | |
44285 | +#: fortran/resolve.c:8598 | |
44286 | #, gcc-internal-format, gfc-internal-format | |
44287 | msgid "Label at %L is not in the same block as the GOTO statement at %L" | |
44288 | msgstr "La etiqueta en %L no está en el mismo bloque que la declaración GOTO en %L" | |
44289 | ||
44290 | -#: fortran/resolve.c:8683 | |
44291 | +#: fortran/resolve.c:8670 | |
44292 | #, gcc-internal-format, gfc-internal-format | |
44293 | msgid "WHERE mask at %L has inconsistent shape" | |
44294 | msgstr "La máscara WHERE en %L tiene forma inconsistente" | |
44295 | ||
44296 | -#: fortran/resolve.c:8699 | |
44297 | +#: fortran/resolve.c:8686 | |
44298 | #, gcc-internal-format, gfc-internal-format | |
44299 | msgid "WHERE assignment target at %L has inconsistent shape" | |
44300 | msgstr "El objetivo de asignación WHERE en %L tiene forma inconsistente" | |
44301 | ||
44302 | -#: fortran/resolve.c:8707 fortran/resolve.c:8794 | |
44303 | +#: fortran/resolve.c:8694 fortran/resolve.c:8781 | |
44304 | #, gcc-internal-format, gfc-internal-format | |
44305 | msgid "Non-ELEMENTAL user-defined assignment in WHERE at %L" | |
44306 | msgstr "Asignación definida por el usuario de un no-ELEMENTAL en WHERE en %L" | |
44307 | ||
44308 | -#: fortran/resolve.c:8717 fortran/resolve.c:8804 | |
44309 | +#: fortran/resolve.c:8704 fortran/resolve.c:8791 | |
44310 | #, gcc-internal-format, gfc-internal-format | |
44311 | msgid "Unsupported statement inside WHERE at %L" | |
44312 | msgstr "Declaración sin soporte dentro de WHERE en %L" | |
44313 | ||
44314 | -#: fortran/resolve.c:8748 | |
44315 | +#: fortran/resolve.c:8735 | |
44316 | #, gcc-internal-format, gfc-internal-format | |
44317 | msgid "Assignment to a FORALL index variable at %L" | |
44318 | msgstr "Asignación a una variable de índice FORALL en %L" | |
44319 | ||
44320 | -#: fortran/resolve.c:8757 | |
44321 | +#: fortran/resolve.c:8744 | |
44322 | #, gcc-internal-format, gfc-internal-format | |
44323 | msgid "The FORALL with index '%s' is not used on the left side of the assignment at %L and so might cause multiple assignment to this object" | |
44324 | msgstr "No se usa el FORALL con índice '%s' en el lado izquierdo de la asignación en %L y podría causar múltiples asignaciones a este objeto" | |
44325 | ||
44326 | -#: fortran/resolve.c:8926 | |
44327 | +#: fortran/resolve.c:8913 | |
44328 | #, gcc-internal-format, gfc-internal-format | |
44329 | msgid "An outer FORALL construct already has an index with this name %L" | |
44330 | msgstr "Una construcción FORALL externa ya tiene un índice con este nombre %L" | |
44331 | ||
44332 | -#: fortran/resolve.c:9006 | |
44333 | +#: fortran/resolve.c:8993 | |
44334 | #, gcc-internal-format, gfc-internal-format | |
44335 | msgid "WHERE/ELSEWHERE clause at %L requires a LOGICAL array" | |
44336 | msgstr "la cláusula WHERE/ELSEWHERE en %L requiere una matriz LOGICAL" | |
44337 | ||
44338 | -#: fortran/resolve.c:9160 | |
44339 | +#: fortran/resolve.c:9147 | |
44340 | #, gcc-internal-format, gfc-internal-format | |
44341 | msgid "CHARACTER expression will be truncated in assignment (%d/%d) at %L" | |
44342 | msgstr "Se truncará la expresión CHARACTER en la asignación (%d/%d) en %L" | |
44343 | ||
44344 | -#: fortran/resolve.c:9192 | |
44345 | +#: fortran/resolve.c:9179 | |
44346 | #, gcc-internal-format, gfc-internal-format | |
44347 | msgid "Coindexed expression at %L is assigned to a derived type variable with a POINTER component in a PURE procedure" | |
44348 | msgstr "La expresión con coíndice en %L se asigna a una variable de tipo derivado con un componente POINTER en un procedimiento PURE" | |
44349 | ||
44350 | -#: fortran/resolve.c:9197 | |
44351 | +#: fortran/resolve.c:9184 | |
44352 | #, gcc-internal-format, gfc-internal-format | |
44353 | msgid "The impure variable at %L is assigned to a derived type variable with a POINTER component in a PURE procedure (12.6)" | |
44354 | msgstr "La variable impura en %L se asigna a una variable de tipo derivado con un componente POINTER en un procedimiento PURE (12.6)" | |
44355 | ||
44356 | -#: fortran/resolve.c:9207 | |
44357 | +#: fortran/resolve.c:9194 | |
44358 | #, gcc-internal-format, gfc-internal-format | |
44359 | msgid "Assignment to coindexed variable at %L in a PURE procedure" | |
44360 | msgstr "Asignación a una variable coindizada en %L en un procedimiento PURE" | |
44361 | ||
44362 | -#: fortran/resolve.c:9238 | |
44363 | +#: fortran/resolve.c:9225 | |
44364 | #, gcc-internal-format, gfc-internal-format | |
44365 | msgid "Variable must not be polymorphic in intrinsic assignment at %L - check that there is a matching specific subroutine for '=' operator" | |
44366 | msgstr "La variable no debe ser polimórfica en la asignación intrínseca en %L - revise que hay una subrutina específica coincidente para el operador '='" | |
44367 | ||
44368 | -#: fortran/resolve.c:9247 | |
44369 | +#: fortran/resolve.c:9234 | |
44370 | #, gcc-internal-format, gfc-internal-format | |
44371 | msgid "Coindexed variable must not be have an allocatable ultimate component in assignment at %L" | |
44372 | msgstr "La variable coindizada no debe tener un componente último alojable en la asignación en %L" | |
44373 | ||
44374 | -#: fortran/resolve.c:9382 | |
44375 | +#: fortran/resolve.c:9369 | |
44376 | #, gcc-internal-format, gfc-internal-format | |
44377 | msgid "ASSIGNED GOTO statement at %L requires an INTEGER variable" | |
44378 | msgstr "La declaración ASSIGNED GOTO en %L requiere una variable INTEGER" | |
44379 | ||
44380 | -#: fortran/resolve.c:9385 | |
44381 | +#: fortran/resolve.c:9372 | |
44382 | #, gcc-internal-format, gfc-internal-format | |
44383 | msgid "Variable '%s' has not been assigned a target label at %L" | |
44384 | msgstr "La variable '%s' no se ha asignado a una etiqueta objetivo en %L" | |
44385 | ||
44386 | -#: fortran/resolve.c:9396 | |
44387 | +#: fortran/resolve.c:9383 | |
44388 | #, gcc-internal-format, gfc-internal-format | |
44389 | msgid "Alternate RETURN statement at %L requires a SCALAR-INTEGER return specifier" | |
44390 | msgstr "La declaración RETURN alternativa en %L requiere de un especificador de devolución SCALAR-INTEGER" | |
44391 | ||
44392 | -#: fortran/resolve.c:9431 | |
44393 | +#: fortran/resolve.c:9418 | |
44394 | #, gcc-internal-format, gfc-internal-format | |
44395 | msgid "ASSIGN statement at %L requires a scalar default INTEGER variable" | |
44396 | msgstr "La declaración de ASSIGN en %L requiere una variable INTEGER escalar por defecto" | |
44397 | ||
44398 | -#: fortran/resolve.c:9464 | |
44399 | +#: fortran/resolve.c:9451 | |
44400 | #, gcc-internal-format, gfc-internal-format | |
44401 | msgid "Arithmetic IF statement at %L requires a numeric expression" | |
44402 | msgstr "La declaración IF aritmética en %L requiere una expresión numérica" | |
44403 | ||
44404 | -#: fortran/resolve.c:9523 | |
44405 | +#: fortran/resolve.c:9510 | |
44406 | #, gcc-internal-format, gfc-internal-format | |
44407 | msgid "Exit condition of DO WHILE loop at %L must be a scalar LOGICAL expression" | |
44408 | msgstr "La condición de salida del bucle DO WHILE en %L debe ser una expresión LOGICAL escalar" | |
44409 | ||
44410 | -#: fortran/resolve.c:9607 | |
44411 | +#: fortran/resolve.c:9594 | |
44412 | #, gcc-internal-format, gfc-internal-format | |
44413 | msgid "FORALL mask clause at %L requires a scalar LOGICAL expression" | |
44414 | msgstr "La cláusula de máscara FORALL en %L requiere una expresión LOGICAL escalar" | |
44415 | ||
44416 | -#: fortran/resolve.c:9687 fortran/resolve.c:9743 | |
44417 | +#: fortran/resolve.c:9676 fortran/resolve.c:9729 | |
44418 | #, gcc-internal-format, gfc-internal-format | |
44419 | msgid "Binding label '%s' for common block '%s' at %L collides with the global entity '%s' at %L" | |
44420 | msgstr "La etiqueta enlazante '%s' para el bloque común '%s' en %L colisiona con la entidad global '%s' en %L" | |
44421 | ||
44422 | #. Common block names match but binding labels do not. | |
44423 | -#: fortran/resolve.c:9708 | |
44424 | +#: fortran/resolve.c:9694 | |
44425 | #, gcc-internal-format, gfc-internal-format | |
44426 | msgid "Binding label '%s' for common block '%s' at %L does not match the binding label '%s' for common block '%s' at %L" | |
44427 | msgstr "La etiqueta enlazante '%s' para el bloque común '%s' en %L no coincide con la etiqueta enlazante '%s' para el bloque común '%s' en %L" | |
44428 | ||
44429 | -#: fortran/resolve.c:9755 | |
44430 | +#: fortran/resolve.c:9741 | |
44431 | #, gcc-internal-format, gfc-internal-format | |
44432 | msgid "Binding label '%s' for common block '%s' at %L collides with global entity '%s' at %L" | |
44433 | msgstr "La etiqueta enlazante '%s' para el bloque común '%s' en %L colisiona con la entidad global '%s' en %L" | |
44434 | ||
44435 | #. Make sure global procedures don't collide with anything. | |
44436 | -#: fortran/resolve.c:9807 | |
44437 | +#: fortran/resolve.c:9793 | |
44438 | #, gcc-internal-format, gfc-internal-format | |
44439 | msgid "Binding label '%s' at %L collides with the global entity '%s' at %L" | |
44440 | msgstr "La etiqueta enlazante '%s' en %L colisiona con la entidad global '%s' en %L" | |
44441 | ||
44442 | #. Make sure procedures in interface bodies don't collide. | |
44443 | -#: fortran/resolve.c:9820 | |
44444 | +#: fortran/resolve.c:9806 | |
44445 | #, gcc-internal-format, gfc-internal-format | |
44446 | msgid "Binding label '%s' in interface body at %L collides with the global entity '%s' at %L" | |
44447 | msgstr "La etiqueta enlazante '%s' en el cuerpo de interfaz en %L colisiona con la entidad global '%s' en %L" | |
44448 | ||
44449 | -#: fortran/resolve.c:9833 | |
44450 | +#: fortran/resolve.c:9819 | |
44451 | #, gcc-internal-format, gfc-internal-format | |
44452 | msgid "Binding label '%s' at %L collides with global entity '%s' at %L" | |
44453 | msgstr "La etiqueta enlazante '%s' en %L colisiona con la entidad global '%s' en %L" | |
44454 | ||
44455 | -#: fortran/resolve.c:9912 | |
44456 | +#: fortran/resolve.c:9898 | |
44457 | #, gcc-internal-format, gfc-internal-format | |
44458 | msgid "CHARACTER variable at %L has negative length %d, the length has been set to zero" | |
44459 | msgstr "La variable CHARACTER en %L tiene longitud negativa %d, la longitud se estableció a cero" | |
44460 | ||
44461 | -#: fortran/resolve.c:9925 | |
44462 | +#: fortran/resolve.c:9911 | |
44463 | #, gcc-internal-format, gfc-internal-format | |
44464 | msgid "String length at %L is too large" | |
44465 | msgstr "La longitud de la cadena en %L es demasiado grande" | |
44466 | ||
44467 | -#: fortran/resolve.c:10262 | |
44468 | +#: fortran/resolve.c:10248 | |
44469 | #, gcc-internal-format, gfc-internal-format | |
44470 | msgid "Allocatable array '%s' at %L must have a deferred shape" | |
44471 | msgstr "La matriz allocatable '%s' en %L debe tener una forma diferida" | |
44472 | ||
44473 | -#: fortran/resolve.c:10266 | |
44474 | +#: fortran/resolve.c:10252 | |
44475 | #, gcc-internal-format, gfc-internal-format | |
44476 | msgid "Scalar object '%s' at %L may not be ALLOCATABLE" | |
44477 | msgstr "El objeto escalar '%s' en %L no puede ser ALLOCATABLE" | |
44478 | ||
44479 | -#: fortran/resolve.c:10274 | |
44480 | +#: fortran/resolve.c:10260 | |
44481 | #, gcc-internal-format, gfc-internal-format | |
44482 | msgid "Array pointer '%s' at %L must have a deferred shape" | |
44483 | msgstr "La matriz de puntero '%s' en %L debe tener una forma diferida" | |
44484 | ||
44485 | -#: fortran/resolve.c:10284 | |
44486 | +#: fortran/resolve.c:10270 | |
44487 | #, gcc-internal-format, gfc-internal-format | |
44488 | msgid "Array '%s' at %L cannot have a deferred shape" | |
44489 | msgstr "La matriz '%s' en %L no puede tener una forma diferida" | |
44490 | ||
44491 | -#: fortran/resolve.c:10297 | |
44492 | +#: fortran/resolve.c:10283 | |
44493 | #, gcc-internal-format, gfc-internal-format | |
44494 | msgid "Type '%s' of CLASS variable '%s' at %L is not extensible" | |
44495 | msgstr "El tipo '%s' de la variable CLASS '%s' en %L no es extensible" | |
44496 | ||
44497 | -#: fortran/resolve.c:10309 | |
44498 | +#: fortran/resolve.c:10295 | |
44499 | #, gcc-internal-format, gfc-internal-format | |
44500 | msgid "CLASS variable '%s' at %L must be dummy, allocatable or pointer" | |
44501 | msgstr "La variable CLASS '%s' en %L debe ser dummy, allocatable o pointer" | |
44502 | ||
44503 | -#: fortran/resolve.c:10340 | |
44504 | +#: fortran/resolve.c:10326 | |
44505 | #, gcc-internal-format, gfc-internal-format | |
44506 | msgid "The type '%s' cannot be host associated at %L because it is blocked by an incompatible object of the same name declared at %L" | |
44507 | msgstr "El tipo '%s' no se puede asociar al anfitrión en %L porque está bloqueado por un objeto incompatible del mismo nombre declarado en %L" | |
44508 | ||
44509 | -#: fortran/resolve.c:10362 | |
44510 | +#: fortran/resolve.c:10348 | |
44511 | #, gcc-internal-format, gfc-internal-format | |
44512 | msgid "Fortran 2008: Implied SAVE for module variable '%s' at %L, needed due to the default initialization" | |
44513 | msgstr "Fortran 2008: SAVE implícito para la variable de módulo '%s' en %L, se necesita por la inicialización por defecto" | |
44514 | ||
44515 | #. The shape of a main program or module array needs to be | |
44516 | #. constant. | |
44517 | -#: fortran/resolve.c:10409 | |
44518 | +#: fortran/resolve.c:10395 | |
44519 | #, gcc-internal-format, gfc-internal-format | |
44520 | msgid "The module or main program array '%s' at %L must have constant shape" | |
44521 | msgstr "El módulo o la matriz del programa principal '%s' en %L deben tener una forma constante" | |
44522 | ||
44523 | -#: fortran/resolve.c:10418 | |
44524 | +#: fortran/resolve.c:10404 | |
44525 | #, gcc-internal-format, gfc-internal-format | |
44526 | msgid "Entity '%s' at %L has a deferred type parameter and requires either the pointer or allocatable attribute" | |
44527 | msgstr "La entidad '%s' en %L tiene un parámetro de tipo diferido y requiere el atributo pointer o allocatable" | |
44528 | ||
44529 | -#: fortran/resolve.c:10432 | |
44530 | +#: fortran/resolve.c:10418 | |
44531 | #, gcc-internal-format, gfc-internal-format | |
44532 | msgid "Entity with assumed character length at %L must be a dummy argument or a PARAMETER" | |
44533 | msgstr "La entidad con longitud de carácter asumida en %L debe ser un argumento de prueba o un PARAMETER" | |
44534 | ||
44535 | -#: fortran/resolve.c:10451 | |
44536 | +#: fortran/resolve.c:10437 | |
44537 | #, gcc-internal-format, gfc-internal-format | |
44538 | msgid "'%s' at %L must have constant character length in this context" | |
44539 | msgstr "'%s' en %L debe tener longitud de cáracter constante en este contexto" | |
44540 | ||
44541 | -#: fortran/resolve.c:10457 | |
44542 | +#: fortran/resolve.c:10443 | |
44543 | #, gcc-internal-format, gfc-internal-format | |
44544 | msgid "COMMON variable '%s' at %L must have constant character length" | |
44545 | msgstr "La variable COMMON '%s' en %L debe tener longitud de cáracter constante en este contexto" | |
44546 | ||
44547 | -#: fortran/resolve.c:10502 | |
44548 | +#: fortran/resolve.c:10488 | |
44549 | #, gcc-internal-format, gfc-internal-format | |
44550 | msgid "Allocatable '%s' at %L cannot have an initializer" | |
44551 | msgstr "El allocatable '%s' en %L no puede tener un inicializador" | |
44552 | ||
44553 | -#: fortran/resolve.c:10505 | |
44554 | +#: fortran/resolve.c:10491 | |
44555 | #, gcc-internal-format, gfc-internal-format | |
44556 | msgid "External '%s' at %L cannot have an initializer" | |
44557 | msgstr "El external '%s' en %L no puede tener un inicializador" | |
44558 | ||
44559 | -#: fortran/resolve.c:10509 | |
44560 | +#: fortran/resolve.c:10495 | |
44561 | #, gcc-internal-format, gfc-internal-format | |
44562 | msgid "Dummy '%s' at %L cannot have an initializer" | |
44563 | msgstr "El dummy '%s' en %L no puede tener un inicializador" | |
44564 | ||
44565 | -#: fortran/resolve.c:10512 | |
44566 | +#: fortran/resolve.c:10498 | |
44567 | #, gcc-internal-format, gfc-internal-format | |
44568 | msgid "Intrinsic '%s' at %L cannot have an initializer" | |
44569 | msgstr "El intrinsic '%s' en %L no puede tener un inicializador" | |
44570 | ||
44571 | -#: fortran/resolve.c:10515 | |
44572 | +#: fortran/resolve.c:10501 | |
44573 | #, gcc-internal-format, gfc-internal-format | |
44574 | msgid "Function result '%s' at %L cannot have an initializer" | |
44575 | msgstr "El resultado de la función '%s' en %L no puede tener un inicializador" | |
44576 | ||
44577 | -#: fortran/resolve.c:10518 | |
44578 | +#: fortran/resolve.c:10504 | |
44579 | #, gcc-internal-format, gfc-internal-format | |
44580 | msgid "Automatic array '%s' at %L cannot have an initializer" | |
44581 | msgstr "La matriz automática '%s' en %L no puede tener un inicializador" | |
44582 | ||
44583 | -#: fortran/resolve.c:10555 | |
44584 | +#: fortran/resolve.c:10541 | |
44585 | #, gcc-internal-format, gfc-internal-format | |
44586 | msgid "Character-valued statement function '%s' at %L must have constant length" | |
44587 | msgstr "La función de declaración valuada con carácter '%s' en %L debe tener longitud constante" | |
44588 | ||
44589 | -#: fortran/resolve.c:10577 | |
44590 | +#: fortran/resolve.c:10563 | |
44591 | #, gcc-internal-format, gfc-internal-format | |
44592 | msgid "Fortran 2003: '%s' is of a PRIVATE type and cannot be a dummy argument of '%s', which is PUBLIC at %L" | |
44593 | msgstr "Fortran 2003: '%s' es de un tipo PRIVATE y no puede ser un argumento dummy de '%s', el cual es PUBLIC en %L" | |
44594 | ||
44595 | -#: fortran/resolve.c:10599 fortran/resolve.c:10623 | |
44596 | +#: fortran/resolve.c:10585 fortran/resolve.c:10609 | |
44597 | #, gcc-internal-format, gfc-internal-format | |
44598 | msgid "Fortran 2003: Procedure '%s' in PUBLIC interface '%s' at %L takes dummy arguments of '%s' which is PRIVATE" | |
44599 | msgstr "Fortran 2003: El procedimiento '%s' en la interfaz PUBLIC '%s' en %L toma argumentos dummy de '%s' el cual es PRIVATE" | |
44600 | ||
44601 | -#: fortran/resolve.c:10641 | |
44602 | +#: fortran/resolve.c:10627 | |
44603 | #, gcc-internal-format, gfc-internal-format | |
44604 | msgid "Function '%s' at %L cannot have an initializer" | |
44605 | msgstr "La función '%s' en %L no puede tener un inicializador" | |
44606 | ||
44607 | -#: fortran/resolve.c:10650 | |
44608 | +#: fortran/resolve.c:10636 | |
44609 | #, gcc-internal-format, gfc-internal-format | |
44610 | msgid "External object '%s' at %L may not have an initializer" | |
44611 | msgstr "El objeto external '%s' en %L puede no tener un inicializador" | |
44612 | ||
44613 | -#: fortran/resolve.c:10658 | |
44614 | +#: fortran/resolve.c:10644 | |
44615 | #, gcc-internal-format, gfc-internal-format | |
44616 | msgid "ELEMENTAL function '%s' at %L must have a scalar result" | |
44617 | msgstr "La función ELEMENTAL '%s' en %L debe tener un resultado escalar" | |
44618 | ||
44619 | -#: fortran/resolve.c:10668 | |
44620 | +#: fortran/resolve.c:10654 | |
44621 | #, gcc-internal-format, gfc-internal-format | |
44622 | msgid "Statement function '%s' at %L may not have pointer or allocatable attribute" | |
44623 | msgstr "La función de declaración '%s' en %L no debe tener atributo puntero o alojable" | |
44624 | ||
44625 | -#: fortran/resolve.c:10687 | |
44626 | +#: fortran/resolve.c:10673 | |
44627 | #, gcc-internal-format, gfc-internal-format | |
44628 | msgid "CHARACTER(*) function '%s' at %L cannot be array-valued" | |
44629 | msgstr "La función CHARACTER(*) '%s' en %L no puede ser matriz-valuada" | |
44630 | ||
44631 | -#: fortran/resolve.c:10691 | |
44632 | +#: fortran/resolve.c:10677 | |
44633 | #, gcc-internal-format, gfc-internal-format | |
44634 | msgid "CHARACTER(*) function '%s' at %L cannot be pointer-valued" | |
44635 | msgstr "La función CHARACTER(*) '%s' en %L no puede ser puntero-valuada" | |
44636 | ||
44637 | -#: fortran/resolve.c:10695 | |
44638 | +#: fortran/resolve.c:10681 | |
44639 | #, gcc-internal-format, gfc-internal-format | |
44640 | msgid "CHARACTER(*) function '%s' at %L cannot be pure" | |
44641 | msgstr "La función CHARACTER(*) '%s' en %L no puede ser pura" | |
44642 | ||
44643 | -#: fortran/resolve.c:10699 | |
44644 | +#: fortran/resolve.c:10685 | |
44645 | #, gcc-internal-format, gfc-internal-format | |
44646 | msgid "CHARACTER(*) function '%s' at %L cannot be recursive" | |
44647 | msgstr "La función CHARACTER(*) '%s' en %L no puede ser recursiva" | |
44648 | ||
44649 | -#: fortran/resolve.c:10711 | |
44650 | +#: fortran/resolve.c:10697 | |
44651 | #, gcc-internal-format, gfc-internal-format | |
44652 | msgid "Obsolescent feature: CHARACTER(*) function '%s' at %L" | |
44653 | msgstr "Característica obsoleta: función CHARACTER(*) '%s' en %L" | |
44654 | ||
44655 | -#: fortran/resolve.c:10766 | |
44656 | +#: fortran/resolve.c:10752 | |
44657 | #, gcc-internal-format, gfc-internal-format | |
44658 | msgid "PROCEDURE attribute conflicts with SAVE attribute in '%s' at %L" | |
44659 | msgstr "El atributo PROCEDURE genera un conflicto con el atributo SAVE en '%s' en %L" | |
44660 | ||
44661 | -#: fortran/resolve.c:10772 | |
44662 | +#: fortran/resolve.c:10758 | |
44663 | #, gcc-internal-format, gfc-internal-format | |
44664 | msgid "PROCEDURE attribute conflicts with INTENT attribute in '%s' at %L" | |
44665 | msgstr "El atributo PROCEDURE genera un conflicto con el atributo INTENT en '%s' en %L" | |
44666 | ||
44667 | -#: fortran/resolve.c:10778 | |
44668 | +#: fortran/resolve.c:10764 | |
44669 | #, gcc-internal-format, gfc-internal-format | |
44670 | msgid "PROCEDURE attribute conflicts with RESULT attribute in '%s' at %L" | |
44671 | msgstr "El atributo PROCEDURE genera un conflicto con el atributo RESULT en '%s' en %L" | |
44672 | ||
44673 | -#: fortran/resolve.c:10786 | |
44674 | +#: fortran/resolve.c:10772 | |
44675 | #, gcc-internal-format, gfc-internal-format | |
44676 | msgid "EXTERNAL attribute conflicts with FUNCTION attribute in '%s' at %L" | |
44677 | msgstr "El atributo EXTERNAL genera un conflicto con el atributo FUNCTION en '%s' en %L" | |
44678 | ||
44679 | -#: fortran/resolve.c:10792 | |
44680 | +#: fortran/resolve.c:10778 | |
44681 | #, gcc-internal-format, gfc-internal-format | |
44682 | msgid "Procedure pointer result '%s' at %L is missing the pointer attribute" | |
44683 | msgstr "Al resultado del puntero de procedimiento '%s' en %L le falta el atributo puntero" | |
44684 | ||
44685 | -#: fortran/resolve.c:10838 | |
44686 | +#: fortran/resolve.c:10824 | |
44687 | #, gcc-internal-format, gfc-internal-format | |
44688 | msgid "FINAL procedure '%s' at %L is not a SUBROUTINE" | |
44689 | msgstr "El procedimiento FINAL '%s' en %L no debe ser una SUBROUTINE" | |
44690 | ||
44691 | -#: fortran/resolve.c:10846 | |
44692 | +#: fortran/resolve.c:10832 | |
44693 | #, gcc-internal-format, gfc-internal-format | |
44694 | msgid "FINAL procedure at %L must have exactly one argument" | |
44695 | msgstr "El procedimiento FINAL en %L debe tener exactamente un argumento" | |
44696 | ||
44697 | -#: fortran/resolve.c:10855 | |
44698 | +#: fortran/resolve.c:10841 | |
44699 | #, gcc-internal-format, gfc-internal-format | |
44700 | msgid "Argument of FINAL procedure at %L must be of type '%s'" | |
44701 | msgstr "El argumento del procedimiento FINAL en %L debe ser de tipo '%s'" | |
44702 | ||
44703 | -#: fortran/resolve.c:10863 | |
44704 | +#: fortran/resolve.c:10849 | |
44705 | #, gcc-internal-format, gfc-internal-format | |
44706 | msgid "Argument of FINAL procedure at %L must not be a POINTER" | |
44707 | msgstr "El argumento del procedimiento FINAL en %L no debe ser un POINTER" | |
44708 | ||
44709 | -#: fortran/resolve.c:10869 | |
44710 | +#: fortran/resolve.c:10855 | |
44711 | #, gcc-internal-format, gfc-internal-format | |
44712 | msgid "Argument of FINAL procedure at %L must not be ALLOCATABLE" | |
44713 | msgstr "El argumento del procedimiento final en %L no debe ser ALLOCATABLE" | |
44714 | ||
44715 | -#: fortran/resolve.c:10875 | |
44716 | +#: fortran/resolve.c:10861 | |
44717 | #, gcc-internal-format, gfc-internal-format | |
44718 | msgid "Argument of FINAL procedure at %L must not be OPTIONAL" | |
44719 | msgstr "El argumento del procedimiento FINAL en %L no debe ser OPTIONAL" | |
44720 | ||
44721 | -#: fortran/resolve.c:10883 | |
44722 | +#: fortran/resolve.c:10869 | |
44723 | #, gcc-internal-format, gfc-internal-format | |
44724 | msgid "Argument of FINAL procedure at %L must not be INTENT(OUT)" | |
44725 | msgstr "El argumento del procedimiento FINAL en %L no debe ser INTENT(OUT)" | |
44726 | ||
44727 | -#: fortran/resolve.c:10891 | |
44728 | +#: fortran/resolve.c:10877 | |
44729 | #, gcc-internal-format, gfc-internal-format | |
44730 | msgid "Non-scalar FINAL procedure at %L should have assumed shape argument" | |
44731 | msgstr "El procedimiento FINAL que no es escalar en %L debe tener un argumento sharp asumido" | |
44732 | ||
44733 | -#: fortran/resolve.c:10910 | |
44734 | +#: fortran/resolve.c:10896 | |
44735 | #, gcc-internal-format, gfc-internal-format | |
44736 | msgid "FINAL procedure '%s' declared at %L has the same rank (%d) as '%s'" | |
44737 | msgstr "El procedimiento FINAL '%s' declarado en %L tiene el mismo rango (%d) que '%s'" | |
44738 | ||
44739 | -#: fortran/resolve.c:10943 | |
44740 | +#: fortran/resolve.c:10929 | |
44741 | #, gcc-internal-format, gfc-internal-format | |
44742 | msgid "Only array FINAL procedures declared for derived type '%s' defined at %L, suggest also scalar one" | |
44743 | msgstr "Sólo se declaran procedimientos FINAL de matriz para el tipo derivado '%s' definido en %L, se sugiere también uno escalar" | |
44744 | ||
44745 | #. TODO: Remove this error when finalization is finished. | |
44746 | -#: fortran/resolve.c:10948 | |
44747 | +#: fortran/resolve.c:10934 | |
44748 | #, gcc-internal-format, gfc-internal-format | |
44749 | msgid "Finalization at %L is not yet implemented" | |
44750 | msgstr "Aún no se admite la finalización en %L" | |
44751 | ||
44752 | -#: fortran/resolve.c:10978 | |
44753 | +#: fortran/resolve.c:10965 | |
44754 | #, gcc-internal-format, gfc-internal-format | |
44755 | msgid "'%s' and '%s' can't be mixed FUNCTION/SUBROUTINE for GENERIC '%s' at %L" | |
44756 | msgstr "'%s' y '%s' no pueden ser FUNCTION/SUBROUTINE mezcladas para el GENERIC '%s' en %L" | |
44757 | ||
44758 | -#: fortran/resolve.c:10987 | |
44759 | +#: fortran/resolve.c:10975 | |
44760 | #, gcc-internal-format, gfc-internal-format | |
44761 | msgid "'%s' and '%s' for GENERIC '%s' at %L are ambiguous" | |
44762 | msgstr "'%s' y '%s' para el GENERIC '%s' en %L son ambiguos" | |
44763 | ||
44764 | -#: fortran/resolve.c:11046 | |
44765 | +#: fortran/resolve.c:11034 | |
44766 | #, gcc-internal-format, gfc-internal-format | |
44767 | msgid "Undefined specific binding '%s' as target of GENERIC '%s' at %L" | |
44768 | msgstr "El enlace específico '%s' no está definido como objetivo del GENERIC '%s' en %L" | |
44769 | ||
44770 | -#: fortran/resolve.c:11058 | |
44771 | +#: fortran/resolve.c:11046 | |
44772 | #, gcc-internal-format, gfc-internal-format | |
44773 | msgid "GENERIC '%s' at %L must target a specific binding, '%s' is GENERIC, too" | |
44774 | msgstr "El GENERIC '%s' en %L debe apuntar a un enlace específico, '%s' es GENERIC también" | |
44775 | ||
44776 | -#: fortran/resolve.c:11088 | |
44777 | +#: fortran/resolve.c:11076 | |
44778 | #, gcc-internal-format, gfc-internal-format | |
44779 | msgid "GENERIC '%s' at %L can't overwrite specific binding with the same name" | |
44780 | msgstr "El GENERIC '%s' en %L no puede sobreescribir el enlace específico con el mismo nombre" | |
44781 | ||
44782 | -#: fortran/resolve.c:11144 | |
44783 | +#: fortran/resolve.c:11132 | |
44784 | #, gcc-internal-format, gfc-internal-format | |
44785 | msgid "Type-bound operator at %L can't be NOPASS" | |
44786 | msgstr "El operador enlazado a tipo en %L no puede ser NOPASS" | |
44787 | ||
44788 | -#: fortran/resolve.c:11307 | |
44789 | +#: fortran/resolve.c:11295 | |
44790 | #, gcc-internal-format, gfc-internal-format | |
44791 | msgid "'%s' must be a module procedure or an external procedure with an explicit interface at %L" | |
44792 | msgstr "'%s' debe ser un procedimiento de módulo o un procedimiento externo con una interfaz explícita en %L" | |
44793 | ||
44794 | -#: fortran/resolve.c:11344 | |
44795 | +#: fortran/resolve.c:11332 | |
44796 | #, gcc-internal-format, gfc-internal-format | |
44797 | msgid "Procedure '%s' with PASS(%s) at %L has no argument '%s'" | |
44798 | msgstr "El procedimiento '%s' con PASS(%s) en %L no tiene un argumento '%s'" | |
44799 | ||
44800 | -#: fortran/resolve.c:11358 | |
44801 | +#: fortran/resolve.c:11346 | |
44802 | #, gcc-internal-format, gfc-internal-format | |
44803 | msgid "Procedure '%s' with PASS at %L must have at least one argument" | |
44804 | msgstr "El procedimiento '%s' con PASS en %L debe tener al menos un argumento" | |
44805 | ||
44806 | -#: fortran/resolve.c:11372 fortran/resolve.c:11835 | |
44807 | +#: fortran/resolve.c:11360 fortran/resolve.c:11823 | |
44808 | #, gcc-internal-format, gfc-internal-format | |
44809 | msgid "Non-polymorphic passed-object dummy argument of '%s' at %L" | |
44810 | msgstr "Argumento dummy pasado como objeto no polimórfico de '%s' en %L" | |
44811 | ||
44812 | -#: fortran/resolve.c:11380 | |
44813 | +#: fortran/resolve.c:11368 | |
44814 | #, gcc-internal-format, gfc-internal-format | |
44815 | msgid "Argument '%s' of '%s' with PASS(%s) at %L must be of the derived-type '%s'" | |
44816 | msgstr "El argumento '%s' de '%s' con PASS(%s) en %L debe ser del tipo derivado '%s'" | |
44817 | ||
44818 | -#: fortran/resolve.c:11389 | |
44819 | +#: fortran/resolve.c:11377 | |
44820 | #, gcc-internal-format, gfc-internal-format | |
44821 | msgid "Passed-object dummy argument of '%s' at %L must be scalar" | |
44822 | msgstr "El argumento dummy de objeto pasado de '%s' en %L debe ser escalar" | |
44823 | ||
44824 | -#: fortran/resolve.c:11395 | |
44825 | +#: fortran/resolve.c:11383 | |
44826 | #, gcc-internal-format, gfc-internal-format | |
44827 | msgid "Passed-object dummy argument of '%s' at %L must not be ALLOCATABLE" | |
44828 | msgstr "El argumento dummy de objeto pasado de '%s' en %L no debe ser ALLOCATABLE" | |
44829 | ||
44830 | -#: fortran/resolve.c:11401 | |
44831 | +#: fortran/resolve.c:11389 | |
44832 | #, gcc-internal-format, gfc-internal-format | |
44833 | msgid "Passed-object dummy argument of '%s' at %L must not be POINTER" | |
44834 | msgstr "El argumento dummy de objeto pasado de '%s' en %L no debe ser POINTER" | |
44835 | ||
44836 | -#: fortran/resolve.c:11430 | |
44837 | +#: fortran/resolve.c:11418 | |
44838 | #, gcc-internal-format, gfc-internal-format | |
44839 | msgid "Procedure '%s' at %L has the same name as a component of '%s'" | |
44840 | msgstr "El procedimiento '%s' en %L tiene el mismo nombre que un componente de '%s'" | |
44841 | ||
44842 | -#: fortran/resolve.c:11439 | |
44843 | +#: fortran/resolve.c:11427 | |
44844 | #, gcc-internal-format, gfc-internal-format | |
44845 | msgid "Procedure '%s' at %L has the same name as an inherited component of '%s'" | |
44846 | msgstr "El procedimiento '%s' en %L tiene el mismo nombre que un componente heredado de '%s'" | |
44847 | ||
44848 | -#: fortran/resolve.c:11534 | |
44849 | +#: fortran/resolve.c:11522 | |
44850 | #, gcc-internal-format, gfc-internal-format | |
44851 | msgid "Derived-type '%s' declared at %L must be ABSTRACT because '%s' is DEFERRED and not overridden" | |
44852 | msgstr "El tipo derivado '%s' declarado en %L debe ser ABSTRACT porque '%s' es DEFERRED y no se sobreescribió" | |
44853 | ||
44854 | -#: fortran/resolve.c:11592 | |
44855 | +#: fortran/resolve.c:11580 | |
44856 | #, gcc-internal-format, gfc-internal-format | |
44857 | msgid "As extending type '%s' at %L has a coarray component, parent type '%s' shall also have one" | |
44858 | msgstr "Como al extender el tipo '%s' en %L tiene un componente de comatriz, el tipo padre '%s' también debe tener uno" | |
44859 | ||
44860 | -#: fortran/resolve.c:11605 | |
44861 | +#: fortran/resolve.c:11593 | |
44862 | #, gcc-internal-format, gfc-internal-format | |
44863 | msgid "Non-extensible derived-type '%s' at %L must not be ABSTRACT" | |
44864 | msgstr "El tipo derivado '%s' que no es extensible en %L no debe ser ABSTRACT" | |
44865 | ||
44866 | -#: fortran/resolve.c:11618 | |
44867 | +#: fortran/resolve.c:11606 | |
44868 | #, gcc-internal-format, gfc-internal-format | |
44869 | msgid "Deferred-length character component '%s' at %L is not yet supported" | |
44870 | msgstr "El componente de caractér de longitud diferida '%s' en %L aún no se admite" | |
44871 | ||
44872 | -#: fortran/resolve.c:11628 | |
44873 | +#: fortran/resolve.c:11616 | |
44874 | #, gcc-internal-format, gfc-internal-format | |
44875 | msgid "Coarray component '%s' at %L must be allocatable with deferred shape" | |
44876 | msgstr "El componente de comatriz '%s' en %L debe sel alojable con forma diferida" | |
44877 | ||
44878 | -#: fortran/resolve.c:11637 | |
44879 | +#: fortran/resolve.c:11625 | |
44880 | #, gcc-internal-format, gfc-internal-format | |
44881 | msgid "Component '%s' at %L of TYPE(C_PTR) or TYPE(C_FUNPTR) shall not be a coarray" | |
44882 | msgstr "El componente '%s' en %L de TYPE(C_PTR) o TYPE(C_FUNPTR) no debe ser una comatriz" | |
44883 | ||
44884 | -#: fortran/resolve.c:11647 | |
44885 | +#: fortran/resolve.c:11635 | |
44886 | #, gcc-internal-format, gfc-internal-format | |
44887 | msgid "Component '%s' at %L with coarray component shall be a nonpointer, nonallocatable scalar" | |
44888 | msgstr "El componenten '%s' en %L con componente comatriz debe ser un escalar que no sea puntero alojable" | |
44889 | ||
44890 | -#: fortran/resolve.c:11656 | |
44891 | +#: fortran/resolve.c:11644 | |
44892 | #, gcc-internal-format, gfc-internal-format | |
44893 | msgid "Component '%s' at %L has the CONTIGUOUS attribute but is not an array pointer" | |
44894 | msgstr "El componente '%s' en %L tiene el atributo CONTIGUOUS porque no es un puntero de matriz" | |
44895 | ||
44896 | -#: fortran/resolve.c:11664 | |
44897 | +#: fortran/resolve.c:11652 | |
44898 | #, gcc-internal-format, gfc-internal-format | |
44899 | msgid "Interface '%s', used by procedure pointer component '%s' at %L, is declared in a later PROCEDURE statement" | |
44900 | msgstr "La interfaz '%s', usada por el procedimiento de componente puntero '%s' en %L, se declara en una declaración PROCEDURE posterior" | |
44901 | ||
44902 | -#: fortran/resolve.c:11729 | |
44903 | +#: fortran/resolve.c:11717 | |
44904 | #, gcc-internal-format, gfc-internal-format | |
44905 | msgid "Interface '%s' of procedure pointer component '%s' at %L must be explicit" | |
44906 | msgstr "La interfaz '%s' del procedimiento de componente puntero '%s' en %L debe ser explícita" | |
44907 | ||
44908 | -#: fortran/resolve.c:11769 | |
44909 | +#: fortran/resolve.c:11757 | |
44910 | #, gcc-internal-format, gfc-internal-format | |
44911 | msgid "Procedure pointer component '%s' with PASS(%s) at %L has no argument '%s'" | |
44912 | msgstr "El procedimiento de componente puntero '%s' con PASS(%s) en %L no tiene un argumento '%s'" | |
44913 | ||
44914 | -#: fortran/resolve.c:11783 | |
44915 | +#: fortran/resolve.c:11771 | |
44916 | #, gcc-internal-format, gfc-internal-format | |
44917 | msgid "Procedure pointer component '%s' with PASS at %L must have at least one argument" | |
44918 | msgstr "El procedimiento de componente puntero '%s' con PASS en %L debe tener al menos un argumento" | |
44919 | ||
44920 | -#: fortran/resolve.c:11799 | |
44921 | +#: fortran/resolve.c:11787 | |
44922 | #, gcc-internal-format, gfc-internal-format | |
44923 | msgid "Argument '%s' of '%s' with PASS(%s) at %L must be of the derived type '%s'" | |
44924 | msgstr "El argumento '%s' de '%s' con PASS(%s) en %L debe ser del tipo derivado '%s'" | |
44925 | ||
44926 | -#: fortran/resolve.c:11809 | |
44927 | +#: fortran/resolve.c:11797 | |
44928 | #, gcc-internal-format, gfc-internal-format | |
44929 | msgid "Argument '%s' of '%s' with PASS(%s) at %L must be scalar" | |
44930 | msgstr "El argumento '%s' de '%s' con PASS(%s) en %L debe ser escalar" | |
44931 | ||
44932 | -#: fortran/resolve.c:11818 | |
44933 | +#: fortran/resolve.c:11806 | |
44934 | #, gcc-internal-format, gfc-internal-format | |
44935 | msgid "Argument '%s' of '%s' with PASS(%s) at %L may not have the POINTER attribute" | |
44936 | msgstr "El argumento '%s' de '%s' con PASS(%s) en %L no puede tener el atributo POINTER" | |
44937 | ||
44938 | -#: fortran/resolve.c:11827 | |
44939 | +#: fortran/resolve.c:11815 | |
44940 | #, gcc-internal-format, gfc-internal-format | |
44941 | msgid "Argument '%s' of '%s' with PASS(%s) at %L may not be ALLOCATABLE" | |
44942 | msgstr "El argumento '%s' de '%s' con PASS(%s) en %L no puede ser ALLOCATABLE" | |
44943 | ||
44944 | -#: fortran/resolve.c:11864 | |
44945 | +#: fortran/resolve.c:11852 | |
44946 | #, gcc-internal-format, gfc-internal-format | |
44947 | msgid "Component '%s' of '%s' at %L has the same name as an inherited type-bound procedure" | |
44948 | msgstr "El componente '%s' de '%s' en %L tiene el mismo nombre que un procedimiento enlazado a tipo heredado" | |
44949 | ||
44950 | -#: fortran/resolve.c:11877 | |
44951 | +#: fortran/resolve.c:11865 | |
44952 | #, gcc-internal-format, gfc-internal-format | |
44953 | msgid "Character length of component '%s' needs to be a constant specification expression at %L" | |
44954 | msgstr "La longitud de carácter del componente '%s' necesita ser una expresión de especificación constante en %L" | |
44955 | ||
44956 | -#: fortran/resolve.c:11888 | |
44957 | +#: fortran/resolve.c:11876 | |
44958 | #, gcc-internal-format, gfc-internal-format | |
44959 | msgid "Character component '%s' of '%s' at %L with deferred length must be a POINTER or ALLOCATABLE" | |
44960 | msgstr "El componente de carácter '%s' de '%s' en %L con longitud diferida debe ser POINTER o ALLOCATABLE" | |
44961 | ||
44962 | -#: fortran/resolve.c:11900 | |
44963 | +#: fortran/resolve.c:11888 | |
44964 | #, gcc-internal-format, gfc-internal-format | |
44965 | msgid "Fortran 2003: the component '%s' is a PRIVATE type and cannot be a component of '%s', which is PUBLIC at %L" | |
44966 | msgstr "Fortran 2003: el componente '%s' es un tipo PRIVATE y no puede ser un componente de '%s' el cual es PUBLIC en %L" | |
44967 | ||
44968 | -#: fortran/resolve.c:11908 | |
44969 | +#: fortran/resolve.c:11896 | |
44970 | #, gcc-internal-format, gfc-internal-format | |
44971 | msgid "Polymorphic component %s at %L in SEQUENCE or BIND(C) type %s" | |
44972 | msgstr "El componente polimórfico %s en %L en SEQUENCE o de tipo BIND(C) %s" | |
44973 | ||
44974 | -#: fortran/resolve.c:11917 | |
44975 | +#: fortran/resolve.c:11905 | |
44976 | #, gcc-internal-format, gfc-internal-format | |
44977 | msgid "Component %s of SEQUENCE type declared at %L does not have the SEQUENCE attribute" | |
44978 | msgstr "El componente %s del tipo SEQUENCE declarado en %L no tiene el atributo SEQUENCE" | |
44979 | ||
44980 | -#: fortran/resolve.c:11935 fortran/resolve.c:11946 | |
44981 | +#: fortran/resolve.c:11923 fortran/resolve.c:11934 | |
44982 | #, gcc-internal-format, gfc-internal-format | |
44983 | msgid "The pointer component '%s' of '%s' at %L is a type that has not been declared" | |
44984 | msgstr "El componente puntero '%s' de '%s' en %L es de un tipo que no se ha declarado" | |
44985 | ||
44986 | -#: fortran/resolve.c:11958 | |
44987 | +#: fortran/resolve.c:11946 | |
44988 | #, gcc-internal-format, gfc-internal-format | |
44989 | msgid "Component '%s' with CLASS at %L must be allocatable or pointer" | |
44990 | msgstr "El componente '%s' con CLASS en %L debe ser allocatable o pointer" | |
44991 | ||
44992 | -#: fortran/resolve.c:12006 | |
44993 | +#: fortran/resolve.c:11994 | |
44994 | #, gcc-internal-format, gfc-internal-format | |
44995 | msgid "Fortran 2003: Generic name '%s' of function '%s' at %L being the same name as derived type at %L" | |
44996 | msgstr "Fortran 2003: El nombre genérico '%s' de la función '%s' en %L tiene el mismo nombre que el tipo derivado en %L" | |
44997 | ||
44998 | -#: fortran/resolve.c:12058 | |
44999 | +#: fortran/resolve.c:12046 | |
45000 | #, gcc-internal-format, gfc-internal-format | |
45001 | msgid "Assumed size array '%s' in namelist '%s' at %L is not allowed" | |
45002 | msgstr "No se permite la matriz de tamaño asumido '%s' en la lista de nombres '%s' en %L" | |
45003 | ||
45004 | -#: fortran/resolve.c:12064 | |
45005 | +#: fortran/resolve.c:12052 | |
45006 | #, gcc-internal-format, gfc-internal-format | |
45007 | msgid "Fortran 2003: NAMELIST array object '%s' with assumed shape in namelist '%s' at %L" | |
45008 | msgstr "Fortran 2003: Objeto de matriz NAMELIST '%s' con forma asumida en la lista de nombres '%s' en %L" | |
45009 | ||
45010 | -#: fortran/resolve.c:12071 | |
45011 | +#: fortran/resolve.c:12059 | |
45012 | #, gcc-internal-format, gfc-internal-format | |
45013 | msgid "Fortran 2003: NAMELIST array object '%s' with nonconstant shape in namelist '%s' at %L" | |
45014 | msgstr "Fortran 2003: El objeto de matriz NAMELIST '%s' con forma que no es constante en la lista de nombres '%s' en %L" | |
45015 | ||
45016 | -#: fortran/resolve.c:12080 | |
45017 | +#: fortran/resolve.c:12068 | |
45018 | #, gcc-internal-format, gfc-internal-format | |
45019 | msgid "Fortran 2003: NAMELIST object '%s' with nonconstant character length in namelist '%s' at %L" | |
45020 | msgstr "Fortran 2003: El objeto de matriz NAMELIST '%s' con longitud de carácter que no es constante en la lista de nombres '%s' en %L" | |
45021 | ||
45022 | -#: fortran/resolve.c:12090 | |
45023 | +#: fortran/resolve.c:12078 | |
45024 | #, gcc-internal-format, gfc-internal-format | |
45025 | msgid "NAMELIST object '%s' in namelist '%s' at %L is polymorphic and requires a defined input/output procedure" | |
45026 | msgstr "El objeto NAMELIST '%s' en la lista de nombres '%s' en %L es polimórfico y requiere un procedimiento de entrada/salida definido" | |
45027 | ||
45028 | -#: fortran/resolve.c:12100 | |
45029 | +#: fortran/resolve.c:12088 | |
45030 | #, gcc-internal-format, gfc-internal-format | |
45031 | msgid "Fortran 2003: NAMELIST object '%s' in namelist '%s' at %L with ALLOCATABLE or POINTER components" | |
45032 | msgstr "Fortran 2003: El objeto NAMELIST '%s' en la lista de nombres '%s' en %L con componentes ALLOCATABLE o POINTER" | |
45033 | ||
45034 | #. FIXME: Once UDDTIO is implemented, the following can be | |
45035 | #. removed. | |
45036 | -#: fortran/resolve.c:12108 | |
45037 | +#: fortran/resolve.c:12096 | |
45038 | #, gcc-internal-format, gfc-internal-format | |
45039 | msgid "NAMELIST object '%s' in namelist '%s' at %L has ALLOCATABLE or POINTER components and thus requires a defined input/output procedure" | |
45040 | msgstr "El objeto NAMELIST '%s' en la lista de nombres '%s' en %L tiene componentes ALLOCATABLE o POINTER y por lo tanto requere un procedimiento de entrada/salida definido" | |
45041 | ||
45042 | -#: fortran/resolve.c:12125 | |
45043 | +#: fortran/resolve.c:12113 | |
45044 | #, gcc-internal-format, gfc-internal-format | |
45045 | msgid "NAMELIST object '%s' was declared PRIVATE and cannot be member of PUBLIC namelist '%s' at %L" | |
45046 | msgstr "El objeto NAMELIST '%s' se declaró PRIVATE y no puede ser miembro de una lista de nombres PUBLIC '%s' en %L" | |
45047 | ||
45048 | -#: fortran/resolve.c:12135 | |
45049 | +#: fortran/resolve.c:12123 | |
45050 | #, gcc-internal-format, gfc-internal-format | |
45051 | msgid "NAMELIST object '%s' has use-associated PRIVATE components and cannot be member of namelist '%s' at %L" | |
45052 | msgstr "El objeto NAMELIST '%s' tiene componentes PRIVATE asociados a uso y no puede ser miembro de la lista de nombres '%s' en %L" | |
45053 | ||
45054 | -#: fortran/resolve.c:12146 | |
45055 | +#: fortran/resolve.c:12134 | |
45056 | #, gcc-internal-format, gfc-internal-format | |
45057 | msgid "NAMELIST object '%s' has PRIVATE components and cannot be a member of PUBLIC namelist '%s' at %L" | |
45058 | msgstr "El objeto NAMELIST '%s' tiene componentes PRIVATE y no puede ser un miembro de la lista de nombres PUBLIC '%s' en %L" | |
45059 | ||
45060 | -#: fortran/resolve.c:12173 | |
45061 | +#: fortran/resolve.c:12161 | |
45062 | #, gcc-internal-format, gfc-internal-format | |
45063 | msgid "PROCEDURE attribute conflicts with NAMELIST attribute in '%s' at %L" | |
45064 | msgstr "El atributo PROCEDURE genera un conflicto con el atributo NAMELIST en '%s' en %L" | |
45065 | ||
45066 | -#: fortran/resolve.c:12192 | |
45067 | +#: fortran/resolve.c:12180 | |
45068 | #, gcc-internal-format, gfc-internal-format | |
45069 | msgid "Parameter array '%s' at %L cannot be automatic or of deferred shape" | |
45070 | msgstr "La matriz de parámetro '%s' en %L no puede ser automática ni de forma diferida" | |
45071 | ||
45072 | -#: fortran/resolve.c:12204 | |
45073 | +#: fortran/resolve.c:12192 | |
45074 | #, gcc-internal-format, gfc-internal-format | |
45075 | msgid "Implicitly typed PARAMETER '%s' at %L doesn't match a later IMPLICIT type" | |
45076 | msgstr "El PARAMETER de tipo implícito '%s' en %L no coincide con un tipo IMPLICIT posterior" | |
45077 | ||
45078 | -#: fortran/resolve.c:12215 | |
45079 | +#: fortran/resolve.c:12203 | |
45080 | #, gcc-internal-format, gfc-internal-format | |
45081 | msgid "Incompatible derived type in PARAMETER at %L" | |
45082 | msgstr "Tipo derivado incompatible en PARAMETER en %L" | |
45083 | ||
45084 | -#: fortran/resolve.c:12284 | |
45085 | +#: fortran/resolve.c:12272 | |
45086 | #, gcc-internal-format, gfc-internal-format | |
45087 | msgid "PROTECTED attribute conflicts with EXTERNAL attribute at %L" | |
45088 | msgstr "El atributo PROTECTED genera un conflicto con el atributo EXTERNAL en %L" | |
45089 | ||
45090 | -#: fortran/resolve.c:12287 | |
45091 | +#: fortran/resolve.c:12275 | |
45092 | #, gcc-internal-format, gfc-internal-format | |
45093 | msgid "PROCEDURE attribute conflicts with PROTECTED attribute at %L" | |
45094 | msgstr "El atributo PROCEDURE genera un conflicto con el atributo PROTECTED en %L" | |
45095 | ||
45096 | -#: fortran/resolve.c:12370 | |
45097 | +#: fortran/resolve.c:12358 | |
45098 | #, gcc-internal-format, gfc-internal-format | |
45099 | msgid "'%s' at %L has the CONTIGUOUS attribute but is not an array pointer or an assumed-shape array" | |
45100 | msgstr "'%s' en %L tiene el atributo CONTIGUOUS pero no es un puntero de matriz o una matriz de forma asumida" | |
45101 | ||
45102 | -#: fortran/resolve.c:12388 | |
45103 | +#: fortran/resolve.c:12376 | |
45104 | #, gcc-internal-format, gfc-internal-format | |
45105 | msgid "Assumed size array at %L must be a dummy argument" | |
45106 | msgstr "La matriz de tamaño asumido en %L debe ser un argumento de prueba" | |
45107 | ||
45108 | -#: fortran/resolve.c:12391 | |
45109 | +#: fortran/resolve.c:12379 | |
45110 | #, gcc-internal-format, gfc-internal-format | |
45111 | msgid "Assumed shape array at %L must be a dummy argument" | |
45112 | msgstr "La matriz de forma asumida en %L debe ser un argumento de prueba" | |
45113 | ||
45114 | -#: fortran/resolve.c:12404 | |
45115 | +#: fortran/resolve.c:12392 | |
45116 | #, gcc-internal-format, gfc-internal-format | |
45117 | msgid "Symbol at %L is not a DUMMY variable" | |
45118 | msgstr "El símbolo en %L no es una variable DUMMY" | |
45119 | ||
45120 | -#: fortran/resolve.c:12410 | |
45121 | +#: fortran/resolve.c:12398 | |
45122 | #, gcc-internal-format, gfc-internal-format | |
45123 | msgid "'%s' at %L cannot have the VALUE attribute because it is not a dummy argument" | |
45124 | msgstr "'%s' en %L no puede tener el atributo VALUE porque no es un argumento dummy" | |
45125 | ||
45126 | -#: fortran/resolve.c:12420 | |
45127 | +#: fortran/resolve.c:12408 | |
45128 | #, gcc-internal-format, gfc-internal-format | |
45129 | msgid "Character dummy variable '%s' at %L with VALUE attribute must have constant length" | |
45130 | msgstr "La variable dummy de carácter '%s' en %L con atributo VALUE debe tener longitud constante" | |
45131 | ||
45132 | -#: fortran/resolve.c:12429 | |
45133 | +#: fortran/resolve.c:12417 | |
45134 | #, gcc-internal-format, gfc-internal-format | |
45135 | msgid "C interoperable character dummy variable '%s' at %L with VALUE attribute must have length one" | |
45136 | msgstr "La variable dummy de carácter interoperable con C '%s' en %L con atributo VALUE debe ser de longitud uno" | |
45137 | ||
45138 | -#: fortran/resolve.c:12442 fortran/resolve.c:12523 | |
45139 | +#: fortran/resolve.c:12430 fortran/resolve.c:12511 | |
45140 | #, gcc-internal-format, gfc-internal-format | |
45141 | msgid "The derived type '%s' at %L is of type '%s', which has not been defined" | |
45142 | msgstr "El tipo derivado '%s' en %L es de tipo '%s', el cual no se ha definido" | |
45143 | ||
45144 | -#: fortran/resolve.c:12469 | |
45145 | +#: fortran/resolve.c:12457 | |
45146 | #, gcc-internal-format, gfc-internal-format | |
45147 | msgid "Variable '%s' at %L cannot be BIND(C) because it is neither a COMMON block nor declared at the module level scope" | |
45148 | msgstr "La variable '%s' en %L no puede ser BIND(C) porque no es un bloque COMMON ni se declaró en el ámbito de nivel de módulo" | |
45149 | ||
45150 | -#: fortran/resolve.c:12549 | |
45151 | +#: fortran/resolve.c:12537 | |
45152 | #, gcc-internal-format, gfc-internal-format | |
45153 | msgid "Fortran 2003: PUBLIC %s '%s' at %L of PRIVATE derived type '%s'" | |
45154 | msgstr "Fortran 2003: La función PUBLIC %s '%s' en %L es de tipo derivado PRIVATE '%s'" | |
45155 | ||
45156 | -#: fortran/resolve.c:12563 | |
45157 | +#: fortran/resolve.c:12551 | |
45158 | #, gcc-internal-format, gfc-internal-format | |
45159 | msgid "Variable %s at %L of type LOCK_TYPE or with subcomponent of type LOCK_TYPE must be a coarray" | |
45160 | msgstr "La variable %s en %L de tipo LOCK_TYPE o con un subcomponente de tipo LOCK_TYPE debe ser una comatriz" | |
45161 | ||
45162 | -#: fortran/resolve.c:12581 | |
45163 | +#: fortran/resolve.c:12569 | |
45164 | #, gcc-internal-format, gfc-internal-format | |
45165 | msgid "The INTENT(OUT) dummy argument '%s' at %L is ASSUMED SIZE and so cannot have a default initializer" | |
45166 | msgstr "El argumento dummy INTENT(OUT) '%s' en %L es ASSUMED SIZE y por lo tanto no puede tener un inicializador por defecto" | |
45167 | ||
45168 | -#: fortran/resolve.c:12593 | |
45169 | +#: fortran/resolve.c:12581 | |
45170 | #, gcc-internal-format, gfc-internal-format | |
45171 | msgid "Dummy argument '%s' at %L of LOCK_TYPE shall not be INTENT(OUT)" | |
45172 | msgstr "El argumento dummy '%s' en %L de LOCK_TYPE no puede ser INTENT(OUT)" | |
45173 | ||
45174 | -#: fortran/resolve.c:12605 | |
45175 | +#: fortran/resolve.c:12593 | |
45176 | #, gcc-internal-format, gfc-internal-format | |
45177 | msgid "Function result '%s' at %L shall not be a coarray or have a coarray component" | |
45178 | msgstr "El resultado de la función '%s' en %L no puede ser una comatriz o tener un componente comatriz" | |
45179 | ||
45180 | -#: fortran/resolve.c:12614 | |
45181 | +#: fortran/resolve.c:12602 | |
45182 | #, gcc-internal-format, gfc-internal-format | |
45183 | msgid "Variable '%s' at %L of TYPE(C_PTR) or TYPE(C_FUNPTR) shall not be a coarray" | |
45184 | msgstr "La variable '%s' en %L de TYPE(C_PTR) o TYPE(C_FUNPTR) no debe ser una comatriz" | |
45185 | ||
45186 | -#: fortran/resolve.c:12626 | |
45187 | +#: fortran/resolve.c:12614 | |
45188 | #, gcc-internal-format, gfc-internal-format | |
45189 | msgid "Variable '%s' at %L with coarray component shall be a nonpointer, nonallocatable scalar" | |
45190 | msgstr "La variable '%s' en %L con componente de comatriz debe ser un escalar que no sea puntero alojable" | |
45191 | ||
45192 | -#: fortran/resolve.c:12641 | |
45193 | +#: fortran/resolve.c:12629 | |
45194 | #, gcc-internal-format, gfc-internal-format | |
45195 | msgid "Variable '%s' at %L is a coarray and is not ALLOCATABLE, SAVE nor a dummy argument" | |
45196 | msgstr "La variable '%s' en %L es una comatriz y no es ALLOCATABLE, SAVE ni un argumento dummy" | |
45197 | ||
45198 | -#: fortran/resolve.c:12649 | |
45199 | +#: fortran/resolve.c:12637 | |
45200 | #, gcc-internal-format, gfc-internal-format | |
45201 | msgid "Coarray variable '%s' at %L shall not have codimensions with deferred shape" | |
45202 | msgstr "La variable de comatriz '%s' en %L no debe tener codimensiones con forma diferida" | |
45203 | ||
45204 | -#: fortran/resolve.c:12656 | |
45205 | +#: fortran/resolve.c:12644 | |
45206 | #, gcc-internal-format, gfc-internal-format | |
45207 | msgid "Allocatable coarray variable '%s' at %L must have deferred shape" | |
45208 | msgstr "La variable comatriz allocatable '%s' en %L debe tener forma diferida" | |
45209 | ||
45210 | -#: fortran/resolve.c:12668 | |
45211 | +#: fortran/resolve.c:12656 | |
45212 | #, gcc-internal-format, gfc-internal-format | |
45213 | msgid "Variable '%s' at %L is INTENT(OUT) and can thus not be an allocatable coarray or have coarray components" | |
45214 | msgstr "La variable '%s' en %L es INTENT(OUT) y por lo tanto no puede ser una comatriz allocatable o tener componentes comatriz" | |
45215 | ||
45216 | -#: fortran/resolve.c:12677 | |
45217 | +#: fortran/resolve.c:12665 | |
45218 | #, gcc-internal-format, gfc-internal-format | |
45219 | msgid "Coarray dummy variable '%s' at %L not allowed in BIND(C) procedure '%s'" | |
45220 | msgstr "No se permite la variable dummy comatriz '%s' en %L en el procedimiento BIND(C) '%s'" | |
45221 | ||
45222 | -#: fortran/resolve.c:12749 | |
45223 | +#: fortran/resolve.c:12737 | |
45224 | #, gcc-internal-format, gfc-internal-format | |
45225 | msgid "Threadprivate at %L isn't SAVEd" | |
45226 | msgstr "No se guarda (SAVE) el threadprivate en %L" | |
45227 | ||
45228 | -#: fortran/resolve.c:12843 | |
45229 | +#: fortran/resolve.c:12831 | |
45230 | #, gcc-internal-format, gfc-internal-format | |
45231 | msgid "BLOCK DATA element '%s' at %L must be in COMMON" | |
45232 | msgstr "El elemento BLOCK DATA '%s' en %L debe estar en COMMON" | |
45233 | ||
45234 | -#: fortran/resolve.c:12849 | |
45235 | +#: fortran/resolve.c:12837 | |
45236 | #, gcc-internal-format, gfc-internal-format | |
45237 | msgid "DATA array '%s' at %L must be specified in a previous declaration" | |
45238 | msgstr "La matriz DATA '%s' en %L se debe especificar en una declaración previa" | |
45239 | ||
45240 | -#: fortran/resolve.c:12858 | |
45241 | +#: fortran/resolve.c:12846 | |
45242 | #, gcc-internal-format, gfc-internal-format | |
45243 | msgid "DATA element '%s' at %L cannot have a coindex" | |
45244 | msgstr "El elemento DATA '%s' en %L no puede tener un coíndice" | |
45245 | ||
45246 | -#: fortran/resolve.c:12872 | |
45247 | +#: fortran/resolve.c:12860 | |
45248 | #, gcc-internal-format, gfc-internal-format | |
45249 | msgid "DATA element '%s' at %L is a pointer and so must be a full array" | |
45250 | msgstr "El elemento DATA '%s' en %L es un puntero y entonces debe ser una matriz completa" | |
45251 | ||
45252 | -#: fortran/resolve.c:12918 | |
45253 | +#: fortran/resolve.c:12906 | |
45254 | #, gcc-internal-format, gfc-internal-format | |
45255 | msgid "Nonconstant array section at %L in DATA statement" | |
45256 | msgstr "Sección de matriz no constante en %L en la declaración DATA" | |
45257 | ||
45258 | -#: fortran/resolve.c:12931 | |
45259 | +#: fortran/resolve.c:12919 | |
45260 | #, gcc-internal-format, gfc-internal-format | |
45261 | msgid "DATA statement at %L has more variables than values" | |
45262 | msgstr "La declaración DATA en %L tiene más variables que valores" | |
45263 | ||
45264 | -#: fortran/resolve.c:13030 | |
45265 | +#: fortran/resolve.c:13018 | |
45266 | #, gcc-internal-format, gfc-internal-format | |
45267 | msgid "start of implied-do loop at %L could not be simplified to a constant value" | |
45268 | msgstr "el inicio del bucle do implícito en %L no se puede simplificar a un valor constante" | |
45269 | ||
45270 | -#: fortran/resolve.c:13038 | |
45271 | +#: fortran/resolve.c:13026 | |
45272 | #, gcc-internal-format, gfc-internal-format | |
45273 | msgid "end of implied-do loop at %L could not be simplified to a constant value" | |
45274 | msgstr "el final del bucle do implícito en %L no se puede simplificar a un valor constante" | |
45275 | ||
45276 | -#: fortran/resolve.c:13046 | |
45277 | +#: fortran/resolve.c:13034 | |
45278 | #, gcc-internal-format, gfc-internal-format | |
45279 | msgid "step of implied-do loop at %L could not be simplified to a constant value" | |
45280 | msgstr "el paso del bucle do implícito en %L no se puede simplificar a un valor constante" | |
45281 | ||
45282 | -#: fortran/resolve.c:13171 | |
45283 | +#: fortran/resolve.c:13159 | |
45284 | #, gcc-internal-format, gfc-internal-format | |
45285 | msgid "DATA statement at %L has more values than variables" | |
45286 | msgstr "La declaración DATA en %L tiene más valores que variables" | |
45287 | ||
45288 | -#: fortran/resolve.c:13310 | |
45289 | +#: fortran/resolve.c:13298 | |
45290 | #, gcc-internal-format, gfc-internal-format | |
45291 | msgid "Label %d at %L defined but not used" | |
45292 | msgstr "Se define la etiqueta %d en %L pero no se usa" | |
45293 | ||
45294 | -#: fortran/resolve.c:13315 | |
45295 | +#: fortran/resolve.c:13303 | |
45296 | #, gcc-internal-format, gfc-internal-format | |
45297 | msgid "Label %d at %L defined but cannot be used" | |
45298 | msgstr "Se define la etiqueta %d en %L pero no se puede usar" | |
45299 | ||
45300 | -#: fortran/resolve.c:13399 | |
45301 | +#: fortran/resolve.c:13387 | |
45302 | #, gcc-internal-format, gfc-internal-format | |
45303 | msgid "Derived type variable '%s' at %L must have SEQUENCE attribute to be an EQUIVALENCE object" | |
45304 | msgstr "La variable de tipo derivado '%s' en %L debe tener el atributo SEQUENCE para ser un objeto EQUIVALENCE" | |
45305 | ||
45306 | -#: fortran/resolve.c:13408 | |
45307 | +#: fortran/resolve.c:13396 | |
45308 | #, gcc-internal-format, gfc-internal-format | |
45309 | msgid "Derived type variable '%s' at %L cannot have ALLOCATABLE components to be an EQUIVALENCE object" | |
45310 | msgstr "La variable de tipo derivado '%s' en %L no puede tener componentes ALLOCATABLE que sean un objeto EQUIVALENCE" | |
45311 | ||
45312 | -#: fortran/resolve.c:13416 | |
45313 | +#: fortran/resolve.c:13404 | |
45314 | #, gcc-internal-format, gfc-internal-format | |
45315 | msgid "Derived type variable '%s' at %L with default initialization cannot be in EQUIVALENCE with a variable in COMMON" | |
45316 | msgstr "La variable de tipo derivado '%s' en %L con inicializadores por defecto no puede ser un objeto EQUIVALENCE con una variable en COMMON" | |
45317 | ||
45318 | -#: fortran/resolve.c:13432 | |
45319 | +#: fortran/resolve.c:13420 | |
45320 | #, gcc-internal-format, gfc-internal-format | |
45321 | msgid "Derived type variable '%s' at %L with pointer component(s) cannot be an EQUIVALENCE object" | |
45322 | msgstr "La variable de tipo derivado '%s' en %L con componente(s) de puntero no puede ser un objeto EQUIVALENCE" | |
45323 | ||
45324 | -#: fortran/resolve.c:13535 | |
45325 | +#: fortran/resolve.c:13523 | |
45326 | #, gcc-internal-format, gfc-internal-format | |
45327 | msgid "Syntax error in EQUIVALENCE statement at %L" | |
45328 | msgstr "Error sintáctico en la declaración EQUIVALENCE en %L" | |
45329 | ||
45330 | -#: fortran/resolve.c:13550 | |
45331 | +#: fortran/resolve.c:13538 | |
45332 | #, gcc-internal-format, gfc-internal-format | |
45333 | msgid "Either all or none of the objects in the EQUIVALENCE set at %L shall have the PROTECTED attribute" | |
45334 | msgstr "Todos o ninguno de los objetos en el conjunto EQUIVALENCE en %L deben tener el atributo PROTECTED" | |
45335 | ||
45336 | -#: fortran/resolve.c:13562 | |
45337 | +#: fortran/resolve.c:13550 | |
45338 | #, gcc-internal-format, gfc-internal-format | |
45339 | msgid "Common block member '%s' at %L cannot be an EQUIVALENCE object in the pure procedure '%s'" | |
45340 | msgstr "El miembro de bloque común '%s' en %L no puede ser un objeto EQUIVALENCE en el procedimiento puro '%s'" | |
45341 | ||
45342 | -#: fortran/resolve.c:13571 | |
45343 | +#: fortran/resolve.c:13559 | |
45344 | #, gcc-internal-format, gfc-internal-format | |
45345 | msgid "Named constant '%s' at %L cannot be an EQUIVALENCE object" | |
45346 | msgstr "La constante nombrada '%s' en %L no puede ser un objeto EQUIVALENCE" | |
45347 | ||
45348 | -#: fortran/resolve.c:13650 | |
45349 | +#: fortran/resolve.c:13638 | |
45350 | #, gcc-internal-format, gfc-internal-format | |
45351 | msgid "Array '%s' at %L with non-constant bounds cannot be an EQUIVALENCE object" | |
45352 | msgstr "La matriz '%s' en %L con límites que no son constantes no puede ser un objeto EQUIVALENCE" | |
45353 | ||
45354 | -#: fortran/resolve.c:13661 | |
45355 | +#: fortran/resolve.c:13649 | |
45356 | #, gcc-internal-format, gfc-internal-format | |
45357 | msgid "Structure component '%s' at %L cannot be an EQUIVALENCE object" | |
45358 | msgstr "El componente de estructura '%s' en %L no puede ser un objeto EQUIVALENCE" | |
45359 | ||
45360 | -#: fortran/resolve.c:13672 | |
45361 | +#: fortran/resolve.c:13660 | |
45362 | #, gcc-internal-format, gfc-internal-format | |
45363 | msgid "Substring at %L has length zero" | |
45364 | msgstr "La subcadena en %L tiene longitud cero" | |
45365 | ||
45366 | -#: fortran/resolve.c:13715 | |
45367 | +#: fortran/resolve.c:13703 | |
45368 | #, gcc-internal-format, gfc-internal-format | |
45369 | msgid "Fortran 2003: PUBLIC function '%s' at %L of PRIVATE type '%s'" | |
45370 | msgstr "Fortran 2003: La función PUBLIC '%s' en %L es de tipo derivado PRIVATE '%s'" | |
45371 | ||
45372 | -#: fortran/resolve.c:13728 | |
45373 | +#: fortran/resolve.c:13716 | |
45374 | #, gcc-internal-format, gfc-internal-format | |
45375 | msgid "ENTRY '%s' at %L has no IMPLICIT type" | |
45376 | msgstr "ENTRY '%s' en %L no tiene tipo IMPLICIT" | |
45377 | ||
45378 | -#: fortran/resolve.c:13745 | |
45379 | +#: fortran/resolve.c:13733 | |
45380 | #, gcc-internal-format, gfc-internal-format | |
45381 | msgid "User operator procedure '%s' at %L must be a FUNCTION" | |
45382 | msgstr "El procedimiento de operador de usuario '%s' en %L debe ser FUNCTION" | |
45383 | ||
45384 | -#: fortran/resolve.c:13755 | |
45385 | +#: fortran/resolve.c:13743 | |
45386 | #, gcc-internal-format, gfc-internal-format | |
45387 | msgid "User operator procedure '%s' at %L cannot be assumed character length" | |
45388 | msgstr "El procedimiento de operador de usuario '%s' en %L no puede ser de longitud de carácter asumido" | |
45389 | ||
45390 | -#: fortran/resolve.c:13763 | |
45391 | +#: fortran/resolve.c:13751 | |
45392 | #, gcc-internal-format, gfc-internal-format | |
45393 | msgid "User operator procedure '%s' at %L must have at least one argument" | |
45394 | msgstr "El procedimiento de operador de usuario '%s' en %L debe tener al menos un argumento" | |
45395 | ||
45396 | -#: fortran/resolve.c:13777 | |
45397 | +#: fortran/resolve.c:13765 | |
45398 | #, gcc-internal-format, gfc-internal-format | |
45399 | msgid "First argument of operator interface at %L cannot be optional" | |
45400 | msgstr "El primer argumento de la interfaz de operador en %L no puede ser opcional" | |
45401 | ||
45402 | -#: fortran/resolve.c:13795 | |
45403 | +#: fortran/resolve.c:13783 | |
45404 | #, gcc-internal-format, gfc-internal-format | |
45405 | msgid "Second argument of operator interface at %L cannot be optional" | |
45406 | msgstr "El segundo argumento de la interfaz de operador en %L no puede ser opcional" | |
45407 | ||
45408 | -#: fortran/resolve.c:13802 | |
45409 | +#: fortran/resolve.c:13790 | |
45410 | #, gcc-internal-format, gfc-internal-format | |
45411 | msgid "Operator interface at %L must have, at most, two arguments" | |
45412 | msgstr "La interfaz de operador en %L debe tener, cuando mucho, dos argumentos" | |
45413 | ||
45414 | -#: fortran/resolve.c:13878 | |
45415 | +#: fortran/resolve.c:13866 | |
45416 | #, gcc-internal-format, gfc-internal-format | |
45417 | msgid "Contained procedure '%s' at %L of a PURE procedure must also be PURE" | |
45418 | msgstr "El procedimiento contenido '%s' en %L de un procedimiento PURE también debe ser PURE" | |
45419 | @@ -42805,22 +43011,22 @@ | |
45420 | msgid "Result of SCALE overflows its kind at %L" | |
45421 | msgstr "El resultado de SCALE desborda su género en %L" | |
45422 | ||
45423 | -#: fortran/simplify.c:5861 | |
45424 | +#: fortran/simplify.c:5862 | |
45425 | #, gcc-internal-format, gfc-internal-format | |
45426 | msgid "Argument of SQRT at %L has a negative value" | |
45427 | msgstr "El argumento de SQRT en %L tiene un valor negativo" | |
45428 | ||
45429 | -#: fortran/simplify.c:6172 | |
45430 | +#: fortran/simplify.c:6173 | |
45431 | #, gcc-internal-format, gfc-internal-format | |
45432 | msgid "Out of bounds in IMAGE_INDEX at %L for dimension %d, SUB has %ld and COARRAY lower bound is %ld)" | |
45433 | msgstr "Fuera de límites en IMAGE_INDEX en %L para la dimensión %d, SUB tiene %ld y el límite inferior de COARRAY es %ld)" | |
45434 | ||
45435 | -#: fortran/simplify.c:6195 | |
45436 | +#: fortran/simplify.c:6196 | |
45437 | #, gcc-internal-format, gfc-internal-format | |
45438 | msgid "Out of bounds in IMAGE_INDEX at %L for dimension %d, SUB has %ld and COARRAY upper bound is %ld)" | |
45439 | msgstr "Fuera de límites en IMAGE_INDEX en %L para la dimensión %d, SUB tiene %ld y el límite superior de COARRAY es %ld)" | |
45440 | ||
45441 | -#: fortran/simplify.c:6612 | |
45442 | +#: fortran/simplify.c:6613 | |
45443 | #, gcc-internal-format, gfc-internal-format | |
45444 | msgid "Character '%s' in string at %L cannot be converted into character kind %d" | |
45445 | msgstr "El carácter '%s' en la cadena en %L no se puede convertir al género de carácter %d" | |
45446 | @@ -43103,50 +43309,50 @@ | |
45447 | msgid "Label %d at %C previously used as branch target" | |
45448 | msgstr "La etiqueta %d en %C se utilizó previamente como objetivo de ramificación" | |
45449 | ||
45450 | -#: fortran/symbol.c:2578 | |
45451 | +#: fortran/symbol.c:2576 | |
45452 | #, gcc-internal-format, gfc-internal-format | |
45453 | msgid "Name '%s' at %C is an ambiguous reference to '%s' from module '%s'" | |
45454 | msgstr "El nombre '%s' en %C es una referencia ambigua a '%s' del módulo '%s'" | |
45455 | ||
45456 | -#: fortran/symbol.c:2581 | |
45457 | +#: fortran/symbol.c:2579 | |
45458 | #, gcc-internal-format, gfc-internal-format | |
45459 | msgid "Name '%s' at %C is an ambiguous reference to '%s' from current program unit" | |
45460 | msgstr "El nombre '%s' en %C es una referencia ambigua a '%s' de la unidad de programa actual" | |
45461 | ||
45462 | #. Symbol is from another namespace. | |
45463 | -#: fortran/symbol.c:2761 | |
45464 | +#: fortran/symbol.c:2759 | |
45465 | #, gcc-internal-format, gfc-internal-format | |
45466 | msgid "Symbol '%s' at %C has already been host associated" | |
45467 | msgstr "El símbolo '%s' en %C ya se había asociado con el anfitrión" | |
45468 | ||
45469 | -#: fortran/symbol.c:3604 | |
45470 | +#: fortran/symbol.c:3602 | |
45471 | #, gcc-internal-format, gfc-internal-format | |
45472 | msgid "Derived type '%s' declared at %L must have the BIND attribute to be C interoperable" | |
45473 | msgstr "El tipo derivado '%s' declarado en %L debe tener el atributo BIND para ser interoperable con C" | |
45474 | ||
45475 | -#: fortran/symbol.c:3622 | |
45476 | +#: fortran/symbol.c:3620 | |
45477 | #, gcc-internal-format, gfc-internal-format | |
45478 | msgid "Derived type '%s' with BIND(C) attribute at %L is empty, and may be inaccessible by the C companion processor" | |
45479 | msgstr "El tipo derivado '%s' con atributo BIND(C) en %L está vacío, y puede ser inaccesible para el procesador acompañante de C" | |
45480 | ||
45481 | -#: fortran/symbol.c:3643 | |
45482 | +#: fortran/symbol.c:3641 | |
45483 | #, gcc-internal-format, gfc-internal-format | |
45484 | msgid "Component '%s' at %L cannot have the POINTER attribute because it is a member of the BIND(C) derived type '%s' at %L" | |
45485 | msgstr "El componente '%s' en %L no puede tener el atributo POINTER porque es un miembro del tipo derivado BIND(C) '%s' en %L" | |
45486 | ||
45487 | -#: fortran/symbol.c:3653 | |
45488 | +#: fortran/symbol.c:3651 | |
45489 | #, gcc-internal-format, gfc-internal-format | |
45490 | msgid "Procedure pointer component '%s' at %L cannot be a member of the BIND(C) derived type '%s' at %L" | |
45491 | msgstr "El procedimiento de componente puntero '%s' en %L no puede ser un miembro del tipo derivado BIND(C) '%s' en %L" | |
45492 | ||
45493 | -#: fortran/symbol.c:3664 | |
45494 | +#: fortran/symbol.c:3662 | |
45495 | #, gcc-internal-format, gfc-internal-format | |
45496 | msgid "Component '%s' at %L cannot have the ALLOCATABLE attribute because it is a member of the BIND(C) derived type '%s' at %L" | |
45497 | msgstr "El componente '%s' en %L no puede tener el atributo ALLOCATABLE porque es un miembro del tipo derivado BIND(C) '%s' en %L" | |
45498 | ||
45499 | #. If the derived type is bind(c), all fields must be | |
45500 | #. interop. | |
45501 | -#: fortran/symbol.c:3702 | |
45502 | +#: fortran/symbol.c:3700 | |
45503 | #, gcc-internal-format, gfc-internal-format | |
45504 | msgid "Component '%s' in derived type '%s' at %L may not be C interoperable, even though derived type '%s' is BIND(C)" | |
45505 | msgstr "El componente '%s' en el tipo derivado '%s' en %L tal vez no es interoperable con C, aún cuando el tipo derivado '%s' es BIND(C)" | |
45506 | @@ -43154,27 +43360,27 @@ | |
45507 | #. If derived type is param to bind(c) routine, or to one | |
45508 | #. of the iso_c_binding procs, it must be interoperable, so | |
45509 | #. all fields must interop too. | |
45510 | -#: fortran/symbol.c:3711 | |
45511 | +#: fortran/symbol.c:3709 | |
45512 | #, gcc-internal-format, gfc-internal-format | |
45513 | msgid "Component '%s' in derived type '%s' at %L may not be C interoperable" | |
45514 | msgstr "El componente '%s' en el tipo derivado '%s' en %L tal vez no es interoperable con C" | |
45515 | ||
45516 | -#: fortran/symbol.c:3725 | |
45517 | +#: fortran/symbol.c:3723 | |
45518 | #, gcc-internal-format, gfc-internal-format | |
45519 | msgid "Derived type '%s' at %L cannot be declared with both PRIVATE and BIND(C) attributes" | |
45520 | msgstr "El tipo derivado '%s' en %L no se puede declarar con atributos PRIVATE y BIND(C) al mismo tiempo" | |
45521 | ||
45522 | -#: fortran/symbol.c:3733 | |
45523 | +#: fortran/symbol.c:3731 | |
45524 | #, gcc-internal-format, gfc-internal-format | |
45525 | msgid "Derived type '%s' at %L cannot have the SEQUENCE attribute because it is BIND(C)" | |
45526 | msgstr "El tipo derivado '%s' en %L no puede tener el atributo SEQUENCE porque es BIND(C)" | |
45527 | ||
45528 | -#: fortran/symbol.c:4740 | |
45529 | +#: fortran/symbol.c:4739 | |
45530 | #, gcc-internal-format, gfc-internal-format | |
45531 | msgid "Symbol '%s' is used before it is typed at %L" | |
45532 | msgstr "El símbolo '%s' se usa antes de escribirse en %L" | |
45533 | ||
45534 | -#: fortran/symbol.c:4746 | |
45535 | +#: fortran/symbol.c:4745 | |
45536 | #, gcc-internal-format, gfc-internal-format | |
45537 | msgid "Extension: Symbol '%s' is used before it is typed at %L" | |
45538 | msgstr "Extensión: Se usa el símbolo '%s' antes de escribirse en %L" | |
45539 | @@ -43189,17 +43395,17 @@ | |
45540 | msgid "BOZ constant at %L is too large (%ld vs %ld bits)" | |
45541 | msgstr "La constante BOZ en %L es demasiado grande (%ld vs %ld bits)" | |
45542 | ||
45543 | -#: fortran/trans-array.c:6999 | |
45544 | +#: fortran/trans-array.c:6998 | |
45545 | #, gcc-internal-format, gfc-internal-format | |
45546 | msgid "Creating array temporary at %L for argument '%s'" | |
45547 | msgstr "Se crea una matriz temporal en %L para el argumento '%s'" | |
45548 | ||
45549 | -#: fortran/trans-array.c:8074 | |
45550 | +#: fortran/trans-array.c:8124 | |
45551 | #, gcc-internal-format | |
45552 | msgid "Possible front-end bug: Deferred array size without pointer, allocatable attribute or derived type without allocatable components." | |
45553 | msgstr "Posible bicho del frente: Tamaño de matriz diferido sin atributo pointer, allocatable o tipo derivado sin componentes allocatable." | |
45554 | ||
45555 | -#: fortran/trans-array.c:8556 | |
45556 | +#: fortran/trans-array.c:8621 | |
45557 | #, gcc-internal-format, gfc-internal-format | |
45558 | msgid "bad expression type during walk (%d)" | |
45559 | msgstr "tipo de expresión errónea durante la caminata (%d)" | |
45560 | @@ -43280,62 +43486,62 @@ | |
45561 | msgid "non-constant initialization expression at %L" | |
45562 | msgstr "expresión de inicialización que no es constante en %L" | |
45563 | ||
45564 | -#: fortran/trans-decl.c:1348 | |
45565 | +#: fortran/trans-decl.c:1347 | |
45566 | #, gcc-internal-format | |
45567 | msgid "intrinsic variable which isn't a procedure" | |
45568 | msgstr "variable intrínseca que no es un procedimiento" | |
45569 | ||
45570 | -#: fortran/trans-decl.c:3519 fortran/trans-decl.c:5367 | |
45571 | +#: fortran/trans-decl.c:3518 fortran/trans-decl.c:5382 | |
45572 | #, gcc-internal-format, gfc-internal-format | |
45573 | msgid "Return value of function '%s' at %L not set" | |
45574 | msgstr "No se define el valor de devolución de la función '%s' en %L" | |
45575 | ||
45576 | -#: fortran/trans-decl.c:3838 | |
45577 | +#: fortran/trans-decl.c:3837 | |
45578 | #, gcc-internal-format | |
45579 | msgid "Deferred type parameter not yet supported" | |
45580 | msgstr "Aún no se admite un parámetro de tipo diferido" | |
45581 | ||
45582 | -#: fortran/trans-decl.c:4045 | |
45583 | +#: fortran/trans-decl.c:4044 | |
45584 | #, gcc-internal-format, gfc-internal-format | |
45585 | msgid "backend decl for module variable %s already exists" | |
45586 | msgstr "ya existe la declaración del extremo trasero para la variable de módulo %s" | |
45587 | ||
45588 | -#: fortran/trans-decl.c:4569 | |
45589 | +#: fortran/trans-decl.c:4568 | |
45590 | #, gcc-internal-format, gfc-internal-format | |
45591 | msgid "Dummy argument '%s' at %L was declared INTENT(OUT) but was not set" | |
45592 | msgstr "El argumento dummy '%s' en %L se declaró INTENT(OUT) pero no se estableció" | |
45593 | ||
45594 | -#: fortran/trans-decl.c:4573 | |
45595 | +#: fortran/trans-decl.c:4572 | |
45596 | #, gcc-internal-format, gfc-internal-format | |
45597 | msgid "Derived-type dummy argument '%s' at %L was declared INTENT(OUT) but was not set and does not have a default initializer" | |
45598 | msgstr "El argumento dummy de tipo derivado '%s' en %L se declaró INTENT(OUT) pero no se estableció y no tiene un inicializador por defecto" | |
45599 | ||
45600 | -#: fortran/trans-decl.c:4582 | |
45601 | +#: fortran/trans-decl.c:4581 fortran/trans-decl.c:4693 | |
45602 | #, gcc-internal-format, gfc-internal-format | |
45603 | msgid "Unused dummy argument '%s' at %L" | |
45604 | msgstr "Argumento dummy sin uso '%s' en %L" | |
45605 | ||
45606 | -#: fortran/trans-decl.c:4595 | |
45607 | +#: fortran/trans-decl.c:4594 | |
45608 | #, gcc-internal-format, gfc-internal-format | |
45609 | msgid "Unused variable '%s' declared at %L" | |
45610 | msgstr "Se declaró la variable '%s' sin uso en %L" | |
45611 | ||
45612 | -#: fortran/trans-decl.c:4602 | |
45613 | +#: fortran/trans-decl.c:4601 | |
45614 | #, gcc-internal-format, gfc-internal-format | |
45615 | msgid "Unused module variable '%s' which has been explicitly imported at %L" | |
45616 | msgstr "Variable de módulo '%s' sin uso la cual se importó explícitamente en %L" | |
45617 | ||
45618 | -#: fortran/trans-decl.c:4649 | |
45619 | +#: fortran/trans-decl.c:4648 | |
45620 | #, gcc-internal-format, gfc-internal-format | |
45621 | msgid "Unused parameter '%s' declared at %L" | |
45622 | msgstr "Se declaró el parámetro '%s' sin uso en %L" | |
45623 | ||
45624 | -#: fortran/trans-decl.c:4652 | |
45625 | +#: fortran/trans-decl.c:4651 | |
45626 | #, gcc-internal-format, gfc-internal-format | |
45627 | msgid "Unused parameter '%s' which has been explicitly imported at %L" | |
45628 | msgstr "Parámetro '%s' sin uso el cual se importó explícitamente en %L" | |
45629 | ||
45630 | -#: fortran/trans-decl.c:4667 | |
45631 | +#: fortran/trans-decl.c:4666 | |
45632 | #, gcc-internal-format, gfc-internal-format | |
45633 | msgid "Return value '%s' of function '%s' declared at %L not set" | |
45634 | msgstr "No se define el valor de devolución '%s' de la función '%s' declarada en %L" | |
45635 | @@ -43376,12 +43582,12 @@ | |
45636 | msgid "gfc_trans_omp_workshare(): Bad statement code" | |
45637 | msgstr "gfc_trans_omp_workshare(): Código de declaración erróneo" | |
45638 | ||
45639 | -#: fortran/trans-stmt.c:517 | |
45640 | +#: fortran/trans-stmt.c:539 | |
45641 | #, gcc-internal-format, gfc-internal-format | |
45642 | msgid "An alternate return at %L without a * dummy argument" | |
45643 | msgstr "Una devolución alternativa en %L sin un argumento dummy *" | |
45644 | ||
45645 | -#: fortran/trans-stmt.c:840 | |
45646 | +#: fortran/trans-stmt.c:862 | |
45647 | #, gcc-internal-format, gfc-internal-format | |
45648 | msgid "Sorry, only support for integer kind %d implemented for image-set at %L" | |
45649 | msgstr "Lo siento, sólo se admite integer kind %d implementado para el conjunto imagen en %L" | |
45650 | @@ -43799,97 +44005,97 @@ | |
45651 | msgid "%s: section %s is missing" | |
45652 | msgstr "%s: falta la sección %s" | |
45653 | ||
45654 | -#: lto/lto.c:957 | |
45655 | +#: lto/lto.c:950 | |
45656 | #, gcc-internal-format | |
45657 | msgid "bytecode stream: garbage at the end of symbols section" | |
45658 | msgstr "flujo de bytecode: basura al final de la sección de símbolos" | |
45659 | ||
45660 | -#: lto/lto.c:984 | |
45661 | +#: lto/lto.c:977 | |
45662 | #, gcc-internal-format | |
45663 | msgid "could not parse hex number" | |
45664 | msgstr "no se puede decodificar el número hexadecimal" | |
45665 | ||
45666 | -#: lto/lto.c:1017 | |
45667 | +#: lto/lto.c:1010 | |
45668 | #, gcc-internal-format, gfc-internal-format | |
45669 | msgid "unexpected file name %s in linker resolution file. Expected %s" | |
45670 | msgstr "nombre de fichero inesperado %s en el fichero de resolución de enlace. Se esperaba %s" | |
45671 | ||
45672 | -#: lto/lto.c:1026 | |
45673 | +#: lto/lto.c:1019 | |
45674 | #, gcc-internal-format | |
45675 | msgid "could not parse file offset" | |
45676 | msgstr "no se puede abrir el fichero de desplazamiento" | |
45677 | ||
45678 | -#: lto/lto.c:1029 | |
45679 | +#: lto/lto.c:1022 | |
45680 | #, gcc-internal-format | |
45681 | msgid "unexpected offset" | |
45682 | msgstr "desplazamiento inesperado" | |
45683 | ||
45684 | -#: lto/lto.c:1050 | |
45685 | +#: lto/lto.c:1043 | |
45686 | #, gcc-internal-format | |
45687 | msgid "invalid line in the resolution file" | |
45688 | msgstr "línea inválida en el fichero de resolución" | |
45689 | ||
45690 | -#: lto/lto.c:1063 | |
45691 | +#: lto/lto.c:1056 | |
45692 | #, gcc-internal-format | |
45693 | msgid "invalid resolution in the resolution file" | |
45694 | msgstr "resolución inválida en el fichero de resolución" | |
45695 | ||
45696 | -#: lto/lto.c:1069 | |
45697 | +#: lto/lto.c:1062 | |
45698 | #, gcc-internal-format | |
45699 | msgid "resolution sub id " | |
45700 | msgstr "sub id de resolución" | |
45701 | ||
45702 | -#: lto/lto.c:1164 | |
45703 | +#: lto/lto.c:1157 | |
45704 | #, gcc-internal-format, gfc-internal-format | |
45705 | msgid "cannot read LTO decls from %s" | |
45706 | msgstr "no se pueden leer las decls LTO de %s" | |
45707 | ||
45708 | -#: lto/lto.c:1268 | |
45709 | +#: lto/lto.c:1261 | |
45710 | #, gcc-internal-format, gfc-internal-format | |
45711 | msgid "Cannot open %s" | |
45712 | msgstr "No se puede abrir %s" | |
45713 | ||
45714 | -#: lto/lto.c:1289 | |
45715 | +#: lto/lto.c:1282 | |
45716 | #, gcc-internal-format, gfc-internal-format | |
45717 | msgid "Cannot map %s" | |
45718 | msgstr "No se puede mapear %s" | |
45719 | ||
45720 | -#: lto/lto.c:1300 | |
45721 | +#: lto/lto.c:1293 | |
45722 | #, gcc-internal-format, gfc-internal-format | |
45723 | msgid "Cannot read %s" | |
45724 | msgstr "No se puede leer %s" | |
45725 | ||
45726 | -#: lto/lto.c:2279 | |
45727 | +#: lto/lto.c:2272 | |
45728 | #, gcc-internal-format | |
45729 | msgid "no LTRANS output list filename provided" | |
45730 | msgstr "no se proporcionó el nombre de fichero de lista de salida TRANS" | |
45731 | ||
45732 | -#: lto/lto.c:2282 | |
45733 | +#: lto/lto.c:2275 | |
45734 | #, gcc-internal-format | |
45735 | msgid "opening LTRANS output list %s: %m" | |
45736 | msgstr "se abre la lista de salida LTRANS %s: %m" | |
45737 | ||
45738 | -#: lto/lto.c:2328 | |
45739 | +#: lto/lto.c:2321 | |
45740 | #, gcc-internal-format | |
45741 | msgid "lto_obj_file_open() failed" | |
45742 | msgstr "falló lto_obj_file_open()" | |
45743 | ||
45744 | -#: lto/lto.c:2354 | |
45745 | +#: lto/lto.c:2347 | |
45746 | #, gcc-internal-format | |
45747 | msgid "writing to LTRANS output list %s: %m" | |
45748 | msgstr "se escribe a la lista de salida LTRANS %s: %m" | |
45749 | ||
45750 | -#: lto/lto.c:2362 | |
45751 | +#: lto/lto.c:2355 | |
45752 | #, gcc-internal-format | |
45753 | msgid "closing LTRANS output list %s: %m" | |
45754 | msgstr "se cierra la lista de salida LTRANS %s: %m" | |
45755 | ||
45756 | -#: lto/lto.c:2589 | |
45757 | +#: lto/lto.c:2582 | |
45758 | #, gcc-internal-format | |
45759 | msgid "could not open symbol resolution file: %m" | |
45760 | msgstr "no se puede abrir el fichero de resolución de símbolos: %m" | |
45761 | ||
45762 | -#: lto/lto.c:2664 | |
45763 | +#: lto/lto.c:2657 | |
45764 | #, gcc-internal-format | |
45765 | msgid "errors during merging of translation units" | |
45766 | msgstr "errores durante la mezcla de unidades de traducción" | |
45767 | @@ -44829,6 +45035,33 @@ | |
45768 | msgid "creating selector for nonexistent method %qE" | |
45769 | msgstr "se crea un selector para el método %qE que no existe" | |
45770 | ||
45771 | +#~ msgid "Interpret any REAL(4) as a REAl(16)" | |
45772 | +#~ msgstr "Interpreta cualquier REAL(4) como un REAL(16)" | |
45773 | + | |
45774 | +#~ msgid "Interpret any REAL(8) as a REAl(16)" | |
45775 | +#~ msgstr "Interpreta cualquier REAL(8) como un REAL(16)" | |
45776 | + | |
45777 | +#~ msgid "Warn about" | |
45778 | +#~ msgstr "Avisa sobre" | |
45779 | + | |
45780 | +#~ msgid "Pay attention to the \"inline\" keyword" | |
45781 | +#~ msgstr "Pone atención a la palabra clave \"inline\"" | |
45782 | + | |
45783 | +#~ msgid "Integrate simple functions into their callers" | |
45784 | +#~ msgstr "Integra las funciones simples en sus invocadores" | |
45785 | + | |
45786 | +#~ msgid "arguments 1 and 2 have different types" | |
45787 | +#~ msgstr "los argumentos 1 y 2 tienen tipos diferentes" | |
45788 | + | |
45789 | +#~ msgid "%s expects a compile time long long integer constant as first argument" | |
45790 | +#~ msgstr "%s espera una constante entera long long en tiempo de compilación como primer argumento" | |
45791 | + | |
45792 | +#~ msgid "-mno-r11 must not be used if you have trampolines" | |
45793 | +#~ msgstr "no se debe usar -mno-r11 si tiene trampolines" | |
45794 | + | |
45795 | +#~ msgid "Fortran F2003: ROUND= at %C not allowed in Fortran 95" | |
45796 | +#~ msgstr "Fortran F2003: No se permite ROUND= en %C en Fortran 95" | |
45797 | + | |
45798 | #~ msgid "internal gcc abort in %s, at %s:%d" | |
45799 | #~ msgstr "aborto interno de gcc en %s, en %s:%d" | |
45800 | ||
45801 | @@ -44874,12 +45107,6 @@ | |
45802 | #~ msgid "invalid Z register replacement for insn" | |
45803 | #~ msgstr "reemplazo de registro Z inválido para la insn" | |
45804 | ||
45805 | -#~ msgid "invalid %%c operand" | |
45806 | -#~ msgstr "operando %%c inválido" | |
45807 | - | |
45808 | -#~ msgid "invalid %%d operand" | |
45809 | -#~ msgstr "operando %%d inválido" | |
45810 | - | |
45811 | #~ msgid "%s:%d:%d: recursively instantiated from %qs\n" | |
45812 | #~ msgstr "%s:%d:%d: instanciado recursivamente desde %qs\n" | |
45813 | ||
45814 | @@ -44943,9 +45170,6 @@ | |
45815 | #~ msgid "Compile for the Thumb not the ARM" | |
45816 | #~ msgstr "Compila para el Thumb on para el ARM" | |
45817 | ||
45818 | -#~ msgid "Support multiply accumulate instructions" | |
45819 | -#~ msgstr "Da soporte a múltiples instrucciones de acumulador" | |
45820 | - | |
45821 | #~ msgid "Do not use push to store function arguments" | |
45822 | #~ msgstr "No usa push para guardar los argumentos de función" | |
45823 | ||
45824 | @@ -45145,18 +45369,12 @@ | |
45825 | #~ msgid "invalid floating point abi: -mfloat-abi=%s" | |
45826 | #~ msgstr "abi de coma flotante inválida: -mfloat-abi=%s" | |
45827 | ||
45828 | -#~ msgid "invalid thread pointer option: -mtp=%s" | |
45829 | -#~ msgstr "opción de puntero a hilo inválida: -mtp=%s" | |
45830 | - | |
45831 | #~ msgid "unrecognized argument to -mmcu= option: %qs" | |
45832 | #~ msgstr "no se reconoce el argumento para la opción -mmcu=: %qs" | |
45833 | ||
45834 | #~ msgid "See --target-help for supported MCUs" | |
45835 | #~ msgstr "Vea --target-help para MCUs permitidos" | |
45836 | ||
45837 | -#~ msgid "profiler support for CRX" | |
45838 | -#~ msgstr "soporte de análisis de perfil para CRX" | |
45839 | - | |
45840 | #~ msgid "unknown ABI (%s) for %sabi=%s %s" | |
45841 | #~ msgstr "ABI desconocida (%s) para %sabi=%s %s" | |
45842 | ||
45843 | @@ -48102,9 +48320,6 @@ | |
45844 | #~ msgid "Generate code for C30 CPU" | |
45845 | #~ msgstr "Genera código para el CPU C30" | |
45846 | ||
45847 | -#~ msgid "Generate code for C31 CPU" | |
45848 | -#~ msgstr "Genera código para el CPU C31" | |
45849 | - | |
45850 | #~ msgid "Generate code for C32 CPU" | |
45851 | #~ msgstr "Genera código para el CPU C32" | |
45852 | ||
45853 | Index: gcc/po/fr.po | |
45854 | =================================================================== | |
45855 | --- gcc/po/fr.po (.../tags/gcc_4_7_0_release) (wersja 187906) | |
45856 | +++ gcc/po/fr.po (.../branches/gcc-4_7-branch) (wersja 187906) | |
45857 | @@ -121,7 +121,7 @@ | |
45858 | msgstr "" | |
45859 | "Project-Id-Version: GNU gcc 3.4.3\n" | |
45860 | "Report-Msgid-Bugs-To: http://gcc.gnu.org/bugs.html\n" | |
45861 | -"POT-Creation-Date: 2012-01-27 16:13+0000\n" | |
45862 | +"POT-Creation-Date: 2012-03-18 14:00+0000\n" | |
45863 | "PO-Revision-Date: 2008-04-23 19:30+0000\n" | |
45864 |