https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81818
--- Comment #10 from Andrew Roberts <andrewm.roberts at sky dot com> --- I've attached the output for gcc 7.2.0 with -fmem-report (as gcc-7.2.0-fmem-report.tar.bz2). g++ -Ox -fmem-report -c testmap.cpp where -Ox is one of: -O0, -O1, -O2, -O3, or -O1 -fgcse This is across: x64 (x86-64) , arm, aarch64-rpi3 (aarch64) Both Raspbery Pi 3 systems are identical, one has 32 bit OS, other has 64 bit OS (Arch Linux ARM) The files are named: gcc-7.2.0-[arch]-[opt].txt. The original issue was large memory usage increase for aarch64 vs arm, on -O2 and above. So looking at -O1 vs -O2 for the above. There seem to be leaks in the Bitmaps: Total Memory Percentage Memory Leaked Leaked arm -O1: 54067992 10582346 19.57% arm -O2: 43536148 15595746 35.82% aarch64 -O1: 39788848 9005047 22.63% aarch64 -O2: 74521688 42694630 57.29% <= big increase on aarch64 at -O2 47% of the leaks at -O2 on aarch64 are in: df-problems.c:1912 (df_mir_alloc) 543920: 0.7% 202813600 10167911: 23.8% 0 0 heap df-problems.c:1913 (df_mir_alloc) 544080: 0.7% 202798720 10167165: 23.8% 0 0 heap 32% of the leaks at -O2 on x86-64 are also in the same place, so I guess this is a 64bit code path. I don't see anything else which stands out as being different between arm and aarch64 as they move from -O1 to -O2. There are plenty of other leaks though, although how significant these are I have no idea. The arm gcc is configured with: /usr/local/gcc/bin/g++ -v Using built-in specs. COLLECT_GCC=/usr/local/gcc/bin/g++ COLLECT_LTO_WRAPPER=/usr/local/gcc-7.2.0/libexec/gcc/armv7l-unknown-linux-gnueabihf/7.2.0/lto-wrapper Target: armv7l-unknown-linux-gnueabihf Configured with: ../gcc-7.2.0/configure --prefix=/usr/local/gcc-7.2.0 --program-suffix= --disable-werror --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-linker-hash-style=gnu --enable-plugin --enable-gnu-indirect-function --enable-lto --with-isl --enable-languages=c,c++,fortran --disable-libgcj --enable-clocale=gnu --disable-libstdcxx-pch --enable-install-libiberty --disable-multilib --disable-libssp --host=armv7l-unknown-linux-gnueabihf --build=armv7l-unknown-linux-gnueabihf --with-arch=armv7-a --with-float=hard --with-fpu=vfpv3-d16 --disable-bootstrap --enable-gather-detailed-mem-stats Thread model: posix gcc version 7.2.0 (GCC) The aarch64 gcc is configured with: /usr/local/gcc/bin/g++ -v Using built-in specs. COLLECT_GCC=/usr/local/gcc/bin/g++ COLLECT_LTO_WRAPPER=/usr/local/gcc-7.2.0/libexec/gcc/aarch64-unknown-linux-gnu/7.2.0/lto-wrapper Target: aarch64-unknown-linux-gnu Configured with: ../gcc-7.2.0/configure --prefix=/usr/local/gcc-7.2.0 --program-suffix= --disable-werror --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-linker-hash-style=gnu --enable-plugin --enable-gnu-indirect-function --enable-lto --with-isl --enable-languages=c,c++,fortran --disable-libgcj --enable-clocale=gnu --disable-libstdcxx-pch --enable-install-libiberty --disable-multilib --enable-shared --enable-clocale=gnu --with-arch-directory=aarch64 --enable-multiarch --disable-libssp --host=aarch64-unknown-linux-gnu --build=aarch64-unknown-linux-gnu --with-arch=armv8-a --disable-bootstrap --enable-gather-detailed-mem-stats Thread model: posix gcc version 7.2.0 (GCC) The x86-64 gcc is configured with: /usr/local/gcc/bin/g++ -v Using built-in specs. COLLECT_GCC=/usr/local/gcc/bin/g++ COLLECT_LTO_WRAPPER=/usr/local/gcc-7.2.0/libexec/gcc/x86_64-unknown-linux-gnu/7.2.0/lto-wrapper Target: x86_64-unknown-linux-gnu Configured with: ../gcc-7.2.0/configure --prefix=/usr/local/gcc-7.2.0 --program-suffix= --disable-werror --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-linker-hash-style=gnu --enable-plugin --enable-initfini-array --enable-gnu-indirect-function --with-isl --enable-languages=c,c++,fortran,lto --disable-libgcj --enable-lto --enable-multilib --with-tune=generic --with-arch_32=i686 --host=x86_64-unknown-linux-gnu --build=x86_64-unknown-linux-gnu --with-ld=/usr/local/bin/ld --with-gnu-ld --with-as=/usr/local/bin/as --with-gnu-as --disable-bootstrap --enable-gather-detailed-mem-stats Thread model: posix gcc version 7.2.0 (GCC)