x86inc: Fix call with memory operands
authorHenrik Gramner <henrik@gramner.com>
Wed, 29 Mar 2017 14:43:57 +0000 (16:43 +0200)
committerJames Darnley <jdarnley@obe.tv>
Fri, 9 Jun 2017 11:43:00 +0000 (13:43 +0200)
We overload the `call` instruction with a macro, but it would misbehave when
the macro argument wasn't a valid identifier. Fix it by explicitly checking
if the argument is an identifier.

libavutil/x86/x86inc.asm

index 128ddc1..c28bc8d 100644 (file)
@@ -1,7 +1,7 @@
 ;*****************************************************************************
 ;* x86inc.asm: x264asm abstraction layer
 ;*****************************************************************************
-;* Copyright (C) 2005-2016 x264 project
+;* Copyright (C) 2005-2017 x264 project
 ;*
 ;* Authors: Loren Merritt <lorenm@u.washington.edu>
 ;*          Anton Mitrofanov <BugMaster@narod.ru>
@@ -1037,7 +1037,11 @@ INIT_XMM
 
 ; Append cpuflags to the callee's name iff the appended name is known and the plain name isn't
 %macro call 1
-    call_internal %1 %+ SUFFIX, %1
+    %ifid %1
+        call_internal %1 %+ SUFFIX, %1
+    %else
+        call %1
+    %endif
 %endmacro
 %macro call_internal 2
     %xdefine %%i %2