gcc.git
12 years agore PR target/50106 ([ARM] Wrong code with -march=armv5t -mthumb -Os)
Ramana Radhakrishnan [Thu, 20 Oct 2011 09:07:30 +0000 (09:07 +0000)]
re PR target/50106 ([ARM] Wrong code with -march=armv5t -mthumb -Os)

2011-10-20  Ramana Radhakrishnan  <ramana.radhakrishnan@linaro.org>

       PR target/50106
       * config/arm/arm.c (thumb_unexpanded_epilogue): Handle return
reg size from 1-3.

From-SVN: r180240

12 years agoFix thinko in _cpp_remaining_tokens_num_in_context
Dodji Seketeli [Thu, 20 Oct 2011 08:49:29 +0000 (08:49 +0000)]
Fix thinko in _cpp_remaining_tokens_num_in_context

libcpp/

* lex.c (_cpp_remaining_tokens_num_in_context): Fix computation of
number of tokens.

From-SVN: r180239

12 years agotree-ssa-loop-im.c (stmt_cost): Add WIDEN_*, FMA_EXPR and rotates to the set of expen...
Richard Guenther [Thu, 20 Oct 2011 07:57:48 +0000 (07:57 +0000)]
tree-ssa-loop-im.c (stmt_cost): Add WIDEN_*, FMA_EXPR and rotates to the set of expensive operations.

2011-10-20  Richard Guenther  <rguenther@suse.de>

* tree-ssa-loop-im.c (stmt_cost): Add WIDEN_*, FMA_EXPR
and rotates to the set of expensive operations.

From-SVN: r180237

12 years agoFix minor issues
Eric Botcazou [Thu, 20 Oct 2011 06:18:09 +0000 (06:18 +0000)]
Fix minor issues

From-SVN: r180236

12 years agoUse can_create_pseudo_p() in the sparc backend.
David S. Miller [Thu, 20 Oct 2011 04:16:45 +0000 (04:16 +0000)]
Use can_create_pseudo_p() in the sparc backend.

gcc/

* config/sparc/sparc.c (sparc_expand_move): Use
can_create_pseudo_p.
(sparc_emit_set_const32): Likewise.
(sparc_emit_set_const64_longway): Likewise.
(sparc_emit_set_const64): Likewise.
(sparc_legitimize_pic_address): Likewise.
(memory_ok_for_ldd): Likewise.

From-SVN: r180235

12 years agoprofile.c (compute_branch_probabilities): Compute and dump the overlap between the...
Dehao Chen [Thu, 20 Oct 2011 00:39:12 +0000 (00:39 +0000)]
profile.c (compute_branch_probabilities): Compute and dump the overlap between the static estimation and the...

2011-10-20  Dehao Chen  <dehao@google.com>

* profile.c (compute_branch_probabilities): Compute and dump the
overlap between the static estimation and the instrumentation profile.
(OVERLAP_BASE): New macro.
(compute_frequency_overlap): New function

From-SVN: r180233

12 years agoDaily bump.
GCC Administrator [Thu, 20 Oct 2011 00:18:36 +0000 (00:18 +0000)]
Daily bump.

From-SVN: r180232

12 years agore PR c++/13657 (Error message incorrectly describes return type as argument type)
Paolo Carlini [Wed, 19 Oct 2011 22:45:58 +0000 (22:45 +0000)]
re PR c++/13657 (Error message incorrectly describes return type as argument type)

/cp
2011-10-19  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/13657
* class.c (instantiate_type): Fix error message.

/testsuite
2011-10-19  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/13657
* g++.dg/parse/error42.C: New.
* g++.old-deja/g++.other/ptrmem7.C: Tweak dg-errors.

From-SVN: r180228

