Page MenuHomePhabricator

tejohnson (Teresa Johnson)
User

Projects

User does not belong to any projects.

User Details

User Since
Apr 27 2015, 11:17 AM (258 w, 1 d)

Recent Activity

Today

tejohnson accepted D74751: [ThinLTO] Drop dso_local if a GlobalVariable satisfies isDeclarationForLinker().

LGTM

Tue, Apr 7, 2:42 PM · Restricted Project

Yesterday

tejohnson added a comment to D77484: [Vector] Pass VectLib to LTO backend so TLI build correct vector function list.

Ok then it does sound like these could be handled on a per-function basis, similar to how -fno-builtin* are handled. I.e. a function attribute to indicate the veclib, which would then be naturally preserved during LTO even after merging/importing across modules. Similar to how -fno-builtin* are handled, these would need to be examined when inlining (see the new TargetLibraryInfo::areInlineCompatible). Presumably we would want to block inlining between functions with different veclib attributes in the LTO backends.

@tejohnson, we could do that. But then on the other hand, technically almost everything for module or whole program can be passed as a function attribute, and yet we have switches passed to backend for many of those things. Wondering what's the convention or rule (if there's one) we want to follow? Specifically, if we only use function attributes for stuff that's indeed going to be different between functions, then vectlib isn't in that category; or if we use function attributes for the greatest flexibility whenever we can, then many other things should be function attributes too (though it's essentially duplication in IR, and probably not the most efficient).

Mon, Apr 6, 7:06 PM · Restricted Project
tejohnson accepted D77058: [Clang] Add llvm.loop.unroll.disable to loops with -fno-unroll-loops..

yep, LGTM

Mon, Apr 6, 9:11 AM · Restricted Project
tejohnson added a comment to D77421: [WPD] Avoid noalias assumptions in unique return value optimization.

@pcc is probably the best reviewer here. I've touched WPD but only the single impl devirt part (we can't do the uniq ret value in ThinLTO index-only mode). But the changes look pretty straightforward to me, assuming this is the best solution. Looking at the associated bug, what do the defs of those symbols look like? Is one an alias of the other?

Mon, Apr 6, 9:11 AM · Restricted Project

Sun, Apr 5

tejohnson added a comment to D77484: [Vector] Pass VectLib to LTO backend so TLI build correct vector function list.

Linking against two vectlibs may cause name conflicts or other issues.

Of all three supported match libraries, all functions from Accelerate are prefixed with v; all MASS library functions are suffixed with _massv; and all SVML functions are prefixed with __svml_. See VecFuncs.def. So at least the exported functions don't have name conflicts.

Sun, Apr 5, 2:57 PM · Restricted Project
tejohnson added a comment to D77484: [Vector] Pass VectLib to LTO backend so TLI build correct vector function list.

We're trying to move towards encoding all of this in the IR. And in fact, I recently implemented a series of patches to make the TLI to be built per-function, and along with some patches from @gchatelet to encode -fno-builtin* as function attributes, we now handle that part of the TLII with IR. See D67923 which is the last patch in the series. We should encode the vectlib as function attributes similarly, and just thread that through to the TLI.

That's an interesting idea. How does the linkage work if two functions have different vectlib attributes? Linking against two vectlibs may cause name conflicts or other issues.

Sun, Apr 5, 11:44 AM · Restricted Project
tejohnson updated subscribers of D77484: [Vector] Pass VectLib to LTO backend so TLI build correct vector function list.

We're trying to move towards encoding all of this in the IR. And in fact, I recently implemented a series of patches to make the TLI to be built per-function, and along with some patches from @gchatelet to encode -fno-builtin* as function attributes, we now handle that part of the TLII with IR. See D67923 which is the last patch in the series. We should encode the vectlib as function attributes similarly, and just thread that through to the TLI.

Sun, Apr 5, 7:59 AM · Restricted Project

Thu, Apr 2

tejohnson added inline comments to D77231: [lld] Support -emit-asm with LTO.
Thu, Apr 2, 12:28 PM · Restricted Project

Mon, Mar 30

tejohnson added a comment to D77058: [Clang] Add llvm.loop.unroll.disable to loops with -fno-unroll-loops..

