iovisor / iovisor/bcc

Problem of using complier primitives __sync_fetch_and_sub with latest python-bcc version

Open
#4,475 5 comments 0 reactions 0 assignees View on GitHub
Dominant language
C
Stars
22.7k
Forks
4.1k
Avg merge
10d 4h
Merged PRs (30d)
3

Description

Hi,

In order to perform atomic operation, I try to use the __sync_fetch_and_sub() complier primitive. However, while my program using such primitive, the compilation fails and errors shows up:

LLVM ERROR: Cannot select: 0x60e3008: i64,ch = AtomicLoadSub<(load store seq_cst 8 on %ir.152)> 0x6ad58c8:1, 0x6ad5248, 0x6ad58c8, /virtual/main.c:229:21 @[ /virtual/main.c:388:12 @[ /virtual/main.c:494:12 ] ]
0x6ad5248: i64 = add nuw 0x6ad5998, Constant:i64<8>, /virtual/main.c:229:54 @[ /virtual/main.c:388:12 @[ /virtual/main.c:494:12 ] ]
0x6ad5998: i64,ch = CopyFromReg 0x60df178, Register:i64 %9, /virtual/main.c:229:54 @[ /virtual/main.c:388:12 @[ /virtual/main.c:494:12 ] ]
0x60f73e0: i64 = Register %9
0x6ad5ba0: i64 = Constant<8>
0x6ad58c8: i64,ch = load<(load 8 from %ir.149, !tbaa !550)> 0x60df178, 0x60e2e68, undef:i64, /virtual/main.c:228:37 @[ /virtual/main.c:388:12 @[ /virtual/main.c:494:12 ] ]
0x60e2e68: i64,ch = CopyFromReg 0x60df178, Register:i64 %10, /virtual/main.c:221:33 @[ /virtual/main.c:388:12 @[ /virtual/main.c:494:12 ] ]
0x6ad5c08: i64 = Register %10
0x60e26b0: i64 = undef_**

However, while I delete the primitive my program runs correctly. I am very sure that such primitive cause the compilation crash.

I am using the python3-bcc version 0.26.0-cbec3b64, ubuntu kernel version 5.15.0-051500rc7-generic.

Is there any solution to such program or how can we solve the problem ?

Best Regards,
Johnny

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.