Redefine __SSC_MARK to escape cpp string literal concatenation problem.
This patch is to refine D129826
The old definition #define __MOVEGPR(__r1, __r2) "mov {%%"__r1 ", %%"__r2 "|"__r2 ", "__r1"};" is not support in c++11.
So this patch conservatively re-implement it.
For example:
The old way will cause build c++ file test.cpp fail:
#include <immintrin.h>
int main()
{
__SSC_MARK(222);
return 0;
}clang test.cpp -std=c++11 -S
test.cpp:7:5: error: differing user-defined suffixes ('__r1' and '__r2') in string literal concatenation
__SSC_MARK(222);
I assume all these defines are for internal use and only __SSC_MARK should be public?
In which case should the bottom of the header have something like this: