diff options
Diffstat (limited to 'contrib/llvm/patches/patch-r262261-llvm-r199940-sparc.diff')
-rw-r--r-- | contrib/llvm/patches/patch-r262261-llvm-r199940-sparc.diff | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/contrib/llvm/patches/patch-r262261-llvm-r199940-sparc.diff b/contrib/llvm/patches/patch-r262261-llvm-r199940-sparc.diff new file mode 100644 index 0000000..3b0940f --- /dev/null +++ b/contrib/llvm/patches/patch-r262261-llvm-r199940-sparc.diff @@ -0,0 +1,21 @@ +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; + } |