<html><body><p>Hi Hans,<br><br>and one more that would be good to see in 3.8; this one didn't show up in the test suites, but caused a miscompile of the swift compiler.<br><br><tt><font size="4">>Author: uweigand<br>>Date: Mon Feb 1 12:31:19 2016<br>>New Revision: 259381<br>><br>>URL: </font></tt><a href="http://llvm.org/viewvc/llvm-project?rev=259381&view=rev"><tt><u><font size="4" color="#0000FF">http://llvm.org/viewvc/llvm-project?rev=259381&view=rev</font></u></tt></a><tt><font size="4"><br>>Log:<br>>[SystemZ] Fix wrong-code generation for certain always-false conditions<br>><br>>We've found another bug in the code generation logic conditions for a<br>>certain class of always-false conditions, those of the form<br>> if ((a & 1) < 0)<br>><br>>These only reach the back end when compiling without optimization.<br>><br>>The bug was introduced by the choice of using TEST UNDER MASK<br>>to implement a check for<br>> if ((a & MASK) < VAL)<br>>as<br>> if ((a & MASK) == 0)<br>><br>>where VAL is less than the the lowest bit of MASK. This is correct<br>>in all cases except for VAL == 0, in which case the original<br>>condition is always false, but the replacement isn't.<br>><br>>Fixed by excluding that particular case.<br>><br>><br>>Added:<br>> llvm/trunk/test/CodeGen/SystemZ/int-cmp-53.ll<br>>Modified:<br>> llvm/trunk/lib/Target/SystemZ/SystemZISelLowering.cpp<br></font></tt><br><br>Mit freundlichen Gruessen / Best Regards<br><br>Ulrich Weigand<br><br>-- <br> Dr. Ulrich Weigand | Phone: +49-7031/16-3727<br> STSM, GNU/Linux compilers and toolchain<br> IBM Deutschland Research & Development GmbH<br> Vorsitzende des Aufsichtsrats: Martina Koederitz | Geschäftsführung: Dirk Wittkopp<br> Sitz der Gesellschaft: Böblingen | Registergericht: Amtsgericht Stuttgart, HRB 243294<BR>
</body></html>