Fixes compilation of llvm-3.3 on gcc-4.6 and 4.7 when VIDEO_CARDS=radeon This issue is caused because although Q is a multiset the original code tries to get a set iterator which can't be converted in a multiset one. The fix is as simple as just using a multiset iterator. Patch by Francisco Blas Izquierdo Riera (klondike) Consider the changes in the Public Domain https://bugs.gentoo.org/show_bug.cgi?id=474096 --- lib/Target/R600/R600MachineScheduler.cpp +++ lib/Target/R600/R600MachineScheduler.cpp @@ -290,7 +290,7 @@ SUnit *R600SchedStrategy::PopInst(std::multiset &Q) { if (Q.empty()) return NULL; - for (std::set::iterator It = Q.begin(), E = Q.end(); + for (std::multiset::iterator It = Q.begin(), E = Q.end(); It != E; ++It) { SUnit *SU = *It; InstructionsGroupCandidate.push_back(SU->getInstr());