* snames.ads-tmpl: Add Name_Synchronization.
* aspects.ads, aspects.adb: Add Aspect_Synchronization to
enumeration type and related maps.
* sem_ch13.adb (Analyze_Aspect_Specifications): Handle Aspect
Synchronization, build corresponding pragma Implemented.
* sem_util.adb (Implementation_Kind): Handle both explicit and
implicit pragma_argument association to retrieve the given
synchronization mode.
Arnaud Charlet [Mon, 23 Jan 2012 08:33:32 +0000 (09:33 +0100)]
[multiple changes]
2012-01-23 Gary Dismukes <dismukes@adacore.com>
* exp_util.adb (Is_Iterated_Container): Test
Is_Entity_Name when searching for calls to the default iterator,
to avoid blowing up on indirect calls which have an explicit
dereference as the call name.
2012-01-23 Thomas Quinot <quinot@adacore.com>
* errout.adb (Set_Msg_Node): For an N_Expanded_Name, output
the complete expanded name, rather than just its Selector_Name.
2012-01-23 Thomas Quinot <quinot@adacore.com>
* a-textio.adb (Put): Rewrite one-parameter Character version to
just call the two-parameter one with Current_Out.
* freeze.adb (Check_Current_Instance): Issue an
error when the prefix of 'Unchecked_Access or 'Access does not
denote a legal aliased view of a type.
(Freeze_Record_Type): Do not halt the processing of record components
once the Has_Controlled_Component is set as this bypasses the remaining
checks.
(Is_Aliased_View_Of_Type): New routine.
2012-01-23 Thomas Quinot <quinot@adacore.com>
* errout.ads, freeze.adb: Minor reformatting.
2012-01-23 Thomas Quinot <quinot@adacore.com>
* sem_ch10.adb, sem_prag.adb: Remove redundant apostrophes in error
messages.
2012-01-23 Olivier Hainque <hainque@adacore.com>
* adadecode.c (__gnat_decode): Deal with empty input early,
preventing potential erroneous memory access later on.
Eric Botcazou [Sun, 22 Jan 2012 14:35:39 +0000 (14:35 +0000)]
re PR rtl-optimization/51924 (wrong code with -O -free -fno-rename-registers -ftree-vectorize -funroll-loops)
PR rtl-optimization/51924
* ree.c (combine_set_extension): Improve debugging message.
(combine_reaching_defs): Likewise.
(get_defs): Rename confusingly named variable.
(find_and_remove_re): Skip a candidate if the extension expression has
been modified.
Eric Botcazou [Sat, 21 Jan 2012 14:58:33 +0000 (14:58 +0000)]
re PR ada/46192 (wrong code for renaming of volatile packed array with address clause)
PR ada/46192
* gcc-interface/decl.c (gnat_to_gnu_entity) <object>: In the case of a
renaming, preserve the volatileness through the indirection, if any.
Jakub Jelinek [Fri, 20 Jan 2012 22:06:42 +0000 (23:06 +0100)]
re PR tree-optimization/51914 ([4.7] vect-intfloat-conversion4a/b tests fail for arm-linux-gnueabi)
PR tree-optimization/51914
* tree-vect-stmts.c (vectorizable_conversion): For
cvt_type && modifier == WIDEN, put temporary with cvt_type
at the beginning of vec_dsts and set vec_dest to temporary
with vectype_out.
PR debug/45682
* dwarf2out.c (copy_declaration_context): Return ref to parent
of declaration DIE, if necessary.
(remove_child_or_replace_with_skeleton): Add new parameter; update
caller. Place skeleton DIE under parent DIE of original declaration.
Move call to copy_declaration_context to here ...
(break_out_comdat_types): ... from here.
gcc/testsuite/
PR debug/45682
* g++.dg/debug/dwarf2/nested-3.C: New test.
Vladimir Makarov [Thu, 19 Jan 2012 20:46:31 +0000 (20:46 +0000)]
re PR rtl-optimization/40761 (IRA memory hog for insanely nested loops)
2012-01-19 Vladimir Makarov <vmakarov@redhat.com>
PR rtl-optimization/40761
* ira-int.h (struct ira_loop_tree_node): Add comment for member
loop. Add new member loop_num.
(IRA_LOOP_NODE_BY_INDEX): Modify the check.
(ira_build): Remove the parameter.
* ira.c (ira_print_disposition): Use loop_num instead of
loop->num.
(ira.c): Do not build CFG loops for one region allocation. Remove
argument from ira_build call.
* ira-build.c (init_loop_tree_node): New function.
(create_loop_tree_nodes): Use it. Separate the case when CFG
loops are not built.
(more_one_region_p): Check current_loops.
(finish_loop_tree_nodes): Separate the case when CFG loops are not
built.
(add_loop_to_tree): Process loop equal to NULL too.
(form_loop_tree): Separate the case when CFG loops are not built.
Use explicitly number for the root.
(rebuild_regno_allocno_maps, create_loop_tree_node_allocnos): Add
an assertion.
(ira_print_expanded_allocno, loop_compare_func): Use loop_num
instead of loop->num.
(mark_loops_for_removal): Ditto. Use loop_num instead of
loop->num.
(mark_all_loops_for_removal): Ditto.
(remove_unnecessary_regions): Separate the case when CFG loops
are not built.
(ira_build): Remove the parameter. Use explicit number of regions
when CFG loops are not built.
* ira-color.c (print_loop_title): Separate the case for the root
node. Use loop_num instead of loop->num.
(move_spill_restore): Use loop_num instead of loop->num.
* ira-emit.c (setup_entered_from_non_parent_p): Add an assertion.
(change_loop): Ditto.
(change_loop): Use loop_num instead of loop->num.
Jakub Jelinek [Thu, 19 Jan 2012 18:58:02 +0000 (19:58 +0100)]
re PR libmudflap/40778 (Mudflap instrumentation missing in cloned function.)
PR libmudflap/40778
* tree-mudflap.c (mf_artificial): New function.
(execute_mudflap_function_ops, execute_mudflap_function_decls,
mx_register_decls, mudflap_enqueue_decl): Use it.
Michael Matz [Thu, 19 Jan 2012 15:06:04 +0000 (15:06 +0000)]
re PR tree-optimization/46590 (long compile time with -O2 and many loops)
PR tree-optimization/46590
* cfgexpand.c (add_scope_conflicts_1): New old_conflicts argument,
use it in remembering which conflicts we already created.
(add_scope_conflicts): Adjust call to above, (de)allocate helper
bitmap.
Jakub Jelinek [Thu, 19 Jan 2012 10:43:54 +0000 (11:43 +0100)]
re PR bootstrap/50237 (bootstrap comparison failure for libcpp/lex.o)
PR bootstrap/50237
* config/initfini-array.h: Guard content of the header
with #ifdef HAVE_INITFINI_ARRAY.
* configure.ac: Move gcc_AC_INITFINI_ARRAY much later into the file.
Add initfini-array.h to tm_file here.
* acinclude.m4 (gcc_AC_INITFINI_ARRAY): For non-ia64 do a linker
test.
* config.gcc: Don't add initfini-array.h to tm_file here.
* configure: Regenerated.
PR rtl-optimization/51505
* df-problems.c (df_kill_notes): New parameter live. Update comment.
Remove REG_EQUAL/REG_EQUIV notes referring to dead registers.
(df_note_bb_compute): Update the call to df_kill_notes.
François Dumont [Wed, 18 Jan 2012 20:17:57 +0000 (20:17 +0000)]
re PR libstdc++/51866 ([c++0x][4.7 Regression] unordered_multiset compares moved-out values)
2012-01-18 François Dumont <fdumont@gcc.gnu.org>
Roman Kononov <roman@binarylife.net>
PR libstdc++/51866
* include/bits/hashtable.h (_Hashtable<>::_M_insert(_Arg, false_type)):
Do not keep a reference to a potentially moved instance.
* testsuite/23_containers/unordered_multiset/insert/51866.cc: New.
* testsuite/23_containers/unordered_multimap/insert/51866.cc: New.
Co-Authored-By: Roman Kononov <roman@binarylife.net>
From-SVN: r183285
Andreas Krebbel [Tue, 17 Jan 2012 20:37:46 +0000 (20:37 +0000)]
re PR middle-end/50325 (76 new fails with rev. 177691)
gcc/
2012-01-17 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
Richard Sandiford <rdsandiford@googlemail.com>
PR middle-end/50325
PR middle-end/51192
* optabs.h (simplify_expand_binop): Declare.
* optabs.c (simplify_expand_binop): Make global.
* expmed.c (store_bit_field_1): Use simplify_expand_binop on big
endian targets if the source cannot be exactly covered by word
mode chunks.
Co-Authored-By: Richard Sandiford <rdsandiford@googlemail.com>
From-SVN: r183262
Richard Guenther [Tue, 17 Jan 2012 14:52:57 +0000 (14:52 +0000)]
re PR middle-end/51782 (-ftree-sra: Missing address-space information leads to wrong)
2012-01-17 Richard Guenther <rguenther@suse.de>
PR middle-end/51782
* expr.c (expand_assignment): Take address-space information
from the address operand of MEM_REF and TARGET_MEM_REF.
(expand_expr_real_1): Likewise.
Tobias Burnus [Tue, 17 Jan 2012 14:34:37 +0000 (15:34 +0100)]
re PR fortran/51869 (Realloc on assignment wrongly assumes that MALLOC returnes '\0'-set memory)
2012-01-17 Tobias Burnus <burnus@net-b.de>
Janne Blomqvist <jb@gcc.gnu.org>
PR fortran/51869
* trans-expr.c (alloc_scalar_allocatable_for_assignment): Nullify
LHS after allocation, if it has allocatable components.
* f95-lang.c (gfc_init_builtin_functions): Add BUILT_IN_CALLOC.
Jakub Jelinek [Tue, 17 Jan 2012 10:38:38 +0000 (11:38 +0100)]
re PR tree-optimization/51877 (XEmacs miscompilation due to tail merging)
PR tree-optimization/51877
* tree-ssa-tail-merge.c (gimple_equal_p): Don't return true whenever
call arguments and fndecls compare equal, instead return false if they
don't. Return true only if lhs1 and lhs2 are either both NULL, or
both SSA_NAMEs that are valueized the same, or they satisfy
operand_equal_p.
Tobias Burnus [Mon, 16 Jan 2012 19:50:11 +0000 (20:50 +0100)]
re PR fortran/51809 ([OOP] ICE (segfault) depending on USE statements order)
2012-01-16 Tobias Burnus <burnus@net-b.de>
PR fortran/51809
* class.c (gfc_find_derived_vtab): Mark __vtab and
__def_init as FL_VARIABLE not as FL_PARAMETER.
* expr.c (gfc_simplify_expr): Remove special
handling of __vtab.
* resolve.c (resolve_values): Ditto.
* trans-decl.c (gfc_get_symbol_decl): Mark __vtab
and __def_init as TREE_READONLY.
re PR fortran/48426 ([patch] Quad precision promotion)
2012-01-16 Zydrunas Gimbutas <gimbutas@cims.nyu.edu>
Andreas Kloeckner <kloeckner@cims.nyu.edu>
Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/48426
* gfortran.h (gfc_option_t): Add members flag_*_kind to store kind.
* lang.opt: Add options -freal-4-real-8, -freal-4-real-10,
-freal-4-real-16, -freal-8-real-4, -freal-8-real-10, -freal-8-real-16
and -finteger-4-integer-8. User-desired type conversion information.
* decl.c (gfc_match_old_kind_spec,kind_expr): Type conversions
in declaration parsing.
* trans-types.c (gfc_init_kinds): User-specified type conversion
checked for current backend.
* primary.c (match_integer_constant,match_real_constant): Implement
type conversion in constant parsing.
* options.c (gfc_init_options,gfc_handle_option): Translate input
options to flags in internal options data structure.
* invoke.texi: Document new options. Re-order options in Options
summary section.
Paul Thomas [Mon, 16 Jan 2012 17:48:26 +0000 (17:48 +0000)]
trans-array.c (gfc_trans_create_temp_array): In the case of a class array temporary...
2012-01-16 Paul Thomas <pault@gcc.gnu.org>
* trans-array.c (gfc_trans_create_temp_array): In the case of a
class array temporary, detect a null 'eltype' on entry and use
'initial' to provde the class reference and so, through the
vtable, the element size for the dynamic type.
* trans-stmt.c (gfc_conv_elemental_dependencies): For class
expressions, set 'eltype' to null and pass the values via the
'initial' expression.
2012-01-16 Paul Thomas <pault@gcc.gnu.org>
* gfortran.dg/class_array_3.f03: Remove the explicit loop in
subroutine 'qsort' and use index array to assign the result.