HomePhabricator

[Clang][CodeGen] support alias attribute w/ gnu_inline

Authored by nickdesaulniers on Sep 12 2019, 12:53 PM.

Description

[Clang][CodeGen] support alias attribute w/ gnu_inline

Summary:
r369705 did not consider the addition of gnu_inline on function
declarations of alias attributed functions. This resulted in a reported
regression in the clang-9-rc4 release from the Zig developers building
glibc, which was observable as a failed assertion:

llvm-project/clang/lib/AST/Decl.cpp:3336: bool
clang::FunctionDecl::isInlineDefinitionExternallyVisible() const:
Assertion `(doesThisDeclarationHaveABody() || willHaveBody()) && "Must
be a function definition"' failed.

Alias function declarations do not have bodies, so allow us to proceed
if we have the alias function attribute but no body/definition, and add
a test case. The emitted symbols and their linkage matches GCC for the
added test case.

Link: https://bugs.llvm.org/show_bug.cgi?id=43268

Reviewers: aaron.ballman, rsmith, erichkeane, andrewrk

Reviewed By: andrewrk

Subscribers: cfe-commits, andrewrk, hans, srhines

Tags: #clang

Differential Revision: https://reviews.llvm.org/D67455

llvm-svn: 371766

Details

Committed
nickdesaulniersSep 12 2019, 12:53 PM
Reviewer
andrewrk
Differential Revision
D67455: [Clang][CodeGen] support alias attribute w/ gnu_inline
Parents
rGf174670efaa3: [CFG] Add dumps for CFGElement and CFGElementRef
Branches
Unknown
Tags
Unknown