Skip to content

"error in backend" caused in the code using _Float16 and long double #43730

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

Closed
utsumi-fj mannequin opened this issue Dec 27, 2019 · 3 comments
Closed

"error in backend" caused in the code using _Float16 and long double #43730

utsumi-fj mannequin opened this issue Dec 27, 2019 · 3 comments
Labels
backend:AArch64 bugzilla Issues migrated from bugzilla

Comments

@utsumi-fj
Copy link
Mannequin

utsumi-fj mannequin commented Dec 27, 2019

Bugzilla Link 44385
Version 9.0
OS Linux
CC @Arnaud-de-Grandmaison-ARM,@topperc,@smithp35

Extended Description

When compiling the following code, "error in backend" was caused.

test.c

#include <stdio.h>

_Float16 test(int    const  n,
            long double const* x) {
  _Float16 ret = 0.0f16;
  for(int i=0; i<n; ++i){
    ret += (_Float16)x[i];
  }
  return ret;
}

int main() {
  long double a[35];

  for (int i=0; i<35; i++) {
    a[i] = (long double)i;
  }

  printf("test: %f\n", (float)test(35, a));

  return 0;
}

The command and the error when compiling at x86_64 machine is below.

$ clang --target=aarch64-unknown-linux-gnu -S test.c -I ./include
fatal error: error in backend: Cannot select: 0xd78c70: f16 = fp_round 0xd78da8, TargetConstant:i64<0>
  0xd78da8: f128,ch = load<(load 16 from %ir.15)> 0xd18a98, 0xd78e10, undef:i64
    0xd78e10: i64 = add 0xd786c0, 0xd78658
      0xd786c0: i64,ch = load<(dereferenceable load 8 from %ir.4)> 0xd18a98, FrameIndex:i64<1>, undef:i64
        0xd78c08: i64 = FrameIndex<1>
        0xd78d40: i64 = undef
      0xd78658: i64 = shl 0xd78a00, Constant:i64<4>
        0xd78a00: i64,ch = load<(dereferenceable load 4 from %ir.6), sext from i32> 0xd18a98, FrameIndex:i64<3>, undef:i64
          0xd78b38: i64 = FrameIndex<3>
          0xd78d40: i64 = undef
        0xd78588: i64 = Constant<4>
    0xd78d40: i64 = undef
  0xd787f8: i64 = TargetConstant<0>
In function: test
clang-9: error: clang frontend command failed with exit code 70 (use -v to see invocation)
clang version 9.0.1
Target: aarch64-unknown-linux-gnu
Thread model: posix
InstalledDir: /work/utsumi/llvm9/bin
clang-9: note: diagnostic msg: PLEASE submit a bug report to https://bugs.llvm.org/ and include the crash backtrace, preprocessed source, and associated run script.
clang-9: note: diagnostic msg:
********************

PLEASE ATTACH THE FOLLOWING FILES TO THE BUG REPORT:
Preprocessed source(s) and associated run script(s) are located at:
clang-9: note: diagnostic msg: /tmp/test-207815.c
clang-9: note: diagnostic msg: /tmp/test-207815.sh
clang-9: note: diagnostic msg:

********************

To avoid the following error I specified the -I ./include.

/usr/include/gnu/stubs.h:7:11: fatal error: 'gnu/stubs-32.h' file not found
# include <gnu/stubs-32.h>
          ^~~~~~~~~~~~~~~~
1 error generated.

The command and the error when compiling at aarch64 machine is below.

$ clang test.c
fatal error: error in backend: Cannot select: t13: f16 = fp_round t11, TargetConstant:i64<0>
  t11: f128,ch = load<(load 16 from %ir.arrayidx)> t0, t10, undef:i64
    t10: i64 = add t4, t9
      t4: i64,ch = load<(dereferenceable load 8 from %ir.x.addr)> t0, FrameIndex:i64<1>, undef:i64
        t1: i64 = FrameIndex<1>
        t3: i64 = undef
      t9: i64 = shl t21, Constant:i64<4>
        t21: i64,ch = load<(dereferenceable load 4 from %ir.i), sext from i32> t0, FrameIndex:i64<3>, undef:i64
          t5: i64 = FrameIndex<3>
          t3: i64 = undef
        t8: i64 = Constant<4>
    t3: i64 = undef
  t12: i64 = TargetConstant<0>
In function: test
clang-9: error: clang frontend command failed with exit code 70 (use -v to see invocation)
Fujitsu clang version 9.0.1  (based on LLVM 9.0.1)
Target: aarch64-unknown-linux-gnu
Thread model: posix
InstalledDir: /work02/lang2/utsumi/build_9/bin
clang-9: note: diagnostic msg: PLEASE submit a bug report to https://bugs.llvm.org/ and include the crash backtrace, preprocessed source, and associated run script.
clang-9: note: diagnostic msg:
********************

PLEASE ATTACH THE FOLLOWING FILES TO THE BUG REPORT:
Preprocessed source(s) and associated run script(s) are located at:
clang-9: note: diagnostic msg: /tmp/test-2ccc58.c
clang-9: note: diagnostic msg: /tmp/test-2ccc58.sh
clang-9: note: diagnostic msg:

********************

I apologize in advance that I may not be able to respond to comments or questions because New Year holidays.

@topperc
Copy link
Collaborator

topperc commented Dec 29, 2019

Looks like there's a stalled patch that would probably fix this https://reviews.llvm.org/D50685

@utsumi-fj
Copy link
Mannequin Author

utsumi-fj mannequin commented Jan 6, 2020

Thank you for telling me. Sorry for my late comment.

@llvmbot llvmbot transferred this issue from llvm/llvm-bugzilla-archive Dec 10, 2021
@c-rhodes
Copy link
Collaborator

c-rhodes commented May 7, 2025

now fixed (since LLVM 12): https://godbolt.org/z/d55n5eqnE

@c-rhodes c-rhodes closed this as completed May 7, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
backend:AArch64 bugzilla Issues migrated from bugzilla
Projects
None yet
Development

No branches or pull requests

2 participants