atomic: Create and use maybe_emit_atomic_test_and_set.
* optabs.c (CODE_FOR_atomic_test_and_set): Provide default.
(maybe_emit_atomic_test_and_set): New.
(expand_sync_lock_test_and_set): Use it.
(expand_atomic_test_and_set): Likewise.
* doc/extend.texi (__atomic_test_and_set): Adjust the docs to match
the implementation; clarify implementation defined details.
* doc/md.texi (atomic_test_and_set): Document.
Georg-Johann Lay [Tue, 24 Jan 2012 12:38:52 +0000 (12:38 +0000)]
re PR target/49868 (Implement named address space to place/access data in flash memory)
PR target/49868
* doc/extend.texi (AVR Named Address Spaces): Move sample code up.
Remove note on size/offset limitation.
(AVR Variable Attributes): Add example how to read data located
with progmem. Refer to named address spaces.
* doc/invoke.texi (AVR Options): Fix typo.
Richard Guenther [Tue, 24 Jan 2012 09:17:01 +0000 (09:17 +0000)]
[multiple changes]
2012-01-24 Richard Guenther <rguenther@suse.de>
Forward-port to trunk
2010-09-21 Jakub Jelinek <jakub@redhat.com>
PR middle-end/45678
* expr.c (expand_expr_real_1) <case VIEW_CONVERT_EXPR>: If
op0 isn't sufficiently aligned and there is movmisalignM
insn for mode, use it to load op0 into a temporary register.
Uros Bizjak [Tue, 24 Jan 2012 07:23:57 +0000 (08:23 +0100)]
target.h (gtm_jmpbuf): Move rip to the end of structure.
* config/x86/target.h (gtm_jmpbuf) [__x86_64__]: Move rip to the
end of structure.
* config/x86/sjlj.S (_ITM_beginTransaction) [__x86_64__]: Update
offset values. Do not copy return address. Decrement stack
by 56 bytes only.
(GTM_longjump) [__x86_64__]: Update offset values.
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.