The issue was my assignment of the postorder. I needed to use push_back in the postorder function instead and reverse after assigning.
for (u32 i = 0; i < m_nodes.size(); ++i) {
m_nodes[rev_postdom[i]].m_postorder = i;
}
std::reverse(rev_postdom.begin(), rev_postdom.end());
rev_postdom.pop_back();