Eric Botcazou [Tue, 8 Apr 2008 06:43:15 +0000 (08:43 +0200)]
s-osinte-linux-alpha.ads, [...]: Removed.
2008-04-08 Eric Botcazou <ebotcazou@adacore.com>
Arnaud Charlet <charlet@adacore.com>
* s-osinte-linux-alpha.ads, s-osinte-linux-hppa.ads: Removed.
s-taspri-posix-noaltstack.ads, s-linux.ads, s-linux-alpha.ads,
s-linux-hppa.ads: New files. Disable alternate stack on ia64-hpux.
* s-osinte-lynxos-3.ads,
(Alternate_Stack): Remove when not needed. Simplify declaration
otherwise.
(Alternate_Stack_Size): New constant.
s-osinte-mingw.ads, s-taprop-mingw.adb: Code clean up: avoid use of
'Unrestricted_Access.
* s-osinte-hpux.ads, s-osinte-solaris-posix.ads, s-osinte-aix.ads,
s-osinte-lynxos.ads, s-osinte-freebsd.ads s-osinte-darwin.ads,
s-osinte-tru64.ads, s-osinte-irix.ads, s-osinte-linux.ads,
s-osinte-solaris.ads, s-osinte-vms.ads
(SA_ONSTACK): New constant.
(stack_t): New record type.
(sigaltstack): New imported function.
(Alternate_Stack): New imported variable.
(Alternate_Stack_Size): New constant.
* system-linux-x86_64.ads: (Stack_Check_Probes): Set to True.
* s-taspri-lynxos.ads, s-taspri-solaris.ads, s-taspri-tru64.ads,
s-taspri-hpux-dce.ads (Task_Address): New subtype of System.Address
(Task_Address_Size): New constant size of System.Address
(Alternate_Stack_Size): New constant.
* s-taprop-posix.adb, s-taprop-linux.adb (Get_Stack_Attributes): Delete.
(Enter_Task): Do not notify stack to System.Stack_Checking.Operations.
Establish the alternate stack if the platform makes use of n alternate
signal stack for stack overflows.
(Create_Task): Take into account the alternate stack in the stack size.
(Initialize): Save the address of the alternate stack into the ATCB for
the environment task.
(Create_Task): Fix assertions for NPTL library (vs old LinuxThreads).
* s-parame.adb (Minimum_Stack_Size): Increase value to 16K to
* system-linux-x86.ads: (Stack_Check_Probes): Set to True.
* s-intman-posix.adb:
(Initialize): Set SA_ONSTACK for SIGSEGV if the platform makes use of an
alternate signal stack for stack overflows.
* init.c (__gnat_adjust_context_for_raise, Linux version): On i386 and
x86-64, adjust the saved value of the stack pointer if the signal was
raised by a stack checking probe.
(HP-UX section): Use global __gnat_alternate_stack as signal handler
stack and only for SIGSEGV.
(Linux section): Likewise on x86 and x86-64.
[VxWorks section]
(__gnat_map_signal): Now static.
(__gnat_error_handler): Not static any more.
(__gnat_adjust_context_for_raise): New function. Signal context
adjustment for PPC && !VTHREADS && !RTP, as required by the zcx
propagation circuitry.
(__gnat_error_handler): Second argument of a sigaction handler is a
pointer, not an int, and is unused.
Adjust signal context before mapping to exception.
Install signal handlers for LynxOS case.
* s-taskin.ads (Common_ATCB): New field Task_Alternate_Stack.
(Task_Id): Set size to Task_Address_Size
(To_Task_id): Unchecked convert from Task_Address vice System.Address
(To_Address): Unchecked convert to Task_Address vice System.Address
* s-tassta.adb (Task_Wrapper): Define the alternate stack and save its
address into the ATCB if the platform makes use of an alternate signal
stack for stack overflows.
(Free_Task): Add call to Finalize_Attributes_Link.
Add argument Relative_Deadline to pass the value specified for
the task. This is not yet used for any target.
* s-tassta.ads (Create_Task): Add argument Relative_Deadline to pass
the value specified for the task.
From-SVN: r134004
Pascal Obry [Tue, 8 Apr 2008 06:42:41 +0000 (08:42 +0200)]
g-sercom.ads, [...] (Data_Rate): Add
B115200.
2008-04-08 Pascal Obry <obry@adacore.com>
* g-sercom.ads, g-sercom.adb (Data_Rate): Add
B115200.
(Stop_Bits_Number): New type.
(Parity_Check): Likewise.
(Set): Add parameter to set the number of stop bits and
the parity. Parameter timeout is now a duration instead
of a plain integer.
* g-sercom-linux.adb:
Implement the stop bits and parity support for GNU/Linux.
Fix handling of timeout, it must be given in tenth of seconds.
* g-sercom-mingw.adb:
Implement the stop bits and parity support for Windows.
Use new s-win32.ads unit instead of declaring Win32 services
directly into this body.
Update handling of timeout as now a duration.
* s-win32.ads, s-winext.ads: New files.
From-SVN: r134003
James E Wilson [Tue, 8 Apr 2008 01:57:48 +0000 (18:57 -0700)]
Fix uninit warning reported by Andrew Pinski.
pt.c (tsubst_copy, case SIZEOF_EXPR): Initialize len.
From-SVN: r134001
GCC Administrator [Tue, 8 Apr 2008 00:17:30 +0000 (00:17 +0000)]
Daily bump.
From-SVN: r133998
Jan Hubicka [Mon, 7 Apr 2008 23:52:32 +0000 (01:52 +0200)]
function.h (rtl): Rename to x_rtl.
* function.h (rtl): Rename to x_rtl.
(crtl): New define.
(return_label, naked_return_label, stack_slot_list, parm_birth_insn,
frame_offset, stack_check_probe_note, arg_pointer_save_area,
used_temp_slots avail_temp_slots, temp_slot_level,
nonlocal_goto_handler_labels): Update accesstors.
(rtl): New global variable.
(struct function): Move some fileds to rtl_data.
(get_arg_pointer_save_area): Update prototype.
* builtins.c (expand_builtin_setjmp_receiver): Update call of
get_arg_pointer_save_area.
* expr.c (init_expr): Update
* function.c (get_frame_size): Update
(assign_stack_local): Update
(expand_function_end): Update.
(get_art_pointer_save_area): Update
* function.h
* emit-rtl.c (rtl): Declare.
(regno_reg_rtx): Declare.
(first_insn, last_insn, cur_insn_uid, last_location, first_label_num):
Update.
(gen_reg_rtx): Update.
* varasm.c (n_deferred_constatns): Update accestor.
(init_varasm_status): Do not allocate varasm_status.
(force_const_mem, get_pool_size, output_constant_pool): Update.
* stmt.c (force_label_rtx): Do not use x_ prefixes.
(expand_nl_goto_receiver): Update get_arg_pointer_save_area.
* m32c/m32.c (m32c_leaf_function_p, m32c_function_needs_enter): Update.
* sparc/sparc.h (INIT_EXPANDERS): Update.
* ia64/ia64.h (INIT_EXPANDERS): Update.
From-SVN: r133994
Andy Hutchinson [Mon, 7 Apr 2008 23:15:35 +0000 (23:15 +0000)]
PR target/34210 PR target/35508 * config.host (avr-*-*): Add avr cpu_type and avr tmake_file. * config/t-avr: New file. Build 16bit libgcc functions.
From-SVN: r133993
Ian Lance Taylor [Mon, 7 Apr 2008 22:36:37 +0000 (22:36 +0000)]
Makefile.def: check-gold depends upon all-binutils.
* Makefile.def: check-gold depends upon all-binutils.
* Makefile.in: Regenerate.
From-SVN: r133992
Jerry DeLisle [Mon, 7 Apr 2008 22:10:41 +0000 (22:10 +0000)]
PR fortran/25829 28655
2008-04-07 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR fortran/25829 28655
* gfortran.dg/write_check2.f90: Update dg-error.
* gfortran.dg/io_constraints_1.f90: Udate dg-error.
From-SVN: r133991
James E Wilson [Mon, 7 Apr 2008 22:09:07 +0000 (15:09 -0700)]
Fix bug Joern Rennecke reported.
* reload.c (push_secondary_reload): Add missing break to for loop.
From-SVN: r133990
Jerry DeLisle [Mon, 7 Apr 2008 22:07:44 +0000 (22:07 +0000)]
PR fortran/25829 28655
2008-04-07 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR fortran/25829 28655
* io.c (io_tag): Add new tags for decimal, encoding, asynchronous,
round, sign, and id. (match_open_element): Match new tags.
(gfc_resolve_open): Resolve new tags. (gfc_match_open): Enable encoding
for DEFAULT only. Update error messages. (match_dt_element): Fix match
tag for asynchronous. Update error messages. (gfc_free_inquire): Free
new expressions. (match_inquire_element): Match new tags.
(gfc_match_inquire): Add constraint for ID and PENDING.
(gfc_resolve_inquire): Resolve new tags.
* trans-io.c (gfc_trans_inquire): Clean up whitespace and fix setting of
mask for ID parameter.
* ioparm.def: Fix order of parameters for pending, round, and sign.
NOTE: These must line up with the definitions in libgfortran/io/io.h. or
things don't work.
From-SVN: r133989
Jerry DeLisle [Mon, 7 Apr 2008 22:05:52 +0000 (22:05 +0000)]
PR fortran/25829 28655
2008-04-07 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR fortran/25829 28655
* io/open.c (edit_modes): Set flags.async. (new_unit) Set flags.async
and flags.status. (st_open): Initialize flags.async.
* io/list_read.c (read_charactor): Use delim_status instead of
flags.delim.
* io/read.c (read_x): Use pad_status instead of flags.pad.
* io/inquire.c (inquire_via_unit): Add new checks.
(inquire_via_filename): Likewise.
* io/io.h (st_parameter_inquire): Add new flags.
(st_parameter_dt): Likewise.
* io/unit.c (get_internal_unit): Set flags.async. (init_units): Set
flags.async.
* io/transfer.c: Add delim and pad option arrays. (read_sf): Use
pad_status instead of flags.pad. (read_block): Likewise.
(data_transfer_init): Set flags.async and add checks.
* io/write.c (write_character): Use delim_status.
(list_formatted_write_scalar): Likewise. (nml_write_obj): Likewise.
(namelist_write): Likewise.
From-SVN: r133988
Jason Merrill [Mon, 7 Apr 2008 20:50:21 +0000 (16:50 -0400)]
re PR c++/35734 (ICE with copy constructor in derived class)
PR c++/35734
* class.c (type_has_user_nondefault_constructor): A template
counts as a nondefault constructor.
From-SVN: r133987
Aurelien Jarno [Mon, 7 Apr 2008 20:08:33 +0000 (20:08 +0000)]
Makefile.in: Add make ifeq define for mips/mipsel support.
2008-04-07 Aurelien Jarno <aurelien@aurel32.net>
Xavier Grave <grave@ipno.in2p3.fr>
* Makefile.in: Add make ifeq define for mips/mipsel support.
* g-soccon-linux-mips.ads, system-linux-mipsel.ads,
system-linux-mips.ads: New files.
Co-Authored-By: Xavier Grave <grave@ipno.in2p3.fr>
From-SVN: r133986
Peter Bergner [Mon, 7 Apr 2008 17:36:59 +0000 (12:36 -0500)]
PR middle-end/PR28690
PR middle-end/PR28690
* rtlanal.c: Update copyright years.
(commutative_operand_precedence): Give SYMBOL_REF's the same precedence
as REG_POINTER and MEM_POINTER operands.
* emit-rtl.c (gen_reg_rtx_and_attrs): New function.
(set_reg_attrs_from_value): Call mark_reg_pointer as appropriate.
* rtl.h (gen_reg_rtx_and_attrs): Add prototype for new function.
* gcse.c: Update copyright years.
(pre_delete): Call gen_reg_rtx_and_attrs.
(hoist_code): Likewise.
(build_store_vectors): Likewise.
(delete_store): Likewise.
* loop-invariant.c (move_invariant_reg): Likewise.
Update copyright years.
From-SVN: r133985
Uros Bizjak [Mon, 7 Apr 2008 16:54:00 +0000 (18:54 +0200)]
i386.md ("*sse_prologue_save_insn"): Use braced output control string instead of quoted.
* config/i386/i386.md ("*sse_prologue_save_insn"): Use braced output
control string instead of quoted.
From-SVN: r133984
Kenneth Zadeck [Mon, 7 Apr 2008 15:40:43 +0000 (15:40 +0000)]
2008-04-07 Kenneth Zadeck <zadeck@naturalbridge.com>
doc/rtl.texi: Rewrite of subreg section.
From-SVN: r133982
Kai Tietz [Mon, 7 Apr 2008 12:44:14 +0000 (12:44 +0000)]
i386.c (legitimize_pic_address): Add treating of dllimport SYM_REF's.
2008-04-07 Kai Tietz <kai.tietz@onevision.com>
PR/35842
* config/i386/i386.c (legitimize_pic_address): Add treating
of dllimport SYM_REF's.
(legitimize_dllimport_symbol): Add prototype.
From-SVN: r133981
Kai Tietz [Mon, 7 Apr 2008 12:40:43 +0000 (12:40 +0000)]
pr35842.c: New.
PR/35842
* gcc.dg/torture/pr35842.c: New.
From-SVN: r133980
Aurelien Jarno [Mon, 7 Apr 2008 12:31:41 +0000 (12:31 +0000)]
sysdep.c: add __GLIBC__ to the #ifdef preprocessor macros to detect systems using GNU libc.
2008-04-07 Aurelien Jarno <aurelien@aurel32.net>
* sysdep.c: add __GLIBC__ to the #ifdef preprocessor macros to
detect systems using GNU libc.
* gsocket.h: ditto.
* socket.c: ditto.
* adaint.c: ditto.
* link.c: ditto.
From-SVN: r133979
Aurelien Jarno [Mon, 7 Apr 2008 12:30:03 +0000 (12:30 +0000)]
s-osinte-linux-kfreebsd.ads (SC_NPROCESSORS_ONLN): New constant constant for sysconf call.
2008-04-07 Aurelien Jarno <aurelien@aurel32.net>
* s-osinte-linux-kfreebsd.ads (SC_NPROCESSORS_ONLN): New
constant constant for sysconf call.
(bit_field): New packed boolean type used by cpu_set_t.
(cpu_set_t): New type corresponding to the C type with
the same name. Note that on the Ada side we use a bit
field array for the affinity mask. There is not need
for the C macro for setting individual bit.
(pthread_setaffinity_np): New imported routine.
* Makefile.in: Use s-tasinf-linux.ads and s-tasinf-linux.adb
on GNU/kFreeBSD.
From-SVN: r133978
Eric Botcazou [Mon, 7 Apr 2008 09:47:43 +0000 (09:47 +0000)]
fold-const.c (fold): New case.
* fold-const.c (fold) <ARRAY_REF>: New case. Try to fold constant
reference in constructor with non self-referential type.
ada/
* utils2.c (build_binary_op): Fold ARRAY_REF and ARRAY_RANGE_REF too.
From-SVN: r133977
Eric Botcazou [Mon, 7 Apr 2008 09:37:51 +0000 (09:37 +0000)]
Removal of Return with Depressed Stack Pointer support
Removal of Return with Depressed Stack Pointer support
* tree.h (TYPE_RETURNS_STACK_DEPRESSED): Delete.
(ECF_SP_DEPRESSED): Likewise.
(ECF_LIBCALL_BLOCK, ECF_NOVOPS): Adjust.
* calls.c (emit_call_1): Do not test ECF_SP_DEPRESSED.
(flags_from_decl_or_type): Do not test TYPE_RETURNS_STACK_DEPRESSED.
(expand_call): Do not test ECF_SP_DEPRESSED.
* dse.c (dse_step0): Do not test TYPE_RETURNS_STACK_DEPRESSED.
* function.c (keep_stack_depressed): Delete.
(handle_epilogue_set): Likewise.
(update_epilogue_consts): Likewise.
(emit_equiv_load): Likewise.
(thread_prologue_and_epilogue_insns): Remove support for Return with
Depressed Stack Pointer.
* print-tree.c (print_node): Do not test TYPE_RETURNS_STACK_DEPRESSED.
ada/
* gigi.h (create_subprog_type): Remove returns_with_dsp parameter.
* decl.c (gnat_to_gnu_entity): Adjust for above new prototype.
* utils.c (create_subprog_type): Remove returns_with_dsp parameter.
* trans.c (gnat_to_gnu) <N_Return_Statement>: Remove code dealing with
Return by Depressed Stack Pointer.
From-SVN: r133976
Johannes Singler [Mon, 7 Apr 2008 08:27:34 +0000 (08:27 +0000)]
re PR libstdc++/35588 ([parallel mode] parallel std::sort and bind())
2008-04-07 Johannes Singler <singler@ira.uka.de>
* include/parallel/multiway_merge.h:
Moved decisions to compiletime instead of runtime.
* include/parallel/losertree.h:
Removed obsolete variants, added variant that uses pointers
in the loser tree.
* include/parallel/types.h:
Remove obsolete settings options from enum.
* include/parallel/features.h:
Remove obsolete compile-time switches.
* include/parallel/compiletime_settings.h:
Remove obsolete variant that copies back *after* sorting.
* include/parallel/tags.h:
Add one new tag for compile-time switch.
* include/parallel/merge.h:
Adapt to changes in multiway_merge.h.
* include/parallel/multiway_mergesort.h:
Adapt to changes in multiway_merge.h.
Factor out splitting variants.
Remove obsolete variant that copies back *after* sorting.
* include/parallel/sort.h:
Adapt to changes in multiway_mergesort.h.
* testsuite/25_algorithms/sort/35588.cc:
Added test case from / for PR 35588.
From-SVN: r133975
GCC Administrator [Mon, 7 Apr 2008 00:17:32 +0000 (00:17 +0000)]
Daily bump.
From-SVN: r133972
Richard Guenther [Sun, 6 Apr 2008 21:20:49 +0000 (21:20 +0000)]
re PR middle-end/35400 (-Wtype-limits -O2 causes ICE tree check: expected ssa_name, have addr_expr in get_value_range, at tree-vrp.c:469)
2008-04-06 Richard Guenther <rguenther@suse.de>
PR tree-optimization/35400
* tree-vrp.c (vrp_evaluate_conditional): Only query value-range
information from SSA_NAMEs.
* gcc.dg/torture/pr35400.c: New testcase.
* g++.dg/torture/pr35400.C: Likewise.
From-SVN: r133967
Anatoly Sokolov [Sun, 6 Apr 2008 20:54:32 +0000 (00:54 +0400)]
avr.h (avr_mega_p): Remove declaration.
* config/avr/avr.h (avr_mega_p): Remove declaration.
(AVR_MEGA): Remove macro.
* config/avr/avr.c (avr_mega_p): Remove variable.
(avr_override_options): Remove inicializion of avr_mega_p.
Use AVR_HAVE_JMP_CALL instead of AVR_MEGA.
(print_operand): Use AVR_HAVE_JMP_CALL instead of AVR_MEGA.
(avr_jump_mode): (Ditto.).
(avr_output_progmem_section_asm_op): (Ditto.).
(avr_asm_init_sections): (Ditto.).
(avr_asm_init_sections): (Ditto.).
(avr_rtx_costs): (Ditto.).
* config/avr/avr.md: (Ditto.).
* config/avr/avr.h: Use '__AVR_HAVE_JMP_CALL__' instead of
'__AVR_MEGA__'.
From-SVN: r133966
Paul Thomas [Sun, 6 Apr 2008 19:37:45 +0000 (19:37 +0000)]
Index...
Index: gcc/fortran/trans-stmt.c
===================================================================
*** gcc/fortran/trans-stmt.c (revision 133728)
--- gcc/fortran/trans-stmt.c (working copy)
*************** gfc_trans_where_2 (gfc_code * code, tree
*** 3540,3547 ****
/* Translate a simple WHERE construct or statement without dependencies.
CBLOCK is the "then" clause of the WHERE statement, where CBLOCK->EXPR
! is the mask condition, and EBLOCK if non-NULL is the "else" clause.
! Currently both CBLOCK and EBLOCK are restricted to single assignments. */
static tree
gfc_trans_where_3 (gfc_code * cblock, gfc_code * eblock)
--- 3540,3550 ----
/* Translate a simple WHERE construct or statement without dependencies.
CBLOCK is the "then" clause of the WHERE statement, where CBLOCK->EXPR
! is the mask condition, and EBLOCK if non-NULL is the "then" clause of
! the ELSWHERE. As required by 7.5.3.2, the WHERE and ELSEWHERE are
! executed with separate loops. It should be noted that the mask expression
! is evaluated for both loops. Currently both CBLOCK and EBLOCK are
! restricted to single assignments. */
static tree
gfc_trans_where_3 (gfc_code * cblock, gfc_code * eblock)
*************** gfc_trans_where_3 (gfc_code * cblock, gf
*** 3561,3566 ****
--- 3564,3570 ----
edst = eblock ? eblock->next->expr : NULL;
esrc = eblock ? eblock->next->expr2 : NULL;
+ /*---------------First do the WHERE part.----------------*/
gfc_start_block (&block);
gfc_init_loopinfo (&loop);
*************** gfc_trans_where_3 (gfc_code * cblock, gf
*** 3584,3619 ****
gfc_add_ss_to_loop (&loop, tdss);
gfc_add_ss_to_loop (&loop, tsss);
- if (eblock)
- {
- /* Handle the else clause. */
- gfc_init_se (&edse, NULL);
- gfc_init_se (&esse, NULL);
- edss = gfc_walk_expr (edst);
- esss = gfc_walk_expr (esrc);
- if (esss == gfc_ss_terminator)
- {
- esss = gfc_get_ss ();
- esss->next = gfc_ss_terminator;
- esss->type = GFC_SS_SCALAR;
- esss->expr = esrc;
- }
- gfc_add_ss_to_loop (&loop, edss);
- gfc_add_ss_to_loop (&loop, esss);
- }
-
gfc_conv_ss_startstride (&loop);
gfc_conv_loop_setup (&loop);
gfc_mark_ss_chain_used (css, 1);
gfc_mark_ss_chain_used (tdss, 1);
gfc_mark_ss_chain_used (tsss, 1);
! if (eblock)
! {
! gfc_mark_ss_chain_used (edss, 1);
! gfc_mark_ss_chain_used (esss, 1);
! }
!
gfc_start_scalarized_body (&loop, &body);
gfc_copy_loopinfo_to_se (&cse, &loop);
--- 3588,3600 ----
gfc_add_ss_to_loop (&loop, tdss);
gfc_add_ss_to_loop (&loop, tsss);
gfc_conv_ss_startstride (&loop);
gfc_conv_loop_setup (&loop);
gfc_mark_ss_chain_used (css, 1);
gfc_mark_ss_chain_used (tdss, 1);
gfc_mark_ss_chain_used (tsss, 1);
!
gfc_start_scalarized_body (&loop, &body);
gfc_copy_loopinfo_to_se (&cse, &loop);
*************** gfc_trans_where_3 (gfc_code * cblock, gf
*** 3622,3637 ****
cse.ss = css;
tdse.ss = tdss;
tsse.ss = tsss;
- if (eblock)
- {
- gfc_copy_loopinfo_to_se (&edse, &loop);
- gfc_copy_loopinfo_to_se (&esse, &loop);
- edse.ss = edss;
- esse.ss = esss;
- }
gfc_conv_expr (&cse, cond);
! gfc_add_block_to_block (&body, &cse.pre);
cexpr = cse.expr;
gfc_conv_expr (&tsse, tsrc);
--- 3603,3611 ----
cse.ss = css;
tdse.ss = tdss;
tsse.ss = tsss;
gfc_conv_expr (&cse, cond);
! gfc_add_block_to_block (&block, &cse.pre);
cexpr = cse.expr;
gfc_conv_expr (&tsse, tsrc);
*************** gfc_trans_where_3 (gfc_code * cblock, gf
*** 3643,3650 ****
--- 3617,3678 ----
else
gfc_conv_expr (&tdse, tdst);
+ /* Make the assignment on condition 'cond'. */
+ tstmt = gfc_trans_scalar_assign (&tdse, &tsse, tdst->ts, false, false);
+ tmp = build3_v (COND_EXPR, cexpr, tstmt, build_empty_stmt ());
+ gfc_add_expr_to_block (&body, tmp);
+ gfc_add_block_to_block (&body, &cse.post);
+
+ gfc_trans_scalarizing_loops (&loop, &body);
+ gfc_add_block_to_block (&block, &loop.pre);
+ gfc_add_block_to_block (&block, &loop.post);
+ gfc_cleanup_loop (&loop);
+
+ /*---------------Now do the ELSEWHERE.--------------*/
if (eblock)
{
+ gfc_init_loopinfo (&loop);
+
+ /* Handle the condition. */
+ gfc_init_se (&cse, NULL);
+ css = gfc_walk_expr (cond);
+ gfc_add_ss_to_loop (&loop, css);
+
+ /* Handle the then-clause. */
+ gfc_init_se (&edse, NULL);
+ gfc_init_se (&esse, NULL);
+ edss = gfc_walk_expr (edst);
+ esss = gfc_walk_expr (esrc);
+ if (esss == gfc_ss_terminator)
+ {
+ esss = gfc_get_ss ();
+ esss->next = gfc_ss_terminator;
+ esss->type = GFC_SS_SCALAR;
+ esss->expr = esrc;
+ }
+ gfc_add_ss_to_loop (&loop, edss);
+ gfc_add_ss_to_loop (&loop, esss);
+
+ gfc_conv_ss_startstride (&loop);
+ gfc_conv_loop_setup (&loop);
+
+ gfc_mark_ss_chain_used (css, 1);
+ gfc_mark_ss_chain_used (edss, 1);
+ gfc_mark_ss_chain_used (esss, 1);
+
+ gfc_start_scalarized_body (&loop, &body);
+
+ gfc_copy_loopinfo_to_se (&cse, &loop);
+ gfc_copy_loopinfo_to_se (&edse, &loop);
+ gfc_copy_loopinfo_to_se (&esse, &loop);
+ cse.ss = css;
+ edse.ss = edss;
+ esse.ss = esss;
+
+ gfc_conv_expr (&cse, cond);
+ gfc_add_block_to_block (&body, &cse.pre);
+ cexpr = cse.expr;
+
gfc_conv_expr (&esse, esrc);
if (edss != gfc_ss_terminator && loop.temp_ss != NULL)
{
*************** gfc_trans_where_3 (gfc_code * cblock, gf
*** 3653,3672 ****
}
else
gfc_conv_expr (&edse, edst);
}
- tstmt = gfc_trans_scalar_assign (&tdse, &tsse, tdst->ts, false, false);
- estmt = eblock ? gfc_trans_scalar_assign (&edse, &esse, edst->ts, false, false)
- : build_empty_stmt ();
- tmp = build3_v (COND_EXPR, cexpr, tstmt, estmt);
- gfc_add_expr_to_block (&body, tmp);
- gfc_add_block_to_block (&body, &cse.post);
-
- gfc_trans_scalarizing_loops (&loop, &body);
- gfc_add_block_to_block (&block, &loop.pre);
- gfc_add_block_to_block (&block, &loop.post);
- gfc_cleanup_loop (&loop);
-
return gfc_finish_block (&block);
}
--- 3681,3700 ----
}
else
gfc_conv_expr (&edse, edst);
+
+ /* Make the assignment on condition 'NOT.cond'. */
+ estmt = gfc_trans_scalar_assign (&edse, &esse, edst->ts, false, false);
+ cexpr = fold_build1 (TRUTH_NOT_EXPR, boolean_type_node, cexpr);
+ tmp = build3_v (COND_EXPR, cexpr, estmt, build_empty_stmt ());
+ gfc_add_expr_to_block (&body, tmp);
+ gfc_add_block_to_block (&body, &cse.post);
+
+ gfc_trans_scalarizing_loops (&loop, &body);
+ gfc_add_block_to_block (&block, &loop.pre);
+ gfc_add_block_to_block (&block, &loop.post);
+ gfc_cleanup_loop (&loop);
}
return gfc_finish_block (&block);
}
*************** gfc_trans_where (gfc_code * code)
*** 3698,3708 ****
cblock->next->expr2, 0))
return gfc_trans_where_3 (cblock, NULL);
}
else if (!eblock->expr
&& !eblock->block
&& eblock->next
&& eblock->next->op == EXEC_ASSIGN
! && !eblock->next->next)
{
/* A simple "WHERE (cond) x1 = y1 ELSEWHERE x2 = y2 ENDWHERE"
block is dependence free if cond is not dependent on writes
--- 3726,3739 ----
cblock->next->expr2, 0))
return gfc_trans_where_3 (cblock, NULL);
}
+ /* Since gfc_trans_where_3 evaluates the condition expression
+ twice, do not use it if the condition is not a variable. */
else if (!eblock->expr
&& !eblock->block
&& eblock->next
&& eblock->next->op == EXEC_ASSIGN
! && !eblock->next->next
! && cblock->expr->expr_type == EXPR_VARIABLE)
{
/* A simple "WHERE (cond) x1 = y1 ELSEWHERE x2 = y2 ENDWHERE"
block is dependence free if cond is not dependent on writes
Index: gcc/testsuite/gfortran.dg/where_1.f90
===================================================================
*** gcc/testsuite/gfortran.dg/where_1.f90 (revision 0)
--- gcc/testsuite/gfortran.dg/where_1.f90 (revision 0)
***************
*** 0 ****
--- 1,61 ----
+ ! { dg-do run }
+ ! { dg-options "-fdump-tree-original" }
+ ! Tests the fix for PR35759, in which the simple WHERE was logically
+ ! wrong. 7.5.3.2 requires that the WHERE and ELSEWHERE are execute in
+ ! separate loops, whereas gfortran was implementing them as a single
+ ! loop with an 'if' and 'else'. Since the condition expression is
+ ! evaluated twice with the fix, the use of anything other than a
+ ! variable or parameter array for the condition will trigger the more
+ ! comprehensive implementation of WHERE. This is checked by the
+ ! check of the declaration of temp.15 in the 'original' code.
+ !
+ ! Contributed by Dick Hendrickson <dick.hendrickson@gmail.com>
+ !
+ program RG0023
+
+ integer UDA1L(6)
+ integer :: UDA1R(6), expected(6) = (/2,0,5,0,3,0/)
+ LOGICAL LDA(5)
+ LOGICAL, parameter :: PDA(5) = (/ (i/2*2 .ne. I, i=1,5) /)
+
+ UDA1L(1:6) = 0
+ uda1r = (/1,2,3,4,5,6/)
+ lda = pda
+
+ WHERE (lda) ! expected
+ UDA1L(1:5) = UDA1R(2:6) ! uda1l = 2,0,4,0,6,0
+ ELSEWHERE
+ UDA1L(2:6) = UDA1R(6:2:-1) !uda1l = 2,0,5,0,3,0
+ ENDWHERE
+
+ if (any (uda1l /= expected)) call abort ()
+
+ uda1l = 0
+
+ WHERE (pda) ! expected
+ UDA1L(1:5) = UDA1R(2:6) ! uda1l = 2,0,4,0,6,0
+ ELSEWHERE
+ UDA1L(2:6) = UDA1R(6:2:-1) !uda1l = 2,0,5,0,3,0
+ ENDWHERE
+
+ if (any (uda1l /= expected)) call abort ()
+
+ uda1l = 0
+
+ WHERE (lfoo ()) ! expected
+ UDA1L(1:5) = UDA1R(2:6) ! uda1l = 2,0,4,0,6,0
+ ELSEWHERE
+ UDA1L(2:6) = UDA1R(6:2:-1) !uda1l = 2,0,5,0,3,0
+ ENDWHERE
+
+ if (any (uda1l /= expected)) call abort ()
+
+ contains
+
+ function lfoo () result (ltmp)
+ logical ltmp(5)
+ ltmp = lda
+ end function lfoo
+ END
+ ! { dg-final { scan-tree-dump-times "temp.18\\\[5\\\]" 1 "original" } }
+ ! { dg-final { cleanup-tree-dump "original" } }
From-SVN: r133965
Tobias Schlüter [Sun, 6 Apr 2008 18:58:34 +0000 (20:58 +0200)]
re PR fortran/35832 (Better error message for wrong arguments to I/O statements)
2008-04-06 Tobias Schlter <tobi@gcc.gnu.org>
PR fortran/35832
fortran/
* io.c (io_tag): Add field 'value'. Split 'spec' field in
existing io_tags.
(match_etag, match_vtag, match_ltag): Split parsing in two steps
to give better error messages.
testsuite/
* gfortran.dg/io_constraints_2.f90: Adapt to new error message.
From-SVN: r133964
Richard Guenther [Sun, 6 Apr 2008 18:04:47 +0000 (18:04 +0000)]
re PR target/35842 (ICE in legitimize_pic_address, at config/i386/i386.c:7666)
2008-04-06 Richard Guenther <rguenther@suse.de>
PR tree-optimization/35842
* tree-ssa-address.c (fixed_address_object_p): Adjust to match
is_gimple_invariant_address.
From-SVN: r133963
Tobias Burnus [Sun, 6 Apr 2008 15:38:33 +0000 (17:38 +0200)]
io.c (check_io_constraints): Add constrains.
2008-04-06 Tobias Burnus <burnus@net-b.de>
* io.c (check_io_constraints): Add constrains. ID= requires
asynchronous= and asynchronous= must be init expression.
2008-04-06 Tobias Burnus <burnus@net-b.de>
* gfortran.dg/f2003_io_1.f03: Make standard conform.
* gfortran.dg/f2003_io_8.f03: New.
From-SVN: r133962
Eric Botcazou [Sun, 6 Apr 2008 13:38:41 +0000 (13:38 +0000)]
decl.c (is_variable_size): Do not unconditionally return false on non-strict alignment platforms.
* decl.c (is_variable_size): Do not unconditionally return false
on non-strict alignment platforms.
From-SVN: r133961
Francois-Xavier Coudert [Sun, 6 Apr 2008 12:36:58 +0000 (12:36 +0000)]
gcc.c (default_compilers): Sync Fortran extensions list with that in fortran/lang-specs.h.
gcc/
* gcc.c (default_compilers): Sync Fortran extensions list with
that in fortran/lang-specs.h.
* doc/invoke.texi: Likewise.
* dbxout.c (get_lang_number): Use "GNU Fortran" in "GNU F95".
* dwarf2out.c (gen_compile_unit_die): Likewise.
gcc/fortran/
* f95-lang.c: Set LANG_HOOKS_NAME to "GNU Fortran".
From-SVN: r133960
Francois-Xavier Coudert [Sun, 6 Apr 2008 12:18:56 +0000 (12:18 +0000)]
* parse.c (gfc_parse_file): Use gfc_dump_parse_tree.
From-SVN: r133959
François-Xavier Coudert [Sun, 6 Apr 2008 12:17:33 +0000 (12:17 +0000)]
dump-parse-tree.c: Use fprintf, fputs and fputc instead of gfc_status and gfc_status_char.
* dump-parse-tree.c: Use fprintf, fputs and fputc instead of
gfc_status and gfc_status_char. Remove gfc_ prefix of the gfc_show_*
functions and make them static. Add new gfc_dump_parse_tree
function.
* gfortran.h (gfc_option_t): Rename verbose into dump_parse_tree.
(gfc_status, gfc_status_char): Delete prototypes.
* error.c (gfc_status, gfc_status_char): Remove functions.
* scanner.c (gfc_new_file): Use printf instead of gfc_status.
* options.c (gfc_init_options): Rename verbose into dump_parse_tree.
(gfc_handle_module_path_options): Use gfc_fatal_error instead of
gfc_status and exit.
(gfc_handle_option): Rename verbose into dump_parse_tree.
From-SVN: r133958
Eric Botcazou [Sun, 6 Apr 2008 10:22:23 +0000 (10:22 +0000)]
decl.c (rest_of_type_decl_compilation_no_defer): New local function used to process all the variants of the specified type.
* decl.c (rest_of_type_decl_compilation_no_defer): New local function
used to process all the variants of the specified type.
(gnat_to_gnu_entity): Invoke rest_of_type_decl_compilation for enumeral
types too. Call rest_of_type_decl_compilation_no_defer if undeferring.
(rest_of_type_decl_compilation): Likewise.
* utils.c (gnat_pushdecl): Propagate the name to all variants of type.
From-SVN: r133957
Tom G. Christensen [Sun, 6 Apr 2008 09:57:49 +0000 (09:57 +0000)]
gthr-posix95.h (__gthread_cond_wait_recursive): Add missing &.
* gthr-posix95.h (__gthread_cond_wait_recursive): Add missing &.
From-SVN: r133955
Uros Bizjak [Sun, 6 Apr 2008 06:40:47 +0000 (08:40 +0200)]
re PR target/12329 (x86: local function declared with attribute((regparm(3))) gets corrupted parent frame pointer)
PR target/12329
* config/i386/i386.c (ix86_function_regparm): Error if regparm(3)
attribute is used for nested functions.
testsuite/ChangeLog:
PR target/12329
* gcc.target/i386/pr12329.c: New test.
From-SVN: r133954
GCC Administrator [Sun, 6 Apr 2008 00:17:36 +0000 (00:17 +0000)]
Daily bump.
From-SVN: r133951
Eric Botcazou [Sat, 5 Apr 2008 22:56:52 +0000 (22:56 +0000)]
pr35823.adb: Rename to size_attribute.adb.
* gnat.dg/pr35823.adb: Rename to size_attribute.adb.
From-SVN: r133946
Jerry DeLisle [Sat, 5 Apr 2008 22:33:14 +0000 (22:33 +0000)]
PR fortran/25829 28655
2008-04-05 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR fortran/25829 28655
* gfortran.dg/f2003_io_1.f03: New test.
* gfortran.dg/f2003_io_2.f03: New test.
* gfortran.dg/f2003_io_3.f03: New test.
* gfortran.dg/f2003_io_4.f03: New test.
* gfortran.dg/f2003_io_5.f03: New test.
* gfortran.dg/f2003_io_6.f03: New test.
* gfortran.dg/f2003_io_7.f03: New test.
From-SVN: r133945
Jerry DeLisle [Sat, 5 Apr 2008 22:23:27 +0000 (22:23 +0000)]
PR fortran/25829 28655
2008-04-05 Jerry DeLisle <jvdelisle@gcc.gnu.org>
Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
PR fortran/25829 28655
* dump-parse-tree.c (gfc_show_code_node): Show new I/O parameters.
* gfortran.h (gfc_statement): Add ST_WAIT enumerator.
(gfc_open): Add pointers for decimal, encoding, round, sign,
asynchronous. (gfc_inquire): Add pointers for asynchronous, decimal,
encoding, pending, round, sign, size, id.
(gfc_wait): New typedef struct. (gfc_dt): Add pointers for id, pos,
asynchronous, blank, decimal, delim, pad, round, sign.
(gfc_exec_op): Add EXEC_WAIT enumerator. (gfc_code): Add pointer for
wait. (gfc_free_wait), (gfc_resolve_wait): New function prototypes.
* trans-stmt.h (gfc_trans_wait): New function prototype.
* trans.c (gfc_trans_code): Add case for EXEC_WAIT.
* io.c (io_tag): Add new tags for DECIMAL, ENCODING, ROUND, SIGN,
ASYCHRONOUS, ID. (match_open_element): Add matchers for new tags.
(gfc_free_open): Free new pointers. (gfc_resolve_open): Resolve new
tags. (gfc_resolve_open): Remove comment around check for allowed
values and ASYNCHRONOUS, update it. Likewise for DECIMAL, ENCODING,
ROUND, and SIGN. (match_dt_element): Add matching for new tags.
(gfc_free_wait): New function. (gfc_resolve_wait): New function.
(match_wait_element): New function. (gfc_match_wait): New function.
* resolve.c (gfc_resolve_blocks): Add case for EXEC_WAIT.
(resolve_code): Add case for EXEC_WAIT.
* st.c (gfc_free_statement): Add case for EXEC_WAIT.
* trans-io.c (ioparam_type): Add IOPARM_ptype_wait. (gfc_st_parameter):
Add "wait" entry. (iocall): Add IOCALL_WAIT enumerator.
(gfc_build_io_library_fndecls): Add function declaration for st_wait.
(gfc_trans_open): Add mask bits for new I/O tags.
(gfc_trans_inquire): Add mask bits for new I/O tags.
(gfc_trans_wait): New translation function.
(build_dt): Add mask bits for new I/O tags.
* match.c (gfc_match_if) Add matcher for "wait".
* match.h (gfc_match_wait): Prototype for new function.
* ioparm.def: Add new I/O parameter definitions.
* parse.c (decode_statement): Add match for "wait" statement.
(next_statement): Add case for ST_WAIT. (gfc_ascii_statement): Same.
Co-Authored-By: Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
From-SVN: r133944
Jerry DeLisle [Sat, 5 Apr 2008 22:18:03 +0000 (22:18 +0000)]
PR fortran/25829 28655
2008-04-05 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR fortran/25829 28655
* gfortran.map: Add new symbol, _gfortran_st_wait.
* libgfortran.h (st_paramter_common): Add new I/O parameters.
* open.c (st_option decimal_opt[], st_option encoding_opt[],
st_option round_opt[], st_option sign_opt[], st_option async_opt[]): New
parameter option arrays. (edit_modes): Add checks for new parameters.
(new_unit): Likewise. (st_open): Likewise.
* list_read.c (CASE_SEPERATORS): Add ';' as a valid separator.
(eat_separator): Handle deimal comma. (read_logical): Fix whitespace.
(parse_real): Handle decimal comma. (read_real): Handle decimal comma.
* read.c (read_a): Use decimal status flag to allow comma in place of a
decimal point. (read_f): Allow comma as acceptable character in float.
According to decimal flag, substitute a period for a comma.
(read_x): If decimal status flag is comma, disable the read_comma flag,
not allowing comma as a delimiter, an extension otherwise.
* io.h: (unit_decimal, unit_encoding, unit_round, unit_sign,
unit_async): New enumerators. Add all new I/O parameters.
* unix.c (unix_stream, int_stream): Add io_mode asychronous I/O control.
(move_pos_offset, fd_alloc_w_at): Fix some whitespace.
(fd_sfree): Use new enumerator. (fd_read): Likewise.
(fd_write): Likewise. (fd_close): Fix whitespace.
(fd_open): Use new enumertors. (tempfile, regular_file,
open_external): Fix whitespace. (output_stream, error_stream): Set
method. (stream_offset): Fix whitespace.
* transfer.c: (st_option decimal_opt[], sign_opt[], blank_opt[]): New
option arrays. (formatted_transfer_scalar): Set sf_read_comma flag
based on new decimal_status flag. (data_transfer_init): Initialize new
parameters. Add checks for decimal, sign, and blank. (st_wait): New stub.
* format.c: (format_lex): Add format specifiers DP, DC, and D.
(parse_format_list): Parse the new specifiers.
* write.c (write_decimal): Use new sign enumerators to set the sign.
(write_complex): Handle decimal comma and semi-colon separator.
(nml_write_obj): Likewise.
* write_float.def: Revise sign enumerators. (calculate_sign): Use new
sign enumerators. (output_float): Likewise. Use new decimal_status flag
to set the decimal character to a point or a comma.
From-SVN: r133943
Richard Guenther [Sat, 5 Apr 2008 18:04:07 +0000 (18:04 +0000)]
re PR tree-optimization/35833 (Wrong code generated with -ftree-vrp)
2008-04-05 Richard Guenther <rguenther@suse.de>
PR tree-optimization/35833
* gcc.dg/torture/pr35833.c: New testcase.
From-SVN: r133941
Jan Hubicka [Sat, 5 Apr 2008 12:25:32 +0000 (14:25 +0200)]
* emit-rtl.c (init_emit): xcalloc regno_pointer_align.
From-SVN: r133933
Jan Hubicka [Sat, 5 Apr 2008 05:50:19 +0000 (07:50 +0200)]
tree-dump.c (dump_enable_all): Remove prototype; do not accept letter argument.
* tree-dump.c (dump_enable_all): Remove prototype; do not accept
letter argument.
(dump_files): Update.
(enable_rtl_dump_file): Do not accept letter argument.
* tree-pass.h (dump_file_info): Remove letter argument.
* toplev.c (decode_d_option): Update -da handling.
* toplev.h (enable_rtl_dump_file): Update prototype.
* passes.c (register_one_dump_file): Do not accept IPA argument; work
it out based on pass type.
(register_dump_files_1): Likewise.
(init_optimization_passes): Update register_one_dump_file calls.
(execute_one_pass): Sanity check that IPA passes are called at IPA level
and RTL passes at RTL level.
(execute_pass_list): IPA pass can not be after or subpass of
GIMPLE/RTL pass.
(execute_ipa_pass_list): Handle IPA subpasses of IPA subpasses and
disallov RTL subpasses of IPA subpasses.
From-SVN: r133930
Ben Elliston [Sat, 5 Apr 2008 03:50:18 +0000 (03:50 +0000)]
tree-cfg.c (need_fake_edge_p): Return false for calls to builtins that return exactly once and do not throw.
* tree-cfg.c (need_fake_edge_p): Return false for calls to
builtins that return exactly once and do not throw. Cache call to
call_expr_flags.
From-SVN: r133929
GCC Administrator [Sat, 5 Apr 2008 00:17:32 +0000 (00:17 +0000)]
Daily bump.
From-SVN: r133924
Andy Hutchinson [Fri, 4 Apr 2008 23:45:46 +0000 (23:45 +0000)]
re PR target/34916 (gcc.c-torture/execute/pr27364.c fails with -O1, -O2 and -Os)
PR rtl-optimization/34916
PR middle-end/35519
* combine.c (create_log_links): Do not create duplicate LOG_LINKS
between instruction pairs
From-SVN: r133920
Naveen.H.S [Fri, 4 Apr 2008 23:36:19 +0000 (23:36 +0000)]
invoke.texi: Document -mbitops for SH.
* doc/invoke.texi: Document -mbitops for SH.
* config/sh/constraints.md (K03, K12, Sbv, Sbw): New constraints.
* config/sh/predicates.md (bitwise_memory_operand): New predicate.
* config/sh/sh.c (print_operand): Add %t operand code.
* config/sh/sh.h (GO_IF_LEGITIMATE_INDEX): Add condition for SH2A.
* config/sh/sh.md (*iorsi3_compact): Fix condition for SH2A.
(extendqisi2_compact): Add the alternative for SH2A 4-byte mov.b.
(extendqihi2): Likewise.
(movqi_i): Likewise.
(insv): Use bset, bclr and bst instructions for SH2A if possible.
(extv): Use bld instruction for SH2A if possible.
(extzv): Likewise.
(bclr_m2a, bclrmem_m2a, bset_m2a, bsetmem_m2a, bst_m2a, bld_m2a,
bldsign_m2a, bld_reg, *bld_regqi, band_m2a, bandreg_m2a,
bor_m2a, borreg_m2a, bxor_m2a, bxorreg_m2a): New insns.
(bset.b, bclr.b): Define peepholes.
* config/sh/sh.opt (mbitops): New option.
* gcc.target/sh/sh2a-band.c: New test.
* gcc.target/sh/sh2a-bclrmem.c: New test.
* gcc.target/sh/sh2a-bld.c: New test.
* gcc.target/sh/sh2a-bor.c: New test.
* gcc.target/sh/sh2a-bsetmem.c: New test.
* gcc.target/sh/sh2a-bxor.c: New test.
From-SVN: r133919
Andy Hutchinson [Fri, 4 Apr 2008 23:16:12 +0000 (23:16 +0000)]
* MAINTAINERS (Write After Approval): Add myself.
From-SVN: r133918
Janis Johnson [Fri, 4 Apr 2008 21:03:43 +0000 (21:03 +0000)]
* g++.dg/other/anon5.C: Don't depend on line number for error message.
From-SVN: r133913
Janis Johnson [Fri, 4 Apr 2008 21:02:55 +0000 (21:02 +0000)]
builtin-modf-1.c: Use special options for powerpc*-*-linux*.
* gcc.dg/torture/builtin-modf-1.c: Use special options for
powerpc*-*-linux*.
From-SVN: r133912
Janis Johnson [Fri, 4 Apr 2008 21:01:20 +0000 (21:01 +0000)]
* gcc.dg/var-expand3.c: Skip for powerpc-linux if not on AltiVec HW.
From-SVN: r133911
Janis Johnson [Fri, 4 Apr 2008 20:59:33 +0000 (20:59 +0000)]
* gcc.dg/pr34856.c: Use -maltivec on powerpc linux.
From-SVN: r133910
Janis Johnson [Fri, 4 Apr 2008 20:18:52 +0000 (20:18 +0000)]
re PR target/35620 (ICE passing dereferenced pointer to _Decimal32)
gcc/
PR target/35620
* config/rs6000/rs6000.c (rs6000_check_sdmode): Handle indirect ref
and view convert expression.
testsuite/
PR target/35620
* gcc.dg/dfp/pr35620.c: New test.
* gcc.dg/dfp/func-pointer.c: New test.
* gcc.dg/dfp/func-deref.c: New test.
From-SVN: r133909
Jakub Jelinek [Fri, 4 Apr 2008 17:48:45 +0000 (19:48 +0200)]
re PR target/35364 (ICE on ia64 with vector declaration inside #pragma omp parallel)
PR target/35364
* tree-cfg.c (remove_useless_stmts_1): Handle OMP_* containers.
* g++.dg/gomp/pr35364.C: New test.
From-SVN: r133905
H.J. Lu [Fri, 4 Apr 2008 17:22:48 +0000 (10:22 -0700)]
Change UNSPEC_PCLMULQDQ to UNSPEC_PCLMUL.
From-SVN: r133903
H.J. Lu [Fri, 4 Apr 2008 16:10:52 +0000 (16:10 +0000)]
config.gcc (extra_headers): Add wmmintrin.h for x86 and x86-64.
gcc/
2008-04-04 H.J. Lu <hongjiu.lu@intel.com>
* config.gcc (extra_headers): Add wmmintrin.h for x86 and x86-64.
* config/i386/cpuid.h (bit_AES): New.
(bit_PCLMUL): Likewise.
* config/i386/i386.c (pta_flags): Add PTA_AES and PTA_PCLMUL.
(override_options): Handle PTA_AES and PTA_PCLMUL. Enable
SSE2 if AES or PCLMUL is enabled.
(ix86_builtins): Add IX86_BUILTIN_AESENC128,
IX86_BUILTIN_AESENCLAST128, IX86_BUILTIN_AESDEC128,
IX86_BUILTIN_AESDECLAST128, IX86_BUILTIN_AESIMC128,
IX86_BUILTIN_AESKEYGENASSIST128 and IX86_BUILTIN_PCLMULQDQ128.
(bdesc_sse_3arg): Add IX86_BUILTIN_PCLMULQDQ128.
(bdesc_2arg): Add IX86_BUILTIN_AESENC128,
IX86_BUILTIN_AESENCLAST128, IX86_BUILTIN_AESDEC128,
IX86_BUILTIN_AESDECLAST128 and IX86_BUILTIN_AESKEYGENASSIST128.
(bdesc_1arg): Add IX86_BUILTIN_AESIMC128.
(ix86_init_mmx_sse_builtins): Define __builtin_ia32_aesenc128,
__builtin_ia32_aesenclast128, __builtin_ia32_aesdec128,
__builtin_ia32_aesdeclast128,__builtin_ia32_aesimc128,
__builtin_ia32_aeskeygenassist128 and
__builtin_ia32_pclmulqdq128.
* config/i386/i386.c (ix86_expand_binop_imm_builtin): New.
(ix86_expand_builtin): Use it for IX86_BUILTIN_PSLLDQI128 and
IX86_BUILTIN_PSRLDQI128. Handle IX86_BUILTIN_AESKEYGENASSIST128.
* config/i386/i386.h (TARGET_AES): New.
(TARGET_PCLMUL): Likewise.
(TARGET_CPU_CPP_BUILTINS): Handle TARGET_AES and TARGET_PCLMUL.
* config/i386/i386.md (UNSPEC_AESENC): New.
(UNSPEC_AESENCLAST): Likewise.
(UNSPEC_AESDEC): Likewise.
(UNSPEC_AESDECLAST): Likewise.
(UNSPEC_AESIMC): Likewise.
(UNSPEC_AESKEYGENASSIST): Likewise.
(UNSPEC_PCLMULQDQ): Likewise.
* config/i386/i386.opt (maes): New.
(mpclmul): Likewise.
* config/i386/sse.md (aesenc): New pattern.
(aesenclast): Likewise.
(aesdec): Likewise.
(aesdeclast): Likewise.
(aesimc): Likewise.
(aeskeygenassist): Likewise.
(pclmulqdq): Likewise.
* config/i386/wmmintrin.h: New.
* doc/extend.texi: Document AES and PCLMUL built-in function.
* doc/invoke.texi: Document -maes and -mpclmul.
gcc/testsuite/
2008-04-04 H.J. Lu <hongjiu.lu@intel.com>
* g++.dg/other/i386-2.C: Include <wmmintrin.h>.
* g++.dg/other/i386-3.C: Likewise.
* gcc.target/i386/sse-13.c: Likewise.
* gcc.target/i386/sse-14.c: Likewise.
* gcc.target/i386/aes-check.h: New.
* gcc.target/i386/aesdec.c: Likewise.
* gcc.target/i386/aesdeclast.c: Likewise.
* gcc.target/i386/aesenc.c: Likewise.
* gcc.target/i386/aesenclast.c: Likewise.
* gcc.target/i386/aesimc.c: Likewise.
* gcc.target/i386/aeskeygenassist.c: Likewise.
* gcc.target/i386/pclmulqdq.c: Likewise.
* gcc.target/i386/pclmul-check.h: Likewise.
* gcc.target/i386/i386.exp (check_effective_target_aes): New.
(check_effective_target_pclmul): Likewise.
From-SVN: r133902
Paolo Bonzini [Fri, 4 Apr 2008 14:57:18 +0000 (14:57 +0000)]
function.c (free_after_parsing): Replace with cxx_push_function_context from C++ front-end.
2008-04-03 Paolo Bonzini <bonzini@gnu.org>
* function.c (free_after_parsing): Replace with
cxx_push_function_context from C++ front-end.
(allocate_struct_function): Don't call langhook.
* langhooks.h (struct lang_hooks_for_functions): Delete.
(struct lang_hooks): Add back missing_noreturn_ok_p here, delete
member "function".
* langhooks-def.h (LANG_HOOKS_MISSING_NORETURN_OK_P): Add.
(LANG_HOOKS_FUNCTION_INIT, LANG_HOOKS_FUNCTION_FINAL,
LANG_HOOKS_FUNCTION_MISSING_NORETURN_OK_P,
LANG_HOOKS_FUNCTION_INITIALIZER): Delete.
(LANG_HOOKS_INITIALIZER): Add LANG_HOOKS_MISSING_NORETURN_OK_P,
remove LANG_HOOKS_FUNCTION_INITIALIZER.
* tree-cfg.c: Adjust call to missing_noreturn_ok_p langhook.
* c-objc-common.h (LANG_HOOKS_FUNCTION_MISSING_NORETURN_OK_P):
Rename to LANG_HOOKS_MISSING_NORETURN_OK_P.
cp:
2008-04-03 Paolo Bonzini <bonzini@gnu.org>
* decl.c (cxx_push_function_context): Delete.
(cxx_pop_function_context): Delete.
(start_preparsed_function): Merge cxx_push_function_context (!f->decl
code only).
* cp-objcp-common.h (LANG_HOOKS_FUNCTION_INIT,
LANG_HOOKS_FUNCTION_FINAL): Delete.
(LANG_HOOKS_FUNCTION_MISSING_NORETURN_OK_P): Rename to
LANG_HOOKS_MISSING_NORETURN_OK_P.
* cp-tree.h (cxx_push_function_context, cxx_pop_function_context):
Delete prototype.
* semantics.c (current_stmt_tree): Fix comment.
From-SVN: r133900
Jakub Jelinek [Fri, 4 Apr 2008 13:07:27 +0000 (15:07 +0200)]
re PR c/35440 (ICE resulting in completely broken diagnostic)
PR c/35440
* c-pretty-print.c (pp_c_initializer_list): Handle CONSTRUCTOR
for all types.
* gcc.dg/pr35440.c: New test.
From-SVN: r133897
Nick Clifton [Fri, 4 Apr 2008 11:45:46 +0000 (11:45 +0000)]
Fix typo
From-SVN: r133895
Nick Clifton [Fri, 4 Apr 2008 11:39:20 +0000 (11:39 +0000)]
re PR middle-end/4334 (Flow control insn inside a basic block, arm/netbsd, gcc 3.1)
PR binutils/4334
* acx.m4 (ACX_CHECK_CYGWIN_CAT_WORKS): New macro to check that
cygwin builds are not running in textmode.
* configure.ac: Run ACX_XHEXK_CYGWIN_CAT_WORKS for cygwin hosted
builds.
* configure: Regenerate.
From-SVN: r133894
Richard Guenther [Fri, 4 Apr 2008 11:29:11 +0000 (11:29 +0000)]
re PR middle-end/35823 (verify_gimple fails on taking 'Size of a String subprogram parameter)
2008-04-04 Richard Guenther <rguenther@suse.de>
PR middle-end/35823
* fold-const.c (optimize_minmax_comparison): Use the correct
type for the constant in the simplified comparison.
* gnat.dg/pr35823.adb: New testcase.
From-SVN: r133893
NightStrike [Fri, 4 Apr 2008 11:16:10 +0000 (11:16 +0000)]
re PR other/35151 (Combine mingw names)
PR other/35151
* configure.ac: Combine rules for mingw32 and mingw64.
* configure: Regenerate.
From-SVN: r133892
Zuxy Meng [Fri, 4 Apr 2008 07:39:12 +0000 (07:39 +0000)]
driver-i386.c (describe_cache): Add l2_sizekb argument.
* config/i386/driver-i386.c (describe_cache): Add l2_sizekb argument.
Pass L2 size as "--param l2-cache-size" to the compiler.
(decode_l2_cache): New function to decode L2 cache parameters using
0x8000006 extended cpuid function.
(detect_caches_amd): Determine parameters of L2 cache using
decode_l2_caches function.
(decode_caches_intel): Decode L2 cache parameters.
(detect_caches_intel): Determine L2 cache parameters using
decode_caches_intel and decode_l2_caches functions.
From-SVN: r133890
Bob Wilson [Fri, 4 Apr 2008 03:55:15 +0000 (03:55 +0000)]
xtensa.c (xtensa_secondary_reload_class): Use a secondary input reload for subword loads from the constant pool.
* config/xtensa/xtensa.c (xtensa_secondary_reload_class): Use a
secondary input reload for subword loads from the constant pool.
From-SVN: r133889
Janis Johnson [Fri, 4 Apr 2008 00:20:48 +0000 (00:20 +0000)]
re PR target/35713 (invalid type for va_arg with _Decimal128)
PR target/35713
* config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Use integer
constants of the appropriate size for runtime calculations.
From-SVN: r133887
GCC Administrator [Fri, 4 Apr 2008 00:17:42 +0000 (00:17 +0000)]
Daily bump.
From-SVN: r133885
Janis Johnson [Thu, 3 Apr 2008 23:49:35 +0000 (23:49 +0000)]
re PR c/35712 (decimal float literal constant zero loses significant trailing zeroes)
2008-04-03 Janis Johnson <janis187@us.ibm.com>
gcc/
PR c/35712
* dfp.c (decimal_from_decnumber): Retain trailing zeroes for
decimal-float literal constant zero.
testsuite/
PR c/35712
* gcc.dg/dfp/constants-zero.c: New test.
From-SVN: r133881
Jakub Jelinek [Thu, 3 Apr 2008 21:03:54 +0000 (23:03 +0200)]
re PR c/35738 (ICE with #pragma omp atomic and conversion from pointer to int)
PR c/35738
* c-parser.c (c_parser_omp_atomic): Call
default_function_array_conversion on the RHS.
* gcc.dg/gomp/pr35738.c: New test.
From-SVN: r133876
Jakub Jelinek [Thu, 3 Apr 2008 21:02:44 +0000 (23:02 +0200)]
re PR middle-end/35818 (ICE on incomplete array in shared clause)
PR middle-end/35818
* omp-low.c (scan_sharing_clauses) <case OMP_CLAUSE_SHARED>: Don't
call is_variable_sized if decl has incomplete type.
* gcc.dg/gomp/pr35818.c: New test.
From-SVN: r133875
Jakub Jelinek [Thu, 3 Apr 2008 21:01:26 +0000 (23:01 +0200)]
re PR fortran/35786 (OpenMP Fortran PRIVATE on parameter gives error in gfc_finish_var_decl)
PR fortran/35786
* openmp.c (resolve_omp_clauses): Diagnose if a clause symbol
isn't a variable.
* gfortran.dg/gomp/pr35786-1.f90: New test.
* gfortran.dg/gomp/pr35786-2.f90: New test.
From-SVN: r133874
H.J. Lu [Thu, 3 Apr 2008 20:02:54 +0000 (20:02 +0000)]
i386-protos.h (ix86_aligned_p): Removed.
2008-04-03 H.J. Lu <hongjiu.lu@intel.com>
* config/i386/i386-protos.h (ix86_aligned_p): Removed.
From-SVN: r133873
Adam Nemet [Thu, 3 Apr 2008 19:31:28 +0000 (19:31 +0000)]
mips.md (any_gt, [...]): New code iterators.
* config/mips/mips.md (any_gt, any_ge, any_lt, any_le): New code
iterators.
(u): Add attribute values for gt, gtu, ge, geu, lt, ltu, le and
leu.
(sgt<u>): Merge sgt and sgtu into new expander.
(sgt, sgtu): Remove expanders.
(*sgt<u>_<mode>): Merge *sgt_<mode> and *sgtu_<mode> into new
pattern.
(*sgt_<mode>, *sgtu_<mode>): Remove patterns.
(*sgt<u>_<mode>_mips16): Merge *sgt_<mode>_mips16 and
*sgtu_<mode>_mips16 into new pattern.
(*sgt_<mode>_mips16, *sgtu_<mode>_mips16): Remove patterns.
(sge<u>): Merge sge and sgeu into new expander.
(sge, sgeu): Remove expanders.
(*sge<u>_<mode>): Merge *sge_<mode> and second *sge_<mode> into
new pattern.
(*sge_<mode>, second *sge_<mode>): Remove patterns.
(slt<u>): Merge slt and sltu into new expander.
(slt, sltu): Remove expanders.
(*slt<u>_<mode>): Merge *slt_<mode> and *sltu_<mode> into new
pattern.
(*slt_<mode>, *sltu_<mode>): Remove patterns.
(*slt<u>_<mode>_mips16): Merge *slt_<mode>_mips16 and
*sltu_<mode>_mips16 into new pattern.
(*slt_<mode>_mips16, *sltu_<mode>_mips16): Remove patterns.
(sle<u>): Merge sle and sleu into new expander.
(sle, sleu): Remove expanders.
(*sle<u>_<mode>): Merge *sle_<mode> and *sleu_<mode> into new
pattern.
(*sle_<mode>, *sleu_<mode>): Remove patterns.
(*sle<u>_<mode>_mips16): Merge *sle_<mode>_mips16 and
*sleu_<mode>_mips16 into new pattern.
(*sle_<mode>_mips16, *sleu_<mode>_mips16): Remove patterns.
testsuite/
* gcc.target/mips/scc-1.c: New test.
From-SVN: r133872
Jan Hubicka [Thu, 3 Apr 2008 12:49:27 +0000 (05:49 -0700)]
re PR target/35795 (Revision 133787 breaks ia64)
2008-04-03 Jan Hubicka <jh@suse.cz>
PR tree-optimization/35795
* alpha/alpha.c (alpha_output_mi_thunk_osf): Free after compilation.
* sparc/sparc.c (sparc_output_mi_thunk): Likewise.
* ia64/ia64.c (ia64_output_mi_thunk): Likewise.
* m68k/m68k.c (m68k_output_mi_thunk): Likewise.
* score/score3.c (score3_output_mi_thunk): Likewise.
* score/score7.c (score7_output_mi_thunk): Likewise.
* mips/mips.c (mips_output_mi_thunk): Likewise.
From-SVN: r133868
Richard Guenther [Thu, 3 Apr 2008 09:33:27 +0000 (09:33 +0000)]
tree-vrp.c (extract_range_from_unary_expr): Handle all conversions.
2008-04-03 Richard Guenther <rguenther@suse.de>
* tree-vrp.c (extract_range_from_unary_expr): Handle all
conversions. Simplify code.
* gcc.dg/tree-ssa/vrp43.c: New testcase.
* gcc.dg/tree-ssa/vrp44.c: Likewise.
* gcc.dg/tree-ssa/vrp45.c: Likewise.
From-SVN: r133866
Kaz Kojima [Thu, 3 Apr 2008 09:07:17 +0000 (09:07 +0000)]
* config/sh/sh.c (sh_output_mi_thunk): Free cfun.
From-SVN: r133865
Jakub Jelinek [Thu, 3 Apr 2008 07:43:46 +0000 (09:43 +0200)]
re PR c++/35741 (ICE with offsetof and references)
PR c++/35741
* semantics.c (finish_offsetof): Undo effect of convert_from_reference
before calling fold_offsetof.
* g++.dg/other/offsetof5.C: New test.
From-SVN: r133863
Tom Tromey [Thu, 3 Apr 2008 06:12:27 +0000 (06:12 +0000)]
t-uclinux (generated_files): Add sysroot-suffix.h.
gcc/
2008-04-03 Tom Tromey <tromey@redhat.com>
Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
* config/m68k/t-uclinux (generated_files): Add sysroot-suffix.h.
* config/bfin/t-bfin-linux (generated_files): Add
linux-sysroot-suffix.h.
* doc/install.texi (Prerequisites): Require make 3.80.
* doc/sourcebuild.texi (Front End Directory): Document new
variable.
* Makefile.in (generated_files): New variable.
(ALL_HOST_OBJS): New variable.
($(ALL_HOST_OBJS)): New target.
gcc/java/
2008-04-03 Tom Tromey <tromey@redhat.com>
* Make-lang.in (java_OBJS): New variable.
gcc/objc/
2008-04-03 Tom Tromey <tromey@redhat.com>
* Make-lang.in (objc_OBJS): New variable.
gcc/objcp/
2008-04-03 Tom Tromey <tromey@redhat.com>
* Make-lang.in (obj-c++_OBJS): New variable.
gcc/cp/
2008-04-03 Tom Tromey <tromey@redhat.com>
* Make-lang.in (c++_OBJS): New variable.
gcc/fortran/
2008-04-03 Tom Tromey <tromey@redhat.com>
* Make-lang.in (fortran_OBJS): New variable.
Co-Authored-By: Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
From-SVN: r133862
Paolo Bonzini [Thu, 3 Apr 2008 05:41:57 +0000 (05:41 +0000)]
tree-inline.c (copy_generic_body, [...]): Export.
2007-03-09 Paolo Bonzini <bonzini@gnu.org>
* tree-inline.c (copy_generic_body, copy_decl_no_change): Export.
(remap_block): Call id->transform_lang_insert_block instead
of langhook.
(optimize_inline_calls, unsave_expr_now, tree_function_versioning):
Set id.transform_lang_insert_block to NULL.
(clone_body): Move to cp/optimize.c
* tree-inline.h (struct copy_body_data): Change
transform_lang_insert_block to function pointer.
(copy_generic_body, copy_decl_no_change): Export.
* langhooks.h (struct lang_hooks_for_decls): Kill insert_block.
* langhooks-def.h (LANG_HOOKS_INSERT_BLOCK): Kill.
(LANG_HOOKS_DECLS): Remove LANG_HOOKS_INSERT_BLOCK.
* c-tree.h (insert_block): Kill.
* c-decl.c (insert_block): Kill.
cp:
2007-03-09 Paolo Bonzini <bonzini@gnu.org>
* optimize.c (clone_body): New, from tree-inline.c.
ada:
2007-03-09 Paolo Bonzini <bonzini@gnu.org>
* gigi.h (insert_block): Kill.
* utils.c (insert_block): Kill.
java:
2007-03-09 Paolo Bonzini <bonzini@gnu.org>
* java-tree.h (insert_block): Kill.
* decl.c (insert_block): Kill.
fortran:
2007-03-09 Paolo Bonzini <bonzini@gnu.org>
* f95-lang.c (insert_block): Kill.
From-SVN: r133861
Paolo Bonzini [Thu, 3 Apr 2008 05:38:32 +0000 (05:38 +0000)]
c-objc-common.h (LANG_HOOKS_FUNCTION_ENTER_NESTED, [...]): Delete.
2008-04-03 Paolo Bonzini <bonzini@gnu.org>
* c-objc-common.h (LANG_HOOKS_FUNCTION_ENTER_NESTED,
LANG_HOOKS_FUNCTION_LEAVE_NESTED): Delete.
* c-tree.h (c_push_function_context, c_pop_function_context): Remove
argument.
* c-decl.c (c_push_function_context, c_pop_function_context): Remove
argument, call {push,pop}_function_context from here.
* c-parser.c: Use c_{push,pop}_function_context.
* function.c (push_function_context_to): Move meat ...
(push_function_context): ... here. Simplify.
* function.c (pop_function_context_from): Move meat ...
(pop_function_context): ... here. Simplify.
* langhooks.h (struct lang_hooks_for_functions): Remove enter_nested,
leave_nested).
* langhooks-def.h (LANG_HOOKS_FUNCTION_ENTER_NESTED,
LANG_HOOKS_FUNCTION_LEAVE_NESTED): Delete.
(LANG_HOOKS_FUNCTION_INITIALIZER): Delete them from here.
* tree.h (push_function_context_to, pop_function_context_from): Remove.
cp:
2008-04-03 Paolo Bonzini <bonzini@gnu.org>
* method.c (synthesize_method): Use {push,pop}_function_context.
* name-lookup.c (push_to_top_level): Likewise.
* parser.c (cp_parser_late_parsing_for_member): Likewise.
From-SVN: r133860
Paolo Bonzini [Thu, 3 Apr 2008 05:36:26 +0000 (05:36 +0000)]
re PR rtl-optimization/35281 (multiply with 0 generated for 64*32->64)
2008-04-03 Paolo Bonzini <bonzini@gnu.org>
PR rtl-optimization/35281
* gcc.target/i386/pr35281.c: New test.
From-SVN: r133859
Ben Elliston [Thu, 3 Apr 2008 05:17:11 +0000 (05:17 +0000)]
* expmed.c (extract_force_align_mem_bit_field): Remove.
From-SVN: r133858
Richard Guenther [Thu, 3 Apr 2008 02:09:20 +0000 (02:09 +0000)]
re PR middle-end/35800 (Revision 133835 failed to compile binutils)
PR middle-end/35800
* expr.h (try_casesi): Adjust prototype.
* expr.c (try_casesi): Take fallback label as extra parameter.
Use that for gen_casesi if default_label is NULL.
* stmt.c (expand_case): Pass fallback label to try_casesi,
make sure to fill gaps with a fallback label if default_label
is not present.
From-SVN: r133857
Richard Guenther [Thu, 3 Apr 2008 02:08:13 +0000 (02:08 +0000)]
re PR middle-end/35800 (Revision 133835 failed to compile binutils)
PR middle-end/35800
* gcc.c-torture/execute/pr35800.c: New test.
From-SVN: r133856
Dominique d'Humieres [Thu, 3 Apr 2008 00:33:05 +0000 (02:33 +0200)]
re PR target/35801 (At revision 133817, bootstrap fails at libstdc++-v3/src/strstream.cc on powerpc-apple-darwin9)
2008-04-03 Dominique d'Humieres <dominiq@lps.ens.fr>
PR target/35801
* config/rs6000/rs6000.c (rs6000_output_mi_thunk): Free cfun.
From-SVN: r133855
GCC Administrator [Thu, 3 Apr 2008 00:17:34 +0000 (00:17 +0000)]
Daily bump.
From-SVN: r133853
Ben Elliston [Wed, 2 Apr 2008 19:56:03 +0000 (19:56 +0000)]
expmed.c (extract_split_bit_field): Remove if (0) code.
* expmed.c (extract_split_bit_field): Remove if (0) code.
* tree-ssa-structalias.c (do_sd_constraint): Likewise.
(do_ds_constraint): Likewise.
From-SVN: r133848
Joseph Myers [Wed, 2 Apr 2008 19:42:53 +0000 (20:42 +0100)]
cppopts.texi (-dU): Document.
gcc:
* doc/cppopts.texi (-dU): Document.
* c-common.h (flag_dump_macros): Update comment.
* c-opts.c (handle_OPT_d): Handle -dU.
* c-ppoutput.c (macro_queue, define_queue, undef_queue,
dump_queued_macros, cb_used_define, cb_used_undef): New.
(init_pp_output): Handle -dU.
(cb_line_change): Call dump_queued_macros.
* toplev.c (decode_d_option): Accept -dU as preprocessor option.
gcc/testsuite:
* gcc.dg/cpp/cmdlne-dU-1.c, gcc.dg/cpp/cmdlne-dU-2.c,
gcc.dg/cpp/cmdlne-dU-3.c, gcc.dg/cpp/cmdlne-dU-4.c,
gcc.dg/cpp/cmdlne-dU-5.c, gcc.dg/cpp/cmdlne-dU-6.c,
gcc.dg/cpp/cmdlne-dU-7.c, gcc.dg/cpp/cmdlne-dU-8.c,
gcc.dg/cpp/cmdlne-dU-9.c, gcc.dg/cpp/cmdlne-dU-10.c,
gcc.dg/cpp/cmdlne-dU-11.c, gcc.dg/cpp/cmdlne-dU-12.c,
gcc.dg/cpp/cmdlne-dU-13.c, gcc.dg/cpp/cmdlne-dU-14.c,
gcc.dg/cpp/cmdlne-dU-15.c, gcc.dg/cpp/cmdlne-dU-16.c,
gcc.dg/cpp/cmdlne-dU-17.c, gcc.dg/cpp/cmdlne-dU-18.c,
gcc.dg/cpp/cmdlne-dU-19.c, gcc.dg/cpp/cmdlne-dU-20.c,
gcc.dg/cpp/cmdlne-dU-21.c, gcc.dg/cpp/cmdlne-dU-22.c: New tests.
libcpp:
* include/cpplib.h (struct cpp_callbacks): Add used_define,
used_undef and before_define.
(NODE_USED): Define.
* directives.c (do_define, do_undef, undefine_macros, do_ifdef,
do_ifndef, cpp_pop_definition): Handle new flag and use new
callbacks.
* expr.c (parse_defined): Handle new flag and use new callbacks.
* macro.c (enter_macro_context, _cpp_free_definition): Handle new
flag and use new callbacks.
From-SVN: r133847
Anatoly Sokolov [Wed, 2 Apr 2008 19:21:01 +0000 (23:21 +0400)]
predicates.md (io_address_operand): New predicate.
* config/avr/predicates.md (io_address_operand): New predicate.
* config/avr/avr-protos.h (avr_io_address_p): Remove declaration.
* config/avr/avr.c (avr_io_address_p): Remove function.
(out_movqi_r_mr): Use 'io_address_operand' predicate instead of
'avr_io_address_p' function.
(out_movhi_r_mr): (Ditto.).
(out_movqi_mr_r): (Ditto.).
(out_movhi_mr_r): (Ditto.).
(avr_address_cost): (Ditto.).
From-SVN: r133846
Uros Bizjak [Wed, 2 Apr 2008 19:07:27 +0000 (21:07 +0200)]
i386.md (*float<SSEMODEI24:mode><X87MODEF:mode>2_1): Emit gen_floatdi<X87MODEF:mode>2_i387_with_xmm for DImode values in 32bit mode...
* config/i386/i386.md (*float<SSEMODEI24:mode><X87MODEF:mode>2_1):
Emit gen_floatdi<X87MODEF:mode>2_i387_with_xmm for DImode values
in 32bit mode when XMM registers are available to avoid store
forwarding stalls.
(floatdi<X87MODEF:mode>2_i387_with_xmm): New insn pattern and
corresponding post-reload splitters.
From-SVN: r133845
Peter O'Gorman [Wed, 2 Apr 2008 17:36:41 +0000 (17:36 +0000)]
re PR bootstrap/35216 (Out of memory building java)
PR bootstrap/35216
* scripts/makemake.tcl: Replace org/omg build with build of all its subpackages.
* sources.am: Regenerate.
* Makefile.in: Regenerate.
From-SVN: r133842
H.J. Lu [Wed, 2 Apr 2008 14:32:02 +0000 (14:32 +0000)]
i386.c (bdesc_sse_3arg): Add __builtin_ia32_shufps and __builtin_ia32_shufpd.
2008-04-02 H.J. Lu <hongjiu.lu@intel.com>
* config/i386/i386.c (bdesc_sse_3arg): Add __builtin_ia32_shufps
and __builtin_ia32_shufpd. Provide __builtin_ia32_roundsd and
__builtin_ia32_roundss.
(ix86_init_mmx_sse_builtins): Remove __builtin_ia32_shufps,
__builtin_ia32_shufpd, __builtin_ia32_roundsd and
__builtin_ia32_roundss.
(ix86_expand_builtin): Don't handle IX86_BUILTIN_SHUFPS and
IX86_BUILTIN_SHUFPD here.
From-SVN: r133838
H.J. Lu [Wed, 2 Apr 2008 13:53:38 +0000 (13:53 +0000)]
i386.md (plogic): New.
2008-04-02 H.J. Lu <hongjiu.lu@intel.com>
* config/i386/i386.md (plogic): New.
(plogicprefix): Likewise.
* config/i386/mmx.md (mmx_<code><mode>3): New.
(mmx_and<mode>3): Removed.
(mmx_ior<mode>3): Likewise.
(mmx_xor<mode>3): Likewise.
* config/i386/sse.md (<code><mode>3): New.
(*<code><mode>3): Likewise.
(*<code><mode>3): Likewise.
(<code><mode>3): Likewise.
(*sse_<code><mode>3): Likewise.
(*sse2_<code><mode>3): Likewise.
(<code>tf3): Likewise.
(*<code>tf3): Likewise.
(and<mode>3): Likewise.
(*and<mode>3): Likewise.
(ior<mode>3): Removed.
(*ior<mode>3): Likewise.
(xor<mode>3): Likewise.
(*xor<mode>3): Likewise.
(*and<mode>3): Likewise.
(*ior<mode>3): Likewise.
(*xor<mode>3): Likewise.
(and<mode>3): Likewise.
(*sse_and<mode>3): Likewise.
(*sse2_and<mode>3): Likewise.
(andtf3): Likewise.
(*andtf3): Likewise.
(ior<mode>3): Likewise.
(*sse_ior<mode>3): Likewise.
(*sse2_ior<mode>3): Likewise.
(iortf3): Likewise.
(*iortf3): Likewise.
(xor<mode>3): Likewise.
(*sse_xor<mode>3): Likewise.
(*sse2_xor<mode>3): Likewise.
(xortf3): Likewise.
(*xortf3): Likewise.
From-SVN: r133837
Richard Guenther [Wed, 2 Apr 2008 12:54:08 +0000 (12:54 +0000)]
re PR tree-optimization/14495 ([tree-ssa] Propagate range info into a switch statement)
2008-04-02 Richard Guenther <rguenther@suse.de>
PR tree-optimization/14495
PR tree-optimization/34793
* tree-vrp.c (struct switch_update): New structure.
(to_remove_edges, to_update_switch_stmts): New VECs.
(simplify_switch_using_ranges): New function. Remove not taken
case labels and edges.
(simplify_stmt_using_ranges): Call it.
(identify_jump_threads): Mark edges we have queued for removal
so we don't thread them.
(execute_vrp): Remove edges queued for removal, update SWITCH_STMT
case label vector.
* tree-cfg.c (group_case_labels): Deal with missing default label.
(tree_verify_flow_info): Allow missing default label.
* stmt.c (emit_case_bit_tests): Deal with NULL default_label.
(emit_case_nodes): Likewise.
(expand_case): Do not rely on the default label to be present.
* expr.c (try_casesi): Deal with NULL default_label.
(do_tablejump): Likewise.
* gcc.dg/tree-ssa/vrp41.c: New testcase.
* gcc.dg/tree-ssa/vrp42.c: Likewise.
From-SVN: r133835
Richard Guenther [Wed, 2 Apr 2008 12:51:37 +0000 (12:51 +0000)]
re PR tree-optimization/14495 ([tree-ssa] Propagate range info into a switch statement)
2008-04-02 Richard Guenther <rguenther@suse.de>
PR tree-optimization/14495
* tree-vrp.c (vrp_visit_cond_stmt): Do not handle
SWITCH_EXPR here ...
(vrp_visit_switch_stmt): ... but here (new function).
(find_case_label_index): New helper function.
(vrp_visit_stmt): Dispatch to vrp_visit_switch_stmt.
* gcc.dg/tree-ssa/vrp40.c: New testcase.
From-SVN: r133834
Paolo Bonzini [Wed, 2 Apr 2008 12:16:54 +0000 (12:16 +0000)]
fwprop.c: Fix ISO-C99ism.
2008-04-02 Paolo Bonzini <bonzini@gnu.org>
* fwprop.c: Fix ISO-C99ism.
From-SVN: r133833
Paolo Bonzini [Wed, 2 Apr 2008 10:07:58 +0000 (10:07 +0000)]
re PR bootstrap/35752 (Combined gcc + binutils source tree doesn't bootstrap with --enable-shared)
2008-04-02 Paolo Bonzini <bonzini@gnu.org>
PR bootstrap/35752
* Makefile.in (objdir): Set it here.
* configure.ac: Not here. Find dynamic linker characteristics.
* exec-tool.in: Use them.
* aclocal.m4: Regenerate.
* configure: Regenerate.
From-SVN: r133832
Eric Botcazou [Wed, 2 Apr 2008 10:06:57 +0000 (10:06 +0000)]
decl.c (gnat_to_gnu_entity): For a constant object whose type has self-referential size...
* decl.c (gnat_to_gnu_entity) <object>: For a constant object whose
type has self-referential size, get the size from the initializing
expression directly if it is also a constant whose nominal type
has self-referential size.
From-SVN: r133831
Paolo Bonzini [Wed, 2 Apr 2008 10:01:43 +0000 (10:01 +0000)]
expr.c (expand_var): Delete it.
2008-04-02 Paolo Bonzini <bonzini@gnu.org>
* expr.c (expand_var): Delete it.
* expr.h (expand_var): Delete prototype.
* function.c (expand_function_start): Use expand_decl instead.
* cfgexpand.c (expand_one_static_var, expand_one_var): Don't call
langhook.
From-SVN: r133830