summaryrefslogtreecommitdiffstats
path: root/contrib/llvm/patches/patch-r262261-llvm-r199940-sparc.diff
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/llvm/patches/patch-r262261-llvm-r199940-sparc.diff')
-rw-r--r--contrib/llvm/patches/patch-r262261-llvm-r199940-sparc.diff21
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;
+ }
OpenPOWER on IntegriCloud