<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/55188>55188</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
String Literal Operator Not Working On Compiler's Pre-defined Macro
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
DKingAlpha
</td>
</tr>
</table>
<pre>
### Code to Reproduce:
```
#include <cstddef>
#include <stdio.h>
const char* operator "" _ret_self(const char* s, size_t size) { return s; }
int main() {
#define USER_MACRO "user macro ok"
#define PREDEFINED_MACRO __FUNCTION__
printf("%s\n", USER_MACRO ""_ret_self); // OK
printf("%s\n", PREDEFINED_MACRO ""_ret_self); // error
return 0;
}
```
### Expected Behaviour:
literal operator / string literal operator template works on compiler pre-defined macros.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyNU9tu2zAM_Rr5hWjgyFEuD35InAQouiZFumKPhizLsVbFMiS53fb1oy-5bO2ACYRlmuTh4cWZyX_GhEa9QGJyCd7AQdbW5I2QJFqScE3CJZmGg_QqjVQldIPuJEqE83kuCxJtPrOiUZlRebV2T2Eq50GU3BK6BFNLy72xQChFgdRKnzqpC0Lnf3o6QhNw6pdMfXcRugAyWwEGNLZCc7RCfX2bSlUeTlxViDV4998BD1JF5qqS8PK8OaSPy-Swh8tBKo2TFqOFNWBeW3afhD4dNuvN9n63WV8B0nT7sku-3u93aXqNqS2SKToiWCdzhCVV95rc5u-bcNODRVvVldQWBfYP_wX7gdu_wAdYaa2xV-ShrSH6DC299PavjThPflilzY9aCi9zWMmSvynT2MsuaeVx2vp26FtwHms4wgebl6dacy_h3dhXB6YCYU610jiV2sq7fgJ5PyE3CvI4yhfRggdeeS3j5x71y4C6P6PujIdvCNga9xXufQ9J6MzB0w3sYwsbNFbHpfe1a0vo2nRUvmyyEVJBReu383WH_813rBtV5VwjcVu3jI3n86CMp5SJYkKLvChktKDzKZuMpyIMx5wLljERaJ5J7WLCVjigSr5DB9HOi60DFdOQ0nBCF-GczRgdFXw2K7Iio1PGc8GnZBJK3HI9anmMjD0GNu4oZc3RoVEr593VyJ1Tx0rKLh3i88aXxsbrB2zJUtclD7rsccf-N_79OzY">