<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class="">Yes<div class="">OP_X ..., implicit-def dead %X</div><div class="">... potentially more defs/uses of %X</div><div class="">OP_X ..., implicit-def dead %X</div><div class=""><br class=""></div><div class="">is good to merge. Also note that:</div><div class=""><br class=""></div><div class="">%X = DEF</div><div class="">OP_X ..., implicit-def dead %X</div><div class="">use %X</div><div class=""><br class=""></div><div class="">is not valid! (The def overrides the register value but the "dead" flag promises noone will read it, even though in this case another use comes below).</div><div class=""><br class=""></div><div class="">- Matthias<br class=""><div><br class=""><blockquote type="cite" class=""><div class="">On Oct 22, 2018, at 4:59 AM, Yuchao (Michael) <<a href="mailto:michael.yuchao@huawei.com" class="">michael.yuchao@huawei.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div class="WordSection1" style="page: WordSection1; caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;"><div style="margin: 0cm 0cm 0.0001pt; font-size: 12pt; font-family: 宋体;" class=""><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif; color: rgb(31, 73, 125);" class="">Hi<span class="Apple-converted-space"> </span></span><span lang="EN-US" style="font-size: 11pt; font-family: Calibri, sans-serif;" class="">mbraun<o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 12pt; font-family: 宋体;" class=""><span lang="EN-US" style="font-size: 11pt; font-family: Calibri, sans-serif;" class=""><o:p class=""> </o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 12pt; font-family: 宋体;" class=""><span lang="EN-US" style="font-size: 11pt; font-family: Calibri, sans-serif;" class="">Thanks for your information.<o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 12pt; font-family: 宋体;" class=""><span lang="EN-US" style="font-size: 11pt; font-family: Calibri, sans-serif;" class=""><o:p class=""> </o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 12pt; font-family: 宋体;" class=""><span lang="EN-US" style="font-size: 11pt; font-family: Calibri, sans-serif;" class="">What about following situation:<o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 12pt; font-family: 宋体;" class=""><span lang="EN-US" style="font-size: 11pt; font-family: Calibri, sans-serif;" class="">3)<o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 12pt; font-family: 宋体;" class=""><span lang="EN-US" style="font-size: 11pt; font-family: Calibri, sans-serif;" class="">OP_X …, implicit-def dead %X <o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 12pt; font-family: 宋体;" class=""><span lang="EN-US" style="font-size: 11pt; font-family: Calibri, sans-serif;" class="">with<o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 12pt; font-family: 宋体;" class=""><span lang="EN-US" style="font-size: 11pt; font-family: Calibri, sans-serif;" class="">OP_X …, implicit-def dead %X<o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 12pt; font-family: 宋体;" class=""><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif; color: rgb(31, 73, 125);" class=""><o:p class=""> </o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 12pt; font-family: 宋体;" class=""><span lang="EN-US" style="font-size: 11pt; font-family: Calibri, sans-serif;" class="">Between two instructions, there may be another instruction(not OP_X) which also def %X,<o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 12pt; font-family: 宋体;" class=""><span lang="EN-US" style="font-size: 11pt; font-family: Calibri, sans-serif;" class="">Is it  correct to do CSE in this situation?<o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 12pt; font-family: 宋体;" class=""><span lang="EN-US" style="font-size: 11pt; font-family: Calibri, sans-serif;" class=""><o:p class=""> </o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 12pt; font-family: 宋体;" class=""><span lang="EN-US" style="font-size: 11pt; font-family: Calibri, sans-serif;" class="">Best wishes<o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 12pt; font-family: 宋体;" class=""><span lang="EN-US" style="font-size: 11pt; font-family: Calibri, sans-serif;" class="">Michael<o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 12pt; font-family: 宋体;" class=""><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif; color: rgb(31, 73, 125);" class=""><o:p class=""> </o:p></span></div><div style="border-style: none none none solid; border-left-width: 1.5pt; border-left-color: blue; padding: 0cm 0cm 0cm 4pt;" class=""><div class=""><div style="border-style: solid none none; border-top-width: 1pt; border-top-color: rgb(225, 225, 225); padding: 3pt 0cm 0cm;" class=""><div style="margin: 0cm 0cm 0.0001pt; font-size: 12pt; font-family: 宋体;" class=""><b class=""><span lang="EN-US" style="font-size: 11pt; font-family: Calibri, sans-serif;" class="">From:</span></b><span lang="EN-US" style="font-size: 11pt; font-family: Calibri, sans-serif;" class=""><span class="Apple-converted-space"> </span><a href="mailto:mbraun@apple.com" class="">mbraun@apple.com</a> [<a href="mailto:mbraun@apple.com" class="">mailto:mbraun@apple.com</a>]<span class="Apple-converted-space"> </span><br class=""><b class="">Sent:</b><span class="Apple-converted-space"> </span>Monday, October 22, 2018 5:51 AM<br class=""><b class="">To:</b><span class="Apple-converted-space"> </span>Matthias Braun <<a href="mailto:mbraun@apple.com" class="">mbraun@apple.com</a>><br class=""><b class="">Cc:</b><span class="Apple-converted-space"> </span>Yuchao (Michael) <<a href="mailto:michael.yuchao@huawei.com" class="">michael.yuchao@huawei.com</a>>; <a href="mailto:llvm-dev@lists.llvm.org" class="">llvm-dev@lists.llvm.org</a>; sunqiang (I) <<a href="mailto:sunqiang13@huawei.com" class="">sunqiang13@huawei.com</a>><br class=""><b class="">Subject:</b><span class="Apple-converted-space"> </span>Re: [llvm-dev] Question about MachineCSE optimization<o:p class=""></o:p></span></div></div></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 12pt; font-family: 宋体;" class=""><span lang="EN-US" class=""><o:p class=""> </o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 12pt; font-family: 宋体;" class=""><span lang="EN-US" class=""><o:p class=""> </o:p></span></div><div class=""><div style="margin: 0cm 0cm 0.0001pt; font-size: 12pt; font-family: 宋体;" class=""><span lang="EN-US" class=""><br class=""><br class=""><o:p class=""></o:p></span></div><blockquote style="margin-top: 5pt; margin-bottom: 5pt;" class=""><div class=""><div style="margin: 0cm 0cm 0.0001pt; font-size: 12pt; font-family: 宋体;" class=""><span lang="EN-US" class="">On Oct 21, 2018, at 2:48 PM, mbraun via llvm-dev <<a href="mailto:llvm-dev@lists.llvm.org" style="color: purple; text-decoration: underline;" class="">llvm-dev@lists.llvm.org</a>> wrote:<o:p class=""></o:p></span></div></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 12pt; font-family: 宋体;" class=""><span lang="EN-US" class=""><o:p class=""> </o:p></span></div><div class=""><div class=""><div style="margin: 0cm 0cm 0.0001pt; font-size: 12pt; font-family: 宋体;" class=""><span lang="EN-US" class="">As far as I understand it (though I didn’t write the code so I may be missing something) this is about making sure liveness flags (kill, dead) are updated correctly when merging instruction. The situations to consider are probably:<o:p class=""></o:p></span></div><div class=""><div style="margin: 0cm 0cm 0.0001pt; font-size: 12pt; font-family: 宋体;" class=""><span lang="EN-US" class=""><o:p class=""> </o:p></span></div></div><div class=""><div style="margin: 0cm 0cm 0.0001pt; font-size: 12pt; font-family: 宋体;" class=""><span lang="EN-US" class="">1)<o:p class=""></o:p></span></div></div><div class=""><div style="margin: 0cm 0cm 0.0001pt; font-size: 12pt; font-family: 宋体;" class=""><span lang="EN-US" class="">OP_X …, implicit-def %X<o:p class=""></o:p></span></div></div><div class=""><div style="margin: 0cm 0cm 0.0001pt; font-size: 12pt; font-family: 宋体;" class=""><span lang="EN-US" class="">with<o:p class=""></o:p></span></div></div><div class=""><div style="margin: 0cm 0cm 0.0001pt; font-size: 12pt; font-family: 宋体;" class=""><span lang="EN-US" class="">OP_X …, implicit-def dead %X<o:p class=""></o:p></span></div></div><div class=""><div style="margin: 0cm 0cm 0.0001pt; font-size: 12pt; font-family: 宋体;" class=""><span lang="EN-US" class=""><o:p class=""> </o:p></span></div></div><div class=""><div style="margin: 0cm 0cm 0.0001pt; font-size: 12pt; font-family: 宋体;" class=""><span lang="EN-US" class="">The merged instruction probably should not have a dead flag set. The 2nd if appears to be about this situation:<o:p class=""></o:p></span></div></div><div class=""><div style="margin: 0cm 0cm 0.0001pt; font-size: 12pt; font-family: 宋体;" class=""><span lang="EN-US" class=""><o:p class=""> </o:p></span></div></div><div class=""><div style="margin: 0cm 0cm 0.0001pt; font-size: 12pt; font-family: 宋体;" class=""><span lang="EN-US" class=""><o:p class=""> </o:p></span></div></div><div class=""><div style="margin: 0cm 0cm 0.0001pt; font-size: 12pt; font-family: 宋体;" class=""><span lang="EN-US" class="">2)<o:p class=""></o:p></span></div></div><div class=""><div style="margin: 0cm 0cm 0.0001pt; font-size: 12pt; font-family: 宋体;" class=""><span lang="EN-US" class="">OP_X …, implicit-def dead %X<o:p class=""></o:p></span></div></div><div class=""><div style="margin: 0cm 0cm 0.0001pt; font-size: 12pt; font-family: 宋体;" class=""><span lang="EN-US" class="">Use killed %X<o:p class=""></o:p></span></div></div><div class=""><div style="margin: 0cm 0cm 0.0001pt; font-size: 12pt; font-family: 宋体;" class=""><span lang="EN-US" class="">…<o:p class=""></o:p></span></div></div><div class=""><div style="margin: 0cm 0cm 0.0001pt; font-size: 12pt; font-family: 宋体;" class=""><span lang="EN-US" class="">OP_X …, implicit-def %X    ; this gets merged with the previous OP_X<o:p class=""></o:p></span></div></div><div class=""><div style="margin: 0cm 0cm 0.0001pt; font-size: 12pt; font-family: 宋体;" class=""><span lang="EN-US" class="">Use %X<o:p class=""></o:p></span></div></div></div></div></blockquote><div class=""><div style="margin: 0cm 0cm 0.0001pt; font-size: 12pt; font-family: 宋体;" class=""><span lang="EN-US" class="">This example should of course read:<o:p class=""></o:p></span></div></div><div class=""><div style="margin: 0cm 0cm 0.0001pt; font-size: 12pt; font-family: 宋体;" class=""><span lang="EN-US" class=""><o:p class=""> </o:p></span></div></div><div class=""><div style="margin: 0cm 0cm 0.0001pt; font-size: 12pt; font-family: 宋体;" class=""><span lang="EN-US" class="">OP_X …, implicit-def %X<o:p class=""></o:p></span></div></div><div class=""><div style="margin: 0cm 0cm 0.0001pt; font-size: 12pt; font-family: 宋体;" class=""><span lang="EN-US" class="">Use killed %X<o:p class=""></o:p></span></div></div><div class=""><div style="margin: 0cm 0cm 0.0001pt; font-size: 12pt; font-family: 宋体;" class=""><span lang="EN-US" class="">…<o:p class=""></o:p></span></div></div><div class=""><div style="margin: 0cm 0cm 0.0001pt; font-size: 12pt; font-family: 宋体;" class=""><span lang="EN-US" class="">OP_X …, implicit-def %X    ; this gets merged with the previous OP_X<o:p class=""></o:p></span></div></div><div class=""><div style="margin: 0cm 0cm 0.0001pt; font-size: 12pt; font-family: 宋体;" class=""><span lang="EN-US" class="">Use %X<o:p class=""></o:p></span></div></div><div class=""><div style="margin: 0cm 0cm 0.0001pt; font-size: 12pt; font-family: 宋体;" class=""><span lang="EN-US" class=""><o:p class=""> </o:p></span></div></div><div class=""><div style="margin: 0cm 0cm 0.0001pt; font-size: 12pt; font-family: 宋体;" class=""><span lang="EN-US" class="">Once we merge the 2nd OP_X with the first one, we have to drop the `killed` flags on all users of %X between the first OP_X and the position where we had the 2nd OP_X before it was merged.<o:p class=""></o:p></span></div></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 12pt; font-family: 宋体;" class=""><span lang="EN-US" class=""><br class=""><br class=""><o:p class=""></o:p></span></div><blockquote style="margin-top: 5pt; margin-bottom: 5pt;" class=""><div class=""><div class=""><div class=""><div style="margin: 0cm 0cm 0.0001pt; font-size: 12pt; font-family: 宋体;" class=""><span lang="EN-US" class=""><o:p class=""> </o:p></span></div></div><div class=""><div style="margin: 0cm 0cm 0.0001pt; font-size: 12pt; font-family: 宋体;" class=""><span lang="EN-US" class="">Once we merge the 2nd OP_X with the first one, we have to drop the `killed` flags on the %X users.<o:p class=""></o:p></span></div></div><div class=""><div style="margin: 0cm 0cm 0.0001pt; font-size: 12pt; font-family: 宋体;" class=""><span lang="EN-US" class=""><o:p class=""> </o:p></span></div></div><div class=""><div style="margin: 0cm 0cm 0.0001pt; font-size: 12pt; font-family: 宋体;" class=""><span lang="EN-US" class=""><o:p class=""> </o:p></span></div></div><div class=""><div style="margin: 0cm 0cm 0.0001pt; font-size: 12pt; font-family: 宋体;" class=""><span lang="EN-US" class=""><o:p class=""> </o:p></span></div></div><div class=""><div style="margin: 0cm 0cm 0.0001pt; font-size: 12pt; font-family: 宋体;" class=""><span lang="EN-US" class="">Though admittedly I am at a loss right now why this is only performed for implicit operands and not for all operands…<o:p class=""></o:p></span></div></div><div class=""><div style="margin: 0cm 0cm 0.0001pt; font-size: 12pt; font-family: 宋体;" class=""><span lang="EN-US" class=""><o:p class=""> </o:p></span></div></div><div class=""><div style="margin: 0cm 0cm 0.0001pt; font-size: 12pt; font-family: 宋体;" class=""><span lang="EN-US" class="">- Matthias<o:p class=""></o:p></span></div></div><div class=""><div class=""><div class=""><div style="margin: 0cm 0cm 0.0001pt; font-size: 12pt; font-family: 宋体;" class=""><span lang="EN-US" class=""><br class=""><br class=""><o:p class=""></o:p></span></div><blockquote style="margin-top: 5pt; margin-bottom: 5pt;" class=""><div class=""><div style="margin: 0cm 0cm 0.0001pt; font-size: 12pt; font-family: 宋体;" class=""><span lang="EN-US" class="">On Oct 20, 2018, at 1:38 AM, Yuchao (Michael) via llvm-dev <<a href="mailto:llvm-dev@lists.llvm.org" style="color: purple; text-decoration: underline;" class="">llvm-dev@lists.llvm.org</a>> wrote:<o:p class=""></o:p></span></div></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 12pt; font-family: 宋体;" class=""><span lang="EN-US" class=""><o:p class=""> </o:p></span></div><div class=""><div style="margin: 0cm 0cm 0.0001pt; font-size: 12pt; font-family: 宋体; text-align: justify;" class=""><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif;" class="">Hi<span class="apple-converted-space"> </span><o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 12pt; font-family: 宋体; text-align: justify;" class=""><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif;" class=""> <o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 12pt; font-family: 宋体; text-align: justify;" class=""><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif;" class="">I am trying to fix a bug in MachineCSE and have one question about following code:<o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 12pt; font-family: 宋体; text-align: justify;" class=""><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif;" class=""> <o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 12pt; font-family: 宋体; text-align: justify;" class=""><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif;" class="">*********************************************<o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 12pt; font-family: 宋体; text-align: justify;" class=""><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif;" class="">// Go through implicit defs of CSMI and MI, if a def is not dead at MI,<o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 12pt; font-family: 宋体; text-align: justify;" class=""><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif;" class="">// we should make sure it is not dead at CSMI.<o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 12pt; font-family: 宋体; text-align: justify;" class=""><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif;" class="">if (MO.isImplicit() && !MO.isDead() && CSMI->getOperand(i).isDead())<o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 12pt; font-family: 宋体; text-align: justify;" class=""><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif;" class="">  ImplicitDefsToUpdate.push_back(i);<o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 12pt; font-family: 宋体; text-align: justify;" class=""><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif;" class=""> <o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 12pt; font-family: 宋体; text-align: justify;" class=""><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif;" class="">// Keep track of implicit defs of CSMI and MI, to clear possibly<o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 12pt; font-family: 宋体; text-align: justify;" class=""><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif;" class="">// made-redundant kill flags.<o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 12pt; font-family: 宋体; text-align: justify;" class=""><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif;" class="">if (MO.isImplicit() && !MO.isDead() && OldReg == NewReg)<o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 12pt; font-family: 宋体; text-align: justify;" class=""><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif;" class="">  ImplicitDefs.push_back(OldReg);<o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 12pt; font-family: 宋体; text-align: justify;" class=""><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif;" class=""> <o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 12pt; font-family: 宋体; text-align: justify;" class=""><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif;" class="">if (OldReg == NewReg) {<o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 12pt; font-family: 宋体; text-align: justify;" class=""><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif;" class="">  --NumDefs;<o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 12pt; font-family: 宋体; text-align: justify;" class=""><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif;" class="">  continue;<o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 12pt; font-family: 宋体; text-align: justify;" class=""><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif;" class="">}<o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 12pt; font-family: 宋体; text-align: justify;" class=""><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif;" class="">**********************************************<o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 12pt; font-family: 宋体; text-align: justify;" class=""><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif;" class=""> <o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 12pt; font-family: 宋体; text-align: justify;" class=""><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif;" class="">From Above source code, it seems that CSE does not handle instruction which<o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 12pt; font-family: 宋体; text-align: justify;" class=""><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif;" class="">have one operand that is ‘implicit+isDead+isDef’.<o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 12pt; font-family: 宋体; text-align: justify;" class=""><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif;" class=""> <o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 12pt; font-family: 宋体; text-align: justify;" class=""><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif;" class="">Base on my understanding, implicit dead register is mean clobbered, so it is not safe to<o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 12pt; font-family: 宋体; text-align: justify;" class=""><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif;" class="">do CSE. Is this right?<o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 12pt; font-family: 宋体; text-align: justify;" class=""><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif;" class=""> <o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 12pt; font-family: 宋体; text-align: justify;" class=""><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif;" class="">Best wishes<o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 12pt; font-family: 宋体; text-align: justify;" class=""><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif;" class="">Michael<o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 12pt; font-family: 宋体; text-align: justify;" class=""><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif;" class=""> <o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 12pt; font-family: 宋体;" class=""><span lang="EN-US" style="font-size: 9pt; font-family: Helvetica, sans-serif;" class="">_______________________________________________<br class="">LLVM Developers mailing list<br class=""></span><span lang="EN-US" class=""><a href="mailto:llvm-dev@lists.llvm.org" style="color: purple; text-decoration: underline;" class=""><span style="font-size: 9pt; font-family: Helvetica, sans-serif; color: rgb(149, 79, 114);" class="">llvm-dev@lists.llvm.org</span></a></span><span lang="EN-US" style="font-size: 9pt; font-family: Helvetica, sans-serif;" class=""><br class=""></span><span lang="EN-US" class=""><a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" style="color: purple; text-decoration: underline;" class=""><span style="font-size: 9pt; font-family: Helvetica, sans-serif; color: rgb(149, 79, 114);" class="">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</span></a><o:p class=""></o:p></span></div></div></blockquote></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 12pt; font-family: 宋体;" class=""><span lang="EN-US" class=""><o:p class=""> </o:p></span></div></div></div></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 12pt; font-family: 宋体;" class=""><span lang="EN-US" class="">_______________________________________________<br class="">LLVM Developers mailing list<br class=""><a href="mailto:llvm-dev@lists.llvm.org" style="color: purple; text-decoration: underline;" class="">llvm-dev@lists.llvm.org</a><br class=""><a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" style="color: purple; text-decoration: underline;" class="">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a></span></div></div></blockquote></div></div></div></div></blockquote></div><br class=""></div></body></html>