+2018-11-09 Alexandre Oliva <oliva@adacore.com>
+
+ * config/i386/mingw32.h (LINK_SPEC_LARGE_ADDR_AWARE): Adjust
+ for non-w64 x86_64 biarch.
+
2018-11-09 Alexandre Oliva <aoliva@redhat.com>
PR rtl-optimization/86438
#define SUBTARGET_EXTRA_SPECS \
{ "shared_libgcc_undefs", SHARED_LIBGCC_UNDEFS_SPEC }
-#if MINGW_DEFAULT_LARGE_ADDR_AWARE
+#if ! MINGW_DEFAULT_LARGE_ADDR_AWARE
+/* This is used without --enable-large-address-aware. */
+# define LINK_SPEC_LARGE_ADDR_AWARE ""
+#elif ! TARGET_BI_ARCH
+/* This is used on i686-pc-mingw32 with --enable-large-address-aware. */
# define LINK_SPEC_LARGE_ADDR_AWARE \
"%{!shared:%{!mdll:--large-address-aware}}"
+#elif TARGET_64BIT_DEFAULT
+/* This is used on x86_64-pc-mingw32 with --enable-large-address-aware.
+ ??? It probably doesn't work, because the linker emulation defaults
+ to i386pep, the 64-bit mode that does not support
+ --large-address-aware, and x86_64-pc-mingw32 does not override the
+ emulation to i386pe for -m32, unlike x86_64-w64-mingw32. */
+# define LINK_SPEC_LARGE_ADDR_AWARE \
+ "%{!shared:%{!mdll:%{m32:--large-address-aware}}}"
#else
-# define LINK_SPEC_LARGE_ADDR_AWARE ""
+/* This would only be used if someone introduced a biarch
+ configuration that defaulted to 32-bit. */
+# define LINK_SPEC_LARGE_ADDR_AWARE \
+ "%{!shared:%{!mdll:%{!m64:--large-address-aware}}}"
#endif
#define LINK_SPEC "%{mwindows:--subsystem windows} \