Page MenuHomePhabricator

fhahn (Florian Hahn)
User

Projects

User does not belong to any projects.

User Details

User Since
Aug 18 2016, 4:39 AM (152 w, 4 d)

Recent Activity

Sat, Jul 20

fhahn added a comment to D64936: [Local] Zap blockaddress without users in ConstantFoldTerminator..

LGTM. I am assuming this passed test-suite and ninja check runs?

Sat, Jul 20, 5:31 AM · Restricted Project
fhahn committed rG0a7faa4e3d9f: [Local] Zap blockaddress without users in ConstantFoldTerminator. (authored by fhahn).
[Local] Zap blockaddress without users in ConstantFoldTerminator.
Sat, Jul 20, 5:27 AM
fhahn committed rL366633: [Local] Zap blockaddress without users in ConstantFoldTerminator..
[Local] Zap blockaddress without users in ConstantFoldTerminator.
Sat, Jul 20, 5:25 AM
fhahn closed D64936: [Local] Zap blockaddress without users in ConstantFoldTerminator..
Sat, Jul 20, 5:25 AM · Restricted Project

Fri, Jul 19

fhahn created D65020: [GVN] Do PHI translations across all edges between the load and the unavailable pred..
Fri, Jul 19, 2:39 PM · Restricted Project
fhahn added a comment to D64936: [Local] Zap blockaddress without users in ConstantFoldTerminator..

Just a comment from a bystander:

Isn't there some kind of verifier pass that clang runs (perhaps under some expensive-checks flag) after every pass?

If such a thing exists, checking that BlockAddress nodes are properly cleaned seems like something it should do.

Fri, Jul 19, 2:54 AM · Restricted Project
fhahn created D64984: [Verifier] Verify all blockaddress constants left over have at least one user..
Fri, Jul 19, 2:45 AM · Restricted Project

Thu, Jul 18

fhahn created D64936: [Local] Zap blockaddress without users in ConstantFoldTerminator..
Thu, Jul 18, 10:11 AM · Restricted Project
fhahn removed a child revision for D64886: [Use] Preserve original uselist order in Use::swap().: D64884: [PHINode] Preserve use-list order when removing incoming values..
Thu, Jul 18, 7:01 AM · Restricted Project
fhahn removed a parent revision for D64884: [PHINode] Preserve use-list order when removing incoming values.: D64886: [Use] Preserve original uselist order in Use::swap()..
Thu, Jul 18, 7:01 AM · Restricted Project
fhahn updated the diff for D64884: [PHINode] Preserve use-list order when removing incoming values..

Add move assignment operator that preserves the uselist order and use
std::move instead of std::copy. This preserves the original order of operands instead
of swapping them, which is slightly better IMO as swapping would mean that the order
of the remaining operands is dependent on the order in which we remove incoming values.

Thu, Jul 18, 7:01 AM · Restricted Project

Wed, Jul 17

fhahn updated the diff for D64886: [Use] Preserve original uselist order in Use::swap()..

Remove unnecessary checks.

Wed, Jul 17, 2:35 PM · Restricted Project
fhahn added a child revision for D64886: [Use] Preserve original uselist order in Use::swap().: D64884: [PHINode] Preserve use-list order when removing incoming values..
Wed, Jul 17, 2:31 PM · Restricted Project
fhahn added a parent revision for D64884: [PHINode] Preserve use-list order when removing incoming values.: D64886: [Use] Preserve original uselist order in Use::swap()..
Wed, Jul 17, 2:31 PM · Restricted Project
fhahn created D64886: [Use] Preserve original uselist order in Use::swap()..
Wed, Jul 17, 2:31 PM · Restricted Project
fhahn created D64884: [PHINode] Preserve use-list order when removing incoming values..
Wed, Jul 17, 2:26 PM · Restricted Project
fhahn added a comment to D63459: Loop Cache Analysis.

I would like to take another look, but do not want to block this for too long. Please feel free to commit if you don't hear from me by Monday.

Wed, Jul 17, 1:44 PM · Restricted Project
fhahn abandoned D61346: [CMake] Do not use libtool on Apple platforms when building LLVM with (full) LTO..

