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