2 Commits

Author SHA1 Message Date
Timm Bäder
0b34d7e9e2 [clang][Interp] Fix calling static operators
They don't have an instance pointer anywhere but get one passed
via their CallExpr.
2024-02-19 10:34:18 +01:00
faisal vali
5bdd5d064d Fix PR#62594 : static lambda call operator is not convertible to function pointer on win32
See issue https://github.com/llvm/llvm-project/issues/62594

This code does not work on win32:

  auto lstatic = []()  static  { return 0;  };
  int (*f2)(void) = lstatic;

Since a calling convention such as CC_X86ThisCall can rightly interfere with the implicit pointer to function conversion if erroneously marked on a static function, the fix entails checking the 'static' specifier on the lambda declarator prior to assigning it a calling convention of an non-static member (which pre-c++23 made sense).
2023-09-16 13:29:59 -05:00