1. 24 May, 2012 16 commits
    • PR 53456 CPU timing fallback using clock_gettime. · 44813fe0
      2012-05-24  Janne Blomqvist  <jb@gcc.gnu.org>
      
      	PR fortran/53456
      	* intrinsics/time_1.h (gf_cputime): Fallback for clock_gettime.
      
      From-SVN: r187846
      Janne Blomqvist committed
    • Make unwound macro expansion trace less redundant · 165ca58d
      As discussed previously, the unwinder for macro expansion is quite
      verbose [1].  This patch proposes to address that shortcoming.
      
      Consider this test case:
      
          $ cat -n test.c
      	 1	#define MYMAX(A,B) __extension__ ({ __typeof__(A) __a = (A); \
      	 2	 __typeof__(B) __b = (B); __a < __b ? __b : __a; })
      	 3
      	 4	struct mystruct {};
      	 5	void
      	 6	foo()
      	 7	{
      	 8	  struct mystruct p;
      	 9	  float f = 0.0;
      	10	  MYMAX (p, f);
      	11	}
          $
      
      The output of the compiler from trunk yields:
      
          $ cc1 -quiet ./test.c
          ./test.c: In function ‘foo’:
          ./test.c:2:31: error: invalid operands to binary < (have ‘struct mystruct’ and ‘float’)
            __typeof__(B) __b = (B); __a < __b ? __b : __a; })
      				   ^
          ./test.c:2:31: note: in expansion of macro 'MYMAX'
            __typeof__(B) __b = (B); __a < __b ? __b : __a; })
      				   ^
          ./test.c:10:3: note: expanded from here
             MYMAX (p, f);
             ^
          $
      
      After this patch, the compiler yields:
      
          $ ./cc1 -quiet ./test.c
          ./test.c: In function ‘foo’:
          ./test.c:2:31: error: invalid operands to binary < (have ‘struct mystruct’ and ‘float’)
            __typeof__(B) __b = (B); __a < __b ? __b : __a; })
      				   ^
          ./test.c:10:3: note: in expansion of macro 'MYMAX'
             MYMAX (p, f);
             ^
          $
      
      The gotcha is, in the general case, we cannot simply eliminate the
      context of the macro definition.  That is, the line from the first
      output that is redundant with the first diagnostic line that has
      line/column number:
      
          ./test.c:2:31: note: in expansion of macro 'MYMAX'
            __typeof__(B) __b = (B); __a < __b ? __b : __a; })
                                         ^
      
      We cannot simply eliminate that context of macro definition because
      there are cases where the first diagnostic that has a line/column
      number doesn't point to a location inside the definition of the macro
      where the relevant token is used.  For instance:
      
          $ cat -n test2.c
      	 1	#define OPERATE(OPRD1, OPRT, OPRD2) \
      	 2	  OPRD1 OPRT OPRD2;
      	 3
      	 4	#define SHIFTL(A,B) \
      	 5	  OPERATE (A,<<,B)
      	 6
      	 7	#define MULT(A) \
      	 8	  SHIFTL (A,1)
      	 9
      	10	void
      	11	g ()
      	12	{
      	13	  MULT (1.0);// 1.0 << 1; <-- so this is an error.
      	14	}
          $
      
      Which yields without the patch:
      
          $ cc1 -quiet ./test2.c
          ./test2.c: In function ‘g’:
          ./test2.c:5:14: error: invalid operands to binary << (have ‘double’ and ‘int’)
             OPERATE (A,<<,B)
      		  ^
          ./test2.c:2:9: note: in expansion of macro 'OPERATE'
             OPRD1 OPRT OPRD2;
      	     ^
          ./test2.c:5:3: note: expanded from here
             OPERATE (A,<<,B)
             ^
          ./test2.c:5:14: note: in expansion of macro 'SHIFTL'
             OPERATE (A,<<,B)
      		  ^
          ./test2.c:8:3: note: expanded from here
             SHIFTL (A,1)
             ^
          ./test2.c:8:3: note: in expansion of macro 'MULT'
             SHIFTL (A,1)
             ^
          ./test2.c:13:3: note: expanded from here
             MULT (1.0);// 1.0 << 1; <-- so this is an error.
             ^
          $
      
      Here, the line that has the context of macro definition:
      
          ./test2.c:2:9: note: in expansion of macro 'OPERATE'
             OPRD1 OPRT OPRD2;
      	     ^
      is useful, because the first diagnostic that has line/column number
      wasn't pointing into the definition of the macro OPERATE, where the
      token '<<' is used.
      
          ./test2.c:5:14: error: invalid operands to binary << (have ‘double’ and ‘int’)
             OPERATE (A,<<,B)
      		  ^
      So in this this case, displaying the macro definition context is not
      redundant.  I think it is even desirable.
      
      The patch changes the output in that case to be:
      
          ./test2.c: In function ‘g’:
          ./test2.c:5:14: erreur: invalid operands to binary << (have ‘double’ and ‘int’)
             OPERATE (A,<<,B)
      		  ^
          ./test2.c:2:9: note: in definition of macro 'OPERATE'
             OPRD1 OPRT OPRD2;
      	     ^
          ./test2.c:8:3: note: in expansion of macro 'SHIFTL'
             SHIFTL (A,1)
             ^
          ./test2.c:13:3: note: in expansion of macro 'MULT'
             MULT (1.0);// 1.0 << 1; <-- so this is an error.
             ^
          $
      
      It's shorter, but I believe it has all the information that was
      present before the patch.
      
      [1]: http://gcc.gnu.org/ml/gcc-patches/2012-05/msg00321.html
      
      Bootstrapped and tested on x86_64-unknown-linux-gnu against trunk.
      
      gcc/
      
      	Make unwound macro expansion trace less redundant
      	* tree-diagnostic.c (maybe_unwind_expanded_macro_loc): Don't print
      	context of macro definition in the trace, when it's redundant.
      	Update comments.
      
      gcc/testsuite/
      
      	Make unwound macro expansion trace less redundant
      	* gcc.dg/cpp/macro-exp-tracking-1.c: Adjust.
      	* gcc.dg/cpp/macro-exp-tracking-2.c: Likewise.
      	* gcc.dg/cpp/macro-exp-tracking-3.c: Likewise.
      	* gcc.dg/cpp/macro-exp-tracking-4.c: Likewise.
      	* gcc.dg/cpp/macro-exp-tracking-5.c: Likewise.
      	* gcc.dg/cpp/pragma-diagnostic-2.c: Likewise.
      
      From-SVN: r187845
      Dodji Seketeli committed
    • re PR c++/53464 (Invalid default value for non-type template parameter is accepted) · a5dedb5e
      2012-05-24  Paolo Carlini  <paolo.carlini@oracle.com>
      
      	PR c++/53464
      	* g++.dg/cpp0x/constexpr-default1.C: New.
      
      From-SVN: r187842
      Paolo Carlini committed
    • Fix typo in latest ChangeLog entry addition. · 73fb7630
      From-SVN: r187840
      Olivier Hainque committed
    • Makefile.in: move dependency on install-unwind_h from "install-leaf" to "install". · 7c7c339b
              libgcc/
              * Makefile.in: move dependency on install-unwind_h from
              "install-leaf" to "install".
      
      From-SVN: r187839
      Olivier Hainque committed
    • Makefile.in (clean): Remove libgcc_tm.stamp as well. · fdc1b7d3
              libgcc/
              * Makefile.in (clean): Remove libgcc_tm.stamp as well.
              Use a separate command for stamp removals.
      
      From-SVN: r187838
      Olivier Hainque committed
    • re PR c++/32080 (Can goto a function try-block) · c7837f7e
      /cp
      2012-05-24  Paolo Carlini  <paolo.carlini@oracle.com>
      
      	PR c++/32080
      	* parser.c (cp_parser_ctor_initializer_opt_and_function_body,
      	cp_parser_function_body): Add a bool parameter, true when parsing
      	a function-try-block.
      	(cp_parser_function_try_block): Pass true to the above.
      	(cp_parser_function_definition_after_declarator,
      	cp_parser_function_transaction): Adjust.
      
      /testsuite
      2012-05-24  Paolo Carlini  <paolo.carlini@oracle.com>
      
      	PR c++/32080
      	* g++.dg/eh/goto2.C: New.
      
      From-SVN: r187837
      Paolo Carlini committed
    • re PR middle-end/53460 (Internal compiler error: in calc_dfs_tree, at dominance.c:395) · 49bdc0a6
      2012-05-24  Richard Guenther  <rguenther@suse.de>
      
      	PR middle-end/53460
      	* tree-profile.c (tree_profiling): Cleanup the CFG if
      	execute_fixup_cfg requests it.
      
      	* g++.dg/tree-prof/pr53460.C: New testcase.
      
      From-SVN: r187831
      Richard Guenther committed
    • re PR bootstrap/53466 (Bootstrap failure) · 8a791ae2
      2012-05-24  Richard Guenther  <rguenther@suse.de>
      
      	PR bootstrap/53466
      	* g++.dg/debug/pr53466.C: New testcase.
      
      From-SVN: r187830
      Richard Guenther committed
    • tree-flow.h (create_var_ann): Remove. · 0faa0562
      2012-05-24  Richard Guenther  <rguenther@suse.de>
      
      	* tree-flow.h (create_var_ann): Remove.
      	* tree-dfa.c (create_var_ann): Remove and inline into its
      	single caller ...
      	(add_referenced_var_1): ... here.
      	* varpool.c (add_new_static_var): Do not call add_referenced_var
      	for global vars.
      	* gimple-fold.c (canonicalize_constructor_val): Likewise.
      	* tree-switch-conversion.c (build_one_array): Likewise.
      	* tree-profile.c (gimple_gen_ic_profiler): Likewise.
      	* tree-flow-inline.h (gimple_referenced_vars): Guard against
      	NULL fn argument.
      	* tree-inline.c (remap_gimple_op_r): Likewise.  Check
      	gimple_referenced_vars instead of gimple_in_ssa_p.
      	(copy_tree_body_r): Likewise.
      	(setup_one_parameter): Likewise.
      	(declare_return_variable): Likewise.
      	(tree_function_versioning): Likewise.
      
      From-SVN: r187829
      Richard Guenther committed
    • re PR tree-optimization/53465 (wrong code with -O1 -ftree-vrp) · 0d5a9e78
      	PR tree-optimization/53465
      	* tree-vrp.c (extract_range_from_cond_expr): First copy_value_range
      	vr0 into *vr, then vrp_meet that.
      	(vrp_meet): If one vr type is VR_UNDEFINED, ensure the result doesn't
      	have any equivalences.
      	(vrp_visit_phi_node): Call copy_value_range instead of vrp_meet the
      	first time.
      
      	* gcc.c-torture/execute/pr53465.c: New test.
      
      From-SVN: r187827
      Jakub Jelinek committed
    • recog.c (reg_fits_class_p): Check both regno and regno + offset are hard registers. · e7bcc691
      2012-05-24  Jim MacArthur<jim.macarthur@arm.com>
      
      	* recog.c (reg_fits_class_p): Check both regno and regno + offset are
      	hard registers.
      	* regs.h (in_hard_reg_set_p): Assert that regno is a hard register and
      	check end_regno - 1 is a hard register.
      
      From-SVN: r187826
      Jim MacArthur committed
    • varpool.c (add_new_static_var): Remove call to create_var_ann. · b44be1e6
      2012-05-24  Richard Guenther  <rguenther@suse.de>
      
      	* varpool.c (add_new_static_var): Remove call to create_var_ann.
      	* tree-ssa-operands.c (create_vop_var): Likewise.
      
      From-SVN: r187825
      Richard Guenther committed
    • re PR bootstrap/53466 (Bootstrap failure) · 1431ce01
      2012-05-24  Richard Guenther  <rguenther@suse.de>
      
      	PR bootstrap/53466
      	* tree-ssa-live.c (remove_unused_scope_block_p): Properly
      	handle globals.
      	(remove_unused_locals): Pass global_unused_vars to
      	remove_unused_scope_block_p.  Restore code walking all
      	referenced vars and pruning them.
      
      From-SVN: r187824
      Richard Guenther committed
    • tree.h (alias_diag_flags): Remove. · 07250f0e
      
      	* tree.h (alias_diag_flags): Remove.
      	(alias_pair): Remove emitted_diags.
      	(finish_aliases_1, finish_aliases_2, remove_unreachable_alias_pairs,
      	symbol_alias_set_t, symbol_alias_set_destroy,
      	symbol_alias_set_contains, propagate_aliases_backward): Remove.
      	* toplev.c (compile_file): Do not call finish_aliases_2
      	* cgraphunit.c (cgraph_process_new_functions): Do not call finish_aliases_1.
      	(handle_alias_pairs): Output diagnostics about aliases to externals.
      	(assemble_thunks_and_aliases): Use do_assemble_alias.
      	(output_weakrefs): Likewise.
      	(finalize_compilation_unit): Do not call finish_aliases_1.
      	* ipa.c (symtab_remove_unreachable_nodes): De not call remove_unreachable_alias_pairs.
      	* varasm.c (do_assemble_alias): Export.
      	(symbol_alias_set_create, symbol_alias_set_destroy, symbol_alias_set_contains,
      	symbol_alias_set_insert, propagate_aliases_forward, propagate_aliases_backward,
      	propagate_aliases_backward, trivially_visible_alias, trivially_defined_alias,
      	remove_unreachable_alias_pairs, finish_aliases_1, finish_aliases_2, 
      	assemble_alias): Remove.
      	* output.h (do_assemble_alias): Declare.
      	* varpool.c (varpool_remove_unreferenced_decls): Do not call finish_aliases_1.
      
      From-SVN: r187823
      Jan Hubicka committed
    • Daily bump. · 0f4fb41f
      From-SVN: r187822
      GCC Administrator committed
  2. 23 May, 2012 14 commits
  3. 22 May, 2012 10 commits