You're confusing semantic markup for using <divs> for layout.
In < IE8 there's loads of <div class="clearfix"> around because display:inline-block wasn't supported.
In < IE8 there's loads of <div class="clearfix"> around because display:inline-block wasn't supported.
Why don't we just call a spade a spade - real semantic html is impossible for the vast majority of real-world use cases, and all we're left with is trying not to fuck it up even more by using <div class="p">. Which brings us into, as I called it elsewhere, 'duh' territory.