From 105f3ef492abd22985321b64e8f40e58f3a15a83 Mon Sep 17 00:00:00 2001 From: Alvaro Herrera Date: Tue, 20 Jan 2015 12:26:20 -0300 Subject: Disable -faggressive-loop-optimizations in gcc 4.8+ for pre-9.2 branches. With this optimization flag enabled, recent versions of gcc can generate incorrect code that assumes variable-length arrays (such as oidvector) are actually fixed-length because they're embedded in some larger struct. The known instance of this problem was fixed in 9.2 and up by commit 8137f2c32322c624e0431fac1621e8e9315202f9 and followon work, which hides actually-variable-length catalog fields from the compiler altogether. And we plan to gradually convert variable-length fields to official "flexible array member" notation over time, which should prevent this type of bug from reappearing as gcc gets smarter. We're not going to try to back-port those changes into older branches, though, so apply this band-aid instead. Andres Freund This is a backpatch of commit 649839dd9 to unsupported branches REL8_2_STABLE and REL8_3_STABLE, so that they work with newer toolsets. --- configure.in | 3 +++ 1 file changed, 3 insertions(+) (limited to 'configure.in') diff --git a/configure.in b/configure.in index ce10609495..f789c149fc 100644 --- a/configure.in +++ b/configure.in @@ -294,6 +294,9 @@ choke me PGAC_PROG_CC_CFLAGS_OPT([-fwrapv]) # Disable FP optimizations that cause various errors on gcc 4.5+ or maybe 4.6+ PGAC_PROG_CC_CFLAGS_OPT([-fexcess-precision=standard]) + # Disable loop optimizations that get confused by variable-length struct + # declarations in gcc 4.8+ + PGAC_PROG_CC_CFLAGS_OPT([-fno-aggressive-loop-optimizations]) elif test x"${CC}" = x"xlc"; then # AIX xlc has to have strict aliasing turned off too PGAC_PROG_CC_CFLAGS_OPT([-qnoansialias]) -- cgit v1.2.1