Work around build failure due to GCC 4.8.1 bug. We don't completely understand

the details of the bug, but avoiding overloading llvm::cast with another
function template sidesteps it.

See gcc.gnu.org/PR58022 for details of the bug, and llvm.org/PR26362 for more
backgound on how it manifested in Clang. Patch by Igor Sugak!

llvm-svn: 259598
This commit is contained in:
Richard Smith 2016-02-02 23:11:49 +00:00
parent b6940115a8
commit ad609d56d2
1 changed files with 7 additions and 15 deletions

View File

@ -104,23 +104,15 @@ public:
};
}
// Present a minimal LLVM-like casting interface.
template <class U> inline U cast(CodeGen::Address addr) {
return U::castImpl(addr);
}
template <class U> inline bool isa(CodeGen::Address addr) {
return U::isaImpl(addr);
}
namespace llvm {
// Present a minimal LLVM-like casting interface.
template <class U> inline U cast(clang::CodeGen::Address addr) {
return U::castImpl(addr);
}
template <class U> inline bool isa(clang::CodeGen::Address addr) {
return U::isaImpl(addr);
}
}
namespace clang {
// Make our custom isa and cast available in namespace clang, to mirror
// what we do for LLVM's versions in Basic/LLVM.h.
using llvm::isa;
using llvm::cast;
}
#endif