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:
parent
665733c121
commit
a37a7b8a01
@ -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
|
||||
|
23
gcc/testsuite/gcc.target/powerpc/altivec-29.c
Normal file
23
gcc/testsuite/gcc.target/powerpc/altivec-29.c
Normal 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 } } */
|
@ -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
|
||||
|
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user