aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/common.opt2
-rw-r--r--gcc/doc/invoke.texi42
-rw-r--r--gcc/testsuite/ChangeLog18
-rw-r--r--gcc/testsuite/g++.dg/lto/odr-6_1.c1
-rw-r--r--gcc/testsuite/gcc.dg/alias-15.c2
-rw-r--r--gcc/testsuite/gcc.dg/fdata-sections-1.c2
-rw-r--r--gcc/testsuite/gcc.dg/ipa/pr77653.c2
-rw-r--r--gcc/testsuite/gcc.dg/lto/20090729_0.c2
-rw-r--r--gcc/testsuite/gcc.dg/lto/20111207-1_0.c2
-rw-r--r--gcc/testsuite/gcc.dg/lto/c-compatible-types-1_0.c2
-rw-r--r--gcc/testsuite/gcc.dg/lto/pr55525_0.c2
-rw-r--r--gcc/testsuite/gcc.dg/lto/pr88077_0.c2
-rw-r--r--gcc/testsuite/gcc.dg/lto/pr88077_1.c2
-rw-r--r--gcc/testsuite/gcc.target/aarch64/sve/peel_ind_1.c2
-rw-r--r--gcc/testsuite/gcc.target/aarch64/sve/peel_ind_2.c2
-rw-r--r--gcc/testsuite/gcc.target/aarch64/sve/peel_ind_3.c2
-rw-r--r--gcc/testsuite/gcc.target/i386/volatile-bitfields-2.c2
18 files changed, 57 insertions, 38 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 7ba3698..4b51688 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2019-11-20 Wilco Dijkstra <wdijkstr@arm.com>
+
+ PR85678
+ * common.opt (fcommon): Change init to 1.
+ * doc/invoke.texi (-fcommon): Update documentation.
+
2019-11-20 Jan Hubicka <jh@suse.cz>
* fibonacci_heap.h (fibonacci_heap<K,V>::consolidate): Turn auto_vec
diff --git a/gcc/common.opt b/gcc/common.opt
index e7b8782..404b6aa 100644
--- a/gcc/common.opt
+++ b/gcc/common.opt
@@ -1131,7 +1131,7 @@ Common Report Var(flag_combine_stack_adjustments) Optimization
Looks for opportunities to reduce stack adjustments and stack references.
fcommon
-Common Report Var(flag_no_common,0)
+Common Report Var(flag_no_common,0) Init(1)
Put uninitialized globals in the common section.
fcompare-debug
diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
index 2117e5e..031bfd2 100644
--- a/gcc/doc/invoke.texi
+++ b/gcc/doc/invoke.texi
@@ -569,7 +569,7 @@ Objective-C and Objective-C++ Dialects}.
-fnon-call-exceptions -fdelete-dead-exceptions -funwind-tables @gol
-fasynchronous-unwind-tables @gol
-fno-gnu-unique @gol
--finhibit-size-directive -fno-common -fno-ident @gol
+-finhibit-size-directive -fcommon -fno-ident @gol
-fpcc-struct-return -fpic -fPIC -fpie -fPIE -fno-plt @gol
-fno-jump-tables @gol
-frecord-gcc-switches @gol
@@ -14112,35 +14112,27 @@ useful for building programs to run under WINE@.
code that is not binary compatible with code generated without that switch.
Use it to conform to a non-default application binary interface.
-@item -fno-common
-@opindex fno-common
+@item -fcommon
@opindex fcommon
+@opindex fno-common
@cindex tentative definitions
-In C code, this option controls the placement of global variables
-defined without an initializer, known as @dfn{tentative definitions}
-in the C standard. Tentative definitions are distinct from declarations
+In C code, this option controls the placement of global variables
+defined without an initializer, known as @dfn{tentative definitions}
+in the C standard. Tentative definitions are distinct from declarations
of a variable with the @code{extern} keyword, which do not allocate storage.
-Unix C compilers have traditionally allocated storage for
-uninitialized global variables in a common block. This allows the
-linker to resolve all tentative definitions of the same variable
+The default is @option{-fno-common}, which specifies that the compiler places
+uninitialized global variables in the BSS section of the object file.
+This inhibits the merging of tentative definitions by the linker so you get a
+multiple-definition error if the same variable is accidentally defined in more
+than one compilation unit.
+
+The @option{-fcommon} places uninitialized global variables in a common block.
+This allows the linker to resolve all tentative definitions of the same variable
in different compilation units to the same object, or to a non-tentative
-definition.
-This is the behavior specified by @option{-fcommon}, and is the default for
-GCC on most targets.
-On the other hand, this behavior is not required by ISO
-C, and on some targets may carry a speed or code size penalty on
-variable references.
-
-The @option{-fno-common} option specifies that the compiler should instead
-place uninitialized global variables in the BSS section of the object file.
-This inhibits the merging of tentative definitions by the linker so
-you get a multiple-definition error if the same
-variable is defined in more than one compilation unit.
-Compiling with @option{-fno-common} is useful on targets for which
-it provides better performance, or if you wish to verify that the
-program will work on other systems that always treat uninitialized
-variable definitions this way.
+definition. This behavior does not conform to ISO C, is inconsistent with C++,
+and on many targets implies a speed and code size penalty on global variable
+references. It is mainly useful to enable legacy code to link without errors.
@item -fno-ident
@opindex fno-ident
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 057b5d6..8aad0e4 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,21 @@
+2019-11-20 Wilco Dijkstra <wdijkstr@arm.com>
+
+ PR85678
+ * g++.dg/lto/odr-6_1.c: Add -fcommon.
+ * gcc.dg/alias-15.c: Likewise.
+ * gcc.dg/fdata-sections-1.c: Likewise.
+ * gcc.dg/ipa/pr77653.c: Likewise.
+ * gcc.dg/lto/20090729_0.c: Likewise.
+ * gcc.dg/lto/20111207-1_0.c: Likewise.
+ * gcc.dg/lto/c-compatible-types-1_0.c: Likewise.
+ * gcc.dg/lto/pr55525_0.c: Likewise.
+ * gcc.dg/lto/pr88077_0.c: Use long to avoid alignment warning.
+ * gcc.dg/lto/pr88077_1.c: Add -fcommon.
+ * gcc.target/aarch64/sve/peel_ind_1.c: Allow ANCHOR0.
+ * gcc.target/aarch64/sve/peel_ind_2.c: Likewise.
+ * gcc.target/aarch64/sve/peel_ind_3.c: Likewise.
+ * gcc.target/i386/volatile-bitfields-2.c: Allow movl or movq.
+
2019-11-20 Richard Biener <rguenther@suse.de>
* gcc.dg/vect/bb-slp-42.c: Adjust.
diff --git a/gcc/testsuite/g++.dg/lto/odr-6_1.c b/gcc/testsuite/g++.dg/lto/odr-6_1.c
index ee4bff4..8328bf5 100644
--- a/gcc/testsuite/g++.dg/lto/odr-6_1.c
+++ b/gcc/testsuite/g++.dg/lto/odr-6_1.c
@@ -1,3 +1,4 @@
+/* { dg-options {-fcommon} } */
struct {} admbaserest_; // { dg-lto-message "type of " 2 }
diff --git a/gcc/testsuite/gcc.dg/alias-15.c b/gcc/testsuite/gcc.dg/alias-15.c
index 0a8e69b..304ad1f 100644
--- a/gcc/testsuite/gcc.dg/alias-15.c
+++ b/gcc/testsuite/gcc.dg/alias-15.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-additional-options "-O2 -fdump-ipa-cgraph" } */
+/* { dg-additional-options "-O2 -fcommon -fdump-ipa-cgraph" } */
/* RTL-level CSE shouldn't introduce LCO (for the string) into varpool */
char *p;
diff --git a/gcc/testsuite/gcc.dg/fdata-sections-1.c b/gcc/testsuite/gcc.dg/fdata-sections-1.c
index e8a6639..de5ddfc 100644
--- a/gcc/testsuite/gcc.dg/fdata-sections-1.c
+++ b/gcc/testsuite/gcc.dg/fdata-sections-1.c
@@ -2,7 +2,7 @@
/* Origin: Jonathan Larmour <jifl-bugzilla@jifvik.org> */
/* { dg-do compile { target *-*-linux* *-*-gnu* *-*-uclinux* } } */
-/* { dg-options "-fdata-sections" } */
+/* { dg-options "-fcommon -fdata-sections" } */
int x;
diff --git a/gcc/testsuite/gcc.dg/ipa/pr77653.c b/gcc/testsuite/gcc.dg/ipa/pr77653.c
index f0b2b22..2fddb7e 100644
--- a/gcc/testsuite/gcc.dg/ipa/pr77653.c
+++ b/gcc/testsuite/gcc.dg/ipa/pr77653.c
@@ -1,5 +1,5 @@
/* { dg-require-alias "" } */
-/* { dg-options "-O2 -fdump-ipa-icf-details" } */
+/* { dg-options "-O2 -fcommon -fdump-ipa-icf-details" } */
int a, b, c, d, e, h, i, j, k, l;
const int f;
diff --git a/gcc/testsuite/gcc.dg/lto/20090729_0.c b/gcc/testsuite/gcc.dg/lto/20090729_0.c
index 05ae74f..13fe62b 100644
--- a/gcc/testsuite/gcc.dg/lto/20090729_0.c
+++ b/gcc/testsuite/gcc.dg/lto/20090729_0.c
@@ -1,4 +1,4 @@
-/* { dg-lto-options "-w" } */
+/* { dg-lto-options { {-fcommon -w} {-fcommon} } } */
double i;
int j;
diff --git a/gcc/testsuite/gcc.dg/lto/20111207-1_0.c b/gcc/testsuite/gcc.dg/lto/20111207-1_0.c
index 4862640..5f11264 100644
--- a/gcc/testsuite/gcc.dg/lto/20111207-1_0.c
+++ b/gcc/testsuite/gcc.dg/lto/20111207-1_0.c
@@ -1,4 +1,4 @@
/* { dg-lto-do run } */
-/* { dg-lto-options { { -flto } } } */
+/* { dg-lto-options { { -flto -fcommon } {-fcommon} {-fcommon} {-fcommon} } } */
/* { dg-require-linker-plugin "" } */
/* { dg-extra-ld-options "-fuse-linker-plugin" } */
diff --git a/gcc/testsuite/gcc.dg/lto/c-compatible-types-1_0.c b/gcc/testsuite/gcc.dg/lto/c-compatible-types-1_0.c
index 376da00..45b0373 100644
--- a/gcc/testsuite/gcc.dg/lto/c-compatible-types-1_0.c
+++ b/gcc/testsuite/gcc.dg/lto/c-compatible-types-1_0.c
@@ -1,5 +1,5 @@
/* { dg-lto-do run } */
-/* { dg-lto-options "-O3" } */
+/* { dg-lto-options { {-O3 -fcommon} {-fcommon} } } */
/* By C standard Each enumerated type shall be compatible with char, a signed
integer, type, or an unsigned integer type. The choice of type is
diff --git a/gcc/testsuite/gcc.dg/lto/pr55525_0.c b/gcc/testsuite/gcc.dg/lto/pr55525_0.c
index 7faaf80..d8d16d1 100644
--- a/gcc/testsuite/gcc.dg/lto/pr55525_0.c
+++ b/gcc/testsuite/gcc.dg/lto/pr55525_0.c
@@ -1,5 +1,5 @@
/* { dg-lto-do link } */
-/* { dg-lto-options { { -flto -w } } } */
+/* { dg-lto-options { { -fcommon -flto -w } } } */
char s[sizeof (char *)];
int main(void)
diff --git a/gcc/testsuite/gcc.dg/lto/pr88077_0.c b/gcc/testsuite/gcc.dg/lto/pr88077_0.c
index 9e464b6..924fe9f 100644
--- a/gcc/testsuite/gcc.dg/lto/pr88077_0.c
+++ b/gcc/testsuite/gcc.dg/lto/pr88077_0.c
@@ -1,3 +1,3 @@
/* { dg-lto-do link } */
-int HeaderStr;
+long HeaderStr;
diff --git a/gcc/testsuite/gcc.dg/lto/pr88077_1.c b/gcc/testsuite/gcc.dg/lto/pr88077_1.c
index fd3de3e..43d783f 100644
--- a/gcc/testsuite/gcc.dg/lto/pr88077_1.c
+++ b/gcc/testsuite/gcc.dg/lto/pr88077_1.c
@@ -1,3 +1,5 @@
+/* { dg-options {-fcommon} } */
+
char HeaderStr[1];
int main()
diff --git a/gcc/testsuite/gcc.target/aarch64/sve/peel_ind_1.c b/gcc/testsuite/gcc.target/aarch64/sve/peel_ind_1.c
index 156d04a..e9afc20 100644
--- a/gcc/testsuite/gcc.target/aarch64/sve/peel_ind_1.c
+++ b/gcc/testsuite/gcc.target/aarch64/sve/peel_ind_1.c
@@ -21,7 +21,7 @@ foo (void)
}
/* We should operate on aligned vectors. */
-/* { dg-final { scan-assembler {\t(adrp|adr)\tx[0-9]+, x\n} } } */
+/* { dg-final { scan-assembler {\t(adrp|adr)\tx[0-9]+, (x|\.LANCHOR0)\n} } } */
/* We should use an induction that starts at -5, with only the last
7 elements of the first iteration being active. */
/* { dg-final { scan-assembler {\tindex\tz[0-9]+\.s, #-5, #5\n} } } */
diff --git a/gcc/testsuite/gcc.target/aarch64/sve/peel_ind_2.c b/gcc/testsuite/gcc.target/aarch64/sve/peel_ind_2.c
index df82d58..5fce021 100644
--- a/gcc/testsuite/gcc.target/aarch64/sve/peel_ind_2.c
+++ b/gcc/testsuite/gcc.target/aarch64/sve/peel_ind_2.c
@@ -17,7 +17,7 @@ foo (void)
}
/* We should operate on aligned vectors. */
-/* { dg-final { scan-assembler {\t(adrp|adr)\tx[0-9]+, x\n} } } */
+/* { dg-final { scan-assembler {\t(adrp|adr)\tx[0-9]+, (x|\.LANCHOR0)\n} } } */
/* We should unroll the loop three times. */
/* { dg-final { scan-assembler-times "\tst1w\t" 3 } } */
/* { dg-final { scan-assembler {\tptrue\t(p[0-9]+)\.s, vl7\n.*\teor\tp[0-7]\.b, (p[0-7])/z, (\1\.b, \2\.b|\2\.b, \1\.b)\n} } } */
diff --git a/gcc/testsuite/gcc.target/aarch64/sve/peel_ind_3.c b/gcc/testsuite/gcc.target/aarch64/sve/peel_ind_3.c
index 1707f02..15da5a7 100644
--- a/gcc/testsuite/gcc.target/aarch64/sve/peel_ind_3.c
+++ b/gcc/testsuite/gcc.target/aarch64/sve/peel_ind_3.c
@@ -17,5 +17,5 @@ foo (int start)
}
/* We should operate on aligned vectors. */
-/* { dg-final { scan-assembler {\t(adrp|adr)\tx[0-9]+, x\n} } } */
+/* { dg-final { scan-assembler {\t(adrp|adr)\tx[0-9]+, (x|\.LANCHOR0)\n} } } */
/* { dg-final { scan-assembler {\tubfx\t} } } */
diff --git a/gcc/testsuite/gcc.target/i386/volatile-bitfields-2.c b/gcc/testsuite/gcc.target/i386/volatile-bitfields-2.c
index 302625a..d843633 100644
--- a/gcc/testsuite/gcc.target/i386/volatile-bitfields-2.c
+++ b/gcc/testsuite/gcc.target/i386/volatile-bitfields-2.c
@@ -14,4 +14,4 @@ int foo ()
return bits.b;
}
-/* { dg-final { scan-assembler "movl.*bits" } } */
+/* { dg-final { scan-assembler "mov(q|l).*bits" } } */