Page MenuHomePhabricator

jdoerfert (Johannes Doerfert)
User

Projects

User does not belong to any projects.

User Details

User Since
Jan 30 2014, 6:27 AM (263 w, 6 d)

Recent Activity

Sun, Feb 17

jdoerfert committed rL354213: Update room of the LLVM-Perf Workshop @CGO.
Update room of the LLVM-Perf Workshop @CGO
Sun, Feb 17, 5:08 AM

Thu, Feb 14

Herald added a project to D47849: [OpenMP][Clang][NVPTX] Enable math functions called in an OpenMP NVPTX target device region to be resolved as device-native function calls: Restricted Project.
Thu, Feb 14, 12:30 PM · Restricted Project

Wed, Feb 13

jdoerfert added a comment to D58091: Customize warnings for missing built-in type.
  • but I wonder why those diagnostics are happening in the first place. It seems like the warning is still useful when it triggers outside of that situation, no?

The underlying conceptual problem, which I didn't know when I added GE_Missing_type, is that this has _nothing_ to do with the location of the declaration. We say, include the header X.h, if we were not able to build a type for recognized built-in Y that should be declared in X.h. However, we should report _why_ we could not build the type instead. For built-ins we do not have a type on record (GE_Missing_type), this is always, so no warning for now. For the ones that we only fail to build a type because some requirement is missing, we should report that, at least when we are in the respective header. I don't have a perfect solution of what to do actually.

I could check if the declaration is (probably) in the respective header so we can switch between warnings?

That's kind of what I was wondering, but I deal with builtins so infrequently that my expectations may be wrong here. If a user declares a builtin with a conflicting type outside of a header file, that seems like we'd want to warn the user about right? But this seems to remove that warning, at least in the case of test/Sema/implicit-builtin-decl.c:71. Or do I misunderstand the situation causing the warning to trigger?

Wed, Feb 13, 12:31 PM · Restricted Project
jdoerfert added a comment to D58091: Customize warnings for missing built-in type.

I reported PR40692. I just tried this patch on our local build where we saw the failure on an RTOS implementing pthreads. Unfortunately with this patch I encountered an (unrelated) assertion. So this fix was inconclusive for me (for now). I will follow up but if this fix makes sense then you don't need to wait for my test results.

Wed, Feb 13, 8:26 AM · Restricted Project
jdoerfert added a comment to D58091: Customize warnings for missing built-in type.

If I'm following along properly, it sounds like we want to disable this warning largely because it can appear in header files attempting to declare the functions in question.

Wed, Feb 13, 8:26 AM · Restricted Project

Mon, Feb 11

jdoerfert created D58091: Customize warnings for missing built-in type.
Mon, Feb 11, 5:38 PM · Restricted Project

Mon, Feb 4

jdoerfert committed rG690a20467b66: Generalize pthread callback test case (authored by jdoerfert).
Generalize pthread callback test case
Mon, Feb 4, 12:45 PM
jdoerfert committed rC353088: Generalize pthread callback test case.
Generalize pthread callback test case
Mon, Feb 4, 12:45 PM
jdoerfert committed rL353088: Generalize pthread callback test case.
Generalize pthread callback test case
Mon, Feb 4, 12:45 PM

Wed, Jan 30

jdoerfert created D57460: [WIP] Prototype a generic kernel offloading interface.
Wed, Jan 30, 9:26 AM

Sat, Jan 26

jdoerfert committed rC352299: [FIX] Adjust CXX microsoft abi dynamic cast test to r352293.
[FIX] Adjust CXX microsoft abi dynamic cast test to r352293
Sat, Jan 26, 4:22 PM
jdoerfert committed rL352299: [FIX] Adjust CXX microsoft abi dynamic cast test to r352293.
[FIX] Adjust CXX microsoft abi dynamic cast test to r352293
Sat, Jan 26, 4:22 PM
jdoerfert committed rL352293: [ValueTracking] Look through casts when determining non-nullness.
[ValueTracking] Look through casts when determining non-nullness
Sat, Jan 26, 3:40 PM
jdoerfert closed D54956: [ValueTracking] Look through casts when determining non-nullness.
Sat, Jan 26, 3:40 PM

Fri, Jan 25

