https://github.com/nikic commented:

This generally looks reasonable to me, with two main concerns:
 * Don't we need to handle callbr as well?
 * It seems like the semantics of `"rm"` input constraints get changed by the 
prepare pass without any indication in the IR.

Another issue I found is that this code:
```
unsigned test(unsigned v) {
  unsigned ret;
  __asm__("movl %1, %0" : "=rm"(ret) : "rm"(v));
  return ret;
}
```
Omits the inline asm completely at `-O0` now. I haven't looked deeply, but I 
suspect the reason is that the inline asm was originally marked `memory(read)`, 
which is no longer true after the transform.

https://github.com/llvm/llvm-project/pull/181973
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to