mirror of git://gcc.gnu.org/git/gcc.git
re PR c/61861 (Incorrect column number for -Wdiscarded-qualifiers)
PR c/61861 * macro.c (builtin_macro): Add location parameter. Set location of builtin macro to the expansion point. (enter_macro_context): Pass location to builtin_macro. * gcc.dg/pr61861.c: New test. From-SVN: r213102
This commit is contained in:
parent
17522262ea
commit
61eb99f6cc
|
|
@ -1,3 +1,8 @@
|
||||||
|
2014-07-27 Marek Polacek <polacek@redhat.com>
|
||||||
|
|
||||||
|
PR c/61861
|
||||||
|
* gcc.dg/pr61861.c: New test.
|
||||||
|
|
||||||
2014-07-27 Petr Murzin <petr.murzin@intel.com>
|
2014-07-27 Petr Murzin <petr.murzin@intel.com>
|
||||||
|
|
||||||
* gcc.target/i386/avx512f-vbroadcastf64x4-2.c: Fix the uninitialized
|
* gcc.target/i386/avx512f-vbroadcastf64x4-2.c: Fix the uninitialized
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,37 @@
|
||||||
|
/* { dg-do compile } */
|
||||||
|
/* { dg-prune-output "expected" } */
|
||||||
|
|
||||||
|
extern void foo (int);
|
||||||
|
extern void bar (int, char *);
|
||||||
|
|
||||||
|
#define F __FILE__ /* { dg-error "11:passing argument" } */
|
||||||
|
#define T __TIME__ /* { dg-error "11:passing argument" } */
|
||||||
|
#define D __DATE__ /* { dg-error "11:passing argument" } */
|
||||||
|
#define L __LINE__ /* { dg-error "11:passing argument" } */
|
||||||
|
|
||||||
|
#define F2 "foo" /* { dg-error "12:passing argument" } */
|
||||||
|
#define T2 "foo" /* { dg-error "12:passing argument" } */
|
||||||
|
#define D2 "foo" /* { dg-error "12:passing argument" } */
|
||||||
|
#define L2 42 /* { dg-error "12:passing argument" } */
|
||||||
|
|
||||||
|
void
|
||||||
|
f (void)
|
||||||
|
{
|
||||||
|
foo (__FILE__); /* { dg-error "8:passing argument" } */
|
||||||
|
foo (__BASE_FILE__); /* { dg-error "8:passing argument" } */
|
||||||
|
foo (__TIME__); /* { dg-error "8:passing argument" } */
|
||||||
|
foo (__DATE__); /* { dg-error "8:passing argument" } */
|
||||||
|
foo (__TIMESTAMP__); /* { dg-error "8:passing argument" } */
|
||||||
|
bar (1, __LINE__); /* { dg-error "11:passing argument" } */
|
||||||
|
bar (__COUNTER__, __COUNTER__); /* { dg-error "21:passing argument" } */
|
||||||
|
|
||||||
|
foo (F); /* { dg-message "8:in expansion of" } */
|
||||||
|
foo (T); /* { dg-message "8:in expansion of" } */
|
||||||
|
foo (D); /* { dg-message "8:in expansion of" } */
|
||||||
|
bar (1, L); /* { dg-message "11:in expansion of" } */
|
||||||
|
|
||||||
|
foo (F2); /* { dg-message "8:in expansion of" } */
|
||||||
|
foo (T2); /* { dg-message "8:in expansion of" } */
|
||||||
|
foo (D2); /* { dg-message "8:in expansion of" } */
|
||||||
|
bar (1, L2); /* { dg-message "11:in expansion of" } */
|
||||||
|
}
|
||||||
|
|
@ -1,3 +1,10 @@
|
||||||
|
2014-07-27 Marek Polacek <polacek@redhat.com>
|
||||||
|
|
||||||
|
PR c/61861
|
||||||
|
* macro.c (builtin_macro): Add location parameter. Set
|
||||||
|
location of builtin macro to the expansion point.
|
||||||
|
(enter_macro_context): Pass location to builtin_macro.
|
||||||
|
|
||||||
2014-07-16 Dodji Seketeli <dodji@redhat.com>
|
2014-07-16 Dodji Seketeli <dodji@redhat.com>
|
||||||
|
|
||||||
Support location tracking for built-in macro tokens
|
Support location tracking for built-in macro tokens
|
||||||
|
|
|
||||||
|
|
@ -84,7 +84,7 @@ struct macro_arg_token_iter
|
||||||
|
|
||||||
static int enter_macro_context (cpp_reader *, cpp_hashnode *,
|
static int enter_macro_context (cpp_reader *, cpp_hashnode *,
|
||||||
const cpp_token *, source_location);
|
const cpp_token *, source_location);
|
||||||
static int builtin_macro (cpp_reader *, cpp_hashnode *);
|
static int builtin_macro (cpp_reader *, cpp_hashnode *, source_location);
|
||||||
static void push_ptoken_context (cpp_reader *, cpp_hashnode *, _cpp_buff *,
|
static void push_ptoken_context (cpp_reader *, cpp_hashnode *, _cpp_buff *,
|
||||||
const cpp_token **, unsigned int);
|
const cpp_token **, unsigned int);
|
||||||
static void push_extended_tokens_context (cpp_reader *, cpp_hashnode *,
|
static void push_extended_tokens_context (cpp_reader *, cpp_hashnode *,
|
||||||
|
|
@ -399,9 +399,10 @@ _cpp_builtin_macro_text (cpp_reader *pfile, cpp_hashnode *node)
|
||||||
/* Convert builtin macros like __FILE__ to a token and push it on the
|
/* Convert builtin macros like __FILE__ to a token and push it on the
|
||||||
context stack. Also handles _Pragma, for which a new token may not
|
context stack. Also handles _Pragma, for which a new token may not
|
||||||
be created. Returns 1 if it generates a new token context, 0 to
|
be created. Returns 1 if it generates a new token context, 0 to
|
||||||
return the token to the caller. */
|
return the token to the caller. LOC is the location of the expansion
|
||||||
|
point of the macro. */
|
||||||
static int
|
static int
|
||||||
builtin_macro (cpp_reader *pfile, cpp_hashnode *node)
|
builtin_macro (cpp_reader *pfile, cpp_hashnode *node, source_location loc)
|
||||||
{
|
{
|
||||||
const uchar *buf;
|
const uchar *buf;
|
||||||
size_t len;
|
size_t len;
|
||||||
|
|
@ -429,6 +430,8 @@ builtin_macro (cpp_reader *pfile, cpp_hashnode *node)
|
||||||
/* Set pfile->cur_token as required by _cpp_lex_direct. */
|
/* Set pfile->cur_token as required by _cpp_lex_direct. */
|
||||||
pfile->cur_token = _cpp_temp_token (pfile);
|
pfile->cur_token = _cpp_temp_token (pfile);
|
||||||
cpp_token *token = _cpp_lex_direct (pfile);
|
cpp_token *token = _cpp_lex_direct (pfile);
|
||||||
|
/* We should point to the expansion point of the builtin macro. */
|
||||||
|
token->src_loc = loc;
|
||||||
if (pfile->context->tokens_kind == TOKENS_KIND_EXTENDED)
|
if (pfile->context->tokens_kind == TOKENS_KIND_EXTENDED)
|
||||||
{
|
{
|
||||||
/* We are tracking tokens resulting from macro expansion.
|
/* We are tracking tokens resulting from macro expansion.
|
||||||
|
|
@ -1212,7 +1215,7 @@ enter_macro_context (cpp_reader *pfile, cpp_hashnode *node,
|
||||||
|
|
||||||
pfile->about_to_expand_macro_p = false;
|
pfile->about_to_expand_macro_p = false;
|
||||||
/* Handle built-in macros and the _Pragma operator. */
|
/* Handle built-in macros and the _Pragma operator. */
|
||||||
return builtin_macro (pfile, node);
|
return builtin_macro (pfile, node, location);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* De-allocate the memory used by BUFF which is an array of instances
|
/* De-allocate the memory used by BUFF which is an array of instances
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue