Prazek (Piotr Padlewski)
User

Projects

User does not belong to any projects.

User Details

User Since
Jul 21 2015, 5:19 PM (151 w, 6 d)

Recent Activity

Sat, Jun 16

Prazek added inline comments to D47299: [CodeGenCXX] Emit strip.invariant.group with -fstrict-vtable-pointers.
Sat, Jun 16, 10:56 AM

Fri, Jun 15

Prazek added inline comments to D47299: [CodeGenCXX] Emit strip.invariant.group with -fstrict-vtable-pointers.
Fri, Jun 15, 3:38 PM
Prazek added inline comments to D47299: [CodeGenCXX] Emit strip.invariant.group with -fstrict-vtable-pointers.
Fri, Jun 15, 3:37 PM
Prazek updated the diff for D47299: [CodeGenCXX] Emit strip.invariant.group with -fstrict-vtable-pointers.

Refactor

Fri, Jun 15, 3:36 PM
Prazek added inline comments to D47299: [CodeGenCXX] Emit strip.invariant.group with -fstrict-vtable-pointers.
Fri, Jun 15, 3:33 PM

Wed, Jun 13

Prazek updated the diff for D45151: [LICM] Hoisting invariant.group loads.
  • Fixed comments

@hfinkel is my response resonable?

Wed, Jun 13, 7:21 AM
Prazek committed rL334600: Add -fforce-emit-vtables.
Add -fforce-emit-vtables
Wed, Jun 13, 7:00 AM
Prazek committed rC334600: Add -fforce-emit-vtables.
Add -fforce-emit-vtables
Wed, Jun 13, 7:00 AM
Prazek closed D47108: [CodeGenCXX] Add -fforce-emit-vtables.
Wed, Jun 13, 7:00 AM
Prazek edited reviewers for D47103: Implement strip.invariant.group, added: davide; removed: rjmccall.
Wed, Jun 13, 6:43 AM
Prazek added a comment to D47103: Implement strip.invariant.group.

Friendly ping @hfinkel @rsmith

Wed, Jun 13, 6:43 AM

Mon, Jun 11

Prazek updated the diff for D47108: [CodeGenCXX] Add -fforce-emit-vtables.
  • Fixed templates
Mon, Jun 11, 6:24 AM
Prazek updated the diff for D47423: Simplify recursive launder.invariant.group and strip.

updated test

Mon, Jun 11, 4:21 AM
Prazek updated the diff for D47423: Simplify recursive launder.invariant.group and strip.

unreachable

Mon, Jun 11, 4:02 AM

Sat, Jun 2

Prazek added a comment to D47299: [CodeGenCXX] Emit strip.invariant.group with -fstrict-vtable-pointers.

@rjmccall @rsmith friendly ping

Sat, Jun 2, 1:51 PM
Prazek added a comment to D47103: Implement strip.invariant.group.

friendly ping

Sat, Jun 2, 1:45 PM
Prazek added a comment to D45151: [LICM] Hoisting invariant.group loads.

s/loop unrolling/loop peeling/
I will had to take a look at this at some time, but from what I've heard the state of loop peeling in LLVM is not very sofisticated, and implementing the logic that I propose might be a little hard.

Sat, Jun 2, 8:37 AM
Prazek added a comment to D45151: [LICM] Hoisting invariant.group loads.

You say that you don't yet know if this is profitable yet. Do you have reason to believe that it might not be profitable (e.g., some example where it seems like we might want to constrain the behavior)? We almost never favor keeping metadata over doing other transformations, so I think it's worth being explicit about our reasoning here. Just saying "I don't know yet" is probably not sufficient, as we could say that about nearly all metadata, and in that case, change the default logic.

Sat, Jun 2, 8:28 AM

Tue, May 29

Prazek added a comment to D47214: [InstCombine] Replace bcmp/bcopy with memcmp/memmove.

And two facts..

  1. LLVM already replaces bzero with memset
  2. There are many source codes related to networking which uses bcopy, bcmp.

    So I dont think this patch is totally useless.

    Maybe @Prazek can do review of this patch for me?
Tue, May 29, 6:31 AM

Mon, May 28

Prazek added a dependent revision for D47103: Implement strip.invariant.group: D47423: Simplify recursive launder.invariant.group and strip.
Mon, May 28, 2:47 PM
Prazek added a dependency for D47423: Simplify recursive launder.invariant.group and strip: D47103: Implement strip.invariant.group.
Mon, May 28, 2:47 PM
Prazek updated the diff for D47108: [CodeGenCXX] Add -fforce-emit-vtables.

fixed test

Mon, May 28, 2:46 PM

Sun, May 27

Prazek updated the diff for D47108: [CodeGenCXX] Add -fforce-emit-vtables.

small update

Sun, May 27, 11:39 AM
Prazek updated the diff for D47108: [CodeGenCXX] Add -fforce-emit-vtables.