jdoerfert committed rL352215: Revert abstract formating for LLVM-Perf@CGO.
Revert abstract formating for LLVM-Perf@CGO
Fri, Jan 25, 8:50 AM
jdoerfert committed rL352208: Improve abstract formating for LLVM-Perf@CGO.
Improve abstract formating for LLVM-Perf@CGO
Fri, Jan 25, 7:33 AM
jdoerfert committed rL352207: Update abstract for LLVM-Perf@CGO.
Update abstract for LLVM-Perf@CGO
Fri, Jan 25, 7:32 AM

Wed, Jan 23

jdoerfert added a comment to D57052: [IPCP] Don't crash due to arg count/type mismatch between caller/callee.

I see your point and I acknowledge it is a problem. However, I'm not sure a check in IPCP and consequently later in other IPOs is the best solution.
While I have some ideas on how to deal with this (one is to not create call sites for this situation), I think we can go ahead with your local fix now,
keep the test case and make it more general as needed.

Long story short, LGTM.

One thing, can you mention that this problem was exposed by the fact that AbstractCallSites will look through the bitcast at the callee position of a call/invoke somewhere?

Thanks, I added that info to the summary. Now waiting to get my commit access back (seems like our legal department haven't signed the new license agreement yet... so this can't be landed yet... any day now...).

Wed, Jan 23, 9:18 AM

Tue, Jan 22

jdoerfert committed rL351869: Update DevMtg pages, especially LLVM-Perf@CGO.
Update DevMtg pages, especially LLVM-Perf@CGO
Tue, Jan 22, 12:34 PM
jdoerfert accepted D57052: [IPCP] Don't crash due to arg count/type mismatch between caller/callee.

I see your point and I acknowledge it is a problem. However, I'm not sure a check in IPCP and consequently later in other IPOs is the best solution.
While I have some ideas on how to deal with this (one is to not create call sites for this situation), I think we can go ahead with your local fix now,
keep the test case and make it more general as needed.

Tue, Jan 22, 9:04 AM

Mon, Jan 21

jdoerfert added a comment to D55851: Implement basic loop fusion pass.

Initial comments from my side.

Mon, Jan 21, 6:31 PM · Restricted Project

Jan 21 2019

jdoerfert committed rC351744: [NFC] Fix comparison warning issues by MSVC.
[NFC] Fix comparison warning issues by MSVC
Jan 21 2019, 6:27 AM
jdoerfert committed rL351744: [NFC] Fix comparison warning issues by MSVC.
[NFC] Fix comparison warning issues by MSVC
Jan 21 2019, 6:26 AM
jdoerfert added a comment to rL351629: Emit !callback metadata and introduce the callback attribute.
Jan 21 2019, 6:26 AM

Jan 19 2019

jdoerfert committed rC351665: [FIX] Generalize the expected results for callback clang tests.
[FIX] Generalize the expected results for callback clang tests
Jan 19 2019, 12:46 PM
jdoerfert committed rL351665: [FIX] Generalize the expected results for callback clang tests.
[FIX] Generalize the expected results for callback clang tests
Jan 19 2019, 12:46 PM
jdoerfert committed rL351644: [NFX] Fix language reference title declaration.
[NFX] Fix language reference title declaration
Jan 19 2019, 1:44 AM
jdoerfert committed rL351643: [FIX] Restrict callback pthreads_create test to linux only.
[FIX] Restrict callback pthreads_create test to linux only
Jan 19 2019, 1:44 AM
jdoerfert committed rL351642: [NFC] Generalize expected output for callback test.
[NFC] Generalize expected output for callback test
Jan 19 2019, 1:44 AM
jdoerfert committed rC351643: [FIX] Restrict callback pthreads_create test to linux only.
[FIX] Restrict callback pthreads_create test to linux only
Jan 19 2019, 1:44 AM
jdoerfert committed rC351642: [NFC] Generalize expected output for callback test.
[NFC] Generalize expected output for callback test
Jan 19 2019, 1:44 AM
jdoerfert committed rL351641: [NFC] Fix unused variable warnings in Release builds.
[NFC] Fix unused variable warnings in Release builds
Jan 19 2019, 1:44 AM

Jan 18 2019

