diff options
author | Bill Schmidt <wschmidt@linux.ibm.com> | 2019-06-04 21:52:32 +0000 |
---|---|---|
committer | William Schmidt <wschmidt@gcc.gnu.org> | 2019-06-04 21:52:32 +0000 |
commit | e756e900e911fdbc57cd76d6c12d20a9b1892e55 (patch) | |
tree | bfa80a05ad210655b6a8beb1164fafb38cb292a5 | |
parent | 4a28e1f11335c771e215d0cdbae630828c0acaf2 (diff) | |
download | gcc-e756e900e911fdbc57cd76d6c12d20a9b1892e55.zip gcc-e756e900e911fdbc57cd76d6c12d20a9b1892e55.tar.gz gcc-e756e900e911fdbc57cd76d6c12d20a9b1892e55.tar.bz2 |
re PR target/78263 (Compile failure with AltiVec library on PPC64le and -std=c++11 flag)
[gcc]
2019-06-04 Bill Schmidt <wschmidt@linux.ibm.com>
PR target/78263
* config/rs6000/altivec.h: Don't #define vector, pixel, bool for
C++ with strict ANSI requirements.
[gcc/testsuite]
2019-06-04 Bill Schmidt <wschmidt@linux.ibm.com>
PR target/78263
* g++.target/powerpc: New directory.
* g++.target/powerpc/powerpc.exp: New test driver.
* g++.target/powerpc/undef-bool-3.C: New.
From-SVN: r271927
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/config/rs6000/altivec.h | 8 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/testsuite/g++.target/powerpc/powerpc.exp | 44 | ||||
-rw-r--r-- | gcc/testsuite/g++.target/powerpc/undef-bool-3.C | 13 |
5 files changed, 75 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 30febc6..8b3fe98 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2019-06-04 Bill Schmidt <wschmidt@linux.ibm.com> + + PR target/78263 + * config/rs6000/altivec.h: Don't #define vector, pixel, bool for + C++ with strict ANSI requirements. + 2019-06-04 Marc Glisse <marc.glisse@inria.fr> * tree-ssa-loop-niter.c (number_of_iterations_ne): Skip diff --git a/gcc/config/rs6000/altivec.h b/gcc/config/rs6000/altivec.h index d66ae7c..dafc76a 100644 --- a/gcc/config/rs6000/altivec.h +++ b/gcc/config/rs6000/altivec.h @@ -37,10 +37,12 @@ /* If __APPLE_ALTIVEC__ is defined, the compiler supports 'vector', 'pixel' and 'bool' as context-sensitive AltiVec keywords (in non-AltiVec contexts, they revert to their original meanings, - if any), so we do not need to define them as macros. */ + if any), so we do not need to define them as macros. Also, + avoid defining them as macros for C++ with strict ANSI, as + this is not compatible. */ -#if !defined(__APPLE_ALTIVEC__) -/* You are allowed to undef these for C++ compatibility. */ +#if !defined(__APPLE_ALTIVEC__) \ + && (!defined(__STRICT_ANSI__) || !defined(__cplusplus)) #define vector __vector #define pixel __pixel #define bool __bool diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 5978f79..7bcc461 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,10 @@ +2019-06-04 Bill Schmidt <wschmidt@linux.ibm.com> + + PR target/78263 + * g++.target/powerpc: New directory. + * g++.target/powerpc/powerpc.exp: New test driver. + * g++.target/powerpc/undef-bool-3.C: New. + 2019-06-04 Jakub Jelinek <jakub@redhat.com> * c-c++-common/gomp/lastprivate-conditional-2.c (foo): Don't expect diff --git a/gcc/testsuite/g++.target/powerpc/powerpc.exp b/gcc/testsuite/g++.target/powerpc/powerpc.exp new file mode 100644 index 0000000..4e7ea33 --- /dev/null +++ b/gcc/testsuite/g++.target/powerpc/powerpc.exp @@ -0,0 +1,44 @@ +# Specific regression driver for PowerPC. +# Copyright (C) 2019 Free Software Foundation, Inc. +# +# This file is part of GCC. +# +# GCC is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3, or (at your option) +# any later version. +# +# GCC is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GCC; see the file COPYING3. If not see +# <http://www.gnu.org/licenses/>. */ + +# GCC testsuite that uses the `dg.exp' driver. + +# Exit immediately if this isn't a PowerPC target. +if {![istarget powerpc*-*-*] } then { + return +} + +# Load support procs. +load_lib g++-dg.exp + +global DEFAULT_CXXFLAGS +if ![info exists DEFAULT_CXXFLAGS] then { + set DEFAULT_CXXFLAGS " -pedantic-errors" +} + +# Initialize `dg'. +dg-init + +# Main loop. +dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.C]] \ + "" $DEFAULT_CXXFLAGS + +# All done. +dg-finish + diff --git a/gcc/testsuite/g++.target/powerpc/undef-bool-3.C b/gcc/testsuite/g++.target/powerpc/undef-bool-3.C new file mode 100644 index 0000000..27f3da5 --- /dev/null +++ b/gcc/testsuite/g++.target/powerpc/undef-bool-3.C @@ -0,0 +1,13 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -std=c++11" } */ + +/* Test to ensure that "bool" is not #define'd in altivec.h for C++ when + we require strict ANSI. We should compile without errors. */ + +#include <altivec.h> + +bool foo (int x) +{ + return x == 2; +} + |