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

    <tr>
        <th>Summary</th>
        <td>
            How the clang and the lli inline two .ll file?
        </td>
    </tr>

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

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

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

<pre>
    **main.ll :**
```
; ModuleID = 'LLVMDialectModule'
source_filename = "LLVMDialectModule"

$".%d " = comdat any

@".%d " = linkonce_odr unnamed_addr constant [4 x i8] c"%d \00", comdat

declare i64 @printf(ptr, i64)

declare ptr @print_frameconstruct()

; Function Attrs: nocallback nofree nosync nounwind willreturn memory(none)
declare ptr @llvm.frameaddress.p0(i32 immarg) #1

define i64 @main() {
  %1 = call ptr @print_frameconstruct()

  %2 = call ptr @llvm.frameaddress.p0(i32 0)
  %3 = ptrtoint ptr %2 to i64
  %4 = call i64 @printf(ptr @".%d ", i64 %3)

  ret i64 0
}

; Function Attrs: nocallback nofree nosync nounwind willreturn memory(none)
declare ptr @llvm.frameaddress.p0(i32 immarg) #1

attributes #1 = { nocallback nofree nosync nounwind willreturn memory(none) }
```

**test.ll** :
```
; ModuleID = 'LLVMDialectModule'
source_filename = "LLVMDialectModule"

$".%d " = comdat any

@".%d " = linkonce_odr unnamed_addr constant [4 x i8] c"%d \00", comdat

declare i64 @printf(ptr, i64)

; Function Attrs: nocallback nofree nosync nounwind willreturn memory(none)
declare ptr @llvm.frameaddress.p0(i32 immarg) #0

; Function Attrs: alwaysinline
define ptr @print_frameconstruct() #1 {

  %1 = call ptr @llvm.frameaddress.p0(i32 0)
  %2 = ptrtoint ptr %1 to i64
  %3 = call i64 @printf(ptr @".%d ", i64 %2)

  ret ptr %1
}

; Function Attrs: nocallback nofree nosync nounwind willreturn memory(none)
declare ptr @llvm.frameaddress.p0(i32 immarg) #0

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(none) }
attributes #1 = { alwaysinline }
```

- Using “clang main.ll test.ll -o a.out” will print two different number. i.e. it has not be inlined.
- Using “llvm-link main.ll test.ll -o out.bc”, then using “lli out.bc” will print two different number. i.e. it has not be inlined.
- Using “llvm-link main.ll test.ll -o out.bc”, then using “clang out.bc -o a.out” will print two same number. i.e. it has be inlined.

How should I make the clang and the lli produce inlined result ?

</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsVk1v4zYQ_TXUZRCBJiVLOuhgxzW6wO6xvQaUSNlsKNLgR13_-4KU7GxsZ9N2e9gACwgyaM6beZyPJzLn5E4L0aJyjcpNxoLfG9s2ZU1p1hl-ahFZIbIamdS5UoDoavoD4Q3CK7TE8zMt6Rq-GB6U-LQBRDeASPX58-9fNpIp0ftpC5FqsnYm2F48DVIJzUYxA8gdAJndT29SIEJyREoezROsNyNnHpg-vbIs8I2lkvrZ6F48GW4h6BiYPzHOLfRGO8-0B1SuC_gLZI3KDfQxenJQPmKcFo9zuK9DcdErZgXIZQGowAcrtR8QqQ_eRoBcFog09wAHby-Ap8GyUSQeNvQekfoKFPO7Dbr30mhYeW8doivQpmdKdax_Bm0GKwRo4066B22CPkrN4SiVssIHq2EUo7EnRGpttLi4v2Kj1J9jnsjEzAjn8gNGpJaUgBxHZneINIAIXbw-0SD1JQOxYaYDAKrWkwUAIuViKhhT6t-dPYHJDfgbVPHFQ8LShD14643UfsJHj96k8rwYFi9B7pQTrrpqLm-KcEPZCp82z_NRbT5MOZn3VnbBC5e2pums1t9HD14ycKUc82jHxwvnc6WmRVKcn1rzXVrzo_UZfp8cU0d2clIrqcUreXlXM-ZuPWvON5Xnn4sHuSsei1vxoP9VPMhd8TgH-hD6gd_WD_x_68db8vR147yjNg_wm5N6B-gXgmqMmsdeMb2D81VnliF4MMByE_zZbJMIQior-KMBLodBWKE96DB2wuYgc5GD9LBnDrTx0AmYGPH8jdAxxQ9RL-6FN8HnXX-JH5vG74WGcO1DXpv-qFSnTE_G7yfYRcW-R_iG7PT-1RzB7U1QHD7ByJ5F5ABTTKZ5WsVkHazhob_4ACtcUB4Q3U5-Mt5S3tCGZaJdLOuaVhWu62zfkmXZLBdD1RSC4L5peEdFP5RFzRivK1JlsiWYUFxhihta4zKvq7pkTS2qYajIwDgqsBiZVHmaLWN3mXQuiHZJl0WTKdYJ5dKdnBAtjpA2o16Um8y2qQJd2Lk4m9J59-LFS69EGxNw_8jzYMSsxorF7yGi2yxY1e69P7h0v98ist1Jvw9d3psRkW10P_88HKz5Q0Sx3SZSDpFtIv13AAAA__8o9a71">