]> granicus.if.org Git - llvm/commitdiff
[globalisel][tablegen] Try again to fix builds on old MSVC's after r300964
authorDaniel Sanders <daniel_l_sanders@apple.com>
Fri, 21 Apr 2017 12:51:43 +0000 (12:51 +0000)
committerDaniel Sanders <daniel_l_sanders@apple.com>
Fri, 21 Apr 2017 12:51:43 +0000 (12:51 +0000)
This should fix llvm-clang-x86_64-expensive-checks-win

I reproduced the error using the following code:
namespace llvm {
// Moving this out of the llvm namespace fixes the error.
template<unsigned NumBits> class PredicateBitsetImpl {};
}
namespace {
const unsigned MAX_SUBTARGET_PREDICATES = 11;
// This works on Clang but is broken on MSVC
//     using PredicateBitset = PredicateBitsetImpl<MAX_SUBTARGET_PREDICATES>;
// Some versions emit a syntax error here ("error C2061: syntax error: identifier
// 'PredicateBitsetImpl'") but others accept it and only emit the C3646 below.
//
// This works on Clang and MSVC
using PredicateBitset = llvm::PredicateBitsetImpl<MAX_SUBTARGET_PREDICATES>;

class Foo {
private:
    PredicateBitset A; // error C3646: 'A': unknown override specifier
};
}

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@300970 91177308-0d34-0410-b5e6-96231b3b80d8

utils/TableGen/GlobalISelEmitter.cpp

index 312b3a69c71c32d61992b9135cbe93b7e2a166e0..0c77167d4cc22c4bce354fc11d2e701e4a96afe9 100644 (file)
@@ -1750,7 +1750,7 @@ void GlobalISelEmitter::run(raw_ostream &OS) {
      << "const unsigned MAX_SUBTARGET_PREDICATES = " << SubtargetFeatures.size()
      << ";\n"
      << "using PredicateBitset = "
-        "PredicateBitsetImpl<MAX_SUBTARGET_PREDICATES>;\n"
+        "llvm::PredicateBitsetImpl<MAX_SUBTARGET_PREDICATES>;\n"
      << "#endif // ifdef GET_GLOBALISEL_PREDICATE_BITSET\n\n";
 
   OS << "#ifdef GET_GLOBALISEL_TEMPORARIES_DECL\n";