Search code examples
androidlinux-kernelkernel

error: expression requires 'double' type support, but ABI 'aapcs' does not support it


I'm compiling Android kernel using latest Clang (19) and that error is shown.

Here is the error output:

../drivers/clk/qcom/camcc-sm8150.c:547:2: error: expression requires 'double' type support, but ABI 'aapcs' does not support it
  547 |         F(266666667, P_CAM_CC_PLL0_OUT_ODD, 1.5, 0, 0),
      |         ^
../drivers/clk/qcom/camcc-sm8150.c:41:41: note: expanded from macro 'F'
   41 | #define F(f, s, h, m, n) { (f), (s), (2 * (h) - 1), (m), (n) }
      |                                         ^
../drivers/clk/qcom/camcc-sm8150.c:547:2: error: expression requires 'double' type support, but ABI 'aapcs' does not support it
../drivers/clk/qcom/camcc-sm8150.c:41:47: note: expanded from macro 'F'
   41 | #define F(f, s, h, m, n) { (f), (s), (2 * (h) - 1), (m), (n) }
      |                                               ^
../drivers/clk/qcom/camcc-sm8150.c:548:2: error: expression requires 'double' type support, but ABI 'aapcs' does not support it
  548 |         F(320000000, P_CAM_CC_PLL2_OUT_MAIN, 1.5, 0, 0),
      |         ^
../drivers/clk/qcom/camcc-sm8150.c:41:41: note: expanded from macro 'F'
   41 | #define F(f, s, h, m, n) { (f), (s), (2 * (h) - 1), (m), (n) }
      |                                         ^
../drivers/clk/qcom/camcc-sm8150.c:548:2: error: expression requires 'double' type support, but ABI 'aapcs' does not support it
../drivers/clk/qcom/camcc-sm8150.c:41:47: note: expanded from macro 'F'
   41 | #define F(f, s, h, m, n) { (f), (s), (2 * (h) - 1), (m), (n) }
      |                                               ^
../drivers/clk/qcom/camcc-sm8150.c:973:2: error: expression requires 'double' type support, but ABI 'aapcs' does not support it
  973 |         F(320000000, P_CAM_CC_PLL2_OUT_MAIN, 1.5, 0, 0),
      |         ^
../drivers/clk/qcom/camcc-sm8150.c:41:41: note: expanded from macro 'F'
   41 | #define F(f, s, h, m, n) { (f), (s), (2 * (h) - 1), (m), (n) }
      |                                         ^
../drivers/clk/qcom/camcc-sm8150.c:973:2: error: expression requires 'double' type support, but ABI 'aapcs' does not support it
../drivers/clk/qcom/camcc-sm8150.c:41:47: note: expanded from macro 'F'
   41 | #define F(f, s, h, m, n) { (f), (s), (2 * (h) - 1), (m), (n) }
      |                                               ^
../drivers/clk/qcom/camcc-sm8150.c:1143:2: error: expression requires 'double' type support, but ABI 'aapcs' does not support it
 1143 |         F(320000000, P_CAM_CC_PLL2_OUT_MAIN, 1.5, 0, 0),
      |         ^
../drivers/clk/qcom/camcc-sm8150.c:41:41: note: expanded from macro 'F'
   41 | #define F(f, s, h, m, n) { (f), (s), (2 * (h) - 1), (m), (n) }
      |                                         ^
../drivers/clk/qcom/camcc-sm8150.c:1143:2: error: expression requires 'double' type support, but ABI 'aapcs' does not support it
../drivers/clk/qcom/camcc-sm8150.c:41:47: note: expanded from macro 'F'
   41 | #define F(f, s, h, m, n) { (f), (s), (2 * (h) - 1), (m), (n) }
      |                                               ^
../drivers/clk/qcom/camcc-sm8150.c:1292:2: error: expression requires 'double' type support, but ABI 'aapcs' does not support it
 1292 |         F(80000000, P_CAM_CC_PLL0_OUT_EVEN, 7.5, 0, 0),
      |         ^
../drivers/clk/qcom/camcc-sm8150.c:41:41: note: expanded from macro 'F'
   41 | #define F(f, s, h, m, n) { (f), (s), (2 * (h) - 1), (m), (n) }
      |                                         ^
../drivers/clk/qcom/camcc-sm8150.c:1292:2: error: expression requires 'double' type support, but ABI 'aapcs' does not support it
../drivers/clk/qcom/camcc-sm8150.c:41:47: note: expanded from macro 'F'
   41 | #define F(f, s, h, m, n) { (f), (s), (2 * (h) - 1), (m), (n) }

This is the Clang toolchain I'm using: https://github.com/XSans0/WeebX-Clang/releases/latest

And this is the kernel source: https://github.com/LineageOS/android_kernel_xiaomi_vayu

Maybe I should downgrade my Clang compiler? Or someone know how to fix?

I tried to enable LLVM_IAS but same result :(


Solution

  • Fixed in this commit: https://github.com/llvm/llvm-project/commit/ea9ec80b7aa1bd34edd5b544cd41450573f2cbff

    Maybe I should use a stable Clang 🤔