Pull in r199940 from upstream llvm trunk (by Eric Christopher): Fix out of bounds access to the double regs array. Given the code this looks correct, but could use review. The previous was definitely not correct. Introduced here: http://svnweb.freebsd.org/changeset/base/262261 Index: lib/Target/Sparc/AsmParser/SparcAsmParser.cpp =================================================================== --- lib/Target/Sparc/AsmParser/SparcAsmParser.cpp +++ lib/Target/Sparc/AsmParser/SparcAsmParser.cpp @@ -734,7 +734,7 @@ bool SparcAsmParser::matchRegisterName(const AsmTo && !name.substr(1, 2).getAsInteger(10, intVal) && intVal >= 32 && intVal <= 62 && (intVal % 2 == 0)) { // FIXME: Check V9 - RegNo = DoubleRegs[16 + intVal/2]; + RegNo = DoubleRegs[intVal/2]; RegKind = SparcOperand::rk_DoubleReg; return true; }