[clang] [clang] Bail out if the result of function template instantiation is not a function. (PR #69449)
    Sam McCall via cfe-commits 
    cfe-commits at lists.llvm.org
       
    Wed Oct 18 05:59:07 PDT 2023
    
    
  
================
@@ -2649,7 +2649,9 @@ TypeSourceInfo *Sema::SubstFunctionDeclType(TypeSourceInfo *T,
   } else {
     Result = Instantiator.TransformType(TLB, TL);
   }
-  if (Result.isNull())
+  // When clang goes into recovery mode, it might substitute
----------------
sam-mccall wrote:
Not sure "recovery mode" is well-defined enough to refer to in this way
maybe:
When there are errors resolving types, clang may use IntTy as a fallback, breaking our assumption that function declarations have function types.
(I thought there was a name for this usage of IntTy but I can't find one. It happens e.g. at GetFullTypeForDeclarator, SemaType.cpp:5734)
https://github.com/llvm/llvm-project/pull/69449
    
    
More information about the cfe-commits
mailing list