Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Failed to compile opus with clang (r14b or r15 beta 1) #361

Closed
lakeman opened this issue Apr 11, 2017 · 4 comments
Closed

Failed to compile opus with clang (r14b or r15 beta 1) #361

lakeman opened this issue Apr 11, 2017 · 4 comments
Assignees
Labels
Milestone

Comments

@lakeman
Copy link

lakeman commented Apr 11, 2017

Attempting to compile silk/NSQ_del_dec.c from the opus codec (http://downloads.xiph.org/releases/opus/opus-1.1.4.tar.gz) for armeabi, using ndk-build fails when executing the following command;

$ ${NDK}/toolchains/llvm/prebuilt/linux-x86_64/bin/clang \
        -MMD -MP -MF \
        ${OUTPUT}/NSQ_del_dec.o.d \
        -gcc-toolchain ${NDK}/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64 \
        -fpic -ffunction-sections -funwind-tables -fstack-protector-strong -Wno-invalid-command-line-argument \
        -Wno-unused-command-line-argument -no-canonical-prefixes -fno-integrated-as -g \
        -target armv5te-none-linux-androideabi -march=armv5te -mtune=xscale -msoft-float -mthumb -Os \
        -DNDEBUG  -I${OPUS}/include \
        -I${OPUS}/silk \
        -I${OPUS}/silk/fixed \
        -I${OPUS}/celt \
        -I${OPUS} \
        -DANDROID -DNULL=0 -DSOCKLEN_T=socklen_t -DLOCALE_NOT_USED -D_LARGEFILE_SOURCE=1 -D_FILE_OFFSET_BITS=64 \
        -Drestrict='' -D__EMX__ -DOPUS_BUILD -DFIXED_POINT=1 -DDISABLE_FLOAT_API -DUSE_ALLOCA -DHAVE_LRINT \
        -DHAVE_LRINTF -DAVOID_TABLES -w -std=gnu99 -O3 -fno-strict-aliasing -fprefetch-loop-arrays -fno-math-errno \
        -Wa,--noexecstack -Wformat -Werror=format-security    \
        --sysroot ${NDK}/platforms/android-16/arch-arm  \
        -c ${OPUS}/silk/NSQ_del_dec.c \
        -o ${OUTPUT}/NSQ_del_dec.o

Output;

fatal error: error in backend: Cannot select: 0x4582860: i32 = ARMISD::SSAT 0x45350e0, Constant:i32<15>
  0x45350e0: i32 = sra 0x4538560, Constant:i32<1>
    0x4538560: i32 = add 0x4537990, Constant:i32<1>
      0x4537990: i32 = sra 0x4581c20, Constant:i32<7>
        0x4581c20: i32 = add 0x45355b0, 0x4535310
          0x45355b0: i32 = add 0x4582780, 0x45ca3b0
            0x4582780: i32 = sra 0x4538020, Constant:i32<16>
              0x4538020: i32 = mul 0x45ca570, 0x45ca110
                0x45ca570: i32 = sra 0x4582010, Constant:i32<16>
                  0x4582010: i32 = shl 0x45326d0, Constant:i32<16>


                  0x45ca340: i32 = Constant<16>
                0x45ca110: i32 = and 0x4534cf0, 0x45c9e00
                  0x4534cf0: i32,ch = load<LD4[%812]> 0x452ef10, 0x45ca810, undef:i32


                  0x45c9e00: i32 = AssertZext 0x4582710, ValueType:ch:i16

              0x45ca340: i32 = Constant<16>
            0x45ca3b0: i32 = mul 0x45ca570, 0x452f4c0
              0x45ca570: i32 = sra 0x4582010, Constant:i32<16>
                0x4582010: i32 = shl 0x45326d0, Constant:i32<16>
                  0x45326d0: i32,ch = load<LD4[%815]> 0x452ef10, 0x4531fd0, undef:i32


                  0x45ca340: i32 = Constant<16>
                0x45ca340: i32 = Constant<16>
              0x452f4c0: i32 = sra 0x4534cf0, Constant:i32<16>
                0x4534cf0: i32,ch = load<LD4[%812]> 0x452ef10, 0x45ca810, undef:i32
                  0x45ca810: i32 = add 0x4581ec0, Constant:i32<704>


                  0x452f840: i32 = undef
                0x45ca340: i32 = Constant<16>
          0x4535310: i32 = mul 0x45320b0, 0x4534cf0
            0x45320b0: i32 = sra 0x45327b0, Constant:i32<1>
              0x45327b0: i32 = add 0x452fa00, Constant:i32<1>
                0x452fa00: i32 = sra 0x45326d0, Constant:i32<15>
                  0x45326d0: i32,ch = load<LD4[%815]> 0x452ef10, 0x4531fd0, undef:i32


                  0x4535690: i32 = Constant<15>
                0x4531f60: i32 = Constant<1>
              0x4531f60: i32 = Constant<1>
            0x4534cf0: i32,ch = load<LD4[%812]> 0x452ef10, 0x45ca810, undef:i32
              0x45ca810: i32 = add 0x4581ec0, Constant:i32<704>
                0x4581ec0: i32 = add 0x4532040, 0x4537df0
                  0x4532040: i32 = add 0x45c9e70, 0x4538090


                  0x4537df0: i32 = shl 0x4581d70, Constant:i32<2>


                0x4531e80: i32 = Constant<704>
              0x452f840: i32 = undef
        0x45ca880: i32 = Constant<7>
      0x4531f60: i32 = Constant<1>
    0x4531f60: i32 = Constant<1>
  0x4535690: i32 = Constant<15>
In function: silk_noise_shape_quantizer_del_dec
clang: error: clang frontend command failed with exit code 70 (use -v to see invocation)
Android clang version 3.8.275480  (based on LLVM 3.8.275480)
Target: armv5te-none-linux-android
Thread model: posix
InstalledDir: /home/jeremy/Android/Sdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin
clang: note: diagnostic msg: PLEASE submit a bug report to http://llvm.org/bugs/ and include the crash backtrace, preprocessed source, and associated run script.

(Android.mk based on https://github.com/xuan9/Opus-Android/blob/master/Android.mk)

Current workaround, use ndk r13b, which completes successfully.

@enh
Copy link
Contributor

enh commented Apr 11, 2017

@pirama-arumuga-nainar ?

@pirama-arumuga-nainar
Copy link
Collaborator

I was able to reproduce the issue with the current Clang but it's fixed in Clang based on r285906, which should make it to the stable r15.

@DanAlbert
Copy link
Member

@pirama-arumuga-nainar: let me know when the prebuilts are available

@DanAlbert
Copy link
Member

New clang has been merged, so this should be good now (will be in r15 beta 2).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

4 participants