aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2016-02-19 23:18:38 +0100
committerJakub Jelinek <jakub@gcc.gnu.org>2016-02-19 23:18:38 +0100
commitf3609a89f45eef81bf76ee2d1aed4f6d50b5f8fd (patch)
tree17f67abcfcc86647caa91db5ba3871abb45013d9
parent3a27b4db566c2cde8e043220f3d2c5401159b10e (diff)
downloadgcc-f3609a89f45eef81bf76ee2d1aed4f6d50b5f8fd.zip
gcc-f3609a89f45eef81bf76ee2d1aed4f6d50b5f8fd.tar.gz
gcc-f3609a89f45eef81bf76ee2d1aed4f6d50b5f8fd.tar.bz2
re PR driver/69805 (ICE in greater_than_spec_func, at gcc.c:9722)
PR driver/69805 * gcc.c (LINK_COMMAND_SPEC, GOMP_SELF_SPECS): Use :%* in %:gt() argument. (greater_than_spec_func): Adjust for expecting only numbers, if there are more than two numbers, compare the last two. * testsuite/libgomp.c/pr69805.c: New test. From-SVN: r233573
-rw-r--r--gcc/ChangeLog8
-rw-r--r--gcc/gcc.c32
-rw-r--r--libgomp/ChangeLog5
-rw-r--r--libgomp/testsuite/libgomp.c/pr69805.c9
4 files changed, 30 insertions, 24 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 4227941..c8548c0 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,11 @@
+2016-02-19 Jakub Jelinek <jakub@redhat.com>
+
+ PR driver/69805
+ * gcc.c (LINK_COMMAND_SPEC, GOMP_SELF_SPECS): Use
+ :%* in %:gt() argument.
+ (greater_than_spec_func): Adjust for expecting only numbers,
+ if there are more than two numbers, compare the last two.
+
2016-02-19 Jonathan Wakely <jwakely@redhat.com>
* doc/invoke.texi (C++ Dialect Options): Clarify interaction of
diff --git a/gcc/gcc.c b/gcc/gcc.c
index eaa4653..1af5920 100644
--- a/gcc/gcc.c
+++ b/gcc/gcc.c
@@ -1019,7 +1019,7 @@ proper position among the other output files. */
%{s} %{t} %{u*} %{z} %{Z} %{!nostdlib:%{!nostartfiles:%S}} \
%{static:} %{L*} %(mfwrap) %(link_libgcc) " \
VTABLE_VERIFICATION_SPEC " " SANITIZER_EARLY_SPEC " %o " CHKP_SPEC " \
- %{fopenacc|fopenmp|%:gt(%{ftree-parallelize-loops=*} 1):\
+ %{fopenacc|fopenmp|%:gt(%{ftree-parallelize-loops=*:%*} 1):\
%:include(libgomp.spec)%(link_gomp)}\
%{fcilkplus:%:include(libcilkrts.spec)%(link_cilkrts)}\
%{fgnu-tm:%:include(libitm.spec)%(link_itm)}\
@@ -1183,7 +1183,7 @@ static const char *const multilib_defaults_raw[] = MULTILIB_DEFAULTS;
for targets that use different start files and suchlike. */
#ifndef GOMP_SELF_SPECS
#define GOMP_SELF_SPECS \
- "%{fopenacc|fopenmp|%:gt(%{ftree-parallelize-loops=*} 1): " \
+ "%{fopenacc|fopenmp|%:gt(%{ftree-parallelize-loops=*:%*} 1): " \
"-pthread}"
#endif
@@ -9764,7 +9764,7 @@ replace_extension_spec_func (int argc, const char **argv)
return result;
}
-/* Returns "" if the n in ARGV[1] == -opt=<n> is greater than ARGV[2].
+/* Returns "" if ARGV[ARGC - 2] is greater than ARGV[ARGC-1].
Otherwise, return NULL. */
static const char *
@@ -9775,29 +9775,13 @@ greater_than_spec_func (int argc, const char **argv)
if (argc == 1)
return NULL;
- gcc_assert (argc == 3);
- gcc_assert (argv[0][0] == '-');
- gcc_assert (argv[0][1] == '\0');
+ gcc_assert (argc >= 2);
- /* Point p to <n> in in -opt=<n>. */
- const char *p = argv[1];
- while (true)
- {
- char c = *p;
- if (c == '\0')
- gcc_unreachable ();
-
- ++p;
-
- if (c == '=')
- break;
- }
-
- long arg = strtol (p, &converted, 10);
- gcc_assert (converted != p);
+ long arg = strtol (argv[argc - 2], &converted, 10);
+ gcc_assert (converted != argv[argc - 2]);
- long lim = strtol (argv[2], &converted, 10);
- gcc_assert (converted != argv[2]);
+ long lim = strtol (argv[argc - 1], &converted, 10);
+ gcc_assert (converted != argv[argc - 1]);
if (arg > lim)
return "";
diff --git a/libgomp/ChangeLog b/libgomp/ChangeLog
index 0b03e66..5dca721 100644
--- a/libgomp/ChangeLog
+++ b/libgomp/ChangeLog
@@ -1,3 +1,8 @@
+2016-02-19 Jakub Jelinek <jakub@redhat.com>
+
+ PR driver/69805
+ * testsuite/libgomp.c/pr69805.c: New test.
+
2016-02-16 Tom de Vries <tom@codesourcery.com>
PR lto/67709
diff --git a/libgomp/testsuite/libgomp.c/pr69805.c b/libgomp/testsuite/libgomp.c/pr69805.c
new file mode 100644
index 0000000..735d6d9
--- /dev/null
+++ b/libgomp/testsuite/libgomp.c/pr69805.c
@@ -0,0 +1,9 @@
+/* PR driver/69805 */
+/* { dg-do link } */
+/* { dg-options "-ftree-parallelize-loops=1 -O2 -ftree-parallelize-loops=2" } */
+
+int
+main ()
+{
+ return 0;
+}