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

    <tr>
        <th>Summary</th>
        <td>
            D138922 breaks addtf3.c compilation on Solaris/sparcv9
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            bug,
            backend:Sparc,
            regression
      </td>
    </tr>

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

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

<pre>
    Compilation of `compiler-rt/lib/builtins/addtf3.c` and `compiler-rt/lib/builtins/divtf3.c` is currently broken on Solaris/sparcv9:
```
fatal error: error in backend: Cannot select: t31: f128 = SPISD::SELECT_REG t43, t17, Constant:i32<49>, t29
  t43: f128 = INSERT_SUBREG t42, t38, TargetConstant:i32<4>
    t42: f128 = INSERT_SUBREG IMPLICIT_DEF:f128, t35, TargetConstant:i32<2>
      t41: f128 = IMPLICIT_DEF
      t35: f64,ch = load<(load (s64) from constant-pool)> t0, t53, undef:i64
        t53: i64,ch = load<(load (s64) from got)> t0, t52, undef:i64
          t52: i64 = add SPISD::GLOBAL_BASE_REG:i64, t50
            t51: i64 = SPISD::GLOBAL_BASE_REG
            t50: i64 = add t47, t49
 t47: i64 = SPISD::Hi TargetConstantPool:i64<fp128 0xL00000000000000007FFF800000000000> 0 [TF=11]
                t46: i64 = TargetConstantPool<fp128 0xL00000000000000007FFF800000000000> 0 [TF=11]
 t49: i64 = SPISD::Lo TargetConstantPool:i64<fp128 0xL00000000000000007FFF800000000000> 0 [TF=12]
                t48: i64 = TargetConstantPool<fp128 0xL00000000000000007FFF800000000000> 0 [TF=12]
 t33: i64 = undef
        t33: i64 = undef
      t39: i32 = TargetConstant<2>
    t38: f64,ch = load<(load (s64) from constant-pool + 8)> t0, t37, undef:i64
      t37: i64 = add t53, Constant:i64<8>
 t53: i64,ch = load<(load (s64) from got)> t0, t52, undef:i64
 t52: i64 = add SPISD::GLOBAL_BASE_REG:i64, t50
            t51: i64 = SPISD::GLOBAL_BASE_REG
            t50: i64 = add t47, t49
 t47: i64 = SPISD::Hi TargetConstantPool:i64<fp128 0xL00000000000000007FFF800000000000> 0 [TF=11]
                t46: i64 = TargetConstantPool<fp128 0xL00000000000000007FFF800000000000> 0 [TF=11]
 t49: i64 = SPISD::Lo TargetConstantPool:i64<fp128 0xL00000000000000007FFF800000000000> 0 [TF=12]
                t48: i64 = TargetConstantPool<fp128 0xL00000000000000007FFF800000000000> 0 [TF=12]
 t33: i64 = undef
        t36: i64 = Constant<8>
      t33: i64 = undef
    t40: i32 = TargetConstant<4>
  t17: f128,ch = CopyFromReg t0, Register:f128 %87
    t16: f128 = Register %87
  t30: i32 = Constant<49>
  t29: i64 = or t26, t28
    t26: i64 = xor t4, t9
 t4: i64,ch = CopyFromReg t2:1, Register:i64 %3
        t3: i64 = Register %3
      t9: i64,ch = CopyFromReg t7:1, Register:i64 %1
        t8: i64 = Register %1
    t28: i64 = xor t27, Constant:i64<-9223372036854775808>
      t27: i64 = xor t2, t7
 t2: i64,ch = CopyFromReg t0, Register:i64 %2
          t1: i64 = Register %2
        t7: i64,ch = CopyFromReg t0, Register:i64 %0
          t6: i64 = Register %0
      t25: i64 = Constant<-9223372036854775808>
In function: __addtf3
```
A reghunt traced this down to [D138922](https://reviews.llvm.org/D138922).

The error can be reproduced with
```
clang -cc1 -triple sparcv9-sun-solaris2.11 -emit-obj -O3 addtf3-0ef566.c
```
[addtf3-0ef566.c.txt](https://github.com/llvm/llvm-project/files/10281648/addtf3-0ef566.c.txt)

</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsV12PmzoT_jXOjUWEx0DMRS4SEvqutO9ptdlzvTLgELcER8Zs239_ZEN2gXycno9eHKmraE3M-HlmxjOTGd40sqyFWKJwjcLNjLfmoPRSK20Os0wV35eJOp5kxY1UNVZ7jCI_dztCe9ogSCuZIUizVlZG1g2ClBeF2dN5jiIf87r4gROFfH07IRuct1qL2lTfcabVF1FjVeOdqriWVrg5cZ2_xoiukL9B_gpFfv9xX_fc8AoLrZVGdNU9YFnjjOdfRF3YvYTXtTK4EZXIjd0wlNhlT4BhRDd49-lht7EEdLXbPm6T55en7QdsAoogwYYs7JKoujG8tuclBUSTIEZ06wQg7lTB7sgQ-OG33fbp-WX3-7oDBCdPmV2euS6FuYS1qD0cdkduAz78_9PjQ_Lw_LLZpoiurFRHEN4hgBGBpRg7YwQ6lKOhk4sCBEl-cLKV4gWiCQJmnzAC1tjXMd5rdcR5T-2dlKoQWH9h4zsNQ-fati7E3ioWBUMm7N7TFZY_zlUqM2GAuwzYSXQcDp4XxTAOPjx-XK8eX9ar3dYGQw_hgP0pksUiQ6w7OFeO-lM1TOAizgTnuLIb1-H_JyfX_Mm6ulOWJvuTvVT_26M_-VukacoG363ffIzC9XOK6IYQFG4uNe2CJRpqco3732C1pl83-FH9DIPhjsHspxk8YDWUDmm6sB2nxJ9IGNq5jMIVRS_S3tagf5DMGMEas3HC0cWdhLNvp1He1YBhfXJ3yN4V_Yll4Ff2_8r-_1T2jzw_yGs2_Tm_i2UC_26VGHYftvHpG4P39EvU6Xuq1fFJlH2KPYlSNkbovgHBCEK2GDCSaNRenMXHcoaO9BpqFA9VglFkKI0NRF0PxgaUMHLWNyvWZe97Sl3UlZFhtjaQiXEODkI6vZgh1dC4kaCJ7xMubhOSCSG7RUiGHmAXHoCLNtYljRcDULoAn0YsDBaLkPkXIQWLSzTnz_P9Gbhv3jRQetPgoicjt4ybiJrF3yK8KN4mukXojz0Q3ki_u-57qPG-rXM7StnjLy_dqHR1jllhLcpDWxtsNM9Fgc1BNrhQX2tslK0aG0JZDK5qADsYc2psTYQUQarFqxRfm3lVvR7nSpcI0rM0xPOezv1_Poh-RMp5jTOBtThpVbSW8Ks0h6uq5RWvS-zlOcGe0fJUCdwPZV7T1l7TjWowJwR74iiNp7LP2PtIcWeu54t9GEXz_Co4CtcTsbn5Zq5ZWUpzaLN5ro52pqxez4t30uqznewg3ctK2JmR-MBIFLC36XQMfh7YZsWSFjGN-UwsSbQgUchCn8wOy2wfRqGgnPMwzyjNaBzGzOeE5BQIDaOZXIIPQOyH0NAnc5IxBsB4LIAXIGIU-OLIZfV2JzPZNK1YhnEURLOKZ6Jq3AwOkLUlsjeV2Oe3qXVnPfy2r0WpRdPYQHIhMNNLZ3rWlg0K_Eo25v36Z0aaSiz7EMCZFvxLg89jOs6HA_6VSXvW6mr5l13vzLMozsI_AgAA___yI1NT">