I think this is a good approach, rather than a per-function attribute, since as mentioned this will be preserved through inlining.
@dexonsmith, does that seem reasonable to you? I missed the original patch and agree with you that we don't want to fix this in LTO by passing the option through to LTO.

Mon, Mar 30, 8:37 AM · Restricted Project

Wed, Mar 25

tejohnson accepted D76775: [ThinLTO] Don't rely on debug output for thinlto_samplepgo_icp3 test.

LGTM thanks!

Wed, Mar 25, 10:15 AM · Restricted Project
tejohnson added inline comments to D76775: [ThinLTO] Don't rely on debug output for thinlto_samplepgo_icp3 test.
Wed, Mar 25, 8:37 AM · Restricted Project

Tue, Mar 24

tejohnson added inline comments to D18487: [ThinLTO] Add optional import message and statistics.
Tue, Mar 24, 3:06 PM

Sun, Mar 22

tejohnson added a comment to D73242: [WPD/LowerTypeTests] Delay lowering/removal of type tests until after ICP.

PTAL

Sun, Mar 22, 9:04 AM · Restricted Project, Restricted Project
tejohnson updated the diff for D73242: [WPD/LowerTypeTests] Delay lowering/removal of type tests until after ICP.

Includes fixe for 2-stage clang bootstrap test failures and an expanded
fix for Chromium issue, plus new tests.

Sun, Mar 22, 9:04 AM · Restricted Project, Restricted Project
tejohnson reopened D73242: [WPD/LowerTypeTests] Delay lowering/removal of type tests until after ICP.

Updating with fixes since this was reverted in 80bf137fa132ea33204e98bbefa924afe9258a4e.

Sun, Mar 22, 9:04 AM · Restricted Project, Restricted Project
tejohnson added a comment to D75201: [ThinLTO/LowerTypeTests] Handle unpromoted local type ids.

Thanks for the reproducer!

@tejohnson

This should happen if the type ID has no use on type metadata, but then I think it should be removed by WPD.

