<html><head></head><body><div class="ydp7900826yahoo-style-wrap" style="font-family:Helvetica Neue, Helvetica, Arial, sans-serif;font-size:16px;"><div dir="ltr" data-setdir="false">Hi,</div><div dir="ltr" data-setdir="false"><br></div><div dir="ltr" data-setdir="false">I am facing a problem that MachineLICM is hoisting some MachineInstrs that are special for my target. I do not want to disable the optimization so I am looking for some solutions to avoid such hoisting. I have not seen anyone create subclass for MachineLICMBase either.</div><div dir="ltr" data-setdir="false"><br></div><div dir="ltr" data-setdir="false">Looking at the implementation in MachineLICMBase::ProcessMI(), I could not find a place to add target specific constraints (for example, defines to certain registers cannot be hoisted). There is no target-specific callbacks I can overwrite.</div><div dir="ltr" data-setdir="false"><br></div><div dir="ltr" data-setdir="false">One possible fix I can think of is to initialize PhysRegClobbers with the special registers. However, that will require a lot of changes to the common codebase, for example, I might need to add some helper functions in TargetRegisterInfo. I am not sure if that is a good idea.</div><div dir="ltr" data-setdir="false"><br></div><div dir="ltr" data-setdir="false">Any suggestions are highly appreciated. </div><div><br></div><div class="ydp7900826signature"><div style="font-family:Helvetica, Arial, sans-serif;font-size:16px;"><div dir="ltr" data-setdir="false">Many thanks,</div><div dir="ltr">PW</div></div></div></div></body></html>