<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 - Why is there a difference between void and int ?"
   href="https://bugs.llvm.org/show_bug.cgi?id=44273">44273</a>
          </td>
        </tr>

        <tr>
          <th>Summary</th>
          <td>Why is there a difference between void and int ?
          </td>
        </tr>

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

        <tr>
          <th>Version</th>
          <td>9.0
          </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>normal
          </td>
        </tr>

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

        <tr>
          <th>Component</th>
          <td>C
          </td>
        </tr>

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

        <tr>
          <th>Reporter</th>
          <td>1059252359@qq.com
          </td>
        </tr>

        <tr>
          <th>CC</th>
          <td>blitzrakete@gmail.com, dgregor@apple.com, erik.pilkington@gmail.com, llvm-bugs@lists.llvm.org, richard-llvm@metafoo.co.uk
          </td>
        </tr></table>
      <p>
        <div>
        <pre>Hi, when define a pointer NISLParameter0 without assigning it a value, Clang
will behave inconsistently depending on the return value of the main function.
When main function’s return type is “void”, clang will not allocate an address
for it. But if main function’s return type is “int”, clang will allocate an
address successfully.Although void main is not recommended by ISO C standard,
they should also be consistent.

TestCase:
#include<stdio.h>
#include<string.h>
void function(void *d)
{
    if (d == NULL)
        printf("%d\n",111);
}
int main()
{
    int *NISLParameter0;
    function(NISLParameter0);
    return 0;
}


Command:
./clang/version9.0/bin/clang testcase.c


Output:
111 (main function’s return type is void)
    (no output when main function’s return type is int)

Expected output:
The same between void and int return types. 

Is this right for clang? Looking forward to your reply.</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>