It can't be removed or otherwise handled by WPD, because WPD doesn't even see this type.test (it doesn't exist in the index). The problem is
in the analysis phase of thin LTO compilation. I suggest you take a look at findDevirtualizableCallsForTypeTest function and then at
findLoadCallsAtConstantOffset. The latter can process three kind of vptr users: bitcast, load and gep. It can't process store with constant
expression. So far we don't reflect this type.test in summary index and WPD doesn't see it at all.

Ah ok - I misunderstood what reference you were talking about. Even if findDevirtualizableCallsForTypeTest and its descendants could process the reference on the store, it wouldn't automatically help since we are ultimately only looking for uses on virtual calls for devirtualization. And in this case there is no call. As a result WPD does not create a WPDResolution (which defaults to Unknown resolution), and therefore when we import the type id in LTT it appears Unsat.

I think if I expanded findLoadCallsAtConstantOffset to mark all other uses as HasNonCallUses, and when true added the type test to the list of summarized type tests (similar to the way findDevirtualizableCallsForTypeCheckedLoad and its caller in ModuleSummaryAnalysis.cpp behaves for non-call uses), then that might be enough to provoke the correct behavior from LTT.

Hmm, nope that isn't enough to fix it. I tested this change, rebuilt the index by disassembling v2.bc, manually stripping the index, and rebuilding it via "opt -module-summary". Disassembled again and confirmed that the enclosing function's summary now has a type test summary for it. Re-did the link but still see the unreachable in the function after optimization.

This needs more thought and investigation, so at this point I am going to revert the first patch and this follow on one so I can unblock your builds. I may have to table this work for a couple weeks in any case.

Sun, Mar 22, 9:04 AM · Restricted Project

Fri, Mar 20

tejohnson added a reviewer for D76521: [MergeSimilarFunctions] D52896, D52898, D52966 and D53253 merged into LLVM trunk: tejohnson.
Fri, Mar 20, 1:00 PM · Restricted Project, Restricted Project
tejohnson added reviewers for D76481: [MergeSimilarFunctions] Merge {D52896, D52898} with current trunk: tejohnson, jfb.
Fri, Mar 20, 12:28 PM · Restricted Project
tejohnson added a reviewer for D76517: [MegreSimilarFunctions] D52896, D52898 and D52966 merged into LLVM trunk: tejohnson.
Fri, Mar 20, 12:28 PM · Restricted Project, Restricted Project
tejohnson updated subscribers of D76517: [MegreSimilarFunctions] D52896, D52898 and D52966 merged into LLVM trunk.

I also had comments on some of the original patches. I see some emails about this as a GSoC project, but is there a description of the planned work somewhere?

Fri, Mar 20, 12:28 PM · Restricted Project, Restricted Project

Tue, Mar 17

tejohnson added a comment to D75655: [Docs] Document -lto-whole-program-visibility.

@pcc

That case seems somewhat questionable to me. If the symbols are being exported, it is presumably for the purpose of allowing the symbols to be used outside of the defining DSO. But LTO visibility based optimizations could make any such use of the symbols unsafe. For example with WPD it's unsafe to derive outside of the defining DSO and with dead virtual function elimination it's unsafe to call virtual functions outside of the defining DSO.

True, but still direct (cross DSO) calls and globals accesses are possible and do not require explicitly setting visibility everywhere. That was my point.

Tue, Mar 17, 11:49 AM · Restricted Project
tejohnson added inline comments to D71913: [LTO/WPD] Enable aggressive WPD under LTO option.
Tue, Mar 17, 11:49 AM · Restricted Project, Restricted Project

Wed, Mar 11

tejohnson committed rG8f5e3c74b678: [PowerPC] Fix compile time issue in recursive CTR analysis code (authored by tejohnson).
[PowerPC] Fix compile time issue in recursive CTR analysis code
Wed, Mar 11, 4:31 PM
tejohnson closed D75790: [PowerPC] Fix compile time issue in recursive CTR analysis code.
Wed, Mar 11, 4:30 PM · Restricted Project, Restricted Project
tejohnson added a comment to D75655: [Docs] Document -lto-whole-program-visibility.

ping

Wed, Mar 11, 1:35 PM · Restricted Project

Tue, Mar 10

tejohnson updated the summary of D75790: [PowerPC] Fix compile time issue in recursive CTR analysis code.
Tue, Mar 10, 7:09 PM · Restricted Project, Restricted Project
tejohnson added a comment to D75790: [PowerPC] Fix compile time issue in recursive CTR analysis code.

Generally looks good, but the title needs to be clarified. This piece of code is related to an optimization which uses CTR as the loop count register.

Updated the title.

For context, D6786 introduced mightUseCTR. rL251582 made it recurse into the constant.

IIUC, with ThinLTO's ImportConstantsWithRefs optimization, a constant can be very large, and recursing into it for every instruction can make the compilation slow. Is that the case?

No, the constant itself was quite simple. Importing it simply enabled some additional optimization (in IndVarSimplify) that created a huge instruction expression. It was iterating that expression, not the constant itself, that is so slow.

It'd be nice to give a (reduced) example in the description, even if testing it reliably may be unrealistic.

Tue, Mar 10, 7:09 PM · Restricted Project, Restricted Project
tejohnson added a comment to D75790: [PowerPC] Fix compile time issue in recursive CTR analysis code.

Generally looks good, but the title needs to be clarified. This piece of code is related to an optimization which uses CTR as the loop count register.

Tue, Mar 10, 2:13 PM · Restricted Project, Restricted Project
tejohnson retitled D75790: [PowerPC] Fix compile time issue in recursive CTR analysis code from [PowerPC] Fix compile time issue to [PowerPC] Fix compile time issue in recursive CTR analysis code.
Tue, Mar 10, 2:13 PM · Restricted Project, Restricted Project

Mar 6 2020

tejohnson updated the diff for D75790: [PowerPC] Fix compile time issue in recursive CTR analysis code.

Address comment

Mar 6 2020, 7:50 PM · Restricted Project, Restricted Project
tejohnson created D75790: [PowerPC] Fix compile time issue in recursive CTR analysis code.
Mar 6 2020, 6:11 PM · Restricted Project, Restricted Project
tejohnson accepted D75617: [WPD] Provide a way to prevent function(s) from being devirtualized.

LGTM

Mar 6 2020, 6:36 AM · Restricted Project

Mar 5 2020

tejohnson added a comment to D74751: [ThinLTO] Drop dso_local if a GlobalVariable satisfies isDeclarationForLinker().

Needs tests (both llvm-lto and llvm-lto2 to cover both old and new LTO APIs, respectively. For llvm-lto you can trigger the modified code via the -thinlto-action=run option.

Mar 5 2020, 6:35 PM · Restricted Project
tejohnson accepted D74749: ThinLTOBitcodeWriter: drop dso_local when a GlobalVariable is converted to a declaration.

LGTM

Mar 5 2020, 6:03 PM · Restricted Project
tejohnson updated the diff for D75655: [Docs] Document -lto-whole-program-visibility.

Fix gold plugin option

Mar 5 2020, 1:12 PM · Restricted Project
tejohnson updated subscribers of D75655: [Docs] Document -lto-whole-program-visibility.
Mar 5 2020, 1:12 PM · Restricted Project
tejohnson added inline comments to D75617: [WPD] Provide a way to prevent function(s) from being devirtualized.
Mar 5 2020, 10:57 AM · Restricted Project
tejohnson added a comment to D75617: [WPD] Provide a way to prevent function(s) from being devirtualized.
In D75617#1908189, @pcc wrote:

There is already a way to do this, with the attribute [[clang::lto_visibility_public]]. Why do you need another one?

Mar 5 2020, 10:57 AM · Restricted Project
tejohnson added a comment to D75617: [WPD] Provide a way to prevent function(s) from being devirtualized.

This won't work for the index-only WPD.

This can be addressed at the moment, because index based WPD supports only single-impl devirtualization. In this case we have function name in the index.

Mar 5 2020, 7:40 AM · Restricted Project

Mar 4 2020

tejohnson created D75655: [Docs] Document -lto-whole-program-visibility.
Mar 4 2020, 3:46 PM · Restricted Project
tejohnson added inline comments to D71913: [LTO/WPD] Enable aggressive WPD under LTO option.
Mar 4 2020, 11:47 AM · Restricted Project, Restricted Project
tejohnson added a comment to D75617: [WPD] Provide a way to prevent function(s) from being devirtualized.

This won't work for the index-only WPD. Probably the best way to cover that case is to use the option in ModuleSummaryAnalysis.cpp to block functions from being added to the VTableFuncs in the summary in findFuncPointers.

Mar 4 2020, 11:15 AM · Restricted Project

Mar 2 2020

tejohnson committed rG80bf137fa132: Revert "Restore "[WPD/LowerTypeTests] Delay lowering/removal of type tests… (authored by tejohnson).
Revert "Restore "[WPD/LowerTypeTests] Delay lowering/removal of type tests…
Mar 2 2020, 2:09 PM
tejohnson added a reverting change for rG80d0a137a5ab: Restore "[WPD/LowerTypeTests] Delay lowering/removal of type tests until after…: rG80bf137fa132: Revert "Restore "[WPD/LowerTypeTests] Delay lowering/removal of type tests….
Mar 2 2020, 2:09 PM
tejohnson added a comment to D75201: [ThinLTO/LowerTypeTests] Handle unpromoted local type ids.

Reverted in 80bf137fa132ea33204e98bbefa924afe9258a4e

Mar 2 2020, 2:09 PM · Restricted Project
tejohnson added a comment to D73242: [WPD/LowerTypeTests] Delay lowering/removal of type tests until after ICP.

Reverted in 80bf137fa132ea33204e98bbefa924afe9258a4e

Mar 2 2020, 2:09 PM · Restricted Project, Restricted Project
tejohnson added a comment to D75201: [ThinLTO/LowerTypeTests] Handle unpromoted local type ids.

Thanks for the reproducer!

Mar 2 2020, 1:19 PM · Restricted Project
tejohnson committed rG873c0d0786dc: [ThinLTO/LowerTypeTests] Handle unpromoted local type ids (authored by tejohnson).
[ThinLTO/LowerTypeTests] Handle unpromoted local type ids
Mar 2 2020, 9:33 AM
tejohnson closed D75201: [ThinLTO/LowerTypeTests] Handle unpromoted local type ids.
Mar 2 2020, 9:33 AM · Restricted Project
tejohnson added a comment to D75201: [ThinLTO/LowerTypeTests] Handle unpromoted local type ids.

Shouldn't we add -D[CMAKE_C_FLAGS|CMAKE_CXX_FLAGS]="-fwhole-program-vtables" , or better -O3 -fwhole-program-vtables -fstrict-aliasing on the ThinLTO bots, on stage 3 & 4, so we can catch these issues?

Mar 2 2020, 9:31 AM · Restricted Project
tejohnson added a comment to D75201: [ThinLTO/LowerTypeTests] Handle unpromoted local type ids.
Mar 2 2020, 9:30 AM · Restricted Project

Feb 28 2020

tejohnson added a comment to D61634: [clang/llvm] Allow efficient implementation of libc's memory functions in C/C++.

The last patch from my side just went in (D74162: [Inliner] Inlining should honor nobuiltin attributes). So I think this is now complete.

Feb 28 2020, 7:54 AM · Restricted Project, Restricted Project
tejohnson committed rGf9ca75f19bab: [Inliner] Inlining should honor nobuiltin attributes (authored by tejohnson).
[Inliner] Inlining should honor nobuiltin attributes
Feb 28 2020, 7:44 AM
tejohnson closed D74162: [Inliner] Inlining should honor nobuiltin attributes.
Feb 28 2020, 7:44 AM · Restricted Project

Feb 27 2020

tejohnson updated the diff for D74162: [Inliner] Inlining should honor nobuiltin attributes.

Add internal option to control superset check and test it

Feb 27 2020, 9:53 PM · Restricted Project
tejohnson updated the diff for D74162: [Inliner] Inlining should honor nobuiltin attributes.

Address comments

Feb 27 2020, 10:17 AM · Restricted Project
tejohnson added inline comments to D74162: [Inliner] Inlining should honor nobuiltin attributes.
Feb 27 2020, 10:13 AM · Restricted Project

Feb 26 2020

tejohnson added a comment to D73242: [WPD/LowerTypeTests] Delay lowering/removal of type tests until after ICP.

Sent fix for review in D75201.

If the new problem showed up later and not when this one first went in, then it seems likely it is different than this issue. I'll see if I can reproduce and take a look.

Feb 26 2020, 2:11 PM · Restricted Project, Restricted Project
tejohnson added a comment to D73242: [WPD/LowerTypeTests] Delay lowering/removal of type tests until after ICP.

Sent fix for review in D75201.

Feb 26 2020, 11:14 AM · Restricted Project, Restricted Project
tejohnson created D75201: [ThinLTO/LowerTypeTests] Handle unpromoted local type ids.
Feb 26 2020, 11:14 AM · Restricted Project
tejohnson added a comment to D73242: [WPD/LowerTypeTests] Delay lowering/removal of type tests until after ICP.

FYI I have reproduced the failure, and am starting to debug.

Feb 26 2020, 7:45 AM · Restricted Project, Restricted Project

Feb 23 2020

tejohnson added a comment to D73242: [WPD/LowerTypeTests] Delay lowering/removal of type tests until after ICP.

FYI I have reproduced the failure, and am starting to debug.

Feb 23 2020, 8:56 AM · Restricted Project, Restricted Project

Feb 21 2020

tejohnson added inline comments to D74749: ThinLTOBitcodeWriter: drop dso_local when a GlobalVariable is converted to a declaration.
Feb 21 2020, 4:02 PM · Restricted Project
tejohnson added inline comments to D74751: [ThinLTO] Drop dso_local if a GlobalVariable satisfies isDeclarationForLinker().
Feb 21 2020, 2:20 PM · Restricted Project
tejohnson added a comment to D74749: ThinLTOBitcodeWriter: drop dso_local when a GlobalVariable is converted to a declaration.

Should there be a verifier check that there is no dso_local on declarations (after this and D74751 go in)?

Feb 21 2020, 1:15 PM · Restricted Project
tejohnson accepted D74778: [Assembler] Allow assembling empty index with non-zero flags.

LGTM. Ok makes sense, please update the comment to note that we check for non-empty flags too for that specific case.

Feb 21 2020, 9:55 AM · Restricted Project
tejohnson added a comment to D74778: [Assembler] Allow assembling empty index with non-zero flags.

What is the use case? Even with an empty module we at least get a module path entry. Hmm, we won't get a combined summary in that case either (with only entry being module path). Should this instead be changed to create the index if there is a module path entry (or in addition to checking flags)?

Feb 21 2020, 9:37 AM · Restricted Project

Feb 14 2020

tejohnson accepted D74420: [Assembler] Emit summary index flags.

lgtm

Feb 14 2020, 8:32 AM · Restricted Project
tejohnson committed rG2102ef8aad4c: Reenable "Always import constants" after compile time fixes (authored by tejohnson).
Reenable "Always import constants" after compile time fixes
Feb 14 2020, 6:41 AM
tejohnson closed D74512: Reenable "Always import constants" after compile time fixes.
Feb 14 2020, 6:41 AM · Restricted Project
tejohnson accepted D74591: [Driver] Rename AddGoldPlugin to addLTOOptions. NFC.

lgtm

Feb 14 2020, 6:32 AM · Restricted Project

Feb 12 2020

tejohnson created D74512: Reenable "Always import constants" after compile time fixes.
Feb 12 2020, 3:27 PM · Restricted Project
tejohnson added inline comments to D74420: [Assembler] Emit summary index flags.
Feb 12 2020, 6:50 AM · Restricted Project
tejohnson added a comment to D74162: [Inliner] Inlining should honor nobuiltin attributes.

@davidxl David can you take a look at it from the inliner side and let me know if it looks ok?

Feb 12 2020, 6:40 AM · Restricted Project

Feb 11 2020

tejohnson added a comment to D73242: [WPD/LowerTypeTests] Delay lowering/removal of type tests until after ICP.

This makes lld crash when linking chromium's base_unittests and probably does the same for most other binaries that use both thinlto and cfi: https://bugs.chromium.org/p/chromium/issues/detail?id=1049434

Reverted at 25aa2eef993e17708889abf56ed1ffad5074a9f4. Will investigate using repro @thakis sent off patch.

Feb 11 2020, 11:01 AM · Restricted Project, Restricted Project
tejohnson committed rG80d0a137a5ab: Restore "[WPD/LowerTypeTests] Delay lowering/removal of type tests until after… (authored by tejohnson).
Restore "[WPD/LowerTypeTests] Delay lowering/removal of type tests until after…
Feb 11 2020, 10:52 AM

Feb 7 2020

tejohnson accepted D74257: IR Linking: Support merging Warning+Max module metadata flags.

LGTM with a couple minor suggestions below.
I think this makes sense.

Feb 7 2020, 3:20 PM · Restricted Project
tejohnson added inline comments to D74162: [Inliner] Inlining should honor nobuiltin attributes.
Feb 7 2020, 6:57 AM · Restricted Project

Feb 6 2020

tejohnson added a comment to D74132: [ThinLTO/WPD] Remove dead code and improve test case.
I know I ran into issues when testing our apps with my changes that required this. But perhaps it is only the invocation at line 1180 - are you saying that one is needed but the others aren't?

I'm not sure it's needed as well. Most likely I simply missed it.
If I'm wrong about those invocations please submit/modify the test case.

Feb 6 2020, 6:56 PM · Restricted Project
tejohnson created D74162: [Inliner] Inlining should honor nobuiltin attributes.
Feb 6 2020, 1:38 PM · Restricted Project
tejohnson added a comment to D74132: [ThinLTO/WPD] Remove dead code and improve test case.

Let me investigate and get back. I know I ran into issues when testing our apps with my changes that required this. But perhaps it is only the invocation at line 1180 - are you saying that one is needed but the others aren't?

Feb 6 2020, 8:32 AM · Restricted Project

Feb 5 2020

tejohnson added a comment to D73242: [WPD/LowerTypeTests] Delay lowering/removal of type tests until after ICP.

This makes lld crash when linking chromium's base_unittests and probably does the same for most other binaries that use both thinlto and cfi: https://bugs.chromium.org/p/chromium/issues/detail?id=1049434

Feb 5 2020, 7:34 PM · Restricted Project, Restricted Project
tejohnson committed rG25aa2eef993e: Revert "[WPD/LowerTypeTests] Delay lowering/removal of type tests until after… (authored by tejohnson).
Revert "[WPD/LowerTypeTests] Delay lowering/removal of type tests until after…
Feb 5 2020, 7:29 PM
tejohnson added a reverting change for rG748bb5a0f196: [WPD/LowerTypeTests] Delay lowering/removal of type tests until after ICP: rG25aa2eef993e: Revert "[WPD/LowerTypeTests] Delay lowering/removal of type tests until after….
Feb 5 2020, 7:29 PM
tejohnson committed rG748bb5a0f196: [WPD/LowerTypeTests] Delay lowering/removal of type tests until after ICP (authored by tejohnson).
[WPD/LowerTypeTests] Delay lowering/removal of type tests until after ICP
Feb 5 2020, 9:09 AM
tejohnson closed D73242: [WPD/LowerTypeTests] Delay lowering/removal of type tests until after ICP.
Feb 5 2020, 9:09 AM · Restricted Project, Restricted Project
tejohnson added inline comments to D73242: [WPD/LowerTypeTests] Delay lowering/removal of type tests until after ICP.
Feb 5 2020, 6:26 AM · Restricted Project, Restricted Project

Feb 4 2020

tejohnson updated the diff for D73242: [WPD/LowerTypeTests] Delay lowering/removal of type tests until after ICP.

Rebase and implement suggestion (move Unknown to end and bump index version)

Feb 4 2020, 6:40 PM · Restricted Project, Restricted Project
tejohnson committed rG7f37a8026f6c: [InlineCost] Add flag to allow changing the default inline cost (authored by tejohnson).
[InlineCost] Add flag to allow changing the default inline cost
Feb 4 2020, 12:13 PM
tejohnson closed D73217: [InlineCost] Add flag to allow changing the default inline cost .
Feb 4 2020, 12:12 PM · Restricted Project
tejohnson added inline comments to D73242: [WPD/LowerTypeTests] Delay lowering/removal of type tests until after ICP.
Feb 4 2020, 10:39 AM · Restricted Project, Restricted Project
tejohnson added inline comments to D73242: [WPD/LowerTypeTests] Delay lowering/removal of type tests until after ICP.
Feb 4 2020, 6:23 AM · Restricted Project, Restricted Project

Feb 3 2020

tejohnson added inline comments to D73242: [WPD/LowerTypeTests] Delay lowering/removal of type tests until after ICP.
Feb 3 2020, 11:48 AM · Restricted Project, Restricted Project
tejohnson committed rGbed4d9c89794: [ThinLTO] More efficient export computation (NFC) (authored by tejohnson).
[ThinLTO] More efficient export computation (NFC)
Feb 3 2020, 9:19 AM
tejohnson closed D73851: [ThinLTO] More efficient export computation (NFC).
Feb 3 2020, 9:19 AM · Restricted Project
tejohnson updated the diff for D73851: [ThinLTO] More efficient export computation (NFC).

Address comments

Feb 3 2020, 8:48 AM · Restricted Project
tejohnson added inline comments to D73851: [ThinLTO] More efficient export computation (NFC).
Feb 3 2020, 8:48 AM · Restricted Project

Feb 2 2020

tejohnson created D73851: [ThinLTO] More efficient export computation (NFC).
Feb 2 2020, 10:16 AM · Restricted Project

Jan 31 2020

tejohnson added a comment to D73724: [ThinLTO] Disable "Always import constants" due to compile time issues.

I found the reason for the rest of the increase. Thankfully it is another easy to fix inefficiency. If you look at where we mark the refs as exported in computeImportForReferencedGlobals, it is marking each *copy* of the ref as exported:

Jan 31 2020, 9:30 AM · Restricted Project

Jan 30 2020

tejohnson added a comment to D73724: [ThinLTO] Disable "Always import constants" due to compile time issues.

I spent some time looking at one of the big increases from this change today, and found that there is a fairly straightforward fix for most of the increase. The problem is that in computeImportForReferencedGlobals, whenever a global variable is imported, we walk its set of references and mark them all as exported - every single time the global variable is imported. We only need to mark its refs as exported the first time it is exported into any other module. This patch didn't introduce the problem, but it was made much worse as we are far more likely to import global variables containing refs.

Jan 30 2020, 9:47 PM · Restricted Project