<div style="font-family: arial, helvetica, sans-serif; font-size: 10pt"><div style="color:rgb(34,34,34);font-family:arial,helvetica,sans-serif;font-size:13px;background-color:rgb(255,255,255)">Hi, </div><div style="color:rgb(34,34,34);font-family:arial,helvetica,sans-serif;font-size:13px;background-color:rgb(255,255,255)">
<br></div><div style="color:rgb(34,34,34);font-family:arial,helvetica,sans-serif;font-size:13px;background-color:rgb(255,255,255)">Here is a simple test on which (I swear!) clang used to perform load widening. </div><div style="color:rgb(34,34,34);font-family:arial,helvetica,sans-serif;font-size:13px;background-color:rgb(255,255,255)">
Not any more. What's happened? </div><div style="color:rgb(34,34,34);font-family:arial,helvetica,sans-serif;font-size:13px;background-color:rgb(255,255,255)"><br></div><div style="color:rgb(34,34,34);font-family:arial,helvetica,sans-serif;font-size:13px;background-color:rgb(255,255,255)">
<div>% cat lw.cc </div><div>struct S {</div><div>  int a;</div><div>  unsigned char x, y, z, w;</div><div>};</div><div><br></div><div>int foo(S *s) {</div><div>  if (s->x == 0 && s->y == 0) return 0;</div><div>
  return 1;</div><div>}</div></div><div style="color:rgb(34,34,34);font-family:arial,helvetica,sans-serif;font-size:13px;background-color:rgb(255,255,255)"><br></div><div style="color:rgb(34,34,34);font-family:arial,helvetica,sans-serif;font-size:13px;background-color:rgb(255,255,255)">
<div>% clang -O2 -S -o -  lw.cc | grep '(%'</div><div>        cmpb    $0, 4(%rdi)</div><div>        cmpb    $0, 5(%rdi)</div><div>% gcc -O2 -S -o -  lw.cc | grep '(%'</div><div>        cmpw    $0, 4(%rdi)</div>
<div>% </div><div><br></div></div><div style="color:rgb(34,34,34);font-family:arial,helvetica,sans-serif;font-size:13px;background-color:rgb(255,255,255)">--kcc </div></div>