[PATCH] D27560: Always run GlobalDCE at O0

Hal Finkel via llvm-commits llvm-commits at lists.llvm.org
Tue Dec 13 22:43:21 PST 2016


----- Original Message -----
> From: "Paul Robinson" <paul.robinson at sony.com>
> To: "Hal Finkel" <hfinkel at anl.gov>
> Cc: llvm-commits at lists.llvm.org, "Joerg Sonnenberger" <joerg at bec.de>
> Sent: Wednesday, December 14, 2016 12:30:26 AM
> Subject: RE: [PATCH] D27560: Always run GlobalDCE at O0
> 
> 
> 
> > -----Original Message-----
> > From: Hal Finkel [mailto:hfinkel at anl.gov]
> > Sent: Tuesday, December 13, 2016 7:01 PM
> > To: Robinson, Paul
> > Cc: llvm-commits at lists.llvm.org; Joerg Sonnenberger
> > Subject: Re: [PATCH] D27560: Always run GlobalDCE at O0
> > 
> > ----- Original Message -----
> > > From: "Paul via llvm-commits Robinson"
> > > <llvm-commits at lists.llvm.org>
> > > To: "Joerg Sonnenberger" <joerg at bec.de>
> > > Cc: llvm-commits at lists.llvm.org
> > > Sent: Tuesday, December 13, 2016 8:39:09 PM
> > > Subject: RE: [PATCH] D27560: Always run GlobalDCE at O0
> > >
> > >
> > >
> > > > -----Original Message-----
> > > > From: llvm-commits [mailto:llvm-commits-bounces at lists.llvm.org]
> > > > On
> > > > Behalf
> > > > Of Joerg Sonnenberger via llvm-commits
> > > > Sent: Tuesday, December 13, 2016 6:24 PM
> > > > To: llvm-commits at lists.llvm.org
> > > > Subject: Re: [PATCH] D27560: Always run GlobalDCE at O0
> > > >
> > > > On Tue, Dec 13, 2016 at 05:55:55PM -0800, Mehdi Amini via
> > > > llvm-commits
> > > > wrote:
> > > > > Also, if always_inline is “required” for correctness it
> > > > > should
> > > > > process
> > > > all the calligraph.
> > > >
> > > > always_inline is required for correctness. One example is a
> > > > wrapper
> > > > function around vfork or setjmp.
> > >
> > > Correctness of C/C++, or correctness of LLVM IR?  The difference
> > > is
> > > in
> > > whether Clang sets up the always-inliner to run at O0, versus
> > > whether
> > > opt (and LLVM's default pass pipeline) set it up to run at O0.
> > > Remember that Clang does not use LLVM's pipeline, it generates
> > > its
> > > own.
> > 
> > What do you mean? Clang uses the pipelines built by LLVM's
> > PassManagerBuilder. It also adds its own things (e.g. for the
> > sanitizers).
> > Which inliner to use is something the frontend controls via a
> > dedicated
> > option in the PassManagerBuilder, but this is definitely a special
> > case.
> 
> Clang's lib/CodeGen/BackendUtil.cpp sure looks to me like it's
> building
> its own pipeline, but maybe I'm just confused about how that all
> works.
> Wouldn't be the first time.'

It does build its own mini-pipelines for specific things, such as when it adds transformation passes for the sanitizers. In general, however, it is just using LLVM's default pipelines by calling:

  PMBuilder.populateFunctionPassManager(FPM);
  PMBuilder.populateModulePassManager(MPM); 

near the end of EmitAssemblyHelper::CreatePasses.

 -Hal

> --paulr
> 
> > 
> >  -Hal
> > 
> > > --paulr
> > >
> > > >
> > > > Joerg
> > > > _______________________________________________
> > > > llvm-commits mailing list
> > > > llvm-commits at lists.llvm.org
> > > > http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
> > > _______________________________________________
> > > llvm-commits mailing list
> > > llvm-commits at lists.llvm.org
> > > http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
> > >
> > 
> > --
> > Hal Finkel
> > Lead, Compiler Technology and Programming Languages
> > Leadership Computing Facility
> > Argonne National Laboratory
> 

-- 
Hal Finkel
Lead, Compiler Technology and Programming Languages
Leadership Computing Facility
Argonne National Laboratory


More information about the llvm-commits mailing list