• Sam Lantinga's avatar
    Fixed bug #1111 · b13cdc5d
    Sam Lantinga authored
    kwm@rainbow-runner.nl      2011-01-30 06:28:27 PST
    
    Created attachment 562 [details]
    Build fix with clang.
    
    When building sdl 1.2.14 with the Clang compiler http://clang.llvm.org .
    The build fails in src/video/mmx.h with the following error:
    
    --------------------------------------------------
    ./src/video/SDL_RLEaccel.c:831:5: error: invalid operand for instruction
        CHOOSE_BLIT(RLECLIPBLIT, alpha, fmt);
        ^
    ./src/video/SDL_RLEaccel.c:831:17: note: instantiated from:
        CHOOSE_BLIT(RLECLIPBLIT, alpha, fmt);
                    ^
    ./src/video/SDL_RLEaccel.c:831:5: note: instantiated from:
        CHOOSE_BLIT(RLECLIPBLIT, alpha, fmt);
        ^
    ./src/video/SDL_RLEaccel.c:647:23: note: instantiated from:
                                    blitter(2, Uint8, ALPHA_BLIT16_565MMX); \
                                                      ^
    ./src/video/SDL_RLEaccel.c:282:4: note: instantiated from:
              movq_r2m(mm3, *dstp);                         \
              ^
    In file included from ./src/video/SDL_RLEaccel.c:99:
    ./src/video/mmx.h:379:28: note: instantiated from:
    #define movq_r2m(reg, var)      mmx_r2m(movq, reg, var)
                                    ^
    <scratch space>:192:1: note: instantiated from:
    "movq"
    ^
    <inline asm>:1:2: note: instantiated into assembly here
            movq %mm3, %dx
            ^
    --------------------------------------------------
    
    According to the clang developers this is a invalid inline assembly.
    Using the attached patch from the last commit in the below bug report fixes the
    compile.
    More details from: http://llvm.org/bugs/show_bug.cgi?id=6730
    b13cdc5d
mmx.h 23.3 KB