[clang] [WIP][clang] Fix std::tm etc. mangling on Solaris (PR #106353)

Rainer Orth via cfe-commits cfe-commits at lists.llvm.org
Fri Sep 27 08:00:02 PDT 2024


rorth wrote:

Incorporate review comments.  However, I still have a mis-mangling of the code that triggered this patch.  I've now been able to create a reduced example:
```
namespace std {

  extern "C" {
    struct tm {
      int tm_sec;
    };
  }
}

using std::tm;

void
func (std::tm tm, const char *ccp, const char *ccp2)
{
}
```
On Linux/x86_64, `func` is mangled as `_Z4funcSt2tmPKcS1_` (`func(std::tm, char const*, char const*)`), as expected.  However, when targetting Solaris with this patch, I get instead `_Z4func2tmPKcS0_` (`func(tm, char const*, char const)`, i.e. the `*` has been dropped from the last arg; somehow the substitution is wrong) and I still haven't figured out what I'm doing wrong here.

Any suggestions?

https://github.com/llvm/llvm-project/pull/106353


More information about the cfe-commits mailing list