diff options
author | Jakub Jelinek <jakub@redhat.com> | 2016-02-19 23:18:38 +0100 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2016-02-19 23:18:38 +0100 |
commit | f3609a89f45eef81bf76ee2d1aed4f6d50b5f8fd (patch) | |
tree | 17f67abcfcc86647caa91db5ba3871abb45013d9 | |
parent | 3a27b4db566c2cde8e043220f3d2c5401159b10e (diff) | |
download | gcc-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/ChangeLog | 8 | ||||
-rw-r--r-- | gcc/gcc.c | 32 | ||||
-rw-r--r-- | libgomp/ChangeLog | 5 | ||||
-rw-r--r-- | libgomp/testsuite/libgomp.c/pr69805.c | 9 |
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 @@ -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; +} |