Removes all the direct uses of op->code so that we can change
the representation of "optab". The code_to_optab change is
simply for uniformity (and better type checking).
* optabs.h (struct optab_d): Rename code member to code_.
(struct convert_optab_h): Likewise.
(code_to_optab_): Rename from code_to_optab.
(code_to_optab, optab_to_code): New.
* dojump.c (do_compare_rtx_and_jump): Use code_to_optab.
* ifcvt.c (noce_emit_move_insn): Likewise.
* optabs.c (simplify_expand_binop): Use optab_to_code.
(expand_simple_binop, shift_optab_p, commutative_optab_p): Likewise.
(avoid_expensive_constant, expand_binop_directly): Likewise.
(expand_binop, expand_simple_unop, expand_unop_direct): Likewise.
(expand_unop, prepare_float_lib_cmp, expand_fixed_convert): Likewise.
(have_insn_for, debug_optab_libfuncs): Likewise.
(init_optab, init_optabv, init_convert_optab): Update for optab
member name change.
From-SVN: r189818
The dwarf2out.c and lto-streamer-in.c files didn't need
libfuncs.h in the first place. The libfuncs.h file will
grow a use of an optab enumeration and thus will require
including optabs.h.
* libfuncs.h: Include optabs.h.
* dwarf2out.c, lto-streamer.in.c: Don't include libfuncs.h.
* Makefile.in (LIBFUNCS_H): Add OPTABS_H.
(lto-streamer-in.o, dwarf2out.o): Update deps.
From-SVN: r189817
2012-07-24 Richard Guenther <rguenther@suse.de>
PR tree-optimization/53616
* tree-loop-distribution.c (ldist_gen): Do not change
partition ordering when merging partitions.
From-SVN: r189802
PR target/53914
PR target/54009
* config/rs6000/constraints.md (Y): Use mem_operand_gpr.
* config/rs6000/predicates.md (word_offset_memref_operand): Delete.
Adjust all rs6000_legitimate_offset_address_p calls.
* config/rs6000/rs6000-protos.h (mem_operand_gpr): Declare.
(rs6000_secondary_reload_gpr): Declare.
(rs6000_legitimate_offset_address_p): Update prototype.
(rs6000_offsettable_memref_p): Delete.
(rs6000_secondary_reload_ppc64): Delete.
* config/rs6000/rs6000.c (address_offset): New function.
(mem_operand_gpr): Likewise.
(rs6000_legitimate_offset_address_p): Add worst_case param. When
not worst_case assume class of regs with least restrictive offsets.
Adjust all calls.
(legitimate_lo_sum_address_p): Simplify register mode tests.
(rs6000_legitimize_address): Likewise. Assume best case offset
addressing. Combine ELF and MACHO lo_sum code.
(rs6000_mode_dependent_address): Correct offset addressing limits.
(rs6000_offsettable_memref_p): Make static, add reg_mode param.
Use reg_mode to help rs6000_legitimate_offset_address_p.
(rs6000_secondary_reload): Use address_offset. Handle 32-bit multi
gpr load/store when offset too large.
(rs6000_secondary_reload_gpr): Renamed rs6000_secondary_reload_ppc64.
(rs6000_split_multireg_move): Adjust rs6000_offsettable_memref_p calls.
* config/rs6000/rs6000.md (movdf_hardfloat32): Use 'Y' constraint
for gpr load/store. Order alternatives as r->Y,Y->r,r->r and
d->m,m->d,d->d. Correct size of gpr load/store.
(movdf_softfloat32): Use 'Y' constraint for gpr load/store. Order
alternatives.
(movti_ppc64): Likewise.
(movdi_internal32): Likewise. Also disparage fprs.
(movdi_mfpgpr, movdi_internal64): Likewise.
(movtf_internal): Use 'm' for fpr load/store. Order alternatives.
(movtf_softfloat): Order alternatives.
(extenddftf2_internal): Use 'm' and 'Y' for store.
(movti_power, movti_string): Use 'Y' for gpr load/store. Order.
(stack_protect_setdi, stack_protect_testdi): Likewise.
(movdf_hardfloat64_mfpgpr, movdf_hardfloat64): Order alternatives.
(movdf_softfloat64): Likewise.
(reload_<mode>_store): Adjust reload_di_store to provide
reload_si_store as well.
(reload_<mode>_load): Likewise.
From-SVN: r189801
* config/i386/i386-protos.c (ix86_lea_outperforms): Remove prototype.
* config/i386/i386.c (ix86_lea_outperforms): Make static. Make
split_cost argument signed.
(ix86_avoid_lea_for_add): Cleanup.
(ix86_use_lea_for_mov): Use INVALID_REGNUM instead of -1.
(ix86_avoid_lea_for_addr): Ditto. Make split_cost signed.
Use gen_lowpart instead of gen_rtx_SUBREG. Cleanup.
From-SVN: r189792
2012-07-23 Richard Guenther <rguenther@suse.de>
* tree-ssa-alias.c (dump_alias_info): Walk over local decls
instead of referenced vars.
From-SVN: r189782
gcc/
* coverage.c: Refer to "notes file" instead of "graph file"
in all comments. Explain history of bbg prefix.
* gcov-io.h: Likewise.
* gcov.c: Likewise.
(find_source): Likewise in fnotice.
(read_graph_file): Likewise.
(read_count_file): Likewise.
* doc/gcov.texi: Document -fprofile-dir flag. Add "notes file"
and "data file" explicitly in the explanation of the files.
libgcc/
* libgcov.c (__gcov_ior_profiler): Benign comment fix.
From-SVN: r189781
gcc/testsuite/
* gcc.c-torture/execute/20101011-1.c (__aeabi_idiv0): Define for
ARM.
(DO_TEST): Define to 1 for appropriate ARM targets.
From-SVN: r189780
gcc/
PR tree-optimization/53881
* tree-cfg.c (group_case_labels_stmt): Look up the basic block
for each label and compare them instead of labels.
testsuite/
PR tree-optimization/53881
* gcc.dg/pr53881.c: Renamed to ...
* gcc.dg/pr53881-1.c: ... this.
* gcc.dg/pr53881-2.c: New test.
From-SVN: r189779
* opts.c (common_handle_option): Do not set
flag_value_profile_transformations for -fprofile-generate.
* profile.c (instrument_values): Use COUNTER_FOR_HIST_TYPE.
(BB_TO_GCOV_INDEX): Remove.
(output_location): Don't use it.
(branch_prob): Likewise. Don't fiddle with the index of
ENTRY_BLOCK_PTR and EXIT_BLOCK_PTR. Use clear_aux_for_blocks.
(find_spanning_tree):
* gcov.c (struct function_info): Document that blocks 0 and 1
are the entry resp. exit blocks in gcov, too, like in GCC itself.
(solve_flow_graph): Use ENTRY_BLOCK and EXIT_BLOCK for special
blocks identification.
(output_lines): Likewise.
* value-prof.c (gimple_value_profile_transformations): Do not
test flag_value_profile_transformations again.
(gimple_ic_transform): Take a gimple_stmt_iterator like all other
transformation functions.
(gimple_values_to_profile):
Don't test flag_value_profile_transformations
* tree-profile.c (tree_profiling): Assert that the cgraph is in
the CGRAPH_STATE_IPA_SSA state.
Do not set, or look at, after_tree_profile.
* function.h (struct function): Remove after_tree_profile bit.
* omp-low.c (expand_omp_taskreg): Don't set after_tree_profile.
* tree-inline.c (initialize_cfun): Don't copy it.
* lto-streamer-out.c (output_struct_function_base): Don't stream it.
* lto-streamer-in.c (input_struct_function_base): Likewise.
From-SVN: r189778
2012-07-23 Tristan Gingold <gingold@adacore.com>
* gcc-interface/trans.c (Handled_Sequence_Of_Statements_to_gnu): Use
End_Label sloc when possible for sloc of the TRY_CATCH_EXPR node.
2012-07-23 Olivier Hainque <hainque@adacore.com>
* gcc-interface/Makefile.in: Adjust processing of Linker_Options for
VxWorks.
* gcc-interface/Make-lang.in: Update dependencies.
From-SVN: r189777
2012-07-23 Arnaud Charlet <charlet@adacore.com>
* s-tasinf-linux.ads: Fix typo.
2012-07-23 Thomas Quinot <quinot@adacore.com>
* exp_ch7.adb, switch-m.adb, exp_ch3.adb, freeze.adb: Minor reformatting
2012-07-23 Ed Schonberg <schonberg@adacore.com>
* exp_ch5.adb (Expand_Iterator_Loop_Over_Array): If original
loop carries an identifier, preserve it when rewriting it as a
standard loop to validate exit statements that may reference
that name in the body of the loop.
2012-07-23 Thomas Quinot <quinot@adacore.com>
* exp_ch9.adb: Minor code cleanup.
From-SVN: r189776
2012-07-23 Ed Schonberg <schonberg@adacore.com>
* sem_ch4.adb (Analyze_Selected_Component): When checking for
potential ambiguities with class-wide operations on synchronized
types, attach the copied node properly to the tree, to prevent
errors during expansion.
2012-07-23 Yannick Moy <moy@adacore.com>
* sem_ch5.adb (Analyze_Loop_Statement): Make sure the loop body
is analyzed in Alfa mode.
2012-07-23 Ed Schonberg <schonberg@adacore.com>
* sem_res.adb: Adjust previous change.
2012-07-23 Vincent Pucci <pucci@adacore.com>
* sem_ch9.adb (Allows_Lock_Free_Implementation): Flag
Lock_Free_Given renames previous flag Complain. Description
updated. Henceforth, catch every error messages issued by this
routine when Lock_Free_Given is True. Declaration restriction
updated: No non-elementary parameter instead (even in parameter)
New subprogram body restrictions implemented: No allocator,
no address, import or export rep items, no delay statement,
no goto statement, no quantified expression and no dereference
of access value.
2012-07-23 Hristian Kirtchev <kirtchev@adacore.com>
* checks.adb (Determine_Range): Add local variable Btyp. Handle
the case where the base type of an enumeration subtype is
private. Replace all occurrences of Base_Type with Btyp.
* exp_attr.adb (Attribute_Valid): Handle the case where the
base type of an enumeration subtype is private. Replace all
occurrences of Base_Type with Btyp.
* sem_util.adb (Get_Enum_Lit_From_Pos): Add local variable
Btyp. Handle the case where the base type of an enumeration
subtype is private. Replace all occurrences of Base_Type with
Btyp.
From-SVN: r189775
2012-07-23 Ed Schonberg <schonberg@adacore.com>
* par-ch6.adb (P_Mode): in Ada 2005, a mode indicator can apply
to a formal object of an anonymous access type.
2012-07-23 Ed Schonberg <schonberg@adacore.com>
* sem_ch4.adb (Try_Container_Indexing): A user-defined indexing
aspect can have more than one index, e.g. to describe indexing
of a multidimensional object.
2012-07-23 Hristian Kirtchev <kirtchev@adacore.com>
* exp_ch4.adb (Apply_Accessibility_Check): Reimplemented. The check is
now more complex and contains optional finalization part and mandatory
deallocation part.
2012-07-23 Gary Dismukes <dismukes@adacore.com>
* a-cihama.adb, a-cihase.adb, a-cimutr.adb, a-ciorma.adb, a-ciormu.adb,
a-ciorse.adb, a-coinho.adb, a-coinve.adb, a-cidlli.adb: Unsuppress
Accessibility_Check for Element_Type allocators.
2012-07-23 Vasiliy Fofanov <fofanov@adacore.com>
* projects.texi: Fix typo.
2012-07-23 Ed Schonberg <schonberg@adacore.com>
* sem_res.adb (Resolve_Explicit_Derenference): If prefix is
overloaded, remove those interpretations whose designated type
does not match the context, to avoid spurious ambiguities that
may be caused by the Ada 2012 conversion rule for anonymous
access types.
From-SVN: r189774
2012-07-23 Vincent Celier <celier@adacore.com>
* g-spitbo.adb (Substr (String)): Return full string and do not
raise exception when Start is 1 and Len is exactly the length
of the string parameter.
* g-spitbo.ads: Fix spelling error in the name of exception
Index_Error.
2012-07-23 Ed Schonberg <schonberg@adacore.com>
* par.adb: new subprogram Get_Aspect_Specifications.
* par-ch6.adb (P_Subprogram): handle subprogram bodies with aspect
specifications.
* par-ch13.adb (Get_Aspect_Specifications): extracted from
P_Aspect_Specifications. Collect aspect specifications in some
legal context, but do not attach them to any declaration. Used
when parsing subprogram declarations or bodies that include
aspect specifications.
* sem_ch6.adb (Analyze_Subprogram_Body_Helper): If aspects are
present, analyze them, or reject them if the subprogram as a
previous spec.
2012-07-23 Vasiliy Fofanov <fofanov@adacore.com>
* gnat_ugn.texi: Omit section on other platforms/runtimes support
in gnattest for vms version.
2012-07-23 Ed Schonberg <schonberg@adacore.com>
* sem_ch13.adb (Analyze_Aspect_Specifications):
Handle properly aspects that can be specified on a subprogram
body: CPU, Priority, and Interrupt_Priority.
2012-07-23 Claire Dross <dross@adacore.com>
* a-cfdlli.ads: Switch definition of Constant_Reference_Type
and Empty_List.
2012-07-23 Thomas Quinot <quinot@adacore.com>
* par_sco.adb (Process_Decisions.Output_Header): For the guard
on an alternative in a SELECT statement, use the First_Sloc
of the guard expression (not its topmost sloc) as the decision
location, because this is what is referenced by dominance markers.
2012-07-23 Hristian Kirtchev <kirtchev@adacore.com>
* exp_ch7.adb (Requires_Hooking): Examine the original expression
of an object declaration node because a function call that
returns on the secondary stack may have been rewritten into
something else.
2012-07-23 Vincent Pucci <pucci@adacore.com>
* sem_dim.adb (Analyze_Dimension_Has_Etype): For identifier, propagate
dimension when entity is a non-dimensionless constant.
(Analyze_Dimension_Object_Declaration): Propagate
dimension from the expression to the entity when type is a
dimensioned type and object is a constant.
2012-07-23 Ed Schonberg <schonberg@adacore.com>
* sem_attr.adb (Analyze_Attribute, case 'Old): if the prefix
is not an entity name, expand at once so that code generated by
the expansion of the prefix is not generated before the constant
that captures the old value is properly inserted and analyzed.
2012-07-23 Thomas Quinot <quinot@adacore.com>
* exp_ch9.adb (Ensure_Statement_Present): Mark generated NULL
statement as Comes_From_Source so that GIGI does not eliminate it.
From-SVN: r189773
2012-07-23 Hristian Kirtchev <kirtchev@adacore.com>
* sem_ch12.adb (Insert_Freeze_Node_For_Instance): Inst is now
a local variable. Retrieve the related instance when processing
a subprogram instantiation. Such instances appear as wrapper
packages.
2012-07-23 Vincent Pucci <pucci@adacore.com>
* system-aix64.ads, system-aix.ads, system-darwin-ppc.ads,
system-hpux.ads, system-linux-alpha.ads,
system-linux-hppa.ads, system-linux-ppc.ads,
system-linux-s390.ads, system-linux-s390x.ads,
system-linux-sh4.ads, system-linux-sparc.ads,
system-lynxos-ppc.ads, system-mingw.ads,
system-solaris-sparc.ads, system-solaris-sparcv9.ads,
system-vms_64.ads, * system-vxworks-arm.ads, system-vxworks-m68k.ads,
system-vxworks-mips.ads, system-vxworks-ppc.ads,
system-vxworks-sparcv9.ads: Support_Atomic_Primitives set to False.
* system-darwin-x86.ads, system-darwin-x86_64.ads,
system-freebsd-x86.ads, system-freebsd-x86_64.ads,
system-hpux-ia64.ads, system-linux-ia64.ads, system-linux-x86.ads,
system-linux-x86_64.ads, system-lynxos-x86.ads,
system-mingw-x86_64.ads, system-solaris-x86.ads,
system-solaris-x86_64.ads, system-vms-ia64.ads,
system-vxworks-x86.ads: Support_Atomic_Primitives set to True.
* s-atopri.adb (Lock_Free_Read_X): New body.
(Lock_Free_Try_Write_X): Support_Atomic_Primitives check added.
(Lock_Free_Try_Write_64): New body.
* s-atopri.ads: New type uint.
(Sync_Compare_And_Swap_64): __sync_val_compare_and_swap_8 intrinsic
import.
(Lock_Free_Read_X): Body moved to s-atopri.adb.
(Lock_Free_Try_Write_64): Similar to other Lock_Free_Try_Write_X
routines.
* targparm.adb: New enumeration literal SAP
(Support_Atomic_Primitives) for type Targparm_Tags. New constant
SAP_Str. New component SAP_Str'Access for array Targparm_Str.
(Get_Target_Parameters): Parse Support_Atomic_Primitives_On_Target
flag.
* targparm.ads: New back-end code generation flag
Support_Atomic_Primitives_On_Target
2012-07-23 Vincent Pucci <pucci@adacore.com>
* gnat_ugn.texi: Dimensionality checking documentation updated.
2012-07-23 Ed Schonberg <schonberg@adacore.com>
* sem_prag.adb (Make_Inline): If the pragma applies to a
subprogram renaming, set inline flags on both the renamed entity
and on the renaming, so that some ASIS queries can be handled
consistently in the absence of expansion.
From-SVN: r189772
2012-07-23 Fedor Rybin <frybin@adacore.com>
* gnat_ugn.texi: Removing obsolete limitation of gnattest
to support only ada05. Updating gnattest support for other
platforms/run-times section to reflect the usage of taget
prefix in gnattest calls. Fixing missed obsolete --stub-default
option name.
2012-07-23 Robert Dewar <dewar@adacore.com>
* uintp.adb: Minor reformatting.
2012-07-23 Olivier Hainque <hainque@adacore.com>
* system-vxworks-ppc.ads: Replace the default
Linker_Options requesting crtbe by a commented out request for
-nostartfiles.
2012-07-23 Vincent Celier <celier@adacore.com>
* prj-nmsc.adb (Check_Naming): Do not get the exceptions names
in a virtual project.
From-SVN: r189771
2012-07-21 Andrew Pinski <apinski@cavium.com>
* gcc.dg/tree-ssa/vrp72.c: New test.
* gcc.dg/tree-ssa/vrp73.c: New test.
* gcc.dg/tree-ssa/vrp74.c: New test.
* gcc.dg/tree-ssa/vrp75.c: New test.
From-SVN: r189753
2012-07-21 Andrew Pinski <apinski@cavium.com>
* gcc.dg/tree-ssa/alias-21.c: New testcase.
* gcc.dg/tree-ssa/alias-22.c: New testcase.
From-SVN: r189752