[PATCH] D74440: [mlir][SideEffects] Enable specifying side effects directly on the arguments/results of an operation.

River Riddle via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Fri Mar 6 19:18:44 PST 2020


rriddle added a comment.

In D74440#1910724 <https://reviews.llvm.org/D74440#1910724>, @NathanielMcVicar wrote:

> This appears to break the VisualStudio build for MSVC++ 14.16
>
>   E:\build_slave\mlir-x64-windows-ninja\llvm-project\llvm\include\llvm/Support/Casting.h(58): error C2664: 'bool mlir::SideEffects::Effect::Base<mlir::MemoryEffects::Allocate,mlir::MemoryEffects::Effect>::classof(const mlir::MemoryEffects::Effect *)': cannot convert argument 1 from 'const From *' to 'const mlir::MemoryEffects::Effect *'
>           with
>           [
>               From=mlir::SideEffects::Effect
>           ]
>   E:\build_slave\mlir-x64-windows-ninja\llvm-project\llvm\include\llvm/Support/Casting.h(58): note: Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
>   E:\build_slave\mlir-x64-windows-ninja\llvm-project\llvm\include\llvm/Support/Casting.h(57): note: while compiling class template member function 'bool llvm::isa_impl<To,From,void>::doit(const From &)'
>           with
>           [
>               To=mlir::MemoryEffects::Allocate,
>               From=mlir::SideEffects::Effect
>           ]
>   E:\build_slave\mlir-x64-windows-ninja\llvm-project\llvm\include\llvm/Support/Casting.h(105): note: see reference to function template instantiation 'bool llvm::isa_impl<To,From,void>::doit(const From &)' being compiled
>           with
>           [
>               To=mlir::MemoryEffects::Allocate,
>               From=mlir::SideEffects::Effect
>           ]
>   E:\build_slave\mlir-x64-windows-ninja\llvm-project\llvm\include\llvm/Support/Casting.h(105): note: see reference to class template instantiation 'llvm::isa_impl<To,From,void>' being compiled
>           with
>           [
>               To=mlir::MemoryEffects::Allocate,
>               From=mlir::SideEffects::Effect
>           ]
>   E:\build_slave\mlir-x64-windows-ninja\llvm-project\llvm\include\llvm/Support/Casting.h(103): note: while compiling class template member function 'bool llvm::isa_impl_cl<To,FromTy>::doit(const From *)'
>           with
>           [
>               To=mlir::MemoryEffects::Allocate,
>               FromTy=const mlir::SideEffects::Effect *,
>               From=mlir::SideEffects::Effect
>           ]
>   E:\build_slave\mlir-x64-windows-ninja\llvm-project\llvm\include\llvm/Support/Casting.h(131): note: see reference to function template instantiation 'bool llvm::isa_impl_cl<To,FromTy>::doit(const From *)' being compiled
>           with
>           [
>               To=mlir::MemoryEffects::Allocate,
>               FromTy=const mlir::SideEffects::Effect *,
>               From=mlir::SideEffects::Effect
>           ]
>   E:\build_slave\mlir-x64-windows-ninja\llvm-project\llvm\include\llvm/Support/Casting.h(131): note: see reference to class template instantiation 'llvm::isa_impl_cl<To,FromTy>' being compiled
>           with
>           [
>               To=mlir::MemoryEffects::Allocate,
>               FromTy=const mlir::SideEffects::Effect *
>           ]
>   E:\build_slave\mlir-x64-windows-ninja\llvm-project\llvm\include\llvm/Support/Casting.h(130): note: while compiling class template member function 'bool llvm::isa_impl_wrap<To,SimpleFrom,SimpleFrom>::doit(const FromTy &)'
>           with
>           [
>               To=mlir::MemoryEffects::Allocate,
>               SimpleFrom=const mlir::SideEffects::Effect *,
>               FromTy=const mlir::SideEffects::Effect *
>           ]
>   E:\build_slave\mlir-x64-windows-ninja\llvm-project\llvm\include\llvm/Support/Casting.h(121): note: see reference to function template instantiation 'bool llvm::isa_impl_wrap<To,SimpleFrom,SimpleFrom>::doit(const FromTy &)' being compiled
>           with
>           [
>               To=mlir::MemoryEffects::Allocate,
>               SimpleFrom=const mlir::SideEffects::Effect *,
>               FromTy=const mlir::SideEffects::Effect *
>           ]
>   E:\build_slave\mlir-x64-windows-ninja\llvm-project\llvm\include\llvm/Support/Casting.h(122): note: see reference to class template instantiation 'llvm::isa_impl_wrap<To,SimpleFrom,SimpleFrom>' being compiled
>           with
>           [
>               To=mlir::MemoryEffects::Allocate,
>               SimpleFrom=const mlir::SideEffects::Effect *
>           ]
>   E:\build_slave\mlir-x64-windows-ninja\llvm-project\llvm\include\llvm/Support/Casting.h(120): note: while compiling class template member function 'bool llvm::isa_impl_wrap<X,const Y,const mlir::SideEffects::Effect *>::doit(From &)'
>           with
>           [
>               X=mlir::MemoryEffects::Allocate,
>               Y=const mlir::SideEffects::Effect *,
>               From=const mlir::SideEffects::Effect *
>           ]
>   E:\build_slave\mlir-x64-windows-ninja\llvm-project\llvm\include\llvm/Support/Casting.h(141): note: see reference to function template instantiation 'bool llvm::isa_impl_wrap<X,const Y,const mlir::SideEffects::Effect *>::doit(From &)' being compiled
>           with
>           [
>               X=mlir::MemoryEffects::Allocate,
>               Y=const mlir::SideEffects::Effect *,
>               From=const mlir::SideEffects::Effect *
>           ]
>   E:\build_slave\mlir-x64-windows-ninja\llvm-project\llvm\include\llvm/Support/Casting.h(142): note: see reference to class template instantiation 'llvm::isa_impl_wrap<X,const Y,const mlir::SideEffects::Effect *>' being compiled
>           with
>           [
>               X=mlir::MemoryEffects::Allocate,
>               Y=const mlir::SideEffects::Effect *
>           ]
>   E:\build_slave\mlir-x64-windows-ninja\llvm-project\mlir\lib\IR\Operation.cpp(967): note: see reference to function template instantiation 'bool llvm::isa<mlir::MemoryEffects::Allocate,const mlir::SideEffects::Effect*>(const Y &)' being compiled
>           with
>           [
>               Y=const mlir::SideEffects::Effect *
>           ]
>   ninja: build stopped: subcommand failed.
>


Thanks for the report, looks like MSVC has some buggy symbol resolution for templates. I'll send fix-forward shortly.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D74440/new/

https://reviews.llvm.org/D74440





More information about the llvm-commits mailing list