[LLVMbugs] [Bug 13849] New: Incorrect codegen for lambda in	template function
    bugzilla-daemon at llvm.org 
    bugzilla-daemon at llvm.org
       
    Fri Sep 14 11:43:52 PDT 2012
    
    
  
http://llvm.org/bugs/show_bug.cgi?id=13849
             Bug #: 13849
           Summary: Incorrect codegen for lambda in template function
           Product: clang
           Version: trunk
          Platform: PC
        OS/Version: All
            Status: NEW
          Severity: enhancement
          Priority: P
         Component: C++11
        AssignedTo: unassignedclangbugs at nondot.org
        ReportedBy: arthur.j.odwyer at gmail.com
                CC: dgregor at apple.com, llvmbugs at cs.uiuc.edu
    Classification: Unclassified
Created attachment 9217
  --> http://llvm.org/bugs/attachment.cgi?id=9217
Output of "clang++ --std=c++11 test.cc --stdlib=libc++ -v"
This bug was originally reported on StackOverflow:
http://stackoverflow.com/questions/12419761/wrong-result-when-stdfor-each-is-called-in-a-template-function
Apple employees take note— it's already got an Apple rdar:// number. I hope
someone will put that rdar link in a comment here.
cat >test.cc <<EOF
#include <cstdio>
template<typename T> 
void test() {
    ([](int) { puts("int"); })(0);
    ([](double) { puts("double"); })(0);
    ([](T) { puts("T"); })(0);
}
int main() { test<int>(); test<double>(); }
EOF
clang++ --std=c++11 test.cc --stdlib=libc++
./a.out
Expected output: int double T int double T
Actual output: int double int int double double
It seems that Clang is doing some sort of lookup to find the "specializations"
of the T lambda... which is just wrong.
-- 
Configure bugmail: http://llvm.org/bugs/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.
    
    
More information about the llvm-bugs
mailing list