Skip to content
Snippets Groups Projects
Commit 281699fb authored by Marek Polacek's avatar Marek Polacek
Browse files

c-family: char8_t and aliasing in C vs C++ [PR111884]

In the PR, Joseph says that in C char8_t is not a distinct type.  So
we should behave as if it can alias anything, like ordinary char.
In C, unsigned_char_type_node == char8_type_node, so with this patch
we return 0 instead of -1.  And the following comment says:

  /* The C standard guarantees that any object may be accessed via an
     lvalue that has narrow character type (except char8_t).  */
  if (t == char_type_node
      || t == signed_char_type_node
      || t == unsigned_char_type_node)
    return 0;

Which appears to be wrong, so I'm adjusting that as well.

	PR c/111884

gcc/c-family/ChangeLog:

	* c-common.cc (c_common_get_alias_set): Return -1 for char8_t only
	in C++.

gcc/testsuite/ChangeLog:

	* c-c++-common/alias-1.c: New test.
parent a663fe63
No related branches found
No related tags found
No related merge requests found
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment