Arnaud Charlet [Tue, 6 Jan 2015 09:10:49 +0000 (10:10 +0100)]
[multiple changes]
2015-01-06 Vincent Celier <celier@adacore.com>
* a-strsup.adb (Times (Natural;String;Positive)): Raise
Length_Error, not Index_Error, when the result is too long.
2015-01-06 Thomas Quinot <quinot@adacore.com>
* a-direct.adb (Create_Path): Minor error handling and
performance improvement.
2015-01-06 Robert Dewar <dewar@adacore.com>
* checks.ads, sem_ch12.adb: Minor reformatting.
* exp_ch4.adb (Expand_N_Op_Divide): Generate explicit divide by
zero check for fixed-point case if Backend_Divide_Checks_On_Target
is False.
2015-01-06 Robert Dewar <dewar@adacore.com>
* sem_prag.adb (Analyze_Pragma, case No_Elaboration_Code_All):
Do not set restriction No_Elaboration_Code unless the pragma
appears in the main unit).
2015-01-06 Ed Schonberg <schonberg@adacore.com>
* sem_ch10.adb (Is_Regular_With_Clause): Add guard to verify
that with clause has already been analyzed before checking kind
of with_clause.
2015-01-06 Robert Dewar <dewar@adacore.com>
* exp_strm.adb (Build_Elementary_Input_Call): Return base type
(as required by RM).
* sem_prag.adb (Process_Suppress_Unsuppress): Add extra warning
for ignoring pragma Suppress (Elaboration_Check) in SPARK mode.
2015-01-06 Javier Miranda <miranda@adacore.com>
* exp_disp.adb (Expand_Interface_Conversion): No displacement
of the pointer to the object needed when the type of the operand
is not an interface type and the interface is one of its parent
types (since they share the primary dispatch table).
Arnaud Charlet [Tue, 6 Jan 2015 09:03:37 +0000 (10:03 +0100)]
[multiple changes]
2015-01-06 Vincent Celier <celier@adacore.com>
* prj-env.adb: Minor comment update.
2015-01-06 Javier Miranda <miranda@adacore.com>
* sem_res.adb (Valid_Conversion): Restrict the checks on anonymous
access types whose target type is an interface type to operands
that are access types; required to report an error when the
operand is not an access type.
Arnaud Charlet [Tue, 6 Jan 2015 09:02:05 +0000 (10:02 +0100)]
[multiple changes]
2015-01-06 Bob Duff <duff@adacore.com>
* a-cfinve.adb (Copy): Set the discriminant to the Length when
Capacity = 0.
* a-cofove.ads (Capacity): Add a postcondition.
* a-cfinve.ads (Capacity): Add a postcondition.
(Reserve_Capacity): Correct the postcondition in the case where
Capacity = 0; that means "Capacity => Length (Container)".
* a-cofove.adb (Elems[c]): Add a comment
explaining the dangers and how to avoid them.
Arnaud Charlet [Tue, 6 Jan 2015 08:57:50 +0000 (09:57 +0100)]
[multiple changes]
2015-01-06 Robert Dewar <dewar@adacore.com>
* s-taskin.ads, s-traces.ads: Minor reformatting.
* exp_util.adb: Minor typo fix.
2015-01-06 Vincent Celier <celier@adacore.com>
* gnatls.adb (Search_RTS): Invoke Initialize_Default_Project_Path
with the runtime name.
* prj-env.adb (Initialize_Default_Project_Path): When both
Target_Name and Runtime_Name are not empty string, add to the
project path the two directories .../lib/gnat and .../share/gpr
related to the runtime.
* prj-env.ads (Initialize_Default_Project_Path): New String
parameter Runtime_Name, defaulted to the empty string.
* frontend.adb: Guard against the case where a configuration
pragma may be split into multiple pragmas and the original
rewritten as a null statement.
* sem_prag.adb (Analyze_Pragma): Insert a brand new Check_Policy
pragma using Insert_Before rather than Insert_Action. This
takes care of the configuration pragma case where Insert_Action
would fail.
2015-01-06 Bob Duff <duff@adacore.com>
* a-coboho.ads (Element_Access): Add "pragma
No_Strict_Aliasing (Element_Access);". This is needed because
we are unchecked-converting from Address to Element_Access.
* a-cofove.ads, a-cofove.adb (Elems,Elemsc): Fix bounds of the
result to be 1.
* sem_res.adb (Resolve_Actuals): Remove the
restriction which prohibits volatile actual parameters with
enabled external propery Async_Writers to act appear in procedure
calls where the corresponding formal is of mode OUT.
compiler: Use function receiver name in mangled named type descriptor.
If named types with similar names are defined inside of methods
with similar names, it was possible that the mangled type names would be
the same, leading to multiple definitions of type descriptor and
garbage collection info variables.
This can only occur with similarly named methods across different
receivers, so we use the receiver name to distinguish.
Jakub Jelinek [Mon, 5 Jan 2015 21:47:51 +0000 (22:47 +0100)]
re PR sanitizer/64265 (r217669 broke tsan)
PR sanitizer/64265
* gimplify.c (gimplify_function_tree): Add TSAN_FUNC_EXIT internal
call as cleanup of the whole body.
* internal-fn.def (TSAN_FUNC_EXIT): New internal call.
* tsan.c (replace_func_exit): New function.
(instrument_func_exit): Moved earlier.
(instrument_memory_accesses): Adjust TSAN_FUNC_EXIT internal calls.
Call instrument_func_exit if no TSAN_FUNC_EXIT internal calls have
been found.
(tsan_pass): Don't call instrument_func_exit.
* internal-fn.c (expand_TSAN_FUNC_EXIT): New function.
* tree-inline.c (copy_bb): Drop TSAN_FUNC_EXIT internal calls during
inlining.
Jakub Jelinek [Mon, 5 Jan 2015 21:46:31 +0000 (22:46 +0100)]
re PR sanitizer/64344 ([UBSAN] ICE with -fsanitize=float-cast-overflow [ICE in -fsanitize=float-cast-overflow])
PR sanitizer/64344
* ubsan.h (ubsan_instrument_float_cast): Add ARG argument.
* ubsan.c (ubsan_instrument_float_cast): Add ARG argument, pass
it to libubsan handler instead of EXPR. Fold comparisons earlier,
if the result is integer_zerop, return NULL_TREE.
* convert.c (convert_to_integer): Pass expr as ARG.
c/
* c-typeck.c (convert_for_assignment, c_finish_return): For
-fsanitize=float-cast-overflow casts from REAL_TYPE to integer/enum
types also set in_late_binary_op around convert call.
* c-convert.c (convert): For -fsanitize=float-cast-overflow REAL_TYPE
to integral type casts, if not in_late_binary_op, pass c_fully_fold
result on expr as last argument to ubsan_instrument_float_cast,
if in_late_binary_op, don't use c_save_expr but save_expr.
testsuite/
* c-c++-common/ubsan/pr64344-1.c: New test.
* c-c++-common/ubsan/pr64344-2.c: New test.
Jakub Jelinek [Mon, 5 Jan 2015 21:45:08 +0000 (22:45 +0100)]
re PR middle-end/64465 (internal compiler error: verify_flow_info failed)
PR tree-optimization/64465
* tree-inline.c (redirect_all_calls): During inlining
clean up EH stmts and EH edges if redirect_call_stmt_to_callee
changed the stmt to a non-throwing call.
With my last change, `sed' is used to cut out the target name from a listed
target. Since there may be additional OPTions encoded in the "target", I tried
to get only the first submatch before an `OPT'. However, `sed' uses longest
match, so I'm re-writing this using awk.
If anybody is like using `gawk' or anything different, please feel free to
drop another patch. Since this is usually called by hand or by robots under
review, I don't see much of a problem here.
2015-01-05 Jan-Benedict Glaw <jbglaw@lug-owl.de>
contrib/
* config-list.mk: Use shortest match for OPT to find the actual
target name.
Thomas Koenig [Mon, 5 Jan 2015 17:15:17 +0000 (17:15 +0000)]
re PR fortran/47674 (gfortran.dg/realloc_on_assign_5.f03: Segfault at run time for deferred (allocatable) string length)
2015-01-05 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/47674
* dependency.c: Update copyright years.
(gfc_discard_nops): Add prototype.
* dependency.c (discard_nops): Rename to gfc_discard_nops,
make non-static.
(gfc_discard_nops): Use gfc_discard_nops.
(gfc_dep_difference): Likewise.
* frontend-passes.c Update copyright years.
(realloc_strings): New function. Add prototype.
(gfc_run_passes): Call realloc_strings.
(realloc_string_callback): New function.
(create_var): Add prototype. Handle case of a
scalar character variable.
(optimize_trim): Do not handle allocatable variables.
2015-01-05 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/47674
* gfortran.dg/realloc_on_assign_25.f90: New test.
Marek Polacek [Mon, 5 Jan 2015 12:03:57 +0000 (12:03 +0000)]
re PR c/64423 (Incorrect column number of -Wchar-subscripts)
PR c/64423
c-family/
* c-common.c (warn_array_subscript_with_type_char): Add location_t
parameter. Use it.
* c-common.h (warn_array_subscript_with_type_char): Update
declaration.
c/
* c-typeck.c (build_array_ref): Pass loc down to
warn_array_subscript_with_type_char.
cp/
* typeck.c (cp_build_array_ref): Pass loc down to
warn_array_subscript_with_type_char.
testsuite/
* gcc.dg/pr64423.c: New test.
pa.md (decrement_and_branch_until_zero): Use `Q' constraint instead of `m' constraint.
* config/pa/pa.md (decrement_and_branch_until_zero): Use `Q' constraint
instead of `m' constraint. Likewise for unnamed movb comparison
patterns using reg_before_reload_operand predicate.
* config/pa/predicates.md (reg_before_reload_operand): Tighten
predicate to reject register index and LO_SUM DLT memory forms
after reload.
gcc/
* doc/invoke.texi (Option Summary): Fix spelling of
-fdevirtualize-at-ltrans.
([-fdevirtualize]): Fix markup.
([-fdevirtualize-speculatively]): Fix typo.
([-fdevirtualize-at-ltrans]): Likewise. Make description less
implementor-speaky.
* common.opt (fdevirtualize-at-ltrans): Likewise.
* ipa-devirt.c: Fix typos in comments throughout the file.
(ipa_devirt): Fix typos in format strings for dump output.
Instrument bit field and unaligned accesses for TSAN.
* sanitizer.def (BUILT_IN_TSAN_READ_RANGE): New built-in function.
(BUILT_IN_TSAN_WRITE_RANGE): New built-in function.
* tsan.c (instrument_expr): Handle COMPONENT_REF and BIT_FIELD_REF.
Use BUILT_IN_TSAN_READ_RANGE and BUILT_IN_TSAN_WRITE_RANGE for
unaligned memory regions.
Janus Weil [Fri, 2 Jan 2015 11:24:32 +0000 (12:24 +0100)]
re PR fortran/60507 (Passing function call into procedure argument not caught)
2015-01-02 Janus Weil <janus@gcc.gnu.org>
PR fortran/60507
* interface.c (is_procptr_result): New function to check if an
expression is a procedure-pointer result.
(compare_actual_formal): Use it.
Iain Sandoe [Wed, 31 Dec 2014 13:58:16 +0000 (13:58 +0000)]
Allow Objective-c++ to recognise lambdas.
gcc/cp:
* parser.c (cp_parser_primary_expression): If parsing an
objective-c++ message expression fails, see if a lambda is present.
(cp_parser_objc_message_receiver): Don't assume that, if a message
receiver expression fails, it is a hard error.
Jan Hubicka [Tue, 30 Dec 2014 11:36:00 +0000 (12:36 +0100)]
ipa-inline-analysis.c (edge_set_predicate): Reset size/time when target is UNREACHABLE.
* ipa-inline-analysis.c (edge_set_predicate): Reset size/time when
target is UNREACHABLE.
(evaluate_properties_for_edge): If call statemet is available, use it
to determine compile time constants.
(estimate_function_body_sizes): Enable predicates for early inliner.
(estimate_calls_size_and_time): Speedup.
(inline_merge_summary): Evaluate properties for early inliner, too.
Steve Ellcey [Mon, 29 Dec 2014 16:42:26 +0000 (16:42 +0000)]
t-mti-linux (MULTILIB_EXCEPTIONS): Add exceptions for mips32[r1] and mips64[r1] with -mnan=2008.
2014-12-29 Steve Ellcey <sellcey@mips.com>
* config/mips/t-mti-linux (MULTILIB_EXCEPTIONS): Add exceptions
for mips32[r1] and mips64[r1] with -mnan=2008.
* config/mips/t-mti-elf (MULTILIB_EXCEPTIONS): Ditto.