Nathan Froyd [Thu, 26 May 2011 13:29:42 +0000 (13:29 +0000)]
make TS_IDENTIFIER be a substructure of TS_TYPED
make TS_IDENTIFIER be a substructure of TS_TYPED
gcc/
* tree.h (struct tree_identifier): Inherit from tree_typed, not
tree_common.
(HT_IDENT_TO_GCC_IDENT): Adjust for said change.
* tree.c (initialize_tree_contains_struct): Mark TS_IDENTIFIER as
TS_BASE instead of TS_COMMON.
* varasm.c (assemble_name): Remove assert.
gcc/c-family/
* c-common.h (struct c_common_identifier): Inherit from tree_typed,
not tree_common.
Jason Merrill [Thu, 26 May 2011 13:22:51 +0000 (09:22 -0400)]
re PR c++/48424 (C++0x parameter packs expansion problem)
PR c++/48424
* decl.c (grokparms): Function parameter packs don't need to
go at the end.
* pt.c (type_unification_real): But they aren't deduced otherwise.
Richard Guenther [Thu, 26 May 2011 13:01:48 +0000 (13:01 +0000)]
re PR tree-optimization/48702 (optimization regression with gcc-4.6 on x86_64-unknown-linux-gnu)
2011-05-26 Richard Guenther <rguenther@suse.de>
PR tree-optimization/48702
* tree-ssa-address.c (create_mem_ref_raw): Create MEM_REFs
only when we know the base address is within bounds.
* tree-ssa-alias.c (indirect_ref_may_alias_decl_p): Do not
assume the base address of TARGET_MEM_REFs is in bounds.
picochip.md (cbranchhi4): No :CC for match_operator.
* config/picochip/picochip.md (cbranchhi4): No :CC for match_operator.
The instruction is then expanded explicitly.
(supported_compare): Callable instruction.
(compare): Likewise.
Jakub Jelinek [Thu, 26 May 2011 10:05:05 +0000 (12:05 +0200)]
re PR tree-optimization/49161 (Fix VRP on switch stmts)
PR tree-optimization/49161
* tree-vrp.c (struct case_info): New type.
(compare_case_labels): Sort case_info structs instead of
trees, and not primarily by CASE_LABEL uids but by
label_for_block indexes.
(find_switch_asserts): Put case labels into struct case_info
array instead of TREE_VEC, adjust sorting, compare label_for_block
values instead of CASE_LABELs.
Ira Rosen [Thu, 26 May 2011 07:50:09 +0000 (07:50 +0000)]
re PR tree-optimization/49038 (-ftree-vectorise introduces reads past end of array)
PR tree-optimization/49038
* tree-vect-loop-manip.c (vect_generate_tmps_on_preheader):
Ensure at least one epilogue iteration if required by data
accesses with gaps.
* tree-vectorizer.h (struct _loop_vec_info): Add new field
to mark loops that require peeling for gaps.
* tree-vect-loop.c (new_loop_vec_info): Initialize new field.
(vect_get_known_peeling_cost): Take peeling for gaps into
account.
(vect_transform_loop): Generate epilogue if required by data
access with gaps.
* tree-vect-data-refs.c (vect_analyze_group_access): Mark the
loop as requiring an epilogue if there are gaps in the end of
the strided group.
Ian Lance Taylor [Wed, 25 May 2011 23:09:14 +0000 (23:09 +0000)]
re PR libstdc++/49060 (use of deleted memory in __gnu_cxx::hashtable::erase)
PR libstdc++/49060
* include/backward/hashtable.h (hashtable::erase): Don't crash if
erasing first and another element with a reference to the other
element.
* testsuite/backward/hash_set/49060.cc: New.
In libobjc/: 2011-05-25 Richard Frith-Macdonald <rfm@gnu.org> David Ayers <ayers@fsfe.org>
In libobjc/:
2011-05-25 Richard Frith-Macdonald <rfm@gnu.org>
David Ayers <ayers@fsfe.org>
PR libobjc/38037
* sendmsg.c: Include objc/hash.h.
(get_implementation): New function, mostly with code from get_imp
updated to support the new +initialize dispatch table logic.
(get_imp): Use get_implementation.
(__objc_responds_to): Updated to support the new +initialize
dispatch table logic.
(class_respondsToSelector): Likewise.
(objc_msg_lookup): Use get_implementation.
(__objc_init_install_dtable): Removed.
(__objc_install_methods_in_dtable): Updated arguments.
(__objc_install_dispatch_table_for_class): Renamed to
__objc_install_dtable_for_class and updated to support the new
+initialize dispatch table logic.
(__objc_update_dispatch_table_for_class): Updated to support the
new +initialize dispatch table logic.
(__objc_forward): Call get_implementation instead of get_imp.
(prepared_dtable_table): New.
(__objc_prepare_dtable_for_class): New.
(__objc_prepared_dtable_for_class): New.
(__objc_get_prepared_imp): New.
(__objc_install_prepared_dtable_for_class): New.
Co-Authored-By: David Ayers <ayers@fsfe.org>
From-SVN: r174221
Nathan Froyd [Wed, 25 May 2011 12:52:10 +0000 (12:52 +0000)]
move TS_EXP to be a substructure of TS_TYPED
move TS_EXP to be a substructure of TS_TYPED
gcc/
* tree.h (struct tree_exp): Inherit from struct tree_typed.
* tree.c (initialize_tree_contains_struct): Mark TS_EXP as TS_TYPED
instead of TS_COMMON.
gcc/lto/
* lto.c (lto_ft_typed): New function.
(lto_ft_common): Call it.
(lto_ft_constructor): Likewise.
(lto_ft_expr): Likewise.
(lto_fixup_prevailing_decls): Check for TS_COMMON before accessing
TREE_CHAIN.
Bernd Schmidt [Wed, 25 May 2011 12:11:42 +0000 (12:11 +0000)]
libgcc2.h (__NW, __NDW): Define using a __gnu_ prefix if LIBGCC2_GNU_PREFIX is defined.
gcc/
* libgcc2.h (__NW, __NDW): Define using a __gnu_ prefix if
LIBGCC2_GNU_PREFIX is defined.
(__N): New macro.
(__powisf2, __powidf2, __powitf2, __powixf2, __bswapsi2, __bswapdi2,
__mulsc3, __muldc3, __mulxc3, __multc3, __divsc3, __divdc3, __divxc3,
__divtc3, __udiv_w_sdiv, __clear_cache, __enable_execute_stack,
__clz_tab): Define using __N.
(__absvsi2, __negvsi2, __addvsi3, __subvsi3, __mulvsi3): Likewise if
COMPAT_SIMODE_TRAPPING_ARITHMETIC.
* target.def (libfunc_gnu_prefix): New hook.
* doc/tm.texi.in (LIBGCC2_GNU_PREFIX): Document.
(TARGET_LIBFUNC_GNU_PREFIX): Add hook.
* doc/tm.texi: Regenerate.
* system.h (LIBGCC2_GNU_PREFIX): Poison.
* optabs.c (gen_libfunc): Take the libfunc_gnu_prefix hook into
account.
(gen_interclass_conv_libfunc, gen_intraclass_conv_libfunc): Likewise.
(init_optabs): Likewise for the bswap libfuncs.
* tree.c (build_common_builtin_nodes): Likewise for complex multiply
and divide.
* config/t-slibgcc-elf-ver (SHLIB_MAPFILES): Use $$(libgcc_objdir).
* config/t-slibgcc-sld (SHLIB_MAPFILES): Likewise.
* libgcc-std.ver: Remove.
* Makefile.in (srcdirify): Handle $$(libgcc_objdir).
* config/frv/t-linux (SHLIB_MAPFILES): Use $$(libgcc_objdir) for
libgcc-std.ver.
* config/i386/t-linux (SHLIB_MAPFILES): Likewise.
* config/mips/t-slibgcc-irix (SHLIB_MAPFILES): Likewise.
* config/rs6000/t-aix43 (SHLIB_MAPFILES): Likewise.
* config/rs6000/t-aix52 (SHLIB_MAPFILES): Likewise.
* config/sparc/t-linux (SHLIB_MAPFILES): Likewise.
* config/i386/t-linux (SHLIB_MAPFILES): Likewise.
* config/i386/t-linux (SHLIB_MAPFILES): Likewise.
* config/fixed-bit.h (FIXED_OP): Define differently depending on
LIBGCC2_GNU_PREFIX. All uses changed not to pass leading underscores.
(FIXED_CONVERT_OP, FIXED_CONVERT_OP2): Likewise.
libgcc/
* libgcc-std.ver.in: New file.
* Makefile.in (LIBGCC_VER_GNU_PREFIX, LIBGCC_VER_SYMBOLS_PREFIX): New
variables.
(libgcc-std.ver): New rule.
* config/t-gnu-prefix: New file.
Jan Hubicka [Wed, 25 May 2011 12:07:38 +0000 (14:07 +0200)]
lto-streamer-out.c (output_record_start): Use lto_output_enum
* lto-streamer-out.c (output_record_start): Use lto_output_enum
(lto_output_tree): Use output_record_start.
* lto-streamer-in.c (input_record_start): Use lto_input_enum
(lto_get_pickled_tree): Use input_record_start.
* lto-section-in.c (lto_section_overrun): Turn into fatal error.
(lto_value_range_error): New function.
* lto-streamer.h (lto_value_range_error): Declare.
(lto_output_int_in_range, lto_input_int_in_range): New functions.
(lto_output_enum, lto_input_enum): New macros.
Vladimir Makarov [Wed, 25 May 2011 02:15:58 +0000 (02:15 +0000)]
re PR rtl-optimization/48757 (internal compiler error: in compensate_edge, at reg-stack.c:2788)
2011-05-24 Vladimir Makarov <vmakarov@redhat.com>
PR rtl-optimization/48757
* ira-build.c (loop_with_eh_edge_p): Rename to
loop_with_complex_edge_p, check edges on complexity, make function
conditional.
(mark_loops_for_removal): Make call of loop_with_complex_edge_p
conditional.
2011-05-24 Vladimir Makarov <vmakarov@redhat.com>
PR rtl-optimization/48757
* gfortran.dg/pr48757.f: New test case.
Eric Botcazou [Tue, 24 May 2011 21:52:12 +0000 (21:52 +0000)]
var-tracking.c (compute_cfa_pointer): Adjust head comment.
* var-tracking.c (compute_cfa_pointer): Adjust head comment.
(vt_initialize): Set PROLOGUE_BB unconditionally.
Add block comment about CFA_BASE_RTX machinery.
Reset FP_CFA_OFFSET to -1 on all invalid paths.
Call vt_init_cfa_base only if FP_CFA_OFFSET isn't equal to -1.
Nicola Pero [Tue, 24 May 2011 21:39:24 +0000 (21:39 +0000)]
In libobjc/: 2011-05-24 Nicola Pero <nicola.pero@meta-innovation.com>
In libobjc/:
2011-05-24 Nicola Pero <nicola.pero@meta-innovation.com>
PR libobjc/48177
* selector.c (__sel_register_typed_name): Use sel_types_match()
instead of strcmp() to compare selector types (Suggestion by
Richard Frith-Macdonald <rfm@gnu.org>).
In gcc/testsuite/:
2011-05-24 Nicola Pero <nicola.pero@meta-innovation.com>
PR libobjc/48177
* objc.dg/pr48177.m: New testcase.
Nicola Pero [Tue, 24 May 2011 21:29:35 +0000 (21:29 +0000)]
In gcc/: 2011-05-24 Nicola Pero <nicola.pero@meta-innovation.com>
In gcc/:
2011-05-24 Nicola Pero <nicola.pero@meta-innovation.com>
PR objc/48187
* c-parser.c (c_parser_objc_class_instance_variables): More robust
parsing of syntax error in ObjC instance variable lists. In
particular, avoid an infinite loop if there is a stray ']'.
Updated error message.
In gcc/cp/:
2011-05-24 Nicola Pero <nicola.pero@meta-innovation.com>,
* parser.c (cp_parser_objc_class_ivars): Deal gracefully with a
syntax error in declaring an ObjC instance variable.
In gcc/testsuite/:
2011-05-24 Nicola Pero <nicola.pero@meta-innovation.com>
PR objc/48187
* objc.dg/pr48187.m: New testcase.
* obj-c++.dg/pr48187.mm: New testcase.
* objc.dg/ivar-extra-semicolon.m: New testcase.
* godump.c (struct godump_container): Add invalid_hash field.
(go_format_type): Return false if type is found in invalid_hash.
(go_output_typedef): Add invalid type to invalid_hash.
(go_finish): Create and delete invalid_hash.
Vladimir Makarov [Tue, 24 May 2011 16:14:51 +0000 (16:14 +0000)]
re PR rtl-optimization/48971 (ICE with -msoft-float -O2)
2011-05-13 Vladimir Makarov <vmakarov@redhat.com>
PR rtl-optimization/48971
* ira.c (setup_pressure_classes): Don't check register move cost
for classes with one registers. Don't add pressure class if there
is a pressure class with the same available hard registers.
Check contains_reg_of_mode. Fix a typo in collecting
temp_hard_regset. Ignore hard registers not belonging to a class.
* gcc.dg/torture/tls/run-gd.c: New test.
* gcc.dg/torture/tls/run-ie.c: New test.
* gcc.dg/torture/tls/run-ld.c: New test.
* gcc.dg/torture/tls/run-le.c: New test.
* lib/target-supports.exp (check_effective_target_tls_runtime):
Build testcase with TLS options.