[llvm] r252219 - DI: Reverse direction of subprogram -> function edge.

Peter Collingbourne via llvm-commits llvm-commits at lists.llvm.org
Thu Nov 5 18:43:48 PST 2015


On Thu, Nov 05, 2015 at 04:43:29PM -0800, Duncan P. N. Exon Smith wrote:
> 
> > On 2015-Nov-05, at 14:04, Peter Collingbourne via llvm-commits <llvm-commits at lists.llvm.org> wrote:
> > 
> > Author: pcc
> > Date: Thu Nov  5 16:03:56 2015
> > New Revision: 252219
> > 
> > URL: http://llvm.org/viewvc/llvm-project?rev=252219&view=rev
> > Log:
> > DI: Reverse direction of subprogram -> function edge.
> > 
> > Previously, subprograms contained a metadata reference to the function they
> > described. Because most clients need to get or set a subprogram for a given
> > function rather than the other way around, this created unneeded inefficiency.
> > 
> > For example, many passes needed to call the function llvm::makeSubprogramMap()
> > to build a mapping from functions to subprograms, and the IR linker needed to
> > fix up function references in a way that caused quadratic complexity in the IR
> > linking phase of LTO.
> > 
> > This change reverses the direction of the edge by storing the subprogram as
> > function-level metadata and removing DISubprogram's function field.
> > 
> > Since this is an IR change, a bitcode upgrade has been provided.
> > 
> > Fixes PR23367. An upgrade script for textual IR for out-of-tree clients is
> > attached to the PR.
> > 
> > Differential Revision: http://reviews.llvm.org/D14265
> > 
> > Added:
> >   llvm/trunk/test/Bitcode/upgrade-subprogram.ll
> >     - copied, changed from r252217, llvm/trunk/test/Linker/Inputs/subprogram-linkonce-weak.ll
> >   llvm/trunk/test/Bitcode/upgrade-subprogram.ll.bc
> > Modified:
> >   llvm/trunk/bindings/go/llvm/DIBuilderBindings.cpp
> >   llvm/trunk/bindings/go/llvm/DIBuilderBindings.h
> >   llvm/trunk/bindings/go/llvm/IRBindings.cpp
> >   llvm/trunk/bindings/go/llvm/IRBindings.h
> >   llvm/trunk/bindings/go/llvm/dibuilder.go
> >   llvm/trunk/bindings/go/llvm/ir.go
> >   llvm/trunk/include/llvm/IR/DIBuilder.h
> >   llvm/trunk/include/llvm/IR/DebugInfo.h
> >   llvm/trunk/include/llvm/IR/DebugInfoMetadata.h
> 
> [snip]
> 
> Please update LangRef too (sorry I missed this pre-commit).

r252268.

-- 
Peter


More information about the llvm-commits mailing list