Index: lib/CodeGen/AsmPrinter/AsmPrinter.cpp =================================================================== --- lib/CodeGen/AsmPrinter/AsmPrinter.cpp +++ lib/CodeGen/AsmPrinter/AsmPrinter.cpp @@ -318,17 +318,14 @@ OutStreamer->EmitSymbolAttribute(GVSym, MCSA_Weak); } return; - case GlobalValue::AppendingLinkage: - // FIXME: appending linkage variables should go into a section of - // their name or something. For now, just emit them as external. case GlobalValue::ExternalLinkage: - // If external or appending, declare as a global symbol. - // .globl _foo + // If external, declare as a global symbol: .globl _foo OutStreamer->EmitSymbolAttribute(GVSym, MCSA_Global); return; case GlobalValue::PrivateLinkage: case GlobalValue::InternalLinkage: return; + case GlobalValue::AppendingLinkage: case GlobalValue::AvailableExternallyLinkage: case GlobalValue::ExternalWeakLinkage: llvm_unreachable("Should never emit this"); @@ -1562,7 +1559,7 @@ return true; } - return false; + report_fatal_error("unknown special variable"); } /// EmitLLVMUsedList - For targets that define a MAI::UsedDirective, mark each Index: test/CodeGen/X86/2007-08-13-AppendingLinkage.ll =================================================================== --- test/CodeGen/X86/2007-08-13-AppendingLinkage.ll +++ /dev/null @@ -1,12 +0,0 @@ -; RUN: llc < %s -march=x86 | not grep drectve -; PR1607 - -%hlvm_programs_element = type { i8*, i32 (i32, i8**)* } -@hlvm_programs = appending constant [1 x %hlvm_programs_element] -zeroinitializer - -define %hlvm_programs_element* @hlvm_get_programs() { -entry: - ret %hlvm_programs_element* getelementptr([1 x %hlvm_programs_element], [1 x %hlvm_programs_element]* - @hlvm_programs, i32 0, i32 0) -} Index: test/CodeGen/X86/AppendingLinkage.ll =================================================================== --- /dev/null +++ test/CodeGen/X86/AppendingLinkage.ll @@ -0,0 +1,4 @@ +; RUN: not llc < %s -march=x86 2>&1 | FileCheck %s + +; CHECK: unknown special variable +@foo = appending constant [1 x i32 ]zeroinitializer