[PATCH] [mips] Don't use odd-numbered single precision registers for fastcc calling convention if -mno-odd-spreg is used.

Daniel Sanders daniel.sanders at imgtec.com
Sat Jul 26 07:31:34 PDT 2014


LGTM, with a nit

I'll merge it to the branch once it's committed since it fixes the last of the MIPS32r6/MIPS64r6 test-suite failures.

================
Comment at: test/CodeGen/Mips/fastcc.ll:300-302
@@ +299,5 @@
+; NOODDSPREG-DAG:    lw $[[R0:[0-9]+]], %got(gfa10)($[[GP]])
+; For some reason the expression $[[F0:f[0-9]*[02468]]] for even float registers
+; doesn't work here (it works below in callee2), so I just enumerated the
+; registers.
+; NOODDSPREG-DAG:    lwc1 $[[F0:f20|f22|f24|f26|f28|f30]], 0($[[R0]])
----------------
It's because FileCheck scans ahead for ']]' which leaves the pattern as 'f[0-9]*[02468'. I usually work around it using a '+' like so:
  $[[F0:f[0-9]*[02468]+]]
I can't explain why the other one works though. Triple ']' has never worked correctly for me.

================
Comment at: test/CodeGen/Mips/fastcc.ll:357
@@ +356,3 @@
+; NOODDSPREG-DAG:    lw      $[[R0:[0-9]+]], %got(gf10)($[[GP]])
+; NOODDSPREG-DAG:    lwc1    $[[F0:f[0-9]*[02468]]], [[OFFSET]]($sp)
+; NOODDSPREG-DAG:    swc1    $[[F0]], 0($[[R0]])
----------------
Nit: Change the ']]]' to ']+]]' since we don't understand why this particular case works when all other cases of ']]]' we've encountered result in invalid regexes

http://reviews.llvm.org/D4682






More information about the llvm-commits mailing list