<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">