I don't want to add to the large list of xorg-x11 vs xfree bugs that have been filed, because I don't think this is specifically one of them. This is more of a general bug with portage.
I had xfree-4.3.0-r5 installed on my system, and started to do an upgrade world. I have xterm installed as well, and it was about to be upgraded to xterm-191. xterm-191 has the following in its DEPEND line:
DEPEND="|| ( x11-base/xorg-x11 >=x11-base/xfree-4.3.0-r6 )
Now, I didn't have xfree-4.3.0-r6 installed on my system, but it was in the list of things that portage was about to upgrade to in my 'upgrade world'. However, when portage was calculating dependencies, all it discovered was that neither of xterm-191's dependencies were installed: I didn't have xorg-x11, nor did I have xfree-4.3.0-r6. The result of this is that portage decided to install xorg-x11 for me, to satisfy xterm's dependencies. My world thus had both xfree-4.3.0-r6 *and* xorg-x11 being installed.
Portage needs to note which packages are *about* to be installed when it calculates dependencies, not merely those which are currently installed.
Unfortunately, the output of my emerge world that demonstrates this problem is on a machine which is on the other side of a malfunctioning switch, so I can't paste it here, but I think I've described the situation adequately enough. When I can get to the switch to fix it, I will paste the output.
*** This bug has been marked as a duplicate of 1343 ***