aboutsummaryrefslogtreecommitdiff
path: root/libcpp/macro.c
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2016-03-21 16:41:13 +0100
committerJakub Jelinek <jakub@gcc.gnu.org>2016-03-21 16:41:13 +0100
commit6b36694859ea9f0951f329d55b60ecc70dba0c8b (patch)
treeb4a1dbbe62d9345281c8b712d8fa6dc58b6d2963 /libcpp/macro.c
parentc600d691f3b8151c76612984215983d852c3d903 (diff)
downloadgcc-6b36694859ea9f0951f329d55b60ecc70dba0c8b.zip
gcc-6b36694859ea9f0951f329d55b60ecc70dba0c8b.tar.gz
gcc-6b36694859ea9f0951f329d55b60ecc70dba0c8b.tar.bz2
re PR target/70296 (Incorrect handling of vector X; if X is function-like macro)
PR target/70296 * include/cpplib.h (cpp_fun_like_macro_p): New prototype. * macro.c (cpp_fun_like_macro_p): New function. * config/rs6000/rs6000-c.c (rs6000_macro_to_expand): If IDENT is function-like macro, peek following token(s) if it is followed by CPP_OPEN_PAREN token with optional padding in between, and if not, don't treat it like a macro. * gcc.target/powerpc/altivec-36.c: New test. From-SVN: r234371
Diffstat (limited to 'libcpp/macro.c')
-rw-r--r--libcpp/macro.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/libcpp/macro.c b/libcpp/macro.c
index cfb09ce..759fbe7 100644
--- a/libcpp/macro.c
+++ b/libcpp/macro.c
@@ -3301,6 +3301,15 @@ check_trad_stringification (cpp_reader *pfile, const cpp_macro *macro,
}
}
+/* Returns true of NODE is a function-like macro. */
+bool
+cpp_fun_like_macro_p (cpp_hashnode *node)
+{
+ return (node->type == NT_MACRO
+ && (node->flags & (NODE_BUILTIN | NODE_MACRO_ARG)) == 0
+ && node->value.macro->fun_like);
+}
+
/* Returns the name, arguments and expansion of a macro, in a format
suitable to be read back in again, and therefore also for DWARF 2
debugging info. e.g. "PASTE(X, Y) X ## Y", or "MACNAME EXPANSION".