diff --git a/llvm/lib/MC/MCXCOFFStreamer.cpp b/llvm/lib/MC/MCXCOFFStreamer.cpp index a4a42279d6e239..7b4f6496e2a282 100644 --- a/llvm/lib/MC/MCXCOFFStreamer.cpp +++ b/llvm/lib/MC/MCXCOFFStreamer.cpp @@ -37,6 +37,10 @@ bool MCXCOFFStreamer::emitSymbolAttribute(MCSymbol *Sym, getAssembler().registerSymbol(*Symbol); switch (Attribute) { + // XCOFF doesn't support the cold feature. + 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 index 00000000000000..531be9d07dd49f --- /dev/null +++ b/llvm/test/CodeGen/PowerPC/aix-xcoff-cold.ll @@ -0,0 +1,15 @@ +; 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 + +define dso_local void @cold_fun() #1 { +entry: + ret void +} + +attributes #1 = { cold }