{"action":"created","issue":{"url":"https://api.github.com/repos/manastech/crystal/issues/1614","labels_url":"https://api.github.com/repos/manastech/crystal/issues/1614/labels{/name}","comments_url":"https://api.github.com/repos/manastech/crystal/issues/1614/comments","events_url":"https://api.github.com/repos/manastech/crystal/issues/1614/events","html_url":"https://github.com/manastech/crystal/issues/1614","id":108539527,"number":1614,"title":"Version 0.8.0 fails to compile with LLVM 3.7","user":{"login":"anatol","id":7032,"avatar_url":"https://avatars.githubusercontent.com/u/7032?v=3","gravatar_id":"","url":"https://api.github.com/users/anatol","html_url":"https://github.com/anatol","followers_url":"https://api.github.com/users/anatol/followers","following_url":"https://api.github.com/users/anatol/following{/other_user}","gists_url":"https://api.github.com/users/anatol/gists{/gist_id}","starred_url":"https://api.github.com/users/anatol/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/anatol/subscriptions","organizations_url":"https://api.github.com/users/anatol/orgs","repos_url":"https://api.github.com/users/anatol/repos","events_url":"https://api.github.com/users/anatol/events{/privacy}","received_events_url":"https://api.github.com/users/anatol/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/manastech/crystal/labels/compiler","name":"compiler","color":"fef2c0"},{"url":"https://api.github.com/repos/manastech/crystal/labels/enhancement","name":"enhancement","color":"84b6eb"}],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":1,"created_at":"2015-09-27T14:27:52Z","updated_at":"2015-09-27T23:51:07Z","closed_at":null,"body":"I am trying to compile Crystal 0.8.0 on Linux Arch with LLVM 3.7 installed and get following error.\r\n\r\n```\r\nsrc/llvm/ext/llvm_ext.cc:31:25: note:   template argument deduction/substitution failed:\r\nsrc/llvm/ext/llvm_ext.cc:87:35: error: template argument 1 is invalid\r\n       unwrapDI<DIDescriptor>(Scope), unwrapDI<DIFile>(File), Line, Column);\r\n                                   ^\r\nIn file included from /usr/include/llvm/IR/DebugInfo.h:25:0,\r\n                 from /usr/include/llvm/IR/DIBuilder.h:20,\r\n                 from src/llvm/ext/llvm_ext.cc:7:\r\n/usr/include/llvm/IR/DebugInfoMetadata.h:463:3: error: ‘llvm::DIFile::~DIFile()’ is private\r\n   ~DIFile() = default;\r\n   ^\r\nsrc/llvm/ext/llvm_ext.cc:87:59: error: within this context\r\n       unwrapDI<DIDescriptor>(Scope), unwrapDI<DIFile>(File), Line, Column);\r\n                                                           ^\r\nIn file included from /usr/include/llvm/IR/DebugInfo.h:25:0,\r\n                 from /usr/include/llvm/IR/DIBuilder.h:20,\r\n                 from src/llvm/ext/llvm_ext.cc:7:\r\n/usr/include/llvm/IR/DebugInfoMetadata.h:1479:3: error: ‘llvm::DILexicalBlock::~DILexicalBlock()’ is private\r\n   ~DILexicalBlock() = default;\r\n   ^\r\nsrc/llvm/ext/llvm_ext.cc:87:74: error: within this context\r\n       unwrapDI<DIDescriptor>(Scope), unwrapDI<DIFile>(File), Line, Column);\r\n                                                                          ^\r\nsrc/llvm/ext/llvm_ext.cc:89:17: error: no matching function for call to ‘wrap(llvm::DILexicalBlock&)’\r\n   return wrap(LB);\r\n                 ^\r\nIn file included from /usr/include/llvm/IR/Use.h:30:0,\r\n                 from /usr/include/llvm/IR/Value.h:19,\r\n                 from /usr/include/llvm/IR/User.h:24,\r\n                 from /usr/include/llvm/IR/Constant.h:17,\r\n                 from /usr/include/llvm/IR/Metadata.h:23,\r\n                 from src/llvm/ext/llvm_ext.cc:3:\r\nsrc/llvm/ext/llvm_ext.cc:18:1: note: candidate: LLVMOpaqueDIBuilder* wrap(const llvm::DIBuilder*)\r\n DEFINE_SIMPLE_CONVERSION_FUNCTIONS(DIBuilder, LLVMDIBuilderRef)\r\n ^\r\nsrc/llvm/ext/llvm_ext.cc:18:1: note:   no known conversion for argument 1 from ‘llvm::DILexicalBlock’ to ‘const llvm::DIBuilder*’\r\nsrc/llvm/ext/llvm_ext.cc:24:1: note: candidate: LLVMOpaqueMetadata* wrap(const llvm::Metadata*)\r\n DEFINE_ISA_CONVERSION_FUNCTIONS(Metadata, LLVMMetadataRef)\r\n ^\r\nsrc/llvm/ext/llvm_ext.cc:24:1: note:   no known conversion for argument 1 from ‘llvm::DILexicalBlock’ to ‘const llvm::Metadata*’\r\n/usr/include/llvm/IR/IRBuilder.h:1677:1: note: candidate: LLVMOpaqueBuilder* llvm::wrap(const llvm::IRBuilder<>*)\r\n DEFINE_SIMPLE_CONVERSION_FUNCTIONS(IRBuilder<>, LLVMBuilderRef)\r\n ^\r\n/usr/include/llvm/IR/IRBuilder.h:1677:1: note:   no known conversion for argument 1 from ‘llvm::DILexicalBlock’ to ‘const llvm::IRBuilder<>*’\r\n/usr/include/llvm/IR/Module.h:688:1: note: candidate: LLVMOpaqueModule* llvm::wrap(const llvm::Module*)\r\n DEFINE_SIMPLE_CONVERSION_FUNCTIONS(Module, LLVMModuleRef)\r\n ^\r\n/usr/include/llvm/IR/Module.h:688:1: note:   no known conversion for argument 1 from ‘llvm::DILexicalBlock’ to ‘const llvm::Module*’\r\nIn file included from /usr/include/llvm/IR/Module.h:26:0,\r\n                 from src/llvm/ext/llvm_ext.cc:6:\r\n/usr/include/llvm/Support/CodeGen.h:76:24: note: candidate: LLVMCodeModel llvm::wrap(llvm::CodeModel::Model)\r\n   inline LLVMCodeModel wrap(CodeModel::Model Model) {\r\n                        ^\r\n/usr/include/llvm/Support/CodeGen.h:76:24: note:   no known conversion for argument 1 from ‘llvm::DILexicalBlock’ to ‘llvm::CodeModel::Model’\r\nIn file included from /usr/include/llvm/IR/Use.h:30:0,\r\n                 from /usr/include/llvm/IR/Value.h:19,\r\n                 from /usr/include/llvm/IR/User.h:24,\r\n                 from /usr/include/llvm/IR/Constant.h:17,\r\n                 from /usr/include/llvm/IR/Metadata.h:23,\r\n                 from src/llvm/ext/llvm_ext.cc:3:\r\n/usr/include/llvm/IR/BasicBlock.h:347:1: note: candidate: LLVMOpaqueBasicBlock* llvm::wrap(const llvm::BasicBlock*)\r\n DEFINE_SIMPLE_CONVERSION_FUNCTIONS(BasicBlock, LLVMBasicBlockRef)\r\n ^\r\n/usr/include/llvm/IR/BasicBlock.h:347:1: note:   no known conversion for argument 1 from ‘llvm::DILexicalBlock’ to ‘const llvm::BasicBlock*’\r\nIn file included from /usr/include/llvm/IR/Module.h:20:0,\r\n                 from src/llvm/ext/llvm_ext.cc:6:\r\n/usr/include/llvm/IR/DataLayout.h:469:26: note: candidate: LLVMOpaqueTargetData* llvm::wrap(const llvm::DataLayout*)\r\n inline LLVMTargetDataRef wrap(const DataLayout *P) {\r\n                          ^\r\n/usr/include/llvm/IR/DataLayout.h:469:26: note:   no known conversion for argument 1 from ‘llvm::DILexicalBlock’ to ‘const llvm::DataLayout*’\r\nIn file included from /usr/include/llvm/IR/Use.h:30:0,\r\n                 from /usr/include/llvm/IR/Value.h:19,\r\n                 from /usr/include/llvm/IR/User.h:24,\r\n                 from /usr/include/llvm/IR/Constant.h:17,\r\n                 from /usr/include/llvm/IR/Metadata.h:23,\r\n                 from src/llvm/ext/llvm_ext.cc:3:\r\n/usr/include/llvm/PassRegistry.h:96:1: note: candidate: LLVMOpaquePassRegistry* llvm::wrap(const llvm::PassRegistry*)\r\n DEFINE_STDCXX_CONVERSION_FUNCTIONS(PassRegistry, LLVMPassRegistryRef)\r\n ^\r\n/usr/include/llvm/PassRegistry.h:96:1: note:   no known conversion for argument 1 from ‘llvm::DILexicalBlock’ to ‘const llvm::PassRegistry*’\r\nIn file included from /usr/include/llvm/IR/DerivedTypes.h:21:0,\r\n                 from /usr/include/llvm/IR/DataLayout.h:25,\r\n                 from /usr/include/llvm/IR/Module.h:20,\r\n                 from src/llvm/ext/llvm_ext.cc:6:\r\n/usr/include/llvm/IR/Type.h:483:21: note: candidate: LLVMOpaqueType** llvm::wrap(llvm::Type**)\r\n inline LLVMTypeRef *wrap(Type **Tys) {\r\n                     ^\r\n/usr/include/llvm/IR/Type.h:483:21: note:   no known conversion for argument 1 from ‘llvm::DILexicalBlock’ to ‘llvm::Type**’\r\nIn file included from /usr/include/llvm/IR/Use.h:30:0,\r\n                 from /usr/include/llvm/IR/Value.h:19,\r\n```\r\n\r\nWith LLVM 3.6 compilation is fine."},"comment":{"url":"https://api.github.com/repos/manastech/crystal/issues/comments/143605308","html_url":"https://github.com/manastech/crystal/issues/1614#issuecomment-143605308","issue_url":"https://api.github.com/repos/manastech/crystal/issues/1614","id":143605308,"user":{"login":"asterite","id":209371,"avatar_url":"https://avatars.githubusercontent.com/u/209371?v=3","gravatar_id":"","url":"https://api.github.com/users/asterite","html_url":"https://github.com/asterite","followers_url":"https://api.github.com/users/asterite/followers","following_url":"https://api.github.com/users/asterite/following{/other_user}","gists_url":"https://api.github.com/users/asterite/gists{/gist_id}","starred_url":"https://api.github.com/users/asterite/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/asterite/subscriptions","organizations_url":"https://api.github.com/users/asterite/orgs","repos_url":"https://api.github.com/users/asterite/repos","events_url":"https://api.github.com/users/asterite/events{/privacy}","received_events_url":"https://api.github.com/users/asterite/received_events","type":"User","site_admin":false},"created_at":"2015-09-27T23:51:07Z","updated_at":"2015-09-27T23:51:07Z","body":"Yes, this is a known \"issue\": LLVM 3.7 changes the way debug metadata is emitted"}}