jdoerfert committed rC351629: Emit !callback metadata and introduce the callback attribute.
Emit !callback metadata and introduce the callback attribute
Jan 18 2019, 9:41 PM
jdoerfert committed rL351629: Emit !callback metadata and introduce the callback attribute.
Emit !callback metadata and introduce the callback attribute
Jan 18 2019, 9:41 PM
jdoerfert closed D55483: Introduce the callback attribute and emit !callback metadata.
Jan 18 2019, 9:41 PM
jdoerfert committed rL351628: Enable IPConstantPropagation to work with abstract call sites.
Enable IPConstantPropagation to work with abstract call sites
Jan 18 2019, 9:23 PM
jdoerfert closed D56447: Enable IPConstantPropagation to work with abstract call sites.
Jan 18 2019, 9:23 PM
jdoerfert committed rL351627: AbstractCallSite -- A unified interface for (in)direct and callback calls.
AbstractCallSite -- A unified interface for (in)direct and callback calls
Jan 18 2019, 9:23 PM
jdoerfert closed D54498: AbstractCallSite -- A unified interface for (in)direct and callback calls.
Jan 18 2019, 9:23 PM

Jan 14 2019

jdoerfert added a comment to D56447: Enable IPConstantPropagation to work with abstract call sites.

Does the new documentation make sense?

Jan 14 2019, 8:40 PM
jdoerfert updated the diff for D56447: Enable IPConstantPropagation to work with abstract call sites.

Fix wording

Jan 14 2019, 8:39 PM
jdoerfert updated the diff for D56447: Enable IPConstantPropagation to work with abstract call sites.

Improved the documentation

Jan 14 2019, 8:36 PM
jdoerfert updated the diff for D55483: Introduce the callback attribute and emit !callback metadata.

Generalize the treatment of "kw_this" as "kw_ident"

Jan 14 2019, 12:57 PM
jdoerfert updated the diff for D55483: Introduce the callback attribute and emit !callback metadata.

Small fixes, allow "this" inside "callbacks"

Jan 14 2019, 12:01 PM

Jan 11 2019

jdoerfert updated the summary of D54498: AbstractCallSite -- A unified interface for (in)direct and callback calls.
Jan 11 2019, 11:20 PM
jdoerfert updated the diff for D54498: AbstractCallSite -- A unified interface for (in)direct and callback calls.

Update to the correct commit again.

Jan 11 2019, 11:20 PM
jdoerfert updated the diff for D54498: AbstractCallSite -- A unified interface for (in)direct and callback calls.

Remove leftover debug stmt

Jan 11 2019, 11:17 PM
jdoerfert added a comment to D55483: Introduce the callback attribute and emit !callback metadata.

Updated according to your comments.

Jan 11 2019, 8:06 PM
jdoerfert updated the diff for D55483: Introduce the callback attribute and emit !callback metadata.

Style changes, clang-format, documentation improvements

Jan 11 2019, 8:06 PM

Jan 9 2019

jdoerfert added inline comments to D55483: Introduce the callback attribute and emit !callback metadata.
Jan 9 2019, 5:47 PM
jdoerfert updated the diff for D55483: Introduce the callback attribute and emit !callback metadata.

Allow to use names in the callback metadata

Jan 9 2019, 5:43 PM

Jan 8 2019

jdoerfert updated the diff for D55483: Introduce the callback attribute and emit !callback metadata.

Fix tests

Jan 8 2019, 12:26 PM
jdoerfert updated the diff for D55483: Introduce the callback attribute and emit !callback metadata.

Update encoding, rebase to HEAD

Jan 8 2019, 11:40 AM
jdoerfert updated the diff for D56447: Enable IPConstantPropagation to work with abstract call sites.

Rebase to HEAD

Jan 8 2019, 11:39 AM
jdoerfert updated the diff for D54498: AbstractCallSite -- A unified interface for (in)direct and callback calls.

Rebase to HEAD and test fixes

Jan 8 2019, 11:39 AM
jdoerfert updated the diff for D56447: Enable IPConstantPropagation to work with abstract call sites.

Update the old encoding

Jan 8 2019, 10:32 AM
jdoerfert added a parent revision for D56447: Enable IPConstantPropagation to work with abstract call sites: D54498: AbstractCallSite -- A unified interface for (in)direct and callback calls.
Jan 8 2019, 10:29 AM
jdoerfert added a child revision for D54498: AbstractCallSite -- A unified interface for (in)direct and callback calls: D56447: Enable IPConstantPropagation to work with abstract call sites.
Jan 8 2019, 10:29 AM
jdoerfert created D56447: Enable IPConstantPropagation to work with abstract call sites.
Jan 8 2019, 10:29 AM
jdoerfert updated the diff for D54498: AbstractCallSite -- A unified interface for (in)direct and callback calls.

Removed IPConstProp, improved documentation/wording and metadata encoding

Jan 8 2019, 10:14 AM

Jan 4 2019

