@@ -4222,13 +4222,6 @@ static void handleMSP430InterruptAttr(Sema &S, Decl *D,
4222
4222
D->addAttr (UsedAttr::CreateImplicit (S.Context ));
4223
4223
}
4224
4224
4225
- static void handleAVRSignalAttr (Sema &S, Decl *D,
4226
- const AttributeList &Attr) {
4227
-
4228
- D->addAttr (::new (S.Context )
4229
- AVRSignalAttr (Attr.getLoc (), S.Context , Attr.getAttributeSpellingListIndex ()));
4230
- }
4231
-
4232
4225
static void handleInterruptAttr (Sema &S, Decl *D, const AttributeList &Attr) {
4233
4226
// Dispatch the interrupt attribute based on the current target.
4234
4227
if (S.Context .getTargetInfo ().getTriple ().getArch () == llvm::Triple::msp430)
@@ -4237,6 +4230,20 @@ static void handleInterruptAttr(Sema &S, Decl *D, const AttributeList &Attr) {
4237
4230
handleARMInterruptAttr (S, D, Attr);
4238
4231
}
4239
4232
4233
+ static void handleAVRSignalAttr (Sema &S, Decl *D,
4234
+ const AttributeList &Attr) {
4235
+
4236
+ D->addAttr (::new (S.Context )
4237
+ AVRSignalAttr (Attr.getLoc (), S.Context , Attr.getAttributeSpellingListIndex ()));
4238
+ }
4239
+
4240
+ static void handleExternallyVisibleAttr (Sema &S, Decl *D,
4241
+ const AttributeList &Attr) {
4242
+
4243
+ D->addAttr (::new (S.Context )
4244
+ AVRSignalAttr (Attr.getLoc (), S.Context , Attr.getAttributeSpellingListIndex ()));
4245
+ }
4246
+
4240
4247
static void handleAMDGPUNumVGPRAttr (Sema &S, Decl *D,
4241
4248
const AttributeList &Attr) {
4242
4249
uint32_t NumRegs;
@@ -4601,7 +4608,10 @@ static void ProcessDeclAttribute(Sema &S, Scope *scope, Decl *D,
4601
4608
handleInterruptAttr (S, D, Attr);
4602
4609
break ;
4603
4610
case AttributeList::AT_AVRSignal:
4604
- handleAVRSignalAttr (S, D,Attr);
4611
+ handleAVRSignalAttr (S, D, Attr);
4612
+ break ;
4613
+ case AttributeList::AT_ExternallyVisible:
4614
+ handleExternallyVisibleAttr (S, D, Attr);
4605
4615
break ;
4606
4616
case AttributeList::AT_X86ForceAlignArgPointer:
4607
4617
handleX86ForceAlignArgPointerAttr (S, D, Attr);
0 commit comments