2015-10-20 Bob Duff <duff@adacore.com>
* output.adb (Write_Int): Work with negative numbers in order to avoid
negating Int'First and thereby causing overflow.
* sem_util.adb: Minor comment fix.
2015-10-20 Eric Botcazou <ebotcazou@adacore.com>
* make.adb (Check): Skip multilib switches reinstated by the
compiler when doing the comparison with switches passed to
gnatmake.
2015-10-20 Yannick Moy <moy@adacore.com>
* inline.adb (Can_Be_Inlined_In_GNATprove_Mode): Return
False for procedures marked No_Return.
* sem_util.ads (Enclosing_Declaration): Improve comment.
* einfo.adb (Is_Completely_Hidden): Remove spurious assertion.
From-SVN: r229029
2015-10-20 Thomas Quinot <quinot@adacore.com>
* types.ads: Minor reformatting.
2015-10-20 Hristian Kirtchev <kirtchev@adacore.com>
* einfo.adb (Get_Pragma): Minor reformatting. Rename local constant
Is_CDG to Is_CLS. Add pragma Constant_After_Elaboration to the list of
classification pragmas.
2015-10-20 Ed Schonberg <schonberg@adacore.com>
* sem_ch3.adb (Analyze_Declarations); At the of the visible part,
perform name resolution on the expressions in aspects of visible
entities.
* sem_ch13.ads, sem_ch13.adb (Resolve_Aspect_Expressions): Resolve
expressions in aspects independently of whether corresponding
entity is frozen. Used to complete name resolution of aspect
expressions for entities declared in the visible part of a
package or generic package declaration.
From-SVN: r229028
2015-10-20 Vincent Celier <celier@adacore.com>
* prj-attr.adb: Add package Codepeer and its attributes.
2015-10-20 Thomas Quinot <quinot@adacore.com>
* sem_ch3.adb, sem_ch13.adb: Minor reformatting.
2015-10-20 Eric Botcazou <ebotcazou@adacore.com>
* gnatlink.adb (Gnatlink): Do not translate --RTS switch
for the linker and instead pass the switches that were
reinstated by the compiler.
2015-10-20 Bob Duff <duff@adacore.com>
* a-contai.ads, a-convec.ads: Move Count_Type_Last from
a-convec.ads to a-contai.ads, so other containers can refer to it.
From-SVN: r229027
2015-10-20 Ed Schonberg <schonberg@adacore.com>
* sem_ch3.adb (Check_Nonoverridable_Aspects): New procedure within
Analyze_Full_Type_ Declaration, used to apply legality rules in
13,1,1 (18.3.3) concerning aspects that cannot be overridden in
a type extension.
(Check_Duplicate_Aspects): It is not legal to specify the
Implicit_Dereference aspect on a full view if partial view has
known discriminants.
* sem_ch13.adb (Analyze_Aspect_Implicit_Dereference): Verify that
the specification of the aspect on a derived type confirms the
value of the inherited one.
* sem_util.adb (Reference_Discriminant): Return empty if none
specified.
From-SVN: r229026
2015-10-20 Thomas Quinot <quinot@adacore.com>
* exp_ch5.adb, sem_ch3.adb: Minor reformatting.
2015-10-20 Vincent Celier <celier@adacore.com>
* a-strsup.adb (Super_Trim): Remove statements that put NUL
characters in unused portion of the Data string.
From-SVN: r229025
* constexpr.c (cxx_eval_constant_expression): Expand PTRMEM_CST
only when necessary.
(cxx_eval_component_reference): Like here.
* decl2.c (lower_var_init): And here.
(c_parse_final_cleanups): Call it.
* typeck2.c (digest_init_r): Not here.
* decl.c (complete_vars): Or here.
(cp_finish_decl): Add local statics to symbol table.
From-SVN: r229018
2015-10-19 Steven G. Kargl <kargl@gcc.gnu.org>
* resolve.c (gfc_verify_binding_labels): Check for NULL pointer.
2015-10-19 Steven G. Kargl <kargl@gcc.gnu.org>
* gfortran.dg/pr67900.f90: New tests.
From-SVN: r229013
A powerpc-linux/powerpc64-linux biarch compiler can default to either
-m32 or -m64, and we need to notice both -m32 and -m64 on the gccgo
command line. It's also possible to build a -m64 only compiler, so in
that case we can define TARGET_CAN_SPLIT_STACK.
gcc/
PR go/66870
* config/rs6000/sysv4.h (TARGET_CAN_SPLIT_STACK_64BIT): Don't define.
* config/rs6000/linux64.h (TARGET_CAN_SPLIT_STACK): Define.
(TARGET_CAN_SPLIT_STACK_64BIT): Define.
gcc/go/
PR go/66870
* gospec.c (saw_opt_m32): Rename to..
(is_m64): ..this, initialised by TARGET_CAN_SPLIT_STACK_64BIT.
Update uses.
(lang_specific_driver): Set is_m64 if OPT_m64, clear if OPT_m32.
From-SVN: r229009
gcc/ChangeLog:
PR rtl-optimization/66790
* df.h (DF_MIR): New macro.
(DF_LAST_PROBLEM_PLUS1): Update to be past DF_MIR
(DF_MIR_INFO_BB): New macro.
(DF_MIR_IN, DF_MIR_OUT): New macros.
(struct df_mir_bb_info): New.
(df_mir): New macro.
(df_mir_add_problem, df_mir_simulate_one_insn): New forward
declarations.
(df_mir_get_bb_info): New.
* df-problems.c (struct df_mir_problem_data): New.
(df_mir_free_bb_info, df_mir_alloc, df_mir_reset,
df_mir_bb_local_compute, df_mir_local_compute, df_mir_init,
df_mir_confluence_0, df_mir_confluence_n,
df_mir_transfer_function, df_mir_free, df_mir_top_dump,
df_mir_bottom_dump, df_mir_verify_solution_start,
df_mir_verify_solution_end): New.
(problem_MIR): New.
(df_mir_add_problem, df_mir_simulate_one_insn): New.
* timevar.def (TV_DF_MIR): New.
* ree.c: Include bitmap.h
(add_removable_extension): Add an INIT_REGS parameter. Use it
to skip zero-extensions that may get an uninitialized register.
(find_removable_extensions): Compute must-initialized registers
using the MIR dataflow problem. Update the call to
add_removable_extension.
(find_and_remove_re): Call df_mir_add_problem.
gcc/testsuite/ChangeLog:
* gnat.dg/opt50.adb: New test.
* gnat.dg/opt50_pkg.adb: New helper.
* gnat.dg/opt50_pkg.ads: New helper.
From-SVN: r229008
For mn10300, STC still gives better results for optimise-for-size than
"simple" does. So use STC at -Os as well.
2015-10-19 Segher Boessenkool <segher@kernel.crashing.org>
* common/config/mn10300/mn10300-common.c
(mn10300_option_optimization_table) <OPT_freorder_blocks_algorithm_>:
Use REORDER_BLOCKS_ALGORITHM_STC at -Os and up.
From-SVN: r229006
2015-10-19 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/68019
* decl.c (add_init_expr_to_sym): Remove an assert() to allow an error
message to be issued.
2015-10-19 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/68019
* gfortran.dg/pr68019.f90: new test.
From-SVN: r229003
2015-10-19 Richard Biener <rguenther@suse.de>
PR tree-optimization/67975
* tree-cfg.h (extract_true_false_controlled_edges): Declare.
* tree-cfg.c (extract_true_false_controlled_edges): Split out
core worker from ...
* tree-ssa-loop-im.c (extract_true_false_args_from_phi): ... here.
* tree-ssa-sccvn.c (vn_phi_compute_hash): Hash number of args
instead of block number for PHIs with two or one args.
(vn_phi_eq): Compare edge predicates of PHIs that are in different
blocks.
* gcc.dg/tree-ssa/ssa-fre-50.c: New testcase.
From-SVN: r228971
Since GET_MODE_ALIGNMENT is defined by psABI and the biggest alignment
is 4 byte for IA MCU psABI, we should use GET_MODE_BITSIZE for IA MCU
psABI to get vector natural alignment to check misaligned vector move.
* config/i386/i386.c (ix86_expand_vector_move): Use
GET_MODE_BITSIZE for IA MCU psABI to get vector natural
alignment.
From-SVN: r228969
When processing __attribute__ ((target("arch=XXX"))), we should clear
the ISA bits in x_ix86_isa_flags first to avoid leaking ISA from
command line.
gcc/
PR target/67995
* config/i386/i386.c (ix86_valid_target_attribute_tree): If
arch= is set, clear all bits in x_ix86_isa_flags, except for
ISA_64BIT, ABI_64, ABI_X32, and CODE16.
gcc/testsuite/
PR target/67995
* gcc.target/i386/pr67995-1.c: New test.
* gcc.target/i386/pr67995-2.c: Likewise.
* gcc.target/i386/pr67995-3.c: Likewise.
From-SVN: r228967
builtins-20.c had:
if (cos((y*=2, -fabs(tan(x/-y)))) != cos((y*=2,tan(x/y))))
link_error ();
which is undefined behaviour. The test expected that y had the same
value in x/y and x/-y, but gimplification actually implements the
"obvious" interpretation, multiplying y by 2, using it for one cos call,
then multiplying it by 2 again and using it for the other cos call.
The file has other (valid) tests that side-effects don't block
optimisation, such as:
if (cosf((y*=3, -x)) != cosf((y*=3,x)))
link_error ();
so this patch simply removes this instance.
Tested on x86_64-linux-gnu, aarch64-linux-gnu and arm-linux-gnueabi.
gcc/testsuite/
* gcc.dg/builtins-20.c: Remove undefined behavior.
From-SVN: r228963
Fix an inconsistent state, between the in_common attribute
and the common_block pointer.
- adding a symbol to a common block list in gfc_match_common is delayed
after the call to gfc_add_in_common.
- gfc_restore_latest_undo_checkpoint is changed to check the common_block
pointer directly instead of the in_common attribute.
- gfc_restore_old_symbol is changed to also restore
the common-related pointers. This is done using a new function created
to factor the related memory management.
- In gfc_restore_last_undo_checkpoint, when a symbol has been removed
from the common block linked list, its common_next pointer is cleared.
PR fortran/67758
gcc/fortran/
* gfortran.h (gfc_symbol): Expand comment.
* match.c (gfc_match_common): Delay adding the symbol to
the common_block after the gfc_add_in_common call.
* symbol.c (gfc_free_symbol): Move common block memory handling...
(gfc_set_symbol_common_block): ... here as a new function.
(restore_old_symbol): Restore common block fields.
(gfc_restore_last_undo_checkpoint):
Check the common_block pointer instead of the in_common attribute.
When a symbol has been removed from the common block linked list,
clear its common_next pointer.
gcc/testsuite/
* gfortran.dg/common_25.f90: New file.
From-SVN: r228947
gcc/
* config/darwin-driver.c (darwin_default_min_version): Refactor code.
(darwin_driver_init): Note a version-min when provided on the c/l.
* config/darwin.h (%darwin_minversion): Remove.
* config/i386/darwin.h: Likewise.
* config/rs6000/darwin.h: Likewise.
* config/darwin.opt (mmacosx-version-min=): Use the configured default, rather than
an arbitrary constant.
From-SVN: r228944
gcc/
* config/darwin-driver.c (darwin_driver_init): Handle '-arch' for
PPC, detect conflicts between -arch and multilib settings. Detect
and warn about conflicts between multiple -arch definitions.
From-SVN: r228941
2015-10-18 Paul Thomas <pault@gcc.gnu.org>
PR fortran/67177
PR fortran/67977
* primary.c (match_substring): Add an argument 'deferred' to
flag that a substring reference with null start and end should
not be optimized away for deferred length strings.
(match_string_constant, gfc_match_rvalue): Set the argument.
* trans-expr.c (alloc_scalar_allocatable_for_assignment): If
there is a substring reference return.
* trans-intrinsic.c (conv_intrinsic_move_alloc): For deferred
characters, assign the 'from' string length to the 'to' string
length. If the 'from' expression is deferred, set its string
length to zero. If the 'to' expression has allocatable
components, deallocate them.
2015-10-18 Paul Thomas <pault@gcc.gnu.org>
PR fortran/67177
* gfortran.dg/move_alloc_15.f90: New test
* gfortran.dg/move_alloc_16.f90: New test
PR fortran/67977
* gfortran.dg/deferred_character_assignment_1.f90: New test
From-SVN: r228940
2015-10-17 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/67987
* decl.c (char_len_param_value): Unwrap unlong line. If LEN < 0,
force it to zero per the Fortran 90, 95, 2003, and 2008 Standards.
* resolve.c (gfc_resolve_substring_charlen): Unwrap unlong line.
If 'start' is larger than 'end', length of substring is negative,
so explicitly set it to zero.
(resolve_charlen): Remove -Wsurprising warning. Update comment to
reflect that the text is from the F2008 standard.
2015-10-17 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/67987
* gfortran.df/pr67987.f90: New test.
* gfortran.dg/char_length_2.f90: Update testcase.
From-SVN: r228933
* config/rl78/divmodqi.S: Return 0x00 by default for div by 0.
* config/rl78/divmodsi.S: Update return register to r8.
* config/rl78/divmodhi.S: Update return register to r8,r9.
Branch to main_loop_done_himode to pop registers before return.
From-SVN: r228926
Since Lakemont processor doesn't have 387, we should disable
X86_TUNE_ALWAYS_FANCY_MATH_387 for Lakemont.
* i386/x86-tune.def (X86_TUNE_ALWAYS_FANCY_MATH_387): Disable
for Lakemont.
From-SVN: r228925
Use union to check float return bits to avoid converting from integer
to float when comparing float return value.
* gcc.target/i386/iamcu/test_basic_returning.c
(def_test_returning_type): Use union to check float return bits.
From-SVN: r228924