jdoerfert committed rL350417: Update LLVM-Perf@CGO page.
Update LLVM-Perf@CGO page
Jan 4 2019, 9:36 AM

Dec 21 2018

jdoerfert added a comment to D54498: AbstractCallSite -- A unified interface for (in)direct and callback calls.

A high level strategy comment. I think you're trying to go a bit too far in one patch. I'd advise first writing a patch which does nothing but implement the IPConstProp adjustments "the hard way" (i.e. without the AbstractCallSite) and focus on defining the metadata with the semantics you once. To really justify the complexity of the abstraction, you need more than one user. You could add another user to this patch, but doing so will just slow down the review. Separating this into a series of patches (IPConstProp w/metadata def, second user, then introduce abstraction) will make it much easier to see the necessity and make each piece more easily reviewable.

Splitting the patch and providing multiple use cases does not necessarily require rewriting the IPConstProp without the abstraction. This can be split into multiple (dependent) patches and other dependent patches can also be posted showing other use cases.

Dec 21 2018, 12:57 PM

Dec 13 2018

jdoerfert updated the diff for D54498: AbstractCallSite -- A unified interface for (in)direct and callback calls.

Improve LangRef wording

Dec 13 2018, 12:49 PM
jdoerfert added inline comments to D55483: Introduce the callback attribute and emit !callback metadata.
Dec 13 2018, 7:06 AM

Dec 11 2018

jdoerfert updated the diff for D54498: AbstractCallSite -- A unified interface for (in)direct and callback calls.

Check for isThreadDependent constants

Dec 11 2018, 7:59 PM
jdoerfert added a comment to D54498: AbstractCallSite -- A unified interface for (in)direct and callback calls.

Does the ipcp transform need to check isThreadDependent() on the Constant?

Dec 11 2018, 7:59 PM
jdoerfert added a comment to D55483: Introduce the callback attribute and emit !callback metadata.

Thanks for the feedback.

Dec 11 2018, 1:24 PM
jdoerfert updated the diff for D55483: Introduce the callback attribute and emit !callback metadata.

Fix and improve documentation

Dec 11 2018, 1:20 PM

Dec 10 2018

jdoerfert updated the diff for D55483: Introduce the callback attribute and emit !callback metadata.

Update according to initial feedback

Dec 10 2018, 11:17 PM
jdoerfert updated the diff for D54498: AbstractCallSite -- A unified interface for (in)direct and callback calls.

Update to new encoding

Dec 10 2018, 11:16 PM
jdoerfert added a comment to D55483: Introduce the callback attribute and emit !callback metadata.

This is missing all of the Sema and SemaCXX tests. Should have tests for member functions, variadic functions, incorrect arguments, incorrect subjects, etc.

Dec 10 2018, 1:50 PM

Dec 9 2018

jdoerfert updated the diff for D54498: AbstractCallSite -- A unified interface for (in)direct and callback calls.

Remove accidental changes

Dec 9 2018, 8:24 AM
jdoerfert added a child revision for D54498: AbstractCallSite -- A unified interface for (in)direct and callback calls: D55483: Introduce the callback attribute and emit !callback metadata.
Dec 9 2018, 8:22 AM
jdoerfert added a parent revision for D55483: Introduce the callback attribute and emit !callback metadata: D54498: AbstractCallSite -- A unified interface for (in)direct and callback calls.
Dec 9 2018, 8:22 AM

Dec 8 2018

jdoerfert created D55483: Introduce the callback attribute and emit !callback metadata.
Dec 8 2018, 9:09 PM

Dec 7 2018

jdoerfert updated the diff for D54498: AbstractCallSite -- A unified interface for (in)direct and callback calls.

Use metadata encoding, fix spelling and other minor mistakes

Dec 7 2018, 5:01 PM

Nov 28 2018

jdoerfert added a comment to D54956: [ValueTracking] Look through casts when determining non-nullness.

Removed s/zext, moved ptr2int to make sense. Bitcast was my actual use case, int2ptr was not (always) covered before, the ptr2int test case was but only late in computeKnownBits.

Nov 28 2018, 2:07 PM
jdoerfert updated the diff for D54956: [ValueTracking] Look through casts when determining non-nullness.

Code movement and removal (based on the comments by Eli Friedman)

Nov 28 2018, 2:06 PM
jdoerfert added inline comments to D54956: [ValueTracking] Look through casts when determining non-nullness.
Nov 28 2018, 8:30 AM
jdoerfert updated the diff for D54956: [ValueTracking] Look through casts when determining non-nullness.

