From: Fangrui Song Date: Wed, 14 Aug 2019 10:30:27 +0000 (+0000) Subject: [AsmPrinter] Delete redundant .type foo, @function when emitting an ifunc X-Git-Tag: llvmorg-11-init~11905 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=8caa0aaa4dcdd3e68c260c75abfad52519d70753;p=platform%2Fupstream%2Fllvm.git [AsmPrinter] Delete redundant .type foo, @function when emitting an ifunc In MCAsmStreamer: .type foo,@function # <--- this is redundant .type foo,@gnu_indirect_function In MCELFStreamer, the latter STT_GNU_IFUNC overrides STT_FUNC. llvm-svn: 368823 --- diff --git a/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp b/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp index cc85cb9..61cb46c 100644 --- a/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp +++ b/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp @@ -1313,11 +1313,10 @@ void AsmPrinter::emitGlobalIndirectSymbol(Module &M, // Set the symbol type to function if the alias has a function type. // This affects codegen when the aliasee is not a function. - if (IsFunction) { - OutStreamer->EmitSymbolAttribute(Name, MCSA_ELF_TypeFunction); - if (isa(GIS)) - OutStreamer->EmitSymbolAttribute(Name, MCSA_ELF_TypeIndFunction); - } + if (IsFunction) + OutStreamer->EmitSymbolAttribute(Name, isa(GIS) + ? MCSA_ELF_TypeIndFunction + : MCSA_ELF_TypeFunction); EmitVisibility(Name, GIS.getVisibility()); diff --git a/llvm/test/CodeGen/X86/ifunc-asm.ll b/llvm/test/CodeGen/X86/ifunc-asm.ll index ef3f5b3..c1604882 100644 --- a/llvm/test/CodeGen/X86/ifunc-asm.ll +++ b/llvm/test/CodeGen/X86/ifunc-asm.ll @@ -10,6 +10,5 @@ entry: ; CHECK-NEXT: foo_ifunc: @foo = ifunc i32 (i32), i64 ()* @foo_ifunc -; CHECK: .type foo,@function -; CHECK-NEXT: .type foo,@gnu_indirect_function +; CHECK: .type foo,@gnu_indirect_function ; CHECK-NEXT: .set foo, foo_ifunc