Skip to content

[clang] fatal error when using register keyword on riscv64 target #109588

@Mintia11

Description

@Mintia11
fatal error: error in backend: Do not know how to promote this operator's operand!
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace, preprocessed source, and associated run script.
Stack dump:
0.      Program arguments: clang -I include -pipe -Wall -Wextra -DTARGET_riscv64 -DKERNEL -O2 -target riscv64-unknown-none -fno-omit-frame-pointer -std=c11 -ffreestanding -fno-stack-protector -fno-stack-check -fno-lto -fno-pie -fno-pic -MMD -MP -I. -march=rv64imac -mabi=lp64 -mno-relax -c src/ke/init.c -o ../build/beryl/ke/init.o
1.      <eof> parser at end of file
2.      Code generation
3.      Running pass 'Function Pass Manager' on module 'src/ke/init.c'.
4.      Running pass 'RISC-V DAG->DAG Pattern Instruction Selection' on function '@KiSystemStartup'k

Source code

#include <beryl.h>

register volatile int a __asm__("x4");

NO_RETURN void
KiSystemStartup(void)
{
    a = 0;

    while (true)
        ;
}

Preprocessed source code

# 1 "src/ke/init.c"
# 1 "<built-in>" 1
# 1 "<built-in>" 3
# 372 "<built-in>" 3
# 1 "<command line>" 1
# 1 "<built-in>" 2
# 1 "src/ke/init.c" 2
# 1 "include/beryl.h" 1



# 1 "include/main.h" 1
# 5 "include/beryl.h" 2

# 1 "/usr/lib/clang/18/include/stdbool.h" 1 3
# 7 "include/beryl.h" 2
# 2 "src/ke/init.c" 2

register volatile int a __asm__("x4");

__attribute__((noreturn)) void
KiSystemStartup(void)
{
    a = 0;

    while (1)
        ;
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    backend:RISC-VcrashPrefer [crash-on-valid] or [crash-on-invalid]

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions