llvm-project/clang/test/Sema/riscv-interrupt-attr.cpp

17 lines
800 B
C++

// RUN: %clang_cc1 -x c++ -triple riscv32-unknown-elf -emit-llvm -DCHECK_IR < %s | FileCheck %s
// RUN: %clang_cc1 -x c++ -triple riscv64-unknown-elf -emit-llvm -DCHECK_IR < %s | FileCheck %s
// RUN: %clang_cc1 %s -triple riscv32-unknown-elf -verify -fsyntax-only
// RUN: %clang_cc1 %s -triple riscv64-unknown-elf -verify -fsyntax-only
#if defined(CHECK_IR)
// CHECK-LABEL: @_Z11foo_defaultv() #0
// CHECK: ret void
[[gnu::interrupt]] void foo_default() {}
// CHECK: attributes #0
// CHECK: "interrupt"="machine"
#else
[[gnu::interrupt]] [[gnu::interrupt]] void foo1() {} // expected-warning {{repeated RISC-V 'interrupt' attribute}} \
// expected-note {{repeated RISC-V 'interrupt' attribute is here}}
[[gnu::interrupt]] void foo2() {}
#endif