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

    <tr>
        <th>Summary</th>
        <td>
            [RISC-V] Emit wrong abi when linking an empty .ll file with float target-abi module flag.
        </td>
    </tr>

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

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

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

<pre>
    When linking an empty .ll file with float target-abi module flag, or a module with all function erased duriong LTO, it won't go to RISCVAsmPrinter::emitFunctionEntryLabel function because none of the .ll file or the module contains function.
At this time the target-abi value in target streamer won't be set to correct one which is read from .ll file's or module's target-abi flag.
Sometimes when constructing RISCVTargetELFStreamer it may not receive correct feature bits and compute a wrong default Abi which is not float, without setting target-abi in RISCVAsmPrinter::emitFunctionEntryLabel function, the wrong default target-abi will be emit and cause api mismatch error.

.ll test code: 
```
; RUN: llc -mtriple=riscv32 -filetype=obj < %s | llvm-readelf -h - | FileCheck -check-prefixes=FLAGS %s

; FLAGS: Flags: 0x0
; Should be Flags: 0x2, single-float ABI

attributes #0 = { "target-features"="+f"}
!llvm.module.flags = !{!0}
!0 = !{i32 1, !"target-abi", !"ilp32f"}

```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyllE2PozgQhn8NXEpEYPJ54JCPzqil1u5qMjurORoogqcNjmzTmcyv3yqHztDXGQlB7HKVH79vOaWpb8V_LfagVf-q-jPIHrC7-BvMtIZGaYSr8i002kgPXtoz-kSWCjpTDxRstDxHYg_GgnyfCwmS04e-8spQRSsd1lAPlkZnePnyN-coD1fTR2Ll4WzAG_j8fNp_3bruH6t6jzbKt_Rgp_xxLPTUe3t7kSVOapdYycEh9KZHMA34Fn-xExaPR7DK9F6q3j2SZ1F6iNLtlk7WKgdedRjWT875JvWAoPpxDpy3KDu0D_QSwdE84VfGWqw8MMi1VVULVJNW19BY0z2gKMsx2B0qjCb7saAj1sl0yEiOqpFDRE-bDwROEgapvoS0p5fj6R2KJO3kjbTwtHGF6g0fVA1KP1iEUnlHLtcU6C6DR_LtatmVGhs5aA9bonjgc6XgPRvGxprB83kDxASbBPod97gqC_6RYFL3qkg1kpjr3KmD2fJCHahcJz1horXGjprd3yy1R-fpjDUSBYzBZTo-92G-g8___sVxrStIOm_VhRzJD1a56i0XkLBf_nbhOVN-hyjfQyQWDqLVnnLeuoTtRd1A0kISZo-UsW-xeoWk4k9ysdioH-ioxPFl--kUCkxhGSNEGORI9jv-kf6YUJ5Idl2zDpO4YPEc-aAxuV_P7e55Wlh6OlBJFhOvyFOiPxDijgZiVHjsCUczFOS32DX8WR3GQiLjY87uvTrj5nT3OiKjUvROp2vTSUyRfhkj8vCxI3katnmfVvqSi49bfrQqxiJbLtP1epNmIq6LvN7kGxl75TUW0WLHXZd8jRYHeOIWuTdS6Jw__FebxYPVRev9hfWOxJGeMyUN5YxuDg1YmPFDJpvvdMloqJwbWNDjYiXmIm4LkctMLLLVXOK6zkXeCCnTsqpKbNLNeilizTfC8VlIhh6vEEqwJItDrAqRCpGus026TPNczFZVLZu6XtfzTbbOqyqap9hJpWfBJ2PPsS0CUjlQo8xTrZx3v4LSOXXuMUjH9eVAV9oW34b-J_5sh808DrsXgf5_B-75iQ">