[llvm-bugs] [Bug 28793] New: crash on invalid c++ code with "-std=c++14" on x86_64-linux-gnu (UNREACHABLE executed at /path/to/StmtProfile.cpp:1017!)

via llvm-bugs llvm-bugs at lists.llvm.org
Sun Jul 31 20:12:06 PDT 2016


https://llvm.org/bugs/show_bug.cgi?id=28793

            Bug ID: 28793
           Summary: crash on invalid c++ code with "-std=c++14" on
                    x86_64-linux-gnu (UNREACHABLE executed at
                    /path/to/StmtProfile.cpp:1017!)
           Product: clang
           Version: trunk
          Hardware: PC
                OS: All
            Status: NEW
          Severity: normal
          Priority: P
         Component: C++
          Assignee: unassignedclangbugs at nondot.org
          Reporter: chengniansun at gmail.com
                CC: dgregor at apple.com, llvm-bugs at lists.llvm.org
    Classification: Unclassified

$ clang++-trunk -v
clang version 4.0.0 (trunk 277290)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /usr/bin
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/4.8
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/4.8.4
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/4.9
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/4.9.3
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/5
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/5.4.0
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/6
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/6.1.1
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/4.8
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/4.8.4
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/4.9
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/4.9.3
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/5
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/5.4.0
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/6
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/6.1.1
Selected GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/6.1.1
Candidate multilib: .;@m64
Candidate multilib: 32;@m32
Candidate multilib: x32;@mx32
Selected multilib: .;@m64
$ 
$ clang++-trunk -std=c++14 small.C
small.C:16:26: error: use of undeclared identifier 'y'
  auto sum = [] { return y; };
                         ^
