gcc.git
7 years ago[arm] Eliminate TARGET_FPU_NAME
Richard Earnshaw [Thu, 15 Dec 2016 15:58:02 +0000 (15:58 +0000)]
[arm] Eliminate TARGET_FPU_NAME

Rather than assuming a specific fpu name has been selected, we work
out the FPU from the ISA properties.  This is necessary since once we
have default FPUs selected by the processor, there will be no explicit
entry in the table of fpus to refer to.

This also fixes a bug with the code I added recently to permit new
aliases for existing FPU names: the new names cannot be passed to the
assembler since it does not recognize them.  By mapping the ISA
features back to the canonical names we avoid having to teach the
assembler about the new names.

* arm.h (TARGET_FPU_NAME): Delete.
* arm.c (arm_identify_fpu_from_isa): New function.
(arm_declare_function_name): Use it to get the name for the FPU.

From-SVN: r243711

7 years ago[arm] Initialize fpu capability bits in arm_active_target
Richard Earnshaw [Thu, 15 Dec 2016 15:56:29 +0000 (15:56 +0000)]
[arm] Initialize fpu capability bits in arm_active_target

Now that we can describe the FPU with the standard ISA bits we need to
initialize them.  However, the FPU settings can be changed with target build
attributes, so we also need to reset them if things change.  This requires
a bit of juggling about with the existing code to ensure that the active
target is reconfigured after each change to the target options.

* arm-protos.h: Include sbitmap.h
(arm_configure_build_target): Make public.
* arm.c (arm_configure_build_target): Now not static.
(arm_valid_target_attribute_rec): Move internal option check to...
(arm_valid_target_attribute_tree0: ... here.  Also reconfingure the
active target.
(arm_override_options_after_change): Call arm_configure_build_target.
(isa_all_fpubits): Renamed from isa_fpubits.
(arm_option_restore): New function.
(TARGET_OPTION_RESTORE): Register it.
(arm_configure_build_target): Initialize the FPU capability bits in
the isa.
(arm_option_override): Move the code that forces the setting of the
FPU option before the call to arm_configure_build_target.
* arm.opt (march): Mark as Save.
(mcpu, mtune): Likewise.
* arm-c.c (arm_pragma_target_parse): Reconfigure the build target
after pragmas change the target options.

From-SVN: r243710

7 years ago[arm] Add isa features to FPU descriptions
Richard Earnshaw [Thu, 15 Dec 2016 15:54:53 +0000 (15:54 +0000)]
[arm] Add isa features to FPU descriptions

Similar to the new CPU and architecture ISA feature lists, we now add
similar capabilities to each FPU description.  We don't use these yet,
that will come in later patches.  These follow the same style as the
newly modified flag sets, but use slightly different defaults that
more accurately reflect the ISA specifications.

* arm-isa.h (isa_feature): Add bits for VFPv4, FPv5, fp16conv,
fP_dbl, fp_d32 and fp_crypto.
(ISA_ALL_FPU): Add all the new bits.
(ISA_VFPv2, ISA_VFPv3, ISA_VFPv4, ISA_FPv5): New macros.
(ISA_FP_ARMv8, ISA_FP_DBL, ISA_FP_D32, ISA_NEON, ISA_CRYPTO): Likewise.
* arm-fpus.def: Add ISA features to all FPUs.
* arm.h: (arm_fpu_desc): Add new field for ISA bits.
* arm.c (all_fpus): Initialize it.
* arm-tables.opt: Regenerated.

From-SVN: r243709

7 years ago[arm] Remove FPU rev field
Richard Earnshaw [Thu, 15 Dec 2016 15:53:50 +0000 (15:53 +0000)]
[arm] Remove FPU rev field

Similar to the main ISA, we convert the FPU revision into a set of feature
bits.  This permits a more complex set of capability relationships to be
expressed more easily.  For now we continue to use the traditional bitmasks.

* arm.h (FPU_FL_VFPv2) New feature bit.
(FPU_FL_VFPv3, FPU_FL_VFPv4, FPU_FL_VFPv5, FPU_FL_ARMv8): Likewise.
(FPU_VFPv2, FPU_VFPv3, FPU_VFPv4, FPU_VFPv5, FPU_ARMv8): New helper
macros.
(FPU_DBL, FPU_D32, FPU_NEON, FPU_CRYPTO, FPU_FP16): Likewise.
(TARGET_FPU_REV): Delete.
(TARGET_VFP3): Use feature bits.
(TARGET_VFP5): Likewise.
(TARGET_FMA): Likewise.
(TARGET_FPU_ARMV8): Likewise.
(struct arm_fpu_desc): Delete rev field.
* arm-fpus.def: Delete REV entry, use new feature bits and macros.
* arm.c (all_fpus): Delete rev field.

From-SVN: r243708

7 years ago[arm] Eliminate vfp_reg_type
Richard Earnshaw [Thu, 15 Dec 2016 15:52:42 +0000 (15:52 +0000)]
[arm] Eliminate vfp_reg_type

Remove the VFP_REGS field by converting its meanings into flag
attributes.  The new flag attributes build on each other describing
increasing capabilities.  This allows us to do a better job when
inlining functions with differing requiremetns on the fpu environment:
we can now inline A into B if B has at least the same register set
properties as B (previously we required identical register set
properties).

* arm.h (vfp_reg_type): Delete.
(TARGET_FPU_REGS): Delete.
(arm_fpu_desc): Delete regs field.
(FPU_FL_NONE, FPU_FL_NEON, FPU_FL_FP16, FPU_FL_CRYPTO): Use unsigned
values.
(FPU_FL_DBL, FPU_FL_D32): Define.
(TARGET_VFPD32): Use feature test.
(TARGET_VFP_SINGLE): Likewise.
(TARGET_VFP_DOUBLE): Likewise.
* arm-fpus.def: Update all entries for new feature bits.
* arm.c (all_fpus): Update initializer macro.
(arm_can_inline_p): Remove test on fpu regs.

From-SVN: r243707

7 years ago[arm] Delete unused arm_fp_model
Richard Earnshaw [Thu, 15 Dec 2016 15:51:35 +0000 (15:51 +0000)]
[arm] Delete unused arm_fp_model

The arm_fp_model enumeration type has only had one useful value since
the FPA support was removed, and it's no-longer used anywhere.  This
patch just cleans that up by removing it.

* arm.h (arm_fp_model): Delete.

From-SVN: r243706

7 years ago[arm] Remove remaining references to arm feature sets
Richard Earnshaw [Thu, 15 Dec 2016 15:50:24 +0000 (15:50 +0000)]
[arm] Remove remaining references to arm feature sets

Nothing uses the old feature sets now, so we can delete them entirely.

* arm-cores.def: Remove FLAGS field from all core definitions.
* arm-arches.def: Likewise.
* arm-opts.h (enum processor_type): Remove FLAGS parameter from
ARM_CORES macro.
(arm_arch_core_flags): Likewise, plus ARM_ARCH macro.
* arm-protos.h (FL_*): Delete.
(arm_feature_set): Delete.
(ARM_FSET_*): Delete.
* arm.c (struct processors): Delete flags field.
(all_cores): Delete FLAGS parameter from macro, don't initialize flags.
(all architectures): Likewise.

From-SVN: r243705

7 years ago[arm] Rework arm-common to use new feature bits.
Richard Earnshaw [Thu, 15 Dec 2016 15:49:13 +0000 (15:49 +0000)]
[arm] Rework arm-common to use new feature bits.

This converts the recently added implicit -mthumb support code to use
the new data structures.  Since we have a very simple query and no
initialized copies of the sbitmaps, for now we simply scan the list of
features to look for the one of interest.

* arm-opts.h (struct arm_arch_core_flag): Add new field ISA.
Initialize it.
    (arm_arch_core_flag): Delete flags field.
     (arm_arch_core_flags): Don't initialize flags field.
  * common/config/arm/arm-common.c (check_isa_bits_for): New function.
(arm_target_thumb_only): Use new isa bits arrays.

From-SVN: r243704

7 years ago[arm] Remove insn_flags.
Richard Earnshaw [Thu, 15 Dec 2016 15:47:58 +0000 (15:47 +0000)]
[arm] Remove insn_flags.

This patch finishes the job of removing insn_flags and moves the logic
over to using the new data structures.  I've added a new boolean
variable to detect when we have ARMv7ve-like capabilities and thus
have 64-bit atomic operations since that would be a complex query and
expensive to do in full.  It might be better to add a specific bit to
the ISA data structures to indicate this capability directly.

* arm-protos.h (insn_flags): Delete declaration.
(arm_arch7ve): Declare.
* arm.c (insn_flags): Delete.
(arm_arch7ve): New variable.
(arm_selected_cpu): Delete.
(arm_option_check_internal): Use new ISA bitmap.
(arm_option_override_internal): Likewise.
(arm_configure_build_target): Declare arm_selected_cpu locally.
(arm_option_override): Use new ISA bitmap.  Initialize arm_arch7ve.
Rearrange variable intialization by general function.
* arm.h (TARGET_HAVE_LPAE): Use arm_arch7ve.

From-SVN: r243703

7 years ago[arm] Use arm_active_target when configuring builtins
Richard Earnshaw [Thu, 15 Dec 2016 15:46:41 +0000 (15:46 +0000)]
[arm] Use arm_active_target when configuring builtins

This patch uses the new ISA data structure to determine which builtins
to add.  It entirely eliminates the need for insn_flags to be a global
variable, but we're about to delete that in the following patches, so
for now we leave it as a global.

* arm-builtins.c: Include sbitmap.h.
(def_mbuiltin): Change first parameter to a flag bit.  Use it to test
available features in the current target.
(struct builtin_description): Change type of feature field.
(IWMMXT_BUILTIN): Use the isa_features types.
(IWMMXT2_BUILTIN): Likewise.
(IWMMXT_BUILTIN2): Likewise.
(IWMMXT2_BUILTIN2): Likewise.
(CRC32_BUILTIN): Likewise.
(CRYPTO_BUILTIN): Likewise.
(iwmmx_builtin): Likewise.
(iwmmx2_builtin): Likewise.
(arm_iwmmxt_builtin): Check for specific feature bits.

From-SVN: r243702

7 years ago[arm] Add new isa quirk bit for Cortex-M3 ldrd issue.
Richard Earnshaw [Thu, 15 Dec 2016 15:45:23 +0000 (15:45 +0000)]
[arm] Add new isa quirk bit for Cortex-M3 ldrd issue.

With the new data structures it is trivial to add a new field and we
aren't (too) limited as to the number we have.  This patch adds a new
bit to describe the need for a particular compiler behaviour
modification: in this case a quirk in the cortex-m3.

* arm-isa.h (enum isa_feature): Add isa_quirk_cm3_ldrd.
(ISA_ALL_QUIRKS): New macro.
* arm-cores.def (cortex-m3): Add isa_quirk_cm3_ldrd to isa feature list.
* arm.c (isa_quirkbits): New feature-list bitmap.
(arm_configure_build_target): Ignore quirk bits when comparing an
architecture feature list with a CPU feature list.
(arm_option_override): Initialize_isa_quirkbits.  If the user has
not specified -m[no-]fix-cortex-m3-ldrd, automatically enable the
feature if isa_quirk_cm3_ldrd appears in the isa feature list.

From-SVN: r243701

7 years ago[arm] Reduce usage of arm_selected_cpu.
Richard Earnshaw [Thu, 15 Dec 2016 15:44:01 +0000 (15:44 +0000)]
[arm] Reduce usage of arm_selected_cpu.

Make more use of the new data structure for initializing existing
variables.

* arm.c (arm_option_override): Use arm_active_target as source of
information for arm_base_arch and arm_arch_name.
* (arm_file_start): Use arm_active_target for core name.

From-SVN: r243700

7 years ago[arm] Use arm_active_target for architecture and tune
Richard Earnshaw [Thu, 15 Dec 2016 15:42:43 +0000 (15:42 +0000)]
[arm] Use arm_active_target for architecture and tune

We now start to make more use of the new data structure.  This allows
us to eliminate two of the existing static variables,
arm_selected_arch and arm_selected tune.

* arm.c (arm_selected_tune): Delete static variable.
(arm_selected_arch): Likewise.
(arm_configure_build_target): Declare local versions of arm_selected
target and arm_selected_arch.  Initialize more fields in target
data structure.
(arm_option_override): Use arm_active_target instead of
arm_selected_tune and arm_selected_arch.
(asm_file_start): Use arm_active_target.

From-SVN: r243699

7 years ago[arm] Introduce arm_active_target.
Richard Earnshaw [Thu, 15 Dec 2016 15:41:26 +0000 (15:41 +0000)]
[arm] Introduce arm_active_target.

This patch creates a new data structure for carrying around the data
relating to the current compilation target.  The idea behind this is
that this data structure can be updated to reflect the overall
compilation target as new information is gathered (from command line
options) or architectural extensions.  We will no-longer have to grub
around looking in multiple places for this information.

There are some small behaviour changes around how we handle selecting
a default CPU if thumb or interworking are specified on the command
line and the default CPU does not support thumb, but I believe the
existing code was broken in that respect.  This code will go away once
we obsolete pre-armv4t devices.

* arm-protos.h (arm_build_target): New structure.
(arm_active_target): Declare it.
* arm.c (arm_active_target): New variable.
(bitmap_popcount): New function.
(feature_count): Delete.
(arm_initialize_isa): New function.
isa_fpubits): New variable.
(arm_configure_build_target): New function.
(arm_option_override): Initialize isa_fpubits and arm_active_target.isa.
Use arm_configure_build_target.

