11// RUN: %clang_cc1 %s -o - "-triple" "riscv32cheriot-unknown-cheriotrtos" "-emit-llvm" "-mframe-pointer=none" "-mcmodel=small" "-target-abi" "cheriot" "-Oz" "-Werror" "-cheri-compartment=example" | FileCheck %s
22int foo (void );
3+
34// CHECK: define dso_local i32 @disabled() local_unnamed_addr addrspace(200) #[[DIS:[0-9]]]
4- __attribute__((cheri_interrupt_state (disabled )))
5+ __attribute__((cheriot_interrupt_state (disabled )))
56int disabled (void )
67{
78 return foo ();
89}
910
1011// CHECK: define dso_local i32 @enabled() local_unnamed_addr addrspace(200) #[[EN:[0-9]]]
11- __attribute__((cheri_interrupt_state (enabled )))
12+ __attribute__((cheriot_interrupt_state (enabled )))
1213int enabled (void )
1314{
1415 return foo ();
1516}
1617
1718// CHECK: define dso_local i32 @inherit() local_unnamed_addr addrspace(200) #[[INH:[0-9]]]
18- __attribute__((cheri_interrupt_state (inherit )))
19+ __attribute__((cheriot_interrupt_state (inherit )))
1920int inherit (void )
2021{
2122 return foo ();
@@ -39,20 +40,57 @@ void default_enable_callback(void)
3940// Explicitly setting interrupt status should override the default
4041
4142// CHECK: define dso_local chericcallcce i32 @_Z23explicit_disable_calleev() local_unnamed_addr addrspace(200) #[[EXPDIS:[0-9]]]
42- __attribute__((cheri_interrupt_state (disabled )))
43+ __attribute__((cheriot_interrupt_state (disabled )))
4344__attribute__((cheri_compartment ("example" )))
4445int explicit_disable_callee (void )
4546{
4647 return 0 ;
4748}
4849
4950// CHECK: define dso_local chericcallcc void @explicit_disable_callback() local_unnamed_addr addrspace(200) #[[EXPDIS]]
50- __attribute__((cheri_interrupt_state (disabled )))
51+ __attribute__((cheriot_interrupt_state (disabled )))
5152__attribute__((cheri_ccallback ))
5253void explicit_disable_callback (void )
5354{
5455}
5556
57+ // Check deprecated spellings
58+
59+ // CHECK: define dso_local i32 @disabled1() local_unnamed_addr addrspace(200) #[[DIS]]
60+ __attribute__((cheri_interrupt_state (disabled )))
61+ int disabled1 (void )
62+ {
63+ return foo ();
64+ }
65+
66+ // CHECK: define dso_local i32 @enabled1() local_unnamed_addr addrspace(200) #[[EN]]
67+ __attribute__((cheri_interrupt_state (enabled )))
68+ int enabled1 (void )
69+ {
70+ return foo ();
71+ }
72+
73+ // CHECK: define dso_local i32 @inherit1() local_unnamed_addr addrspace(200) #[[INH]]
74+ __attribute__((cheri_interrupt_state (inherit )))
75+ int inherit1 (void )
76+ {
77+ return foo ();
78+ }
79+
80+ // CHECK: define dso_local chericcallcce i32 @_Z24explicit_disable_callee1v() local_unnamed_addr addrspace(200) #[[EXPDIS]]
81+ __attribute__((cheri_interrupt_state (disabled )))
82+ __attribute__((cheri_compartment ("example" )))
83+ int explicit_disable_callee1 (void )
84+ {
85+ return 0 ;
86+ }
87+
88+ // CHECK: define dso_local chericcallcc void @explicit_disable_callback1() local_unnamed_addr addrspace(200) #[[EXPDIS]]
89+ __attribute__((cheri_interrupt_state (disabled )))
90+ __attribute__((cheri_ccallback ))
91+ void explicit_disable_callback1 (void )
92+ {
93+ }
5694
5795// CHECK: attributes #[[DIS]]
5896// CHECK-SAME: "interrupt-state"="disabled"
0 commit comments