Paweł Bylica via llvm-dev
2019-Jan-04 23:51 UTC
[llvm-dev] Removing LLVM_ALWAYS_INLINE from ADT classes
On Sat, Jan 5, 2019 at 12:38 AM Duncan P. N. Exon Smith via llvm-dev < llvm-dev at lists.llvm.org> wrote:> This makes sense to me. > > One concern is that this in itself will slow down the build, since > tablegen will get even slower. Ideally, there would be some (perhaps > default?) configuration where we build the tablegen binaries with > optimizations on and then use them in the build, as if we were > cross-compiling. >Maybe something simple like -DLLVM_OPTIMIZE_TABLEGEN=ON (enabled by default for Debug builds). You would need to set it to off only if you want to debug tablegen.> > > On Jan 4, 2019, at 15:14, Davide Italiano via llvm-dev < > llvm-dev at lists.llvm.org> wrote: > > > > Hi, > > I would like to propose, based on a previous discussion on llvm-dev, > > the following change. > > https://reviews.llvm.org/D56337 > > > > The main motivation for annotating member functions of ADT clases with > > LLVM_ALWAYS_INLINE was that of speeding up `check-llvm` at `-O0`. > > Turns out this significantly degrades the debuggability of fundamental > > classes in llvm itself, e.g. StringRef or SmallVector. > > > > After discussing we agreed that it's reasonable to drop > > LLVM_ALWYAS_INLINE from ADT classes member functions and add a note > > in the developer's manual. > > > > If you have any feedbacks or concerns, please speak up. > > If nothing major arises, I'm going to commit this patch in a week (or > such). > > > > Thanks for your time, > > > > -- > > Davide > > > > "There are no solved problems; there are only problems that are more > > or less solved" -- Henri Poincare > > _______________________________________________ > > LLVM Developers mailing list > > llvm-dev at lists.llvm.org > > http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev > > _______________________________________________ > LLVM Developers mailing list > llvm-dev at lists.llvm.org > http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20190105/942d9957/attachment.html>
Jonas Devlieghere via llvm-dev
2019-Jan-04 23:55 UTC
[llvm-dev] Removing LLVM_ALWAYS_INLINE from ADT classes
On Fri, Jan 4, 2019 at 3:52 PM Paweł Bylica via llvm-dev < llvm-dev at lists.llvm.org> wrote:> On Sat, Jan 5, 2019 at 12:38 AM Duncan P. N. Exon Smith via llvm-dev < > llvm-dev at lists.llvm.org> wrote: > >> This makes sense to me. >> >> One concern is that this in itself will slow down the build, since >> tablegen will get even slower. Ideally, there would be some (perhaps >> default?) configuration where we build the tablegen binaries with >> optimizations on and then use them in the build, as if we were >> cross-compiling. >> > > Maybe something simple like -DLLVM_OPTIMIZE_TABLEGEN=ON (enabled by > default for Debug builds). You would need to set it to off only if you want > to debug tablegen. >+1 on this. If you don't hack on tablegen this is a big win.> > >> >> > On Jan 4, 2019, at 15:14, Davide Italiano via llvm-dev < >> llvm-dev at lists.llvm.org> wrote: >> > >> > Hi, >> > I would like to propose, based on a previous discussion on llvm-dev, >> > the following change. >> > https://reviews.llvm.org/D56337 >> > >> > The main motivation for annotating member functions of ADT clases with >> > LLVM_ALWAYS_INLINE was that of speeding up `check-llvm` at `-O0`. >> > Turns out this significantly degrades the debuggability of fundamental >> > classes in llvm itself, e.g. StringRef or SmallVector. >> > >> > After discussing we agreed that it's reasonable to drop >> > LLVM_ALWYAS_INLINE from ADT classes member functions and add a note >> > in the developer's manual. >> > >> > If you have any feedbacks or concerns, please speak up. >> > If nothing major arises, I'm going to commit this patch in a week (or >> such). >> > >> > Thanks for your time, >> > >> > -- >> > Davide >> > >> > "There are no solved problems; there are only problems that are more >> > or less solved" -- Henri Poincare >> > _______________________________________________ >> > LLVM Developers mailing list >> > llvm-dev at lists.llvm.org >> > http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev >> >> _______________________________________________ >> LLVM Developers mailing list >> llvm-dev at lists.llvm.org >> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev >> > _______________________________________________ > LLVM Developers mailing list > llvm-dev at lists.llvm.org > http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20190104/e5352894/attachment.html>
Mehdi AMINI via llvm-dev
2019-Jan-06 00:41 UTC
[llvm-dev] Removing LLVM_ALWAYS_INLINE from ADT classes
On Fri, Jan 4, 2019 at 3:52 PM Paweł Bylica via llvm-dev < llvm-dev at lists.llvm.org> wrote:> On Sat, Jan 5, 2019 at 12:38 AM Duncan P. N. Exon Smith via llvm-dev < > llvm-dev at lists.llvm.org> wrote: > >> This makes sense to me. >> >> One concern is that this in itself will slow down the build, since >> tablegen will get even slower. Ideally, there would be some (perhaps >> default?) configuration where we build the tablegen binaries with >> optimizations on and then use them in the build, as if we were >> cross-compiling. >> > > Maybe something simple like -DLLVM_OPTIMIZE_TABLEGEN=ON (enabled by > default for Debug builds). You would need to set it to off only if you want > to debug tablegen. >I proposed this a while back, but it think there were some problems with it, I don't remember what exactly but maybe related to bootstrapping / 2-stages builds? + Chris, maybe he remembers something? -- Mehdi> > >> >> > On Jan 4, 2019, at 15:14, Davide Italiano via llvm-dev < >> llvm-dev at lists.llvm.org> wrote: >> > >> > Hi, >> > I would like to propose, based on a previous discussion on llvm-dev, >> > the following change. >> > https://reviews.llvm.org/D56337 >> > >> > The main motivation for annotating member functions of ADT clases with >> > LLVM_ALWAYS_INLINE was that of speeding up `check-llvm` at `-O0`. >> > Turns out this significantly degrades the debuggability of fundamental >> > classes in llvm itself, e.g. StringRef or SmallVector. >> > >> > After discussing we agreed that it's reasonable to drop >> > LLVM_ALWYAS_INLINE from ADT classes member functions and add a note >> > in the developer's manual. >> > >> > If you have any feedbacks or concerns, please speak up. >> > If nothing major arises, I'm going to commit this patch in a week (or >> such). >> > >> > Thanks for your time, >> > >> > -- >> > Davide >> > >> > "There are no solved problems; there are only problems that are more >> > or less solved" -- Henri Poincare >> > _______________________________________________ >> > LLVM Developers mailing list >> > llvm-dev at lists.llvm.org >> > http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev >> >> _______________________________________________ >> LLVM Developers mailing list >> llvm-dev at lists.llvm.org >> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev >> > _______________________________________________ > LLVM Developers mailing list > llvm-dev at lists.llvm.org > http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20190105/1dc67bca/attachment.html>
via llvm-dev
2019-Jan-07 16:33 UTC
[llvm-dev] Removing LLVM_ALWAYS_INLINE from ADT classes
IIRC the issues with defaulting to –DLLVM_OPTIMIZE_TABLEGEN=ON came up in two places: First, if it's not a Debug build, this actually slows down the build. The defaulting has to be for Debug config only. This is arguably bad UI, because it makes the default modal, but there's a clear benefit in build time so I think we can live with that. Second, if it's a multi-config builder (e.g. MSBuild) then it gets a little weird, I don't remember exactly how. --paulr From: llvm-dev [mailto:llvm-dev-bounces at lists.llvm.org] On Behalf Of Mehdi AMINI via llvm-dev Sent: Saturday, January 05, 2019 7:42 PM To: Paweł Bylica; Chris Bieneman Cc: LLVM Dev Subject: Re: [llvm-dev] Removing LLVM_ALWAYS_INLINE from ADT classes On Fri, Jan 4, 2019 at 3:52 PM Paweł Bylica via llvm-dev <llvm-dev at lists.llvm.org<mailto:llvm-dev at lists.llvm.org>> wrote: On Sat, Jan 5, 2019 at 12:38 AM Duncan P. N. Exon Smith via llvm-dev <llvm-dev at lists.llvm.org<mailto:llvm-dev at lists.llvm.org>> wrote: This makes sense to me. One concern is that this in itself will slow down the build, since tablegen will get even slower. Ideally, there would be some (perhaps default?) configuration where we build the tablegen binaries with optimizations on and then use them in the build, as if we were cross-compiling. Maybe something simple like -DLLVM_OPTIMIZE_TABLEGEN=ON (enabled by default for Debug builds). You would need to set it to off only if you want to debug tablegen. I proposed this a while back, but it think there were some problems with it, I don't remember what exactly but maybe related to bootstrapping / 2-stages builds? + Chris, maybe he remembers something? -- Mehdi> On Jan 4, 2019, at 15:14, Davide Italiano via llvm-dev <llvm-dev at lists.llvm.org<mailto:llvm-dev at lists.llvm.org>> wrote: > > Hi, > I would like to propose, based on a previous discussion on llvm-dev, > the following change. > https://reviews.llvm.org/D56337 > > The main motivation for annotating member functions of ADT clases with > LLVM_ALWAYS_INLINE was that of speeding up `check-llvm` at `-O0`. > Turns out this significantly degrades the debuggability of fundamental > classes in llvm itself, e.g. StringRef or SmallVector. > > After discussing we agreed that it's reasonable to drop > LLVM_ALWYAS_INLINE from ADT classes member functions and add a note > in the developer's manual. > > If you have any feedbacks or concerns, please speak up. > If nothing major arises, I'm going to commit this patch in a week (or such). > > Thanks for your time, > > -- > Davide > > "There are no solved problems; there are only problems that are more > or less solved" -- Henri Poincare > _______________________________________________ > LLVM Developers mailing list > llvm-dev at lists.llvm.org<mailto:llvm-dev at lists.llvm.org> > http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev_______________________________________________ LLVM Developers mailing list llvm-dev at lists.llvm.org<mailto:llvm-dev at lists.llvm.org> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev _______________________________________________ LLVM Developers mailing list llvm-dev at lists.llvm.org<mailto:llvm-dev at lists.llvm.org> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20190107/eba03fea/attachment.html>
Alex Bradbury via llvm-dev
2019-Jan-07 16:33 UTC
[llvm-dev] Removing LLVM_ALWAYS_INLINE from ADT classes
On Sun, 6 Jan 2019 at 00:42, Mehdi AMINI via llvm-dev <llvm-dev at lists.llvm.org> wrote:> > > > On Fri, Jan 4, 2019 at 3:52 PM Paweł Bylica via llvm-dev <llvm-dev at lists.llvm.org> wrote: >> >> On Sat, Jan 5, 2019 at 12:38 AM Duncan P. N. Exon Smith via llvm-dev <llvm-dev at lists.llvm.org> wrote: >>> >>> This makes sense to me. >>> >>> One concern is that this in itself will slow down the build, since tablegen will get even slower. Ideally, there would be some (perhaps default?) configuration where we build the tablegen binaries with optimizations on and then use them in the build, as if we were cross-compiling. >> >> >> Maybe something simple like -DLLVM_OPTIMIZE_TABLEGEN=ON (enabled by default for Debug builds). You would need to set it to off only if you want to debug tablegen. > > > I proposed this a while back, but it think there were some problems with it, I don't remember what exactly but maybe related to bootstrapping / 2-stages builds? > > + Chris, maybe he remembers something?LLVM_OPTIMIZED_TABLEGEN=ON is a handy way of speeding up build times, but it really shouldn't be recommended for anyone who is modifying .td files. You run the risk of making .td modifications that trigger asserts for those not using LLVM_OPTIMIZED_TABLEGEN. Best, Alex