Fixed missing vtable commponents

Sun, May 27, 11:18 AM
Prazek updated the diff for D47423: Simplify recursive launder.invariant.group and strip.

fixed nit

Sun, May 27, 9:56 AM
Prazek created D47423: Simplify recursive launder.invariant.group and strip.
Sun, May 27, 6:28 AM
Prazek updated the diff for D47299: [CodeGenCXX] Emit strip.invariant.group with -fstrict-vtable-pointers.

one more test

Sun, May 27, 5:11 AM
Prazek updated the diff for D47299: [CodeGenCXX] Emit strip.invariant.group with -fstrict-vtable-pointers.
Added launder when going from possiblyNotDynamic to possiblyDynamic
emitting strip for pointer -> int only if poitner is possiblyDynamic
Sun, May 27, 5:10 AM
Prazek added a reviewer for D45151: [LICM] Hoisting invariant.group loads: hfinkel.

Can someone with experience in Loop passes take a look at this?

Sun, May 27, 4:49 AM

Fri, May 25

Prazek added inline comments to D47299: [CodeGenCXX] Emit strip.invariant.group with -fstrict-vtable-pointers.
Fri, May 25, 5:44 PM
Prazek added a comment to D45150: Less conservative LoopSafetyInfo for headers.

OK, so it seems that at least the tests in the second patch passes without this patch, so I am fine with committing it without this one for one (also Philip if you could take a look at that patch I would be grateful)
I am worried about cases, where the first instruction does not throw, but it we can't hoist it (e.g. it depends on the loop phi) and after that, there is an instruction that can be hoisted.

Fri, May 25, 4:26 AM

Wed, May 23

Prazek added inline comments to D47103: Implement strip.invariant.group.
Wed, May 23, 4:17 PM
Prazek updated the diff for D47103: Implement strip.invariant.group.

Slitted commit into defining and using intrinsic

Wed, May 23, 4:17 PM
Prazek added a dependent revision for D47103: Implement strip.invariant.group: D47299: [CodeGenCXX] Emit strip.invariant.group with -fstrict-vtable-pointers.
Wed, May 23, 4:13 PM
Prazek added a dependency for D47299: [CodeGenCXX] Emit strip.invariant.group with -fstrict-vtable-pointers: D47103: Implement strip.invariant.group.
Wed, May 23, 4:13 PM
Prazek created D47299: [CodeGenCXX] Emit strip.invariant.group with -fstrict-vtable-pointers.
Wed, May 23, 4:13 PM
Prazek committed rL333070: Fix aliasing of launder.invariant.group.
Fix aliasing of launder.invariant.group
Wed, May 23, 2:20 AM
Prazek closed D47088: Fix aliasing of launder.invariant.group.
Wed, May 23, 2:20 AM
Prazek added a comment to D47108: [CodeGenCXX] Add -fforce-emit-vtables.

I thought we already had places in Sema that marked inline virtual methods as used, instantiated templates, etc. for devirtualization purposes when optimization was enabled. Did we rip that out?

