<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/62297>62297</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            Does the LLVM C-API LLVMIntrinsicCopyOverloadedName2 return correct name for overloaded intrinsic?
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          SixWeining
      </td>
    </tr>
</table>

<pre>
    # Description

I suppose `LLVMIntrinsicCopyOverloadedName2` should return as short name as it can to uniquely identify the intrinsic. But seems that it return a full name which including all param types. Am I wrong?

# Test case

```
// test.c
#include <llvm-c/Core.h>
#include <stdio.h>
#include <stdlib.h>

int main() {
  LLVMPassRegistryRef pr = LLVMGetGlobalPassRegistry();

  LLVMInitializeCore(pr);

  size_t len;
  int ret = 1;
  const char *name_base = "llvm.minnum";
 //const char *name_overload_expected = "llvm.minnum.f32";
  //const char *name_overload_returned = "llvm.minnum.f32.f32";
  LLVMModuleRef m = LLVMModuleCreateWithName("Mod");
  LLVMTypeRef f32 = LLVMFloatType();
  LLVMTypeRef types[] = {f32, f32};

  LLVMValueRef function = LLVMAddFunction(
      m, name_base,
 LLVMFunctionType(f32, types, sizeof(types) / sizeof(LLVMTypeRef), 0));
 printf("name: %s\n", LLVMGetValueName2(function, &len));

  // I suppose this API returns "llvm.minnum.f32" (which is expected by verifier)
  // but in fact it returns "llvm.minnum.f32.f32".
  char *name_new = LLVMIntrinsicCopyOverloadedName2(
      m, LLVMGetIntrinsicID(function), types,
      sizeof(types) / sizeof(LLVMTypeRef), &len);
  printf("name_new: %s\n", name_new);

  free(name_new);
  LLVMDeleteFunction(function);
 LLVMDisposeModule(m);

  return 0;
}
```

# Build and run the test

```
$ clang test.c -o test `llvm-config --cflags --ldflags --libs all --system-libs`
$ ./test
name: llvm.minnum
name_new: llvm.minnum.f32.f32
```

</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyUVl2TmzYU_TXyyx0zrPAHfuBhDSXjmaTNpJnkMSPgAuoIiUpiN86v70hgjFO6bXd2bKwrnftxztWFGcMbiZiQ_Znssw0bbKt08jv__hW55LLZFKq6JoRGkKEpNe8tV5KEGQmfx88LmKHvlUEgh_D9-y8fLtJqLg0vU9Vff3tBLRSrsPqVdUjJIQTTqkFUoNEOWgIzbkFbkKxD94tbKJkEq2CQ_M8BxRV4hdLy-gq2ReA3-ADOgwWD2BmwLbPu5A0U6kGIEfK15WULXJZiqLhsgAkBPdOsA3vt0QTw3MEFXrWSDYnyZWYu6c9oXDwGHwyHcPqf9uWE5mDR2KCcj44eEUiUCvHSbUtC81RpDFoS_bK2y9iKq7esghdLs__k0kLHuCQ0JvQE5Hge1wEcFR-ZMZ-w4cbq6yesoddAosyb3qF9J1TBxHLPiEKi89LFCHWR3HIm-A90SRAa93ptq-E_8JsFgXI2gaPMMeN9Py3WSyVddVumgdBnx9a3gjkhRRkQSl3Zgo5LOXSE0vu5sd4rh9Uktm_4vcfSYrWCFNQRfUD7D3Cjqv4R7u-QrmAfVDUIdFXv5qKPa6lGZvErt63rCV9z-kFVDmJR0RHl87X3GHVEZ5RcKGad4Se6Hk94dY9dPcZ9PPs4U4dFjtkqy1-YGEZ_gyxdp89On6sqn9ac2-mM--sc5kweoelk9KFOR6ZopwDG0Gjq1aJqQuNp5eTIuK8u0nF50hRC_71Iuddc2nqsoYuBRE4fe0P2qfQFTW9q96mNlxCN6zmVFAg9OLk-Aj-KA-6XnG25geePl-mqMevyAkLj6eIxMKuxuMILal5z9L3z6KIYLHAJNSsXN9ka_OQimLtoqVmJrzNlb17EKxxOhZqPXbKHSp2W1C0P_28W7xW_S_dnIl0mK2TOphWuao1OZGtbRnVnKNDiQsbL5Oatfic3ju2xXwmNuzV_07AJ74Zjtj4g5nFyHriogMkK9CD9OHNT483ZsoNSMNlM4wW2yj-5YTuOFSVr3sB2W9aCNQa2W1HNT7wwft5tt-ZqLHZ-5QE7IDS_h3DroOXNOxtujKzJcS30TZVE1Sk6sQ0mT4eYPu2jAz1t2qQoIxZjRYvdke2LOsLwUMXHMt7XLAxPu6cNT2hIo3BHaRjvo90pqI5FXO2PJQtpHEbRE9mF2DEuAh-L0s2GGzNgcqD0dNwIVqAw_o2GUtcQ3ugEtM82OvFlK4bGkF0ouLHmjmK5FZhkCo3nxikB0q3r9n_rp5sYSqU1ltPbTK00qHnf_c2FRPlm0CJpre0NiaYXiIbbdiiCUnWE5i6k6Wvba_UHlpbQ3CdiCM19on8FAAD__9KO7fo">