Thanks for the feedback, setting DYLD_LIBRARY_PATH as suggested does what I want :)

Wed, Jul 17, 6:48 AM · Restricted Project
fhahn updated the diff for D64866: [PredicateInfo] Replace pointer comparisons with deterministic compares..

Fix wording in assert messages.

Wed, Jul 17, 6:44 AM · Restricted Project
fhahn created D64866: [PredicateInfo] Replace pointer comparisons with deterministic compares..
Wed, Jul 17, 6:31 AM · Restricted Project

Tue, Jul 16

fhahn created D64816: [PredicateInfo] Use SmallVector instead of SmallPtrSet..
Tue, Jul 16, 1:35 PM · Restricted Project
fhahn added a reviewer for D64065: Skip test earlier if metric is not found in compare.py: paquette.

Any chance you could have a quick look Jessica?

Tue, Jul 16, 10:42 AM · Restricted Project
fhahn added a reviewer for D64066: Add geomean column earlier to dataout as Series in compare.py.: paquette.

Any chance you could have a quick look Jessica?

Tue, Jul 16, 10:41 AM · Restricted Project
fhahn accepted D64785: [ADCE] Fix non-deterministic behaviour due to iterating over a pointer set.

LGTM, thanks. We iterate over BlocksWithDeadTerminators later on, which can cause edges to BBs to be removed a different order.

Tue, Jul 16, 3:54 AM · Restricted Project

Mon, Jul 15

fhahn added a comment to D60582: [IPSCCP] Add general integer range support..

Ping. @efriedma do you have any thoughts about the general direction of this patch?

Mon, Jul 15, 10:36 AM · Restricted Project
fhahn added inline comments to D64088: [DDG] DirectedGraph as a base class for various dependence graphs such as DDG and PDG..
Mon, Jul 15, 2:38 AM · Restricted Project
fhahn committed rG1d554b744125: [LoopVectorize] Pass unfiltered list of arguments to getIntrinsicInstCost. (authored by fhahn).
[LoopVectorize] Pass unfiltered list of arguments to getIntrinsicInstCost.
Mon, Jul 15, 1:51 AM
fhahn committed rL366049: [LoopVectorize] Pass unfiltered list of arguments to getIntrinsicInstCost..
[LoopVectorize] Pass unfiltered list of arguments to getIntrinsicInstCost.
Mon, Jul 15, 1:51 AM
fhahn added a comment to D59995: [LV] Exclude loop-invariant inputs from scalar cost computation..

This triggers failed asserts in some cases, reproable with https://martin.st/temp/loadimage-preproc.cpp.xz, with clang++ -target i686-w64-mingw32 -c -O3 loadimage-preproc.cpp. Will post a proper bug report later today, unless someone else beats me to it.

Mon, Jul 15, 1:51 AM · Restricted Project

Sun, Jul 14

fhahn committed rG9428d95ce7f8: [LV] Exclude loop-invariant inputs from scalar cost computation. (authored by fhahn).
[LV] Exclude loop-invariant inputs from scalar cost computation.
Sun, Jul 14, 1:14 PM
fhahn added inline comments to D59995: [LV] Exclude loop-invariant inputs from scalar cost computation..
Sun, Jul 14, 1:14 PM · Restricted Project
fhahn committed rL366030: [LV] Exclude loop-invariant inputs from scalar cost computation..
[LV] Exclude loop-invariant inputs from scalar cost computation.
Sun, Jul 14, 1:12 PM
fhahn closed D59995: [LV] Exclude loop-invariant inputs from scalar cost computation..
Sun, Jul 14, 1:12 PM · Restricted Project
fhahn added inline comments to D59995: [LV] Exclude loop-invariant inputs from scalar cost computation..
Sun, Jul 14, 11:37 AM · Restricted Project
fhahn committed rG19d3fdb08b72: Recommit "[BitcodeReader] Validate OpNum, before accessing Record array." (authored by fhahn).
Recommit "[BitcodeReader] Validate OpNum, before accessing Record array."
Sun, Jul 14, 7:07 AM
fhahn committed rL366018: Recommit "[BitcodeReader] Validate OpNum, before accessing Record array.".
Recommit "[BitcodeReader] Validate OpNum, before accessing Record array."
Sun, Jul 14, 7:07 AM
fhahn committed rG864474c9c72a: [BitcodeReader] Use tighter upper bound to validate forward references. (authored by fhahn).
[BitcodeReader] Use tighter upper bound to validate forward references.
Sun, Jul 14, 5:37 AM
fhahn committed rL366017: [BitcodeReader] Use tighter upper bound to validate forward references..
[BitcodeReader] Use tighter upper bound to validate forward references.
Sun, Jul 14, 5:35 AM
fhahn closed D64577: [BitcodeReader] Use tighter upper bound to validate forward references..
Sun, Jul 14, 5:35 AM · Restricted Project