I only recall the emitting available_externally vtables opportunistically, that is emitting it only if all the inline virtual functions are present (and they are not hidden).
(https://reviews.llvm.org/D33437)

Wed, May 23, 1:16 AM

Tue, May 22

Prazek updated the diff for D47088: Fix aliasing of launder.invariant.group.
  • Add more comments
Tue, May 22, 5:57 PM
Prazek added a comment to D47108: [CodeGenCXX] Add -fforce-emit-vtables.

@rjmccall do you have any thoughts on the best way to solve it?

Tue, May 22, 5:42 AM
Prazek retitled D47108: [CodeGenCXX] Add -fforce-emit-vtables from Add -fforce-emit-vtables to [CodeGenCXX] Add -fforce-emit-vtables.
Tue, May 22, 5:42 AM

May 19 2018

Prazek updated the diff for D47103: Implement strip.invariant.group.

rebase

May 19 2018, 5:07 PM
Prazek updated the diff for D47088: Fix aliasing of launder.invariant.group.

fix name

May 19 2018, 5:01 PM
Prazek added a dependent revision for D47088: Fix aliasing of launder.invariant.group: D47103: Implement strip.invariant.group.
May 19 2018, 4:48 PM
Prazek updated the diff for D47103: Implement strip.invariant.group.

After rebasing

May 19 2018, 4:47 PM
Prazek added inline comments to D47088: Fix aliasing of launder.invariant.group.
May 19 2018, 4:34 PM
Prazek updated the diff for D47088: Fix aliasing of launder.invariant.group.
  • small refactor
May 19 2018, 4:33 PM
Prazek added inline comments to D47088: Fix aliasing of launder.invariant.group.
May 19 2018, 4:03 PM
Prazek updated the diff for D47103: Implement strip.invariant.group.

Changed comments

May 19 2018, 3:55 PM
Prazek updated the diff for D47103: Implement strip.invariant.group.

introduced mayBeDynamicClass and added more tests

May 19 2018, 3:11 PM
Prazek retitled D47108: [CodeGenCXX] Add -fforce-emit-vtables from Add -fforce-emit-vtable to Add -fforce-emit-vtables.
May 19 2018, 1:09 PM
Prazek updated the diff for D47108: [CodeGenCXX] Add -fforce-emit-vtables.

Fixed flag passing

May 19 2018, 1:08 PM
Prazek updated the diff for D47108: [CodeGenCXX] Add -fforce-emit-vtables.

Fixed comment

May 19 2018, 12:16 PM
Prazek updated the diff for D47108: [CodeGenCXX] Add -fforce-emit-vtables.

remove empty line

May 19 2018, 12:04 PM
Prazek updated the diff for D47108: [CodeGenCXX] Add -fforce-emit-vtables.

Add release note

May 19 2018, 12:03 PM
Prazek updated subscribers of D47103: Implement strip.invariant.group.
May 19 2018, 11:58 AM
Prazek created D47108: [CodeGenCXX] Add -fforce-emit-vtables.
May 19 2018, 11:58 AM
Prazek updated the diff for D47103: Implement strip.invariant.group.

Reformat

May 19 2018, 8:04 AM
Prazek updated the diff for D47103: Implement strip.invariant.group.
  • small fixes in tests
May 19 2018, 7:21 AM
Prazek updated the diff for D47103: Implement strip.invariant.group.
  • Add deleted tests
May 19 2018, 7:08 AM
Prazek created D47103: Implement strip.invariant.group.
May 19 2018, 6:53 AM
Prazek added inline comments to D47088: Fix aliasing of launder.invariant.group.
May 19 2018, 5:50 AM
Prazek updated the diff for D47088: Fix aliasing of launder.invariant.group.
  • use getArgumentAliasingToReturnedPointer as it does not change behavior
May 19 2018, 5:49 AM
Prazek added inline comments to D47088: Fix aliasing of launder.invariant.group.
May 19 2018, 5:37 AM
Prazek updated the diff for D47088: Fix aliasing of launder.invariant.group.
  • Fixed nit
May 19 2018, 5:12 AM
Prazek updated the diff for D47088: Fix aliasing of launder.invariant.group.

Added comments

May 19 2018, 4:47 AM

May 18 2018

Prazek added a reviewer for D47088: Fix aliasing of launder.invariant.group: nlopes.
May 18 2018, 6:24 PM
Prazek updated the diff for D47088: Fix aliasing of launder.invariant.group.

Refactored code to getArgumentAliasingToReturnedPointer and added few comments.
Please check out isKnownNonZero, as I think it could also use getArgumentAliasingToReturnedPointer.

May 18 2018, 5:37 PM
Prazek committed rL332788: Propagate nonnull and dereferenceable throught launder.
Propagate nonnull and dereferenceable throught launder
May 18 2018, 4:58 PM
Prazek closed D46972: Propagate nonnull and dereferenceable throught launder.
May 18 2018, 4:58 PM
Prazek committed rL332787: Dissallow non-empty metadata for invariant.group.
Dissallow non-empty metadata for invariant.group
May 18 2018, 4:57 PM
Prazek closed D45419: Dissallow non-empty metadata for invariant.group.
May 18 2018, 4:57 PM
Prazek committed rL332786: Constant fold launder of null and undef.
Constant fold launder of null and undef
May 18 2018, 4:56 PM
This revision was not accepted when it landed; it landed in state Needs Review.
May 18 2018, 4:56 PM
Prazek added a comment to D47088: Fix aliasing of launder.invariant.group.

What I want to know is: how did you decide what had to be modified? Did you just look for every place that handles returned arguments? If you had to describe to someone how to find the places that need modification, how would you do it? (because that's what we need in the comment).

Yes, I pretty much checked every place that uses CaptureTracking and looked for special handling of calls or uses of getUnerlyingObject.

May 18 2018, 4:39 PM
Prazek added a comment to D47088: Fix aliasing of launder.invariant.group.

Is there some general principle we can outline to describe where these updates are needed?

May 18 2018, 3:52 PM
Prazek committed rL332781: [MemDep] Fixed handling of invariant.group.
[MemDep] Fixed handling of invariant.group
May 18 2018, 3:44 PM
Prazek closed D45320: [MemDep] Fixed handling of invariant.group.
May 18 2018, 3:44 PM
Prazek updated the summary of D45320: [MemDep] Fixed handling of invariant.group.
May 18 2018, 3:41 PM
Prazek updated the diff for D45320: [MemDep] Fixed handling of invariant.group.

changed comment

May 18 2018, 3:39 PM
Prazek updated the diff for D45320: [MemDep] Fixed handling of invariant.group.

Added very small repro for the bug :)

May 18 2018, 3:37 PM
Prazek added inline comments to D47088: Fix aliasing of launder.invariant.group.
May 18 2018, 3:27 PM
Prazek added a dependency for D47088: Fix aliasing of launder.invariant.group: D45320: [MemDep] Fixed handling of invariant.group.
May 18 2018, 3:06 PM
Prazek added a dependent revision for D45320: [MemDep] Fixed handling of invariant.group: D47088: Fix aliasing of launder.invariant.group.
May 18 2018, 3:06 PM
Prazek created D47088: Fix aliasing of launder.invariant.group.
May 18 2018, 3:05 PM
Prazek added a comment to D45320: [MemDep] Fixed handling of invariant.group.

I measured build time of llvm& clang with devirtualization and either the variance is too big, or the compiler without this patch is faster.
As I found out, after writing other bugfix for AA, clang does not bootstrap correctly without this patch so I would love to push it.
If you don't have any objections, I would like to push it. I will still have to do build time measurements with and without devirtualization, but I would like to do it when everything is ready.
(Note that this code will not be executed unless you use devirtualization)

May 18 2018, 9:33 AM

May 16 2018

Prazek added a comment to D46972: Propagate nonnull and dereferenceable throught launder.

I also think that this is fine. Regarding hoisting, will we hoist the intrinsic itself or is further work necessary to enable that?

May 16 2018, 5:25 PM
Prazek retitled D32423: Constant fold launder of null and undef from Constant fold barriers of null and undef to Constant fold launder of null and undef.
May 16 2018, 1:06 PM
Prazek added reviewers for D45419: Dissallow non-empty metadata for invariant.group: hfinkel, xbolva00.
May 16 2018, 12:50 PM
Prazek added a reviewer for D46972: Propagate nonnull and dereferenceable throught launder: sanjoy.
May 16 2018, 12:41 PM
Prazek created D46972: Propagate nonnull and dereferenceable throught launder.
May 16 2018, 12:41 PM

May 15 2018

Prazek added reviewers for D46900: [BasicAA] Fix handling of invariant group launders: hfinkel, sanjoy.

I went throught it and it looks good to me, I didn't expect that fixing CaptureTracking can lead Alias Analisis to return NoAlias instead of MustAlias. It would be nice if the code would check for such assumptions, but I have no ideas how it could be implemented.

May 15 2018, 1:24 PM

May 10 2018

Prazek added a comment to D46723: Require GCC 5.1 and LLVM 3.5 at a minimum.

I think you also need to change GettingStarted doc

May 10 2018, 1:55 PM
Prazek added a comment to D45150: Less conservative LoopSafetyInfo for headers.

Specifically NOT okay to land as is. The quadratic complexity concern is a real one and the window chosen here is very likely too large.

And if you're concern is purely LICM, this patch is no longer needed at all. I introduced a surgical fix for LICM which solves this without the need for O(n^2) work. Unfortunately, that approach only works for LICM (not, store promotion or other users of MustExecute). Unfortunately, as you've found there don't appear to be any good cheap ways to ask ordering questions around instructions within a basic block. If there were, we could just keep track of the first throwing instruction.

You could consider trying to wire in the caching needed for OrderedBasicBlock, but again, that's only needed if you're concern is different consumer than LICM

May 10 2018, 7:33 AM
Prazek added a comment to D45320: [MemDep] Fixed handling of invariant.group.

Adding George to see if he remembers any cases, so you have some stuff to test this all with.

I don't remember anything in particular. I'd recommend just bootstrapping clang/llvm and seeing what happens, assuming clang will emit these intrinsics if you pass an added cflag to it or something.

It's my impression that halide is great at generating code that hits worst-case behaviors in LLVM. I don't know whether they're users of these invariant intrinsics, however.

May 10 2018, 7:15 AM

May 5 2018

Prazek added a comment to rL331587: [CaptureTracking] Handle capturing of launder.invariant.group.

Hello,

is "-fstrict-vtable-pointers" still experimental? Cannot be on by default now?

May 5 2018, 8:01 AM
Prazek added a comment to D45320: [MemDep] Fixed handling of invariant.group.

During MemorySSA development, i'm pretty positive we tried some similar types of reverse maps, and while it did relatively okay on "llvm + clang testsuite", it fell down pretty hard in the real world from memory usage.

Adding George to see if he remembers any cases, so you have some stuff to test this all with.
He's on vacation, but i believe gets back next week.

May 5 2018, 7:59 AM
Prazek updated the diff for D45320: [MemDep] Fixed handling of invariant.group.
  • fix typos
May 5 2018, 7:27 AM
Prazek updated the diff for D45320: [MemDep] Fixed handling of invariant.group.

Added reverse map

May 5 2018, 7:13 AM