mirror of
https://github.com/RPCS3/llvm.git
synced 2026-01-31 01:25:19 +01:00
Rather than storing type units in a vector and emitting them at the end
of code generation, emit them immediately and destroy them, reclaiming the
memory we were using for their DIEs.
In one benchmark carried out against Chromium's 50 largest (by bitcode
file size) translation units, total peak memory consumption with type units
decreased by median 17%, or by 7% when compared against disabling type units.
Tested using check-{llvm,clang}, the GDB 7.5 test suite (with
'-fdebug-types-section') and by eyeballing llvm-dwarfdump output on those
Chromium translation units with split DWARF both disabled and enabled, and
verifying that the only changes were to addresses and abbreviation ordering.
Differential Revision: http://reviews.llvm.org/D17118
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@260578 91177308-0d34-0410-b5e6-96231b3b80d8
47 lines
1.3 KiB
C++
47 lines
1.3 KiB
C++
//===- llvm/CodeGen/DIEValue.def - DIEValue types ---------------*- C++ -*-===//
|
|
//
|
|
// The LLVM Compiler Infrastructure
|
|
//
|
|
// This file is distributed under the University of Illinois Open Source
|
|
// License. See LICENSE.TXT for details.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
//
|
|
// Macros for running through all types of DIEValue.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#if !(defined HANDLE_DIEVALUE || defined HANDLE_DIEVALUE_SMALL || \
|
|
defined HANDLE_DIEVALUE_LARGE)
|
|
#error "Missing macro definition of HANDLE_DIEVALUE"
|
|
#endif
|
|
|
|
// Handler for all values.
|
|
#ifndef HANDLE_DIEVALUE
|
|
#define HANDLE_DIEVALUE(T)
|
|
#endif
|
|
|
|
// Handler for small values.
|
|
#ifndef HANDLE_DIEVALUE_SMALL
|
|
#define HANDLE_DIEVALUE_SMALL(T) HANDLE_DIEVALUE(T)
|
|
#endif
|
|
|
|
// Handler for large values.
|
|
#ifndef HANDLE_DIEVALUE_LARGE
|
|
#define HANDLE_DIEVALUE_LARGE(T) HANDLE_DIEVALUE(T)
|
|
#endif
|
|
|
|
HANDLE_DIEVALUE_SMALL(Integer)
|
|
HANDLE_DIEVALUE_SMALL(String)
|
|
HANDLE_DIEVALUE_SMALL(Expr)
|
|
HANDLE_DIEVALUE_SMALL(Label)
|
|
HANDLE_DIEVALUE_LARGE(Delta)
|
|
HANDLE_DIEVALUE_SMALL(Entry)
|
|
HANDLE_DIEVALUE_LARGE(Block)
|
|
HANDLE_DIEVALUE_LARGE(Loc)
|
|
HANDLE_DIEVALUE_SMALL(LocList)
|
|
|
|
#undef HANDLE_DIEVALUE
|
|
#undef HANDLE_DIEVALUE_SMALL
|
|
#undef HANDLE_DIEVALUE_LARGE
|