mirror of git://gcc.gnu.org/git/gcc.git
parser.c (set_and_check_decl_spec_loc): Use rich_location::add_range in error message about __thread and thread_local...
/cp 2018-07-02 Paolo Carlini <paolo.carlini@oracle.com> * parser.c (set_and_check_decl_spec_loc): Use rich_location::add_range in error message about __thread and thread_local at the same time. /testsuite 2018-07-02 Paolo Carlini <paolo.carlini@oracle.com> * g++.dg/diagnostic/thread-thread_local.C: New. From-SVN: r262321
This commit is contained in:
parent
ee896276f6
commit
a5eae716f6
|
|
@ -1,3 +1,8 @@
|
|||
2018-07-02 Paolo Carlini <paolo.carlini@oracle.com>
|
||||
|
||||
* parser.c (set_and_check_decl_spec_loc): Use rich_location::add_range
|
||||
in error message about __thread and thread_local at the same time.
|
||||
|
||||
2018-06-29 Marek Polacek <polacek@redhat.com>
|
||||
|
||||
PR c++/86184
|
||||
|
|
|
|||
|
|
@ -28377,12 +28377,15 @@ set_and_check_decl_spec_loc (cp_decl_specifier_seq *decl_specs,
|
|||
else if (ds == ds_thread)
|
||||
{
|
||||
bool gnu = token_is__thread (token);
|
||||
gcc_rich_location richloc (location);
|
||||
if (gnu != decl_specs->gnu_thread_keyword_p)
|
||||
error_at (location,
|
||||
{
|
||||
richloc.add_range (decl_specs->locations[ds_thread], false);
|
||||
error_at (&richloc,
|
||||
"both %<__thread%> and %<thread_local%> specified");
|
||||
}
|
||||
else
|
||||
{
|
||||
gcc_rich_location richloc (location);
|
||||
richloc.add_fixit_remove ();
|
||||
error_at (&richloc, "duplicate %qD", token->u.value);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,3 +1,7 @@
|
|||
2018-07-02 Paolo Carlini <paolo.carlini@oracle.com>
|
||||
|
||||
* g++.dg/diagnostic/thread-thread_local.C: New.
|
||||
|
||||
2018-07-02 Martin Liska <mliska@suse.cz>
|
||||
|
||||
PR testsuite/86366
|
||||
|
|
|
|||
|
|
@ -0,0 +1,13 @@
|
|||
// { dg-options "-fdiagnostics-show-caret" }
|
||||
// { dg-do compile { target c++11 } }
|
||||
|
||||
thread_local __thread int a; // { dg-error "14:both .__thread. and .thread_local. specified" }
|
||||
/* { dg-begin-multiline-output "" }
|
||||
thread_local __thread int a;
|
||||
~~~~~~~~~~~~ ^~~~~~~~
|
||||
{ dg-end-multiline-output "" } */
|
||||
__thread thread_local int b; // { dg-error "10:both .__thread. and .thread_local. specified" }
|
||||
/* { dg-begin-multiline-output "" }
|
||||
__thread thread_local int b;
|
||||
~~~~~~~~ ^~~~~~~~~~~~
|
||||
{ dg-end-multiline-output "" } */
|
||||
Loading…
Reference in New Issue