https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85026
Bug ID: 85026 Summary: [7 Regression] Error: branch out of range on arm-linux-gnueabihf Product: gcc Version: 7.3.1 Status: UNCONFIRMED Severity: normal Priority: P3 Component: target Assignee: unassigned at gcc dot gnu.org Reporter: doko at gcc dot gnu.org Target Milestone: --- [seen when building the simutrans package on Debian/Ubuntu armhf], can be worked around building with -O1. works with the gcc-6-branch and current trunk. successfully built with GCC 7.1 as well. $cat wegbauer.ii template <class> class a; class b; struct c { typedef a<b> &g; }; template <typename d> struct e { typedef typename d::f iter; }; class h { public: void __attribute__((noreturn)) i(); } ab; template <class> class a { public: typedef b *f; b &operator[](unsigned m) { if (ac) ab.i(); return ad[m]; } f n() { return ad; } f m_fn3(); b *ad; unsigned ac; }; class b { public: short j; short k; signed l; } __attribute__((__packed__)); void o(a<b> &m, b &p2, b &p) { p2 = p = m[0]; if (bool at = false) ; else for (c::g au(m);; at = true) if (bool av = false) ; else for (e<a<int>>::iter aw = au.n(), ax = au.m_fn3(); ax; av ? (void)0 : (void)0) if (bool ay = 0) ; else for (b az = *aw; !ay; ay = true) { if (p2.j) p2.j = az.j; else if (p.j) p.j = az.j; if (p2.k) p2.k = az.k; else if (az.k > p.k) p.k = az.k; if (az.l < p2.l) if (az.l > p.l) p.l = az.l; } } $ g++-7 -std=gnu++11 -Wall -O2 -fstack-protector-strong -c wegbauer.ii /tmp/ccqJ02vk.s: Assembler messages: /tmp/ccqJ02vk.s:30: Error: branch out of range GCC configured with --enable-languages=c,ada,c++,go,d,fortran,objc,obj-c++ --prefix=/usr --with-gcc-major-version-only --program-suffix=-7 --program-prefix=arm-linux-gnueabihf- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-libitm --disable-libquadmath --disable-libquadmath-support --enable-plugin --enable-default-pie --with-system-zlib --with-target-system-zlib --enable-objc-gc=auto --enable-multiarch --enable-multilib --disable-sjlj-exceptions --with-arch=armv7-a --with-fpu=vfpv3-d16 --with-float=hard --with-mode=thumb --disable-werror --enable-multilib --enable-checking=release --build=arm-linux-gnueabihf --host=arm-linux-gnueabihf --target=arm-linux-gnueabihf