Page MenuHomePhabricator

jdoerfert (Johannes Doerfert)
User

Projects

User does not belong to any projects.

User Details

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

Recent Activity

Thu, Dec 13

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

Improve LangRef wording

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

Tue, Dec 11

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

Check for isThreadDependent constants

Tue, Dec 11, 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?

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

Thanks for the feedback.

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

Fix and improve documentation

Tue, Dec 11, 1:20 PM

Mon, Dec 10

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

Update according to initial feedback

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

Update to new encoding

Mon, Dec 10, 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.

Mon, Dec 10, 1:50 PM

Sun, Dec 9

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

Remove accidental changes

Sun, Dec 9, 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.
Sun, Dec 9, 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.
Sun, Dec 9, 8:22 AM

Sat, Dec 8

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

Fri, Dec 7

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

Fri, Dec 7, 5:01 PM

Wed, Nov 28

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.

Wed, Nov 28, 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)

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

Use auto * and remove obsolete modification

Wed, Nov 28, 8:30 AM

Tue, Nov 27

jdoerfert added inline comments to D54956: [ValueTracking] Look through casts when determining non-nullness.
Tue, Nov 27, 3:16 PM
jdoerfert added inline comments to D54956: [ValueTracking] Look through casts when determining non-nullness.
Tue, Nov 27, 2:05 PM
jdoerfert added inline comments to D54956: [ValueTracking] Look through casts when determining non-nullness.
Tue, Nov 27, 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.

Tue, Nov 27, 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.

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

Look through even more instructions

Tue, Nov 27, 10:26 AM
jdoerfert added inline comments to D54956: [ValueTracking] Look through casts when determining non-nullness.
Tue, Nov 27, 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?

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

Add impacted test cases

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

Sun, Nov 25

jdoerfert added inline comments to D53342: [SimplifyLibCalls] Mark known arguments with nonnull.
Sun, Nov 25, 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.

Sun, Nov 25, 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).

Sun, Nov 25, 10:00 AM

Wed, Nov 21

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

Some comments and questions.

Wed, Nov 21, 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.

Wed, Nov 21, 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
jdoerfert created D54498: AbstractCallSite -- A unified interface for (in)direct and callback calls.
Nov 13 2018, 3:08 PM

Oct 25 2018

jdoerfert committed rL345324: Add LLVM'18 Slides.
Add LLVM'18 Slides
Oct 25 2018, 3:19 PM

Sep 15 2018

jdoerfert accepted D52118: [Loopinfo] Remove one latch case in getLoopID. NFC..

save an iteration over the loop's basic blocks (which is what getLoopLatch does)

Sep 15 2018, 3:49 AM

Sep 11 2018

jdoerfert committed rL341968: [LoopInfo][FIX] Remove leftover dump in unit test.
[LoopInfo][FIX] Remove leftover dump in unit test
Sep 11 2018, 10:51 AM
jdoerfert committed rL341927: [FuncAttrs] Remove "access range attributes" for read-none functions.
[FuncAttrs] Remove "access range attributes" for read-none functions
Sep 11 2018, 4:52 AM
jdoerfert committed rL341926: [LoopInfo] Fix Loop::getLoopID() for loops with multiple latches.
[LoopInfo] Fix Loop::getLoopID() for loops with multiple latches
Sep 11 2018, 4:46 AM
jdoerfert committed rL341923: [FIX] Remove non-existent css property.
[FIX] Remove non-existent css property
Sep 11 2018, 3:37 AM
jdoerfert committed rL341922: [FIX] Remove old style encoding definition, new one is present.
[FIX] Remove old style encoding definition, new one is present
Sep 11 2018, 3:37 AM
jdoerfert committed rL341920: [FIX] Use charset not encoding to denote utf-8.
[FIX] Use charset not encoding to denote utf-8
Sep 11 2018, 3:30 AM
jdoerfert committed rL341918: [NFC] Use relative links to llvm.org [No 4].
[NFC] Use relative links to llvm.org [No 4]
Sep 11 2018, 2:24 AM

Aug 31 2018

jdoerfert committed rL341204: [NFC] Use relative links to llvm.org [No 3].
[NFC] Use relative links to llvm.org [No 3]
Aug 31 2018, 4:36 AM
jdoerfert added a comment to D51255: [WWW] Use https instead of http to fix page problems.

First off, thanks for offering to help make the website work correctly! This all looks pretty reasonable to me. I'm wondering though, would it be possible to break this patch up into a few smaller patches? Since we do not have any type of staging infrastructure for llvm.org, I would prefer we not change so many files all at once. I feel like three steps here might be appropriate:

  1. Try with one file (one of the files with a one or two line change) to ensure the changes work as we expect them to.
  2. Apply changes to the rest of the files with the exception of footer.incl.
  3. Apply the last patch to footer.incl which adds the javascript bits in the footer (my experience tells me this is the most likely to break something, though the JS you have provided LGTM).
