<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 - False line number in a function definition with "void" parameter"
   href="https://bugs.llvm.org/show_bug.cgi?id=46417">46417</a>
          </td>
        </tr>

        <tr>
          <th>Summary</th>
          <td>False line number in a function definition with "void" parameter
          </td>
        </tr>

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

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

        <tr>
          <th>Hardware</th>
          <td>PC
          </td>
        </tr>

        <tr>
          <th>OS</th>
          <td>Linux
          </td>
        </tr>

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

        <tr>
          <th>Severity</th>
          <td>enhancement
          </td>
        </tr>

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

        <tr>
          <th>Component</th>
          <td>Frontend
          </td>
        </tr>

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

        <tr>
          <th>Reporter</th>
          <td>haoxintu@gmail.com
          </td>
        </tr>

        <tr>
          <th>CC</th>
          <td>llvm-bugs@lists.llvm.org, neeilans@live.com, richard-llvm@metafoo.co.uk
          </td>
        </tr></table>
      <p>
        <div>
        <pre>This code, bug.cc, clang might give the wrong line number in error messages.

$cat bug.cc
void foo ( 
void a,
double b,
int c,
void  d,
int e,
void f) 
{} 


$clang++ -c bug.cc
bug.cc:1:10: error: 'void' must be the first and only parameter if specified
void foo ( 
         ^
bug.cc:1:10: error: 'void' must be the first and only parameter if specified
bug.cc:1:10: error: 'void' must be the first and only parameter if specified
3 errors generated.

While in GCC
$g++ -c bug.cc
bug.cc:2:6: error: invalid use of type ‘void’ in parameter declaration
    2 | void a,
      | ~~~~~^
bug.cc:5:7: error: invalid use of type ‘void’ in parameter declaration
    5 | void  d,
      | ~~~~~~^
bug.cc:7:6: error: invalid use of type ‘void’ in parameter declaration
    7 | void f)
      | ~~~~~^

$clang++ --version
clang version 11.0.0 (<a href="https://github.com/llvm/llvm-project">https://github.com/llvm/llvm-project</a>
e6aba43cda848f4a8cfa5ce9f174b77def10e9df)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /home/haoxin/compilers/llvm-clang/llvm-project/build/bin

I guess Clang just gives the wrong line number in this case. If Clang just
emits the first error and then stops to parse the code intentionally, Clang
might have some duplicated error messages.

Any way, I think Clang has some diagnostic issues in this case.</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>