From-SVN: r243698

7 years agoThis patch adds the new ISA data structures.
Richard Earnshaw [Thu, 15 Dec 2016 15:39:40 +0000 (15:39 +0000)]
This patch adds the new ISA data structures.

This patch adds the new ISA data structures.  The idea is to use an
sbitmap for carrying these around internally.  We don't make much use
of this yet, but will increasingly migrate over to this in the
following patches.  All cores and architectures currently have both
old and new encodings for now.

For simplicity and clarity we introduce internally the concept of
ARMv7ve.  It doesn't change any visible behaviour.

There's also a bit of tidying up of the various supported cores,
sorting them by profile.

* arm-isa.h: New file.
* arm-protos.h: Include it.
* arm-arches.def: Add new ISA field to all entries.  Drop bogus
armv8.1-a+crc architecture.
* arm-cores.def: Similarly.  Group ARMv8 cores by profile.
* arm-opts.h (enum processor_type): Adjust for new field.
* arm.c (struct processors): New field 'isa_bits'.
(all_cores, all_architectures): Initialize new field.
* arm-tables.opt: Regenerated.
* arm-tune.md: Regenerated.

From-SVN: r243697

7 years agoWe start out by separating the 'tuning flags' in a CPU or architecture...
Richard Earnshaw [Thu, 15 Dec 2016 15:38:21 +0000 (15:38 +0000)]
We start out by separating the 'tuning flags' in a CPU or architecture...

We start out by separating the 'tuning flags' in a CPU or architecture
specification into a new field in the data structures.  Because there
aren't very many of these (and we'd like to get rid of them entirely,
eventually, moving to entries in the tuning tables), we just use a
simple unsigned word.  This frees up a number of bits in the main
flags data structure, but we don't consolidate them as we'll be
getting rid of them entirely shortly.

There's one small user-visible change, the slow multiply flag is moved
from being treated as an architectural flag to a tuning flag.  This
has two consequences: it's now ignored for architectural matching to a
CPU and specifying a -mtune option will now correctly apply the
multiply performance to the decision as to which sequences to
synthesise.

* arm-arches.def (ARM_ARCH): Add extra field TUNE_FLAGS, move
tuning properties from architectural FLAGS field.
* arm-cores.def (ARM_CORE): Likewise.
* arm-protos.h (TF_LDSCHED, TF_WBUF, TF_CO_PROC): New macros.
(TF_SMALLMUL, TF_STRONG, TF_SCALE, TF_NOMODE32): New macros.
(FL_LDSCHED, FL_STRONG, FL_WBUF, FL_SMALLMUL): Delete.
(FL_TUNE): Remove deleted elements.
(tune_flags): Convert type to unsigned int.
* arm.c (struct processors): Add new field tune_flags.
(all_cores, all_arches): Initialize it.
(arm_option_override): Adapt uses of tune_flags.  Use tune_flags
for deciding when we should have slow multiply operations.

From-SVN: r243696

7 years agoFix ChangeLog formatting.
David Edelsohn [Thu, 15 Dec 2016 15:16:36 +0000 (10:16 -0500)]
Fix ChangeLog formatting.

From-SVN: r243695

7 years agossa-fre-55.c: Add -Wno-psabi.
David Edelsohn [Thu, 15 Dec 2016 15:15:35 +0000 (15:15 +0000)]
ssa-fre-55.c: Add -Wno-psabi.

        * gcc.dg/tree-ssa/ssa-fre-55.c: Add -Wno-psabi.
        * gcc.dg/tree-ssa/pr71179.c: Same.

From-SVN: r243694

7 years agoPR59170 make pretty printers check for singular iterators
Jonathan Wakely [Thu, 15 Dec 2016 14:13:36 +0000 (14:13 +0000)]
PR59170 make pretty printers check for singular iterators

PR libstdc++/59170
* python/libstdcxx/v6/printers.py (StdListIteratorPrinter.to_string)
(StdSlistIteratorPrinter.to_string, StdVectorIteratorPrinter.to_string)
(StdRbtreeIteratorPrinter.to_string)
(StdDequeIteratorPrinter.to_string): Add check for value-initialized
iterators.
* testsuite/libstdc++-prettyprinters/simple.cc: Test them.
* testsuite/libstdc++-prettyprinters/simple11.cc: Likewise.

From-SVN: r243692

7 years agore PR fortran/78800 ([OOP] ICE in compare_parameter, at fortran/interface.c:2246)
Janus Weil [Thu, 15 Dec 2016 14:07:51 +0000 (15:07 +0100)]
re PR fortran/78800 ([OOP] ICE in compare_parameter, at fortran/interface.c:2246)

2016-12-15  Janus Weil  <janus@gcc.gnu.org>

PR fortran/78800
* interface.c (compare_allocatable): Avoid additional errors on bad
class declarations.
(compare_parameter): Put the result of gfc_expr_attr into a variable,
in order to avoid calling it multiple times. Exit early on bad class
declarations to avoid ICE.

2016-12-15  Janus Weil  <janus@gcc.gnu.org>

PR fortran/78800
* gfortran.dg/unlimited_polymorphic_27.f90: New test case.

From-SVN: r243691

7 years agoPR59161 make pretty printers always return strings
Jonathan Wakely [Thu, 15 Dec 2016 13:25:22 +0000 (13:25 +0000)]
PR59161 make pretty printers always return strings

PR libstdc++/59161
* python/libstdcxx/v6/printers.py (StdListIteratorPrinter.to_string)
(StdSlistIteratorPrinter.to_string, StdVectorIteratorPrinter.to_string)
(StdRbtreeIteratorPrinter.to_string, StdDequeIteratorPrinter.to_string)
(StdDebugIteratorPrinter.to_string): Return string instead of
gdb.Value.
* testsuite/libstdc++-prettyprinters/59161.cc: New test.

From-SVN: r243690

7 years agoTweak formatting and docs for pretty printers
Jonathan Wakely [Thu, 15 Dec 2016 12:45:47 +0000 (12:45 +0000)]
Tweak formatting and docs for pretty printers

* python/libstdcxx/v6/printers.py (UniquePointerPrinter.to_string):
Remove redundant parentheses.
(RbtreeIterator, StdRbtreeIteratorPrinter): Add docstrings.
(StdForwardListPrinter.to_string): Remove redundant parentheses.
(StdExpOptionalPrinter.to_string): Use string formatting instead of
concatenation.
(StdVariantPrinter.to_string, StdNodeHandlePrinter.to_string)
(TemplateTypePrinter): Adjust whitespace.

From-SVN: r243689

7 years agoAdd GDB XMethods for shared_ptr and unique_ptr<T[]>
Jonathan Wakely [Thu, 15 Dec 2016 12:45:42 +0000 (12:45 +0000)]
Add GDB XMethods for shared_ptr and unique_ptr<T[]>

* python/libstdcxx/v6/xmethods.py (UniquePtrGetWorker.__init__): Use
correct element type for unique_ptr<T[]>.
(UniquePtrGetWorker._supports, UniquePtrDerefWorker._supports): New
functions to disable unsupported operators for unique_ptr<T[]>.
(UniquePtrSubscriptWorker): New worker for operator[].
(UniquePtrMethodsMatcher.__init__): Register UniquePtrSubscriptWorker.
(UniquePtrMethodsMatcher.match): Call _supports on the chosen worker.
(SharedPtrGetWorker, SharedPtrDerefWorker, SharedPtrSubscriptWorker)
(SharedPtrUseCountWorker, SharedPtrUniqueWorker): New workers.
(SharedPtrMethodsMatcher): New matcher for shared_ptr.
(register_libstdcxx_xmethods): Register SharedPtrMethodsMatcher.
* testsuite/libstdc++-xmethods/unique_ptr.cc: Test arrays.
* testsuite/libstdc++-xmethods/shared_ptr.cc: New test.

From-SVN: r243688

7 years agoMIPS: Upgrade to R2 for -mmicromips.
Toma Tabacu [Thu, 15 Dec 2016 10:22:20 +0000 (10:22 +0000)]
MIPS: Upgrade to R2 for -mmicromips.

gcc/testsuite

* gcc.target/mips/mips.exp (mips-dg-options): Upgrade to R2 for
-mmicromips.

From-SVN: r243687

7 years agoforwprop-35.c: Use -Wno-psabi everywhere.
Jakub Jelinek [Thu, 15 Dec 2016 08:22:05 +0000 (09:22 +0100)]
forwprop-35.c: Use -Wno-psabi everywhere.

* gcc.dg/tree-ssa/forwprop-35.c: Use -Wno-psabi everywhere.
* gcc.dg/torture/pr78515.c: Likewise.
* gcc.dg/pr69634.c: Likewise.

From-SVN: r243686

7 years agoPR middle-end/78519 - missing warning for sprintf %s with null pointer
Martin Sebor [Thu, 15 Dec 2016 04:35:31 +0000 (04:35 +0000)]
PR middle-end/78519 - missing warning for sprintf %s with null pointer

gcc/ChangeLog:

PR middle-end/78519
* gimple-ssa-sprintf.c (format_string): Handle null pointers.
(format_directive): Diagnose null pointer arguments.
(pass_sprintf_length::handle_gimple_call): Diagnose null destination
pointers.  Correct location of null format string in diagnostics.

gcc/testsuite/ChangeLog:

PR middle-end/78519
* gcc.dg/tree-ssa/builtin-sprintf-warn-7.c: New test.

From-SVN: r243684

7 years agoPR c++/78774 - [6/7 Regression] ICE in constexpr string literals and templates
Martin Sebor [Thu, 15 Dec 2016 03:08:14 +0000 (03:08 +0000)]
PR c++/78774 - [6/7 Regression] ICE in constexpr string literals and templates

gcc/cp/ChangeLog:

PR c++/78774
* pt.c (convert_template_argument): Avoid assuming operand type
is non-null since that of SCOPE_REF is not.

gcc/testsuite/ChangeLog:

PR c++/78774
* g++.dg/cpp1y/pr78774.C: New test.

From-SVN: r243683

7 years agocompiler: remove unneeded zero-length slice value init
Ian Lance Taylor [Thu, 15 Dec 2016 02:14:40 +0000 (02:14 +0000)]
compiler: remove unneeded zero-length slice value init

    Prune away a bit of unnecessary code from the helper routine
    Slice_construction_expression::create_array_val() that was adding
    an extra NULL value to empty slices (no longer needed).

    Reviewed-on: https://go-review.googlesource.com/34410

