Eric Botcazou [Mon, 23 Jan 2012 11:19:22 +0000 (11:19 +0000)]
tree-ssa-structalias.c (intra_create_variable_infos): Do not create fake variables for restrict-qualified pointers whose pointed-to...
* tree-ssa-structalias.c (intra_create_variable_infos): Do not create
fake variables for restrict-qualified pointers whose pointed-to type
contains a placeholder.
Vincent Pucci [Mon, 23 Jan 2012 09:44:36 +0000 (09:44 +0000)]
sem_ch12.adb (Analyze_Generic_Subprogram_Declaration): Call to Make_Aspect_For_PPC_In_Gen_Sub_Decl added in ASIS mode.
2012-01-23 Vincent Pucci <pucci@adacore.com>
* sem_ch12.adb (Analyze_Generic_Subprogram_Declaration): Call
to Make_Aspect_For_PPC_In_Gen_Sub_Decl added in ASIS mode.
* sem_prag.adb, sem_prag.ads (Make_Aspect_For_PPC_In_Gen_Sub_Decl): New
routine. In ASIS mode, convert any PPC pragmas into aspects in generic
subprogram declaration in order to enable the analysis of PPC boolean
expressions.
Arnaud Charlet [Mon, 23 Jan 2012 09:41:36 +0000 (10:41 +0100)]
[multiple changes]
2012-01-23 Robert Dewar <dewar@adacore.com>
* sem_ch3.adb (Analyze_Object_Declaration): Properly
handle Current_Value for volatile variables (also propagate
Treat_As_Volatile from type to object).
* sem_ch12.adb (Install_Body): Detect the case
where the enclosing context is a package with a stub body that
has already been replaced by the actual body. In such cases,
the freeze node for the enclosing context must be inserted after
the real body.
2012-01-23 Ed Schonberg <schonberg@adacore.com>
* sem_prag.adb (Analyze_Pragma, case Debug): Freeze the called
subprogram before expanding the pragma into an if-statement with
a block, to ensure that when the subprogram is null its body is
properly generated before expansion.
* sem_ch12.adb (Analyze_Associations): Alphabetize local variables and
constants. Rename Actual_Types to Actuals_To_Freeze. Rename Next_Formal
to Saved_Formal.
Freeze all eligible subprograms which appear as actuals in
the instantiation.
(Has_Fully_Defined_Profile): New routine.
(Renames_Standard_Subprogram): New routine.
(Earlier): Add local variable N. Comment update. Do not use source
locations when trying to determine whether one node precedes another.
2012-01-23 Gary Dismukes <dismukes@adacore.com>
* exp_ch4.adb (Expand_Concatenate): In the case
where the result of a concatentation can be null, set the to
result have both the low and high bounds of the right operand (not
just the high bound, as was the case prior to this fix). Also,
fix the saved high bound setting (Last_Opnd_High_Bound) in the
empty string literal case (should have been low bound minus one,
rather than plus one).
2012-01-23 Thomas Quinot <quinot@adacore.com>
* scos.ads, put_scos.adb, get_scos.adb (Get_SCOs, Put_SCOs): Do not
omit statement SCOs for disabled pragmas.
Jakub Jelinek [Mon, 23 Jan 2012 09:25:52 +0000 (10:25 +0100)]
re PR rtl-optimization/51933 (wrong code due to -free)
PR rtl-optimization/51933
* ree.c (transform_ifelse): Return true right away if dstreg is
already wider or equal to cand->mode.
(enum ext_modified_kind, struct ext_modified, ext_state): New types.
(make_defs_and_copies_lists): Remove defs_list and copies_list
arguments, add state argument, just truncate state->work_list
instead of always allocating and freeing the vector. Assert that
get_defs succeeds instead of returning 2. Changed return type to
bool.
(merge_def_and_ext): Add state argument. If SET_DEST doesn't
have ext_src_mode, see if it has been modified already with the
right kind of extension and has been extended before from the
ext_src_mode. If SET_DEST is already wider or equal to cand->mode,
just return true. Remember the original mode in state->modified
array.
(combine_reaching_defs): Add state argument. Don't allocate and
free here def_list, copied_list and vec vectors, instead just
VEC_truncate the vectors in *state. Don't handle outcome == 2
here.
(find_and_remove_re): Set DF_DEFER_INSN_RESCAN df flag.
Add state variable, clear vectors in it, initialize state.modified
if needed. Free all the vectors at the end and state.modified too.
Don't skip a candidate if the extension expression has been modified.
Arnaud Charlet [Mon, 23 Jan 2012 08:55:13 +0000 (09:55 +0100)]
[multiple changes]
2012-01-23 Ed Schonberg <schonberg@adacore.com>
* sem_ch6.adb (Analyze_Subprogram_Declaration): Do not set the
Corresponding_Body on a defaulted null formal subprogram.
* sem_ch12.adb (Check_Formal_Package_Instance): No check needed
on a defaulted formal subprogram that is a null procedure.
* exp_ch9.adb: Update the comments involving pragma Implemented.
* sem_ch3.adb (Check_Pragma_Implemented (Entity_Id)): Add local
constant Subp_Alias and local variable Impl_Subp. Properly
handle aliases of synchronized wrappers. Code cleanup.
(Check_Pragma_Implemented (Entity_Id; Entity_Id)): Add
Name_Optional as part of the condition.
* sem_prag.adb (Analyze_Pragma): Add "Optional" as one of the
valid choices of implementation kind.
(Check_Arg_Is_One_Of): New routine.
* snames.ads-tmlp: Add Name_Optional.
2012-01-23 Ed Schonberg <schonberg@adacore.com>
* par-ch13.adb: Better error recovery in illegal aspect
specification.
* a-calend.ads, a-calend.adb: Define types int and int_Pointer. Update
the parameter profile of procedure localtime_tzoff and its associated
comment.
(Day_Of_Week): Do not treat the input date as historical
with respect to time zones.
(Split): Do not treat the input
date as historical with respect to time zones. (Time_Of): Do
not treat the input constituents as forming a historical date
with respect to time zones.
(UTC_Time_Offset): Add new formal
parameter Is_Historic. Add local variable Flag. Update the call
to localtime_tzoff.
* a-catizo.ads, a-catizo.adb (UTC_Time_Offset): New routine.
(UTC_Time_Offset (Time)): Update the call to
Time_Zone_Operations.UTC_Time_Offset.
* sysdep.c (__gnat_localtime_tzoff): Update parameter
profile. Split the processing of offsets on Windows into two - one
part of historic time stamps and the other for the current time.
* 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