<html>
    <head>
      <base href="http://llvm.org/bugs/" />
    </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 --- - Trunk/3.4 macro parsing issue (works in 3.3)"
   href="http://llvm.org/bugs/show_bug.cgi?id=17998">17998</a>
          </td>
        </tr>

        <tr>
          <th>Summary</th>
          <td>Trunk/3.4 macro parsing issue  (works in 3.3)
          </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>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>dl9pf@gmx.de
          </td>
        </tr>

        <tr>
          <th>CC</th>
          <td>llvmbugs@cs.uiuc.edu
          </td>
        </tr>

        <tr>
          <th>Classification</th>
          <td>Unclassified
          </td>
        </tr></table>
      <p>
        <div>
        <pre>The following errors happen only in trunk/3.4 whereas 3.3 is fine:

/home/dl9pf/llvmlinux/targets/x86_64/src/linux/arch/x86/crypto/aesni-intel_glue.c:1348:1:
error: variable has incomplete type
      'const struct x86cpu_device_id'
MODULE_DEVICE_TABLE(x86cpu, aesni_cpu_id);
^
/home/dl9pf/llvmlinux/targets/x86_64/src/linux/include/linux/module.h:145:3:
note: expanded from macro 'MODULE_DEVICE_TABLE'
  MODULE_GENERIC_TABLE(type##_device,name)
  ^
/home/dl9pf/llvmlinux/targets/x86_64/src/linux/include/linux/module.h:88:33:
note: expanded from macro 'MODULE_GENERIC_TABLE'
extern const struct gtype##_id  __mod_##gtype##_table           \
                                ^
<scratch space>:61:1: note: expanded from here
__mod_x86cpu_device_table
^


The code looks like:

[...]
#define MODULE_GENERIC_TABLE(gtype,name)                        \
extern const struct gtype##_id  __mod_##gtype##_table           \
  __attribute__ ((unused, alias(__stringify(name))))
#else  /* !MODULE */
#define MODULE_GENERIC_TABLE(gtype,name)
#endif

[...]
#define MODULE_DEVICE_TABLE(type,name)          \
  MODULE_GENERIC_TABLE(type##_device,name)



Attached is the preprocessed  arch/x86/crypto/aesni-intel_glue.i .

It compiles with 3.3 and barfs with 3.4/trunk.

clang-3.3 -S aesni-intel_glue.i 
vs.
clang-3.4 -S aesni-intel_glue.i</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>