Fri, Jul 12

fhahn added a comment to D64548: [LoopInfo] Introduce getUniqueNonLatchExitBlocks utility function.

Regarding tests, I think we have unit tests for most functions in LoopInfo, it would be good to add a test there for the new function too, if you decide to add it

Fri, Jul 12, 11:27 AM · Restricted Project
fhahn added a comment to D64548: [LoopInfo] Introduce getUniqueNonLatchExitBlocks utility function.

IMO this seems like quite a specific function to add (there are other blocks that might be interesting to filter ). I think we could achieve the same thing with a filter_range on the caller side without much extra code and with it being slightly more explicit. But that’s quite subjective, so feel free to disregard.

Fri, Jul 12, 11:10 AM · Restricted Project
fhahn added a comment to D59995: [LV] Exclude loop-invariant inputs from scalar cost computation..
Fri, Jul 12, 6:32 AM · Restricted Project
fhahn updated the diff for D59995: [LV] Exclude loop-invariant inputs from scalar cost computation..

clang-format, small refactor

Fri, Jul 12, 6:32 AM · Restricted Project

Thu, Jul 11

fhahn added a child revision for D64577: [BitcodeReader] Use tighter upper bound to validate forward references.: D64507: [BitcodeReader] Validate OpNum, before accessing Record array..
Thu, Jul 11, 11:29 AM · Restricted Project
fhahn added a parent revision for D64507: [BitcodeReader] Validate OpNum, before accessing Record array.: D64577: [BitcodeReader] Use tighter upper bound to validate forward references..
Thu, Jul 11, 11:29 AM · Restricted Project
fhahn added inline comments to D64577: [BitcodeReader] Use tighter upper bound to validate forward references..
Thu, Jul 11, 11:24 AM · Restricted Project
fhahn created D64577: [BitcodeReader] Use tighter upper bound to validate forward references..
Thu, Jul 11, 11:23 AM · Restricted Project
fhahn added a comment to D64557: Add llvm.loop.licm.disable metadata.

For some targets the LICM pass can result in sub-optimal code in some
cases where it would be better not to run the pass, but it isn't
always possible to suppress the transformations heuristically.

Thu, Jul 11, 4:41 AM · Restricted Project
fhahn added a comment to D64507: [BitcodeReader] Validate OpNum, before accessing Record array..

I've reverted the patch, because the bitcode file caused an out-of-memory error on a builder.

Thu, Jul 11, 4:06 AM · Restricted Project
fhahn added inline comments to D64553: [LoopUtils] Extend the scope of getLoopEstimatedTripCount.
Thu, Jul 11, 4:01 AM · Restricted Project
fhahn committed rG3b9994615f48: Revert [BitcodeReader] Validate OpNum, before accessing Record array. (authored by fhahn).
Revert [BitcodeReader] Validate OpNum, before accessing Record array.
Thu, Jul 11, 3:58 AM
fhahn committed rL365757: Revert [BitcodeReader] Validate OpNum, before accessing Record array..
Revert [BitcodeReader] Validate OpNum, before accessing Record array.
Thu, Jul 11, 3:53 AM
fhahn added inline comments to D64427: [Test-Suite] Support Cross-Compilation and Cross-execution targeting arm64-linux-android.
Thu, Jul 11, 3:10 AM · Restricted Project
fhahn committed rG8b222ecf2769: [BitcodeReader] Validate OpNum, before accessing Record array. (authored by fhahn).
[BitcodeReader] Validate OpNum, before accessing Record array.
Thu, Jul 11, 2:59 AM
fhahn committed rL365750: [BitcodeReader] Validate OpNum, before accessing Record array..
[BitcodeReader] Validate OpNum, before accessing Record array.
Thu, Jul 11, 2:56 AM
fhahn closed D64507: [BitcodeReader] Validate OpNum, before accessing Record array..
Thu, Jul 11, 2:56 AM · Restricted Project

