================
@@ -1522,11 +1527,12 @@ def CIR_FuncIdentityAttr : CIR_Attr<"FuncIdentity", 
"func_identity"> {
   }];
 
   let parameters = (ins
-    EnumParameter<CIR_KnownFuncKind>:$kind
+    EnumParameter<CIR_KnownFuncKind>:$kind,
+    DefaultValuedParameter<"bool", "false">:$narrow_char_params
----------------
SharmaRithik wrote:

Thanks Erich! I started thinking about this yesterday while working on follow 
up support for the `wchar_t case` of `std::find to wmemchr`. Adding another 
boolean next to `narrow_char_params` did expose the same problem.

Also this check is not part of the function identity, and CIRGen still knows 
the source parameter types when it emits a direct call.  One option I was 
thinking of is recording the check on that call, and the recognizer can carry 
it to `cir.std.find`, and `LibOpt` can read it there, which makes it keep the 
FuncIdentityAttr limited to `kind`.

@andykaylor, what do you think about this direction?

https://github.com/llvm/llvm-project/pull/212355
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to