<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=http://email.email.llvm.org/c/eJylVU2T4yYQ_TXypUsqBJZkHXzw2OvUHjJzGCd73AKBJDJYOAJ5Kvvr0yB7xuNsZTcVF27x1c3rR3cjrPxrnZBdQjZbezxqD3qAPyflvLZDwjbz0kWW5NLisJn3y5IVOVsSIWrRVhVhrajqktaqlYIXq1Upl2xZ1stZaTP53o5oGB71yM-w42cFCdsOYSSTJems7YzK0HjCPs06O-5V0AD4oiT8ykfIGeQVTpEoaqAkryGhDwR_t4hRBZLiYbf5BZ0TelBjUuzgcwscDvZFDXveeDvCq52MBKHgqMYOj9CDt6C9g8mhBt1CYwenpRrB9ypOgkFMY_aBnSifd79zMym4PRJZZJuzdtrfHJrQ1fPu0Ur0nm4eE4r4q4cr6izLrt2E7rEFzOFsZ80FgHbohA_2oL0Y3MIr7uijM0f-gv1pVGGuDyTzO4tNz4dGoYnZ62D-iKNOYWfM4NDjCadRndWARBzifj04aEd7RIJ6LbTXQ3dn1J68PupvPESPe_NBt7i-ekzxRnvungb1m1M4EZ2mJTaIa-jXV6E6PcxrYQrRPJ0aZOm6ne2wwefn3czqB0Lr90vfSHmwX-z4YrTzUXdzRXB3yqWxh-_G-Cw_DZgRE3obSHJIpZQ6eMgN4M5bDCVJHRjFpQvEYhCfNF4YcqJAGPsK0ynkl7M4brhT7j7Dqi2Ev1CtxasLXd5ioIXe-4709gc_OfOuHtGETla5-M0Jcx-3JJSBbWFA4l3wIsSxjHuRsi2JwYp62GdlESTL_2kgnOPuM407iJlwY25Fl2_mlssKZUVvzUV5wIoUKQPuPW96JTMIBYsPEgyiC3SP0w8qljENpE8UJO8uTqWXK0oD2DRcUTqdMmP-JRiwnvxI_5s-YZ3B-Oq9P8U7jtnRad9PIpY2ujfmfP2kp9H-oRqM032Lthx-q6rKaYXs7H_mrGvkz3Ih10zWrOYLHovt2nDnC0xXt5hGs_7PmLRzUwRV0FWxWvTrsiGlYpLQAgs7yUspRLlqljVhghZ5QReGC2XcGplKKB3UK0QT2EdWFv8fgV5TQvOcUkYJPjyrTEhKRN3Iktf4CskanxF15NpkwU5mx26BJASTYuocLoai4N4XuXO6G5SKgBGh197Ewd27sf1eOs_5qd4qxE1tuAn81C2iE-vowd82GTWP>52858</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            [DAGCombiner] Compile time blow up after enqueuing additional TokenFactor-s
        </td>
    </tr>

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

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

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

<pre>
    
Commit in question:

```
commit d6351340bb9bf7703fb79629efdba5886d434694
Author: Nirav Dave <niravd@google.com>
Date:   Wed Mar 13 17:07:09 2019 +0000

    [DAGCombiner] If a TokenFactor would be merged into its user, consider the user later.


SDValue DAGCombiner::visitTokenFactor(SDNode *N) {
  ...
  // If the sole user is a token factor, we should make sure we have a
  // chance to merge them together. This prevents TF chains from inhibiting
  // optimizations.
  if (N->hasOneUse() && N->use_begin()->getOpcode() == ISD::TokenFactor)
    AddToWorklist(*(N->use_begin()));
```

Enqueuing these additional `TokenFactor`-s leads to compile time blow up in some cases:

| | before | after |
| ------------- | ------------- | ------------- |
| time | .7s | 103s |
| # of nodes combined | 8,029 | 1,365,331 |
| # times a TokenFactor was visited | 8,824 | 1,447,721 |

Test case attached. Command line to run:

```
llc -O2 dagcombine-compile-time-blow-up.ll
```

[dagcombine-compile-time-blow-up.zip](https://github.com/llvm/llvm-project/files/7771278/dagcombine-compile-time-blow-up.zip)


</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyVVUtz2zYQ_jXUZYccCKBI8cCDLEWdHGofrDbHDECAJGqIUAlQnubXdwFKtqxkmlQDLRePfX27WAgr_6kTskvIZmuPR-1BD_D3pJzXdkjYZt660IJcRpw283lZsNWS5USISrRlSVgryqqglWql4Kv1upA5y4sqn4U2k-_tiIrhUY_8DDt-VpCw7RBmMslJZ21nVIbKE_Zpltlxr4IEwBcl4Xc-wpLBssQlEkkFlCwrSOgDwd-txygCyepht_kNgxN6UGOy2sHnFjgc7Isa9rzxdoRXOxkJQsFRjR2a0IO3oL2DyaEE3UJjB6elGsH3Ki6CQZ_G7AM6kT7v_uRmUnBrElFkm7N22t8YTej6efdoJUZPN48JRf_Lh6vXWZZd2YTucQSfg21nzcUB7TAIH_RBe1G4hVc80cdgjvwF-WlUYa0PIPM7jU3Ph0ahijnqoP6Is04hM2Zw6NHCaVRnNSAQh3heDw7a0R4RoF4L7fXQ3Sm1J6-P-hsP1ePeYtAt7q8fU8xoz93ToP5wChdi0LTAAXEP4_oqVKeHeS8soTdPpwZRuh5nOxzw-Xk3o_oB0Oo96RspD_aLHV-Mdj7Kbq4e3Fm5DPbwwxqf6acBb8SE0QaQHEIppQ4RcgN48taHgqQOjOLSBWCxiE8aE4aYKBDGvsJ0CvfLWZw33Cl3f8PKLYS_UK3F1AWWt1hogXs_kd7-4BdX3sWjN4HJShe_S8LcxyMJZWBbGBB4F6IIdSzjWYRsS2KxohzyrFgFypbfKwh23P1N4w7iTbhRt6b5m7o8L5GW9FZdpAfsSBEy4N7zplcyg9Cw-CDBoHcB7nH6SccypoH0iYLk3SWo9JKiNDibhhSl0ykz5j-KAfvJz-S_6RP2Gayv3vtTzHG8HZ32_SRia6N7Y87XT3oa7V-qwTrdt6jL4bcsyyUtEZ39r9i6Vv5MF7JmsmIVX3jtjaq_b4DbH9XlXGjqrdRvivwmg6lbTKOp_3dg2rkpRrai69V60deNIlKWYi1WrKWiIBXhGHQp8rJknMhqYbhQxgXvE0oH9QpRBfIYwULXlNDlklJGCb4960xISkTVyIJX-BDJCl8SdeTaZMGPzI7dYqyjS2LqHG6GvuDeN7lzuhtUBCvo5_GZqg13foWNzi2i8To6_y_-SiDq">