AaronBallman wrote:

> > > As to why we want to upstream this, any users of the upstream compiler 
> > > would need this change to work on z/OS.
> > 
> > 
> > Any user, really? As best I can tell, this is only for some very specific 
> > situations, not for inline assembly in general? (I'm not familiar with the 
> > code patterns you're having to deal with; if this is needed by ~100% of 
> > folks, that's very different from if it's needed by ~1% of folks.)
> 
> Full inline assembly support on z/OS depends on this change. We also plan to 
> upstream [#pragma 
> map](https://www.ibm.com/docs/en/open-xl-c-cpp-zos/2.2.0?topic=sp-pragma-map) 
> after this, which is functionally equivalent to asm labels and is used 
> extensively in the z/OS system headers. Both asm strings and #pragma map 
> symbol names frequently contain EBCDIC escape sequences to handle variant 
> characters across EBCDIC code pages, so both must follow the same string 
> parsing and encoding rules.

Thank you for the context! If this is required for supporting system header 
code, I think we'll probably have to hold our nose on it. However, one of the 
test cases still worries me greatly:
```
constexpr string_view getfoo() { return "\174foo"; }

void function()
{
  asm((getfoo()));
}
```
If I understand correctly, this is demonstrating the problem I raised before 
where the literal encoding depends on context. e.g., the call to `getfoo()` 
within `asm` will be using a different encoding than calling `getfoo()` in 
another context, or am I wrong about that?

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

Reply via email to