Wed, Jul 10

fhahn added a comment to D64088: [DDG] DirectedGraph as a base class for various dependence graphs such as DDG and PDG..

To not to be stuck in details and not block the dependence graph patches, we maybe should land the patch and work on it in-tree when its users materialize?

Wed, Jul 10, 3:19 PM · Restricted Project
fhahn added inline comments to D64088: [DDG] DirectedGraph as a base class for various dependence graphs such as DDG and PDG..
Wed, Jul 10, 1:32 PM · Restricted Project
fhahn added a comment to D64128: [CodeGen] Generate llvm.ptrmask instead of inttoptr(and(ptrtoint, C)) if possible..

I wouldn't favor adding something really obscure that was only useful for clang, but I think builtins to set and clear mask bits while promising to preserve object-reference identity would be more generally useful for libraries. For example, there might be somewhere in libc++ that could take advantage of this.

Wed, Jul 10, 10:49 AM · Restricted Project, Restricted Project
fhahn updated the diff for D64507: [BitcodeReader] Validate OpNum, before accessing Record array..

Improve error message.

Wed, Jul 10, 10:21 AM · Restricted Project
fhahn added inline comments to D64507: [BitcodeReader] Validate OpNum, before accessing Record array..
Wed, Jul 10, 10:05 AM · Restricted Project
fhahn created D64507: [BitcodeReader] Validate OpNum, before accessing Record array..
Wed, Jul 10, 9:20 AM · Restricted Project
fhahn added a comment to D64065: Skip test earlier if metric is not found in compare.py.

ping

Wed, Jul 10, 7:59 AM · Restricted Project
fhahn accepted D64368: [LoopUnroll+LoopUnswitch] do not transform loops containing callbr.

LGTM thanks. Please wait with committing a day or so, in case Hal or Eli have additional comments.

Wed, Jul 10, 7:59 AM · Restricted Project
fhahn added a comment to D64066: Add geomean column earlier to dataout as Series in compare.py..

ping

Wed, Jul 10, 7:59 AM · Restricted Project

Tue, Jul 9

fhahn added inline comments to D64088: [DDG] DirectedGraph as a base class for various dependence graphs such as DDG and PDG..
Tue, Jul 9, 2:42 PM · Restricted Project
fhahn added a comment to D64088: [DDG] DirectedGraph as a base class for various dependence graphs such as DDG and PDG..

Tests missing.

The tests will be provided with the patches that extend the DirectedGraph and actually build an instance of it. I realize this patch introduces code without tests, but this is all in an effort to keep the reviews small. If there are any other suggestions on how to break up the reviews I'd be more than happy to look into it.

Tue, Jul 9, 2:02 PM · Restricted Project
fhahn added a comment to D64128: [CodeGen] Generate llvm.ptrmask instead of inttoptr(and(ptrtoint, C)) if possible..

I would be opposed to any addition of a -f flag for this absent any evidence that it's valuable for some actual C code; this patch appears to be purely speculative. I certainly don't think we should be adding it default-on. Your argument about alignment is what I was referring to when I mentioned that this is enforcing alignment restrictions in places we traditionally and intentionally haven't.

Note that it won't help Clang's major uses of PointerIntPair and PointerUnion because our traits say that types like Decl and Type have more alignment bits than their formal alignment would indicate, and PointerIntPair occupies alignment bits starting with the most significant.

Tue, Jul 9, 10:09 AM · Restricted Project, Restricted Project
fhahn added a comment to D64359: [LOOPINFO] Add member function to retrieve loops in breadth-first order.