Aug 31 2018, 3:47 AM
jdoerfert committed rL341196: [NFC] Use relative links to llvm.org [No 2].
[NFC] Use relative links to llvm.org [No 2]
Aug 31 2018, 3:39 AM
jdoerfert committed rL341195: [NFC] Use relative links to llvm.org.
[NFC] Use relative links to llvm.org
Aug 31 2018, 3:30 AM

Aug 27 2018

jdoerfert updated the diff for D51255: [WWW] Use https instead of http to fix page problems.

Use relative links where possible (thus if we stay in the same subdomain http{,s}://llvm.org/.*)

Aug 27 2018, 9:54 AM
jdoerfert added a comment to D51255: [WWW] Use https instead of http to fix page problems.
In D51255#1214424, @asl wrote:

I think we need to preserve the protocol. E.g. if the page is loaded via http we need to load css via http as well.

Aug 27 2018, 7:19 AM
jdoerfert added a comment to D51255: [WWW] Use https instead of http to fix page problems.
In D51255#1214403, @kpn wrote:

Is there a good reason to have the hostname in the URL? Why not just link to "/Users.html" instead of "https://llvm.org/Users.html", for example? Using the hostname is only needed when linking to a page on a different server.

Aug 27 2018, 7:13 AM

Aug 25 2018

jdoerfert created D51255: [WWW] Use https instead of http to fix page problems.
Aug 25 2018, 1:46 AM

Aug 6 2018

jdoerfert added inline comments to D50295: Let GetUnderlyingObject/Objects use MemorySSA.
Aug 6 2018, 1:56 AM

Aug 2 2018

jdoerfert added inline comments to D50125: [FunctionAttrs] Annotate function arguments with call site information.
Aug 2 2018, 7:44 AM
jdoerfert updated the diff for D50125: [FunctionAttrs] Annotate function arguments with call site information.

Use call sites for now and improve testing of non-null deduction

Aug 2 2018, 6:13 AM
jdoerfert updated the diff for D50125: [FunctionAttrs] Annotate function arguments with call site information.

Remove large macro in favor of a switch

Aug 2 2018, 5:16 AM

Aug 1 2018

jdoerfert updated the diff for D50125: [FunctionAttrs] Annotate function arguments with call site information.

Fixed spelling, stripped casts, added the tests from D4609

Aug 1 2018, 3:40 PM
jdoerfert updated the summary of D50125: [FunctionAttrs] Annotate function arguments with call site information.
Aug 1 2018, 10:46 AM
jdoerfert created D50146: [FunctionAttrs] Introduce transitive call sites to represent callbacks.
Aug 1 2018, 9:45 AM
jdoerfert committed rL338585: [NFC][FunctionAttrs] Remove duplication in old/new PM pipeline.
[NFC][FunctionAttrs] Remove duplication in old/new PM pipeline
Aug 1 2018, 9:38 AM

Jul 31 2018

jdoerfert created D50125: [FunctionAttrs] Annotate function arguments with call site information.
Jul 31 2018, 7:17 PM
jdoerfert added a parent revision for D50107: [FunctionAttrs] Infer the argmemonly function attribute: D48387: [FunctionAttrs] Infer WriteOnly Function Attribute .
Jul 31 2018, 3:07 PM
jdoerfert added a child revision for D48387: [FunctionAttrs] Infer WriteOnly Function Attribute : D50107: [FunctionAttrs] Infer the argmemonly function attribute.
Jul 31 2018, 3:07 PM
jdoerfert created D50107: [FunctionAttrs] Infer the argmemonly function attribute.
Jul 31 2018, 3:03 PM
jdoerfert added a comment to D48387: [FunctionAttrs] Infer WriteOnly Function Attribute .

Ping. Are you going to upstream this?

Jul 31 2018, 8:49 AM

Jul 30 2018

jdoerfert committed rL338249: [LLVMDev18] Add link to submission guide.
[LLVMDev18] Add link to submission guide
Jul 30 2018, 6:10 AM

Jun 21 2018

jdoerfert added a comment to D48387: [FunctionAttrs] Infer WriteOnly Function Attribute .

This patch looks fine to me.

Jun 21 2018, 8:13 AM

Jun 6 2018

jdoerfert updated the summary of D47300: [RFC] Abstract parallel IR analyzes & optimizations + OpenMP implementations.
Jun 6 2018, 6:04 AM
jdoerfert updated the diff for D47300: [RFC] Abstract parallel IR analyzes & optimizations + OpenMP implementations.

Fix spelling and improve comments

Jun 6 2018, 4:50 AM
jdoerfert updated the diff for D47300: [RFC] Abstract parallel IR analyzes & optimizations + OpenMP implementations.

Fix capture problem and small improvements

Jun 6 2018, 4:45 AM
jdoerfert added a comment to D47300: [RFC] Abstract parallel IR analyzes & optimizations + OpenMP implementations.

Thanks for these initial comments. Second revision and actual RFC mail is coming.

Jun 6 2018, 4:43 AM

May 23 2018

jdoerfert updated the summary of D47300: [RFC] Abstract parallel IR analyzes & optimizations + OpenMP implementations.
May 23 2018, 4:18 PM
jdoerfert created D47300: [RFC] Abstract parallel IR analyzes & optimizations + OpenMP implementations.
May 23 2018, 4:17 PM
jdoerfert abandoned D47298: Silence warnings introduced with r333093.

Misused arcanist, sorry.

May 23 2018, 4:02 PM
jdoerfert created D47298: Silence warnings introduced with r333093.
May 23 2018, 4:01 PM
jdoerfert planned changes to D47298: Silence warnings introduced with r333093.
May 23 2018, 4:01 PM

May 11 2018

jdoerfert added a comment to D46735: [Test-Suite] Added Box Blur And Sobel Edge Detection.

Some context: Pankaj is a GSoC student on a project to add more Polly-optimizable benchmarks. Currently, only SingleSource/Benchmarks/Polybench is really optimizable, most other benchmarks contain some kind of pre-optimization that makes it difficult for Polly to preserve semantics, even if the algorithm itself is 100% optimizable.

May 11 2018, 10:30 AM

Mar 30 2018

jdoerfert added a comment to D41692: [Polly][WIP] Remove immediate dominator heuristic for error block detection..

I ran a comparison on the test-suite and here is the result:

Program                                                                        leone_N20_polly  leone_N30_errheuristic diff
 SingleSource/Benchmarks/Misc/flops                                            4.332            6.311                    45.7% 
 S...urce/Benchmarks/Polybench/linear-algebra/solvers/gramschmidt/gramschmidt  1.443            1.637                    13.4% 
 Polybench/Polybench-421/stencils/adi/P421_adi                                21.096           19.344                    -8.3%  
 External/SPEC/CFP2017rate/507.cactuBSSN_r/507.cactuBSSN_r                    31.899           33.395                     4.7%
Mar 30 2018, 4:36 AM · Restricted Project

Mar 29 2018

jdoerfert resigned from D41692: [Polly][WIP] Remove immediate dominator heuristic for error block detection..

I am confused. It seems you want to be smarter about the error blocks (which is necessary!) but this will just make them more greedy (too greedy in my experience). Did anybody check how this affects the test-suite or why the test cases fail [, after all, this says "ready to land"] ?

Mar 29 2018, 8:20 AM · Restricted Project

Mar 6 2018

jdoerfert committed rL326770: Add Slides for the LLVM-Performance Workshop @CGO.
Add Slides for the LLVM-Performance Workshop @CGO
Mar 6 2018, 1:16 AM

Mar 1 2018

jdoerfert committed rL326421: Add Slides for the LLVM-Performance Workshop @CGO.
Add Slides for the LLVM-Performance Workshop @CGO
Mar 1 2018, 12:27 AM

Feb 18 2018

jdoerfert committed rL325472: Finish LLVM-Performance Workshop @CGO Schedule.
Finish LLVM-Performance Workshop @CGO Schedule
Feb 18 2018, 1:59 PM
jdoerfert committed rL325471: Format LLVM-Performance Workshop @CGO Schedule.
Format LLVM-Performance Workshop @CGO Schedule
Feb 18 2018, 1:58 PM
jdoerfert committed rL325470: Add LLVM-Performance Workshop @CGO Schedule.
Add LLVM-Performance Workshop @CGO Schedule
Feb 18 2018, 1:55 PM

Jan 25 2018

jdoerfert committed rL323446: Change Performance Workshop Talk Title/Abstract.
Change Performance Workshop Talk Title/Abstract
Jan 25 2018, 9:29 AM

Jan 10 2018

jdoerfert committed rL322173: Add CGO performance workshop abstracts.
Add CGO performance workshop abstracts
Jan 10 2018, 3:55 AM

Oct 16 2017

jdoerfert added a comment to rL315683: [SCEV] Teach SCEV to find maxBECount when loop endbound is variant.

@jdoerfert @grosser
Could we please add as an XFAIL for now, so that it doesn't keep failing the polly buildbots?

Oct 16 2017, 8:14 AM

Oct 13 2017

jdoerfert updated subscribers of rL315683: [SCEV] Teach SCEV to find maxBECount when loop endbound is variant.

My local Polly does not pass this test anyway, but I guess Tobias can help you out or maybe @Meinersbur or @bollu. In any case it doesn't seem to be a "loop bounds test" so it should be possible to change it a little bit and keep it around.

Oct 13 2017, 2:32 PM

Oct 9 2017

jdoerfert committed rL315208: Add CGO performance workshop dates.
Add CGO performance workshop dates
Oct 9 2017, 9:00 AM

Sep 28 2017

jdoerfert added a comment to D35471: [Polly] [RFC] Calculate AST expression type.

I never said your approach is wrong or has an entirely wrong design, but said that a similar approach caused issues in graphite,

Sep 28 2017, 7:45 AM

Sep 26 2017

jdoerfert added a comment to D38255: [WIP] Polyhedral Value Analysis.

Hi Johannes,

thanks for posting the patch. Obviously it misses comments, and unittests for the C++ interface, but it already gives a very good idea where you are heading. I also feel this patch covers a couple of areas:

  1. A new C++ interface which seems to serve multiple purposes
    • Automatic memory management
    • Add some additional math functionality not available in isl at the moment
    • Rename a couple of functions to provide a better interface to LLVM
    • Add a couple of helpers / convenience features on top of isl (e.g. automatic space adjustment)
    • Add some functionality that is directly needed for the domain/range modeling, but not necessarily belongs to the core properties of an isl set.

      All of these ideas make a lot of sense. I am however slightly worried regarding the large amount of hand-written interfacing code -- which is often replicated across different classes. How much of isl are you planning to cover? Will you also introduce callbacks and stuff? I wonder if there would be a way to avoid a lot of this duplication and possibly make the separation between the parts that are just isl interfaces and the parts that are indeed LLVM additions more clear. We also have a larger set of isl extensions in Polly -- including corresponding unit tests. I think sharing these would indeed make a lot of sense.
  2. The polyhedral value analysis

    The general interface makes a lot of sense - I played with this myself (after having introduced islpp), but waited for your proposal to come out. It is a clear extension of the LLVM-IR modeling we discussed together in Polly and you nicely mixed it with the ScalarEvolution design of LLVM. Cool! The code is currently a little too large to comment on specific items. Some of the things you do are already things we did in Polly but unfortunately missing most comments, others are clearly new and I need to read through them in detail. As I said on the mailing list thread, I feel that this analysis generally makes a lot of sense -- assuming we agree -- I would like to help getting it into LLVM. If you would like to do this incrementally -- the RISC-V model would make a lot of sense here. Do you believe there is a way to split this into smaller pieces? Maybe this can be split into:
  3. Basic Interface
  4. Analysis of scalar values without control flow
  5. Simple loops
  6. Wrapping

    I am especially interested in understanding (and having documented well) how integer wrapping is modeled.
  7. Specifically, I would like this analysis to speculate the wrapping introduced by casts as they commonly arise e.g. in OpenCL code get_global_id / get_local_id. Not sure if this is currently possibly / optional.
  8. Also, did you consider multi-dimensional output spaces. I discussed with Siddharth and we might be able to model certain polynomial expressions this way. Most interestingly, we might be able to do delinearization on this model, which would allow us to effectively delinearize even in the presence of integer casts.
  9. Can you make wrapping optional -- meaning can you potentially model precise wrapping?

    Also, do you happen to have a design description why all this works? If not, I wonder if we should create this together when building up the code incrementally in LLVM.

    I also have a random set of comments, but these are clearly by far not complete but just passby comments.
Sep 26 2017, 3:30 PM
jdoerfert added inline comments to D38255: [WIP] Polyhedral Value Analysis.
Sep 26 2017, 3:30 PM
jdoerfert added inline comments to D38255: [WIP] Polyhedral Value Analysis.
Sep 26 2017, 3:29 PM

Sep 25 2017

jdoerfert added a comment to D38255: [WIP] Polyhedral Value Analysis.

I forgot to include a softlink of the isl include folder. In the llvm src directory the following should be sufficent:

Sep 25 2017, 3:37 PM
jdoerfert created D38255: [WIP] Polyhedral Value Analysis.
Sep 25 2017, 1:32 PM
jdoerfert committed rL314131: Add the Second LLVM Performance Workshop at CGO.
Add the Second LLVM Performance Workshop at CGO
Sep 25 2017, 11:17 AM