re PR c++/44641 (Generated constructors and destructors get wrong debug location when a typedef uses a forward declaration of the type before the definition)
PR c++/44641
* gcc/cp/pt.c (instantiate_class_template): Propagate the
template's location to its instance.
* gcc/testsuite/lib/scanasm.exp (dg-function-on-line): Test
that a function is defined on the current line.
* gcc/testsuite/g++.dg/debug/dwarf2/lineno-simple1.C: New.
Line number sanity test.
* gcc/testsuite/g++.dg/debug/dwarf2/pr44641.C: New.
* postreload.c (fixup_debug_insns): Remove arg REGNO. New args
FROM and TO. All callers changed. Don't look for tracked uses,
just scan the RTL for DEBUG_INSNs and substitute.
(reload_combine_recognize_pattern): Call fixup_debug_insns.
(reload_combine): Ignore DEBUG_INSNs.
Jakub Jelinek [Tue, 20 Jul 2010 12:58:03 +0000 (14:58 +0200)]
re PR debug/45003 (VTA issues with sign/zero extension and debug temporaries)
PR debug/45003
* cfgexpand.c (expand_debug_expr) <case NOP_EXPR>: Use ZERO_EXTEND
or SIGN_EXTEND depending on TYPE_UNSIGNED of the operand's type
instead of the result's type.
Richard Guenther [Tue, 20 Jul 2010 11:28:56 +0000 (11:28 +0000)]
re PR debug/44971 (-fcompare-debug failure with uninitialized read in walk_gimple_stmt)
2010-07-20 Richard Guenther <rguenther@suse.de>
PR middle-end/44971
PR middle-end/44988
* tree-ssa.c (maybe_optimize_var): New function split out from ...
(execute_update_addresses_taken): ... here.
(non_rewritable_mem_ref_base): Likewise.
(execute_update_addresses_taken): Do not iterate over all referenced
vars but just all local decls and parms.
Properly check call and asm arguments and rewrite call arguments.
* gcc.dg/pr44971.c: New testcase.
* gcc.c-torture/compile/pr44988.c: Likewise.
Benjamin Kosnik [Tue, 20 Jul 2010 06:43:02 +0000 (06:43 +0000)]
Makefile.am (doc-texinfo): New rule.
2010-07-19 Benjamin Kosnik <bkoz@redhat.com>
* doc/Makefile.am (doc-texinfo): New rule.
(doc-texinfo-docbook): New rule.
(DB2TEXI_FLAGS): New.
(doc-xml-single-docbook): Just the manual, not the set. Tweak flags.
* doc/Makefile.in: Regenerate.
gengtype.c (start_root_entry): New function, split out from write_root.
gcc/
* gengtype.c (start_root_entry): New function, split out from
write_root. Check whether V is null and raise an error if so.
(write_field_root): Check for V being null. Don't raise an error here;
set V to null instead.
(write_root): Update comment above function. Use start_root_entry.
Paul Thomas [Mon, 19 Jul 2010 18:48:44 +0000 (18:48 +0000)]
re PR fortran/42385 ([OOP] poylmorphic operators do not work)
2010-07-19 Paul Thomas <pault@gcc.gnu.org>
PR fortran/42385
* interface.c (matching_typebound_op): Add argument for the
return of the generic name for the procedure.
(build_compcall_for_operator): Add an argument for the generic
name of an operator procedure and supply it to the expression.
(gfc_extend_expr, gfc_extend_assign): Use the generic name in
calls to the above procedures.
* resolve.c (resolve_typebound_function): Catch procedure
component calls for CLASS objects, check that the vtable is
complete and insert the $vptr and procedure components, to make
the call.
(resolve_typebound_function): The same.
* trans-decl.c (gfc_trans_deferred_vars): Do not deallocate
an allocatable scalar if it is a result.
2010-07-19 Paul Thomas <pault@gcc.gnu.org>
PR fortran/42385
* gfortran.dg/class_defined_operator_1.f03 : New test.
Richard Guenther [Mon, 19 Jul 2010 15:39:51 +0000 (15:39 +0000)]
re PR rtl-optimization/44941 (ICE: RTL check: expected code 'mem', have 'reg' in emit_block_move_hints, at expr.c:1189)
2010-07-19 Richard Guenther <rguenther@suse.de>
PR middle-end/44941
* expr.c (emit_block_move_hints): Move zero size check first.
Move asserts to more useful places.
* calls.c (load_register_parameters): Check for zero size.
Jerry DeLisle [Mon, 19 Jul 2010 13:11:54 +0000 (13:11 +0000)]
re PR fortran/44953 (FAIL: gfortran.dg/char4_iunit_1.f03 * execution test)
2010-07-19 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR libfortran/44953
* io/unix.c (mem_alloc_w4): Return gfc_char4_t instead of char type
pointer. (mem_write4): Remove cast to gfc_char4_t.
* io/transfer.c (write_block): Use a gfc_char4_t pointer.
(memset4): New helper function. (next_record_w): Use new helper
function rather than sset for internal units. Don't attempt to pad
with spaces if it is not needed.
* io/unix.h: Update prototype for mem_alloc_w4.
* io/write.c (memset4): Use gfc_char4_t pointer and chracter type.
Don't use multiply by 4 to compute offset. (memcpy4): Likewise.
(write_default_char4): Use a gfc_char4_t pointer and update memset4
and memcpy calls. (write_a): Likewise. (write_l): Likewise.
(write_boz): Likewise. (write_decimal): Likewise. (write_x): Likewise.
(write_char): Add support for character(kind=4) internal units that
was previously missed. (write_integer): Use a gfc_char4_t pointer and
update memset4 and memcpy calls. (write_character): Likewise.
(write_separator): Add support for character(kind=4) internal units
that was previously missed.
* write_float.def (output_float): Use a gfc_char4_t pointer and
update memset4 and memcpy calls. (write_infnan): Likewise.
(output_float_FMT_G_): Likewise.
postreload.c (reload_combine_closest_single_use): Ignore the number of uses for DEBUG_INSNs.
* postreload.c (reload_combine_closest_single_use): Ignore the
number of uses for DEBUG_INSNs.
(fixup_debug_insns): New static function.
(reload_combine_recognize_const_pattern): Use it. Don't let the
main loop be affected by DEBUG_INSNs.
Really disallow moving adds past a jump insn.
(reload_combine_recognize_pattern): Don't update use_ruid here.
(reload_combine_note_use): Do it here.
(reload_combine): Use control_flow_insn_p rather than JUMP_P.
Bingfeng Mei [Mon, 19 Jul 2010 09:18:14 +0000 (09:18 +0000)]
ddg.c (create_ddg): Exclude nodes of debug_insn in counting nodes of a loop.
2010-07-19 Bingfeng Mei <bmei@broadcom.com>
* ddg.c (create_ddg): Exclude nodes of debug_insn in counting nodes
of a loop.
* loop-doloop.c (doloop_condition_get): Skip possible debug_insn.
allow darwin branch island control depening on system version
* config/i386/darwin.h: Define darwin_emit_branch_islands.
(TARGET_MACHO_BRANCH_ISLANDS): New.
(FUNCTION_PROFILER): Use TARGET_MACHO_BRANCH_ISLANDS.
* config/i386/i386.h (TARGET_MACHO_BRANCH_ISLANDS): Define a
default value.
* config/i386/i386.c (output_pic_addr_const): Do not emit
branch islands unless TARGET_MACHO_BRANCH_ISLANDS is set.
(x86_output_mi_thunk): Adjust symbol creation.
* config/rs6000/darwin.h: Define darwin_emit_branch_islands.
Remove out of date comment.
* config/rs6000/rs6000.c (print_operand): Adjust symbol.
DARWIN_LINKER_GENERATES_ISLANDS: Remove.
DARWIN_GENERATE_ISLANDS: Ditto.
(output_call): Do not emit branch islands unless
darwin_emit_branch_islands is set.
* config/darwin.c: Declare darwin_emit_branch_islands.
(machopic_indirect_data_reference): Do not emit unless
darwin_emit_branch_islands is set.
(darwin_override_options): Set darwin_emit_branch_islands
where it is needed.
* config/darwin9.h
DARWIN_LINKER_GENERATES_ISLANDS: Remove.
mips.exp (mips_option_groups): Add -mflip-mips16 to the "mips16" group.
gcc/testsuite/
* gcc.target/mips/mips.exp (mips_option_groups): Add -mflip-mips16
to the "mips16" group.
(mips_using_mips16_p): New procedure.
(mips-dg-options): Use it.
mips.c (mips16_build_call_stub): Zero-extend the low half of a single-register SCmode return value before ORing...
gcc/
* config/mips/mips.c (mips16_build_call_stub): Zero-extend the
low half of a single-register SCmode return value before ORing
it with the high half.
* config/mips/mips16.S (MERGE_GPRf): Likewise.
gcc/testsuite/
* gcc.target/mips/mips16-attributes-4.c: New test.
re PR testsuite/44418 (FAIL: gcc.target/powerpc/recip-[123].c on powerpc-apple-darwin9)
PR testsuite/44418
* gcc.target/powerpc/recip-1.c: Do not run for powerpc*-apple-darwin*
* gcc.target/powerpc/recip-2.c: Ditto.
* gcc.target/powerpc/recip-3.c: Ditto.
Mikael Morin [Sat, 17 Jul 2010 09:57:19 +0000 (09:57 +0000)]
trans-array.c (gfc_free_ss): Don't free beyond ss rank.
2010-07-17 Mikael Morin <mikael@gcc.gnu.org>
* trans-array.c (gfc_free_ss): Don't free beyond ss rank.
Access subscript through the "dim" field index.
(gfc_trans_create_temp_array): Access ss info through the "dim" field
index.
(gfc_conv_array_index_offset): Ditto.
(gfc_conv_loop_setup): Ditto.
(gfc_conv_expr_descriptor): Ditto.
(gfc_conv_ss_startstride): Ditto. Update call to
gfc_conv_section_startstride.
(gfc_conv_section_startstride): Set values along the array dimension.
Get array dimension directly from the argument.
Jack Howarth [Sat, 17 Jul 2010 08:22:09 +0000 (08:22 +0000)]
re PR target/44862 (bootstrap with --enable-build-with-cxx and --with-libiconv-prefix fails)
2010-07-17 Jack Howarth <howarth@bromo.med.uc.edu>
PR target/44862
* Makefile.tpl (POSTSTAGE1_CXX_EXPORT):
Provide -B option to allow for link spec %s substitutions for
libstdc++.a on darwin.
* Makefile.in: Regenerate.
re PR target/42235 (redundant memory move from parameter space to spill space)
PR target/42235
* postreload.c (reload_cse_move2add): Return bool, true if anything.
changed. All callers changed.
(move2add_use_add2_insn): Likewise.
(move2add_use_add3_insn): Likewise.
(reload_cse_regs): If reload_cse_move2add changed anything, rerun
reload_combine.
(RELOAD_COMBINE_MAX_USES): Bump to 16.
(last_jump_ruid): New static variable.
(struct reg_use): New members CONTAINING_MEM and RUID.
(reg_state): New members ALL_OFFSETS_MATCH and REAL_STORE_RUID.
(reload_combine_split_one_ruid, reload_combine_split_ruids,
reload_combine_purge_insn_uses, reload_combine_closest_single_use
reload_combine_purge_reg_uses_after_ruid,
reload_combine_recognize_const_pattern): New static functions.
(reload_combine_recognize_pattern): Verify that ALL_OFFSETS_MATCH
is true for our reg and that we have available index regs.
(reload_combine_note_use): New args RUID and CONTAINING_MEM. All
callers changed. Use them to initialize fields in struct reg_use.
(reload_combine): Initialize last_jump_ruid. Be careful when to
take PREV_INSN of the scanned insn. Update REAL_STORE_RUID fields.
Call reload_combine_recognize_const_pattern.
(reload_combine_note_store): Update REAL_STORE_RUID field.
Jakub Jelinek [Fri, 16 Jul 2010 20:35:16 +0000 (22:35 +0200)]
guality.exp: Run also c-c++-common/guality/ tests.
* gcc.dg/guality/guality.exp: Run also c-c++-common/guality/ tests.
* gcc.dg/guality/guality.h: Include unistd.h. Make the header usable
in C++.
(gualcvt): New overloaded inline.
(GUALCVT): Use it for C++.
* g++.dg/guality/guality.exp: New.
* g++.dg/guality/guality.h: New.
* g++.dg/guality/redeclaration1.C: New test.
* g++.dg/dg.exp: Prune also guality/* tests.
* gcc.dg/guality/pr43141.c: Moved to...
* c-c++-common/guality/pr43141.c: ... here.
rs6000.c (rs6000_emit_sISEL): Let rs6000_emit_int_cmove do all the work.
* config/rs6000/rs6000.c (rs6000_emit_sISEL): Let rs6000_emit_int_cmove
do all the work.
(rs6000_emit_int_cmove): Use function pointers for insn generation.
Don't force values into registers unnecessarily.
(output_isel): Assert that we're not given conditions we can't handle.
Delete corresponding code.
* config/rs6000/rs6000.md (isel_signed_<mode>): Use
scc_comparison_operator constraint. Permit 0 for the consequent
operand. Permit any GPR for the alternative operand.
(isel_unsigned_<mode>): Likewise.
Jerry DeLisle [Fri, 16 Jul 2010 14:16:04 +0000 (14:16 +0000)]
re PR fortran/37077 (Implement Internal Unit I/O for character KIND=4)
2010-07-16 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR libfortran/37077
* io/read.c (read_default_char4): Add support for reading into a
kind-4 character variable from a character(kind=4) internal unit.
* io/io.h (read_block_form4): Add prototype.
* io/unit.c (get_internal_unit): Add call to fbuf_init.
(free_internal_unit): Add call to fbuf_destroy. (get_unit): Fix
whitespace.
* io/transfer.c (read_sf_internal): Use fbuf_alloc to allocate a string
to recieve the wide characters translated to single byte chracters.
(read_block_form): Fix whitespace. (read_block_form4): New function to
read from a character(kind=4) internal unit into a character(kind=4)
variable. (read_block_direct): Fix whitespace. (write_block): Fix
whitespace. (formatted_transfer_scalar_read): Likewise.
(formatted_transfer_scalar_write): Likewise.
* io/write.c (write_character): Add support for list directed write of
a kind=1 character string to a character(kind=4) internal unit.
Jakub Jelinek [Fri, 16 Jul 2010 09:06:02 +0000 (11:06 +0200)]
re PR target/44942 (Bug in argument passing of long double)
PR target/44942
* config/i386/i386-protos.h (ix86_function_arg_boundary): Change second
argument to const_tree.
* config/i386/i386.c (function_arg_advance): If padding needs to be
inserted before argument, increment cum->words by number of padding
words as well.
(contains_aligned_value_p): Change argument to const_tree.
(ix86_function_arg_boundary): Change second argument to const_tree.
* gcc.c-torture/execute/pr44942.c: New test.
* gcc.target/i386/pr44942.c: New test.
re PR target/42235 (redundant memory move from parameter space to spill space)
PR target/42235
* function.c (record_hard_reg_sets): New static function.
(assign_parm_setup_reg): If an optab for extending exists and the
generated code clobbbers no hard regs, emit the insn directly and
create a REG_EQUIV note.
Jason Merrill [Thu, 15 Jul 2010 20:45:35 +0000 (16:45 -0400)]
re PR c++/44909 ([C++0x] Copy constructors implicitly deleted)
PR c++/44909
* call.c (add_function_candidate): If we're working on an implicit
declaration, don't consider candidates that won't match.
* typeck.c (same_type_ignoring_top_level_qualifiers_p): Now a fn.
* cp-tree.h (same_type_ignoring_top_level_qualifiers_p): Adjust.
Revert:
* cp-tree.h (struct lang_type_class): Add has_user_opeq.
(TYPE_HAS_USER_OPEQ): New.
* decl.c (grok_special_member_properties): Set it.
* class.c (add_implicitly_declared_members): Don't lazily declare
constructors/operator= if a base or member has a user-declared one.
(check_bases_and_members, check_bases): Adjust.
(check_field_decls, check_field_decl): Adjust.
* tree.h (enum tree_index): Add TI_INTEGER_THREE.
(integer_three_node): Add.
* tree.c (build_common_tree_nodes_2): Use integer_type_node insead of
NULL_TREE in build_int_cst calls. Initialize the integer_three_node.
* builtins.c (expand_builtin_prefetch): Use common tree nodes instead
of call build_int_cst.
* tree-ssa-sccvn.c (copy_reference_ops_from_ref): Ditto.
* tree-ssa-loop-ivopts.c (idx_find_step): Ditto.
(find_interesting_uses_address): Ditto.
* tree-ssa-alias.c (ao_ref_init_from_ptr_and_size): Ditto.
* tree-eh.c (lower_eh_constructs_2): Ditto.
* tree-vect-loop.c (get_initial_def_for_induction): Ditto.
* c-typeck.c (really_start_incremental_init, push_init_level): Ditto.
* expmed.c (expand_divmod): Ditto.
* tree-mudflap.c (mx_register_decls): Ditto.
* varasm.c (array_size_for_constructor): Ditto.
* tree-ssa-loop-prefetch.c (issue_prefetch_ref): Ditto.
* c-parser.c (c_parser_postfix_expression): Ditto.
/cp
* decl.c (integer_three_node): Remove.
(cxx_init_decl_processing): Do not initialize the integer_three_node.
* cp-tree.h (integer_three_node): Remove.
postreload.c (last_label_ruid, [...]): New static variables.
* postreload.c (last_label_ruid, first_index_reg, last_index_reg):
New static variables.
(reload_combine_recognize_pattern): New static function, broken out
of reload_combine.
(reload_combine): Use it. Only initialize first_index_reg and
last_index_reg once.
Daniel Kraft [Thu, 15 Jul 2010 12:23:47 +0000 (14:23 +0200)]
re PR fortran/44709 (BLOCK and GOTO/EXIT/CYCLE)
2010-07-15 Daniel Kraft <d@domob.eu>
PR fortran/44709
* trans.h (struct gfc_wrapped_block): New struct.
(gfc_start_wrapped_block), (gfc_add_init_cleanup): New methods.
(gfc_finish_wrapped_block): New method.
(gfc_init_default_dt): Add new init code to block rather than
returning it.
* trans-array.h (gfc_trans_auto_array_allocation): Use gfc_wrapped_block
(gfc_trans_dummy_array_bias): Ditto.
(gfc_trans_g77_array): Ditto.
(gfc_trans_deferred_array): Ditto.
* trans.c (gfc_add_expr_to_block): Call add_expr_to_chain.
(add_expr_to_chain): New method based on old gfc_add_expr_to_block.
(gfc_start_wrapped_block), (gfc_add_init_cleanup): New methods.
(gfc_finish_wrapped_block): New method.
* trans-array.c (gfc_trans_auto_array_allocation): use gfc_wrapped_block
(gfc_trans_g77_array), (gfc_trans_dummy_array_bias): Ditto.
(gfc_trans_deferred_array): Ditto.
* trans-decl.c (gfc_trans_dummy_character): Ditto.
(gfc_trans_auto_character_variable), (gfc_trans_assign_aux_var): Ditto.
(init_intent_out_dt): Ditto.
(gfc_init_default_dt): Add new init code to block rather than
returning it.
(gfc_trans_deferred_vars): Use gfc_wrapped_block to collect all init
and cleanup code and put it all together.
* include/sparc-signal.h: Renamed to ...
* include/solaris-signal.h: ... this.
* configure.ac: Use it on any *-*-solaris2* target.
* configure: Regenerate.
* configure.host (i?86-*-solaris2*): Set can_unwind_signal=yes.
* Makefile.am (prims.lo): Add -fno-omit-frame-pointer to AM_CXXFLAGS.
* Makefile.in: Regenerate.
Jan Hubicka [Thu, 15 Jul 2010 10:01:07 +0000 (12:01 +0200)]
cgraph.c: Include lto-streamer.h
* cgraph.c: Include lto-streamer.h
(change_decl_assembler_name): Work when assembler name hash is at place.
(cgraph_make_decl_local): When localizing COMDAT symbol at WPA stage, be
sure to rename it to avoid name clash.
* ipa.c (cgraph_externally_visible_p, function_and_variable_visibility):
Localize hidden symbols only when locally defined.
* trans.h (gfc_build_compare_string): Add CODE argument.
* trans-intrinsic.c (gfc_conv_intrinsic_strcmp): Pass OP to
gfc_build_compare_string.
* trans-expr.c (gfc_conv_expr_op): Pass CODE to
gfc_build_compare_string.
(string_to_single_character): Rename len variable to length.
(gfc_optimize_len_trim): New function.
(gfc_build_compare_string): Add CODE argument. If it is EQ_EXPR
or NE_EXPR and one of the strings is string literal with LEN_TRIM
bigger than the length of the other string, they compare unequal.
* trans-array.c (gfc_conv_section_upper_bound): Remove
(gfc_conv_section_startstride): Don't set the upper bound in the
vector subscript case.
(gfc_conv_loop_setup): Don't use gfc_conv_section_upper_bound
Jason Merrill [Wed, 14 Jul 2010 17:00:51 +0000 (13:00 -0400)]
Implement C++0x unrestricted unions (N2544)
Implement C++0x unrestricted unions (N2544)
* class.c (check_field_decl): Loosen union handling in C++0x.
* method.c (walk_field_subobs): Split out from...
(synthesized_method_walk): ...here. Set msg before loops.
(process_subob_fn): Check for triviality in union members.
* init.c (sort_mem_initializers): Splice out uninitialized
anonymous unions and union members.
(push_base_cleanups): Don't automatically destroy anonymous unions
and union members.
* lto-streamer-in.c (maybe_fixup_handled_component): Remove.
(maybe_fixup_decls): Likewise.
(input_gimple_stmt): Do not fixup anything.
* lto-streamer-out.c (output_gimple_stmt): Make sure all
non-automatic variable uses are wrapped inside a MEM_REF.
* passes.c (rest_of_decl_compilation): Do not call
* assemble_variable for functions.
* varasm.c (assemble_variable): Remove early exit for functions;
assert that we're given a variable.