[llvm-bugs] [Bug 27173] New: Infinite recursion during template instantiation

via llvm-bugs llvm-bugs at lists.llvm.org
Thu Mar 31 21:08:11 PDT 2016


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

            Bug ID: 27173
           Summary: Infinite recursion during template instantiation
           Product: clang
           Version: trunk
          Hardware: PC
                OS: Linux
            Status: NEW
          Severity: normal
          Priority: P
         Component: Frontend
          Assignee: unassignedclangbugs at nondot.org
          Reporter: rtrieu at google.com
                CC: llvm-bugs at lists.llvm.org
    Classification: Unclassified

$ cat bind.cc
template <typename _Tp> _Tp declval();

template <typename _Signature>
struct _Bind;

template <typename _Functor, typename T>
struct _Bind<_Functor(T)> {
  template <typename Arg, typename _Result = decltype(
                              declval<_Functor>()(declval<volatile T>()))>
  void operator()(Arg&& arg) {}
};

template <typename _Func, typename _Arg>
inline _Bind<_Func(_Arg)>
bind(_Func&& __f, _Arg&& __args) {}


struct A {
  template <typename T> A(T t);
};

template <typename T>
struct B {
  B(T&& arg);
};

template <typename T>
B<T> get_B();

void g(A a) {}

void test() {
  bind(g, get_B<A>());
}
$ clang -cc1 -std=c++11 bind.cc
Segmentation fault (core dumped)

>From the backtrace, these 4 functions are repeated:
clang::Sema::PerformCopyInitialization
clang::Sema::GatherArgumentsForCall
clang::Sema::CompleteConstructorCall
clang::InitializationSequence::Perform

-- 
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/20160401/2602813d/attachment-0001.html>


More information about the llvm-bugs mailing list