When I add the following code am getting the following error:
redefine.h
static inline __attribute__((always_inline, overloadable)) void __writeCM(
__CMAddr a, int v, const re_MemoryOrder mo) {
switch(mo) {
case memory_order_release:
__builtin_writecm_release((const void *)a, v);
break;
default:
__builtin_writecm_release((const void *)a, v);
}
}
clang/include/clang/Basic/Builtins.def
BUILTIN(__builtin_writecm_release ,"vvC*i" , "Fnc")
clang/lib/CodeGen/CGBuiltin.cpp
case Builtin::BI__builtin_writecm_release: {
Address arg0 = EmitPointerWithAlignment(E->getArg(0));
EmitNonNullArgCheck(RValue::get(arg0.getPointer()),
E->getArg(0)->getType(), E->getArg(0)->getExprLoc(), FD, 0);
Value *arg1 = EmitScalarExpr(E->getArg(1));
return RValue::get(Builder.CreateWriteCMRelease(arg0.getPointer(), arg1));
}
llvm/include/llvm/IR/Intrinsics.td
def int_writecmrelease: Intrinsic <[], [llvm_anyptr_ty, llvm_i32_ty], []>;
llvm/lib/IR/IRBuilder.cpp
CallInst *IRBuilderBase::CreateWriteCMRelease(Value *arg0, Value* arg1) {
Module *M = BB->getParent()->getParent();
Value *Ops[] = { arg0, arg1 };
Type *Tys[] = { arg0->getType() };
Function *Fn = Intrinsic::getDeclaration(M, Intrinsic::writecmrelease, Tys);
CallInst *CI = CreateCall(Fn, Ops);
return CI;
}
I’m getting the following error:
fatal error: error in backend: Cannot select: intrinsic %llvm.writecmrelease
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: /home/nidhin/redefine_sdk/llvm-project-18.1.0.src/build/bin/clang -I/home/nidhin/redefine_sdk/redefine/REDEFINE/riscv-gnu-toolchain-install/riscv32-unknown-elf/include -I/home/nidhin/redefine_sdk/redefine/include -Wall -target riscv32-unknown-elf -ffunction-sections -fdata-sections -Wuninitialized -fno-builtin -ffreestanding -march=rv32imf -fno-addrsig -O3 -v -c -o fib.o fib.c
- parser at end of file
- Code generation
- Running pass ‘Function Pass Manager’ on module ‘fib.c’.
- Running pass ‘RISC-V DAG->DAG Pattern Instruction Selection’ on function ‘@__REDEFINE_main’
………..
#0 0x000055763770f0df llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/home/nidhin/redefine_sdk/llvm-project-18.1.0.src/build/bin/clang+0xcdd151)
#33 0x0000557636244eab main (/home/nidhin/redefine_sdk/llvm-project-18.1.0.src/build/bin/clang+0xc24eab)
#34 0x00007f06a5ff4083 __libc_start_main /build/glibc-LcI20x/glibc-2.31/csu/../csu/libc-start.c:342:3
#35 0x00005576362f800e _start (/home/nidhin/redefine_sdk/llvm-project-18.1.0.src/build/bin/clang+0xcd800e)
clang: error: clang frontend command failed with exit code 70 (use -v to see invocation)
clang version 18.1.0rc (/home/nidhin/redefine_sdk/llvm-project-18.1.0.src/clang e51a44c97d82c478e21668f6387f5ddca7e68816)