ro added a comment.

In D133405#3776096 <https://reviews.llvm.org/D133405#3776096>, @MaskRay wrote:

> It's not a compiler's job to define this workaround...

Yes and no: GCC successfully does it via its `fixincludes` mechanism.  
Unfortunately, LLVM doesn't provide something similar and doesn't even known 
about the GCC `include-fixed` directory, which could be used as a fallback.  
Sometimes OS headers **are** broken and remain so for a long time.  While one 
can throw hands up in disgust, this doesn't make the problem go away.  If I own 
the machine, I can patch/hack system headers as need be, but that's not an 
option on shared systems where I have to live with what's installed.

> If a platform want to provide a built-in macro, you can use 
> https://clang.llvm.org/docs/UsersManual.html#configuration-files and add 
> `-D__NO_INLINE__` there.
> To avoid magic behaviors, `${triple}-clang` loads `${triple}.cfg` while 
> `clang` doesn't (see 
> https://discourse.llvm.org/t/configuration-files/42529/24)

That's nice in some controlled circumstances where I can control e.g. the 
`clang` command used, but doesn't help in others like a release build with 
`test-release.sh` where I don't have that control.  I fully understand Jörg's 
argument in that thread that implicit changes from some hidden config 
file/environment variable are a maintenance nightmare and to be avoided at all 
cost.

> See also 
> https://discourse.llvm.org/t/rfc-adding-a-default-file-location-to-config-file-support/63606
>  (I am somewhat concerned with `clang` loading a config).
> But if you make `clang` a shell script that executes 
> `sparc64-pc-linux-gnu-clang` or the like, I think it should be fine.

Again, that would be ok for an installed `clang`, but while doing a release 
build, such a script wouldn't be used at all.

On top of all that, defining `__NO_INLINE__` globally to hack around a header 
bug is way too large a hammer: it has more effects than it should, which is why 
I called it a hack to allow making some progess at all, nothing to be included 
upstream.  I merely wanted to document what I'd changed in the Linux/sparc64 
release builds rather than only vaguely referring to my hack.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D133405/new/

https://reviews.llvm.org/D133405

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to