12 years agore PR c++/50793 (G++ doesn't value-initialize all members of non-trivial type in...
Jason Merrill [Wed, 19 Oct 2011 22:29:15 +0000 (18:29 -0400)]
re PR c++/50793 (G++ doesn't value-initialize all members of non-trivial type in default argument)

PR c++/50793
* tree.c (bot_manip): Propagate AGGR_INIT_ZERO_FIRST.

From-SVN: r180227

12 years agoi386.c (expand_vec_perm_vpshufb2_vpermq_even_odd): Use d->op1 instead of d->op0 for...
Jakub Jelinek [Wed, 19 Oct 2011 22:08:21 +0000 (00:08 +0200)]
i386.c (expand_vec_perm_vpshufb2_vpermq_even_odd): Use d->op1 instead of d->op0 for the second vpshufb.

* config/i386/i386.c (expand_vec_perm_vpshufb2_vpermq_even_odd): Use
d->op1 instead of d->op0 for the second vpshufb.
(expand_vec_perm_even_odd_1): For V8SImode fix vpshufd immediates.
(ix86_expand_vec_perm_const): If mask indicates two operands are
needed, but both are the same and expanding them as d.op0 == d.op1
failed, retry with d.op0 != d.op1.
(ix86_expand_vec_perm_builtin): Likewise.  Handle sorry printing
also for d.nelt == 32.

* gcc.dg/torture/vshuf-32.inc: Add interleave permutations.
* gcc.dg/torture/vshuf-16.inc: Likewise.
* gcc.dg/torture/vshuf-8.inc: Likewise.
* gcc.dg/torture/vshuf-4.inc: Likewise.

From-SVN: r180212

12 years ago[multiple changes]
Benjamin Kosnik [Wed, 19 Oct 2011 22:05:26 +0000 (22:05 +0000)]
[multiple changes]

2011-10-19  Ed Smith-Rowland  <3dw4rd@verizon.net>

* include/tr2/bool_set (bool_set): New.
* include/tr2/bool_set.tcc: New.
* include/tr2/dynamic_bitset (dynamic_bitset): New.
* include/tr2/ratio (kibi, mebi, gibi, tebi, pebi, exbi): New.
* include/Makefile.am: Add files.
* include/Makefile.in: Regenerate.

2011-10-19  Benjamin Kosnik  <bkoz@redhat.com>

* doc/doxygen/user.cfg.in: Add tr2 files.
* testsuite/tr2/headers/all.cc: New.
* testsuite/tr2/headers/using_namespace_std_tr2.cc: New.

* include/tr2/type_traits: Tweak.

From-SVN: r180211

12 years agore PR fortran/47023 (C_Sizeof: Rejects valid code)
Janus Weil [Wed, 19 Oct 2011 22:05:23 +0000 (00:05 +0200)]
re PR fortran/47023 (C_Sizeof: Rejects valid code)

2011-10-19  Janus Weil  <janus@gcc.gnu.org>

PR fortran/47023
* check.c (gfc_check_sizeof): Reject procedures as argument of SIZEOF.
* intrinsinc.texi (SIZEOF): Document it.
(STORAGE_SIZE): Fix special characters. Fix line breaks.

2011-10-19  Janus Weil  <janus@gcc.gnu.org>

PR fortran/47023
* gfortran.dg/sizeof_proc.f90: New.

From-SVN: r180210

12 years agostruct-layout-1_generate.c: Also pass -mno-mmx -Wno-abi for i?86-*-mingw32* x86_64...
Joseph Myers [Wed, 19 Oct 2011 21:25:52 +0000 (22:25 +0100)]
struct-layout-1_generate.c: Also pass -mno-mmx -Wno-abi for i?86-*-mingw32* x86_64-*-mingw32* i?86-*-cygwin*.

* g++.dg/compat/struct-layout-1_generate.c: Also pass -mno-mmx
-Wno-abi for i?86-*-mingw32* x86_64-*-mingw32* i?86-*-cygwin*.

From-SVN: r180208

12 years agore PR testsuite/50796 (FAIL: gcc.dg/plugin/plugindir[1234].c)
Uros Bizjak [Wed, 19 Oct 2011 21:05:23 +0000 (23:05 +0200)]
re PR testsuite/50796 (FAIL: gcc.dg/plugin/plugindir[1234].c)

PR testsuite/50796
* gcc.dg/plugin/plugindir?.c Update dg_prune_output.

From-SVN: r180207

12 years agore PR c++/50787 (reference fails to bind directly to variable)
Jason Merrill [Wed, 19 Oct 2011 20:42:50 +0000 (16:42 -0400)]
re PR c++/50787 (reference fails to bind directly to variable)

PR c++/50787
* g++.dg/init/ref20.C: New.

From-SVN: r180206

12 years agore PR middle-end/50754 (ICE in expand_debug_expr, at cfgexpand.c:3341)
Jakub Jelinek [Wed, 19 Oct 2011 19:31:14 +0000 (21:31 +0200)]
re PR middle-end/50754 (ICE in expand_debug_expr, at cfgexpand.c:3341)

PR middle-end/50754
* cfgexpand.c (expand_debug_expr): Handle WIDEN_LSHIFT_EXPR, ignore
VEC_PERM_EXPR.

From-SVN: r180201

12 years agore PR middle-end/50795 (FAIL: gcc.dg/tree-ssa/builtin-expect-[1234].c)
Kai Tietz [Wed, 19 Oct 2011 17:44:35 +0000 (19:44 +0200)]
re PR middle-end/50795 (FAIL: gcc.dg/tree-ssa/builtin-expect-[1234].c)

        PR middle-end/50795
        * gcc.dg/tree-ssa/builtin-expect-1.c: Adjust test.
        * gcc.dg/tree-ssa/builtin-expect-2.c: Adjust test.
        * gcc.dg/tree-ssa/builtin-expect-3.c: Adjust test.
        * gcc.dg/tree-ssa/builtin-expect-4.c: Adjust test.
        * gcc.dg/tree-ssa/builtin-expect-5.c: Adjust test.

From-SVN: r180200

12 years agoregrename.h: New file.
Bernd Schmidt [Wed, 19 Oct 2011 17:26:26 +0000 (17:26 +0000)]
regrename.h: New file.

* regrename.h: New file.
* regrename.c: Include it.  Also include "emit-rtl.h".
(struct du_head, struct du_chain, du_head_p DEF_VEC and
DEF_VEC_ALLOC_P): Move to regrename.h.
(do_replace): Remove declaration.
(insn_rr): New variable.
(cur_operand): New static variable.
(regrename_chain_from_id): Renamed from chain_from_id and no longer
static.  All callers changed.
(record_operand_use): New static function.
(scan_rtx_reg): Use it.
(find_best_rename_reg): New function, broken out of rename_chains.
(rename_chains): Use it.  Don't update chain regno and nregs here, ...
(regrename_do_replace): ... do it here instead.  Renamed from
do_replace, and no longer static.  All callers changed.
(regrename_analyze): No longer static.  New arg bb_mask.
All callers changed.  If bb_mask is nonzero, use it to limit the
number of basic blocks we analyze.  If we failed to analyze a block,
clear insn operand data.
(record_out_operands): New arg insn_info.  Update cur_operand if it is
nonnull.
(build_def_use): If insn_rr is nonnull, pass an insn_info to
record_out_operands, and update cur_operand here as well.
(regrename_init, regrename_finish): New functions.
(regrename_optimize): Use them.
* Makefile.in (regrename.o): Adjust dependencies.

From-SVN: r180198

12 years agore PR tree-optimization/50769 (ICE: in phi_alternatives_equal, at tree-cfgcleanup...
Tom de Vries [Wed, 19 Oct 2011 16:29:42 +0000 (16:29 +0000)]
re PR tree-optimization/50769 (ICE: in phi_alternatives_equal, at tree-cfgcleanup.c:355 with -O2 -fno-delete-null-pointer-checks -fno-guess-branch-probability -fipa-pta)

2011-10-19  Tom de Vries  <tom@codesourcery.com>

PR tree-optimization/50769
* tree-ssa-tail-merge.c (replace_block_by): Calculate phi_vuse2
unconditionally.  Handle case that phi_vuse2 is not an SSA_NAME.  Add
dummy argument .MEM to phi when increasing number of arguments of phi by
redirecting edges to the block with phi.

From-SVN: r180197

12 years agoProperly test for madvise on Solaris 10 (PR bootstrap/50777)
Rainer Orth [Wed, 19 Oct 2011 16:02:30 +0000 (16:02 +0000)]
Properly test for madvise on Solaris 10 (PR bootstrap/50777)

PR bootstrap/50777
* configure.ac: Save and restore CXXFLAGS around
gcc_AC_CHECK_DECLS uses.
Check for madvise() declaration with g++ if --enable-build-with-cxx.
* configure: Regenerate.
* config.in: Regenerate.
* ggc-page.c (USING_MADVISE): Also check HAVE_DECL_MADVISE.

From-SVN: r180195

12 years agore PR middle-end/49310 (Compile time hog in var-tracking emit)
Alexandre Oliva [Wed, 19 Oct 2011 15:50:00 +0000 (15:50 +0000)]
re PR middle-end/49310 (Compile time hog in var-tracking emit)

PR debug/49310
* var-tracking.c (loc_exp_dep, onepart_aux): New structs.
(variable_part): Replace offset with union.
(enum onepart_enum, onepart_enum_t): New.
(variable_def): Drop cur_loc_changed, add onepart.
(value_chain_def, const_value_chain): Remove.
(VAR_PART_OFFSET, VAR_LOC_1PAUX): New macros, with checking.
(VAR_LOC_DEP_LST, VAR_LOC_DEP_LSTP): New macros.
(VAR_LOC_FROM, VAR_LOC_DEPTH, VAR_LOC_DEP_VEC): Likewise.
(value_chain_pool, value_chains): Remove.
(dropped_values): New.
(struct parm_reg): Only if HAVE_window_save.
(vt_stack_adjustments): Don't record register arguments.
(dv_as_rtx): New.
(dv_onepart_p): Return a onepart_enum_t.
(onepart_pool): New.
(dv_pool): Remove.
(dv_from_rtx): New.
(variable_htab_free): Release onepart aux data.  Reset flags.
(value_chain_htab_hash, value_chain_htab_eq): Remove.
(unshare_variable): Use onepart field.  Propagate onepart aux
data or offset.  Drop cur_loc_changed.
(val_store): Cope with NULL insn.  Rephrase dump output.  Check
for unsuitable locs.  Add FIXME on using cselib locs.
(val_reset): Remove FIXME of unfounded concerns.
(val_resolve): Check for unsuitable locs.  Add FIXME on using
cselib locs.
(variable_union): Use onepart field, adjust access to offset.
(NO_LOC_P): New.
(VALUE_CHANGED, DECL_CHANGED): Update doc.
(set_dv_changed): Clear NO_LOC_P when changed.
(find_loc_in_1pdv): Use onepart field.
(intersect_loc_chains): Likewise.
(unsuitable_loc): New.
(loc_cmp): Keep ENTRY_VALUEs at the end of the loc list.
(add_value_chain, add_value_chains): Remove.
(add_cselib_value_chains, remove_value_chain): Likewise.
(remove_value_chains, remove_cselib_value_chains): Likewise.
(canonicalize_loc_order_check): Use onepart.  Drop cur_loc_changed.
(canonicalize_values_star, canonicalize_vars_star): Use onepart.
(variable_merge_over_cur): Likewise.  Adjust access to offset.
Drop cur_loc_changed.
(variable_merge_over_src): Use onepart field.
(remove_duplicate_values): Likewise.
(variable_post_merge_new_vals): Likewise.
(find_mem_expr_in_1pdv): Likewise.
(dataflow_set_preserve_mem_locs): Likewise.  Drop cur_loc_changed
and value chains.
(dataflow_set_remove_mem_locs): Likewise.  Use VAR_LOC_FROM.
(variable_different_p): Use onepart field.  Move onepart test out
of the loop.
(argument_reg_set): Drop.
(add_uses, add_stores): Preserve but do not record in dynamic
tables equivalences for ENTRY_VALUEs and CFA_based addresses.
Avoid unsuitable address expressions.
(EXPR_DEPTH): Unlimit.
(EXPR_USE_DEPTH): Repurpose PARAM_MAX_VARTRACK_EXPR_DEPTH.
(prepare_call_arguments): Use DECL_RTL_IF_SET.
(dump_var): Adjust access to offset.
(variable_from_dropped, recover_dropped_1paux): New.
(variable_was_changed): Drop cur_loc_changed.  Use onepart.
Preserve onepart aux in empty_var.  Recover empty_var and onepart
aux from dropped_values.
(find_variable_location_part): Special-case onepart.  Adjust
access to offset.
(set_slot_part): Use onepart.  Drop cur_loc_changed.  Adjust
access to offset.  Initialize onepaux.  Drop value chains.
(delete_slot_part): Drop value chains.  Use VAR_LOC_FROM.
(VEC (variable, heap), VEC (rtx, stack)): Define.
(expand_loc_callback_data): Drop dummy, cur_loc_changed,
ignore_cur_loc.  Add expanding, pending, depth.
(loc_exp_dep_alloc, loc_exp_dep_clear): New.
(loc_exp_dep_insert, loc_exp_dep_set): New.
(notify_dependents_of_resolved_value): New.
(update_depth, vt_expand_var_loc_chain): New.
(vt_expand_loc_callback): Revamped.
(resolve_expansions_pending_recursion): New.
(INIT_ELCD, FINI_ELCD): New.
(vt_expand_loc): Use the new macros above.  Drop ignore_cur_loc
parameter, adjust all callers.
(vt_expand_loc_dummy): Drop.
(vt_expand_1pvar): New.
(emit_note_insn_var_location): Operate on non-debug decls only.
Revamp multi-part cur_loc recomputation and one-part expansion.
Drop cur_loc_changed.  Adjust access to offset.
(VEC (variable, heap)): Drop.
(changed_variables_stack, changed_values_stack): Drop.
(check_changed_vars_0, check_changed_vars_1): Remove.
(check_changed_vars_2, check_changed_vars_3): Remove.
(values_to_stack, remove_value_from_changed_variables): New.
(notify_dependents_of_changed_value, process_changed_values): New.
(emit_notes_for_changes): Revamp onepart updates.
(emit_notes_for_differences_1): Use onepart.  Drop cur_loc_changed
and value chains.  Propagate onepaux.  Recover empty_var and onepaux
from dropped_values.
(emit_notes_for_differences_2): Drop value chains.
(emit_notes_in_bb): Adjust.
(vt_emit_notes): Drop value chains, changed_variables_stack.
Initialize and release dropped_values.
(create_entry_value): Revamp.
(vt_add_function_parameter): Use new interface.
(note_register_arguments): Remove.
(vt_initialize): Drop value chains and register arguments.
(vt_finalize): Drop value chains.  Release windowed_parm_regs only
if HAVE_window_save.
* rtl.h: Document various pass-local uses of RTL flags.
* tree.h (DECL_RTL_KNOWN_SET): New.
* doc/invoke.texi (param max-vartrack-expr-depth): Update
description and default.

From-SVN: r180194

12 years agore PR target/50447 ([avr] Better support of AND, OR, XOR and PLUS with constant integ...
Georg-Johann Lay [Wed, 19 Oct 2011 14:59:00 +0000 (14:59 +0000)]
re PR target/50447 ([avr] Better support of AND, OR, XOR and PLUS with constant integers for 16- and 32-bit values)

PR target/50447
* config/avr/avr.md (cc): New alternative out_plus_noclobber.
(adjust_len): Ditto.
(addhi3): Don't pipe through short; use gen_int_mode instead.
Prior to reload, expand to gen_addhi3_clobber.
(*addhi3): Use avr_out_plus_noclobber if applicable, use
out_plus_noclobber in cc and adjust_len attribute.
(addhi3_clobber): 2 new RTL peepholes.
(addhi3_clobber): New insn.
* config/avr/avr-protos.h: (avr_out_plus_noclobber): New prototype.
* config/avr/avr.c (avr_out_plus_noclobber): New function.
(notice_update_cc): Handle CC_OUT_PLUS_NOCLOBBER.
(avr_out_plus_1): Tweak if only MSB is +/-1 and other bytes are 0.
Set cc0 to set_zn for adiw on 16-bit values.
(adjust_insn_length): Handle ADJUST_LEN_OUT_PLUS_NOCLOBBER.
(expand_epilogue): No need to add 0 to frame_pointer_rtx.

From-SVN: r180193

12 years agore PR tree-optimization/50780 (ICE: verify_gimple failed: invalid operands in ternary...
Richard Guenther [Wed, 19 Oct 2011 14:54:34 +0000 (14:54 +0000)]
re PR tree-optimization/50780 (ICE: verify_gimple failed: invalid operands in ternary operation with -ftree-vectorize -fnon-call-exceptions)

2011-10-19  Richard Guenther  <rguenther@suse.de>

PR middle-end/50780
* tree-ssa-forwprop.c (forward_propagate_into_cond): Verify
the condition is properly gimple before using it.
* tree-eh (stmt_could_throw_1_p): Properly extract the
operation type from comparisons.

From-SVN: r180192

12 years ago[multiple changes]
Roland Stigge [Wed, 19 Oct 2011 13:20:22 +0000 (13:20 +0000)]
[multiple changes]

2011-10-19  Roland Stigge  <stigge@antcom.de>

PR translation/48638
* plugin.c (add_new_plugin): Fix typo in fatal_error message.

2011-10-19  Roland Stigge  <stigge@antcom.de>

PR translation/49517
* config/rx/rx.c (rx_print_operand): Fix typo in warning message.

/cp
2011-10-19  Roland Stigge  <stigge@antcom.de>

PR translation/49704
* semantics.c (potential_constant_expression_1): Use "AST" instead of
"ast" in sorry message.

From-SVN: r180188

12 years agore PR tree-optimization/50768 (ICE: in execute_todo, at passes.c:1731 with -O2 -ftracer)
Richard Guenther [Wed, 19 Oct 2011 12:59:21 +0000 (12:59 +0000)]
re PR tree-optimization/50768 (ICE: in execute_todo, at passes.c:1731 with -O2 -ftracer)

2011-10-19  Richard Guenther  <rguenther@suse.de>

PR middle-end/50768
* gimple-fold.c (gimplify_and_update_call_from_tree): Rewrite.

* gcc.dg/torture/pr50768.c: New testcase.

From-SVN: r180187

12 years agore PR rtl-optimization/50340 (Fails to build SPEC 2000 176.gcc)
Alexander Monakov [Wed, 19 Oct 2011 12:46:44 +0000 (16:46 +0400)]
re PR rtl-optimization/50340 (Fails to build SPEC 2000 176.gcc)

2011-10-19  Andrey Belevantsev  <abel@ispras.ru>

PR rtl-optimization/50340
* sel-sched-ir.c (update_target_availability): LHS register
availability is not known if the unavailable LHS of the other
expression is a different register.

* gcc.dg/pr50340.c: New.

From-SVN: r180186

12 years agore PR c++/38761 (%s substituted with regular word can't be properly translated)
Paolo Carlini [Wed, 19 Oct 2011 12:46:42 +0000 (12:46 +0000)]
re PR c++/38761 (%s substituted with regular word can't be properly translated)

2011-10-19  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/38761
PR c++/40872
* decl.c (duplicate_decls, make_typename_type, grokdeclarator): Use
G_() in error message strings to facilitate translation.
* semantics.c (finish_id_expression): Likewise.
* parser.c (cp_parser_nested_name_specifier_opt,
cp_parser_parameter_declaration): Likewise.

From-SVN: r180185

12 years agore PR target/50310 (ICE: in gen_vcondv2div2df, at config/i386/sse.md:1435 with -O...
Ulrich Weigand [Wed, 19 Oct 2011 12:17:35 +0000 (12:17 +0000)]
re PR target/50310 (ICE: in gen_vcondv2div2df, at config/i386/sse.md:1435 with -O -ftree-vectorize and __builtin_isunordered())

PR target/50310
* config/spu/spu.c (spu_emit_vector_compare): Support unordered
floating-point comparisons.

From-SVN: r180184

12 years agoOops, old revision of patch..
Jan Hubicka [Wed, 19 Oct 2011 11:39:00 +0000 (11:39 +0000)]
Oops, old revision of patch..

From-SVN: r180182

12 years agocgraphunit.c (handle_alias_pairs): Also handle wekref with destination declared.
Jan Hubicka [Wed, 19 Oct 2011 10:27:50 +0000 (12:27 +0200)]
cgraphunit.c (handle_alias_pairs): Also handle wekref with destination declared.

* cgraphunit.c (handle_alias_pairs): Also handle wekref with destination
declared.
(output_weakrefs): New function.
* varpool.c (varpool_create_variable_alias): Handle external aliases.

From-SVN: r180181

12 years agodwarf2out.c (loc_descriptor): For SUBREG pass SUBREG_REG's mode as second argument...
Jakub Jelinek [Wed, 19 Oct 2011 08:43:09 +0000 (10:43 +0200)]
dwarf2out.c (loc_descriptor): For SUBREG pass SUBREG_REG's mode as second argument instead of mode.

* dwarf2out.c (loc_descriptor): For SUBREG pass SUBREG_REG's mode as
second argument instead of mode.

From-SVN: r180178

12 years agoDaily bump.
GCC Administrator [Wed, 19 Oct 2011 00:18:47 +0000 (00:18 +0000)]
Daily bump.

From-SVN: r180173

12 years agoi386.c (ix86_expand_vec_perm): In merge_two use mode SUBREG of operands[0] as target.
Jakub Jelinek [Tue, 18 Oct 2011 21:27:40 +0000 (23:27 +0200)]
i386.c (ix86_expand_vec_perm): In merge_two use mode SUBREG of operands[0] as target.

* config/i386/i386.c (ix86_expand_vec_perm): In merge_two use
mode SUBREG of operands[0] as target.
(valid_perm_using_mode_p): Don't ignore higher bits of d->perm.
(expand_vec_pshufb): For V8SImode vmode emit avx2_permvarv8si.
(expand_vec_perm_1): Handle identity and some broadcast
permutations.
(expand_vec_perm_interleave2): Handle also 32-byte modes, using
vperm2[fi]128 or vpunpck[lh]* followed by single insn permutation.
For d->testing_p return true earlier to avoid creating more GC
garbage.
(expand_vec_perm_vpermq_perm_1): New function.
(expand_vec_perm_vpshufb2_vpermq): For d->testing_p return true
earlier to avoid creating more GC garbage.  Fix handling of
V16HImode.  Avoid some SUBREGs in SET_DEST.
(expand_vec_perm_broadcast_1): Return false for 32-byte integer
vector modes.
(expand_vec_perm_vpshufb4_vpermq2): New function.
(ix86_expand_vec_perm_builtin_1): Call expand_vec_perm_vpermq_perm_1
and expand_vec_perm_vpshufb4_vpermq2.

From-SVN: r180169

12 years agoCommit correct version of previous patch.
Andrew Stubbs [Tue, 18 Oct 2011 20:40:21 +0000 (20:40 +0000)]
Commit correct version of previous patch.

2011-10-18  Andrew Stubbs  <ams@codesourcery.com>

gcc/
* config/arm/driver-arm.c (host_detect_local_cpu): Close the file
before exiting.

From-SVN: r180168

12 years agodriver-arm.c (host_detect_local_cpu): Close the file before exiting.
Andrew Stubbs [Tue, 18 Oct 2011 20:33:00 +0000 (20:33 +0000)]
driver-arm.c (host_detect_local_cpu): Close the file before exiting.

2011-10-18  Andrew Stubbs  <ams@codesourcery.com>

gcc/
* config/arm/driver-arm.c (host_detect_local_cpu): Close the file
before exiting.

From-SVN: r180167

12 years agore PR tree-optimization/50717 (Silent code gen fault with incorrect widening of multiply)
Andrew Stubbs [Tue, 18 Oct 2011 19:57:15 +0000 (19:57 +0000)]
re PR tree-optimization/50717 (Silent code gen fault with incorrect widening of multiply)

2011-10-18  Andrew Stubbs  <ams@codesourcery.com>

PR tree-optimization/50717

gcc/
* tree-ssa-math-opts.c (is_widening_mult_p): Remove the 'type'
parameter.  Calculate 'type' from stmt.
(convert_mult_to_widen): Update call the is_widening_mult_p.
(convert_plusminus_to_widen): Likewise.

gcc/testsuite/
* gcc.dg/pr50717-1.c: New file.
* gcc.target/arm/wmul-12.c: Correct types.
* gcc.target/arm/wmul-8.c: Correct types.

From-SVN: r180164

12 years agore PR c++/50531 ([C++0x] ICE on defaulted template destructor)
Jason Merrill [Tue, 18 Oct 2011 19:36:28 +0000 (15:36 -0400)]
re PR c++/50531 ([C++0x] ICE on defaulted template destructor)

PR c++/50531
* pt.c (instantiate_decl): Recognize when a function defaulted
outside the class is already instantiated.

From-SVN: r180162

12 years agore PR c++/50742 (tree check fail in check_previous_goto_1)
Jason Merrill [Tue, 18 Oct 2011 17:39:31 +0000 (13:39 -0400)]
re PR c++/50742 (tree check fail in check_previous_goto_1)

PR c++/50742
* decl.c (check_previous_goto_1): Handle using-decl.

From-SVN: r180160

12 years agore PR c++/50500 ([C++0x] [DR 1082] move constructor should cause copy constructor...
Jason Merrill [Tue, 18 Oct 2011 17:39:15 +0000 (13:39 -0400)]
re PR c++/50500 ([C++0x] [DR 1082] move constructor should cause copy constructor to be deleted, but still declared)

PR c++/50500
DR 1082
* class.c (type_has_user_declared_move_constructor): New.
(type_has_user_declared_move_assign): New.
(add_implicitly_declared_members): Add lazy copy ops
even if there's a move.
* method.c (lazily_declare_fn): Delete implicit copies
if there's a move.
(maybe_explain_implicit_delete): Explain this.  Use inform rather
than error.
* cp-tree.h: Declare new fns.

From-SVN: r180159

12 years agospu.c (struct machine_function): New data structure.
Ulrich Weigand [Tue, 18 Oct 2011 15:48:49 +0000 (15:48 +0000)]
spu.c (struct machine_function): New data structure.

* config/spu/spu.c (struct machine_function): New data structure.
(spu_init_machine_status): New function.
(spu_option_override): Install it.
(get_pic_reg): Set and use cfun->machine->pic_reg.
(spu_split_immediate): Do not set crtl->uses_pic_offset_table.
(need_to_save_reg): Use cfun->machine->pic_reg instead of
checking crtl->uses_pic_offset_table.
(spu_expand_prologue): Likewise.

From-SVN: r180156

12 years agoAdd some tests for AVX2 vectorizer.
Kirill Yukhin [Tue, 18 Oct 2011 15:41:27 +0000 (15:41 +0000)]
Add some tests for AVX2 vectorizer.

2011-10-18  Kirill Yukhin  <kirill.yukhin@intel.com>

* gcc.target/i386/avx2-vpop-check.h: New header.
* gcc.target/i386/avx2-vpaddd-3.c: New test.
* gcc.target/i386/avx2-vpaddw-3.c: Ditto.
* gcc.target/i386/avx2-vpaddb-3.c: Ditto.
* gcc.target/i386/avx2-vpaddq-3.c: Ditto.
* gcc.target/i386/avx2-vpand-3.c: Ditto.
* gcc.target/i386/avx2-vpmulld-3.c: Ditto.
* gcc.target/i386/avx2-vpmullw-3.c: Ditto.
* gcc.target/i386/avx2-vpsrad-3.c: Ditto.
* gcc.target/i386/avx2-vpsraw-3.c: Ditto.
* gcc.target/i386/avx2-vpsrld-3.c: Ditto.
* gcc.target/i386/avx2-vpsrlw-3.c: Ditto.
* gcc.target/i386/avx2-vpsubb-3.c: Ditto.
* gcc.target/i386/avx2-vpsubd-3.c: Ditto.
* gcc.target/i386/avx2-vpsubq-3.c: Ditto.
* gcc.target/i386/avx2-vpsubw-3.c: Ditto.

From-SVN: r180155

12 years agore PR tree-optimization/50735 (gcc.dg/torture/vector-2.c:52:1: ICE: verify_ssa failed...
Jakub Jelinek [Tue, 18 Oct 2011 15:33:12 +0000 (17:33 +0200)]
re PR tree-optimization/50735 (gcc.dg/torture/vector-2.c:52:1: ICE: verify_ssa failed at -O1 and above)

PR tree-optimization/50735
* function.c (gimplify_parameters): Use create_tmp_var instead of
create_tmp_reg.  If parm is not TREE_ADDRESSABLE and type is complex
or vector type, set DECL_GIMPLE_REG_P.

From-SVN: r180154

12 years agore PR fortran/50420 ([Coarray] lcobound doesn't accept coarray subcomponents)
Mikael Morin [Tue, 18 Oct 2011 15:23:04 +0000 (15:23 +0000)]
re PR fortran/50420 ([Coarray] lcobound doesn't accept coarray subcomponents)

PR fortran/50420
* gfortran.dg/coarray_subobject_1.f90: New test.
* gfortran.dg/coarray/subobject_1.f90: New test.

From-SVN: r180153

12 years agore PR fortran/50420 ([Coarray] lcobound doesn't accept coarray subcomponents)
Mikael Morin [Tue, 18 Oct 2011 15:17:29 +0000 (15:17 +0000)]
re PR fortran/50420 ([Coarray] lcobound doesn't accept coarray subcomponents)

PR fortran/50420
* trans.c (gfc_build_array_ref): If type is not an array, check that
there is nothing to do, and do nothing.

From-SVN: r180152

12 years agore PR fortran/50420 ([Coarray] lcobound doesn't accept coarray subcomponents)
Mikael Morin [Tue, 18 Oct 2011 15:13:45 +0000 (15:13 +0000)]
re PR fortran/50420 ([Coarray] lcobound doesn't accept coarray subcomponents)

PR fortran/50420
* trans-types.c (gfc_build_array_type): Don't force lower bound to one
in the deferred case.

From-SVN: r180151

12 years agore PR fortran/50420 ([Coarray] lcobound doesn't accept coarray subcomponents)
Mikael Morin [Tue, 18 Oct 2011 15:11:21 +0000 (15:11 +0000)]
re PR fortran/50420 ([Coarray] lcobound doesn't accept coarray subcomponents)

PR fortran/50420
* simplify.c (simplify_cobound): Accept non-last-in-ref-chain coarrays.
Don't set already set array ref.

From-SVN: r180150

12 years agoarray.c (gfc_find_array_ref): Remove coarray-specific handling.
Mikael Morin [Tue, 18 Oct 2011 15:08:08 +0000 (15:08 +0000)]
array.c (gfc_find_array_ref): Remove coarray-specific handling.

* array.c (gfc_find_array_ref): Remove coarray-specific handling.

From-SVN: r180149

12 years agore PR fortran/50420 ([Coarray] lcobound doesn't accept coarray subcomponents)
Mikael Morin [Tue, 18 Oct 2011 15:05:30 +0000 (15:05 +0000)]
re PR fortran/50420 ([Coarray] lcobound doesn't accept coarray subcomponents)

PR fortran/50420
* check.c (dim_corank_check): Use gfc_get_corank to get corank.

From-SVN: r180148

12 years agore PR fortran/50420 ([Coarray] lcobound doesn't accept coarray subcomponents)
Mikael Morin [Tue, 18 Oct 2011 15:02:38 +0000 (15:02 +0000)]
re PR fortran/50420 ([Coarray] lcobound doesn't accept coarray subcomponents)

PR fortran/50420
* trans-intrinsic.c (walk_coarray): Change AR_ELEMENT to AR_SECTION.

PR fortran/50420
* trans-intrinsic.c (walk_coarray): Use gfc_walk_array_ref for
the scalarization chain initialization.

From-SVN: r180147

12 years agore PR fortran/50420 ([Coarray] lcobound doesn't accept coarray subcomponents)
Mikael Morin [Tue, 18 Oct 2011 14:59:07 +0000 (14:59 +0000)]
re PR fortran/50420 ([Coarray] lcobound doesn't accept coarray subcomponents)

PR fortran/50420
* trans-intrinsic.c (walk_coarray): Allow subreferences after a
coarray object reference.

From-SVN: r180146

12 years agore PR fortran/50420 ([Coarray] lcobound doesn't accept coarray subcomponents)
Mikael Morin [Tue, 18 Oct 2011 14:55:48 +0000 (14:55 +0000)]
re PR fortran/50420 ([Coarray] lcobound doesn't accept coarray subcomponents)

PR fortran/50420
* trans-array.c (gfc_walk_array_ref): Allow zero rank arrays
if they are coarrays.

From-SVN: r180145

12 years agotrans-array.h (gfc_walk_array_ref): New prototype.
Mikael Morin [Tue, 18 Oct 2011 14:53:43 +0000 (14:53 +0000)]
trans-array.h (gfc_walk_array_ref): New prototype.

* trans-array.h (gfc_walk_array_ref): New prototype.
* trans-array.c (gfc_walk_array_ref): New function, containing
all but the beginning of gfc_walk_variable_expr's code.
(gfc_walk_variable_expr): Use gfc_walk_array_ref.

From-SVN: r180144

12 years agore PR fortran/50420 ([Coarray] lcobound doesn't accept coarray subcomponents)
Mikael Morin [Tue, 18 Oct 2011 14:45:46 +0000 (14:45 +0000)]
re PR fortran/50420 ([Coarray] lcobound doesn't accept coarray subcomponents)

PR fortran/50420
* trans-array.c (gfc_conv_expr_descriptor): Use loop.dimen instead of
ndim for the descriptor's rank.

From-SVN: r180143

12 years agore PR fortran/50420 ([Coarray] lcobound doesn't accept coarray subcomponents)
Mikael Morin [Tue, 18 Oct 2011 14:42:21 +0000 (14:42 +0000)]
re PR fortran/50420 ([Coarray] lcobound doesn't accept coarray subcomponents)

PR fortran/50420
* trans-array.c (gfc_conv_expr_descriptor): Count codimensions starting
from zero, and add then the relevant offset (either ndim or loop.dimen)
depending on context.

From-SVN: r180142

12 years agotrans-array.c (gfc_conv_expr_descriptor): Save some horizontal space.
Mikael Morin [Tue, 18 Oct 2011 14:37:39 +0000 (14:37 +0000)]
trans-array.c (gfc_conv_expr_descriptor): Save some horizontal space.

* trans-array.c (gfc_conv_expr_descriptor): Save some horizontal space.

From-SVN: r180141

12 years agotrans-array.c (gfc_conv_expr_descriptor): Move ndim initialization earlier.
Mikael Morin [Tue, 18 Oct 2011 14:32:03 +0000 (14:32 +0000)]
trans-array.c (gfc_conv_expr_descriptor): Move ndim initialization earlier.

* trans-array.c (gfc_conv_expr_descriptor): Move ndim initialization
earlier.

From-SVN: r180140

12 years agoconfig.host (arm*-*-linux*): Add driver-arm.o and x-arm.
Andrew Stubbs [Tue, 18 Oct 2011 14:14:14 +0000 (14:14 +0000)]
config.host (arm*-*-linux*): Add driver-arm.o and x-arm.

2011-10-18  Andrew Stubbs  <ams@codesourcery.com>

gcc/
* config.host (arm*-*-linux*): Add driver-arm.o and x-arm.
* config/arm/arm.opt: Add 'native' processor_type and
arm_arch enum values.
* config/arm/arm.h (host_detect_local_cpu): New prototype.
(EXTRA_SPEC_FUNCTIONS): New define.
(MCPU_MTUNE_NATIVE_SPECS): New define.
(DRIVER_SELF_SPECS): New define.
* config/arm/driver-arm.c: New file.
* config/arm/x-arm: New file.
* doc/invoke.texi (ARM Options): Document -mcpu=native,
-mtune=native and -march=native.

From-SVN: r180139

12 years agoparser.c: Remove ENABLE_CHECKING markers around debugging routines.
Diego Novillo [Tue, 18 Oct 2011 12:36:46 +0000 (08:36 -0400)]
parser.c: Remove ENABLE_CHECKING markers around debugging routines.

* parser.c: Remove ENABLE_CHECKING markers around debugging
routines.
(cp_lexer_dump_tokens): Add arguments START_TOKEN and CURR_TOKEN.
Make static
When printing CURR_TOKEN surround it in [[ ]].
Start printing at START_TOKEN.
Update all users.
(cp_debug_print_tree_if_set): New.
(cp_debug_print_context): New.
(cp_debug_print_context_stack): New.
(cp_debug_print_flag): New.
(cp_debug_print_unparsed_function): New.
(cp_debug_print_unparsed_queues): New.
(cp_debug_parser_tokens): New.
(cp_debug_parser): New.
(cp_lexer_start_debugging): Set cp_lexer_debug_stream to stderr.
(cp_lexer_stop_debugging): Set cp_lexer_debug_stream to NULL.
* parser.h (cp_lexer_dump_tokens): Remove declaration.
(cp_debug_parser): Declare.

From-SVN: r180136

12 years agore PR rtl-optimization/50205 (ICE: in code_motion_path_driver, at sel-sched.c:6581...
Alexander Monakov [Tue, 18 Oct 2011 12:36:16 +0000 (16:36 +0400)]
re PR rtl-optimization/50205 (ICE: in code_motion_path_driver, at sel-sched.c:6581 with -fselective-scheduling2 and custom flags)

PR rtl-optimization/50205
* sel-sched.c (count_occurrences_1): Simplify on the assumption that
p->x is a register.  Forbid substitution when the same register is
found in a different mode.
(count_occurrences_equiv): Assert that 'what' is a register.

* gcc.dg/pr50205.c: New.

From-SVN: r180135

12 years agore PR tree-optimization/50767 (ICE: in refs_may_alias_p_1, at tree-ssa-alias.c:1004...
Richard Guenther [Tue, 18 Oct 2011 11:44:15 +0000 (11:44 +0000)]
re PR tree-optimization/50767 (ICE: in refs_may_alias_p_1, at tree-ssa-alias.c:1004 with -O2 -fno-tree-copy-prop -fno-tree-dominator-opts)

2011-10-18  Richard Guenther  <rguenther@suse.de>

PR tree-optimization/50767
* tree-ssa-pre.c (create_expression_by_pieces): Update the
folded statement.

* gcc.dg/torture/pr50767.c: New testcase.

From-SVN: r180134

12 years agoIn gcc/objc/: 2011-10-18 Mikael Pettersson <mikpe@it.uu.se>
Mikael Pettersson [Tue, 18 Oct 2011 11:31:45 +0000 (13:31 +0200)]
In gcc/objc/: 2011-10-18 Mikael Pettersson <mikpe@it.uu.se>

In gcc/objc/:
2011-10-18  Mikael Pettersson  <mikpe@it.uu.se>

PR objc/50743
* objc-act.c (check_duplicates): Cast TREE_VEC_LENGTH result to
size_t to avoid signed/unsigned
comparison.
(insert_method_into_method_map): Likewise.

From-SVN: r180132

12 years agogcc/
Julian Brown [Tue, 18 Oct 2011 10:49:44 +0000 (10:49 +0000)]
gcc/
    * config/arm/arm.c (arm_block_move_unaligned_straight)
    (arm_adjust_block_mem, arm_block_move_unaligned_loop)
    (arm_movmemqi_unaligned): New.
    (arm_gen_movmemqi): Support unaligned block copies.

    gcc/testsuite/
    * lib/target-supports.exp (check_effective_target_arm_unaligned):
    New.
    * gcc.target/arm/unaligned-memcpy-1.c: New.
    * gcc.target/arm/unaligned-memcpy-2.c: New.
    * gcc.target/arm/unaligned-memcpy-3.c: New.
    * gcc.target/arm/unaligned-memcpy-4.c: New.

From-SVN: r180131

12 years agore PR fortran/47023 (C_Sizeof: Rejects valid code)
Janus Weil [Tue, 18 Oct 2011 10:48:12 +0000 (12:48 +0200)]
re PR fortran/47023 (C_Sizeof: Rejects valid code)

2011-10-18  Janus Weil  <janus@gcc.gnu.org>

PR fortran/47023
* decl.c (verify_c_interop_param): Renamed to
'gfc_verify_c_interop_param'. Add error message for polymorphic
arguments.
(verify_c_interop): Renamed to 'gfc_verify_c_interop'. Reject
polymorphic variables.
(verify_bind_c_sym): Renamed 'verify_c_interop'.
* gfortran.h (verify_c_interop,verify_c_interop_param): Renamed.
* check.c (gfc_check_sizeof): Ditto.
* resolve.c (gfc_iso_c_func_interface,resolve_fl_procedure): Ditto.
* symbol.c (verify_bind_c_derived_type): Ditto.

2011-10-18  Janus Weil  <janus@gcc.gnu.org>

PR fortran/47023
* gfortran.dg/iso_c_binding_class.f03: New.

From-SVN: r180130

12 years ago2011-10-18 Paolo Carlini <paolo.carlini@oracle.com>
Paolo Carlini [Tue, 18 Oct 2011 09:50:47 +0000 (09:50 +0000)]
2011-10-18  Paolo Carlini  <paolo.carlini@oracle.com>

* Fix ChangeLogs.

From-SVN: r180129

12 years agomd.texi (vec_widen_ushiftl_hi, [...]): Document.
Ira Rosen [Tue, 18 Oct 2011 09:39:04 +0000 (09:39 +0000)]
md.texi (vec_widen_ushiftl_hi, [...]): Document.

* doc/md.texi (vec_widen_ushiftl_hi, vec_widen_ushiftl_lo,
vec_widen_sshiftl_hi, vec_widen_sshiftl_lo): Document.
* tree-pretty-print.c (dump_generic_node): Handle WIDEN_LSHIFT_EXPR,
VEC_WIDEN_LSHIFT_HI_EXPR and VEC_WIDEN_LSHIFT_LO_EXPR.
(op_code_prio): Likewise.
(op_symbol_code): Handle WIDEN_LSHIFT_EXPR.
* optabs.c (optab_for_tree_code): Handle
VEC_WIDEN_LSHIFT_HI_EXPR and VEC_WIDEN_LSHIFT_LO_EXPR.
(init-optabs): Initialize optab codes for vec_widen_u/sshiftl_hi/lo.
* optabs.h (enum optab_index): Add OTI_vec_widen_u/sshiftl_hi/lo.
* genopinit.c (optabs): Initialize the new optabs.
* expr.c (expand_expr_real_2): Handle
VEC_WIDEN_LSHIFT_HI_EXPR and VEC_WIDEN_LSHIFT_LO_EXPR.
* gimple-pretty-print.c (dump_binary_rhs): Likewise.
* tree-vectorizer.h (NUM_PATTERNS): Increase to 8.
* tree.def (WIDEN_LSHIFT_EXPR, VEC_WIDEN_LSHIFT_HI_EXPR,
VEC_WIDEN_LSHIFT_LO_EXPR): New.
* cfgexpand.c (expand_debug_expr): Handle new tree codes.
* tree-vect-patterns.c (vect_vect_recog_func_ptrs): Add
vect_recog_widen_shift_pattern.
(vect_handle_widen_mult_by_const): Rename...
(vect_handle_widen_op_by_const): ...to this.  Handle shifts.
Add a new argument, update documentation.
(vect_recog_widen_mult_pattern): Assume that only second
operand can be constant.  Update call to
vect_handle_widen_op_by_const.
(vect_recog_over_widening_pattern): Fix typo.
(vect_recog_widen_shift_pattern): New.
* tree-vect-stmts.c (vectorizable_type_promotion): Handle
widening shifts.
(supportable_widening_operation): Likewise.
* tree-inline.c (estimate_operator_cost): Handle new tree codes.
* tree-vect-generic.c (expand_vector_operations_1): Likewise.
* tree-cfg.c (verify_gimple_assign_binary): Likewise.
* config/arm/neon.md (neon_vec_<US>shiftl_<mode>): New.
(vec_widen_<US>shiftl_lo_<mode>, neon_vec_<US>shiftl_hi_<mode>,
vec_widen_<US>shiftl_hi_<mode>, neon_vec_<US>shift_left_<mode>):
Likewise.
* config/arm/predicates.md (const_neon_scalar_shift_amount_operand):
New.
* config/arm/iterators.md (V_innermode): New.
* tree-vect-slp.c (vect_build_slp_tree): Require same shift operand
for widening shift.

From-SVN: r180128

12 years agotree-ssa-alias.h (struct pt_solution): Remove vars_contains_restrict member.
Richard Guenther [Tue, 18 Oct 2011 09:04:54 +0000 (09:04 +0000)]
tree-ssa-alias.h (struct pt_solution): Remove vars_contains_restrict member.

2011-10-18  Richard Guenther  <rguenther@suse.de>

* tree-ssa-alias.h (struct pt_solution): Remove
vars_contains_restrict member.
(pt_solutions_same_restrict_base): Remove.
(pt_solution_set): Adjust.
* tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Remove
vars_contains_restrict handling.
(dump_points_to_solution): Likewise.
(ptr_derefs_may_alias_p): Do not call pt_solutions_same_restrict_base.
* tree-ssa-structalias.c (struct variable_info): Remove is_restrict_var
field.
(new_var_info): Do not initialize it.
(ipa_escaped_pt): Adjust.
(make_constraint_from_restrict): Make the tag global.
(make_constraint_from_global_restrict): New function.
(make_constraint_from_heapvar): Remove.
(create_variable_info_for): Do not make restrict vars point
to NONLOCAL.
(intra_create_variable_infos): Likewise.
(find_what_var_points_to): Remove vars_contains_restrict handling.
(pt_solution_set): Adjust.
(pt_solution_ior_into): Likewise.
(pt_solutions_same_restrict_base): Remove.
(compute_points_to_sets): Do not test is_restrict_var.
* cfgexpand.c (update_alias_info_with_stack_vars): Adjust.
* gimple-pretty-print.c (pp_points_to_solution): Likewise.

* gcc.dg/torture/restrict-1.c: New testcase.

From-SVN: r180127

12 years agore PR tree-optimization/50672 (ice: verify_ssa failed: no immediate_use list)
Tom de Vries [Tue, 18 Oct 2011 08:57:39 +0000 (08:57 +0000)]
re PR tree-optimization/50672 (ice: verify_ssa failed: no immediate_use list)

2011-10-18  Tom de Vries  <tom@codesourcery.com>

PR tree-optimization/50672
* tree-ssa-dce.c (mark_virtual_operand_for_renaming): New function,
factored out of ...
(mark_virtual_phi_result_for_renaming): Use
mark_virtual_operand_for_renaming.
* tree-flow.h (mark_virtual_operand_for_renaming): Declare.
* tree-ssa-tail-merge.c (release_last_vdef): New function.
(purge_bbs): Add update_vops parameter.  Call release_last_vdef for each
deleted basic block.
(tail_merge_optimize): Add argument to call to purge_bbs.

From-SVN: r180126

12 years agore PR middle-end/50716 (Segmentation fault caused by misaligned vector access)
Richard Guenther [Tue, 18 Oct 2011 08:46:00 +0000 (08:46 +0000)]
re PR middle-end/50716 (Segmentation fault caused by misaligned vector access)

2011-10-18  Richard Guenther  <rguenther@suse.de>

PR middle-end/50716
* expr.c (get_object_or_type_alignment): New function.
(expand_assignment): Use it.
(expand_expr_real_1): Likewise.

From-SVN: r180125

12 years agoFix bootstrap on !NO_IMPLICIT_EXTERN_C and ia32 targets
Dodji Seketeli [Tue, 18 Oct 2011 08:44:49 +0000 (08:44 +0000)]
Fix bootstrap on !NO_IMPLICIT_EXTERN_C and ia32 targets

libcpp/

* include/line-map.h (struct linemap_stats): Change the type of
the members from size_t to long.
* macro.c (macro_arg_token_iter_init): Unconditionally initialize
iter->location_ptr.

gcc/c-family/

* c-lex.c (fe_file_change): Use LINEMAP_SYSP when
!NO_IMPLICIT_EXTERN_C.

gcc/
* input.c (dump_line_table_statistics): Use long, not size_t.

From-SVN: r180124

12 years agoRemove bogus line
Eric Botcazou [Tue, 18 Oct 2011 07:24:51 +0000 (07:24 +0000)]
Remove bogus line

From-SVN: r180123

12 years ago* config/sparc/sparc.md (in_call_delay): Fix formatting issues.
Eric Botcazou [Tue, 18 Oct 2011 07:20:38 +0000 (07:20 +0000)]
* config/sparc/sparc.md (in_call_delay): Fix formatting issues.

From-SVN: r180122

12 years ago[multiple changes]
Benjamin Kosnik [Tue, 18 Oct 2011 02:58:06 +0000 (02:58 +0000)]
[multiple changes]

2011-10-17  Michael Spertus  <mike_spertus@symantec.com>

* gcc/c-family/c-common.c (c_common_reswords): Add __bases,
__direct_bases.
* gcc/c-family/c-common.h: Add RID_BASES and RID_DIRECT_BASES.

2011-10-17  Michael Spertus  <mike_spertus@symantec.com>

* cp-tree.def: Add BASES as a new tree code.
* cp-tree.h (enum cp_trait_kind): Add CPTK_BASES, CPTK_DIRECT_BASES.
(BASES_TYPE, BASES_DIRECT): Define.
(calculate_bases, finish_bases, calculate_direct_bases): Declare.
* parser.c (cp_parser_trait_expr, cp_parser_template_argument_list,
(cp_parser_simple_type_specifier, cp_parser_save_nsdmi): Use them.
* pt.c (find_parameter_packs_r, tsubst_pack_expansion): Likewise.
* semantics.c (calculate_bases, finish_bases, calculate_direct_bases,
dfs_calculate_bases_pre, dfs_calculate_bases_post,
calculate_bases_helper): Define.

2011-10-17  Michael Spertus  <mike_spertus@symantec.com>

* g++.dg/ext/bases.C: New test.

2011-10-17  Michael Spertus  <mike_spertus@symantec.com>

* include/tr2/type_traits (bases, direct_bases, typelist): New.

2011-10-17  Benjamin Kosnik  <bkoz@redhat.com>

* libstdc++-v3/include/Makefile.am: Add tr2 directory and includes.
* libstdc++-v3/include/Makefile.in: Regenerate.

* scripts/create_testsuite_files: Search tr2 directory.
* testsuite/libstdc++-dg/conformance.exp: Same.

* testsuite/tr2/bases/requirements/explicit_instantiation.cc: New.
* testsuite/tr2/bases/requirements/typedefs.cc: New.
* testsuite/tr2/bases/value.cc: New.
* testsuite/tr2/direct_bases/requirements/
explicit_instantiation.cc: New.
* testsuite/tr2/direct_bases/requirements/typedefs.cc: New.
* testsuite/tr2/direct_bases/value.cc: New.

From-SVN: r180121

12 years agoAdd sparc vec_perm patterns when VIS2.
Richard Henderson [Tue, 18 Oct 2011 00:25:30 +0000 (17:25 -0700)]
Add sparc vec_perm patterns when VIS2.

* config/sparc/sparc.md (vec_perm_constv8qi, vec_perm<mode>): New
patterns.
* config/sparc/sparc.c (sparc_expand_vec_perm_bmask): New function.
* config/sparc/sparc-protos.h (sparc_expand_vec_perm_bmask): Declare.

From-SVN: r180119

12 years agoDaily bump.
GCC Administrator [Tue, 18 Oct 2011 00:18:39 +0000 (00:18 +0000)]
Daily bump.

From-SVN: r180118

12 years agoconfigure.ac: Add --with-native-system-header-dir.
Simon Baldwin [Mon, 17 Oct 2011 23:31:25 +0000 (23:31 +0000)]
configure.ac: Add --with-native-system-header-dir.

* configure.ac: Add --with-native-system-header-dir.  Set and
substitute NATIVE_SYSTEM_HEADER_DIR.  Use native_system_header
when setting target_header_dir.
* config.gcc: Always set native_system_header_dir.
(*-*-gnu*): Set native_system_header_dir.  Don't use t-gnu.
(i[34567]86-pc-msdosdjgpp*): Set native_system_header_dir.  Don't
use i386/t-djgpp.
(i[34567]86-*-mingw* | x86_64-*-mingw*): Set
native_system_header_dir.
(spu-*-elf*): Set native_system_header_dir.
* Makefile.in (NATIVE_SYSTEM_HEADER_DIR): Set to
@NATIVE_SYSTEM_HEADER_DIR@.
(PREPROCESSOR_DEFINES): Define NATIVE_SYSTEM_HEADER_DIR.
* cppdefault.c (STANDARD_INCLUDE_DIR): Don't define.
(NATIVE_SYSTEM_HEADER_COMPONENT): Rename from
STANDARD_INCLUDE_COMPONENT.
(cpp_include_defaults): Don't use SYSTEM_INCLUDE_DIR.  Rename
STANDARD_INCLUDE_DIR to NATIVE_SYSTEM_HEADER_DIR.
* system.h: Poison SYSTEM_INCLUDE_DIR, STANDARD_INCLUDE_DIR, and
STANDARD_INCLUDE_COMPONENT.
* config/i386/t-mingw32 (NATIVE_SYSTEM_HEADER_DIR): Remove.
* config/i386/t-mingw-w32: Likewise.
* config/i386/t-mingw-w64: Likewise.
* config/spu/t-spu-elf: Likewise.
* config/i386/t-djgpp: Remove.
* config/t-gnu: Remove.
* config/i386/mingw32.h (STANDARD_INCLUDE_DIR): Don't define.
(NATIVE_SYSTEM_HEADER_COMPONENT): Rename from
STANDARD_INCLUDE_COMPONENT.
* config/i386/djgpp.h (STANDARD_INCLUDE_DIR): Don't define.
* config/spu/spu-elf.h: Likewise.
* config/vms/xm-vms.h: Likewise.
* config/gnu.h: Likewise.
* config/openbsd.h (INCLUDE_DEFAULTS): Change STANDARD_INCLUDE_DIR
and STANDARD_INCLUDE_COMPONENT to NATIVE_SYSTEM_HEADER_DIR and
NATIVE_SYSTME_HEADER_COMPONENT.
* doc/install.texi (Configuration): Document
--with-native-system-header-dir.  Mention it in the documentation
for --with-sysroot and --with-build-sysroot.
* doc/tm.texi.in (Driver): Don't document SYSTEM_INCLUDE_DIR or
STANDARD_INCLUDE_DIR.  Rename STANDARD_INCLUDE_COMPONENT to
NATIVE_SYSTEM_HEADER_COMPONENT.  Rename uses of
STANDARD_INCLUDE_DIR to NATIVE_SYSTEM_HEADER_DIR.
* doc/fragments.texi (Target Fragment): Don't document
NATIVE_SYSTEM_HEADER_DIR.
* configure, doc/tm.texi: Rebuild.

Co-Authored-By: Ian Lance Taylor <iant@google.com>
From-SVN: r180114

12 years agoFix predicates used in sparc VIS edge instructions.
Richard Henderson [Mon, 17 Oct 2011 23:04:48 +0000 (16:04 -0700)]
Fix predicates used in sparc VIS edge instructions.

* config/sparc/sparc.md: Use register_or_zero_operand where rJ
is the constraint.

From-SVN: r180113

12 years agoSegregate sparc's handling of vector vs. non-vector modes.
David S. Miller [Mon, 17 Oct 2011 22:50:29 +0000 (22:50 +0000)]
Segregate sparc's handling of vector vs. non-vector modes.

gcc/
* config/sparc/sparc-modes.def: Add single entry vector modes for
DImode and SImode.
* config/sparc/sparc/sparc.md (V32, V32I, V64, V64I, V64N8): Delete
mode iterators.
(mov<V32:mode>): Revert back to plain SFmode pattern.
(*movsf_insn): Likewise.
(mov<V64:mode>): Revert back to plain DFmode pattern.
(*movdf_insn_sp32): Likewise.
(*movdf_insn_sp32_v9): Likewise.
(*movdf_insn_sp64): Likewise.
(V64 mode splitters) Likewise.
(addsi3): Remove VIS alternatives.
(subsi3): Likewise.
(and<V64I:mode>3): Revert to DImode only pattern.
(and<V64I:mode>3_sp32): Likewise.
(*and<V64I:mode>3_sp64): Likewise.
(and<V32I:mode>3): Likewise.
(*and_not_<V64I:mode>_sp32): Likewise.
(*and_not_<V64I:mode>_sp64): Likewise.
(*and_not_<V32I:mode>): Likewise.
(ior<V64I:mode>3): Likewise.
(*ior<V64I:mode>3_sp32): Likewise.
(*ior<V64I:mode>3_sp64): Likewise.
(ior<V32I:mode>3): Likewise.
(*or_not_<V64I:mode>_sp32): Likewise.
(*or_not_<V64I:mode>_sp64): Likewise.
(*or_not_<V32I:mode>): Likewise.
(xor<V64I:mode>3): Likewise.
(*xor<V64I:mode>3_sp32): Likewise.
(*xor<V64I:mode>3_sp64): Likewise.
(xor<V32I:mode>3): Likewise.
(V64I mode splitters): Likewise.
(*xor_not_<V64I:mode>_sp32): Likewise.
(*xor_not_<V64I:mode>_sp64): Likewise.
(*xor_not_<V32I:mode>): Likewise.
(one_cmpl<V64I:mode>2): Likewise.
(*one_cmpl<V64I:mode>2_sp32): Likewise.
(*one_cmpl<V64I:mode>2_sp64): Likewise.
(one_cmpl<V32I:mode>2): Likewise.
(VM32, VM64, VMALL): New mode iterators.
(vbits, vconstr, vfptype): New mode attributes.
(mov<VMALL:mode>): New expander.
(*mov<VM32:mode>_insn): New insn.
(*mov<VM64:mode>_insn_sp64): New insn.
(*mov<VM64:mode>_insn_sp32): New insn, and associated splitter
specifically for the register to memory case.
(vec_init<mode>): New expander.
(VADDSUB): New mode iterator.
(<plusminus_insn>v2si3, <plusminus_insn>v2hi3): Remove and replace
with...
(<plusminus_insn><mode>3): New consolidated pattern.
(VL): New mode iterator for logical operations.
(vlsuf): New more attribute.
(vlop): New code iterator.
(vlinsn, vlninsn): New code attributes.
(<code><mode>3): New insn to non-negated vector logical ops.
(*not_<code><mode>3): Likewise for negated variants.
(*nand<mode>_vis): New insn.
(vlnotop): New code iterator.
(*<code>_not1<mode>_vis, *<code>_not2<mode>_vis): New insns.
(one_cmpl<mode>2): New insn.
(faligndata<V64I:mode>_vis): Rewrite to use VM64 iterator.
(bshuffle<VM64:mode>_vis): Likewise.
(v<vis3_shift_patname><mode>3): Use GCM mode iterator.
(fp<plusminus_insn>64_vis): Use V1DI mode.
(VASS mode iterator): Use V1SI not SI mode.
* config/sparc/sparc.c (sparc_vis_init_builtins): Account for
single-entry vector mode changes.
(sparc_expand_builtin): Likewise.
(sparc_expand_vector_init): New function.
* config/sparc/sparc-protos.h (sparc_expand_vector_init): Declare.

gcc/testsuite/

* gcc.target/sparc/fand.c: Remove __LP64__ ifdefs and expect
all operations to emit VIS instructions.
* gcc.target/sparc/fandnot.c: Likewise.
* gcc.target/sparc/fnot.c: Likewise.
* gcc.target/sparc/for.c: Likewise.
* gcc.target/sparc/fornot.c: Likewise.
* gcc.target/sparc/fxnor.c: Likewise.
* gcc.target/sparc/fxor.c: Likewise.
* gcc.target/sparc/combined-1.c: Revert change to use -O2, no longer
needed.

From-SVN: r180112

12 years agovshuf-v16hi.c: New test.
Jakub Jelinek [Mon, 17 Oct 2011 20:22:39 +0000 (22:22 +0200)]
vshuf-v16hi.c: New test.

* gcc.c-torture/execute/vshuf-v16hi.c: New test.
* gcc.dg/torture/vshuf-16.inc: New file.
* gcc.dg/torture/vshuf-2.inc: New file.
* gcc.dg/torture/vshuf-32.inc: New file.
* gcc.dg/torture/vshuf-4.inc: New file.
* gcc.dg/torture/vshuf-8.inc: New file.
* gcc.dg/torture/vshuf-main.inc: New file.
* gcc.dg/torture/vshuf-v16hi.c: New test.
* gcc.dg/torture/vshuf-v16qi.c: New test.
* gcc.dg/torture/vshuf-v2df.c: New test.
* gcc.dg/torture/vshuf-v2di.c: New test.
* gcc.dg/torture/vshuf-v2sf.c: New test.
* gcc.dg/torture/vshuf-v2si.c: New test.
* gcc.dg/torture/vshuf-v32qi.c: New test.
* gcc.dg/torture/vshuf-v4df.c: New test.
* gcc.dg/torture/vshuf-v4di.c: New test.
* gcc.dg/torture/vshuf-v4hi.c: New test.
* gcc.dg/torture/vshuf-v4sf.c: New test.
* gcc.dg/torture/vshuf-v4si.c: New test.
* gcc.dg/torture/vshuf-v8hi.c: New test.
* gcc.dg/torture/vshuf-v8qi.c: New test.
* gcc.dg/torture/vshuf-v8sf.c: New test.
* gcc.dg/torture/vshuf-v8si.c: New test.

From-SVN: r180110

12 years agofold-const.c (simple_operand_p_2): New function.
Kai Tietz [Mon, 17 Oct 2011 20:18:31 +0000 (22:18 +0200)]
fold-const.c (simple_operand_p_2): New function.

* fold-const.c (simple_operand_p_2): New function.
(fold_truthop): Rename to
(fold_truth_andor_1): function name.
Additionally remove branching creation for logical and/or.
(fold_truth_andor): Handle branching creation for logical and/or here.

From-SVN: r180109

12 years agoggc-page.c (USING_MADVISE): Adjust ifdef to check for USING_MMAP.
Andi Kleen [Mon, 17 Oct 2011 19:47:12 +0000 (19:47 +0000)]
ggc-page.c (USING_MADVISE): Adjust ifdef to check for USING_MMAP.

2011-10-17  Andi Kleen  <ak@linux.intel.com>

       * ggc-page.c (USING_MADVISE): Adjust ifdef to check for
       USING_MMAP.

From-SVN: r180107

12 years agore PR tree-optimization/50746 (FAIL: gcc.dg/vect/pr37482.c (internal compiler error...
Ira Rosen [Mon, 17 Oct 2011 19:03:02 +0000 (19:03 +0000)]
re PR tree-optimization/50746 (FAIL: gcc.dg/vect/pr37482.c (internal compiler error) on powerpc-apple-darwin9)

        PR tree-optimization/50746
        * gcc.dg/vect/vect-114.c: Remove vect_hw_misalign.

From-SVN: r180106

12 years agore PR c++/50736 ([C++0x] ISO_IEC_14882-2011-5.1.2/10 - bug)
Jason Merrill [Mon, 17 Oct 2011 18:59:41 +0000 (14:59 -0400)]
re PR c++/50736 ([C++0x] ISO_IEC_14882-2011-5.1.2/10 - bug)

PR c++/50736
* parser.c (cp_parser_lambda_introducer): Check for more
invalid captures.

From-SVN: r180105

12 years agoavr.h (ASSEMBLER_DIALECT): Remove.
Georg-Johann Lay [Mon, 17 Oct 2011 17:53:07 +0000 (17:53 +0000)]
avr.h (ASSEMBLER_DIALECT): Remove.

* config/avr/avr.h (ASSEMBLER_DIALECT): Remove.
* config/avr/avr.md (mcu_have_movw, mcu_mega): Remove attributes.
(adjust_len): Add alternative "call".
(isa, enabled): New insn attributes.
(length): Use match_test with AVR_HAVE_JMP_CALL instead of
mcu_mega attribute.
(*sbrx_branch<mode>): Ditto.
(*sbrx_and_branch<mode>): Ditto.
(*sbix_branch): Ditto.
(*sbix_branch_bit7): Ditto.
(*sbix_branch_tmp): Ditto.
(*sbix_branch_tmp_bit7): Ditto.
(jump): Ditto.
(negsi2): Use attribute "isa" instead of assembler dialect.
(extendhisi2): Ditto.
(call_insn, call_value_insn): Set adjust_len attribute.
(indirect_jump): Indent to coding rules.
(call_prologue_saves): Use isa attribute instead of mcu_mega.
(epilogue_restores): Ditto.  Fix setting of SP as described in the
RTX pattern.
(*indirect_jump): Fusion of *jcindirect_jump, *njcindirect_jump
and *indirect_jump_avr6.
(*tablejump): Fusion of *tablejump_rjmp and *tablejump_lib.
(*jcindirect_jump, *njcindirect_jump, *indirect_jump_avr6): Remove.
(*tablejump_rjmp, *tablejump_lib): Remove.
* config/avr/avr.c (adjust_insn_length): Handle ADJUST_LEN_CALL.

From-SVN: r180104

12 years agore PR c++/44524 (improve diagnostic for . vs -> typo)
Paolo Carlini [Mon, 17 Oct 2011 17:51:00 +0000 (17:51 +0000)]
re PR c++/44524 (improve diagnostic for . vs -> typo)

/cp
2011-10-17  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/44524
* typeck.c (build_class_member_access_expr): Provide a better error
message for X.Y where X is a pointer to class type.
(finish_class_member_access_expr): Likewise.

/testsuite
2011-10-17  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/44524
* g++.dg/parse/error41.C: New.
* g++.dg/parse/error20.C: Adjust.

From-SVN: r180103

12 years agore PR c++/50757 (Cannot turn off -Wnonnull when using C++)
Paolo Carlini [Mon, 17 Oct 2011 17:49:06 +0000 (17:49 +0000)]
re PR c++/50757 (Cannot turn off -Wnonnull when using C++)

/gcc
2011-10-17  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/50757
* c-family/c.opt ([Wnonnull]): Add C++ and Objective-C++.
* doc/invoke.texi: Update.

/testsuite
2011-10-17  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/50757
* g++.dg/warn/format7.C: New.
* obj-c++.dg/warn7.mm: Likewise.

From-SVN: r180102

12 years agore PR c++/50757 (Cannot turn off -Wnonnull when using C++)
Paolo Carlini [Mon, 17 Oct 2011 17:44:42 +0000 (17:44 +0000)]
re PR c++/50757 (Cannot turn off -Wnonnull when using C++)

/gcc
2011-10-17  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/50757
* c-family/c.opt ([Wnonnull]): Add C++ and Objective-C++.
* doc/invoke.texi: Update.

/testsuite
2011-10-17  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/50757
* g++.dg/warn/format7.C: New.
* obj-c++.dg/warn7.mm: Likewise.

From-SVN: r180101

12 years agore PR tree-optimization/50746 (FAIL: gcc.dg/vect/pr37482.c (internal compiler error...
Richard Henderson [Mon, 17 Oct 2011 17:02:05 +0000 (10:02 -0700)]
re PR tree-optimization/50746 (FAIL: gcc.dg/vect/pr37482.c (internal compiler error) on powerpc-apple-darwin9)

PR 50746
        * optabs.c (expand_vec_perm_expr): Fix indexing error.

From-SVN: r180100

12 years agore PR target/50737 (FAIL: Throw_3 -O3 execution, generic dwarf2 EH problem?)
Uros Bizjak [Mon, 17 Oct 2011 15:36:28 +0000 (17:36 +0200)]
re PR target/50737 (FAIL: Throw_3 -O3 execution, generic dwarf2 EH problem?)

libgcc/ChangeLog:

2011-10-16  Uros Bizjak  <ubizjak@gmail.com>
    Eric Botcazou  <ebotcazou@adacore.com>

PR target/50737
* config/alpha/linux-unwind.h (alpha_fallback_frame_state): Set
fs->signal_frame to 1.

libjava/ChangeLog:

2011-10-16  Uros Bizjak  <ubizjak@gmail.com>
    Eric Botcazou  <ebotcazou@adacore.com>

PR target/50737
* include/dwarf2-signal.h [__alpha__]: Remove MAKE_THROW_FRAME
definition.

Co-Authored-By: Eric Botcazou <ebotcazou@adacore.com>
From-SVN: r180098

12 years agoRemove duplicate symbol in gnu.ver (PR bootstrap/50715)
Rainer Orth [Mon, 17 Oct 2011 15:14:54 +0000 (15:14 +0000)]
Remove duplicate symbol in gnu.ver (PR bootstrap/50715)

PR bootstrap/50715
* config/abi/pre/gnu.ver (CXXABI_1.3.6): Remove duplicate
__cxa_get_exception_ptr.

From-SVN: r180097

12 years agoconfigure.ac: Display `yes' if the SystemTap header has been found.
Sergio Durigan Junior [Mon, 17 Oct 2011 14:47:01 +0000 (14:47 +0000)]
configure.ac: Display `yes' if the SystemTap header has been found.

2011-10-17  Sergio Durigan Junior  <sergiodj@redhat.com>

* configure.ac: Display `yes' if the SystemTap header has been
found.
* configure: Regenerate.

From-SVN: r180095

12 years agoUse MADV_DONTNEED for freeing in garbage collector
Andi Kleen [Mon, 17 Oct 2011 14:43:37 +0000 (14:43 +0000)]
Use MADV_DONTNEED for freeing in garbage collector

Use the Linux MADV_DONTNEED call to unmap free pages in the garbage
collector.Then keep the unmapped pages in the free list. This avoid
excessive memory fragmentation on large LTO bulds, which can lead
to gcc bumping into the Linux vm_max_map limit per process.

gcc/:

2011-10-08  Andi Kleen  <ak@linux.intel.com>

PR other/50636
* config.in, configure: Regenerate.
* configure.ac (madvise): Add to AC_CHECK_FUNCS.
* ggc-page.c (USING_MADVISE): Add.
(page_entry): Add discarded field.
(alloc_page): Check for discarded pages.
(release_pages): Add USING_MADVISE branch.

From-SVN: r180093

12 years agoFix bootstrapping with --disable-checking
Dodji Seketeli [Mon, 17 Oct 2011 14:01:37 +0000 (14:01 +0000)]
Fix bootstrapping with --disable-checking

libcpp/ChangeLog

* line-map.c (linemap_macro_map_loc_to_exp_point): Avoid setting a
variable without using it if ENABLE_CHECKING is not defined.  Mark
the LOCATION parameter as being unused.

From-SVN: r180090

12 years agore PR tree-optimization/50729 (Silent code gen fault: Value range propagation seems...
Richard Guenther [Mon, 17 Oct 2011 12:22:54 +0000 (12:22 +0000)]
re PR tree-optimization/50729 (Silent code gen fault: Value range propagation seems to propagate values across narrowing/widening)

2011-10-17  Richard Guenther  <rguenther@suse.de>

PR tree-optimization/50729
* tree-vrp.c (extract_range_from_unary_expr_1): Remove
redundant test.
(simplify_conversion_using_ranges): Properly test the
intermediate result.

* gcc.dg/torture/pr50729.c: New testcase.

From-SVN: r180087

12 years agoReduce memory waste due to non-power-of-2 allocs
Tom Tromey [Mon, 17 Oct 2011 10:00:07 +0000 (10:00 +0000)]
Reduce memory waste due to non-power-of-2 allocs

This patch basically arranges for the allocation size of line_map
buffers to be as close as possible to a power of two.  This
*significantly* decreases peak memory consumption as (macro) maps are
numerous and stay live during all the compilation.

The patch adds a new ggc_round_alloc_size interface to the ggc
allocator.  In each of the two main allocator implementations ('page'
and 'zone') the function has been extracted from the main allocation
function code and returns the actual size of the allocated memory
region, thus giving a chance to the caller to maximize the amount of
memory it actually uses from the allocated memory region.  In the
'none' allocator implementation (that uses xmalloc) the
ggc_round_alloc_size just returns the requested allocation size.

Co-Authored-By: Dodji Seketeli <dodji@redhat.com>
From-SVN: r180086

12 years agoAdd line map statistics to -fmem-report output
Tom Tromey [Mon, 17 Oct 2011 09:59:52 +0000 (09:59 +0000)]
Add line map statistics to -fmem-report output

This patch adds statistics about line maps' memory consumption and
macro expansion to the output of -fmem-report.  It has been useful in
trying to reduce the memory consumption of the macro maps support.

Co-Authored-By: Dodji Seketeli <dodji@redhat.com>
From-SVN: r180085

12 years agoSupport -fdebug-cpp option
Tom Tromey [Mon, 17 Oct 2011 09:59:40 +0000 (09:59 +0000)]
Support -fdebug-cpp option

This patch adds -fdebug-cpp option. When used with -E this dumps the
relevant macro map before every single token. This clutters the output
a lot but has proved to be invaluable in tracking some bugs during the
development of the virtual location support.

Co-Authored-By: Dodji Seketeli <dodji@redhat.com>
From-SVN: r180084

12 years agoEmit macro expansion related diagnostics
Tom Tromey [Mon, 17 Oct 2011 09:59:27 +0000 (09:59 +0000)]
Emit macro expansion related diagnostics

In this third instalment the diagnostic machinery -- when faced with
the virtual location of a token resulting from macro expansion -- uses
the new linemap APIs to unwind the stack of macro expansions that led
to that token and emits a [hopefully] more useful message than what we
have today.

diagnostic_report_current_module has been slightly changed to use the
location given by client code instead of the global input_location
variable.  This results in more precise diagnostic locations in
general but then the patch adjusts some C++ tests which output changed
as a result of this.

Three new regression tests have been added.

The mandatory screenshot goes like this:

[dodji@adjoa gcc]$ cat -n test.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    }

[dodji@adjoa gcc]$ ./cc1 -quiet -ftrack-macro-expansion test.c
test.c: In function 'g':
test.c:5:14: erreur: invalid operands to binary << (have 'double' and 'int')
test.c:2:9: note: in expansion of macro 'OPERATE'
test.c:5:3: note: expanded from here
test.c:5:14: note: in expansion of macro 'SHIFTL'
test.c:8:3: note: expanded from here
test.c:8:3: note: in expansion of macro 'MULT2'
test.c:13:3: note: expanded from here

Co-Authored-By: Dodji Seketeli <dodji@redhat.com>
From-SVN: r180083

12 years agoGenerate virtual locations for tokens
Tom Tromey [Mon, 17 Oct 2011 09:59:12 +0000 (09:59 +0000)]
Generate virtual locations for tokens

This second instalment uses the infrastructure of the previous patch
to allocate a macro map for each macro expansion and assign a virtual
location to each token resulting from the expansion.

To date when cpp_get_token comes across a token that happens to be a
macro, the macro expander kicks in, expands the macro, pushes the
resulting tokens onto a "token context" and returns a dummy padding
token. The next call to cpp_get_token goes look into the token context
for the next token [which is going to result from the previous macro
expansion] and returns it.  If the token is a macro, the macro expander
kicks in and you know the story.

This patch piggy-backs on that macro expansion process, so to speak.
First it modifies the macro expander to make it create a macro map for
each macro expansion. It then allocates a virtual location for each
resulting token.  Virtual locations of tokens resulting from macro
expansions are then stored on a special kind of context called an
"expanded tokens context".  In other words, in an expanded tokens
context, there are tokens resulting from macro expansion and their
associated virtual locations.  cpp_get_token_with_location is modified
to return the virtual location of tokens resulting from macro
expansion.  Note that once all tokens from an expanded token context have
been consumed and the context and is freed, the memory used to store the
virtual locations of the tokens held in that context is freed as well.
This helps reducing the overall peak memory consumption.

The client code that was getting macro expansion point location from
cpp_get_token_with_location now gets virtual location from it. Those
virtual locations can in turn be resolved into the different
interesting physical locations thanks to the linemap API exposed by
the previous patch.

Expensive progress. Possibly. So this whole virtual location
allocation business is switched off by default. So by default no
extended token is created. No extended token context is created
either. One has to use -ftrack-macro-expansion to switch this on. This
complicates the code but I believe it can be useful as some of our
friends found out at http://llvm.org/bugs/show_bug.cgi?id=5610

The patch tries to reduce the memory consumption by freeing some token
context memory that was being reused before. I didn't notice any
compilation slow down due to this immediate freeing on my GNU/Linux
system.

As no client code tries to resolve virtual locations to anything but
what was being done before, no new test case has been added.

Co-Authored-By: Dodji Seketeli <dodji@redhat.com>
From-SVN: r180082

12 years agoLinemap infrastructure for virtual locations
Tom Tromey [Mon, 17 Oct 2011 09:58:56 +0000 (11:58 +0200)]
Linemap infrastructure for virtual locations

This is the first instalment of a set which goal is to track locations
of tokens across macro expansions.  Tom Tromey did the original work
and attached the patch to PR preprocessor/7263.  This opus is a
derivative of that original work.

This patch modifies the linemap module of libcpp to add virtual
locations support.

A virtual location is a mapped location that can resolve to several
different physical locations.  It can always resolve to the spelling
location of a token.  For tokens resulting from macro expansion it can
resolve to:
  - either the location of the expansion point of the macro.
  - or the location of the token in the definition of the
  macro
  - or, if the token is an argument of a function-like macro,
  the location of the use of the matching macro parameter in
  the definition of the macro

The patch creates a new type of line map called a macro map.  For every
single macro expansion, there is a macro map that generates a virtual
location for every single resulting token of the expansion.

The good old type of line map we all know is now called an ordinary
map.  That one still encodes spelling locations as it has always had.

As a result linemap_lookup as been extended to return a macro map when
given a virtual location resulting from a macro expansion.  The layout
of structs line_map has changed to support this new type of map.  So
did the layout of struct line_maps.  Accessor macros have been
introduced to avoid messing with the implementation details of these
datastructures directly.  This helped already as we have been testing
different ways of arranging these datastructure.  Having to constantly
adjust client code that is too tied with the internals of line_map and
line_maps would have been even more painful.

Of course, many new public functions have been added to the linemap
module to handle the resolution of virtual locations.

This patch introduces the infrastructure but no part of the compiler
uses virtual locations yet.

However the client code of the linemap data structures has been
adjusted as per the changes.  E.g, it's not anymore reliable for a
client code to manipulate struct line_map directly if it just wants to
deal with spelling locations, because struct line_map can now
represent a macro map as well.  In that case, it's better to use the
convenient API to resolve the initial (possibly virtual) location to a
spelling location (or to an ordinary map) and use that.

This is the reason why the patch adjusts the Java, Ada and Fortran
front ends.

Also, note that virtual locations are not supposed to be ordered for
relations '<' and '>' anymore.  To test if a virtual location appears
"before" another one, one has to use a new operator exposed by the
line map interface.  The patch updates the only spot (in the
diagnostics module) I have found that was making the assumption that
locations were ordered for these relations.  This is the only change
that introduces a use of the new line map API in this patch, so I am
adding a regression test for it only.

From-SVN: r180081

12 years agore PR c++/48489 (Invalid error message 'has no member named' when referring directly...
Paolo Carlini [Mon, 17 Oct 2011 09:48:02 +0000 (09:48 +0000)]
re PR c++/48489 (Invalid error message 'has no member named' when referring directly to the base class)

/cp
2011-10-17  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/48489
* typeck.c (finish_class_member_access_expr): Fix error call
for TREE_CODE (access_path) == TREE_BINFO.

/testsuite
2011-10-17  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/48489
* g++.dg/inherit/error5.C: New.

From-SVN: r180080