diff --git a/llvm/lib/MC/MCXCOFFStreamer.cpp b/llvm/lib/MC/MCXCOFFStreamer.cpp --- a/llvm/lib/MC/MCXCOFFStreamer.cpp +++ b/llvm/lib/MC/MCXCOFFStreamer.cpp @@ -37,6 +37,9 @@ getAssembler().registerSymbol(*Symbol); switch (Attribute) { + case MCSA_Cold: + return false; + case MCSA_Global: case MCSA_Extern: Symbol->setStorageClass(XCOFF::C_EXT); diff --git a/llvm/test/CodeGen/PowerPC/aix-xcoff-cold.ll b/llvm/test/CodeGen/PowerPC/aix-xcoff-cold.ll new file mode 100644 --- /dev/null +++ b/llvm/test/CodeGen/PowerPC/aix-xcoff-cold.ll @@ -0,0 +1,16 @@ +; RUN: llc -mtriple powerpc64-ibm-aix-xcoff -filetype=obj -o %t.o < %s +; RUN: llvm-objdump --syms %t.o | FileCheck %s + +; CHECK: SYMBOL TABLE: +; CHECK-NEXT: 0000000000000000 df *DEBUG* 0000000000000000 +; CHECK-NEXT: 0000000000000000 l .text 000000000000001e .text +; CHECK-NEXT: 0000000000000000 g F .text (csect: .text) 0000000000000000 .cold_fun +; CHECK-NEXT: 0000000000000020 g O .data 0000000000000018 cold_fun +; CHECK-NEXT: 0000000000000038 l .data 0000000000000000 TOC + +define dso_local void @cold_fun() #1 { +entry: + ret void +} + +attributes #1 = { cold }