I can use breadth_first from ADT/BreadthFirstIterator.h to collect the loops in breadth-first order. Arguably the getLoopsInPreorder() member functions could also be removed in favor of using ADT/DepthFirstIterator.h (need to confirm whether that does a preorder traversal).

Tue, Jul 9, 9:58 AM · Restricted Project
fhahn added inline comments to D63459: Loop Cache Analysis.
Tue, Jul 9, 8:24 AM · Restricted Project
fhahn accepted D64224: Keep the order of the basic blocks in the cloned loop as the original loop.

LGTM, thanks. For the commit message, it would be great if you could prefix the area the patch falls in, e.g. [CloneFunction].

Tue, Jul 9, 8:02 AM · Restricted Project

Mon, Jul 8

fhahn added a comment to D64359: [LOOPINFO] Add member function to retrieve loops in breadth-first order.

AFAIK, GraphTraits is implemented for Loop and you should be able to just use breadth_first from ADT/BreadthFirstIterator.h. It should return a breadth-first iterator range over the sub loops. Given it is a one-liner, I am not sure we would need to add a special method to LoopBase.

Mon, Jul 8, 3:09 PM · Restricted Project
fhahn requested changes to D64101: [LoopUnroll] fix cloning callbr.

Marking as requiring changes while the comments are being addressed.

Mon, Jul 8, 2:34 PM · Restricted Project
fhahn accepted D64309: [LoopInfo] Update getExitEdges to accept vector of pairs for non const BasicBlock.

LGTM, thanks for the alternative approach. It would be great if you could add a sentence about the reasoning (more consistent with the rest of the Loop APIs) in the commit message.

Mon, Jul 8, 10:20 AM · Restricted Project

Fri, Jul 5

fhahn updated the diff for D59995: [LV] Exclude loop-invariant inputs from scalar cost computation..

Addressed Ayal's comments, thanks and sorry for the long delay, it somehow dropped off my radar.

Fri, Jul 5, 8:56 AM · Restricted Project
fhahn added inline comments to D64176: [Bugpoint redesign] Added Pass to Remove Global Variables.
Fri, Jul 5, 7:26 AM · Restricted Project
fhahn accepted D64091: ScheduleDAG: Fix incorrectly killing registers in bundles.

LGTM, thanks!

Fri, Jul 5, 3:55 AM
fhahn accepted D63921: [Loop Peeling] Add support for peeling of loops with multiple exits.

I assume @reames marked it as requiring changes due to my comments, but it might be good to wait till early next week, in case he has additional comments.

Fri, Jul 5, 3:39 AM · Restricted Project
fhahn added inline comments to D63921: [Loop Peeling] Add support for peeling of loops with multiple exits.
Fri, Jul 5, 3:30 AM · Restricted Project
fhahn added inline comments to D64060: [LoopInfo] Extend getExitEdges API.
Fri, Jul 5, 3:19 AM
fhahn added inline comments to D64060: [LoopInfo] Extend getExitEdges API.
Fri, Jul 5, 3:01 AM

Thu, Jul 4

fhahn added a comment to D64128: [CodeGen] Generate llvm.ptrmask instead of inttoptr(and(ptrtoint, C)) if possible..

