Arnaud Charlet [Thu, 15 Dec 2011 14:33:46 +0000 (15:33 +0100)]
[multiple changes]
2011-12-15 Vincent Pucci <pucci@adacore.com>
* aspects.adb, aspects.ads Aspect_Dimension and
Aspect_Dimension_System added
* exp_ch6.adb (Expand_Call): Expand_Put_Call_With_Dimension_String
case added
* gcc-interface/Make-lang.in: s-llflex, sem_dim added.
* impunit.adb :s-diflio and s-diinio defined as GNAT Defined
Additions to System.
* Makefile.rtl: s-diflio, s-diinio and s-llflex added
* par-prag.adb, sem_prag.adb: Pragma_Dimension removed
* rtsfind.ads: Expon_LLF added
* sem_aggr.adb (Resolve_Aggregate): handles aggregate for
Aspect_Dimension case
* sem_attr.adb (Resolve_Attribute): analyze dimension for
attribute
* sem_ch10.adb (Analyze_With_Clause): Avoid the warning messages
due to the use of a GNAT library for Dimension packages
* sem_ch13.adb (Analyze_Aspect_Specifications):
Aspect_Dimension and Aspect_Dimension_System cases added
(Check_Aspect_At_Freeze_Point): Aspect_Dimension and
Aspect_Dimension_System cases added
* sem_ch2.adb (Analyze_Identifier): analyze dimension for
identifier
* sem_ch3.adb (Analyze_Component_Declaration): analyze dimension
for component declaration (Analyze_Object_Declaration): analyze
dimension for object declaration (Analyze_Subtype_Declaration):
analyze dimension for subtype declaration
* sem_ch4.adb (Operator_Check): checks exponent is a rational
for dimensioned operand for a N_Op_Expon
* sem_ch5.adb (Analyze_Assignment): analyze dimension for
assignment (Analyze_Statements): removal of dimensions in all
statements
* sem_ch6.adb (Analyze_Return_Statement): analyze dimension for
return statement
* sem_ch8.adb (Analyze_Object_Renaming): analyze dimension for
object renaming
* sem_dim.adb, sem_dim.ads (Analyze_Aspect_Dimension):
analyze the expression for aspect dimension and store the
values in a Htable.
(Analyze_Aspect_Dimension_System): analyze
the expression for aspect dimension system and store the new
system in a Table.
(Analyze_Dimension): propagates dimension
(Expand_Put_Call_With_Dimension_String): add the dimension
string as a suffix of the numeric value in the output
(Has_Dimension): return True if the node has a dimension
(Remove_Dimension_In_Declaration): removal of dimension in the
expression of the declaration.
(Remove_Dimension_In_Statement): removal of dimension in statement
* sem_res.adb (Resolve): analyze dimension if the node
has already been analyzed.
(Resolve_Arithmetic_Op): analyze
dimension for arithmetic op.
(Resolve_Call): analyze dimension for function call.
(Resolve_Comparison_Op): analyze dimension for comparison op.
(Resolve_Equality_Op): analyze dimension for equality op.
(Resolve_Indexed_Component): analyze dimension for indexed component.
(Resolve_Op_Expon): analyze dimension for op expon.
(Resolve_Selected_Component): analyze dimension
for selected component.
(Resolve_Slice): analyze dimension for slice.
(Resolve_Unary_Op): analyze dimension for unary op
(Resolve_Type_Conversion): analyze dimension for type conversion
(Resolve_Unchecked_Type_Conversion): analyze dimension for
unchecked type conversion
* snames.ads-tmpl Name_Dimension, Name_Dimension_System,
Name_Dim_Float_IO, Name_Dim_Integer_IO,
Name_Generic_Elementary_Functions, Name_Sqrt added.
Pragma_Dimension removed
* s-diflio.adb, s-diflio.ads New GNAT library generic package
for dimensioned float type IO
* s-diinio.adb, s-diinio.ads New GNAT library generic package
for dimensioned integer type IO
* s-llflex.ads (Expon_LLF): exponentiation routine for long long
floats operand and exponent
2011-12-15 Robert Dewar <dewar@adacore.com>
* sem_aggr.adb: Minor comment addition.
2011-12-15 Bob Duff <duff@adacore.com>
* s-tasren.adb (Task_Count): Do not call Yield; E'Count is not a
task dispatching point.
* s-taprop-mingw.adb (Yield): Do not yield if Do_Yield is False.
Richard Guenther [Thu, 15 Dec 2011 12:43:48 +0000 (12:43 +0000)]
re PR debug/51564 (ICE in force_type_die, at dwarf2out.c:19288)
2011-12-15 Richard Guenther <rguenther@suse.de>
PR lto/51564
* tree.h (REGISTER_DEFS_IN_THIS_STMT, NECESSARY,
STMT_IN_SSA_EDGE_WORKLIST): Remove no longer existing flag
uses documentation.
(TREE_ASM_WRITTEN): Update documentation to mention its use
on TYPE_DECLs from debug info generation.
* tree-streamer-out.c (pack_ts_base_value_fields): Stream
TREE_ASM_WRITTEN as always zero for TYPE_DECLs, similar to
all other types.
Arnaud Charlet [Thu, 15 Dec 2011 11:52:26 +0000 (12:52 +0100)]
[multiple changes]
2011-12-15 Javier Miranda <miranda@adacore.com>
* exp_attr.adb (Expand_N_Attribute_Reference): For 'alignment
applied to a class-wide type under VM targets generate code which
invokes the function Get_Alignment to retrieve the value of the
alignment from the TSD.
* rtsfind.ads (RE_Get_Alignment): New entity.
Arnaud Charlet [Thu, 15 Dec 2011 11:48:25 +0000 (12:48 +0100)]
[multiple changes]
2011-12-15 Tristan Gingold <gingold@adacore.com>
* gnatls.adb: Fix typo.
2011-12-15 Ed Falis <falis@adacore.com>
* s-tpopsp-vxworks.adb: Update comment.
2011-12-15 Ed Schonberg <schonberg@adacore.com>
* sem_aggr.adb (Resolve_Array_Aggregate, Resolve_Aggr_Expr); If
the component type has predicates, generate corresponding check.
(Resolve_Record_Aggregate, Resolve_Aggr_Expr): Ditto.
Richard Guenther [Wed, 14 Dec 2011 11:26:13 +0000 (11:26 +0000)]
tree.c (free_lang_data_in_type): Do not clear fields dependent on debuginfo level setting.
2011-12-14 Richard Guenther <rguenther@suse.de>
* tree.c (free_lang_data_in_type): Do not clear fields
dependent on debuginfo level setting.
(find_decls_types_r): Use TYPE_STUB_DECL rathern than TREE_CHAIN.
* tree.h (TYPE_STUB_DECL): Properly check that we access
a type.
Richard Guenther [Wed, 14 Dec 2011 09:50:38 +0000 (09:50 +0000)]
tree-cfg.c (replace_uses_by): Only mark blocks altered that will make a difference.
2011-12-14 Richard Guenther <rguenther@suse.de>
* tree-cfg.c (replace_uses_by): Only mark blocks altered
that will make a difference. Only recompute ADDR_EXPR
invariantness if it could possibly have changed. Do so
before folding the statement.
Ian Lance Taylor [Wed, 14 Dec 2011 01:36:11 +0000 (01:36 +0000)]
compiler: Move import of Go export data to gcc side of interface.
* go-backend.c: #include "simple-object.h" and "intl.h".
(GO_EXPORT_SEGMENT_NAME): Define if not defined.
(GO_EXPORT_SECTION_NAME): Likewise.
(go_write_export_data): Use GO_EXPORT_SECTION_NAME.
(go_read_export_data): New function.
* go-c.h (go_read_export_data): Declare.
Paolo Carlini [Wed, 14 Dec 2011 00:36:15 +0000 (00:36 +0000)]
re PR c++/51464 ([c++0x] ICE with invalid use of [])
/cp
2011-12-13 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/51464
* semantics.c (begin_lambda_type): Check begin_class_definition return
value for error_mark_node.
* parser.c (cp_parser_lambda_expression): Check begin_lambda_type
return value for error_mark_node.
/testsuite
2011-12-13 Paolo Carlini <paolo.carlini@oracle.com>
Eric Botcazou [Tue, 13 Dec 2011 21:59:39 +0000 (21:59 +0000)]
lto-streamer-out.c (write_symbol): Use proper 64-bit host type.
* lto-streamer-out.c (write_symbol): Use proper 64-bit host type.
* lto-cgraph.c (input_cgraph_opt_section): Use 'int' for offsets.
* lto-streamer-in.c (lto_read_body): Likewise.
(lto_input_toplevel_asms): Likewise.
* lto-section-in.c (lto_create_simple_input_block): Likewise.
* ipa-inline-analysis.c (inline_read_section): Likewise.
* ipa-prop.c (ipa_prop_read_section): Likewise.
* df.h (DF_NOTE): Fix typo in comment.
lto/
* lto.h (lto_parse_hex): Delete.
* lto.c (lto_read_decls): Use 'int' for offsets.
(lto_parse_hex): Make static and return proper 64-bit host type.
(lto_resolution_read): Use proper 64-bit host type.
PR c++/14258
* cp-tree.h (USING_DECL_TYPENAME_P): New macro.
* parser.c (cp_parser_nonclass_name): Handle using declarations
that refer to a dependent type.
(cp_parser_using_declaration): Set USING_DECL_TYPENAME_P to 1 if
the using declaration refers to a dependent type.
PR/51443
* trans-mem.c (struct diagnose_tm): Remove saw_unsafe.
(diagnose_tm_1): Same.
(ipa_tm_execute): Do not test tm_may_enter_irr before we set it.
(ipa_tm_scan_irr_function): Return gracefully when no
DECL_STRUCT_FUNCTION.
(ipa_tm_scan_irr_block): Believe the user on TM attributes.
Jakub Jelinek [Tue, 13 Dec 2011 14:00:58 +0000 (15:00 +0100)]
Revert
2011-12-12 Jakub Jelinek <jakub@redhat.com>
PR tree-optimization/51481
* gimple-fold.c (gimple_fold_call): Call
maybe_clean_or_replace_eh_stmt. Avoid optimization if stmt has EH
edges, but gimple_fold_builtin result can't throw.
Jakub Jelinek [Tue, 13 Dec 2011 13:59:35 +0000 (14:59 +0100)]
re PR tree-optimization/51117 (rev.181172 causes glibc build failure)
PR tree-optimization/51117
* tree-eh.c (sink_clobbers): New function.
(execute_lower_eh_dispatch): Call it for BBs ending with
internally throwing RESX.
* cfgexpand.c (add_scope_conflicts_1): Add all conflicts only
at the first real instruction.
Co-Authored-By: Michael Matz <matz@suse.de>
From-SVN: r182283
Jakub Jelinek [Mon, 12 Dec 2011 21:00:36 +0000 (22:00 +0100)]
re PR rtl-optimization/51495 (ICE: in force_nonfallthru_and_redirect, at cfgrtl.c:1171 with computed goto)
PR rtl-optimization/51495
* function.c (thread_prologue_and_epilogue_insns): Don't add
to bb_tail basic blocks that have EDGE_COMPLEX predecessor edges
from basic blocks not needing prologue.
Jakub Jelinek [Mon, 12 Dec 2011 20:59:28 +0000 (21:59 +0100)]
re PR tree-optimization/51481 (ice: dead STMT in EH table)
PR tree-optimization/51481
* gimple-fold.c (gimple_fold_call): Call
maybe_clean_or_replace_eh_stmt. Avoid optimization if stmt has EH
edges, but gimple_fold_builtin result can't throw.
Georg-Johann Lay [Mon, 12 Dec 2011 20:13:40 +0000 (20:13 +0000)]
re PR tree-optimization/45830 (Code+rodata increase with -ftree-switch-conversion)
PR tree-optimization/45830
* gcc.c-torture/execute/pr45830.c: Move from here to...
* gcc.dg/torture/pr45830.c: ...this new file. Add dg-do and
dg-additional-options magic.
Jakub Jelinek [Mon, 12 Dec 2011 18:55:06 +0000 (19:55 +0100)]
re PR c++/51496 (FAIL: libgomp.c++/for-2.C * (test for excess errors))
PR c++/51496
* parser.c (cp_parser_omp_for_loop): When determining whether
to use cp_parser_omp_for_incr or cp_parser_expression and when
calling cp_parser_omp_for_incr, use real_decl instead of decl.
Eric Botcazou [Mon, 12 Dec 2011 18:22:13 +0000 (18:22 +0000)]
re PR tree-optimization/50569 (unaligned memory accesses generated for memcpy)
PR tree-optimization/50569
* tree-sra.c (build_ref_for_model): Replicate a chain of COMPONENT_REFs
in the expression of MODEL instead of just the last one.
Paolo Carlini [Mon, 12 Dec 2011 17:34:19 +0000 (17:34 +0000)]
revert: re PR target/51135 (SIGSEGV during exception cleanup on win32)
2011-12-12 Paolo Carlini <paolo.carlini@oracle.com>
Revert:
2011-12-12 Kai Tietz <ktietz@redhat.com>
PR libstdc++/51135
* libsupc++/cxxabi.h (__cxa_dtor_type): New type.
(__cxa_throw): Use it for destructor-argument.
* libsupc++/eh_throw.cc (__cxa_throw): Likewise.
* libsupc++/unwind-cxx.h (__cxa_exception): Change type of member
exceptionDestructor to __cxa_dtor_type.
* config/os/mingw32-w64/os_defines.h (_GLIBCXX_USE_THISCALL_ON_DTOR):
Define.
(__cxa_dtor_type): Declare target secific type variant.
* config/os/mingw32/os_defines.h: Likewise.
re PR tree-optimization/50873 (The fix to PR50730 causes gcc.c-torture/unsorted/dilayout.c to ICE)
gcc/
PR middle-end/50873
* optabs.c (maybe_legitimize_operand_same_code): Use copy_to_mode_reg
instead of force_reg. Do nothing if the address is already a
non-virtual pseudo register.
Arnaud Charlet [Mon, 12 Dec 2011 13:43:38 +0000 (14:43 +0100)]
[multiple changes]
2011-12-12 Robert Dewar <dewar@adacore.com>
* sem_ch6.adb, gnatls.adb: Minor reformatting.
2011-12-12 Ed Schonberg <schonberg@adacore.com>
* freeze.adb (Freeze_Entity): If a type declared in a generic
context has predicates, generate a freeze node for it.
* sem_ch13.adb (Check_Aspect_At_End_Of_Declarations): If expression
has not been analyzed yet, entity has not been frozen, so analyze
it now.
2011-12-12 Javier Miranda <miranda@adacore.com>
* exp_disp.adb (Make_VM_TSD): Generate code
to store the value 'alignment in the TSD.
2011-12-12 Bob Duff <duff@adacore.com>
* s-taprop-mingw.adb (Yield): Do not delay 1 millisecond in Annex D
mode.
* exp_ch4.adb (Expand_N_Allocator): Update the master of an
anonymous access-to-controlled type to utilize the heterogeneous
master associated with the current unit.
Kai Tietz [Mon, 12 Dec 2011 13:29:10 +0000 (14:29 +0100)]
Correct bug-number in ChangeLog.
PR libstdc++/51135
* libsupc++/cxxabi.h (__cxxabi_dtor_type): New type.
(__cxa_throw): Use it for destructor-argument.
* libsupc++/eh_throw.cc (__cxa_throw): Likewise.
* libsupc++/unwind-cxx.h (__cxa_exception): Change type of member
exceptionDestructor to __cxxabi_dtor_type.
* config/os/mingw32-w64/os_defines.h (_GLIBCXX_USE_THISCALL_ON_DTOR):
Define.
(__cxa_dtor_type): Declare target secific type variant.
* config/os/mingw32/os_defines.h: Likewise.
Kai Tietz [Mon, 12 Dec 2011 13:24:30 +0000 (14:24 +0100)]
PR libstdc++/511135
* libsupc++/cxxabi.h (__cxxabi_dtor_type): New type.
(__cxa_throw): Use it for destructor-argument.
* libsupc++/eh_throw.cc (__cxa_throw): Likewise.
* libsupc++/unwind-cxx.h (__cxa_exception): Change type of member
exceptionDestructor to __cxxabi_dtor_type.
* config/os/mingw32-w64/os_defines.h (_GLIBCXX_USE_THISCALL_ON_DTOR):
Define.
(__cxa_dtor_type): Declare target secific type variant.
* config/os/mingw32/os_defines.h: Likewise.
Arnaud Charlet [Mon, 12 Dec 2011 12:06:59 +0000 (13:06 +0100)]
[multiple changes]
2011-12-12 Ed Schonberg <schonberg@adacore.com>
* sem_ch6.adb (Analyze_Expression_Function): If the function
is not a completion, pre-analyze the expression now to prevent
spurious visibility on later entities. The body is inserted at
the end of the current declaration list or package to prevent
early freezing, but the visibility is established at the point
of definition.
2011-12-12 Bob Duff <duff@adacore.com>
* sem.adb, sem.ads: Add debugging routines.
2011-12-12 Tristan Gingold <gingold@adacore.com>
* gnatls.adb: (gnatls): Also add the objects dir in search list.
Torvald Riegel [Mon, 12 Dec 2011 12:05:37 +0000 (12:05 +0000)]
Support noexcept-specifications for transaction statements and expressions.
gcc/cp/
* semantics.c (finish_transaction_stmt, build_transaction_expr):
Accept new noexcept parameter and handle it.
* cp-tree.h (finish_transaction_stmt, build_transaction_expr): Adapt
declarations.
* parser.c (cp_parser_exception_specification_opt): Extract
noexcept-specification parsing to ...
(cp_parser_noexcept_specification_opt): ...here. Allow for parsing
non-constexpr noexcept arguments.
(cp_parser_transaction, cp_parser_transaction_expression): Parse
and handle noexcept-specifications.
(cp_parser_function_transaction): Adapt to finish_transaction_stmt
change.
* pt.c (tsubst_expr): Adapt to new noexcept parameters when
building transactions.
gcc/testsuite/
* g++.dg/tm/noexcept-1.C: New test.
* g++.dg/tm/noexcept-2.C: New test.
* g++.dg/tm/noexcept-3.C: New test.
* g++.dg/tm/noexcept-4.C: New test.
* g++.dg/tm/noexcept-5.C: New test.
Arnaud Charlet [Mon, 12 Dec 2011 12:03:35 +0000 (13:03 +0100)]
[multiple changes]
2011-12-12 Robert Dewar <dewar@adacore.com>
* exp_atag.adb, exp_atag.ads, exp_util.adb, exp_attr.adb,
sem_ch13.adb: Minor reformatting.
2011-12-12 Gary Dismukes <dismukes@adacore.com>
* sem_ch7.adb (Uninstall_Declarations): Don't
apply check for incomplete types used as a result type for an
access-to-function type when compiling for Ada 2012 or later.
* sem_ch6.adb (Analyze_Subprogram_Declaration):
Specialize error message for interface subprograms that are
not declared abstract nor null (functions can't be declared as
null). Also, remove "(Ada 2005)" from message.
Arnaud Charlet [Mon, 12 Dec 2011 11:54:30 +0000 (12:54 +0100)]
[multiple changes]
2011-12-12 Robert Dewar <dewar@adacore.com>
* sem_prag.adb (GNAT_Pragma): Check comes from source.
2011-12-12 Robert Dewar <dewar@adacore.com>
* gnatls.adb: Minor reformatting.
2011-12-12 Javier Miranda <miranda@adacore.com>
* a-tags.ads (Alignment): New TSD field.
(Max_Predef_Prims): Value lowered to 15 (or 9 in case of
configurable runtime) Update documentation of predefined
primitives since Alignment has been removed.
* exp_disp.ads Update documentation of slots of dispatching
primitives.
* exp_disp.adb (Default_Prim_Op_Position): Update slot
values since alignment is no longer a predefined primitive.
(Is_Predefined_Dispatch_Operation): Remove _alignment.
(Is_Predefined_Internal_Operation): Remove _alignment.
(Make_DT): Update static test on the value stored in a-tags.ads
for Max_Predef_Prims; store the value of 'alignment in the TSD.
* exp_atag.ads, exp_atag.adb (Build_Get_Alignment): New subprogram
that retrieves the alignment from the TSD
* exp_util.adb (Build_Allocated_Deallocate_Proc): For deallocation
of class-wide types obtain the value of alignment from the TSD.
* exp_attr.adb (Expand_N_Attribute_Reference): For 'alignment
applied to a class-wide type invoke Build_Get_Alignment to
generate code which retrieves the value of the alignment from
the TSD.
* rtsfind.ads (RE_Alignment): New Ada.Tags entity
* sem_ch13.adb (Analyze_Attribute_Definition_Clause): For tagged
types if the value of the alignment is bigger than the Maximum
alignment then set the value of the alignment to the Maximum
alignment and report a warning.
* exp_ch3.adb (Make_Predefined_Primitive_Specs): Do not generate
spec of _alignment.
(Predefined_Primitive_Bodies): Do not generate body of _alignment.