Arnaud Charlet [Mon, 21 Nov 2011 13:31:33 +0000 (14:31 +0100)]
[multiple changes]
2011-11-21 Arnaud Charlet <charlet@adacore.com>
* s-taprop-irix.adb, s-taprop-solaris.adb (Create_Task): Use
Unrestricted_Access to deal with fact that we properly detect the
error if Access is used.
* gcc-interface/Make-lang.in: Update dependencies.
2011-11-21 Yannick Moy <moy@adacore.com>
* exp_prag.adb (Expand_Pragma_Check): Place error on first character
of expression.
* sem_res.adb (Resolve_Short_Circuit): Place error on first
character of expression.
2011-11-21 Yannick Moy <moy@adacore.com>
* exp_util.adb (Remove_Side_Effects): Do nothing in Alfa mode.
* exp_attr.adb (Expand_N_Attribute_Reference, case
Max_Size_In_Storage_Elements): Account for the size of the
hidden list header which precedes controlled objects allocated
on the heap.
* rtsfind.ads: Add RE_Header_Size_With_Padding to the runtime
tables.
* sinfo.adb (Header_Size_Added): New routine.
(Set_Header_Size_Added): New routine.
* sinfo.ads: Add flag Controlled_Header_Added along with
associated comment.
(Header_Size_Added): New inlined routine.
(Set_Header_Size_Added): New inlined routine.
* s-stposu.adb (Allocate_Any_Controlled): Use
Header_Size_With_Padding to calculate the proper
size of the header.
(Deallocate_Any_Controlled): Use
Header_Size_With_Padding to calculate the proper size
of the header. (Header_Size_With_Padding): New routine.
(Nearest_Multiple_Rounded_Up): Removed along with its uses.
* s-stposu.ads (Header_Size_With_Padding): New routine.
2011-11-21 Ed Schonberg <schonberg@adacore.com>
* aspects.adb: Aspect specifications are allowed on renaming
declarations
* par-ch6.adb (P_Subprogram): Parse aspect specifications in a
subprogram renaming declaration
Arnaud Charlet [Mon, 21 Nov 2011 13:23:52 +0000 (14:23 +0100)]
[multiple changes]
2011-11-21 Tristan Gingold <gingold@adacore.com>
* env.c: Remove unused declaration.
2011-11-21 Pascal Obry <obry@adacore.com>
* s-os_lib.ads: Minor style fix.
2011-11-21 Pascal Obry <obry@adacore.com>
* adaint.c (__gnat_dup2): When fd are stdout, stdin or stderr and
identical, do nothing on Windows XP.
2011-11-21 Yannick Moy <moy@adacore.com>
* sem_ch3.adb (Constrain_Index, Process_Range_Expr_In_Decl):
Use Full_Expander_Active instead of Expander_Active to control
the forced evaluation of expressions for the sake of generating
checks.
2011-11-21 Thomas Quinot <quinot@adacore.com>
* init.c: On FreeBSD, stack checking failures may raise SIGBUS.
* exp_imgv.adb (Expand_Width_Attribute): Emit
an error message rather than a warning when pragma Discard_Names
prevents the computation of 'Width. Do not emit an error through
the use of RE_Null.
2011-11-21 Javier Miranda <miranda@adacore.com>
* exp_ch6.adb (Make_Build_In_Place_Call_In_Allocator): Add
implicit type conversion when the type of the allocator is an
interface. Done to force generation of displacement of the "this"
pointer when required.
2011-11-21 Ed Schonberg <schonberg@adacore.com>
* sinfo.ads, sinfo.adb: Corresponding_Spec applies to expression
functions, and is set when the expression is a completion of a
previous declaration.
* sem_ch6.adb (Analyze_Expression_Function): To determine properly
whether an expression function completes a previous declaration,
use Find_Corresponding_Spec, as when analyzing a subprogram body.
Steve Baird [Mon, 21 Nov 2011 12:02:41 +0000 (12:02 +0000)]
sem_util.ads: Update comment describing function Deepest_Access_Level.
2011-11-21 Steve Baird <baird@adacore.com>
* sem_util.ads: Update comment describing function
Deepest_Access_Level.
* sem_util.adb (Deepest_Type_Access_Level): Return Int'Last for a
generic formal type.
(Type_Access_Level): Return library level
for a generic formal type.
* sem_attr.adb (Resolve_Attribute): Replace two Type_Access_Level
calls with calls to Deepest_Type_Access_Level.
* sem_ch3.adb (Analyze_Component_Declaration): replace a
Type_Access_Level call with a call to Deepest_Type_Access_Level.
* sem_res.adb (Resolve_Allocator.Check_Allocator_Discrim_Accessibility):
Replace three Type_Access_Level calls with calls to
Deepest_Type_Access_Level.
(Resolve_Allocator): Replace a Type_Access_Level call with a call to
Deepest_Type_Access_Level.
(Valid_Conversion.Valid_Array_Conversion): Replace a
Type_Access_Level call with a call to Deepest_Type_Access_Level.
Arnaud Charlet [Mon, 21 Nov 2011 11:59:08 +0000 (12:59 +0100)]
[multiple changes]
2011-11-21 Robert Dewar <dewar@adacore.com>
* sinput.ads: Minor comment fix.
2011-11-21 Robert Dewar <dewar@adacore.com>
* exp_attr.adb (Expand_N_Attribute_Reference, case First_Bit,
Last_Bit, Position): Handle 2005 case.
2011-11-21 Robert Dewar <dewar@adacore.com>
* s-atocou-builtin.adb (Decrement): Use Unrestricted_Access
to deal with fact that we properly detect the error if Access
is used.
(Increment): Same fix.
* s-taprop-linux.adb (Create_Task): Use Unrestricted_Access
to deal with fact that we properly detect the error if Access
is used.
* sem_util.adb (Is_Volatile_Object): Properly record that A.B is
volatile if the B component is volatile. This affects the check
for passing such a by reference volatile actual to a non-volatile
formal (which should be illegal)
2011-11-21 Robert Dewar <dewar@adacore.com>
* freeze.adb (Freeze_Enumeration_Type): Make sure to set both
size and alignment for foreign convention enumeration types.
* layout.adb (Set_Elem_Alignment): Redo setting of alignment
when size is set.
2011-11-21 Yannick Moy <moy@adacore.com>
* checks.adb (Apply_Access_Check, Apply_Arithmetic_Overflow_Check,
Apply_Discriminant_Check, Apply_Divide_Check,
Apply_Selected_Length_Checks, Apply_Selected_Range_Checks,
Build_Discriminant_Checks, Insert_Range_Checks, Selected_Length_Checks,
Selected_Range_Checks): Replace reference to Expander_Active
with reference to Full_Expander_Active, so that expansion of
checks is not performed in Alfa mode
2011-11-21 Tristan Gingold <gingold@adacore.com>
* s-taprop-vms.adb (Create_Task): Use Unrestricted_Access to deal with
fact that we properly detect the error if Access is used.
* exp_imgv.adb: Add with and use clause for Errout.
(Expand_Width_Attribute): Emit a warning when in
configurable run-time mode to provide a better diagnostic message.
* sem_ch3.adb (Access_Definition): If the access definition
is itself the return type of an access to function definition
which is ultimately the return type of an access to subprogram
declaration, its scope is the enclosing scope of the ultimate
access to subprogram.
2011-11-21 Steve Baird <baird@adacore.com>
* sem_res.adb (Valid_Conversion): If a conversion was legal
in the body of a generic, then the corresponding conversion is
legal in the expanded body of an instance of the generic.
Robert Dewar [Mon, 21 Nov 2011 11:51:15 +0000 (11:51 +0000)]
sem_ch3.adb: Minor reformatting.
2011-11-21 Robert Dewar <dewar@adacore.com>
* sem_ch3.adb: Minor reformatting.
2011-11-21 Robert Dewar <dewar@adacore.com>
* s-utf_32.adb (Is_UTF_32_Line_Terminator): Recognize NEL as
line terminator.
* sinput.ads: Add section on Handling of Source Line Terminators.
* types.ads (Line_Terminator): Adjust comments.
Robert Dewar [Mon, 21 Nov 2011 11:45:44 +0000 (11:45 +0000)]
frontend.adb (Frontend): Capture restrictions from config files
2011-11-21 Robert Dewar <dewar@adacore.com>
* frontend.adb (Frontend): Capture restrictions from config files
* lib-load.adb (Load_Unit): Save/set/restore restriction pragma
information
* lib-xref.adb (Generate_Reference): Fix handling of obsolescent
references. This was noticed during debugging, but it is not
known if it causes real bugs.
* restrict.ads, restrict.adb: New routines to save/set/restore
non-partition-wide restrictions.
* s-rident.ads: Comment changes for new handling of
No_Elaboration_Code
* sem.adb (Sem): Save/Set/Restore non-partition-wide restrictions
* sem_ch10.adb (Analyze_Compilation_Unit): Remove incomplete
attempt to save/restore non-partition-wide restrictions (now
this work is all done in Sem).
* sem_prag.adb (Process_Restrictions_Or_Restriction_Warnings):
Special handling for restriction No_Elaboration_Code.
2011-11-21 Robert Dewar <dewar@adacore.com>
* gnat_ugn.texi: Document new handling of restrictions pragmas.
* vms_data.ads: Add qualifiers for new gnatpp options
'--call_threshold' and '--par_threshold".
* gnat_ugn.texi: Add description for new gnatpp options
'--call_threshold' and '--par_threshold".
Arnaud Charlet [Mon, 21 Nov 2011 11:26:14 +0000 (12:26 +0100)]
[multiple changes]
2011-11-21 Robert Dewar <dewar@adacore.com>
* exp_ch6.adb: Minor reformatting.
2011-11-21 Ed Schonberg <schonberg@adacore.com>
* sem_ch12.adb (Check_Formal_Package_Instance): If a formal
subprogram of the formal package is covered by an others
association with a box initialization, no check is needed
against the actual in the instantiation of the formal package.
2011-11-21 Robert Dewar <dewar@adacore.com>
* sem_elab.adb (Check_Internal_Call_Continue): Suppress junk
elab warning from within precondition/postcondition etc.
Arnaud Charlet [Mon, 21 Nov 2011 11:22:47 +0000 (12:22 +0100)]
[multiple changes]
2011-11-21 Ed Schonberg <schonberg@adacore.com>
* exp_ch6.adb (Expand_Actuals): In Ada 2012, a function call
with out parameters may generate assignments to force constraint
checks. These checks must be properly placed in the code after the
declaration or statement that contains the call.
2011-11-21 Fedor Rybin <frybin@adacore.com>
* gnat_ugn.texi: Adding info on current gnattest limitations an
support of -X option.
Georg-Johann Lay [Mon, 21 Nov 2011 09:00:26 +0000 (09:00 +0000)]
avr.h (struct base_arch_s): Add field sfr_offset.
* config/avr/avr.h (struct base_arch_s): Add field sfr_offset.
* config/avr/avr-devices.c: Ditto. And initialize it.
* config/avr/avr-c.c (avr_cpu_cpp_builtins): New built-in define
__AVR_SFR_OFFSET__.
* config/avr/avr-protos.h (out_movqi_r_mr, out_movqi_mr_r): Remove.
(out_movhi_r_mr, out_movhi_mr_r): Remove.
(out_movsi_r_mr, out_movsi_mr_r): Remove.
* config/avr/avr.md (*cbi, *sbi): Use %i instead of %m-0x20.
(*insv.io, *insv.not.io): Ditto.
* config/avr/avr.c (out_movsi_r_mr, out_movsi_mr_r): Make static.
(print_operand): Implement "%i" to print address as I/O address.
(output_movqi): Clean up call of out_movqi_mr_r.
(output_movhi): Clean up call of out_movhi_mr_r.
(avr_file_start): Use avr_current_arch->sfr_offset instead of
magic -0x20. Use TMP_REGNO, ZERO_REGNO instead of 0, 1.
(avr_out_sbxx_branch): Use %i instead of %m-0x20.
(out_movqi_r_mr, out_movqi_mr_r): Ditto. And make static.
(out_movhi_r_mr, out_movhi_mr_r): Ditto. And use avr_asm_len.
(out_shift_with_cnt): Clean up code: Use avr_asm_len.
(output_movsisf): Use output_reload_insisf for all CONSTANT_P sources.
(avr_out_movpsi): USE avr_out_reload_inpsi for all CONSTANT_P sources.
Clean up call of avr_out_store_psi.
(output_reload_in_const): Don't cut symbols longer than 2 bytes.
(output_reload_insisf): Filter CONST_INT_P or CONST_DOUBLE_P to
try if setting pre-cleared register is advantageous.
(avr_out_plus_1): Use gen_int_mode instead of GEN_INT.
Jason Merrill [Mon, 21 Nov 2011 02:04:54 +0000 (21:04 -0500)]
re PR c++/48322 ([C++0x] Plural variadic parameter packs are not expanded well)
PR c++/48322
gcc/cp/
* cp-tree.h (PACK_EXPANSION_EXTRA_ARGS): New.
* cp-tree.def (EXPR_PACK_EXPANSION): Add an operand for it.
* pt.c (tsubst_pack_expansion): Set and use it.
(iterative_hash_template_arg): Hash it.
(template_args_equal): Compare it.
(comp_template_args_with_info): Handle nulls.
* tree.c (cp_walk_subtrees): Walk it.
* typeck.c (structural_comptypes): Compare it.
* ptree.c (cxx_print_type): Print it.
libstdc++-v3/
* include/std/tuple (tuple(_UElements&&...)): Fix SFINAE.
Jonathan Wakely [Sun, 20 Nov 2011 19:56:48 +0000 (19:56 +0000)]
appendix_contributing.xml: Do not use "here" as link text.
* doc/xml/manual/appendix_contributing.xml: Do not use "here" as link
text.
* doc/xml/faq.xml: Likewise. Do not request standard library issues
to be reported to the libstdc++ mailing list.
* doc/xml/manual/status_cxx2011.xml: Document implementation-defined
behaviour.
* doc/xml/manual/status_cxxtr1.xml: Likewise.
* doc/xml/manual/utilities.xml: Fix grammar, probably caused by a
global search and replace of "part" by "chapter".
* doc/xml/manual/shared_ptr.xml: Remove outdated information.
* doc/xml/manual/messages.xml: Be more specific about systems where
using 'int' for catalog handle is not a problem, mentioned LWG issue.
Uros Bizjak [Sun, 20 Nov 2011 19:17:08 +0000 (20:17 +0100)]
i386.md (UNSPEC_MOVNTI): Remove.
* config/i386/i386.md (UNSPEC_MOVNTI): Remove.
(UNSPEC_MOVNTQ): New unspec.
* config/i386/mmx.md (sse_movntq): Rename from sse_movntdi.
Use UNSPEC_MOVNTQ instead of UNSPEC_MOVNT.
* config/i386/sse.md (sse2_movnti<mode>): Use UNSPEC_MOVNT instead of
UNSPEC_MOVNTI.
(STORENT_MODE): Add DI and V4DI modes.
Eric Botcazou [Sun, 20 Nov 2011 11:41:57 +0000 (11:41 +0000)]
exp_ch6.adb (Make_Build_In_Place_Call_In_Assignment): Declare NEW_EXPR local variable and attach the temporary to it.
2011-11-20 Eric Botcazou <ebotcazou@adacore.com>
* exp_ch6.adb (Make_Build_In_Place_Call_In_Assignment):
Declare NEW_EXPR local variable and attach the
temporary to it. Set Is_Known_Non_Null on the temporary.
(Make_Build_In_Place_Call_In_Object_Declaration): Likewise.
* exp_util.adb (Remove_Side_Effects): Set Is_Known_Non_Null on
the temporary created to hold the 'Reference of the expression,
if any.
* checks.adb (Install_Null_Excluding_Check): Bail out for the
Get_Current_Excep.all.all idiom generated by the expander.
Eric Botcazou [Sun, 20 Nov 2011 10:29:22 +0000 (10:29 +0000)]
trans.c (struct language_function): Add GNAT_RET.
* gcc-interface/trans.c (struct language_function): Add GNAT_RET.
(f_gnat_ret): New macro.
(struct nrv_data): Add GNAT_RET.
(finalize_nrv_unc_r): New helper function.
(finalize_nrv): Add GNAT_RET parameter. Copy it into DATA. If the
function returns unconstrained, use finalize_nrv_unc_r as callback.
(return_value_ok_for_nrv_p): Test the alignment of RET_OBJ only if
RET_OBJ is non-null.
(Subprogram_Body_to_gnu): Pass GNAT_RET to finalize_nrv.
(gnat_to_gnu) <N_Return_Statement>: In the return-unconstrained case,
if optimization is enabled, record candidates for the Named Return
Value optimization.
Eric Botcazou [Sun, 20 Nov 2011 10:03:11 +0000 (10:03 +0000)]
decl.c (gnat_to_gnu_entity): Adjust call to components_to_record.
* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Record_Type>: Adjust
call to components_to_record.
(components_to_record): Add FIRST_FREE_POS parameter. For the variant
part, reuse enclosing union even if there is a representation clause
on the Unchecked_Union. If there is a variant part, compute the new
first free position, if any. Adjust call to self. Use a single field
directly only if it hasn't got a representation clause or is placed at
offset zero. Create the variant part at offset 0 if all the fields
down to this level have a rep clause. Do not chain the variant part
immediately and adjust downstream.
Do not test ALL_REP before moving the fields without rep clause to the
previous level. Call create_rep_part to create the REP part and force
a minimum size on it if necessary. Do not chain it immediately.
Create a fake REP part if there are fields without rep clause that need
to be laid out starting from FIRST_FREE_POS.
At the end, chain the REP part and then the variant part.
(create_rep_part): New function.
(get_rep_part): Minor tweak.
* gcc-interface/utils.c (tree_code_for_record_type): Minor tweak.
Patrick Marlier [Sat, 19 Nov 2011 19:29:18 +0000 (19:29 +0000)]
re PR middle-end/51211 (ICE: SIGSEGV in execute_tm_mark (trans-mem.c:2242) with -fgnu-tm -O -freorder-blocks -ftracer --param hot-bb-frequency-fraction=1 and __transaction_atomic)
Tobias Burnus [Sat, 19 Nov 2011 09:26:33 +0000 (10:26 +0100)]
re PR fortran/51207 ([OOP] Mark __def_init_... as FL_PARAMETER)
2011-11-19 Tobias Burnus <burnus@net-b.de>
PR fortran/51207
* class.c (gfc_find_derived_vtab): Mark __def_init as PARAMETER
and hence as TREE_READONLY; add subroutine attribute to
__copy_ procedure.
PR fortran/50640
* trans.h (GFC_DECL_PUSH_TOPLEVEL): New DECL_LANG_FLAG_7.
* trans-decl.c (gfc_get_symbol_decl): Mark __def_init and vtab
as GFC_DECL_PUSH_TOPLEVEL.
(gfc_generate_function_code): If GFC_DECL_PUSH_TOPLEVEL, push it there.
(build_function_decl): Push __copy_ procedure to the toplevel.
* config/avr/avr.c (AVR_SECTION_PROGMEM): Change define to cover
3 bits instead of just 1.
(xstring_empty, xstring_e, rampz_rtx): New static GTYed variables.
(progmem_section): Change from section to array of sections.
(progmem_section_prefix): New static variable.
(avr_file_start): Print set for __RAMPZ__
(avr_option_override): Move initialization of RTXes from here...
(avr_init_expanders): ...to this new function.
(avr_pgm_segment): New static function.
(avr_decl_pgm_p): Handle error_mark_node.
(avr_mem_pgmx_p, avr_decl_pgmx_p): New static functions.
(avr_out_xload, avr_find_unused_d_reg): New static functions.
(expand_prologue, expand_epilogue): Use rampz_rtx.
(print_operand): Hande CONST_STRING.
(avr_xload_libgcc_p): New static function.
(avr_out_lpm_no_lpmx, avr_out_lpm): Handle ELPM.
(avr_progmem_p): Return 2 for 24-bit flash address space.
(avr_out_sbxx_branch): Clean-up code from ASn macros.
(out_movqi_r_mr, out_movqi_mr_r): Ditto. And recognize RAMPZ's
address and print symbolically.
(avr_asm_named_section, avr_section_type_flags,
avr_encode_section_info, avr_asm_select_section,
avr_addr_space_address_mode, avr_addr_space_pointer_mode,
avr_addr_space_legitimate_address_p, avr_addr_space_convert,
avr_addr_space_legitimize_address): Handle new address spaces.
(avr_output_progmem_section_asm_op): New static function.
(avr_asm_init_sections): Initialize progmem_section[].
(adjust_insn_length): Handle ADJUST_LEN_XLOAD, ADJUST_LEN_MOVMEM.
(avr_const_address_lo16): New static function.
(avr_assemble_integer): Use it to handle 3-byte integers.
(avr_emit_movmemhi, avr_out_movmem): New functions.
* config/avr/predicates.md (nox_general_operand): Handle new
address spaces.
* config/avr/avr.md (unspec): Add UNSPEC_MOVMEM.
(adjust_len): Add xload, movmem.
(SP_ADDR): New define_constants.
(isa): Add "lpm", "lpmx", "elpm", "elpmx".
(enabled): Handle them.
(load<mode>_libgcc): New expander.
(*load.<mode>.libgcc): Rename to load_<mode>_libgcc.
(xload8_A, xload<mode>_A): New insn-and-splits.
(xload_8, xload_<mode>_libgcc, xload_<mode>, loadmem_elpm): New insns.
(mov<mode>): Handle new address spaces.
(movmemhi): Rewrite using avr_emit_movmemhi.
(MOVMEM_r_d): New mode attribute.
(movmem_<mode>, movmem_qi_elpm): New insns.
(setmemhi, *clrmemqi, *clrmemhi, strlenhi, *strlenhi): Unquote
C-code. Use label instead of hard-coded instrunction lengths.
Rainer Orth [Fri, 18 Nov 2011 16:15:59 +0000 (16:15 +0000)]
Support libitm on Solaris 8 and 9/x86 with Sun as
* config/generic/asmcfi.h: Fix comment.
* config/x86/sjlj.S (_ITM_beginTransaction): Provide ELF PIC code
sequence without .hidden support, error for non-ELF targets.
(GTM_longjmp) [__ELF__]: Only use .hidden if
HAVE_ATTRIBUTE_VISIBILITY.
Harti Brandt [Fri, 18 Nov 2011 16:09:29 +0000 (16:09 +0000)]
re PR libstdc++/51209 (The template _M_find_node in hashtable.h has a bad return value)
2011-11-18 Harti Brandt <hartmut.brandt@dlr.de>
PR libstdc++/51209
* include/bits/hashtable.h (_Hashtable<>::_M_find_node): Return
nullptr when no node is found.
* include/tr1/hashtable.h (_Hashtable<>::_M_find_node): Return
zero when no node is found.
Iain Sandoe [Fri, 18 Nov 2011 13:19:25 +0000 (13:19 +0000)]
re PR target/50678 (FAIL: c52104y on x86_64-apple-darwin10)
gcc/ada:
PR target/50678
* init.c (__gnat_error_handler) [Darwin]: Move work-around to the
bug filed as radar #10302855 from __gnat_error_handler ...
... to (__gnat_adjust_context_for_raise) [Darwin]: New.
(HAVE_GNAT_ADJUST_CONTEXT_FOR_RAISE) [Darwin]: Define.
(__gnat_error_handler) [Darwin]: Use __gnat_adjust_context_for_raise.
Uros Bizjak [Fri, 18 Nov 2011 09:54:02 +0000 (10:54 +0100)]
re PR tree-optimization/51118 (ICE: tree check: expected tree that contains ‘typed’ structure, have ‘block’ in fold_checksum_tree, at fold-const.c:14160)
PR tree-optimization/51118
* fold-const.c (fold_checksum_tree): Check for TS_TYPED structure
before using TREE_TYPE accessor on expr.
Jan Hubicka [Fri, 18 Nov 2011 02:18:28 +0000 (03:18 +0100)]
re PR target/51134 (x86 memset/memcpy expansion is broken)
PR bootstrap/51134
* i386.c (atom_cost): Fix 32bit memset description.
(expand_set_or_movmem_via_loop_with_iter): Output proper bounds check for epilogue loops.
(expand_movmem_epilogue): Handle epilogues up to size 15 w/o producing byte loop.
(decide_alg): sse_loop is not useable wthen SSE2 is disabled; when not optimizing always
use rep movsb or lincall; do not produce word sized loops when optimizing memset for
size (to avoid need for large constants).
(ix86_expand_movmem): Get into sync with ix86_expand_setmem; choose unroll factors
better; always do 128bit moves when producing SSE loops; do not produce loopy epilogue
when size is too small.
(promote_duplicated_reg_to_size): Do not look into desired alignments when
doing vector expansion.
(ix86_expand_setmem): Track better when promoted value is available; choose unroll factors
more sanely.; output loopy epilogue only when needed.
* builtins.c (expand_builtin): Remove 4th parameter representing
weak/strong mode when __atomic_compare_exchange becomes a library call.
* gcc.dg/atomic-generic-aux.c (__atomic_compare_exchange): Fail if
memory model parameters don't match expected values.
* gcc.dg/atomic-generic.c: Pass specific memory model parameters to
__atomic_compare_exchange.
* gcc.dg/atomic-noinline.c: Pass specific memory model parameters to
__atomic_compare_exchange_n.
* gcc.dg/atomic-noinline-aux.c (__atomic_compare_exchange_2): Remove
weak/strong parameter and fail if memory models aren't correct.
Uros Bizjak [Thu, 17 Nov 2011 19:56:39 +0000 (20:56 +0100)]
gcc-simulate-thread.exp (simulate-thread): Run on all targets.
* lib/gcc-simulate-thread.exp (simulate-thread): Run on all targets.
Look for simulate_thread_done to determine working gdb. Reduce timeout
to 10 seconds and fail when timeout occurs. Improve error messages.
Unify implementations of __builtin_mem_*_fence and __sync_synchronize.
* builtins.c (expand_builtin_mem_thread_fence): Remove.
(expand_builtin_mem_signal_fence): Remove.
(expand_builtin_atomic_thread_fence): Use expand_mem_thread_fence.
(expand_builtin_sync_synchronize): Likewise.
(expand_builtin_atomic_signal_fence): Use expand_mem_signal_fence.
* optabs.c (expand_asm_memory_barrier): Split out from
expand_builtin_mem_signal_fence.
(expand_mem_thread_fence): New, a combination of code from
expand_builtin_mem_thread_fence and expand_builtin_sync_synchronize.
(expand_mem_signal_fence): Moved and renamed from
expand_builtin_mem_signal_fence.
(expand_atomic_exchange): Use expand_mem_thread_fence.
(expand_atomic_load, expand_atomic_store): Likewise.
* expr.h, optabs.h: Update decls.
Bin Cheng [Thu, 17 Nov 2011 17:11:16 +0000 (17:11 +0000)]
re PR rtl-optimization/50663 (conditional propagation missed in cprop.c pass)
PR rtl-optimization/50663
* cprop.c (implicit_set_indexes): New global variable.
(insert_set_in_table): Add additional parameter and record implicit
set information.
(hash_scan_set): Add additional parameter and pass it to above.
(hash_scan_insn): Pass false to hash_scan_set.
(compute_hash_table_work): Pass true to hash_scan_set.
(compute_cprop_data): Add implicit set to AVIN of block which the
implicit set is recorded for.
(one_cprop_pass): Handle implicit_set_indexes array.