<div dir="ltr">LGTM<div><br></div><div>I looked at this once before, but I thought MSVC only supported lookup through typedefs.  Turns out I was wrong.  MSVC doesn't accept your test case, but they do accept:</div><div>
<br></div><div><div>struct A {</div><div>  int a;</div><div>  int b;</div><div>};</div><div>int foo(A *a) {</div><div>  __asm  {</div><div>    mov eax, a</div><div>    mov eax, [eax]A.b</div><div>  }</div><div>}</div></div>
</div><div class="gmail_extra"><br><br><div class="gmail_quote">On Sat, May 3, 2014 at 5:26 PM, Nico Weber <span dir="ltr"><<a href="mailto:thakis@chromium.org" target="_blank">thakis@chromium.org</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi,<br>
<br>
while looking at something else, I learned that with -fasm-blocks,<br>
clang understands<br>
<br>
  typedef struct {<br>
    int a;<br>
    int b;<br>
  } A;<br>
  __asm mov eax, [eax].A.b<br>
<br>
It only supports typedefs though, not the same thing with `using A =<br>
struct { ... };`, and also not the direct `struct A { ... }`. This<br>
seems inconsistent, so the attached patch adds support for that. I<br>
don't know if adding such support is useful or desirable, but since I<br>
already wrote the 4 lines to make it work I figured I could at least<br>
send out the patch :-)<br>
<span class="HOEnZb"><font color="#888888"><br>
Nico<br>
</font></span><br>
ps: Fun fact: With s/struct/class/ in the snippet above, clang does<br>
print "error: 'b' is a private member of 'A'" (yay!) but does so<br>
without a source location (boo!, but understandable I suppose.)<br>
</blockquote></div><br></div>