aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2008-04-07fold-const.c (fold): New case.Eric Botcazou7-2/+114
* 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
2008-04-07Removal of Return with Depressed Stack Pointer supportEric Botcazou11-475/+53
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
2008-04-07re PR libstdc++/35588 ([parallel mode] parallel std::sort and bind())Johannes Singler11-2338/+2487
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
2008-04-07Daily bump.GCC Administrator1-1/+1
From-SVN: r133972
2008-04-06re PR middle-end/35400 (-Wtype-limits -O2 causes ICE tree check: expected ↵Richard Guenther5-1/+49
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
2008-04-07avr.h (avr_mega_p): Remove declaration.Anatoly Sokolov5-20/+32
* 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
2008-04-06Index...Paul Thomas4-18/+69
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
2008-04-06re PR fortran/35832 (Better error message for wrong arguments to I/O statements)Tobias Schlüter4-59/+95
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
2008-04-06re PR target/35842 (ICE in legitimize_pic_address, at config/i386/i386.c:7666)Richard Guenther2-1/+8
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
2008-04-06io.c (check_io_constraints): Add constrains.Tobias Burnus5-4/+34
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
2008-04-06decl.c (is_variable_size): Do not unconditionally return false on non-strict ↵Eric Botcazou4-10/+50
alignment platforms. * decl.c (is_variable_size): Do not unconditionally return false on non-strict alignment platforms. From-SVN: r133961
2008-04-06gcc.c (default_compilers): Sync Fortran extensions list with that in ↵Francois-Xavier Coudert7-9/+30
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
2008-04-06* parse.c (gfc_parse_file): Use gfc_dump_parse_tree.Francois-Xavier Coudert2-2/+3
From-SVN: r133959
2008-04-06dump-parse-tree.c: Use fprintf, fputs and fputc instead of gfc_status and ↵François-Xavier Coudert6-660/+618
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
2008-04-06decl.c (rest_of_type_decl_compilation_no_defer): New local function used to ↵Eric Botcazou3-14/+59
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
2008-04-06gthr-posix95.h (__gthread_cond_wait_recursive): Add missing &.Tom G. Christensen2-1/+5
* gthr-posix95.h (__gthread_cond_wait_recursive): Add missing &. From-SVN: r133955
2008-04-06re PR target/12329 (x86: local function declared with ↵Uros Bizjak4-9/+56
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
2008-04-06Daily bump.GCC Administrator1-1/+1
From-SVN: r133951
2008-04-05pr35823.adb: Rename to size_attribute.adb.Eric Botcazou3-6/+12
* gnat.dg/pr35823.adb: Rename to size_attribute.adb. From-SVN: r133946
2008-04-05PR fortran/25829 28655Jerry DeLisle8-0/+188
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
2008-04-05PR fortran/25829 28655Jerry DeLisle13-93/+877
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
2008-04-05PR fortran/25829 28655Jerry DeLisle13-105/+519
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
2008-04-05re PR tree-optimization/35833 (Wrong code generated with -ftree-vrp)Richard Guenther2-0/+27
2008-04-05 Richard Guenther <rguenther@suse.de> PR tree-optimization/35833 * gcc.dg/torture/pr35833.c: New testcase. From-SVN: r133941
2008-04-05* emit-rtl.c (init_emit): xcalloc regno_pointer_align.Jan Hubicka2-2/+4
From-SVN: r133933
2008-04-05tree-dump.c (dump_enable_all): Remove prototype; do not accept letter argument.Jan Hubicka6-45/+78
* 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
2008-04-05tree-cfg.c (need_fake_edge_p): Return false for calls to builtins that ↵Ben Elliston2-3/+21
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
2008-04-05Daily bump.GCC Administrator1-1/+1
From-SVN: r133924
2008-04-04re PR target/34916 (gcc.c-torture/execute/pr27364.c fails with -O1, -O2 and -Os)Andy Hutchinson2-3/+20
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
2008-04-04invoke.texi: Document -mbitops for SH.Naveen.H.S15-7/+830
* 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
2008-04-04* MAINTAINERS (Write After Approval): Add myself.Andy Hutchinson2-0/+5
From-SVN: r133918
2008-04-04* g++.dg/other/anon5.C: Don't depend on line number for error message.Janis Johnson2-1/+5
From-SVN: r133913
2008-04-04builtin-modf-1.c: Use special options for powerpc*-*-linux*.Janis Johnson2-1/+4
* gcc.dg/torture/builtin-modf-1.c: Use special options for powerpc*-*-linux*. From-SVN: r133912
2008-04-04* gcc.dg/var-expand3.c: Skip for powerpc-linux if not on AltiVec HW.Janis Johnson2-1/+3
From-SVN: r133911
2008-04-04* gcc.dg/pr34856.c: Use -maltivec on powerpc linux.Janis Johnson2-0/+3
From-SVN: r133910
2008-04-04re PR target/35620 (ICE passing dereferenced pointer to _Decimal32)Janis Johnson6-0/+481
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
2008-04-04re PR target/35364 (ICE on ia64 with vector declaration inside #pragma omp ↵Jakub Jelinek4-0/+87
parallel) PR target/35364 * tree-cfg.c (remove_useless_stmts_1): Handle OMP_* containers. * g++.dg/gomp/pr35364.C: New test. From-SVN: r133905
2008-04-04Change UNSPEC_PCLMULQDQ to UNSPEC_PCLMUL.H.J. Lu1-1/+1
From-SVN: r133903
2008-04-04config.gcc (extra_headers): Add wmmintrin.h for x86 and x86-64.H.J. Lu26-39/+1041
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
2008-04-04function.c (free_after_parsing): Replace with cxx_push_function_context from ↵Paolo Bonzini11-91/+50
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
2008-04-04re PR c/35440 (ICE resulting in completely broken diagnostic)Jakub Jelinek4-5/+30
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
2008-04-04Fix typoNick Clifton1-1/+1
From-SVN: r133895
2008-04-04re PR middle-end/4334 (Flow control insn inside a basic block, arm/netbsd, ↵Nick Clifton5-0/+64
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
2008-04-04re PR middle-end/35823 (verify_gimple fails on taking 'Size of a String ↵Richard Guenther4-1/+19
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
2008-04-04re PR other/35151 (Combine mingw names)NightStrike3-8/+8
PR other/35151 * configure.ac: Combine rules for mingw32 and mingw64. * configure: Regenerate. From-SVN: r133892
2008-04-04driver-i386.c (describe_cache): Add l2_sizekb argument.Zuxy Meng2-14/+188
* 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
2008-04-04xtensa.c (xtensa_secondary_reload_class): Use a secondary input reload for ↵Bob Wilson2-1/+7
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
2008-04-04re PR target/35713 (invalid type for va_arg with _Decimal128)Janis Johnson2-2/+8
PR target/35713 * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Use integer constants of the appropriate size for runtime calculations. From-SVN: r133887
2008-04-04Daily bump.GCC Administrator1-1/+1
From-SVN: r133885
2008-04-03re PR c/35712 (decimal float literal constant zero loses significant ↵Janis Johnson4-2/+170
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
2008-04-03re PR c/35738 (ICE with #pragma omp atomic and conversion from pointer to int)Jakub Jelinek4-1/+29
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