Invalid operator call kind
UNREACHABLE executed at
/tmp/llvm-builder/llvm-source-trunk/tools/clang/lib/AST/StmtProfile.cpp:1017!
#0 0x0000000001b70b45 llvm::sys::PrintStackTrace(llvm::raw_ostream&)
(/usr/local/clang-trunk/bin/clang-4.0+0x1b70b45)
#1 0x0000000001b6e86e llvm::sys::RunSignalHandlers()
(/usr/local/clang-trunk/bin/clang-4.0+0x1b6e86e)
#2 0x0000000001b6e9d2 SignalHandler(int)
(/usr/local/clang-trunk/bin/clang-4.0+0x1b6e9d2)
#3 0x00007f7f31b7bed0 __restore_rt
(/lib/x86_64-linux-gnu/libpthread.so.0+0x10ed0)
#4 0x00007f7f307101c8 gsignal (/lib/x86_64-linux-gnu/libc.so.6+0x331c8)
#5 0x00007f7f3071164a abort (/lib/x86_64-linux-gnu/libc.so.6+0x3464a)
#6 0x0000000001b20100 LLVMInstallFatalErrorHandler
(/usr/local/clang-trunk/bin/clang-4.0+0x1b20100)
#7 0x00000000008dadd0 (anonymous
namespace)::StmtProfiler::VisitCXXOperatorCallExpr(clang::CXXOperatorCallExpr
const*) (/usr/local/clang-trunk/bin/clang-4.0+0x8dadd0)
#8 0x00000000030c8dd3 clang::Stmt::Profile(llvm::FoldingSetNodeID&,
clang::ASTContext const&, bool) const
(/usr/local/clang-trunk/bin/clang-4.0+0x30c8dd3)
#9 0x0000000002f2853f clang::ASTContext::getDecltypeType(clang::Expr*,
clang::QualType) const (/usr/local/clang-trunk/bin/clang-4.0+0x2f2853f)
#10 0x0000000002bd33f0 clang::Sema::BuildDecltypeType(clang::Expr*,
clang::SourceLocation, bool) (/usr/local/clang-trunk/bin/clang-4.0+0x2bd33f0)
#11 0x0000000002b8d21d clang::TreeTransform<(anonymous
namespace)::TemplateInstantiator>::TransformDecltypeType(clang::TypeLocBuilder&,
clang::DecltypeTypeLoc) (/usr/local/clang-trunk/bin/clang-4.0+0x2b8d21d)
#12 0x0000000002b8de1f clang::TreeTransform<(anonymous
namespace)::TemplateInstantiator>::TransformType(clang::TypeLocBuilder&,
clang::TypeLoc) (/usr/local/clang-trunk/bin/clang-4.0+0x2b8de1f)
#13 0x0000000002b8ed1d clang::TreeTransform<(anonymous
namespace)::TemplateInstantiator>::TransformType(clang::TypeSourceInfo*)
(/usr/local/clang-trunk/bin/clang-4.0+0x2b8ed1d)
#14 0x0000000002b980b5 clang::TreeTransform<(anonymous
namespace)::TemplateInstantiator>::TransformTemplateArgument(clang::TemplateArgumentLoc
const&, clang::TemplateArgumentLoc&, bool)
(/usr/local/clang-trunk/bin/clang-4.0+0x2b980b5)
#15 0x0000000002b9ae92 clang::TreeTransform<(anonymous
namespace)::TemplateInstantiator>::TransformTemplateSpecializationType(clang::TypeLocBuilder&,
clang::TemplateSpecializationTypeLoc, clang::TemplateName)
(/usr/local/clang-trunk/bin/clang-4.0+0x2b9ae92)
#16 0x0000000002b8e789 clang::TreeTransform<(anonymous
namespace)::TemplateInstantiator>::TransformType(clang::TypeLocBuilder&,
clang::TypeLoc) (/usr/local/clang-trunk/bin/clang-4.0+0x2b8e789)
#17 0x0000000002b8ed1d clang::TreeTransform<(anonymous
namespace)::TemplateInstantiator>::TransformType(clang::TypeSourceInfo*)
(/usr/local/clang-trunk/bin/clang-4.0+0x2b8ed1d)
#18 0x0000000002b980b5 clang::TreeTransform<(anonymous
namespace)::TemplateInstantiator>::TransformTemplateArgument(clang::TemplateArgumentLoc
const&, clang::TemplateArgumentLoc&, bool)
(/usr/local/clang-trunk/bin/clang-4.0+0x2b980b5)
#19 0x0000000002b9bbb8 bool clang::TreeTransform<(anonymous
namespace)::TemplateInstantiator>::TransformTemplateArguments<clang::TemplateArgumentLoc
const*>(clang::TemplateArgumentLoc const*, clang::TemplateArgumentLoc const*,
clang::TemplateArgumentListInfo&, bool) [clone .constprop.2357]
(/usr/local/clang-trunk/bin/clang-4.0+0x2b9bbb8)
#20 0x0000000002b9f39e clang::Sema::Subst(clang::TemplateArgumentLoc const*,
unsigned int, clang::TemplateArgumentListInfo&,
clang::MultiLevelTemplateArgumentList const&)
(/usr/local/clang-trunk/bin/clang-4.0+0x2b9f39e)
#21 0x0000000002b548f6 FinishTemplateArgumentDeduction(clang::Sema&,
clang::ClassTemplatePartialSpecializationDecl*, clang::TemplateArgumentList
const&, llvm::SmallVectorImpl<clang::DeducedTemplateArgument>&,
clang::sema::TemplateDeductionInfo&) [clone .constprop.2297]
(/usr/local/clang-trunk/bin/clang-4.0+0x2b548f6)
#22 0x0000000002b5532e
clang::Sema::DeduceTemplateArguments(clang::ClassTemplatePartialSpecializationDecl*,
clang::TemplateArgumentList const&, clang::sema::TemplateDeductionInfo&)
(/usr/local/clang-trunk/bin/clang-4.0+0x2b5532e)
#23 0x0000000002baa648
clang::Sema::InstantiateClassTemplateSpecialization(clang::SourceLocation,
clang::ClassTemplateSpecializationDecl*, clang::TemplateSpecializationKind,
bool) (/usr/local/clang-trunk/bin/clang-4.0+0x2baa648)
#24 0x0000000002bdc93e
clang::Sema::RequireCompleteTypeImpl(clang::SourceLocation, clang::QualType,
clang::Sema::TypeDiagnoser*) (/usr/local/clang-trunk/bin/clang-4.0+0x2bdc93e)
#25 0x0000000002bdcce5 clang::Sema::RequireCompleteType(clang::SourceLocation,
clang::QualType, clang::Sema::TypeDiagnoser&)
(/usr/local/clang-trunk/bin/clang-4.0+0x2bdcce5)
#26 0x000000000299a1e4
clang::Sema::BuildCXXTypeConstructExpr(clang::TypeSourceInfo*,
clang::SourceLocation, llvm::MutableArrayRef<clang::Expr*>,
clang::SourceLocation) (/usr/local/clang-trunk/bin/clang-4.0+0x299a1e4)
#27 0x0000000002b94480 clang::TreeTransform<(anonymous
namespace)::TemplateInstantiator>::TransformCXXUnresolvedConstructExpr(clang::CXXUnresolvedConstructExpr*)
(/usr/local/clang-trunk/bin/clang-4.0+0x2b94480)
#28 0x0000000002b84ff7 clang::TreeTransform<(anonymous
namespace)::TemplateInstantiator>::TransformExpr(clang::Expr*)
(/usr/local/clang-trunk/bin/clang-4.0+0x2b84ff7)
#29 0x0000000002b98025 clang::TreeTransform<(anonymous
namespace)::TemplateInstantiator>::TransformTemplateArgument(clang::TemplateArgumentLoc
const&, clang::TemplateArgumentLoc&, bool)
(/usr/local/clang-trunk/bin/clang-4.0+0x2b98025)
#30 0x0000000002b9ae92 clang::TreeTransform<(anonymous
namespace)::TemplateInstantiator>::TransformTemplateSpecializationType(clang::TypeLocBuilder&,
clang::TemplateSpecializationTypeLoc, clang::TemplateName)
(/usr/local/clang-trunk/bin/clang-4.0+0x2b9ae92)
#31 0x0000000002b8e789 clang::TreeTransform<(anonymous
namespace)::TemplateInstantiator>::TransformType(clang::TypeLocBuilder&,
clang::TypeLoc) (/usr/local/clang-trunk/bin/clang-4.0+0x2b8e789)
#32 0x0000000002b8ed1d clang::TreeTransform<(anonymous
namespace)::TemplateInstantiator>::TransformType(clang::TypeSourceInfo*)
(/usr/local/clang-trunk/bin/clang-4.0+0x2b8ed1d)
#33 0x0000000002b8ede2 clang::Sema::SubstType(clang::TypeSourceInfo*,
clang::MultiLevelTemplateArgumentList const&, clang::SourceLocation,
clang::DeclarationName) (/usr/local/clang-trunk/bin/clang-4.0+0x2b8ede2)
#34 0x0000000002bb8ff7
clang::TemplateDeclInstantiator::VisitVarDecl(clang::VarDecl*, bool)
(/usr/local/clang-trunk/bin/clang-4.0+0x2bb8ff7)
#35 0x0000000002bbbc82 clang::Sema::SubstDecl(clang::Decl*,
clang::DeclContext*, clang::MultiLevelTemplateArgumentList const&)
(/usr/local/clang-trunk/bin/clang-4.0+0x2bbbc82)
#36 0x0000000002b817e8 clang::TreeTransform<(anonymous
namespace)::TemplateInstantiator>::TransformDeclStmt(clang::DeclStmt*)
(/usr/local/clang-trunk/bin/clang-4.0+0x2b817e8)
#37 0x0000000002ba5c53 clang::TreeTransform<(anonymous
namespace)::TemplateInstantiator>::TransformStmt(clang::Stmt*)
(/usr/local/clang-trunk/bin/clang-4.0+0x2ba5c53)
#38 0x0000000002ba767c clang::TreeTransform<(anonymous
namespace)::TemplateInstantiator>::TransformCompoundStmt(clang::CompoundStmt*,
bool) (/usr/local/clang-trunk/bin/clang-4.0+0x2ba767c)
#39 0x0000000002ba77bb clang::TreeTransform<(anonymous
namespace)::TemplateInstantiator>::TransformCompoundStmt(clang::CompoundStmt*)
(/usr/local/clang-trunk/bin/clang-4.0+0x2ba77bb)
#40 0x0000000002ba5c33 clang::TreeTransform<(anonymous
namespace)::TemplateInstantiator>::TransformStmt(clang::Stmt*)
(/usr/local/clang-trunk/bin/clang-4.0+0x2ba5c33)
#41 0x0000000002baa158 clang::Sema::SubstStmt(clang::Stmt*,
clang::MultiLevelTemplateArgumentList const&)
(/usr/local/clang-trunk/bin/clang-4.0+0x2baa158)
#42 0x0000000002bbe017
clang::Sema::InstantiateFunctionDefinition(clang::SourceLocation,
clang::FunctionDecl*, bool, bool, bool)
(/usr/local/clang-trunk/bin/clang-4.0+0x2bbe017)
#43 0x0000000002b4b9fa clang::Sema::DeduceReturnType(clang::FunctionDecl*,
clang::SourceLocation, bool) (/usr/local/clang-trunk/bin/clang-4.0+0x2b4b9fa)
#44 0x00000000029564d3 clang::Sema::DiagnoseUseOfDecl(clang::NamedDecl*,
clang::SourceLocation, clang::ObjCInterfaceDecl const*, bool)
(/usr/local/clang-trunk/bin/clang-4.0+0x29564d3)
#45 0x0000000002ac6431 FinishOverloadedCallExpr(clang::Sema&, clang::Scope*,
clang::Expr*, clang::UnresolvedLookupExpr*, clang::SourceLocation,
llvm::MutableArrayRef<clang::Expr*>, clang::SourceLocation, clang::Expr*,
clang::OverloadCandidateSet*, clang::OverloadCandidate**,
clang::OverloadingResult, bool) [clone .constprop.786]
(/usr/local/clang-trunk/bin/clang-4.0+0x2ac6431)
#46 0x0000000002ac6aad clang::Sema::BuildOverloadedCallExpr(clang::Scope*,
clang::Expr*, clang::UnresolvedLookupExpr*, clang::SourceLocation,
llvm::MutableArrayRef<clang::Expr*>, clang::SourceLocation, clang::Expr*, bool,
bool) (/usr/local/clang-trunk/bin/clang-4.0+0x2ac6aad)
#47 0x0000000002967963 clang::Sema::ActOnCallExpr(clang::Scope*, clang::Expr*,
clang::SourceLocation, llvm::MutableArrayRef<clang::Expr*>,
clang::SourceLocation, clang::Expr*, bool)
(/usr/local/clang-trunk/bin/clang-4.0+0x2967963)
#48 0x000000000262573b
clang::Parser::ParsePostfixExpressionSuffix(clang::ActionResult<clang::Expr*,
true>) (/usr/local/clang-trunk/bin/clang-4.0+0x262573b)
#49 0x00000000026204b8 clang::Parser::ParseCastExpression(bool, bool, bool&,
clang::Parser::TypeCastState) (/usr/local/clang-trunk/bin/clang-4.0+0x26204b8)
#50 0x00000000026229dd clang::Parser::ParseCastExpression(bool, bool,
clang::Parser::TypeCastState) (/usr/local/clang-trunk/bin/clang-4.0+0x26229dd)
#51 0x0000000002622a69
clang::Parser::ParseAssignmentExpression(clang::Parser::TypeCastState)
(/usr/local/clang-trunk/bin/clang-4.0+0x2622a69)
#52 0x0000000002622ae9
clang::Parser::ParseExpression(clang::Parser::TypeCastState)
(/usr/local/clang-trunk/bin/clang-4.0+0x2622ae9)
#53 0x000000000265e9b6 clang::Parser::ParseExprStatement()
(/usr/local/clang-trunk/bin/clang-4.0+0x265e9b6)
#54 0x000000000265c35f
clang::Parser::ParseStatementOrDeclarationAfterAttributes(llvm::SmallVector<clang::Stmt*,
32u>&, clang::Parser::AllowedContsructsKind, clang::SourceLocation*,
clang::Parser::ParsedAttributesWithRange&)
(/usr/local/clang-trunk/bin/clang-4.0+0x265c35f)
#55 0x000000000265c4be
clang::Parser::ParseStatementOrDeclaration(llvm::SmallVector<clang::Stmt*,
32u>&, clang::Parser::AllowedContsructsKind, clang::SourceLocation*)
(/usr/local/clang-trunk/bin/clang-4.0+0x265c4be)
#56 0x0000000002660c77 clang::Parser::ParseCompoundStatementBody(bool)
(/usr/local/clang-trunk/bin/clang-4.0+0x2660c77)
#57 0x0000000002662f79 clang::Parser::ParseFunctionStatementBody(clang::Decl*,
clang::Parser::ParseScope&) (/usr/local/clang-trunk/bin/clang-4.0+0x2662f79)
#58 0x00000000025e8058
clang::Parser::ParseFunctionDefinition(clang::ParsingDeclarator&,
clang::Parser::ParsedTemplateInfo const&, clang::Parser::LateParsedAttrList*)
(/usr/local/clang-trunk/bin/clang-4.0+0x25e8058)
#59 0x00000000026058d6 clang::Parser::ParseDeclGroup(clang::ParsingDeclSpec&,
unsigned int, clang::SourceLocation*, clang::Parser::ForRangeInit*)
(/usr/local/clang-trunk/bin/clang-4.0+0x26058d6)
#60 0x00000000025e4112
clang::Parser::ParseDeclOrFunctionDefInternal(clang::Parser::ParsedAttributesWithRange&,
clang::ParsingDeclSpec&, clang::AccessSpecifier)
(/usr/local/clang-trunk/bin/clang-4.0+0x25e4112)
#61 0x00000000025e47d1
clang::Parser::ParseDeclarationOrFunctionDefinition(clang::Parser::ParsedAttributesWithRange&,
clang::ParsingDeclSpec*, clang::AccessSpecifier) [clone .part.158] [clone
.constprop.181] (/usr/local/clang-trunk/bin/clang-4.0+0x25e47d1)
#62 0x00000000025e481f
clang::Parser::ParseDeclarationOrFunctionDefinition(clang::Parser::ParsedAttributesWithRange&,
clang::ParsingDeclSpec*, clang::AccessSpecifier)
(/usr/local/clang-trunk/bin/clang-4.0+0x25e481f)
#63 0x00000000025e9bbf
clang::Parser::ParseExternalDeclaration(clang::Parser::ParsedAttributesWithRange&,
clang::ParsingDeclSpec*) (/usr/local/clang-trunk/bin/clang-4.0+0x25e9bbf)
#64 0x00000000025ea4f9
clang::Parser::ParseTopLevelDecl(clang::OpaquePtr<clang::DeclGroupRef>&)
(/usr/local/clang-trunk/bin/clang-4.0+0x25ea4f9)
#65 0x00000000025dfcbb clang::ParseAST(clang::Sema&, bool, bool)
(/usr/local/clang-trunk/bin/clang-4.0+0x25dfcbb)
#66 0x00000000022c9c07 clang::CodeGenAction::ExecuteAction()
(/usr/local/clang-trunk/bin/clang-4.0+0x22c9c07)
#67 0x0000000001ff02f6 clang::FrontendAction::Execute()
(/usr/local/clang-trunk/bin/clang-4.0+0x1ff02f6)
#68 0x0000000001fc4386
clang::CompilerInstance::ExecuteAction(clang::FrontendAction&)
(/usr/local/clang-trunk/bin/clang-4.0+0x1fc4386)
#69 0x0000000002074957
clang::ExecuteCompilerInvocation(clang::CompilerInstance*)
(/usr/local/clang-trunk/bin/clang-4.0+0x2074957)
#70 0x000000000093f658 cc1_main(llvm::ArrayRef<char const*>, char const*,
void*) (/usr/local/clang-trunk/bin/clang-4.0+0x93f658)
#71 0x00000000008dcbc0 main (/usr/local/clang-trunk/bin/clang-4.0+0x8dcbc0)
#72 0x00007f7f306fd730 __libc_start_main
(/lib/x86_64-linux-gnu/libc.so.6+0x20730)
#73 0x000000000093bed9 _start (/usr/local/clang-trunk/bin/clang-4.0+0x93bed9)
Stack dump:
0.    Program arguments: /usr/local/clang-trunk/bin/clang-4.0 -cc1 -triple
x86_64-unknown-linux-gnu -emit-obj -mrelax-all -disable-free -main-file-name
small.C -mrelocation-model static -mthread-model posix -mdisable-fp-elim
-fmath-errno -masm-verbose -mconstructor-aliases -munwind-tables
-fuse-init-array -target-cpu x86-64 -dwarf-column-info -debugger-tuning=gdb
-resource-dir /usr/local/clang-trunk/bin/../lib/clang/4.0.0 -c-isystem .
-c-isystem /usr/local/include/csmith -internal-isystem
/usr/bin/../lib/gcc/x86_64-linux-gnu/6.1.1/../../../../include/c++/6.1.1
-internal-isystem
/usr/bin/../lib/gcc/x86_64-linux-gnu/6.1.1/../../../../include/x86_64-linux-gnu/c++/6.1.1
-internal-isystem
/usr/bin/../lib/gcc/x86_64-linux-gnu/6.1.1/../../../../include/x86_64-linux-gnu/c++/6.1.1
-internal-isystem
/usr/bin/../lib/gcc/x86_64-linux-gnu/6.1.1/../../../../include/c++/6.1.1/backward
-internal-isystem /usr/local/include -internal-isystem
/usr/local/clang-trunk/bin/../lib/clang/4.0.0/include -internal-externc-isystem
/usr/include/x86_64-linux-gnu -internal-externc-isystem /include
-internal-externc-isystem /usr/include -std=c++14 -fdeprecated-macro
-fdebug-compilation-dir
/home/cnsun/workspace/meta-compiler/error-fuzzer/exp-runs/crash/20160730-clang++-trunk--O3-c-Weverything-std=c++14-build-080733
-ferror-limit 19 -fmessage-length 272 -fobjc-runtime=gcc -fcxx-exceptions
-fexceptions -fdiagnostics-show-option -fcolor-diagnostics -o
/tmp/small-e25789.o -x c++ small.C 
1.    small.C:17:12: current parser token ')'
2.    small.C:15:12: parsing function body 'main'
3.    small.C:15:12: in compound statement ('{}')
4.    small.C:12:29: instantiating function definition 'curry<(lambda at
small.C:16:14)>'
clang-4.0: error: unable to execute command: Aborted
clang-4.0: error: clang frontend command failed due to signal (use -v to see
invocation)
clang version 4.0.0 (trunk 277290)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /usr/bin
clang-4.0: note: diagnostic msg: PLEASE submit a bug report to
http://llvm.org/bugs/ and include the crash backtrace, preprocessed source, and
associated run script.
clang-4.0: note: diagnostic msg: 
********************

PLEASE ATTACH THE FOLLOWING FILES TO THE BUG REPORT:
Preprocessed source(s) and associated run script(s) are located at:
clang-4.0: note: diagnostic msg: /tmp/small-c28f75.cpp
clang-4.0: note: diagnostic msg: /tmp/small-c28f75.sh
clang-4.0: note: diagnostic msg: 

********************
$ 
$ cat small.C
template <typename T> T declval();
struct {
  int value;
  constexpr operator int() { return value; }
} typedef true_type;
template <typename> using void_t = void;
template <typename, typename = void> class is_zero_callable;
template <typename T>
class is_zero_callable<T, void_t<decltype(declval<T>()())>> : public true_type
{
};
template <typename, int> struct curry_impl {};
template <typename TF> auto curry(TF f) {
  curry_impl<TF, is_zero_callable<decltype(f)>{}> exec;
}
int main() {
  auto sum = [] { return y; };
  curry(sum)()
}
$

-- 
You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20160801/c6f19c56/attachment-0001.html>


More information about the llvm-bugs mailing list