1. 07 Apr, 2008 1 commit
  2. 06 Apr, 2008 14 commits
    • re PR middle-end/35400 (-Wtype-limits -O2 causes ICE tree check: expected… · 3633df5a
      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
      Richard Guenther committed
    • avr.h (avr_mega_p): Remove declaration. · 5dc77808
      	* 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
      Anatoly Sokolov committed
    • Index... · 679d9637
      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
      Paul Thomas committed
    • re PR fortran/35832 (Better error message for wrong arguments to I/O statements) · 9b8d1901
      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
      Tobias Schlüter committed
    • re PR target/35842 (ICE in legitimize_pic_address, at config/i386/i386.c:7666) · 8c51effa
      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
      Richard Guenther committed
    • io.c (check_io_constraints): Add constrains. · fbe88ffa
      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
      Tobias Burnus committed
    • decl.c (is_variable_size): Do not unconditionally return false on non-strict alignment platforms. · 2d091b12
      	* decl.c (is_variable_size): Do not unconditionally return false
      	on non-strict alignment platforms.
      
      From-SVN: r133961
      Eric Botcazou committed
    • gcc.c (default_compilers): Sync Fortran extensions list with that in fortran/lang-specs.h. · 3135ce84
      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 committed
    • dump-parse-tree.c: Use fprintf, fputs and fputc instead of gfc_status and gfc_status_char. · 6c1abb5c
      	* 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
      François-Xavier Coudert committed
    • decl.c (rest_of_type_decl_compilation_no_defer): New local function used to… · 1bde5bc4
      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
      Eric Botcazou committed
    • gthr-posix95.h (__gthread_cond_wait_recursive): Add missing &. · d7d7db8b
      	* gthr-posix95.h (__gthread_cond_wait_recursive): Add missing &.
      
      From-SVN: r133955
      Tom G. Christensen committed
    • re PR target/12329 (x86: local function declared with attribute((regparm(3)))… · 27183bba
      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
      Uros Bizjak committed
    • Daily bump. · 93f14b2f
      From-SVN: r133951
      GCC Administrator committed
  3. 05 Apr, 2008 9 commits
    • pr35823.adb: Rename to size_attribute.adb. · adcb04d2
      	* gnat.dg/pr35823.adb: Rename to size_attribute.adb.
      
      From-SVN: r133946
      Eric Botcazou committed
    • PR fortran/25829 28655 · 5a829544
      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 committed
    • PR fortran/25829 28655 · 6f0f0b2e
      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 committed
    • PR fortran/25829 28655 · 10256cbe
      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
      Jerry DeLisle committed
    • re PR tree-optimization/35833 (Wrong code generated with -ftree-vrp) · 3d3e20df
      2008-04-05  Richard Guenther  <rguenther@suse.de>
      
      	PR tree-optimization/35833
      	* gcc.dg/torture/pr35833.c: New testcase.
      
      From-SVN: r133941
      Richard Guenther committed
    • * emit-rtl.c (init_emit): xcalloc regno_pointer_align. · 9fb7564e
      From-SVN: r133933
      Jan Hubicka committed
    • tree-dump.c (dump_enable_all): Remove prototype; do not accept letter argument. · 9e016eba
      
      	* 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
      Jan Hubicka committed
    • tree-cfg.c (need_fake_edge_p): Return false for calls to builtins that return… · 23ef6d21
      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
      Ben Elliston committed
    • Daily bump. · c44b856a
      From-SVN: r133924
      GCC Administrator committed
  4. 04 Apr, 2008 16 commits
    • re PR target/34916 (gcc.c-torture/execute/pr27364.c fails with -O1, -O2 and -Os) · 3c2397cd
      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
      Andy Hutchinson committed
    • invoke.texi: Document -mbitops for SH. · 9eb3a0dd
      	* 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
      Naveen.H.S committed
    • * MAINTAINERS (Write After Approval): Add myself. · 97db009c
      From-SVN: r133918
      Andy Hutchinson committed
    • builtin-modf-1.c: Use special options for powerpc*-*-linux*. · 148c1544
      	* gcc.dg/torture/builtin-modf-1.c: Use special options for
      	powerpc*-*-linux*.
      
      From-SVN: r133912
      Janis Johnson committed
    • * gcc.dg/pr34856.c: Use -maltivec on powerpc linux. · 12a0a01a
      From-SVN: r133910
      Janis Johnson committed
    • re PR target/35620 (ICE passing dereferenced pointer to _Decimal32) · fdf4f148
      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
      Janis Johnson committed
    • re PR target/35364 (ICE on ia64 with vector declaration inside #pragma omp parallel) · 3088d404
      	PR target/35364
      	* tree-cfg.c (remove_useless_stmts_1): Handle OMP_* containers.
      
      	* g++.dg/gomp/pr35364.C: New test.
      
      From-SVN: r133905
      Jakub Jelinek committed
    • Change UNSPEC_PCLMULQDQ to UNSPEC_PCLMUL. · c9a22ea1
      From-SVN: r133903
      H.J. Lu committed
    • config.gcc (extra_headers): Add wmmintrin.h for x86 and x86-64. · 8b96a312
      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
      H.J. Lu committed
    • function.c (free_after_parsing): Replace with cxx_push_function_context from C++ front-end. · e8924938
      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
      Paolo Bonzini committed
    • re PR c/35440 (ICE resulting in completely broken diagnostic) · 05008a0c
      	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
      Jakub Jelinek committed
    • Fix typo · 5f4bebbf
      From-SVN: r133895
      Nick Clifton committed
    • re PR middle-end/4334 (Flow control insn inside a basic block, arm/netbsd, gcc 3.1) · 2a79c47f
              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
      Nick Clifton committed
    • re PR middle-end/35823 (verify_gimple fails on taking 'Size of a String subprogram parameter) · c071e8bc
      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
      Richard Guenther committed