re PR target/39558 (Bad interaction of decls named 'vector' and -maltivec vector support)

PR target/39558
	* macro.c (cpp_get_token): If macro_to_expand returns NULL
	and used some tokens, add CPP_PADDING before next token.

	* gcc.target/powerpc/altivec-29.c: New test.

From-SVN: r145297
This commit is contained in:
Jakub Jelinek 2009-03-30 17:00:52 +02:00 committed by Jakub Jelinek
parent 665733c121
commit a37a7b8a01
4 changed files with 62 additions and 4 deletions

View File

@ -2,6 +2,9 @@
* gfortran.dg/bind_c_usage_19.f90: New test.
PR target/39558
* gcc.target/powerpc/altivec-29.c: New test.
2009-03-30 Joseph Myers <joseph@codesourcery.com>
PR rtl-optimization/323

View File

@ -0,0 +1,23 @@
/* PR target/39558 */
/* { dg-do compile { target powerpc*-*-* } } */
/* { dg-require-effective-target powerpc_altivec_ok } */
/* { dg-options "-maltivec -save-temps" } */
#define ATTRIBUTE_UNUSED __attribute__((unused))
int *foo (int *vector)
{
return vector;
}
int *bar (int *vector ATTRIBUTE_UNUSED)
{
return vector;
}
int *baz (int *vector __attribute__((unused)))
{
return vector;
}
/* { dg-final { cleanup-saved-temps } } */

View File

@ -1,3 +1,9 @@
2009-03-30 Jakub Jelinek <jakub@redhat.com>
PR target/39558
* macro.c (cpp_get_token): If macro_to_expand returns NULL
and used some tokens, add CPP_PADDING before next token.
2009-03-29 Joseph Myers <joseph@codesourcery.com>
PR preprocessor/34695

View File

@ -1260,10 +1260,36 @@ cpp_get_token (cpp_reader *pfile)
/* Conditional macros require that a predicate be evaluated
first. */
if (((!(node->flags & NODE_CONDITIONAL))
|| (pfile->cb.macro_to_expand
&& (node = pfile->cb.macro_to_expand (pfile, result))))
&& (ret = enter_macro_context (pfile, node, result)))
if ((node->flags & NODE_CONDITIONAL) != 0)
{
if (pfile->cb.macro_to_expand)
{
bool whitespace_after;
const cpp_token *peek_tok = cpp_peek_token (pfile, 0);
whitespace_after = (peek_tok->type == CPP_PADDING
|| (peek_tok->flags & PREV_WHITE));
node = pfile->cb.macro_to_expand (pfile, result);
if (node)
ret = enter_macro_context (pfile, node, result);
else if (whitespace_after)
{
/* If macro_to_expand hook returned NULL and it
ate some tokens, see if we don't need to add
a padding token in between this and the
next token. */
peek_tok = cpp_peek_token (pfile, 0);
if (peek_tok->type != CPP_PADDING
&& (peek_tok->flags & PREV_WHITE) == 0)
_cpp_push_token_context (pfile, NULL,
padding_token (pfile,
peek_tok), 1);
}
}
}
else
ret = enter_macro_context (pfile, node, result);
if (ret)
{
if (pfile->state.in_directive || ret == 2)
continue;