@@ -323,8 +323,9 @@ bool ICF<ELFT>::equalsConstant(const InputSection *a, const InputSection *b) {
323323
324324 const RelsOrRelas<ELFT> ra = a->template relsOrRelas <ELFT>();
325325 const RelsOrRelas<ELFT> rb = b->template relsOrRelas <ELFT>();
326- return ra.areRelocsRel () ? constantEq (a, ra.rels , b, rb.rels )
327- : constantEq (a, ra.relas , b, rb.relas );
326+ return ra.areRelocsRel () || rb.areRelocsRel ()
327+ ? constantEq (a, ra.rels , b, rb.rels )
328+ : constantEq (a, ra.relas , b, rb.relas );
328329}
329330
330331// Compare two lists of relocations. Returns true if all pairs of
@@ -371,8 +372,9 @@ template <class ELFT>
371372bool ICF<ELFT>::equalsVariable(const InputSection *a, const InputSection *b) {
372373 const RelsOrRelas<ELFT> ra = a->template relsOrRelas <ELFT>();
373374 const RelsOrRelas<ELFT> rb = b->template relsOrRelas <ELFT>();
374- return ra.areRelocsRel () ? variableEq (a, ra.rels , b, rb.rels )
375- : variableEq (a, ra.relas , b, rb.relas );
375+ return ra.areRelocsRel () || rb.areRelocsRel ()
376+ ? variableEq (a, ra.rels , b, rb.rels )
377+ : variableEq (a, ra.relas , b, rb.relas );
376378}
377379
378380template <class ELFT > size_t ICF<ELFT>::findBoundary(size_t begin, size_t end) {
0 commit comments