<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=http://email.email.llvm.org/c/eJylVU2TmzgQ_TX40mUXSMbGBw7xOLO7VcktVTlOAWqwUiCxkpiZ5NenJcCMPXFyiEros_upu5_UlFp8zx1aB1VhMeIfovgUxXO7i6caplI5UPj61Bg99BE_LqsR-4CvyVMpXcQewoSFySyzSOJr1Q5WahWx7FlLEbEDRPsrMQBZE2K2HDXK0NojVWhQoSkcgu0K49BAYS12ZYvwIt15Uk5IaYYDqLXxi96ADiJ-gphMC8OHK4-gi9gx1DdWQSgj7Oxleuyi9EQrO5h9HZe8pkE3GAXJxX2vH-1P8-QynBcmhXiJ10XimoGxfdBdXxgU4DQ0VUUhh6otVAODRXAvGoSsazRI3hpspKUY2RACXdcWA1tUu7Hz2uDOqEBaioVHJQSpBPZIjaoQCiFowTozVI6Ys_7coReeAtoyaC1sAM7O9dZfoMBSo0WpW7fRpqHZD_rU53_qw_arUW9dWY-W_-bSbT4dj_ETJ2D4Q5muB9Eb8Y9fzuTOf4puCnzSuod_sRBoPMoJe3cmoeQtuwCtMKF_SRIfEqLz9eD5vCPEZqEkfifl6DW9kfKIV_vlRqHvR9d215s-2L54YFKeuojxLcB6fRP3O6qHoHlYFH35g7IdShuUs6CcTcq_NZ3_krF1uJS_5jK7ZJgZser60Wg-untzHv4P43nJDMHfQVxYiWdS0gnrLn8X-rZ3JBcaJgFqtzciStjl2Kll9-zPbiKyEjkXB34oVsXgztrkz7Wo69Vg2vzmJVFSG8pNpenBPrbt89yte6O_YUUZ91FaO6ClQcp3LF2d80rw7U4wznma7utKlAnP0jLLdnFVHTDFVVuU2NqcIhAxpvAFAgSNKRCrv7dA5ixmVON9kiR7tt3weBfvBc-SLK0ytqujbYxdIduNx_FJYmXyAFkOjaXNlrKWXTYpw8uGklMwmCx00rVhonsnO_mj8HnJJ2S6ecv_oUTnfw-VFpQWz4WasmRJPzrQNNNKSK9YtO13sNhiSG-r4EseHPkJnC_tcA>53625</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            [optimization] gcc generate better code than clang base on conditionally selection
        </td>
    </tr>

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

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

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

<pre>
    test case:

```
int nex_group;
int *ex1_bit,*ex2_bit;

int exclusion(void) {

  if (nex_group) { // generate smarter assemble with if (1)
    for (int m = 0; m < nex_group; m++) {
      if (ex1_bit[m] & ex2_bit[m]) return 1;
    }
  }

  return 0;
}
```

Compared to gcc, clang use two different registers for offset **m**,  then is need two independence add instructions to update address .  https://godbolt.org/z/nMGf94Wrn

- clang

```
.LBB0_3:                                // =>This Inner Loop Header: Depth=1
        ldr     w11, [x9]
        ldr     w12, [x10]
        tst     w12, w11
        b.ne    .LBB0_6
        add     x10, x10, #4  -- update address
        add     x9, x9, #4      -- update address
        subs    x8, x8, #1
        b.ne    .LBB0_3
```
- gcc
```
.L8:
        cmp     x3, x1
        beq     .L1
.L3:
        ldr     w0, [x5, x1]
        ldr     w2, [x4, x1]
        add     x1, x1, 4
        ands    w0, w0, w2
        beq     .L8
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyFVEuP2zgM_jXKhUhgS3k4Bx-ayXZ3gfZWoMeBbdGOFrbkleSZaX99KdmOJ2nTGrIeFD-K5CexNPJb7tF5qAqHTHxgyZklc79PphaXSnvQ-PbcWDP0TJwWKeMf8C19LpVn_CkueFzMOosmvlXt4JTRjGcvRknGj8AON2oAqiaL2XLUqEOyj9SgQY228AiuK6xHC4Vz2JUtwqvylwmcEmg2B1AbG4TBgQ6YOENCrsXp001E0DF-iu2dVxC_0ewc5e7Usd2ZJHuYYx1FAWnRD1ZDeg0_4NnhPC-u01kwAZIlX1eNWwbG_sl0fWFRgjfQVBWlHKq20A0MDsG_GpCqrtEiRWuxUY5y5GIKTF07jGxR68YhoMFfUINylItglSwoLbFH6nSFUEhJAuftUHlizoVzh14GCmjLonOwAbh437twgSJLjZGlaf3G2IZW3-nXn_-uj9uvVr8PZT16_ptLt_l0OiXPggzDH77pehC9TPz15ULh_KvppsAnY3r4BwuJNlg5Y-8vpJS-ZxeglTaOr2kaUkJ0vh0Dnw-U-KyUJj9peXpN77SCxZv9cqMxjGNo-9vNkOzwBcMEngbGxRZgvb7L-wPoMSKPCzB8fwC7oXQRnEVwNoF_67r4JWPreCl_zWV2rTCzxarrR6fFGO7defg_jOelswnxk4krK8lMym6y9ZC_K33bB5oLDZMC9ds7FS3dcuzU80f-Z3cZWclcyKM4FiuvfIs5OWN6rzr1vQiPLFQXSuNS7Er0odZVRtIbvxR6evIlVW0wtDJaqgAs2vYbOGwxvtXVYNv87mVSkRzKTWWoAHxs25d5WPfW_EcoWirnBnQ02Yk9360ueYZ45FsUB57sq63gtURZ1pncFbISouSrtiixdSEIxrnGV4gmaE5xrFTOE04tOaRpeuDbjUj2yUGKLM12Vcb3Ndsm2BWq3QQ_QslY2Ty6VA6No82WaphbNqneq4ZKVTyO7BeDvxibv9Syrlfx4Dw6_gNkb9iE">