Use auto * and remove obsolete modification

Nov 28 2018, 8:30 AM

Nov 27 2018

jdoerfert added inline comments to D54956: [ValueTracking] Look through casts when determining non-nullness.
Nov 27 2018, 3:16 PM
jdoerfert added inline comments to D54956: [ValueTracking] Look through casts when determining non-nullness.
Nov 27 2018, 2:05 PM
jdoerfert added inline comments to D54956: [ValueTracking] Look through casts when determining non-nullness.
Nov 27 2018, 1:44 PM
jdoerfert updated the diff for D54956: [ValueTracking] Look through casts when determining non-nullness.

Ensure no-op or extension casts and add appropriate tests. Also fix an error in LazyValueInfo which looked through AddrSpaceCast to determine non-nullness.

Nov 27 2018, 1:42 PM
jdoerfert added a comment to D54956: [ValueTracking] Look through casts when determining non-nullness.

I'm also running the LLVM-TS to check nothing breaks.

Nov 27 2018, 10:50 AM
jdoerfert updated the diff for D54956: [ValueTracking] Look through casts when determining non-nullness.

Look through even more instructions

Nov 27 2018, 10:26 AM
jdoerfert added inline comments to D54956: [ValueTracking] Look through casts when determining non-nullness.
Nov 27 2018, 10:03 AM
jdoerfert added a comment to D54956: [ValueTracking] Look through casts when determining non-nullness.

Would it be possible to add a test case?

Nov 27 2018, 10:01 AM
jdoerfert updated the diff for D54956: [ValueTracking] Look through casts when determining non-nullness.

Add impacted test cases

Nov 27 2018, 10:01 AM
jdoerfert created D54956: [ValueTracking] Look through casts when determining non-nullness.
Nov 27 2018, 9:49 AM

Nov 25 2018

jdoerfert added inline comments to D53342: [SimplifyLibCalls] Mark known arguments with nonnull.
Nov 25 2018, 7:35 PM
jdoerfert added a comment to rL298695: Revert r298491 and r298494 which changed Clang's handling of 'nonnull'.

Reverting for now as there are active miscompiles caused by the current version.

Nov 25 2018, 10:02 AM
jdoerfert added a comment to D53342: [SimplifyLibCalls] Mark known arguments with nonnull.

And we would be even more powerful with FunctionAttrs as a Module pass to use DT in arg attribute promotion logic (now we do it only for entry block).

Nov 25 2018, 10:00 AM

Nov 21 2018

jdoerfert added a comment to D53342: [SimplifyLibCalls] Mark known arguments with nonnull.

Some comments and questions.

Nov 21 2018, 5:35 PM
jdoerfert added a comment to D54498: AbstractCallSite -- A unified interface for (in)direct and callback calls.

FWIW TransitiveCallSite seems like a slightly better name to me than AbstractCallSite, as the CallSite class is already an abstraction over different kinds of calls. As for the location of the class, if it is tied to an analysis that gathers the transitive call sites, having it in lib/Analysis/ might make sense initially as well.

Nov 21 2018, 12:47 PM

Nov 14 2018

jdoerfert added a comment to D54498: AbstractCallSite -- A unified interface for (in)direct and callback calls.

Thanks for the answer! That clears up a lot.

So, I believe the main difference between the pthread example and the one that I have is that of mutual recursion: I will often have mutual recursion between the trampoline and the f_i, which usually complicates inter-procedural analysis (as far as I understand?)

Nov 14 2018, 12:27 PM
jdoerfert added a comment to D54498: AbstractCallSite -- A unified interface for (in)direct and callback calls.

I have a question in the context of optimising sequential programs -- I'm interested in optimising across a trampoline call, since I have a haskell-like lazy language, which lowers CPS into LLVM-IR by constructing a trampoline. Example IR here

Would the AbstractCallSite representation allow one to represent the control flow between:

trampoline -> fn1 -> trampoline -> fn2 -> ...
Nov 14 2018, 10:13 AM
jdoerfert added inline comments to D54498: AbstractCallSite -- A unified interface for (in)direct and callback calls.
Nov 14 2018, 9:37 AM
jdoerfert added a comment to D54498: AbstractCallSite -- A unified interface for (in)direct and callback calls.

Thanks for the comments!

Nov 14 2018, 8:05 AM

Nov 13 2018

jdoerfert added a comment to D53876: Preserve loop metadata when splitting exit blocks.

Thanks for the patch!

Nov 13 2018, 3:15 PM