1. 18 Oct, 2011 9 commits
    • tree-ssa-alias.h (struct pt_solution): Remove vars_contains_restrict member. · d3553615
      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
      Richard Guenther committed
    • re PR tree-optimization/50672 (ice: verify_ssa failed: no immediate_use list) · 266fbb79
      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
      Tom de Vries committed
    • re PR middle-end/50716 (Segmentation fault caused by misaligned vector access) · cab35794
      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
      Richard Guenther committed
    • Fix bootstrap on !NO_IMPLICIT_EXTERN_C and ia32 targets · d17687f6
      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
      Dodji Seketeli committed
    • Remove bogus line · d5899fb5
      From-SVN: r180123
      Eric Botcazou committed
    • [multiple changes] · 4daba884
      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
      Benjamin Kosnik committed
    • Add sparc vec_perm patterns when VIS2. · 9d4dedaa
      	* 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
      Richard Henderson committed
    • Daily bump. · d62fc6ed
      From-SVN: r180118
      GCC Administrator committed
  2. 17 Oct, 2011 29 commits
    • configure.ac: Add --with-native-system-header-dir. · 08b2bad2
      	* 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
      Simon Baldwin committed
    • Fix predicates used in sparc VIS edge instructions. · d1947945
      	* config/sparc/sparc.md: Use register_or_zero_operand where rJ
      	is the constraint.
      
      From-SVN: r180113
      Richard Henderson committed
    • Segregate sparc's handling of vector vs. non-vector modes. · e00560c2
      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
      David S. Miller committed
    • vshuf-v16hi.c: New test. · b2c4e315
      	* 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
      Jakub Jelinek committed
    • fold-const.c (simple_operand_p_2): New function. · 6e796a83
      	* 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
      Kai Tietz committed
    • ggc-page.c (USING_MADVISE): Adjust ifdef to check for USING_MMAP. · 1eca213e
      2011-10-17  Andi Kleen  <ak@linux.intel.com>
      
             * ggc-page.c (USING_MADVISE): Adjust ifdef to check for
             USING_MMAP.
      
      From-SVN: r180107
      Andi Kleen committed
    • re PR tree-optimization/50746 (FAIL: gcc.dg/vect/pr37482.c (internal compiler… · 44729eb7
      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
      Ira Rosen committed
    • re PR c++/50736 ([C++0x] ISO_IEC_14882-2011-5.1.2/10 - bug) · c6334ca9
      	PR c++/50736
      	* parser.c (cp_parser_lambda_introducer): Check for more
      	invalid captures.
      
      From-SVN: r180105
      Jason Merrill committed
    • avr.h (ASSEMBLER_DIALECT): Remove. · 7c3297ce
      	* 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
      Georg-Johann Lay committed
    • re PR c++/44524 (improve diagnostic for . vs -> typo) · a7248d5f
      /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
      Paolo Carlini committed
    • re PR c++/50757 (Cannot turn off -Wnonnull when using C++) · 3e8f7630
      /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
      Paolo Carlini committed
    • re PR c++/50757 (Cannot turn off -Wnonnull when using C++) · ef12edb5
      /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
      Paolo Carlini committed
    • re PR tree-optimization/50746 (FAIL: gcc.dg/vect/pr37482.c (internal compiler… · 42a04c48
      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
      Richard Henderson committed
    • re PR target/50737 (FAIL: Throw_3 -O3 execution, generic dwarf2 EH problem?) · 1e06b07d
      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
      Uros Bizjak committed
    • Remove duplicate symbol in gnu.ver (PR bootstrap/50715) · 47fc1035
      	PR bootstrap/50715
      	* config/abi/pre/gnu.ver (CXXABI_1.3.6): Remove duplicate
      	__cxa_get_exception_ptr.
      
      From-SVN: r180097
      Rainer Orth committed
    • configure.ac: Display `yes' if the SystemTap header has been found. · d11aaed7
      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
      Sergio Durigan Junior committed
    • Use MADV_DONTNEED for freeing in garbage collector · 711a3d82
      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
      Andi Kleen committed
    • Fix bootstrapping with --disable-checking · 411f92de
      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
      Dodji Seketeli committed
    • re PR tree-optimization/50729 (Silent code gen fault: Value range propagation… · 7d5a0f1b
      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
      Richard Guenther committed
    • Reduce memory waste due to non-power-of-2 allocs · b9bd6f74
      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
      Tom Tromey committed
    • Add line map statistics to -fmem-report output · 64a1a422
      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
      Tom Tromey committed
    • Support -fdebug-cpp option · 847e697a
      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
      Tom Tromey committed
    • Emit macro expansion related diagnostics · 07a0b324
      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
      Tom Tromey committed
    • Generate virtual locations for tokens · 92582b75
      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
      Tom Tromey committed
    • Linemap infrastructure for virtual locations · 46427374
      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
      Tom Tromey committed
    • re PR c++/48489 (Invalid error message 'has no member named' when referring… · 2be4314f
      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
      Paolo Carlini committed
    • re PR fortran/47023 (C_Sizeof: Rejects valid code) · fbe468a5
      2011-10-17  Janus Weil  <janus@gcc.gnu.org>
      
      	PR fortran/47023
      	PR fortran/50752
      	* primary.c (match_kind_param): Avoid segfault.
      
      
      2011-10-17  Janus Weil  <janus@gcc.gnu.org>
      
      	PR fortran/47023
      	PR fortran/50752
      	* gfortran.dg/kind_tests_4.f90: New.
      
      From-SVN: r180079
      Janus Weil committed
    • vect-21.c: Expect the loops to get vectorized on targets that support vector condition. · a7fc89c1
      
              * gcc.dg/vect/vect-21.c: Expect the loops to get vectorized on
              targets that support vector condition.
      
      From-SVN: r180076
      Ira Rosen committed
    • Daily bump. · 68fb6054
      From-SVN: r180071
      GCC Administrator committed
  3. 16 Oct, 2011 2 commits