From-SVN: r243682

7 years agoIntroduce selftest::locate_file
David Malcolm [Thu, 15 Dec 2016 01:47:48 +0000 (01:47 +0000)]
Introduce selftest::locate_file

gcc/ChangeLog:
* Makefile.in (SELFTEST_FLAGS): Add path argument to -fself-test.
(s-selftest): Add dependency on the selftests data directory.
* common.opt (fself-test): Rename to...
(fself-test=): ...this, documenting the meaning of the argument.
* selftest-run-tests.c (along): Likewise.
* selftest-run-tests.c: Include "options.h".
(selftest::run_tests): Initialize selftest::path_to_selftest_files
from flag_self_test.
* selftest.c (selftest::path_to_selftest_files): New global.
(selftest::locate_file): New function.
(selftest::test_locate_file): New function.
(selftest_c_tests): Likewise.
(selftest::selftest_c_tests): Call test_locate_file.
* selftest.h (selftest::locate_file): New decl.
(selftest::path_to_selftest_files): New decl.

gcc/testsuite/ChangeLog:
PR target/78213
* gcc.dg/cpp/pr71591.c: Add a fake value for the argument of
-fself-test.
* gcc.dg/pr78213.c: Disable this test.
* selftests/example.txt: New file.

From-SVN: r243681

7 years ago* es.po: Update.
Joseph Myers [Thu, 15 Dec 2016 01:20:21 +0000 (01:20 +0000)]
* es.po: Update.

From-SVN: r243679

7 years agoDaily bump.
GCC Administrator [Thu, 15 Dec 2016 00:16:15 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r243678

7 years agoaarch64-cores.def: Add -1 as the variant to all of the cores.
Andrew Pinski [Wed, 14 Dec 2016 22:42:44 +0000 (22:42 +0000)]
aarch64-cores.def: Add -1 as the variant to all of the cores.

2016-12-14  Andrew Pinski  <apinski@cavium.com>

        * config/aarch64/aarch64-cores.def: Add -1 as the variant to all
        of the cores.
        (thunderx): Update to include LSE by default.
        (thunderxt88p1): New core.
        (thunderxt88): New core.
        (thunderxt81): New core.
        (thunderxt83): New core.
        * config/aarch64/driver-aarch64.c (struct aarch64_core_data):
        Add variant field.
        (ALL_VARIANTS): New define.
        (AARCH64_CORE): Support VARIANT operand.
        (cpu_data): Likewise.
        (host_detect_local_cpu): Parse variant field of /proc/cpuinfo.
        Combine the arch and single core case and support variant searching.
        * common/config/aarch64/aarch64-common.c (AARCH64_CORE):
        Add VARIANT operand.
        * config/aarch64/aarch64-opts.h (AARCH64_CORE): Likewise.
        * config/aarch64/aarch64.c (AARCH64_CORE): Likewise.
        * config/aarch64/aarch64.h (AARCH64_CORE): Likewise.
        * config/aarch64/aarch64-tune.md: Regenerate.
        * doc/invoke.texi (AARCH64/mtune): Document thunderxt88,
        thunderxt88p1, thunderxt81, thunderxt83 as available options.

From-SVN: r243675

7 years agoCoding style fixes
Martin Jambor [Wed, 14 Dec 2016 22:36:45 +0000 (23:36 +0100)]
Coding style fixes

2016-12-14  Martin Jambor  <mjambor@suse.cz>

    * omp-offload.c: Fix coding style.
    * omp-expand.c: Likewise.
    * omp-general.c: Likewise.
    * omp-grid.c: Likewise.
    * omp-low.c: Fix coding style of parts touched by the
      previous splitting patch.

From-SVN: r243674

7 years agoSplit omp-low into multiple files
Martin Jambor [Wed, 14 Dec 2016 22:30:41 +0000 (23:30 +0100)]
Split omp-low into multiple files

2016-12-14  Martin Jambor  <mjambor@suse.cz>

* omp-general.h: New file.
* omp-general.c: New file.
* omp-expand.h: Likewise.
* omp-expand.c: Likewise.
* omp-offload.h: Likewise.
* omp-offload.c: Likewise.
* omp-grid.c: Likewise.
* omp-grid.c: Likewise.
* omp-low.h: Include omp-general.h and omp-grid.h.  Removed includes
of params.h, symbol-summary.h, lto-section-names.h, cilk.h, tree-eh.h,
ipa-prop.h, tree-cfgcleanup.h, cfgloop.h, except.h, expr.h, stmt.h,
varasm.h, calls.h, explow.h, dojump.h, flags.h, tree-into-ssa.h,
tree-cfg.h, cfganal.h, alias.h, emit-rtl.h, optabs.h, expmed.h,
alloc-pool.h, cfghooks.h, rtl.h and memmodel.h.
(omp_find_combined_for): Declare.
(find_omp_clause): Renamed to omp_find_clause and moved to
omp-general.h.
(free_omp_regions): Renamed to omp_free_regions and moved to
omp-expand.h.
(replace_oacc_fn_attrib): Renamed to oacc_replace_fn_attrib and moved
to omp-general.h.
(set_oacc_fn_attrib): Renamed to oacc_set_fn_attrib and moved to
omp-general.h.
(build_oacc_routine_dims): Renamed to oacc_build_routine_dims and
moved to omp-general.h.
(get_oacc_fn_attrib): Renamed to oacc_get_fn_attrib and moved to
omp-general.h.
(oacc_fn_attrib_kernels_p): Moved to omp-general.h.
(get_oacc_fn_dim_size): Renamed to oacc_get_fn_dim_size and moved to
omp-general.c.
(omp_expand_local): Moved to omp-expand.h.
(make_gimple_omp_edges): Renamed to omp_make_gimple_edges and moved to
omp-expand.h.
(omp_finish_file): Moved to omp-offload.h.
(default_goacc_validate_dims): Renamed to
oacc_default_goacc_validate_dims and moved to omp-offload.h.
(offload_funcs, offload_vars): Moved to omp-offload.h.
* omp-low.c: Include omp-general.h, omp-offload.h and omp-grid.h.
(omp_region): Moved to omp-expand.c.
(omp_for_data_loop): Moved to omp-general.h.
(omp_for_data): Likewise.
(oacc_loop): Moved to omp-offload.c.
(oacc_loop_flags): Moved to omp-general.h.
(offload_funcs, offload_vars): Moved to omp-offload.c.
(root_omp_region): Moved to omp-expand.c.
(omp_any_child_fn_dumped): Likewise.
(find_omp_clause): Renamed to omp_find_clause and moved to
omp-general.c.
(is_combined_parallel): Moved to omp-expand.c.
(is_reference): Renamed to omp_is_reference and and moved to
omp-general.c.
(adjust_for_condition): Renamed to omp_adjust_for_condition and moved
to omp-general.c.
(get_omp_for_step_from_incr): Renamed to omp_get_for_step_from_incr
and moved to omp-general.c.
(extract_omp_for_data): Renamed to omp_extract_for_data and moved to
omp-general.c.
(workshare_safe_to_combine_p): Moved to omp-expand.c.
(omp_adjust_chunk_size): Likewise.
(get_ws_args_for): Likewise.
(get_base_type): Removed.
(dump_omp_region): Moved to omp-expand.c.
(debug_omp_region): Likewise.
(debug_all_omp_regions): Likewise.
(new_omp_region): Likewise.
(free_omp_region_1): Likewise.
(free_omp_regions): Renamed to omp_free_regions and moved to
omp-expand.c.
(find_combined_for): Renamed to omp_find_combined_for, made global.
(build_omp_barrier): Renamed to omp_build_barrier and moved to
omp-general.c.
(omp_max_vf): Moved to omp-general.c.
(omp_max_simt_vf): Likewise.
(gimple_build_cond_empty): Moved to omp-expand.c.
(parallel_needs_hsa_kernel_p): Likewise.
(expand_omp_build_assign): Moved declaration to omp-expand.c.
(expand_parallel_call): Moved to omp-expand.c.
(expand_cilk_for_call): Likewise.
(expand_task_call): Likewise.
(vec2chain): Likewise.
(remove_exit_barrier): Likewise.
(remove_exit_barriers): Likewise.
(optimize_omp_library_calls): Likewise.
(expand_omp_regimplify_p): Likewise.
(expand_omp_build_assign): Likewise.
(expand_omp_taskreg): Likewise.
(oacc_collapse): Likewise.
(expand_oacc_collapse_init): Likewise.
(expand_oacc_collapse_vars): Likewise.
(expand_omp_for_init_counts): Likewise.
(expand_omp_for_init_vars): Likewise.
(extract_omp_for_update_vars): Likewise.
(expand_omp_ordered_source): Likewise.
(expand_omp_ordered_sink): Likewise.
(expand_omp_ordered_source_sink): Likewise.
(expand_omp_for_ordered_loops): Likewise.
(expand_omp_for_generic): Likewise.
(expand_omp_for_static_nochunk): Likewise.
(find_phi_with_arg_on_edge): Likewise.
(expand_omp_for_static_chunk): Likewise.
(expand_cilk_for): Likewise.
(expand_omp_simd): Likewise.
(expand_omp_taskloop_for_outer): Likewise.
(expand_omp_taskloop_for_inner): Likewise.
(expand_oacc_for): Likewise.
(expand_omp_for): Likewise.
(expand_omp_sections): Likewise.
(expand_omp_single): Likewise.
(expand_omp_synch): Likewise.
(expand_omp_atomic_load): Likewise.
(expand_omp_atomic_store): Likewise.
(expand_omp_atomic_fetch_op): Likewise.
(expand_omp_atomic_pipeline): Likewise.
(expand_omp_atomic_mutex): Likewise.
(expand_omp_atomic): Likewise.
(oacc_launch_pack): and moved to omp-general.c, made public.
(OACC_FN_ATTRIB): Likewise.
(replace_oacc_fn_attrib): Renamed to oacc_replace_fn_attrib and moved
to omp-general.c.
(set_oacc_fn_attrib): Renamed to oacc_set_fn_attrib and moved to
omp-general.c.
(build_oacc_routine_dims): Renamed to oacc_build_routine_dims and
moved to omp-general.c.
(get_oacc_fn_attrib): Renamed to oacc_get_fn_attrib and moved to
omp-general.c.
(oacc_fn_attrib_kernels_p): Moved to omp-general.c.
(oacc_fn_attrib_level): Moved to omp-offload.c.
(get_oacc_fn_dim_size): Renamed to oacc_get_fn_dim_size and moved to
omp-general.c.
(get_oacc_ifn_dim_arg): Renamed to oacc_get_ifn_dim_arg and moved to
omp-general.c.
(mark_loops_in_oacc_kernels_region): Moved to omp-expand.c.
(grid_launch_attributes_trees): Likewise.
(grid_attr_trees): Likewise.
(grid_create_kernel_launch_attr_types): Likewise.
(grid_insert_store_range_dim): Likewise.
(grid_get_kernel_launch_attributes): Likewise.
(get_target_argument_identifier_1): Likewise.
(get_target_argument_identifier): Likewise.
(get_target_argument_value): Likewise.
(push_target_argument_according_to_value): Likewise.
(get_target_arguments): Likewise.
(expand_omp_target): Likewise.
(grid_expand_omp_for_loop): Moved to omp-grid.c.
(grid_arg_decl_map): Likewise.
(grid_remap_kernel_arg_accesses): Likewise.
(grid_expand_target_grid_body): Likewise.
(expand_omp): Renamed to omp_expand and moved to omp-expand.c.
(build_omp_regions_1): Moved to omp-expand.c.
(build_omp_regions_root): Likewise.
(omp_expand_local): Likewise.
(build_omp_regions): Likewise.
(execute_expand_omp): Likewise.
(pass_data_expand_omp): Likewise.
(pass_expand_omp): Likewise.
(make_pass_expand_omp): Likewise.
(pass_data_expand_omp_ssa): Likewise.
(pass_expand_omp_ssa): Likewise.
(make_pass_expand_omp_ssa): Likewise.
(grid_lastprivate_predicate): Renamed to
omp_grid_lastprivate_predicate and moved to omp-grid.c, made public.
(grid_prop): Moved to omp-grid.c.
(GRID_MISSED_MSG_PREFIX): Likewise.
(grid_safe_assignment_p): Likewise.
(grid_seq_only_contains_local_assignments): Likewise.
(grid_find_single_omp_among_assignments_1): Likewise.
(grid_find_single_omp_among_assignments): Likewise.
(grid_find_ungridifiable_statement): Likewise.
(grid_parallel_clauses_gridifiable): Likewise.
(grid_inner_loop_gridifiable_p): Likewise.
(grid_dist_follows_simple_pattern): Likewise.
(grid_gfor_follows_tiling_pattern): Likewise.
(grid_call_permissible_in_distribute_p): Likewise.
(grid_handle_call_in_distribute): Likewise.
(grid_dist_follows_tiling_pattern): Likewise.
(grid_target_follows_gridifiable_pattern): Likewise.
(grid_remap_prebody_decls): Likewise.
(grid_var_segment): Likewise.
(grid_mark_variable_segment): Likewise.
(grid_copy_leading_local_assignments): Likewise.
(grid_process_grid_body): Likewise.
(grid_eliminate_combined_simd_part): Likewise.
(grid_mark_tiling_loops): Likewise.
(grid_mark_tiling_parallels_and_loops): Likewise.
(grid_process_kernel_body_copy): Likewise.
(grid_attempt_target_gridification): Likewise.
(grid_gridify_all_targets_stmt): Likewise.
(grid_gridify_all_targets): Renamed to omp_grid_gridify_all_targets
and moved to omp-grid.c, made public.
(make_gimple_omp_edges): Renamed to omp_make_gimple_edges and moved to
omp-expand.c.
(add_decls_addresses_to_decl_constructor): Moved to omp-offload.c.
(omp_finish_file): Likewise.
(oacc_thread_numbers): Likewise.
(oacc_xform_loop): Likewise.
(oacc_default_dims, oacc_min_dims): Likewise.
(oacc_parse_default_dims): Likewise.
(oacc_validate_dims): Likewise.
(new_oacc_loop_raw): Likewise.
(new_oacc_loop_outer): Likewise.
(new_oacc_loop): Likewise.
(new_oacc_loop_routine): Likewise.
(finish_oacc_loop): Likewise.
(free_oacc_loop): Likewise.
(dump_oacc_loop_part): Likewise.
(dump_oacc_loop): Likewise.
(debug_oacc_loop): Likewise.
(oacc_loop_discover_walk): Likewise.
(oacc_loop_sibling_nreverse): Likewise.
(oacc_loop_discovery): Likewise.
(oacc_loop_xform_head_tail): Likewise.
(oacc_loop_xform_loop): Likewise.
(oacc_loop_process): Likewise.
(oacc_loop_fixed_partitions): Likewise.
(oacc_loop_auto_partitions): Likewise.
(oacc_loop_partition): Likewise.
(default_goacc_fork_join): Likewise.
(default_goacc_reduction): Likewise.
(execute_oacc_device_lower): Likewise.
(default_goacc_validate_dims): Likewise.
(default_goacc_dim_limit): Likewise.
(pass_data_oacc_device_lower): Likewise.
(pass_oacc_device_lower): Likewise.
(make_pass_oacc_device_lower): Likewise.
(execute_omp_device_lower): Likewise.
(pass_data_omp_device_lower): Likewise.
(pass_omp_device_lower): Likewise.
(make_pass_omp_device_lower): Likewise.
(pass_data_omp_target_link): Likewise.
(pass_omp_target_link): Likewise.
(find_link_var_op): Likewise.
(pass_omp_target_link::execute): Likewise.
(make_pass_omp_target_link): Likewise.

* Makefile.in (OBJS): Added omp-offload.o, omp-expand.o, omp-general.o
and omp-grid.o.
(GTFILES): Added omp-offload.h, omp-offload.c and omp-expand.c, removed
omp-low.h.
* gimple-fold.c: Include omp-general.h instead of omp-low.h.
(fold_internal_goacc_dim): Adjusted calls to
get_oacc_ifn_dim_arg and get_oacc_fn_dim_size to use their new names.
* gimplify.c: Include omp-low.h.
(omp_notice_variable): Adjust the call to get_oacc_fn_attrib to use
its new name.
(gimplify_omp_task): Adjusted calls to find_omp_clause to use its new
name.
(gimplify_omp_for): Likewise.
* lto-cgraph.c: Include omp-offload.h instead of omp-low.h.
* toplev.c: Include omp-offload.h instead of omp-low.h.
* tree-cfg.c: Include omp-general.h instead of omp-low.h.  Also
include omp-expand.h.
(make_edges_bb): Adjusted the call to make_gimple_omp_edges to use its
new name.
(make_edges): Adjust the call to free_omp_regions to use its new name.
* tree-parloops.c: Include omp-general.h.
(create_parallel_loop): Adjusted the call to set_oacc_fn_attrib to use
its new name.
(parallelize_loops): Adjusted the call to get_oacc_fn_attrib to use
its new name.
* tree-ssa-loop.c: Include omp-general.h instead of omp-low.h.
(gate_oacc_kernels): Adjusted the call to get_oacc_fn_attrib to use
its new name.
* tree-vrp.c: Include omp-general.h instead of omp-low.h.
(extract_range_basic): Adjusted calls to get_oacc_ifn_dim_arg and
get_oacc_fn_dim_size to use their new names.
* varpool.c: Include omp-offload.h instead of omp-low.h.
* gengtype.c (open_base_files): Replace omp-low.h with omp-offload.h in
ifiles.
* config/nvptx/nvptx.c: Include omp-general.c.
(nvptx_expand_call): Adjusted the call to get_oacc_fn_attrib to use
its new name.
(nvptx_reorg): Likewise.
(nvptx_record_offload_symbol): Likewise.

gcc/c-family:
* c-omp.c: Include omp-general.h instead of omp-low.h.
(c_finish_oacc_wait): Adjusted call to find_omp_clause to use its new
name.

gcc/c/
* c-parser.c: Include omp-general.h and omp-offload.h instead of
omp-low.h.
(c_finish_oacc_routine): Adjusted call to
get_oacc_fn_attrib, build_oacc_routine_dims and replace_oacc_fn_attrib
to use their new names.
(c_parser_oacc_enter_exit_data): Adjusted call to find_omp_clause to
use its new name.
(c_parser_oacc_update): Likewise.
(c_parser_omp_simd): Likewise.
(c_parser_omp_target_update): Likewise.
* c-typeck.c: Include omp-general.h instead of omp-low.h.
(c_finish_omp_cancel): Adjusted call to find_omp_clause to use its new
name.
(c_finish_omp_cancellation_point): Likewise.
* gimple-parser.c: Do not include omp-low.h

gcc/cp/
* parser.c: Include omp-general.h and omp-offload.h instead of
omp-low.h.
(cp_parser_omp_simd): Adjusted calls to find_omp_clause to use its new
name.
(cp_parser_omp_target_update): Likewise.
(cp_parser_oacc_declare): Likewise.
(cp_parser_oacc_enter_exit_data): Likewise.
(cp_parser_oacc_update): Likewise.
(cp_finalize_oacc_routine): Adjusted call to get_oacc_fn_attrib,
build_oacc_routine_dims and replace_oacc_fn_attrib to use their new
names.
* semantics.c: Include omp-general insteda of omp-low.h.
(finish_omp_for): Adjusted calls to find_omp_clause to use its new
name.
(finish_omp_cancel): Likewise.
(finish_omp_cancellation_point): Likewise.

fortran/
* trans-openmp.c: Include omp-general.h.

From-SVN: r243673

7 years agoPR middle-end/78786 - GCC hangs/out of memory calling sprintf with large precision
Martin Sebor [Wed, 14 Dec 2016 21:58:19 +0000 (21:58 +0000)]
PR middle-end/78786 - GCC hangs/out of memory calling sprintf with large precision

gcc/ChangeLog:

PR middle-end/78786
* gimple-ssa-sprintf.c (target_dir_max): New macro.
(get_mpfr_format_length): New function.
(format_integer): Use HOST_WIDE_INT instead of int.
(format_floating_max): Same.
(format_floating): Call get_mpfr_format_length.
(format_directive): Use target_dir_max.

gcc/testsuite/ChangeLog:

PR middle-end/78786
* gcc.dg/tree-ssa/builtin-sprintf-warn-7.c: New test.

From-SVN: r243672

7 years agore PR target/78791 (ACATS cxf2001 failure)
Jakub Jelinek [Wed, 14 Dec 2016 21:39:51 +0000 (22:39 +0100)]
re PR target/78791 (ACATS cxf2001 failure)

PR target/78791
* config/i386/i386.h (enum ix86_stack_slot): Add SLOT_STV_TEMP.
* config/i386/i386.c (dimode_scalar_chain::make_vector_copies,
dimode_scalar_chain::convert_reg): Use SLOT_STV_TEMP instead of
SLOT_TEMP.

* gcc.c-torture/execute/pr78791.c: New test.
* gcc.target/i386/pr78791.c: New test.

From-SVN: r243671

7 years agostl_tree.h (_Rb_tree_impl(const _Key_compare&, const _Node_allocator&): Restore befor...
François Dumont [Wed, 14 Dec 2016 20:50:07 +0000 (20:50 +0000)]
stl_tree.h (_Rb_tree_impl(const _Key_compare&, const _Node_allocator&): Restore before C++11 mode.

2016-12-14  François Dumont  <fdumont@gcc.gnu.org>

* include/bits/stl_tree.h
(_Rb_tree_impl(const _Key_compare&, const _Node_allocator&): Restore
before C++11 mode.

From-SVN: r243670

7 years agore PR c++/72775 (internal compiler error: in finish_expr_stmt, at cp/semantics.c...
Marek Polacek [Wed, 14 Dec 2016 20:41:43 +0000 (20:41 +0000)]
re PR c++/72775 (internal compiler error: in finish_expr_stmt, at cp/semantics.c:677)

PR c++/72775
* init.c (perform_member_init): Diagnose member initializer for
flexible array member.

* g++.dg/ext/flexary12.C: Adjust dg-error.
* g++.dg/ext/flexary20.C: New.
* g++.dg/ext/flexary21.C: New.

From-SVN: r243669

7 years agore PR target/59874 (Missing builtin (__builtin_clzs) when compiling with g++)
Uros Bizjak [Wed, 14 Dec 2016 20:27:06 +0000 (21:27 +0100)]
re PR target/59874 (Missing builtin (__builtin_clzs) when compiling with g++)

PR target/59874
* config/i386/i386-builtin.def: Add __builtin_clzs and __builtin_ctzs.
(ix86_fold_builtin): Handle IX86_BUILTIN_CTZS and IX86_BUILTIN_CLZS.
* config/i386/i386.md (*ctzhi2): New insn_and_split pattern.
(*clzhi2): Ditto.

testsuite/ChangeLog

PR target/59874
* gcc.target/i386/pr59874-1.c: New test.
* gcc.target/i386/pr59874-2.c: Ditto.

From-SVN: r243668

7 years agopr78515.c: Add -Wno-psabi for AIX.
David Edelsohn [Wed, 14 Dec 2016 19:53:51 +0000 (19:53 +0000)]
pr78515.c: Add -Wno-psabi for AIX.

        * gcc.dg/torture/pr78515.c: Add -Wno-psabi for AIX.
        * gcc.dg/tree-ssa/forwprop-35.c: Add -Wno-psabi for AIX.
        * gcc.dg/pr69634.c: Add -Wno-psabi for AIX.

From-SVN: r243666

7 years agore PR debug/77844 (Compilation of simple C++ example exhaust memory)
Jakub Jelinek [Wed, 14 Dec 2016 19:40:05 +0000 (20:40 +0100)]
re PR debug/77844 (Compilation of simple C++ example exhaust memory)

PR debug/77844
* valtrack.c: Include rtl-iter.h.
(struct rtx_subst_pair): Add insn field.
(propagate_for_debug_subst): If pair->to contains at least 2
regs, create a DEBUG_INSN with a debug temp before pair->insn
and replace from with the debug temp instead of pair->to.
(propagate_for_debug): Initialize p.insn.
* combine.c (insn_uid_check): New inline function.
(INSN_COST, LOG_LINKS): Use it instead of INSN_UID.
(find_single_use, combine_instructions,
cant_combine_insn_p, try_combine): Use NONDEBUG_INSN_P instead of
INSN_P.

* g++.dg/opt/pr77844.C: New test.

From-SVN: r243662

7 years agoPR c/78673 - sprintf missing attribute nonnull on destination argument
Martin Sebor [Wed, 14 Dec 2016 17:23:16 +0000 (17:23 +0000)]
PR c/78673 - sprintf missing attribute nonnull on destination argument

PR c/78673 - sprintf missing attribute nonnull on destination argument
PR c/17308 - nonnull attribute not as useful as it could be

gcc/ChangeLog:

PR c/17308
* builtin-attrs.def (ATTR_NONNULL_1_1, ATTR_NONNULL_1_2): Defined.
(ATTR_NONNULL_1_3, ATTR_NONNULL_1_4, ATTR_NONNULL_1_5): Same.
(ATTR_NOTHROW_NONNULL_1_1, ATTR_NOTHROW_NONNULL_1_2): Same.
(ATTR_NOTHROW_NONNULL_1_3, ATTR_NOTHROW_NONNULL_1_4): Same.
(ATTR_NOTHROW_NONNULL_1_5): Same.
(ATTR_NONNULL_1_FORMAT_PRINTF_1_2): Same.
(ATTR_NONNULL_1_FORMAT_PRINTF_2_0): Same.
(ATTR_NONNULL_1_FORMAT_PRINTF_2_3): Same.
(ATTR_NONNULL_1_FORMAT_PRINTF_3_0): Same.
(ATTR_NONNULL_1_FORMAT_PRINTF_3_4): Same.
(ATTR_NONNULL_1_FORMAT_PRINTF_4_0): Same.
(ATTR_NONNULL_1_FORMAT_PRINTF_4_5): Same.
* builtins.c (validate_arg): Add argument.  Treat null pointers
passed to nonnull arguments as invalid.
(validate_arglist): Same.
* builtins.def (fprintf, fprintf_unlocked): Add nonnull attribute.
(printf, printf_unlocked, sprintf. vfprintf, vsprintf): Same.
(__sprintf_chk, __vsprintf_chk, __fprintf_chk, __vfprintf_chk): Same.
* calls.c (get_nonnull_ags, maybe_warn_null_arg): New functions.
(initialize_argument_information): Diagnose null pointers passed to
arguments declared nonnull.
* calls.h (get_nonnull_args): Declared.

gcc/c-family/ChangeLog:

PR c/17308
* c-common.c (check_nonnull_arg): Disable when optimization
is enabled.

gcc/testsuite/ChangeLog:

PR c/17308
* gcc.dg/builtins-nonnull.c: New test.
* gcc.dg/nonnull-4.c: New test.

From-SVN: r243661

7 years agore PR c++/78701 (ICE: unexpected expression N of kind template_parm_index)
Nathan Sidwell [Wed, 14 Dec 2016 16:45:33 +0000 (16:45 +0000)]
re PR c++/78701 (ICE: unexpected expression N of kind template_parm_index)

PR c++/78701
* pt.c (type_unification_real): Check tsubst arg doesn't have
remaining template parms before converting it.

PR c++/78701
* g++.dg/cpp0x/pr78701.C: New.

From-SVN: r243657

7 years agore PR c++/69481 (ICE with C++11 alias using with templates)
Nathan Sidwell [Wed, 14 Dec 2016 16:43:07 +0000 (16:43 +0000)]
re PR c++/69481 (ICE with C++11 alias using with templates)

PR c++/69481
* cp-tree.h (TYPE_TEMPLATE_INFO_MAYBE_ALIAS): Always use
TYPE_ALIAS_TEMPLATE_INFO for aliases.

From-SVN: r243656

7 years agors6000.c (rs6000_split_vec_extract_var): On ISA 3.0/power9, add support to use the...
Michael Meissner [Wed, 14 Dec 2016 16:08:07 +0000 (16:08 +0000)]
rs6000.c (rs6000_split_vec_extract_var): On ISA 3.0/power9, add support to use the VEXTU{B,H,W}{L,R}X extract instructions.

[gcc]
2016-12-14  Michael Meissner  <meissner@linux.vnet.ibm.com>

* config/rs6000/rs6000.c (rs6000_split_vec_extract_var): On ISA
3.0/power9, add support to use the VEXTU{B,H,W}{L,R}X extract
instructions.
* config/rs6000/vsx.md (VSr2): Add IEEE 128-bit floating point
type constraint registers.
(VSr3): Likewise.
(FL_CONV): New mode iterator for binary floating types that have a
direct conversion from 64-bit integer to floating point.
(vsx_extract_<mode>_p9): Add support for the ISA 3.0/power9
VEXTU{B,H,W}{L,R}X extract instructions.
(vsx_extract_<mode>_p9 splitter): Add splitter to load up the
extract byte position into the GPR if we are using the
VEXTU{B,H,W}{L,R}X extract instructions.
(vsx_extract_<mode>_di_p9): Support extracts to GPRs.
(vsx_extract_<mode>_store_p9): Support extracting to GPRs so that
we can use reg+offset address instructions.
(vsx_extract_<mode>_var): Support extracts to GPRs.
(vsx_extract_<VSX_EXTRACT_I:mode>_<SDI:mode>_var): New combiner
insn to combine vector extracts with zero_extend.
(vsx_ext_<VSX_EXTRACT_I:VS_scalar>_fl_<FL_CONV:mode>): Optimize
extracting a small integer vector element and converting it to a
floating point type.
(vsx_ext_<VSX_EXTRACT_I:VS_scalar>_ufl_<FL_CONV:mode>): Likewise.
(UNSPEC_XXEXTRACTUW): New unspec.
(UNSPEC_XXINSERTW): Likewise.
(vextract4b): Add support for the vec_vextract4b built-in
function.
(vextract4b_internal): Likewise.
(vinsert4b): Add support for the vec_insert4b built-in function.
Include both a version that inserts element 1 from a V4SI object
and one that inserts a DI object.
(vinsert4b_internal): Likewise.
(vinsert4b_di): Likewise.
(vinsert4b_di_internal): Likewise.
* config/rs6000/predicates.md (const_0_to_11_operand): New
predicate, match 0..11.
* config/rs6000/rs6000-builtin.def (BU_P9V_VSX_3): Set built-in
type to ternary, not binary.
(BU_P9V_64BIT_VSX_3): Likewise.
(P9V_BUILTIN_VEXTRACT4B): Add support for vec_vinsert4b and
vec_extract4b non-overloaded built-in functions.
(P9V_BUILTIN_VINSERT4B): Likewise.
(P9V_BUILTIN_VINSERT4B_DI): Likewise.
(P9V_BUILTIN_VEC_VEXTULX): Move to section that adds 2 operand ISA
3.0 built-in functions.
(P9V_BUILTIN_VEC_VEXTURX): Likewise.
(P9V_BUILTIN_VEC_VEXTRACT4B): Add support for overloaded
vec_insert4b and vec_extract4 built-in functions.
(P9V_BUILTIN_VEC_VINSERT4B): Likewise.
* config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
overloaded support for vec_vinsert4b and vec_extract4b.
* config/rs6000/rs6000.c (altivec_expand_builtin): Add checks for
the vec_insert4b and vec_extract4b byte number being a constant in
the range 0..11.
* config/rs6000/altivec.h (vec_vinsert4b): Support vec_vinsert4b
and vec_extract4b built-in functions.
* doc/extend.doc (PowerPC VSX built-in functions): Document
vec_insert4b and vec_extract4b.

[gcc/testsuite]
2016-12-14  Michael Meissner  <meissner@linux.vnet.ibm.com>

* gcc/testsuite/gcc.target/powerpc/vec-extract.h: If DO_TRACE is
defined, add tracing of the various extracts to stderr.  Add
support for tests that convert the result to another type.
* gcc/testsuite/gcc.target/powerpc/vec-extract-v2df.c: Likewise.
* gcc/testsuite/gcc.target/powerpc/vec-extract-v4sf.c: Likewise.
* gcc/testsuite/gcc.target/powerpc/vec-extract-v4si-df.c: Add new
tests that do an extract and then convert the values double.
* gcc/testsuite/gcc.target/powerpc/vec-extract-v4siu-df.c: Likewise.
* gcc/testsuite/gcc.target/powerpc/vec-extract-v16qiu-df.c: Likewise.
* gcc/testsuite/gcc.target/powerpc/vec-extract-v16qi-df.c: Likewise.
* gcc/testsuite/gcc.target/powerpc/vec-extract-v8hiu-df.c: Likewise.
* gcc/testsuite/gcc.target/powerpc/vec-extract-v8hi-df.c: Likewise.
* gcc.target/powerpc/p9-extract-1.c: Update test to check for
VEXTU{B,H,W}{L,R}X instructions being generated by default instead
of VEXTRACTU{B,H} and XXEXTRACTUW.
* gcc.target/powerpc/p9-extract-3.c: New test for combination of
vec_extract and convert to floating point.
* gcc.target/powerpc/p9-vinsert4b-1.c: New test for vec_vinsert4b
and vec_extract4b.
* gcc.target/powerpc/p9-vinsert4b-2.c: Likewise.

From-SVN: r243653

7 years agoMake printers use singular noun for a single element
Jonathan Wakely [Wed, 14 Dec 2016 16:07:29 +0000 (16:07 +0000)]
Make printers use singular noun for a single element

* python/libstdcxx/v6/printers.py (num_elements): New function.
(StdMapPrinter.to_string, StdSetPrinter.to_string)
(StdDequePrinter.to_string, Tr1UnorderedSetPrinter.to_string)
(Tr1UnorderedMapPrinter.to_string): Use num_elements.
* testsuite/libstdc++-prettyprinters/cxx11.cc: Adjust expected results
to use singular noun when there is only one element.
* testsuite/libstdc++-prettyprinters/debug.cc: Likewise.
* testsuite/libstdc++-prettyprinters/debug_cxx11.cc: Likewise.
* testsuite/libstdc++-prettyprinters/simple.cc: Likewise.
* testsuite/libstdc++-prettyprinters/simple11.cc: Likewise.
* testsuite/libstdc++-prettyprinters/tr1.cc: Likewise.

From-SVN: r243652

7 years agoMake printers detect invalid debug mode iterators
Jonathan Wakely [Wed, 14 Dec 2016 15:17:57 +0000 (15:17 +0000)]
Make printers detect invalid debug mode iterators

PR libstdc++/59170
* python/libstdcxx/v6/printers.py (StdDebugIteratorPrinter): Use
_M_sequence and _M_version to detect invalid iterators.
* testsuite/libstdc++-prettyprinters/debug.cc: Test debug mode vector
and test invalid iterators.
* testsuite/libstdc++-prettyprinters/debug_cxx11.cc: New test.

From-SVN: r243650

7 years agoMIPS: Remove redundant dg-skip-if from mips16-attributes.c.
Toma Tabacu [Wed, 14 Dec 2016 14:44:14 +0000 (14:44 +0000)]
MIPS: Remove redundant dg-skip-if from mips16-attributes.c.

gcc/testsuite

* gcc.target/mips/mips16-attributes.c: Remove dg-skip-if for
-mmicromips.

From-SVN: r243649

7 years agore PR fortran/78780 ([Coarray] ICE in conv_caf_send, at fortran/trans-intrinsic.c...
Andre Vehreschild [Wed, 14 Dec 2016 12:49:45 +0000 (13:49 +0100)]
re PR fortran/78780 ([Coarray] ICE in conv_caf_send, at fortran/trans-intrinsic.c:1936)

gcc/testsuite/ChangeLog:

2016-12-14  Andre Vehreschild  <vehre@gcc.gnu.org>

PR fortran/78780
* gfortran.dg/coarray/alloc_comp_5.f90: New test.
* gfortran.dg/coarray_42.f90: New test.

gcc/fortran/ChangeLog:

2016-12-14  Andre Vehreschild  <vehre@gcc.gnu.org>

PR fortran/78780
* trans-expr.c (gfc_trans_assignment_1): Improve check whether detour
caf-runtime routines is needed.

From-SVN: r243648

7 years agore PR fortran/78672 (Gfortran test suite failures with a sanitized compiler)
Andre Vehreschild [Wed, 14 Dec 2016 11:52:09 +0000 (12:52 +0100)]
re PR fortran/78672 (Gfortran test suite failures with a sanitized compiler)

gcc/fortran/ChangeLog:

2016-12-14  Andre Vehreschild  <vehre@gcc.gnu.org>

PR fortran/78672
* array.c (gfc_find_array_ref): Add flag to return NULL when no ref is
found instead of erroring out.
* data.c (gfc_assign_data_value): Only constant expressions are valid
for initializers.
* gfortran.h: Reflect change of gfc_find_array_ref's signature.
* interface.c (compare_actual_formal): Access the non-elemental
array-ref.  Prevent taking a REF_COMPONENT for a REF_ARRAY.  Correct
indentation.
* module.c (load_omp_udrs): Clear typespec before reading into it.
* trans-decl.c (gfc_build_qualified_array): Prevent accessing the array
when it is a coarray.
* trans-expr.c (gfc_conv_cst_int_power): Use wi::abs()-function instead
of crutch preventing sanitizer's bickering here.
* trans-stmt.c (gfc_trans_deallocate): Only get data-component when it
is a descriptor-array here.

From-SVN: r243647

7 years agore PR target/78796 (TLS fails to link on aarch64 with -mcmodel=large)
Jakub Jelinek [Wed, 14 Dec 2016 10:39:36 +0000 (11:39 +0100)]
re PR target/78796 (TLS fails to link on aarch64 with -mcmodel=large)

PR target/78796
* gcc.dg/tls/pr78796.c: New test.

From-SVN: r243645

7 years agore PR tree-optimization/78731 (Possible bug with switch when optimization is turned...
Richard Biener [Wed, 14 Dec 2016 10:35:11 +0000 (10:35 +0000)]
re PR tree-optimization/78731 (Possible bug with switch when optimization is turned on.)

2016-12-14  Richard Biener  <rguenther@suse.de>

PR tree-optimization/78731
* gcc.dg/torture/pr78731.c: New testcase.

From-SVN: r243644

7 years agoPrint 2 digits after decimal delimiter for BB frequencies
Martin Liska [Wed, 14 Dec 2016 10:33:10 +0000 (11:33 +0100)]
Print 2 digits after decimal delimiter for BB frequencies

* gimple-pretty-print.c (dump_probability): New function.
(dump_edge_probability): Use the function.
(dump_gimple_label): Likewise.
(dump_gimple_bb_header): Likewise.
* gcc.dg/tree-ssa/20040703-1.c: Update scanned pattern.
* gcc.dg/tree-ssa/dump-2.c: Likewise.

From-SVN: r243643

7 years agoEnhance analyze_brprob script
Martin Liska [Wed, 14 Dec 2016 10:30:24 +0000 (11:30 +0100)]
Enhance analyze_brprob script

* analyze_brprob.py: Add new column to output and new sorting
option. Fix coding style to not exceed 80 characters.
* analyze_brprob_spec.py: Add new sorting
option. Fix coding style to not exceed 80 characters.

From-SVN: r243640

7 years agoMIPS: Force assembly output for msa-builtins-err.c.
Toma Tabacu [Wed, 14 Dec 2016 10:19:01 +0000 (10:19 +0000)]
MIPS: Force assembly output for msa-builtins-err.c.

gcc/testsuite

* gcc.target/mips/msa-builtins-err.c (dg-options): Add
-ffat-lto-objects option.

From-SVN: r243639

7 years agotree-ssa-strlen.c (fold_strstr_to_memcmp): New function.
Prathamesh Kulkarni [Wed, 14 Dec 2016 09:10:31 +0000 (09:10 +0000)]
tree-ssa-strlen.c (fold_strstr_to_memcmp): New function.

2016-12-14  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
    Jakub Jelinek  <jakub@redhat.com>

* tree-ssa-strlen.c (fold_strstr_to_memcmp): New function.
(strlen_optimize_stmt): Call fold_strstr_to_memcmp.

testsuite/
* gcc.dg/strlenopt-30.c: New test-case.

Co-Authored-By: Jakub Jelinek <jakub@redhat.com>
From-SVN: r243633

7 years agolra-constraints.c (process_address_1): Do not attempt to decompose addresses for...
Eric Botcazou [Wed, 14 Dec 2016 08:34:15 +0000 (08:34 +0000)]
lra-constraints.c (process_address_1): Do not attempt to decompose addresses for MEMs that satisfy fixed-form constraints.

* lra-constraints.c (process_address_1): Do not attempt to decompose
addresses for MEMs that satisfy fixed-form constraints.

From-SVN: r243632

7 years agore PR tree-optimization/78788 (ICE (segfault) on s390x-linux-gnu)
Richard Biener [Wed, 14 Dec 2016 08:33:12 +0000 (08:33 +0000)]
re PR tree-optimization/78788 (ICE (segfault) on s390x-linux-gnu)

2016-12-14  Richard Biener  <rguenther@suse.de>

PR tree-optimization/78788
* tree-vrp.c (set_value_range): Allow [-INF(OVF), +INF(OVF)].
(set_and_canonicalize_value_range): Do not drop the above to
VARYING.

* gcc.dg/torture/pr78788.c: New testcase.

From-SVN: r243631

7 years agoDaily bump.
GCC Administrator [Wed, 14 Dec 2016 00:16:15 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r243629

7 years agore PR c++/69481 (ICE with C++11 alias using with templates)
Nathan Sidwell [Tue, 13 Dec 2016 20:43:08 +0000 (20:43 +0000)]
re PR c++/69481 (ICE with C++11 alias using with templates)

cp/
PR c++/69481
* cp-tree.h (TYPE_TEMPLATE_INFO): Remove alias type checking.
(TYPE_ALIAS_TEMPLATE_INFO): New.
(TYPE_TEMPLATE_INFO_MAYBE_ALIAS): New.  Use those macros.
* error.c (dump_alias_template_specialization): Adjust.
* pt.c (maybe_process_partial_specialization)
iterative_has_template_arg, find_parameter_packs_r,
alias_template_specialization_p, dependent_alias_template_spec_p,
get_underlying_template, lookup_template_class_1, unify): Adjust
template using decl access.

testsuite/
PR c++/69481
* g++.dg/cpp0x/pr69481.C: New.
(--This line, and those below, will be ignored--

M    gcc/testsuite/ChangeLog
A    gcc/testsuite/g++.dg/cpp0x/pr69481.C
M    gcc/cp/cp-tree.h
M    gcc/cp/error.c
M    gcc/cp/ChangeLog
M    gcc/cp/pt.c

From-SVN: r243624

7 years agors600.c (rs6000_builtin_vectorization_cost): Adjust unaligned load cost.
Bill Schmidt [Tue, 13 Dec 2016 20:05:10 +0000 (20:05 +0000)]
rs600.c (rs6000_builtin_vectorization_cost): Adjust unaligned load cost.

2016-12-13  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>

* config/rs6000/rs600.c (rs6000_builtin_vectorization_cost):
Adjust unaligned load cost.

From-SVN: r243623

7 years agore PR fortran/78798 ([cleanup] some int-valued functions should be bool)
Janus Weil [Tue, 13 Dec 2016 18:55:20 +0000 (19:55 +0100)]
re PR fortran/78798 ([cleanup] some int-valued functions should be bool)

2016-12-13  Janus Weil  <janus@gcc.gnu.org>

PR fortran/78798
* gfortran.h (gfc_is_constant_expr, gfc_is_formal_arg,
gfc_is_compile_time_shape): Return bool instead of int.
* array.c (gfc_is_compile_time_shape): Ditto.
* expr.c (gfc_is_constant_expr): Ditto.
* resolve.c (gfc_is_formal_arg): Ditto. Make formal_arg_flag bool.

From-SVN: r243621

7 years agolibgo: fixes for Solaris build
Ian Lance Taylor [Tue, 13 Dec 2016 18:03:45 +0000 (18:03 +0000)]
libgo: fixes for Solaris build

    Don't put m[0-4] in runtime.inc.

    Pass -mclear-hwcap to the linker if supported.

    From Rainer Orth.

    Reviewed-on: https://go-review.googlesource.com/34331

From-SVN: r243619

7 years agore PR target/78794 (We noticed ~9% regression in 32-bit mode for 462.libquntum on...
Uros Bizjak [Tue, 13 Dec 2016 17:15:35 +0000 (18:15 +0100)]
re PR target/78794 (We noticed ~9% regression in 32-bit mode for 462.libquntum on Avoton after r243202)

PR target/78794
* config/i386/i386.c (dimode_scalar_chain::compute_convert_gain):
Calculate additional gain for andnot for targets without BMI.

testsuite/ChangeLog:

PR target/78794
* gcc.target/i386/pr78794.c: New test.

From-SVN: r243615

7 years agore PR fortran/77785 ([Coarray] ICE in gfc_get_caf_token_offset, at fortran/trans...
Andre Vehreschild [Tue, 13 Dec 2016 16:47:48 +0000 (17:47 +0100)]
re PR fortran/77785 ([Coarray] ICE in gfc_get_caf_token_offset, at fortran/trans-expr.c:1990)

gcc/fortran/ChangeLog:

2016-12-13  Andre Vehreschild  <vehre@gcc.gnu.org>

PR fortran/77785
* resolve.c (resolve_symbol): Correct attr lookup to the _data
component.
* trans-array.c (gfc_alloc_allocatable_for_assignment): Indirect ref
pointers and references before retrieving the caf-token.

gcc/testsuite/ChangeLog:

2016-12-13  Andre Vehreschild  <vehre@gcc.gnu.org>

PR fortran/77785
* gfortran.dg/coarray_38.f90: Added expecting error message.
* gfortran.dg/coarray_41.f90: New test.
* gfortran.dg/coarray_class_2.f90: New test.

From-SVN: r243614

7 years agors6000-c.c: Add built-in support for vector float vec_pack (vector double...
Carl Love [Tue, 13 Dec 2016 16:18:36 +0000 (16:18 +0000)]
rs6000-c.c: Add built-in support for vector float vec_pack (vector double...

gcc/ChangeLog:

2016-12-13  Carl Love  <cel@us.ibm.com>

   * config/rs6000/rs6000-c.c: Add built-in support for
   vector float vec_pack (vector double, vector double)
   vector double vec_sld (vector double, vector double)
   * config/rs6000/rs6000.c: Add icode check for vsldoi_v2df to allow
   4-bit unsigned literal.
   * config/rs6000/rs6000-builtin.def: Add definition for VSLDOI_2DF
   * doc/extend.texi: Update the built-in documentation file for the
   new powerpc vec_pack and vec_sld built-ins.

gcc/testsuite/ChangeLog:

2016-12-13 Carl Love  <cel@us.ibm.com>

* gcc.target/powerpc/builtins-3.c: Add new test of the test suite
file.
* gcc.target/powerpc/builtins-3-p8.c: Add new test of the test suite
file.

From-SVN: r243612

7 years agoAdd sanopt for ASAN_MARK poison and unpoison.
Martin Liska [Tue, 13 Dec 2016 15:35:14 +0000 (16:35 +0100)]
Add sanopt for ASAN_MARK poison and unpoison.

* sanopt.c (sanopt_optimize_walker): Set contains_asan_mark.
(sanopt_optimize): Add new argument.
(sanitize_asan_mark_unpoison): New function.
(maybe_contains_asan_check): Likewise.
(sanitize_asan_mark_poison): Likewise.
(pass_sanopt::execute): Call the new functions.

From-SVN: r243611

7 years agoFill bitregion_{start,end} in store_constructor (PR tree-optimization/78428)
Martin Liska [Tue, 13 Dec 2016 15:26:14 +0000 (16:26 +0100)]
Fill bitregion_{start,end} in store_constructor (PR tree-optimization/78428)

* expr.c (store_constructor_field): Add new arguments to the
function.
(store_constructor): Set up bitregion_end and add
gcc_unreachable to fields that have either non-constant size
or (and) offset.
* gcc.dg/tree-ssa/pr78428.c: New test.

From-SVN: r243610

7 years agore PR fortran/78737 ([OOP] linking error with deferred, undefined user-defined derive...
Janus Weil [Tue, 13 Dec 2016 14:28:17 +0000 (15:28 +0100)]
re PR fortran/78737 ([OOP] linking error with deferred, undefined user-defined derived-type I/O)

2016-12-13  Janus Weil  <janus@gcc.gnu.org>
    Paul Thomas  <pault@gcc.gnu.org>

PR fortran/78737
* gfortran.h (gfc_find_typebound_dtio_proc): New prototype.
* interface.c (gfc_compare_interfaces): Whitespace fix.
(gfc_find_typebound_dtio_proc): New function.
(gfc_find_specific_dtio_proc): Use it. Improve error recovery.
* trans-io.c (get_dtio_proc): Implement polymorphic calls to DTIO
procedures.

2016-12-13  Janus Weil  <janus@gcc.gnu.org>
    Paul Thomas  <pault@gcc.gnu.org>

PR fortran/78737
* gfortran.dg/dtio_19.f90: New test case.

Co-Authored-By: Paul Thomas <pault@gcc.gnu.org>
From-SVN: r243609

7 years agotree-data-ref.c (compute_overlap_steps_for_affine_univar): Change parameters' type...
Marek Polacek [Tue, 13 Dec 2016 14:19:12 +0000 (14:19 +0000)]
tree-data-ref.c (compute_overlap_steps_for_affine_univar): Change parameters' type from int to HOST_WIDE_INT.

* tree-data-ref.c (compute_overlap_steps_for_affine_univar): Change
parameters' type from int to HOST_WIDE_INT.
(compute_overlap_steps_for_affine_1_2): Change parameters' type from
int to HOST_WIDE_INT.
(build_classic_dist_vector_1): Likewise.
(add_multivariate_self_dist): Likewise.

From-SVN: r243607

7 years agoFix pr78725
Michael Matz [Tue, 13 Dec 2016 14:14:41 +0000 (14:14 +0000)]
Fix pr78725

PR tree-optimization/78725
* tree-ssa-loop-split.c (split_at_bb_p): Check for overflow and
at correct use point.

testsuite/
PR tree-optimization/78725
* gcc.dg/pr78725.c: New test.
* gcc.dg/pr78725-2.c: New test.

From-SVN: r243606

7 years agoRename BUILT_IN_ASAN_CLOBBER_N to
Martin Liska [Tue, 13 Dec 2016 13:33:35 +0000 (14:33 +0100)]
Rename BUILT_IN_ASAN_CLOBBER_N to

* asan.c (asan_expand_mark_ifn): Use renamed
BUILT_IN_ASAN_{UN}CLOBBER_N to BUILT_IN_ASAN_{UN}POISON_STACK_MEMORY.
* sanitizer.def: Likewise.

From-SVN: r243605

7 years ago[Patch Doc] Update documentation for __fp16 type
James Greenhalgh [Tue, 13 Dec 2016 10:43:02 +0000 (10:43 +0000)]
[Patch Doc] Update documentation for __fp16 type

gcc/

* doc/extend.texi (Half-Precision): Update to document current
compiler behaviour.

From-SVN: r243602

7 years ago[Patch doc] Document _Float16 availability on ARM/AArch64
James Greenhalgh [Tue, 13 Dec 2016 10:40:32 +0000 (10:40 +0000)]
[Patch doc] Document _Float16 availability on ARM/AArch64

gcc/

* doc/extend.texi (Floating Types): Document availability of
_Float16 on ARM/AArch64.

From-SVN: r243601

7 years agore PR tree-optimization/78699 (ICE (segfault) on powerpc64le-linux-gnu (memory-hog))
Richard Biener [Tue, 13 Dec 2016 09:19:19 +0000 (09:19 +0000)]
re PR tree-optimization/78699 (ICE (segfault) on powerpc64le-linux-gnu (memory-hog))

2016-12-13  Richard Biener  <rguenther@suse.de>

PR tree-optimization/78699
* tree-vect-data-refs.c (vect_analyze_group_access_1): Limit
group size.

From-SVN: r243599

7 years agore PR tree-optimization/78742 (internal compiler error: in int_cst_value, at tree...
Richard Biener [Tue, 13 Dec 2016 09:17:42 +0000 (09:17 +0000)]
re PR tree-optimization/78742 (internal compiler error: in int_cst_value, at tree.c:10782)

2016-12-13  Richard Biener  <rguenther@suse.de>

PR middle-end/78742
* tree.c (cst_and_fits_in_hwi): Look if the actual value fits.
* tree-object-size.c (compute_builtin_object_size): Use
tree_fits_shwi_p.
* tree-data-ref.c (initialize_matrix_A): Remove excess assert.

* gcc.dg/torture/pr78742.c: New testcase.

From-SVN: r243598

7 years agoAdd pretty printer for ASAN_MARK and add a helper fn
Martin Liska [Tue, 13 Dec 2016 09:14:47 +0000 (10:14 +0100)]
Add pretty printer for ASAN_MARK and add a helper fn

* asan.c (asan_mark_poison_p): Remove.
(asan_mark_p): New function.
(transform_statements): Use the function.
(asan_expand_mark_ifn): Do not use masked enum.
* asan.h (enum asan_mark_flags): Declare it via a macro.
* gimple-pretty-print.c (dump_gimple_call_args): Dump first
argument of ASAN_MARK.
* gimplify.c (build_asan_poison_call_expr): Use new enum values.
(asan_poison_variable): Likewise.
* gcc.dg/asan/use-after-scope-goto-1.c: Update first argument of
scanned pattern ASAN_MARK.
* gcc.dg/asan/use-after-scope-goto-2.c: Likewise.
* gcc.dg/asan/use-after-scope-switch-1.c: Likewise.
* gcc.dg/asan/use-after-scope-switch-2.c: Likewise.
* gcc.dg/asan/use-after-scope-switch-3.c: Likewise.

From-SVN: r243597

7 years agore PR ipa/77905 (ICE at -Os and above in both 32-bit and 64-bit modes on x86_64-linux...
Jakub Jelinek [Tue, 13 Dec 2016 08:48:45 +0000 (09:48 +0100)]
re PR ipa/77905 (ICE at -Os and above in both 32-bit and 64-bit modes on x86_64-linux-gnu (internal compiler error: in ipa_comdats, at ipa-comdats.c:352))

PR ipa/77905
* ipa-pure-const.c (cdtor_p): Return true for
DECL_STATIC_{CON,DE}STRUCTOR even when it is
DECL_LOOPING_CONST_OR_PURE_P.

* g++.dg/ipa/pr77905.C: New test.

From-SVN: r243596

7 years agore PR c++/78761 (C++14, compiler generate mangled name that can not be demangled)
Jakub Jelinek [Tue, 13 Dec 2016 06:16:05 +0000 (07:16 +0100)]
re PR c++/78761 (C++14, compiler generate mangled name that can not be demangled)

PR c++/78761
* cp-demangle.c (cplus_demangle_type): Demangle Dc as decltype(auto).
* testsuite/demangle-expected: Add test for decltype(auto).

From-SVN: r243593

7 years agoDaily bump.
GCC Administrator [Tue, 13 Dec 2016 00:16:23 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r243588

7 years agore PR tree-optimization/78777 (ICE in mark_reachable_handlers, at tree-eh.c:3823...
Jakub Jelinek [Mon, 12 Dec 2016 22:02:52 +0000 (23:02 +0100)]
re PR tree-optimization/78777 (ICE in mark_reachable_handlers, at tree-eh.c:3823 (aarch64-linux-gnu))

PR tree-optimization/78777
* gimple-ssa-strength-reduction.c (create_add_on_incoming_edge,
insert_initializers): Use stmt_ends_bb_p instead of is_ctrl_stmt.

* g++.dg/torture/pr78777.C: New test.

From-SVN: r243584

7 years agore PR other/78766 (GCC Awk scripts use the non-POSIX /^{/ regex)
Jakub Jelinek [Mon, 12 Dec 2016 22:01:41 +0000 (23:01 +0100)]
re PR other/78766 (GCC Awk scripts use the non-POSIX  /^{/ regex)

PR other/78766
* opt-functions.awk (opt_args): Use [{] instead of { in regexps.
Formatting fix.

From-SVN: r243583

7 years agoPR middle-end/78622 - -Wformat-length/-fprintf-return-value incorrect with overflow...
Martin Sebor [Mon, 12 Dec 2016 21:56:22 +0000 (21:56 +0000)]
PR middle-end/78622 - -Wformat-length/-fprintf-return-value incorrect with overflow/wrapping

gcc/ChangeLog:

PR middle-end/78622
PR middle-end78606
* gimple-ssa-sprintf.c (min_bytes_remaining): Use res.knownrange
rather than res.bounded.
(get_width_and_precision): Set precision to -1 when negative.
(adjust_range_for_overflow): New function.
(format_integer): Correct the handling of the space, plus, and pound
flags, and the special case of zero precision.
Always set res.bounded to true unless either precision or width
is specified and unknown.
Call adjust_range_for_overflow.
Avoid use zero as the shortest value when precision is specified
but unknown.
(format_directive): Remove vestigial quoting.  Always inform of
argument value or range when it's available.
(add_bytes): Correct the computation of boundrange used to
decide whether a warning is of a "maybe" or "defnitely" kind.

gcc/testsuite/ChangeLog:

PR middle-end/78622
PR middle-end78606
* gcc.c-torture/execute/pr78622.c: New test.
* gcc.dg/tree-ssa/builtin-sprintf-2.c: Remove "benign" undefined
behavior inadvertently introduced in a previous commit.  Tighten
up final checking.
* gcc.dg/tree-ssa/builtin-sprintf-5.c: Rename macros for clarity.
Add test cases.
* gcc.dg/tree-ssa/builtin-sprintf-6.c: Add test cases.
* gcc.dg/tree-ssa/builtin-sprintf-warn-1.c: Same.
* gcc.dg/tree-ssa/builtin-sprintf-warn-2.c: Same.
* gcc.dg/tree-ssa/builtin-sprintf-warn-3.c: Same.
* gcc.dg/tree-ssa/builtin-sprintf-warn-5.c: Same.
* gcc.dg/tree-ssa/builtin-sprintf-warn-6.c: Remove xfails and
add a final optimization check.
* gcc.dg/tree-ssa/builtin-sprintf.c: Add test cases.
* gcc.dg/tree-ssa/pr78622.c: New test.

From-SVN: r243582

7 years agore PR fortran/78392 (ICE in gfc_trans_auto_array_allocation, at fortran/trans-array...
Janus Weil [Mon, 12 Dec 2016 18:54:54 +0000 (19:54 +0100)]
re PR fortran/78392 (ICE in gfc_trans_auto_array_allocation, at fortran/trans-array.c:5979)

2016-12-12  Janus Weil  <janus@gcc.gnu.org>

PR fortran/78392
* expr.c (gfc_is_constant_expr): Specification functions are not
compile-time constants. Update documentation (add reference to F08
standard), add a FIXME.
(external_spec_function): Add reference to F08 standard.
* resolve.c (resolve_fl_variable): Ditto.

2016-12-12  Janus Weil  <janus@gcc.gnu.org>

PR fortran/78392
* gfortran.dg/constant_shape.f90: New test case.

From-SVN: r243580

7 years agocombine: Handle mode expanding zero_extracts in change_zero_ext.
Dominik Vogt [Mon, 12 Dec 2016 18:23:48 +0000 (18:23 +0000)]
combine: Handle mode expanding zero_extracts in change_zero_ext.

Example:

  (zero_extract:DI (reg:SI)
                   (const_int 24)
                   (const_int 0))

-->

  (and:DI (subreg:DI (lshiftrt:SI (reg:SI) (const_int 8))
                     0)
          (const_int 16777215))

2016-12-12  Dominik Vogt  <vogt@linux.vnet.ibm.com>

* combine.c (change_zero_ext): Handle mode expanding zero_extracts.

From-SVN: r243578

7 years agore PR c++/78647 (ICE on invalid C++ code on x86_64-linux-gnu (internal compiler error...
Marek Polacek [Mon, 12 Dec 2016 17:58:00 +0000 (17:58 +0000)]
re PR c++/78647 (ICE on invalid C++ code on x86_64-linux-gnu (internal compiler error: tree check: expected tree_list, have error_mark in get_attribute_name, at attribs.c:664))

PR c++/78647
* c-common.c (attribute_fallthrough_p): Return false for
error_mark_node.

* g++.dg/parse/error58.C: New.

From-SVN: r243575

7 years agore PR preprocessor/78680 (ICE in get_substring_ranges_for_loc, at input.c:1398)
David Malcolm [Mon, 12 Dec 2016 17:37:48 +0000 (17:37 +0000)]
re PR preprocessor/78680 (ICE in get_substring_ranges_for_loc, at input.c:1398)

Fix for PR preprocessor/78680

PR preprocessor/78680 identifies a crash when attempting to issue
a -Wformat warning, where the format string includes a string token
split across multiple physical source lines via backslash-continued
lines.

The issue is that libcpp is generating bogus range information for
such tokens.

For example, in:

void fn1() {
  __builtin_printf("\
     %ld.\n\
        2\n"); };

the range of the string token is printed as:

   __builtin_printf("\
                    ^~

whereas the range ought to be:

  __builtin_printf("\
                   ^~
     %ld.\n\
     ~~~~~~~
        2\n"); };
        ~~~~

The root cause is that the line notes expressing the update
of the buffer in lex.c aren't yet updated when the end-point of
the token is computed

3095     tok_range.m_finish
3096       = linemap_position_for_column (pfile->line_table,
3097      CPP_BUF_COLUMN (buffer, buffer->cur));

so that the physical line is still regarded as that of the start
of the token, and, where CPP_BUF_COLUMN uses (BUF)->line_base,
line_base is still the location of the first physical line in the
and hence the column information is too large (as if it were the
offset in the *logical* line).

(the printed range is somewhat misleading; the actual buggy range
extends beyond the "\ in the line, but within diagnostic-show-locus.c
layout::print_annotation_line only prints up to the xbound set by
layout::print_source_line and so truncates most of the buggy range).

The fix is to ensure that line notes are handled before calculating
the end-point of the token range.

This leads to the range for the string token being correctly
computed, as:

  __builtin_printf("\
                   ^~
     %ld.\n\
     ~~~~~~~
        2\n"); };
        ~~~~

and this leads to get_substring_ranges_for_loc failing gracefully,
rather than crashing.

gcc/testsuite/ChangeLog:
PR preprocessor/78680
* gcc.dg/format/pr78680.c: New test case.
* gcc.dg/plugin/diagnostic-test-expressions-1.c
(test_multiline_token): New function.
* gcc.dg/plugin/diagnostic-test-string-literals-1.c
(test_backslash_continued_logical_lines): New function.

libcpp/ChangeLog:
PR preprocessor/78680
* lex.c (_cpp_lex_direct): Ensure line notes are processed before
computing the end-point of the token.

From-SVN: r243567

7 years agore PR other/78252 (C++ demangler crashes with infinite recursion with lambda (auto))
Nathan Sidwell [Mon, 12 Dec 2016 17:00:37 +0000 (17:00 +0000)]
re PR other/78252 (C++ demangler crashes with infinite recursion with lambda (auto))

libiberty/
PR c++/78252
* cp-demangle.c (struct d_print_info): Add is_lambda_arg field.
(d_print_init): Initialize it.
(d_print_comp_inner) <DEMANGLE_COMPONENT_TEMPLATE_PARAM>: Check
is_lambda_arg for auto.
<DEMANGLE_COMPONENT_REFERENCE,
DEMANGLE_COMPONENT_RVALUE_REFERENCE>: Skip smashing check when
is_lambda_arg.
<DEMANGLE_COMPONENT_LAMBDA>: Increment is_lambda_arg around arg
printing.
* testsuite/demangle-expected: Add lambda auto mangling cases.

gcc/testsuite/
PR c++/78252
* g++.dg/cpp1y/lambda-mangle-1.C: New.

From-SVN: r243566

7 years agore PR target/78738 (ICE in extract_insn, at recog.c:2311)
Uros Bizjak [Mon, 12 Dec 2016 16:02:28 +0000 (17:02 +0100)]
re PR target/78738 (ICE in extract_insn, at recog.c:2311)

PR target/78738
* config/i386/i386.h (X87_ENABLE_ARITH): Also enable for
flag_unsafe_math_optimizations.
(X87_ENABLE_FLOAT): Ditto.

testsuite/ChangeLog:

PR target/78738
* gcc.target/i386/pr78738.c: New test.

From-SVN: r243559

7 years ago[libstdc++][testsuite] XFAIL tests relying on long double-to-string conversions on...
Kyrylo Tkachov [Mon, 12 Dec 2016 15:47:47 +0000 (15:47 +0000)]
[libstdc++][testsuite] XFAIL tests relying on long double-to-string conversions on broken newlib

    * lib/target-supports.exp
    (check_effective_target_newlib_broken_long_double_io): New check.
    (check_effective_target_frexpl): Likewise.

    * testsuite/21_strings/basic_string/numeric_conversions/char/stod.cc:
    XFAIL run if newlib_broken_long_double_io.
    * testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stod.cc:
    Likewise.
    * testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stold.cc:
    Likewise.
    * testsuite/27_io/basic_ostream/inserters_arithmetic/char/hexfloat.cc:
    Likewise.

From-SVN: r243558

7 years agoRemove stray character at end of dg-do directive
Jonathan Wakely [Mon, 12 Dec 2016 14:32:23 +0000 (14:32 +0000)]
Remove stray character at end of dg-do directive

* testsuite/experimental/filesystem/operations/is_empty.cc:
Remove stray character at end of dg-do directive.

From-SVN: r243555

7 years agore PR middle-end/78716 (ICE in gimplify_va_arg_expr, at gimplify.c:12650 (i686-linux...
Marek Polacek [Mon, 12 Dec 2016 13:57:32 +0000 (13:57 +0000)]
re PR middle-end/78716 (ICE in gimplify_va_arg_expr, at gimplify.c:12650 (i686-linux-gnu))

PR middle-end/78716
* gimplify.c (gimplify_va_arg_expr): Don't require ADDR_EXPR for
Case 1; check POINTER_TYPE_P instead.

* g++.dg/other/vararg-5.C: New.

From-SVN: r243553

7 years agoDisable hwcaps on libgfortran
Rainer Orth [Mon, 12 Dec 2016 13:40:21 +0000 (13:40 +0000)]
Disable hwcaps on libgfortran

libgfortran:
* configure.ac: Call GCC_CHECK_LINKER_HWCAP.
* Makefile.am (libgfortran_la_LDFLAGS): Add HWCAP_LDFLAGS.
* aclocal.m4: Regenerate.
* configure: Regenerate.
* Makefile.in: Regenerate.

config:
* hwcaps.m4: New file.

libitm:
* acinclude.m4 (LIBITM_CHECK_LINKER_FEATURES): Remove.
* aclocal.m4: Regenerate.
* configure.ac: Call GCC_CHECK_LINKER_HWCAP instead of
LIBITM_CHECK_LINKER_HWCAP.

From-SVN: r243552

7 years agore PR rtl-optimization/78669 (ICE: in combine_and_move_insns, at ira.c:3665 with...
Bernd Schmidt [Mon, 12 Dec 2016 13:29:48 +0000 (13:29 +0000)]
re PR rtl-optimization/78669 (ICE: in combine_and_move_insns, at ira.c:3665 with -Os -fno-tree-ter -mavx512bw)

PR rtl-optimization/78669
* ira.c (combine_and_move_insns): When deleting an insn, clear the
replace flag for all used regs in that insn.

PR rtl-optimization/78669
* gcc.target/i386/pr78669.c: New test.

From-SVN: r243551

7 years agoRemove stray character at end of dg-do directive
Jonathan Wakely [Mon, 12 Dec 2016 12:44:46 +0000 (12:44 +0000)]
Remove stray character at end of dg-do directive

* testsuite/experimental/filesystem/operations/temp_directory_path.cc:
Remove stray character at end of dg-do directive.

From-SVN: r243548

7 years agolib1funcs.S (__ashrdi3): Fix typo from r243545.
George Spelvin [Mon, 12 Dec 2016 11:57:33 +0000 (11:57 +0000)]
lib1funcs.S (__ashrdi3): Fix typo from r243545.

libgcc/
* config/avr/lib1funcs.S (__ashrdi3): Fix typo from r243545.

From-SVN: r243546

7 years agolib1funcs.S (__ashldi3): Use __tmp_reg__ to restore R16 instead of push + pop.
George Spelvin [Mon, 12 Dec 2016 11:25:51 +0000 (11:25 +0000)]
lib1funcs.S (__ashldi3): Use __tmp_reg__ to restore R16 instead of push + pop.

libgcc/
2016-12-12  George Spelvin  <linux@sciencehorizons.net>
* config/avr/lib1funcs.S (__ashldi3): Use __tmp_reg__ to restore
R16 instead of push + pop.
(__ashrdi3, __lshrdi3): Same. And use __zero_reg__ for signs.

From-SVN: r243545

7 years agoFix g++.dg/debug/dwarf2/typedef1.C
Rainer Orth [Mon, 12 Dec 2016 11:12:17 +0000 (11:12 +0000)]
Fix g++.dg/debug/dwarf2/typedef1.C

* g++.dg/debug/dwarf2/typedef1.C: Adjust pattern for last change.

From-SVN: r243544

7 years agoMIPS: Upgrade to R2 for -mnan=2008 and -mabs=2008.
Toma Tabacu [Mon, 12 Dec 2016 10:12:26 +0000 (10:12 +0000)]
MIPS: Upgrade to R2 for -mnan=2008 and -mabs=2008.

gcc/testsuite/

* gcc.target/mips/mips.exp (mips-dg-options): Upgrade to R2 for
-mnan=2008 and -mabs=2008.

From-SVN: r243542

7 years agoDefine arm_arch_core_flags in a single file
Thomas Preud'homme [Mon, 12 Dec 2016 09:39:51 +0000 (09:39 +0000)]
Define arm_arch_core_flags in a single file

2016-12-12  Thomas Preud'homme  <thomas.preudhomme@arm.com>

    gcc/
    * config/arm/arm-opts.h: Move struct arm_arch_core_flag and
    arm_arch_core_flags to ...
    * common/config/arm/arm-common.c: There.

From-SVN: r243541