The pointer/integer conversion is "implementation-defined", but it's not totally unconstrained. C notes that "The mapping functions for converting a pointer to an integer or an integer to a pointer are intended to be consistent with the addressing structure of the execution environment.", and we do have to honor that. The standard allows that "the result ... might not point to an entity of the referenced type", but when in fact it's guaranteed to do so (i.e. it's not just a coincidental result of an implementation decision like the exact address of a global variable — no "guessing"), I do think we have an obligation to make it work. And on a practical level, there has to be *some* way of playing clever address tricks in the language in order to implement things like allocators and so forth. So this makes me very antsy.

I don't disagree. But I believe the question is if we have:

int *x = malloc(4);
int *y = malloc(4);
if (x & ~15 == y) {
  *(x & ~15) = 5; // Is this allowed, and if so, must the compiler assume that it might set the value of *y?
}
Thu, Jul 4, 7:43 AM · Restricted Project, Restricted Project
fhahn added a comment to D64128: [CodeGen] Generate llvm.ptrmask instead of inttoptr(and(ptrtoint, C)) if possible..

Thanks for the quick responses and the helpful comments. Thank you very much Hal, for summarizing the argument from previous discussions. My initial understanding indeed was that by generating ptrmask directly for C/C++ expressions, we can circumvent the issues that come with ptrtoint/inttoptr in LLVM.

Thu, Jul 4, 7:26 AM · Restricted Project, Restricted Project

Wed, Jul 3

fhahn added a comment to D64101: [LoopUnroll] fix cloning callbr.

Maybe we could make the semantics of callbr a bit more explicit in LangRef?

Wed, Jul 3, 3:54 PM · Restricted Project
fhahn committed rG78a60c762ae3: [LoopBase] Strengthen isLoopExiting by requiring that BB must be inside the… (authored by fhahn).
[LoopBase] Strengthen isLoopExiting by requiring that BB must be inside the…
Wed, Jul 3, 1:18 PM
fhahn committed rL365077: [LoopBase] Strengthen isLoopExiting by requiring that BB must be inside the….
[LoopBase] Strengthen isLoopExiting by requiring that BB must be inside the…
Wed, Jul 3, 1:17 PM
fhahn closed D63952: [LoopBase] Strengthen isLoopExiting by requiring that BB must be inside the loop..
Wed, Jul 3, 1:17 PM · Restricted Project
fhahn accepted D64101: [LoopUnroll] fix cloning callbr.

LGTM, thanks!

Wed, Jul 3, 1:06 PM · Restricted Project
fhahn added a parent revision for D61669: [ValueTracking] Look through ptrmask intrinsics during getUnderlyingObject.: D64150: [ValueTracking] Add MustPreserveNullness arg to functions analyzing calls. (NFC).
Wed, Jul 3, 11:05 AM · Restricted Project
fhahn added a child revision for D64150: [ValueTracking] Add MustPreserveNullness arg to functions analyzing calls. (NFC): D61669: [ValueTracking] Look through ptrmask intrinsics during getUnderlyingObject..
Wed, Jul 3, 11:05 AM · Restricted Project
fhahn added inline comments to D61669: [ValueTracking] Look through ptrmask intrinsics during getUnderlyingObject..
Wed, Jul 3, 11:05 AM · Restricted Project
fhahn updated the diff for D61669: [ValueTracking] Look through ptrmask intrinsics during getUnderlyingObject..

Handle nonnullness requirement for the use of getArgumentAliasingToReturnedPointer
in isKnownNonZero, as suggested.

Wed, Jul 3, 11:02 AM · Restricted Project
fhahn created D64150: [ValueTracking] Add MustPreserveNullness arg to functions analyzing calls. (NFC).
Wed, Jul 3, 11:02 AM · Restricted Project
fhahn added inline comments to D64101: [LoopUnroll] fix cloning callbr.
Wed, Jul 3, 11:02 AM · Restricted Project
fhahn added a comment to D63952: [LoopBase] Strengthen isLoopExiting by requiring that BB must be inside the loop..

The AMDGPU fix was committed, so this should be ready to go in :) @reames, it would be great if you could accept it on Phab

Wed, Jul 3, 6:59 AM · Restricted Project
fhahn added inline comments to D64128: [CodeGen] Generate llvm.ptrmask instead of inttoptr(and(ptrtoint, C)) if possible..
Wed, Jul 3, 5:10 AM · Restricted Project, Restricted Project
fhahn updated the diff for D64128: [CodeGen] Generate llvm.ptrmask instead of inttoptr(and(ptrtoint, C)) if possible..

Use IgnoreParens().

Wed, Jul 3, 5:10 AM · Restricted Project, Restricted Project
fhahn added inline comments to D63921: [Loop Peeling] Add support for peeling of loops with multiple exits.
Wed, Jul 3, 4:59 AM · Restricted Project
fhahn added inline comments to D63923: [Loop Peeling] Enable peeling for loops with multiple exits.
Wed, Jul 3, 4:59 AM · Restricted Project
fhahn added inline comments to D63917: [LoopPeel] Re-factor llvm::peelLoop method. NFC..
Wed, Jul 3, 4:55 AM · Restricted Project