Bin Cheng [Tue, 2 Jun 2015 03:33:35 +0000 (03:33 +0000)]
re PR testsuite/52563 (FAIL: gcc.dg/tree-ssa/scev-[3,4].c scan-tree-dump-times optimized "&a" 1)
PR tree-optimization/52563
PR tree-optimization/62173
* tree-ssa-loop-ivopts.c (struct iv): New field. Reorder fields.
(alloc_iv, set_iv): New parameter.
(determine_biv_step): Delete.
(find_bivs): Inline original determine_biv_step. Pass new
argument to set_iv.
(idx_find_step): Use no_overflow information for conversion.
* tree-scalar-evolution.c (analyze_scalar_evolution_in_loop): Let
resolve_mixers handle folded_casts.
(instantiate_scev_name): Change bool parameter to bool pointer.
(instantiate_scev_poly, instantiate_scev_binary): Ditto.
(instantiate_array_ref, instantiate_scev_not): Ditto.
(instantiate_scev_3, instantiate_scev_2): Ditto.
(instantiate_scev_1, instantiate_scev_r): Ditto.
(instantiate_scev_convert, ): Change parameter. Pass argument
to chrec_convert_aggressive.
(instantiate_scev): Change argument.
(resolve_mixers): New parameter and set it.
(scev_const_prop): New argument.
* tree-scalar-evolution.h (resolve_mixers): New parameter.
* tree-chrec.c (convert_affine_scev): Call chrec_convert instead
of chrec_conert_1.
(chrec_convert): New parameter. Move definition below.
(chrec_convert_aggressive): New parameter and set it. Call
convert_affine_scev.
* tree-chrec.h (chrec_convert): New parameter.
(chrec_convert_aggressive): Ditto.
Jason Merrill [Tue, 2 Jun 2015 02:28:19 +0000 (22:28 -0400)]
re PR c++/44282 (fastcall is not mangled at all)
PR c++/44282
gcc/cp/
* mangle.c (attr_strcmp): New.
(write_CV_qualifiers_for_type): Also write out attributes that
affect type identity.
(write_type): Strip all attributes after writing qualifiers.
libiberty/
* cp-demangle.c (cplus_demangle_type): Handle arguments to vendor
extended qualifier.
Eric Botcazou [Mon, 1 Jun 2015 20:49:18 +0000 (20:49 +0000)]
gimplify.c (gimplify_modify_expr_rhs): Use simple test on the size.
* gimplify.c (gimplify_modify_expr_rhs): Use simple test on the size.
* cgraph.c (cgraph_redirect_edge_call_stmt_to_callee): Do not remove
the LHS of a no-return call if its type has variable size.
* tree-cfgcleanup.c (fixup_noreturn_call): Likewise.
* tree-cfg.c (verify_gimple_call): Accept these no-return calls.
Yuri Rumyantsev [Mon, 1 Jun 2015 17:15:31 +0000 (17:15 +0000)]
tree-vect-data-refs.c (vect_analyze_data_ref_access): Allow consecutive accesses within outer-loop with force_vectorize for...
gcc/
* tree-vect-data-refs.c (vect_analyze_data_ref_access): Allow
consecutive accesses within outer-loop with force_vectorize
for references with zero step in inner-loop.
Matthew Wahab [Mon, 1 Jun 2015 15:21:02 +0000 (15:21 +0000)]
re PR target/65697 (__atomic memory barriers not strong enough for __sync builtins)
PR target/65697
* config/aarch64/aarch64.c (aarch64_split_compare_and_swap): Check
for __sync memory models, emit initial loads and final barriers as
appropriate.
Richard Biener [Mon, 1 Jun 2015 13:55:12 +0000 (13:55 +0000)]
revert: re PR middle-end/66314 (ice in verify_loop_structure)
2015-06-01 Richard Biener <rguenther@suse.de>
Revert
2015-05-29 Richard Biener <rguenther@suse.de>
PR tree-optimization/66314
* tree-ssa-threadupdate.c (create_block_for_threading): Add
parameter that says which loop the new block belongs to.
(ssa_create_duplicates): Blocks duplicated for the threaded
path belong to the loop of the thread destination.
Martin Liska [Mon, 1 Jun 2015 12:49:17 +0000 (14:49 +0200)]
Change use to type-based pool allocator in ipa-prop.c.
* ipa-prop.c (ipa_set_jf_constant): Use new type-based pool allocator.
(ipa_edge_duplication_hook): Likewise.
(ipa_free_all_structures_after_ipa_cp): Likewise.
(ipa_free_all_structures_after_iinln): Likewise.
Martin Liska [Mon, 1 Jun 2015 12:48:40 +0000 (14:48 +0200)]
Change use to type-based pool allocator in
* ipa-profile.c (account_time_size): Use new type-based pool allocator.
(ipa_profile_generate_summary): Likewise.
(ipa_profile_read_summary): Likewise.
(ipa_profile): Likewise.
Martin Liska [Mon, 1 Jun 2015 12:48:06 +0000 (14:48 +0200)]
Change use to type-based pool allocator in
* tree-ssa-structalias.c (new_var_info): Use new type-based pool allocator.
(new_constraint): Likewise.
(init_alias_vars): Likewise.
(delete_points_to_sets): Likewise.
Martin Liska [Mon, 1 Jun 2015 12:44:44 +0000 (14:44 +0200)]
Change use to type-based pool allocator in regcprop.c.
* regcprop.c (free_debug_insn_changes): Use new type-based pool allocator.
(replace_oldest_value_reg): Likewise.
(pass_cprop_hardreg::execute): Likewise.
Martin Liska [Mon, 1 Jun 2015 12:44:17 +0000 (14:44 +0200)]
Change use to type-based pool allocator in ira-build.c.
* ira-build.c (initiate_cost_vectors): Use new type-based pool allocator.
(ira_allocate_cost_vector): Likewise.
(ira_free_cost_vector): Likewise.
(finish_cost_vectors): Likewise.
utils.c (scale_by_factor_of): When handling a function call expression, process the corresponding function body.
* gcc-interface/utils.c (scale_by_factor_of): When handling a function
call expression, process the corresponding function body. Also handle
potential addends.
Eric Botcazou [Mon, 1 Jun 2015 08:41:30 +0000 (08:41 +0000)]
decl.c (gnat_to_gnu_entity): For a definition of a type coming from a limited_with...
* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Incomplete_Type>: For a
definition of a type coming from a limited_with, get to the full view
if it is not in the main code unit.
* config/i386/winnt.c (i386_pe_encode_section_info) <FUNCTION_DECL>:
Remove obsolete kludge.
ada/
* gcc-interface/utils.c (create_var_decl_1): If an assembler name is
specified, let the target mangle it before settting.
(create_subprog_decl): Likewise and move this treatment last.
Eric Botcazou [Mon, 1 Jun 2015 08:04:16 +0000 (08:04 +0000)]
decl.c (gnat_to_gnu_entity): If the record has a parent field and a representation clause...
* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Record_Type>: If the
record has a parent field and a representation clause, make sure that
it is properly aligned.
Eric Botcazou [Mon, 1 Jun 2015 07:43:09 +0000 (07:43 +0000)]
gigi.h (build_simple_component_ref): Declare.
* gcc-interface/gigi.h (build_simple_component_ref): Declare.
* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Variable>: Deal with
address clause on aliased object with unconstrained nominal subtype.
Mark the aligning variable as artificial, do not convert the address
expression immediately but mark it as constant instead.
* gcc-interface/utils.c (convert): If the target type contains a
template, be prepared for an empty array.
(maybe_unconstrained_array): Likewise.
* gcc-interface/utils2.c (known_alignment) <POINTER_PLUS_EXPR>: Deal
with the pattern built for aligning types.
<INTEGER_CST>: Do not cap the value at BIGGEST_ALIGNMENT.
(build_simple_component_ref): Make public.
If the base object is a constructor that contains a template, fold the
result field by field.
Eric Botcazou [Sat, 30 May 2015 21:13:59 +0000 (21:13 +0000)]
adaint.c: Test for __linux__ instead of linux and __sun__ instead of sun.
* adaint.c: Test for __linux__ instead of linux and __sun__ instead
of sun. Add missing leading underscore to AIX. Remove #elif 0.
* adaint.h: Likewise.
* cio.c: Likewise.
* cstreams.c: Likewise.
* env.c: Likewise.
* gsocket.h: Likewise.
* init.c: Likewise. Test for __i386__ instead of i386.
* link.c: Likewise.
* s-oscons-tmplt.c: Likewise.
* sysdep.c: Likewise.
* terminals.c: Likewise. Use BSD symbol instead of FREEBSD.
* tracebak.c: Likewise. Test for __sparc__ instead of sparc.
Mike Frysinger [Sat, 30 May 2015 16:39:52 +0000 (16:39 +0000)]
alpha: turn -mcpu=<cpu> into -m<cpu> for the assembler all the time
If you create a toolchain with the target alphaev68-unknown-linux-gnu, gcc
will use the -mcpu=ev67 by default when compiling. Some software packages
(like gmp) will use this target info to decide that it may freely use
assembly code that targets ev67+. The trouble comes in when trying to
compile that pure assembly code.
While gcc will use -mcpu=ev67 just fine, it will invoke gas without an
-mev67 option, so the assembler will default to the lowest common
denominator -- ev4 in this case. Inline assembly in C code is normally
just peachy because gcc's assembler output will start with ".arch <cpu>"
and the assembler will accept that. But if the hand coded assembly code
lacks that .arch, you easily end up with errors like so:
opcode `cttz' not supported for target <all>
While the assembly code could/should be fixed to explicitly output the
.arch directive, I think it's reasonable to expect this to work:
echo 'cttz $20,$21' | gcc -x assembler -c - -o /dev/null -mcpu=ev67
This simple patch implements that, although I guess it is a bit redundant
in the default case where gcc outputs .arch. Perhaps that should all be
punted in favor of a specs-only approach. Considering gas respects .arch
in the code over the command line, it should also make things more natural.
The command line is processed in the standard/expected way -- gcc defaults
the -m option while user's custom -mcpu/-Wa,-m options come after, and the
guy writing the assembly code is free to use .arch to override everything
else.
Jan Hubicka [Sat, 30 May 2015 00:32:04 +0000 (02:32 +0200)]
alias.c (alias_set_entry_d): Add is_pointer and has_pointer.
* alias.c (alias_set_entry_d): Add is_pointer and has_pointer.
(alias_stats): Add num_universal.
(alias_set_subset_of): Special case pointers; be ready for NULL
children.
(alias_sets_conflict_p): Special case pointers; be ready for NULL
children.
(init_alias_set_entry): Break out from ...
(record_alias_subset): ... here; propagate new fields;
allocate children only when really needed.
(get_alias_set): Do less generous pointer globbing.
(dump_alias_stats_in_alias_c): Update statistics.
* gcc.dg/alias-8.c: Do not xfail.
* gcc.dg/pr62167.c: Prevent FRE.
* gcc.dg/alias-14.c: New testcase.
Alan Modra [Sat, 30 May 2015 00:15:30 +0000 (09:45 +0930)]
rs6000.c (split_stack_arg_pointer_used_p): Scan correct block for use of r12.
* config/rs6000/rs6000.c (split_stack_arg_pointer_used_p): Scan
correct block for use of r12.
(rs6000_expand_split_stack_prologue): Error on r29 asm global reg.
Jonathan Wakely [Fri, 29 May 2015 13:44:52 +0000 (14:44 +0100)]
future (__async_result_of): New alias template.
* include/std/future (__async_result_of): New alias template.
(async): Use __async_result_of to pass decayed types to result_of.
* testsuite/30_threads/async/lwg2021.cc: New.
* doc/xml/manual/intro.xml: Document LWG 2021 status.