Skip to content

Commit

Permalink
arch/samd2l2:Ignore atomic warning when using clang compiler
Browse files Browse the repository at this point in the history
When the toolchain does not support atomic, it will use the version implemented by NuttX (low performance version). This scenario is consistent with the original design, so we can ignore it.

see bug here:
https://bugs.llvm.org/show_bug.cgi?id=43603

Error: inode/fs_inodeaddref.c:50:7: error: large atomic operation may incur significant performance penalty; the access size (4 bytes) exceeds the max lock-free size (0  bytes) [-Werror,-Watomic-alignment]
   50 |       atomic_fetch_add(&inode->i_crefs, 1);
      |       ^
/tools/clang-arm-none-eabi/lib/clang/17/include/stdatomic.h:152:43: note: expanded from macro 'atomic_fetch_add'
  152 | #define atomic_fetch_add(object, operand) __c11_atomic_fetch_add(object, operand, __ATOMIC_SEQ_CST)
      |                                           ^
1 error generated.
make[1]: *** [Makefile:83: fs_inodeaddref.o] Error 1
Error: inode/fs_inodefind.c:74:7: error: large atomic operation may incur significant performance penalty; the access size (4 bytes) exceeds the max lock-free size (0  bytes) [-Werror,-Watomic-alignment]
   74 |       atomic_fetch_add(&node->i_crefs, 1);

Signed-off-by: chenrun1 <[email protected]>
  • Loading branch information
crafcat7 committed Sep 20, 2024
1 parent 5b4ee94 commit d501da2
Show file tree
Hide file tree
Showing 2 changed files with 4 additions and 0 deletions.
2 changes: 2 additions & 0 deletions arch/arm/src/cmake/Toolchain.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,8 @@ if(CONFIG_ARCH_TOOLCHAIN_CLANG)
# https://github.com/apache/incubator-nuttx/pull/5971

add_compile_options(-fno-builtin)
add_compile_options(-Wno-atomic-alignment)
add_compile_options(-Wno-atomic-alignment)
else()
set(TOOLCHAIN_PREFIX arm-none-eabi)
set(CMAKE_LIBRARY_ARCHITECTURE ${TOOLCHAIN_PREFIX})
Expand Down
2 changes: 2 additions & 0 deletions arch/arm/src/common/Toolchain.defs
Original file line number Diff line number Diff line change
Expand Up @@ -324,6 +324,8 @@ endif

ifeq ($(CONFIG_ARCH_TOOLCHAIN_CLANG),y)
ARCHOPTIMIZATION += -fshort-enums
ARCHCFLAGS += -Wno-atomic-alignment
ARCHCXXFLAGS += -Wno-atomic-alignment
endif

# Architecture flags
Expand Down

0 comments on commit d501da2

Please sign in to comment.