From 5937637b5355c637dd939bbc2b942033cb7c787b Mon Sep 17 00:00:00 2001 From: Robert Konicar Date: Thu, 26 Oct 2023 13:58:09 +0200 Subject: [PATCH 1/2] test:hl: Fix typo. --- test/vast/Dialect/HighLevel/attr-d.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/vast/Dialect/HighLevel/attr-d.c b/test/vast/Dialect/HighLevel/attr-d.c index 0b456b2d91..717f86e126 100644 --- a/test/vast/Dialect/HighLevel/attr-d.c +++ b/test/vast/Dialect/HighLevel/attr-d.c @@ -3,7 +3,7 @@ // CHECK: hl.func @fun weak () -> !hl.void { void __attribute__((__weak__)) fun (void) {} -int mian() { +int main() { fun(); return 0; } From c45ddf0e93c809b7f9fa36cc387d142753c0cab1 Mon Sep 17 00:00:00 2001 From: Robert Konicar Date: Thu, 26 Oct 2023 14:26:23 +0200 Subject: [PATCH 2/2] core: Fix linkage type of function declarations. --- lib/vast/Dialect/Core/Linkage.cpp | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/lib/vast/Dialect/Core/Linkage.cpp b/lib/vast/Dialect/Core/Linkage.cpp index c6926b3a5f..b968c2454a 100644 --- a/lib/vast/Dialect/Core/Linkage.cpp +++ b/lib/vast/Dialect/Core/Linkage.cpp @@ -162,6 +162,17 @@ namespace vast::core { return GlobalLinkageKind::InternalLinkage; } + if (const auto *fn = decl->getAsFunction()) { + if (fn->isMultiVersion() && linkage == clang::GVA_AvailableExternally) { + return GlobalLinkageKind::LinkOnceAnyLinkage; + } + if (!fn->isThisDeclarationADefinition() + && decl->hasAttr< clang::WeakAttr >()) + { + return GlobalLinkageKind::ExternalWeakLinkage; + } + } + if (decl->hasAttr< clang::WeakAttr >()) { if (is_constant) return GlobalLinkageKind::WeakODRLinkage; @@ -169,12 +180,6 @@ namespace vast::core { return GlobalLinkageKind::WeakAnyLinkage; } - if (const auto *fn = decl->getAsFunction()) { - if (fn->isMultiVersion() && linkage == clang::GVA_AvailableExternally) { - return GlobalLinkageKind::LinkOnceAnyLinkage; - } - } - // We are guaranteed to have a strong definition somewhere else, // so we can use available_externally linkage. if (linkage == clang::GVA_AvailableExternally) {