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: