1. 18 Jan, 2019 28 commits
    • libgo: update to Go1.12beta2 · 4f4a855d
          
          Reviewed-on: https://go-review.googlesource.com/c/158019
      
      gotools/:
      	* Makefile.am (go_cmd_vet_files): Update for Go1.12beta2 release.
      	(GOTOOLS_TEST_TIMEOUT): Increase to 600.
      	(check-runtime): Export LD_LIBRARY_PATH before computing GOARCH
      	and GOOS.
      	(check-vet): Copy golang.org/x/tools into check-vet-dir.
      	* Makefile.in: Regenerate.
      
      gcc/testsuite/:
      	* go.go-torture/execute/names-1.go: Stop using debug/xcoff, which
      	is no longer externally visible.
      
      From-SVN: r268084
      Ian Lance Taylor committed
    • rs6000: Fix *movsi_from_df (PR88892) · 225220d6
      The memory store instructions (stfs[u][x], stxssp[x]) can result in
      garbage if the value to be stored isn't already a valid single
      precision floating point number.  So we cannot use this here.
      
      
      	PR target/88892
      	* config/rs6000/rs6000.md (*movsi_from_df): Allow only register
      	operands.
      
      From-SVN: r268083
      Segher Boessenkool committed
    • re PR libbacktrace/88890 (libbacktrace on 32-bit system with _FILE_OFFSET_BITS == 64) · 8b248c17
      	PR libbacktrace/88890
      	* mmapio.c (backtrace_get_view): Change size parameter to
      	uint64_t.  Check that value fits in size_t.
      	* read.c (backtrace_get_view): Likewise.
      	* internal.h (backtrace_get_view): Update declaration.
      	* elf.c (elf_add): Pass shstrhdr->sh_size to backtrace_get_view.
      
      From-SVN: r268082
      Ian Lance Taylor committed
    • re PR c++/86926 (ICE for a recursive generic lambda) · 89ce81fb
      	PR c++/86926
      	* g++.dg/cpp1z/constexpr-lambda23.C: New test.
      
      From-SVN: r268080
      Marek Polacek committed
    • Update PR middle-end/88587 tests · 3a42e16d
      It is wrong to use -m32 in dg-options.  { target ia32 } should be used
      instead.  Also add -fno-pic to g++.target/i386/pr88587.C since it is
      invalid with PIC.
      
      	PR middle-end/88587
      	* g++.target/i386/pr88587.C (dg-do): Add { target ia32 }.
      	(dg-options): Replace -m32 with -fno-pic.
      	* gcc.target/i386/mvc13.c (dg-do): Add { target ia32 }.
      	(dg-options): Remove -m32.
      
      From-SVN: r268079
      H.J. Lu committed
    • re PR tree-optimization/88903 (wrong-code with SLP vectorized shift) · 649794ff
      2019-01-18  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/88903
      	* tree-vect-stmts.c (vectorizable_shift): Verify we see all
      	scalar stmts a SLP shift amount is composed of when detecting
      	shifts by scalars.
      
      	* gcc.dg/vect/pr88903-1.c: New testcase.
      	* gcc.dg/vect/pr88903-2.c: Likewise.
      
      From-SVN: r268076
      Richard Biener committed
    • c-family: Update unaligned adress of packed member check · 420183d9
      Check unaligned pointer conversion and strip NOPS.
      
      gcc/c-family/
      
      	PR c/51628
      	PR c/88664
      	* c-common.h (warn_for_address_or_pointer_of_packed_member):
      	Remove the boolean argument.
      	* c-warn.c (check_address_of_packed_member): Renamed to ...
      	(check_address_or_pointer_of_packed_member): This.  Also
      	warn pointer conversion.
      	(check_and_warn_address_of_packed_member): Renamed to ...
      	(check_and_warn_address_or_pointer_of_packed_member): This.
      	Also warn pointer conversion.
      	(warn_for_address_or_pointer_of_packed_member): Remove the
      	boolean argument.  Don't check pointer conversion here.
      
      gcc/c
      
      	PR c/51628
      	PR c/88664
      	* c-typeck.c (convert_for_assignment): Upate the
      	warn_for_address_or_pointer_of_packed_member call.
      
      gcc/cp
      
      	PR c/51628
      	PR c/88664
      	* call.c (convert_for_arg_passing): Upate the
      	warn_for_address_or_pointer_of_packed_member call.
      	* typeck.c (convert_for_assignment): Likewise.
      
      gcc/testsuite/
      
      	PR c/51628
      	PR c/88664
      	* c-c++-common/pr51628-33.c: New test.
      	* c-c++-common/pr51628-35.c: New test.
      	* c-c++-common/pr88664-1.c: Likewise.
      	* c-c++-common/pr88664-2.c: Likewise.
      	* gcc.dg/pr51628-34.c: Likewise.
      
      From-SVN: r268075
      H.J. Lu committed
    • PR target/88799 Add +mp and +sec extensions to ARMv7-a · cab81ec0
      Most armv7-a implementations support a number of basic extensions to
      the architecture which are not particularly important to the compiler,
      but can matter if code contains inline assembly.  This patch adds
      support for these extensions, based on the capabilities that GAS
      already provides for the appropriate CPUs.  For the purposes of
      multilib selection we ignore these extensions entirely and map the
      extended architecture versions down to the base versions we have
      already support for.
      
      gcc:
      	PR target/88799
      	* config/arm/arm-cpus.in (mp): New feature.
      	(sec): New feature.
      	(fgroup ARMv7ve): Add mp and sec features.
      	(arch armv7-a): Add options to allow mp and sec extensions.
      	(cpu generic-armv7-a): Add options to allow mp and sec extensions.
      	(cpu cortex-a5, cpu cortex-7, cpu cortex-a9): Add mp and sec
      	extenstions to the base architecture.
      	(cpu cortex-a8): Add sec extension to the base architecture.
      	(cpu marvell-pj4): Add mp and sec extensions to the base architecture.
      	* config/arm/t-aprofile (MULTILIB_MATCHES): Map all armv7-a arch
      	variants down to the base v7-a varaint.
      	* config/arm/t-multilib (v7_a_arch_variants): New variable.
      	* doc/invoke.texi (ARM Options): Add +mp and +sec to the list
      	of permitted extensions for -march=armv7-a and for
      	-mcpu=generic-armv7-a.
      
      testsuite:
      	* gcc.target/arm/multilib.exp (config "aprofile"): Add tests for
      	mp and sec extensions to armv7-a.
      
      From-SVN: r268072
      Richard Earnshaw committed
    • Bump version of __gcov_indirect_call_profiler function as there was ABI change. · 756721ba
      2019-01-18  Martin Liska  <mliska@suse.cz>
      
      	* params.def: Fix comment.
      	* tree-profile.c (gimple_init_gcov_profiler): Bump function
      	name.
      	(gimple_gen_ic_func_profiler): Likewise.
      2019-01-18  Martin Liska  <mliska@suse.cz>
      
      	* gcc.dg/no_profile_instrument_function-attr-1.c: Update
      	expected function name.
      2019-01-18  Martin Liska  <mliska@suse.cz>
      
      	* libgcov-profiler.c (__gcov_indirect_call_profiler_v2): Rename
      	to ...
      	(__gcov_indirect_call_profiler_v3): ... this.
      	* libgcov.h (__gcov_indirect_call_profiler_v2): Likewise.
      	(__gcov_indirect_call_profiler_v3): Likewise.
      	* Makefile.in: Bump function name.
      
      From-SVN: r268071
      Martin Liska committed
    • Update error message prefix in libgcov profiling. · d273c40a
      2019-01-18  Martin Liska  <mliska@suse.cz>
      
      	* libgcov-driver.c (GCOV_PROF_PREFIX): Define.
      	(gcov_version): Use in gcov_error.
      	(merge_one_data): Likewise.
      	(dump_one_gcov): Likewise.
      
      From-SVN: r268070
      Martin Liska committed
    • Describe better version mismatch in libgcov driver. · be9d9fdb
      2019-01-18  Martin Liska  <mliska@suse.cz>
      
      	* libgcov-driver.c (gcov_version_string): New function.
      	(gcov_version): Convert version integer into string.
      
      From-SVN: r268069
      Martin Liska committed
    • [AArch64] Add support for system register based stack protector canary access · cd0b2d36
      2019-01-18  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
      
              * config/aarch64/aarch64-opts.h (enum stack_protector_guard): New
              * config/aarch64/aarch64.c (aarch64_override_options_internal): Handle
              and put in error checks for stack protector guard options.
              (aarch64_stack_protect_guard): New.
              (TARGET_STACK_PROTECT_GUARD): Define.
              * config/aarch64/aarch64.md (UNSPEC_SSP_SYSREG): New.
              (reg_stack_protect_address<mode>): New.
              (stack_protect_set): Adjust for SSP_GLOBAL.
              (stack_protect_test): Likewise.
              * config/aarch64/aarch64.opt (-mstack-protector-guard-reg): New.
              (-mstack-protector-guard): Likewise.
              (-mstack-protector-guard-offset): Likewise.
      
      From-SVN: r268068
      Ramana Radhakrishnan committed
    • re PR tree-optimization/86214 (Strongly increased stack usage) · d0bf921f
      	PR tree-optimization/86214
      	* tree-inline.h (struct copy_body_data): Add
      	add_clobbers_to_eh_landing_pads member.
      	* tree-inline.c (add_clobbers_to_eh_landing_pad): New function.
      	(copy_edges_for_bb): Call it if EH edge destination is <
      	id->add_clobbers_to_eh_landing_pads.  Fix a comment typo.
      	(expand_call_inline): Set id->add_clobbers_to_eh_landing_pads
      	if flag_stack_reuse != SR_NONE and clear it afterwards.
      
      	* g++.dg/opt/pr86214-1.C: New test.
      	* g++.dg/opt/pr86214-2.C: New test.
      
      From-SVN: r268067
      Jakub Jelinek committed
    • [ARM][testsuite] follow-up to PR target/52813 and target/11807 fix. · 6616a318
      2019-01-18  Christophe Lyon  <christophe.lyon@linaro.org>
      
      	* gcc.target/arm/pr77904.c: Add dg-warning for sp clobber.
      
      From-SVN: r268066
      Christophe Lyon committed
    • PR target/85596 Add --with-multilib-list doc for aarch64 · 8b0cb6e1
      2019-01-18  Christophe Lyon  <christophe.lyon@linaro.org>
      
      	PR target/85596
      	* doc/install.texi (with-multilib-list): Document for aarch64.
      
      From-SVN: r268065
      Christophe Lyon committed
    • re PR target/88734 (AArch64's ACLE intrinsics give an ICE instead of compile… · f84c6067
      re PR target/88734 (AArch64's ACLE intrinsics give an ICE instead of compile error when option mismatch.)
      
      	PR target/88734
      	* config/arm/arm_neon.h: Fix #pragma GCC target syntax - replace
      	(("..."))) with ("...").
      
      From-SVN: r268064
      Jakub Jelinek committed
    • Reapply: · 05d25603
      	2018-12-15  Jakub Jelinek  <jakub@redhat.com>
      
      	PR target/88489
      	* gcc.target/i386/avx512vl-vfixupimmsd-2.c: New test.
      	* gcc.target/i386/avx512vl-vfixupimmss-2.c: New test.
      
      From-SVN: r268063
      Jakub Jelinek committed
    • Document atomic fetch and nand · 2185e212
      Copy code example for fetch and nand from "Legacy __sync Built-in
      Functions for Atomic Memory Access" to "Built-in Functions for Memory
      Model Aware Atomic Operations".
      
      gcc/
      
      	* doc/extend.texi (Built-in Functions for Memory Model Aware
      	Atomic Operations): Document atomic fetch and nand.
      
      From-SVN: r268062
      Sebastian Huber committed
    • RTEMS/Ada: Remove RTEMS quirk · f6605c65
      The new network stack (libbsd) supports IPv6.
      
      gcc/ada
      
      	* s-oscons-tmplt.c (AF_INET6): Do not undefine for RTEMS.
      
      From-SVN: r268061
      Sebastian Huber committed
    • Reset proper type on vector types (PR middle-end/88587). · 5928bc2e
      2019-01-18  Martin Liska  <mliska@suse.cz>
      	    Richard Biener  <rguenther@suse.de>
      
      	PR middle-end/88587
      	* cgraph.h (create_version_clone_with_body): Add new argument
      	with attributes.
      	* cgraphclones.c (cgraph_node::create_version_clone): Add
      	DECL_ATTRIBUTES to a newly created decl.  And call
      	valid_attribute_p so that proper cl_target_optimization_node
      	is set for the newly created declaration.
      	* multiple_target.c (create_target_clone): Set DECL_ATTRIBUTES
      	for declaration.
      	(expand_target_clones): Do not call valid_attribute_p, it must
      	be already done.
      	* tree-inline.c (copy_decl_for_dup_finish): Reset mode for
      	vector types.
      2019-01-18  Martin Liska  <mliska@suse.cz>
      
      	PR middle-end/88587
      	* g++.target/i386/pr88587.C: New test.
      	* gcc.target/i386/mvc13.c: New test.
      
      Co-Authored-By: Richard Biener <rguenther@suse.de>
      
      From-SVN: r268060
      Martin Liska committed
    • Add self to MAINTAINERS · 9c83c587
      2019-01-18  Li Jia He  <helijia@gcc.gnu.org>
      
          * MAINTAINERS (Write After Approval): Add myself.
      
      From-SVN: r268059
      Li Jia He committed
    • PR c++/86205 - ICE with ?: of throw and template-id. · b0f42222
      My patch for 64372 removed a bogus lvalue-rvalue conversion for one arm of a
      ?: expression where the other arm is a throw.  But we still need to require
      any overload to be resolved, even though we aren't getting that from
      decay_conversion anymore.
      
      	* pt.c (resolve_nondeduced_context_or_error): Split out from...
      	* typeck.c (decay_conversion): ...here.
      	* call.c (build_conditional_expr_1): Use it.
      
      From-SVN: r268058
      Jason Merrill committed
    • re PR go/88202 (FAIL: runtime/pprof) · aee6ed4a
      	PR go/88202
          runtime: in sigprof, skip to sigtrampgo if we don't find sigtramp
          
          Fixes https://gcc.gnu.org/PR88202
          
          Reviewed-on: https://go-review.googlesource.com/c/158218
      
      From-SVN: r268057
      Ian Lance Taylor committed
    • libphobos: Add Fiber/Thread support for StackGrowsUp. · 151a199f
      The StackGrowsDown version being turned off for hppa targets.
      
      After other fixes in the compiler, this allows core.thread unittests to
      all pass, as well as the garbage collector to work correctly.
      
      Backported from upstream druntime 2.084.
      
      Reviewed-on: https://github.com/dlang/druntime/pull/2410
      
      From-SVN: r268056
      Iain Buclaw committed
    • libphobos: Add platform bindings for hppa-linux-gnu. · 50deb970
      Backported from upstream druntime 2.084
      
      Reviewed-on: https://github.com/dlang/druntime/pull/2402
      
      From-SVN: r268055
      Iain Buclaw committed
    • re PR fortran/88898 ([Regression 9] gomp is broken by r268045) · fa95915e
      2018-01-17  Steve Ellcey  <sellcey@cavium.com>
      
      	PR fortran/88898
      	* gfortran.dg/gomp/declare-simd-2.f90: Add aarch64 target specifier to
      	warning checks.
      	* gfortran.dg/gomp/pr79154-1.f90: Ditto.
      	* gfortran.dg/gomp/pr83977.f90: Ditto.
      
      From-SVN: r268054
      Steve Ellcey committed
    • Daily bump. · 7025cc14
      From-SVN: r268053
      GCC Administrator committed
    • libphobos: Add OSX bindings for core.sys.posix.aio · 5996efcd
      Backported from upstream druntime 2.084
      
      Reviewed-on: https://github.com/dlang/druntime/pull/2342
      
      From-SVN: r268050
      Iain Buclaw committed
  2. 17 Jan, 2019 12 commits
    • re PR target/88734 (AArch64's ACLE intrinsics give an ICE instead of compile… · a85f2b90
      re PR target/88734 (AArch64's ACLE intrinsics give an ICE instead of compile error when option mismatch.)
      
      	PR target/88734
      	* config/aarch64/arm_neon.h: Fix #pragma GCC target syntax - replace
      	(("..."))) with ("...").  Use arch=armv8.2-a+sha3 instead of
      	arch=armv8.2-a+crypto for vsha512hq_u64 etc. intrinsics.
      
      From-SVN: r268049
      Jakub Jelinek committed
    • PR middle-end/88273 - [8/9 Regression] warning: 'memcpy' offset [-527, -529] · 77efc5c2
      PR middle-end/88273 - [8/9 Regression] warning: 'memcpy' offset [-527, -529]
      is out of the bounds [0, 16]
      
      gcc/ChangeLog:
      
      	PR middle-end/88273
      	* gimple-ssa-warn-restrict.c (builtin_memref::extend_offset_range):
      	Handle anti-ranges the same as no range at all.
      
      gcc/testsuite/ChangeLog:
      
      	PR middle-end/88273
      	* gcc.dg/Warray-bounds-38.c: New test.
      
      From-SVN: r268048
      Martin Sebor committed
    • Improve the C error for mismatched array string literal initialization. · 17ad43dd
      	* c-typeck.c (digest_init): Revised the error message produced for
      	ill-formed cases of array initialization with a string literal.
      	(error_init): Make variadic.
      
      Co-Authored-By: Jason Merrill <jason@redhat.com>
      
      From-SVN: r268047
      Tom Honermann committed
    • PR c++/86740, ICE with constexpr if and nested generic lambdas. · f18aa3a4
      When we partially instantiate the constexpr if, we walk through its body to
      see what it uses from the enclosing local_specializations.  That walk was
      overlooking the use of 'count' in the captures of the innermost lambda,
      because we weren't walking into the capture list.
      
      	* tree.c (cp_walk_subtrees): Handle LAMBDA_EXPR.
      
      From-SVN: r268046
      Jason Merrill committed
    • pr60823-1.c: Add aarch64 specific warning checks and assembler scans. · ba29ed0f
      2018-01-17  Steve Ellcey  <sellcey@cavium.com>
      
      	* c-c++-common/gomp/pr60823-1.c: Add aarch64 specific
      	warning checks and assembler scans.
      	* c-c++-common/gomp/pr60823-3.c: Ditto.
      	* c-c++-common/gomp/pr63328.c: Ditto.
      	* g++.dg/gomp/declare-simd-1.C: Ditto.
      	* g++.dg/gomp/declare-simd-3.C: Ditto.
      	* g++.dg/gomp/declare-simd-4.C: Ditto.
      	* g++.dg/gomp/declare-simd-7.C: Ditto.
      	* g++.dg/gomp/pr88182.C: Ditto.
      	* g++.dg/vect/simd-clone-7.cc: Ditto.
      	* gcc.dg/gomp/declare-simd-1.c: Ditto.
      	* gcc.dg/gomp/declare-simd-3.c: Ditto.
      	* gcc.dg/gomp/pr59669-2.c: Ditto.
      	* gcc.dg/gomp/pr87895-1.c: Ditto.
      	* gcc.dg/gomp/pr87895-2.c: Ditto.
      	* gcc.dg/gomp/simd-clones-2.c: Ditto.
      	* gfortran.dg/gomp/declare-simd-2.f90: Ditto.
      	* gfortran.dg/gomp/pr79154-1.f90: Ditto.
      	* gfortran.dg/gomp/pr83977.f90: Ditto.
      
      From-SVN: r268045
      Steve Ellcey committed
    • aarch64.c (cgraph.h): New include. · d9186814
      2018-01-17  Steve Ellcey  <sellcey@cavium.com>
      
      	* config/aarch64/aarch64.c (cgraph.h): New include.
      	(intl.h): New include.
      	(supported_simd_type): New function.
      	(currently_supported_simd_type): Ditto.
      	(aarch64_simd_clone_compute_vecsize_and_simdlen): Ditto.
      	(aarch64_simd_clone_adjust): Ditto.
      	(aarch64_simd_clone_usable): Ditto.
      	(TARGET_SIMD_CLONE_COMPUTE_VECSIZE_AND_SIMDLEN): New macro.
      	(TARGET_SIMD_CLONE_ADJUST): Ditto.
      	(TARGET_SIMD_CLONE_USABLE): Ditto.
      	* config/i386/i386.c (ix86_simd_clone_adjust): Add definition check.
      	* omp-simd-clone.c (expand_simd_clones): Add targetm.simd_clone.adjust
      	call.
      
      From-SVN: r268044
      Steve Ellcey committed
    • decl.c (grokdeclarator): Use typespec_loc in error messages about 'auto' and trailing return type. · 742b6dc4
      /cp
      2019-01-17  Paolo Carlini  <paolo.carlini@oracle.com>
      
      	* decl.c (grokdeclarator): Use typespec_loc in error messages
      	about 'auto' and trailing return type.
      
      /testsuite
      2019-01-17  Paolo Carlini  <paolo.carlini@oracle.com>
      
      	* g++.dg/cpp0x/auto52.C: Test locations too.
      	* g++.dg/cpp0x/trailing2.C: Likewise.
      	* g++.dg/cpp1y/auto-fn18.C: Likewise.
      	* g++.dg/cpp1y/auto-fn25.C: Likewise.
      	* g++.dg/cpp1y/auto-fn52.C: Likewise.
      	* g++.dg/cpp1y/auto-fn53.C: Likewise.
      	* g++.dg/cpp1y/auto-fn54.C: Likewise.
      
      From-SVN: r268043
      Paolo Carlini committed
    • C++: Fix ICE when adding overloaded operator via using_decl (PR c++/88699) · b9e03679
      PR c++/88699 reports an ICE within this assertion in add_method:
      
        gcc_assert (!current_fns || !DECL_DESTRUCTOR_P (method));
      
      when adding an overloaded operator to a class via a using_decl, due to
      DECL_DESTRUCTOR_P requiring a FUNCTION_DECL, but "method" being a
      USING_DECL.
      
      This patch weakens the assertion to avoid testing DECL_DESTRUCTOR_P
      for the case where "via_using" is true, fixing the ICE.
      
      gcc/cp/ChangeLog:
      	PR c++/88699
      	* class.c (add_method): Don't use DECL_DESTRUCTOR_P on
      	USING_DECLs.
      
      gcc/testsuite/ChangeLog:
      	PR c++/88699
      	* g++.dg/template/pr88699.C: New test.
      
      From-SVN: r268041
      David Malcolm committed
    • PR tree-optimization/88800 - Spurious -Werror=array-bounds for non-taken branch · 213694e5
      gcc/ChangeLog:
      
      	PR tree-optimization/88800
      	* gimple-fold.c (gimple_fold_builtin_memory_op): Avoid checking
      	NO_WARNING bit here.  Avoid folding out-of-bounds calls.
      	* gimple-ssa-warn-restrict.c (maybe_diag_offset_bounds): Remove
      	redundant argument.  Add new argument and issue diagnostics under
      	its control.  Detect out-of-bounds access even with warnings
      	disabled.
      	(check_bounds_or_overlap): Change return type.  Add argument.
      	(wrestrict_dom_walker::check_call): Adjust.
      	* gimple-ssa-warn-restrict.h (check_bounds_or_overlap): Add argument.
      	* tree-ssa-strlen.c (handle_builtin_strcpy): Adjust to change in
      	check_bounds_or_overlap's return value.
      	(handle_builtin_stxncpy): Same.
      	(handle_builtin_strcat): Same.
      
      gcc/testsuite/ChangeLog:
      
      	PR tree-optimization/88800
      	* c-c++-common/Wrestrict.c: Adjust.
      	* gcc.dg/Warray-bounds-37.c: New test.
      	* gcc.dg/builtin-memcpy-2.c: New test.
      	* gcc.dg/builtin-memcpy.c: New test.
      
      From-SVN: r268037
      Martin Sebor committed
    • Fix filesystem::equivalent for mingw · 16d46c7b
      	* src/c++17/fs_ops.cc
      	(equivalent(const path&, const path&, error_code&))
      	[_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Use GetFileInformationByHandle to
      	compare files instead of relying on incomplete info returned by stat.
      
      From-SVN: r268036
      Jonathan Wakely committed
    • PR libstdc++/88884 fix filesystem::absolute("//") for mingw · fc6f857b
      	PR libstdc++/88884
      	* src/c++17/fs_ops.cc (absolute(const path&, error_code&)): Do nothing
      	if the path is already absolute.
      	[_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Normalize root-directory.
      	[!_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Pass error_code to current_path.
      
      From-SVN: r268035
      Jonathan Wakely committed
    • PR libstdc++/88881 adjust filesystem::status and tests for mingw semantics · dd0f7ba2
      On Windows stat("foo/bar/../.") will resolve to "foo" even if that is a
      non-directory and "foo/bar" does not exist. This is the expected
      behaviour and consistent with boost::filesystem, so don't try to correct
      it. The only unwanted behaviour is that stat("baz/") fails due to a
      mingw bug (fixed in mingw-w64 v6.0.0) so add a workaround.
      
      	PR libstdc++/88881
      	* src/c++17/fs_ops.cc (canonical(const path&, error_code&))
      	[_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Normalize path, to match behaviour
      	of filesystem::exists.
      	(create_directories(const path&, error_code&)): Add assertions.
      	(status(const path&, error_code&)) [_GLIBCXX_FILESYSTEM_IS_WINDOWS]:
      	Add workaround for bug in _wstat for paths with trailing slash.
      	* testsuite/27_io/filesystem/operations/create_directories.cc: Adjust
      	for expected behaviour on mingw.
      	* testsuite/experimental/filesystem/operations/create_directories.cc:
      	Likewise.
      	* testsuite/27_io/filesystem/operations/temp_directory_path.cc: Use
      	"TMP" instead of "TMPDIR" and clean environment before each test. Do
      	not test permissions on mingw targets.
      
      From-SVN: r268034
      Jonathan Wakely committed