[PATCH] Allow _MSC_EXTENSIONS macro on non-Windows targets
David Majnemer
david.majnemer at gmail.com
Mon Mar 10 20:09:06 PDT 2014
Consider the following:
struct S {
static const int i = 42;
};
const int *use() { return &S::i; }
Compiling with `clang -cc1 -x c++ -S -o - -emit-llvm -triple i686-linux-gnu` does not produce a definition of `i`.
Compiling with `clang -cc1 -x c++ -S -o - -emit-llvm -triple i686-pc-win32` produces `i` defined as `@"\01?i at S@@2HB" = linkonce_odr constant i32 42, align 4`.
This matches MSVC's behavior: `?i at S@@2HB`
We won't define `_MSC_EXTENSIONS` unless we are targeting the MSVC ABI **and** enable the MSVC-specific keywords with `-fms-extensions`.
http://llvm-reviews.chandlerc.com/D3034
More information about the cfe-commits
mailing list