From 2ada08536e30dbcbea21addc814f3bf8a394a4ee Mon Sep 17 00:00:00 2001 From: Jim Laskey Date: Tue, 28 Nov 2006 18:21:52 +0000 Subject: [PATCH] Prime text sections to improve branch locality in large object files. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31969 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Target/PowerPC/PPCAsmPrinter.cpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/lib/Target/PowerPC/PPCAsmPrinter.cpp b/lib/Target/PowerPC/PPCAsmPrinter.cpp index 7ac423348ab..b5962ea215a 100644 --- a/lib/Target/PowerPC/PPCAsmPrinter.cpp +++ b/lib/Target/PowerPC/PPCAsmPrinter.cpp @@ -543,6 +543,19 @@ bool DarwinAsmPrinter::doInitialization(Module &M) { // Darwin wants symbols to be quoted if they have complex names. Mang->setUseQuotes(true); + // Prime text sections so they are adjacent. This reduces the likelihood a + // large data or debug section causes a branch to exceed 16M limit. + SwitchToTextSection(".section __TEXT,__textcoal_nt,coalesced," + "pure_instructions"); + if (TM.getRelocationModel() == Reloc::PIC_) { + SwitchToTextSection(".section __TEXT,__picsymbolstub1,symbol_stubs," + "pure_instructions,32"); + } else if (TM.getRelocationModel() == Reloc::DynamicNoPIC) { + SwitchToTextSection(".section __TEXT,__symbol_stub1,symbol_stubs," + "pure_instructions,16"); + } + SwitchToTextSection(TAI->getTextSection()); + // Emit initial debug information. DW.BeginModule(&M); return false; -- 2.34.1