<html>
    <head>
      <base href="https://bugs.llvm.org/">
    </head>
    <body><table border="1" cellspacing="0" cellpadding="8">
        <tr>
          <th>Bug ID</th>
          <td><a class="bz_bug_link 
          bz_status_NEW "
   title="NEW - _Atomic not removed from rvalue in controlling expression of _Generic."
   href="https://bugs.llvm.org/show_bug.cgi?id=40248">40248</a>
          </td>
        </tr>

        <tr>
          <th>Summary</th>
          <td>_Atomic not removed from rvalue in controlling expression of _Generic.
          </td>
        </tr>

        <tr>
          <th>Product</th>
          <td>clang
          </td>
        </tr>

        <tr>
          <th>Version</th>
          <td>trunk
          </td>
        </tr>

        <tr>
          <th>Hardware</th>
          <td>All
          </td>
        </tr>

        <tr>
          <th>OS</th>
          <td>All
          </td>
        </tr>

        <tr>
          <th>Status</th>
          <td>NEW
          </td>
        </tr>

        <tr>
          <th>Severity</th>
          <td>normal
          </td>
        </tr>

        <tr>
          <th>Priority</th>
          <td>P
          </td>
        </tr>

        <tr>
          <th>Component</th>
          <td>-New Bugs
          </td>
        </tr>

        <tr>
          <th>Assignee</th>
          <td>unassignedclangbugs@nondot.org
          </td>
        </tr>

        <tr>
          <th>Reporter</th>
          <td>anders.granlund.0@gmail.com
          </td>
        </tr>

        <tr>
          <th>CC</th>
          <td>htmldeveloper@gmail.com, llvm-bugs@lists.llvm.org, neeilans@live.com, richard-llvm@metafoo.co.uk
          </td>
        </tr></table>
      <p>
        <div>
        <pre>Test case (prog.c):

  _Atomic int f();

  int main()
  {
    _Generic(f(), int: 0);
  }

Compilation command line:

  clang prog.c -Wall -Wextra -std=c11 -pedantic-errors

Observed behaviour:

  The following error message was outputed:

     error: controlling expression type '_Atomic(int)' not compatible with any
            generic association type

Expected behaviour:

  No error message.

  The program is well-formed.

  See 6.5.1.1/2:

  "The type of the controlling expression is the type of the expression as if
it
  had undergone an lvalue conversion, array to pointer conversion, or function
  to pointer conversion"

  and 6.3.2/2:

  "If the lvalue has qualified type, the value has the unqualified version
   of the type of the lvalue; additionally, if the lvalue has atomic type, the
  value has the non-atomic version of the type of the lvalue; otherwise, the
  value has the type of the lvalue."

Note:

  GCC accepts the program without outputing any error message.</pre>
        </div>
      </p>


      <hr>
      <span>You are receiving this mail because:</span>

      <ul>
          <li>You are on the CC list for the bug.</li>
      </ul>
    </body>
</html>