[Bug 212798] multimedia/transcode: Fix build with clang 3.9.0

bugzilla-noreply at freebsd.org bugzilla-noreply at freebsd.org
Sun Sep 18 17:07:05 UTC 2016


https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=212798

            Bug ID: 212798
           Summary: multimedia/transcode: Fix build with clang 3.9.0
           Product: Ports & Packages
           Version: Latest
          Hardware: Any
                OS: Any
            Status: New
          Severity: Affects Some People
          Priority: ---
         Component: Individual Port(s)
          Assignee: freebsd-ports-bugs at FreeBSD.org
          Reporter: dim at FreeBSD.org
                CC: cyberbotx at cyberbotx.com
                CC: cyberbotx at cyberbotx.com
             Flags: maintainer-feedback?(cyberbotx at cyberbotx.com)

Created attachment 174922
  --> https://bugs.freebsd.org/bugzilla/attachment.cgi?id=174922&action=edit
Add newlines to inline asm

In bug 212343, for the exp-run with clang 3.9.0, we encountered this error in
multimedia/transcode [1]:

motion.c:353:4: error: no matching '.endr' in definition
          " pxor         %%mm0 , %%mm0;          /* clear mm0                  
                       */"
          ^
<inline asm>:1:466: note: instantiated into assembly here
         pxor         %mm0 , %mm0;          /* clear mm0                       
                  */ pcmpeqw      %mm6 , %mm6;          /* Build 7f7f7f7f7f7f7f
in a register                 */ psrlw        $9    , %mm6;          /*        
                                           */ packuswb     %mm6 , %mm6;        
 /*                                                    */                      
    ;          /*                                                    */ .rept 8
                  ;          /*                                                
   */ movq        (%esi), %mm1;          /* 8 Pixels from filtered frame to mm1
               */ movq        (%edi), %mm2;          /* 8 Pixels from filtered
frame to mm2 (displaced)    */ movq        (%eax), %mm3;          /* reference
to mm3                                   */ psrlq        $1    , %mm1;         
/* average source pixels                              */ psrlq        $1    ,
%mm2;          /* shift right by one (divide by two)                 */ pand   
     %mm6 , %mm1;          /* kill downshifted bits                            
 */ pand         %mm6 , %mm2;          /* kill downshifted bits                
             */ paddusw      %mm2 , %mm1;          /* add up ...               
                         */ movq         %mm3 , %mm4;          /* copy
reference to mm4                              */ psubusb      %mm1 , %mm3;     
    /* positive differences between mm2 and mm1 */ psubusb      %mm4 , %mm1;   
      /* positive differences between mm1 and mm3 */ paddusb      %mm3 , %mm1; 
        /* mm1 now contains abs(mm1-mm2) */ paddusw      %mm1 , %mm0;         
/* add result to mm0                                  */ addl         %ecx ,
%esi;          /* add framewidth to frameaddress                     */ addl   
     %ecx , %edi;          /* add framewidth to frameaddress                   
 */ addl         %ecx , %ecx;          /* add framewidth to frameaddress       
             */ .endr                     ;          /*                        
                           */                                      /*          
                                         */ movq         %mm0 ,
calc_SAD_half_mmx.a at GOTOFF(%edx)   ;          /* make mm0 available to gcc ... 
                    */
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
                                                                        ^
1 error generated.

For some reason, that particular inline assembly block does not have embedded
newlines, and this trips up the .rept .endr processing.  Fix it by adding
newlines.

[1]
http://package18.nyi.freebsd.org/data/headi386PR212343-default/2016-09-11_07h04m19s/logs/errors/transcode-1.1.7_26.log

-- 
You are receiving this mail because:
You are the assignee for the bug.


More information about the freebsd-ports-bugs mailing list