r300762 - Fix assertion failure in codegen on non-template deduction guide.
Richard Smith via cfe-commits
cfe-commits at lists.llvm.org
Wed Apr 19 14:15:45 PDT 2017
Author: rsmith
Date: Wed Apr 19 16:15:45 2017
New Revision: 300762
URL: http://llvm.org/viewvc/llvm-project?rev=300762&view=rev
Log:
Fix assertion failure in codegen on non-template deduction guide.
Added:
cfe/trunk/test/CodeGenCXX/cxx1z-class-deduction.cpp
Modified:
cfe/trunk/lib/CodeGen/CodeGenModule.cpp
Modified: cfe/trunk/lib/CodeGen/CodeGenModule.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenModule.cpp?rev=300762&r1=300761&r2=300762&view=diff
==============================================================================
--- cfe/trunk/lib/CodeGen/CodeGenModule.cpp (original)
+++ cfe/trunk/lib/CodeGen/CodeGenModule.cpp Wed Apr 19 16:15:45 2017
@@ -3794,6 +3794,10 @@ void CodeGenModule::EmitTopLevelDecl(Dec
AddDeferredUnusedCoverageMapping(D);
break;
+ case Decl::CXXDeductionGuide:
+ // Function-like, but does not result in code emission.
+ break;
+
case Decl::Var:
case Decl::Decomposition:
// Skip variable templates
Added: cfe/trunk/test/CodeGenCXX/cxx1z-class-deduction.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/cxx1z-class-deduction.cpp?rev=300762&view=auto
==============================================================================
--- cfe/trunk/test/CodeGenCXX/cxx1z-class-deduction.cpp (added)
+++ cfe/trunk/test/CodeGenCXX/cxx1z-class-deduction.cpp Wed Apr 19 16:15:45 2017
@@ -0,0 +1,21 @@
+// RUN: %clang_cc1 -std=c++1z %s -emit-llvm -o - | FileCheck %s
+
+template<typename T> struct A {
+ A(T = 0);
+ A(void*);
+};
+
+template<typename T> A(T*) -> A<long>;
+A() -> A<int>;
+
+// CHECK-LABEL: @_Z1fPi(
+void f(int *p) {
+ // CHECK: @_ZN1AIiEC
+ A a{};
+
+ // CHECK: @_ZN1AIlEC
+ A b = p;
+
+ // CHECK: @_ZN1AIxEC
+ A c = 123LL;
+}
More information about the cfe-commits
mailing list