Page MenuHomePhabricator

rahmanl (Rahman Lavaee)
User

Projects

User does not belong to any projects.

User Details

User Since
Jul 30 2019, 2:02 PM (44 w, 2 d)

Recent Activity

Apr 13 2020

rahmanl committed rG05192e585ce1: Extend BasicBlock sections to allow specifying clusters of basic blocks in the… (authored by rahmanl).
Extend BasicBlock sections to allow specifying clusters of basic blocks in the…
Apr 13 2020, 12:28 PM
rahmanl committed rG4ddf7ab454b0: Revert "Extend BasicBlock sections to allow specifying clusters of basic blocks" (authored by rahmanl).
Revert "Extend BasicBlock sections to allow specifying clusters of basic blocks"
Apr 13 2020, 12:28 PM
rahmanl added a reverting change for rG0d4ec16d3db3: Extend BasicBlock sections to allow specifying clusters of basic blocks in the…: rG4ddf7ab454b0: Revert "Extend BasicBlock sections to allow specifying clusters of basic blocks".
Apr 13 2020, 12:28 PM
rahmanl closed D76954: LLVM support for BB-cluster sections.
Apr 13 2020, 12:28 PM · Restricted Project
rahmanl updated the diff for D76954: LLVM support for BB-cluster sections.

Re-uploading the diff since I missed test files in the latest update.

Apr 13 2020, 12:25 PM · Restricted Project
rahmanl updated the diff for D76954: LLVM support for BB-cluster sections.

This final update applies @MaskRay and @efriedma's last suggestions.
Thanks to all the reviewers.

Apr 13 2020, 12:25 PM · Restricted Project
rahmanl committed rG0d4ec16d3db3: Extend BasicBlock sections to allow specifying clusters of basic blocks in the… (authored by rahmanl).
Extend BasicBlock sections to allow specifying clusters of basic blocks in the…
Apr 13 2020, 11:54 AM

Apr 11 2020

rahmanl committed rG61d39b627a80: Revert "This is a test commit." (authored by rahmanl).
Revert "This is a test commit."
Apr 11 2020, 4:01 PM
rahmanl added a reverting change for rGab31797e166c: This is a test commit.: rG61d39b627a80: Revert "This is a test commit.".
Apr 11 2020, 4:00 PM
rahmanl committed rGab31797e166c: This is a test commit. (authored by rahmanl).
This is a test commit.
Apr 11 2020, 4:00 PM

Apr 10 2020

rahmanl added a comment to D76954: LLVM support for BB-cluster sections.

Thanks again @efriedma and @tmsriram.

Apr 10 2020, 3:36 PM · Restricted Project
rahmanl updated the diff for D76954: LLVM support for BB-cluster sections.

The major change with this is a new struct called MBBSectionID to represent the basic block section IDs instead of a plain integer.
This makes the code cleaner (especially for the upcoming CFI and DebugInfo patches).

Apr 10 2020, 3:36 PM · Restricted Project

Apr 8 2020

rahmanl added a comment to D76954: LLVM support for BB-cluster sections.

Thanks a lot for your insightful comments @eli.friedman. I think removing the hasBBSections() calls from AsmPrinter.cpp has made the code a lot better.

Apr 8 2020, 5:24 PM · Restricted Project
rahmanl updated the diff for D76954: LLVM support for BB-cluster sections.

The major change in this diff is removing all "MF->hasBBSections()" calls from AsmPrinter.cpp per @eli.friedman 's suggestion.
Other changes:

Refactoring the size directive emission for basic block symbols.
Merging the function getNamedSectionForMachineBasicBlock into getSectionForMachineBasicBlock.
Re-allowing the emission of basic block alignment for BBSections.
Removing the duplicate assignBeginEndSection from MIRParser and declaring it as an external function defined in BBSectionsPrepare.cpp.
Apr 8 2020, 4:53 PM · Restricted Project

Apr 7 2020

rahmanl added a comment to D76954: LLVM support for BB-cluster sections.

@efriedma Would you please take a look at this patch? Any feedback is appreciated.

Apr 7 2020, 4:54 PM · Restricted Project

Apr 3 2020

rahmanl updated the summary of D76954: LLVM support for BB-cluster sections.
Apr 3 2020, 2:38 PM · Restricted Project
rahmanl added a comment to D76954: LLVM support for BB-cluster sections.

Handled all of @tmsriram 's 3rd round of comments.

Apr 3 2020, 2:38 PM · Restricted Project
rahmanl updated the diff for D76954: LLVM support for BB-cluster sections.

Moved assignBeginEndSections to BBSectionsPrepare.cpp and MIRParser.cpp.

Apr 3 2020, 2:38 PM · Restricted Project

Apr 2 2020

rahmanl added a comment to D76954: LLVM support for BB-cluster sections.

Addressed @tmsriram 's second round of comments.

Apr 2 2020, 6:27 PM · Restricted Project
rahmanl updated the diff for D76954: LLVM support for BB-cluster sections.

Addressed @tmsriram 's second round of comments.

Apr 2 2020, 6:27 PM · Restricted Project

Apr 1 2020

rahmanl added a comment to D76954: LLVM support for BB-cluster sections.

Finished addressing one more @tmsriram 's suggestion involving redundant insertion of explicit fallthrough branches.

Apr 1 2020, 6:32 PM · Restricted Project
rahmanl updated the diff for D76954: LLVM support for BB-cluster sections.

The major change int this update is the ability of "not inserting unconditional branches" when fallthrough block hasn't moved.

Apr 1 2020, 5:59 PM · Restricted Project

Mar 31 2020

rahmanl added a comment to D76954: LLVM support for BB-cluster sections.

Thanks a lot for the comments @tmsriram . I managed to get most of them addressed (Most importantly the one about nested maps).

Mar 31 2020, 2:52 PM · Restricted Project
rahmanl updated the diff for D76954: LLVM support for BB-cluster sections.

Major changes with this update:

1- Using a StringMap of vectors instead of nested map in getBBClusterInfo (BBSectionsPrepare.cpp).
2- Structured error handling in getBBClusterInfo.
3- New basicblock-section-clusters tests exercising various combinations of clustering (involving exception handling blocks and cold code), add ensuring that branches are optimized/inserted at the right places.
Mar 31 2020, 2:17 PM · Restricted Project

Mar 27 2020

rahmanl updated the diff for D76954: LLVM support for BB-cluster sections.

Added a test for bb-cluster sections: llvm/test/CodeGen/X86/basicblock-sections-clusters.ll

Mar 27 2020, 2:17 PM · Restricted Project
rahmanl created D76954: LLVM support for BB-cluster sections.
Mar 27 2020, 2:17 PM · Restricted Project

Feb 27 2020

rahmanl added a parent revision for D73497: lld: Propeller framework part I: D73674: Propeller: LLVM support for basic block sections (Base Patch - Part 2).
Feb 27 2020, 2:28 PM · Restricted Project
rahmanl added a child revision for D73674: Propeller: LLVM support for basic block sections (Base Patch - Part 2): D73497: lld: Propeller framework part I.
Feb 27 2020, 2:28 PM · Restricted Project

Feb 14 2020

rahmanl added a comment to D73674: Propeller: LLVM support for basic block sections (Base Patch - Part 2).

Is there some reason to emit "cold" and "exception" blocks into separate sections? Not sure what benefit you get from separating them.

Feb 14 2020, 4:48 PM · Restricted Project

Feb 11 2020

rahmanl added inline comments to D73674: Propeller: LLVM support for basic block sections (Base Patch - Part 2).
Feb 11 2020, 3:08 PM · Restricted Project

Feb 6 2020

rahmanl updated the diff for D68073: Propeller code layout optimizations.

This update changes the offset field to signed integer.

Feb 6 2020, 10:02 AM · Restricted Project

Feb 5 2020

rahmanl updated the diff for D68073: Propeller code layout optimizations.

This update changes class variable names to camelCase.

Feb 5 2020, 9:46 AM · Restricted Project

Jan 31 2020

rahmanl updated the diff for D68073: Propeller code layout optimizations.

This update mainly changes the floating point variables in the code layout parameters to integers. 20% speedup is achieved by this.

Jan 31 2020, 7:26 PM · Restricted Project

Jan 30 2020

rahmanl updated the diff for D73739: Exception support for basic block sections.

Remove the redundant else after return + sync in the changes in the parent patch.

Jan 30 2020, 2:55 PM · Restricted Project
rahmanl updated the summary of D73739: Exception support for basic block sections.
Jan 30 2020, 1:05 PM · Restricted Project
rahmanl added a parent revision for D73739: Exception support for basic block sections: D73674: Propeller: LLVM support for basic block sections (Base Patch - Part 2).
Jan 30 2020, 12:58 PM · Restricted Project
rahmanl added a child revision for D73674: Propeller: LLVM support for basic block sections (Base Patch - Part 2): D73739: Exception support for basic block sections.
Jan 30 2020, 12:58 PM · Restricted Project
rahmanl created D73739: Exception support for basic block sections.
Jan 30 2020, 12:58 PM · Restricted Project

Jan 24 2020

rahmanl updated the diff for D68073: Propeller code layout optimizations.

This update moves all the code layout optimizations under lld/ELF/Propeller/CodeLayout.

Jan 24 2020, 11:19 AM · Restricted Project

Jan 23 2020

rahmanl updated the diff for D68073: Propeller code layout optimizations.

This update simplifies the update of chain and offset mapping after merging a new chain.
Affected file: PropellerNodeChainBuilder.cpp

Jan 23 2020, 4:49 PM · Restricted Project

Jan 21 2020

rahmanl updated the diff for D68073: Propeller code layout optimizations.

We have made major changes to the Propeller since the last update. The changes are documented here: http://lists.llvm.org/pipermail/llvm-dev/2020-January/138426.html

Jan 21 2020, 4:48 PM · Restricted Project

Oct 8 2019

rahmanl updated the diff for D68073: Propeller code layout optimizations.

This update addresses previous comments from @ruiu.
Most importantly, it removes the propeller-align-basic-block functionality since it is not fit with the current code. I will add this functionality in a later patch.

Oct 8 2019, 11:08 PM · Restricted Project

Oct 2 2019

rahmanl updated the diff for D68073: Propeller code layout optimizations.

This update adds one more test which exercises the different flavors of layout optimization in propeller by toggling reorder-bb, reorder-funcs, and split-funcs.

Oct 2 2019, 3:53 PM · Restricted Project
rahmanl updated the diff for D68073: Propeller code layout optimizations.

This update addresses the previous comments including:

1- Adding standard header comments.
2- Adding more comments to the code.
3- Fixing variable and function names to lower case.
Oct 2 2019, 10:46 AM · Restricted Project

Sep 26 2019

rahmanl added a child revision for D68062: Propeller lld framework for basicblock sections: D68073: Propeller code layout optimizations.
Sep 26 2019, 10:15 AM · Restricted Project
rahmanl added a parent revision for D68073: Propeller code layout optimizations: D68062: Propeller lld framework for basicblock sections.
Sep 26 2019, 10:15 AM · Restricted Project

Sep 25 2019

rahmanl updated subscribers of D68073: Propeller code layout optimizations.
Sep 25 2019, 11:54 PM · Restricted Project
rahmanl created D68073: Propeller code layout optimizations.
Sep 25 2019, 11:49 PM · Restricted Project

Aug 13 2019

rahmanl added a comment to D65837: For explicit sections, limit unique section ids to when fintegrated-as=true..

The original commit that this revision was trying to fix was reverted in rG885fa02da97a9f4d15f05fd7ec9c1358c47dd125 due to other technical reasons that this revision was not aiming to fix.

Aug 13 2019, 5:05 PM · Restricted Project

Aug 7 2019

rahmanl added a comment to D65478: Create unique, but identically-named ELF sections for explicitly-sectioned functions and globals when using -function-sections and -data-sections..
In D65478#1620005, @pcc wrote:

Unfortunately, this causes some problems. It looks like the sections are created with different attributes than the original. This causes problems such as sections being writable when the original was read-only, including https://crbug.com/990942 where that causes program crashes. There is some more discussion on that bug report.

I'll revert this to unbreak the Chromium build, and we can come up with a way forward from there.

Hi Bob,
We plan to gate this feature behind a condition: D65837
I think in the Chromium case, what it needs is the -funique-section-names. More precisely, Chromium needs this flag only for the explicitly defined section "protected_memory", but I don't think it hurts to do it globally ( Chromium build may actually be using this flag anyways. Please confirm.)
If you think that the chromium build could use this flag, I will change D65837 to do the check.

Chromium is depending on an implementation detail here and the revert is temporary until we can land a compiler feature that will let us avoid the implementation detail dependence. It doesn't seem necessary to change the condition that you've already implemented in D65837.

Aug 7 2019, 3:45 PM · Restricted Project
rahmanl added a comment to D65478: Create unique, but identically-named ELF sections for explicitly-sectioned functions and globals when using -function-sections and -data-sections..

Unfortunately, this causes some problems. It looks like the sections are created with different attributes than the original. This causes problems such as sections being writable when the original was read-only, including https://crbug.com/990942 where that causes program crashes. There is some more discussion on that bug report.

I'll revert this to unbreak the Chromium build, and we can come up with a way forward from there.

Aug 7 2019, 3:19 PM · Restricted Project
rahmanl updated the diff for D65837: For explicit sections, limit unique section ids to when fintegrated-as=true..

Added test case.

Aug 7 2019, 9:50 AM · Restricted Project

Aug 6 2019

rahmanl updated subscribers of D65837: For explicit sections, limit unique section ids to when fintegrated-as=true..
Aug 6 2019, 5:23 PM · Restricted Project
rahmanl added a reviewer for D65837: For explicit sections, limit unique section ids to when fintegrated-as=true.: dblaikie.
Aug 6 2019, 5:23 PM · Restricted Project
rahmanl created D65837: For explicit sections, limit unique section ids to when fintegrated-as=true..
Aug 6 2019, 5:23 PM · Restricted Project
rahmanl added a comment to rL367501: Create unique, but identically-named ELF sections for explicitly-sectioned….

I'm not sure the second necessarily follows from the first. The way unique section names work for function-sections is to use a dot-separated suffix (".text._Z3foo", etc). Is the "strip the dot-separated suffix" standard, or some special case for .text? If it's standardized in some way, we could rely on that - adding a suffix to explicitly-named sections & the linker would remove those.

Aug 6 2019, 1:49 PM
rahmanl added a comment to rL367501: Create unique, but identically-named ELF sections for explicitly-sectioned….

Thank you for spotting the problem David.
As I understand, there are two options here

1- Make this feature conditioned on TM.getUniqueSectionNames(): This makes -funique-section-names override -function-sections and -data-sections for explicitly-named sections.
2- Make this feature conditioned on TM.getMCAsmInfo()->useIntegratedAssembler(): This would make sure that for all assemblers except the integrated one, we disable this behavior.

I am open to both ways. So please advise.

Aug 6 2019, 1:20 PM

Jul 31 2019

rahmanl added a comment to D65478: Create unique, but identically-named ELF sections for explicitly-sectioned functions and globals when using -function-sections and -data-sections..

Thanks for the LGTM @ppc
Please go ahead and commit this change as I don't have commit access yet.
Differential Revision: https://reviews.llvm.org/D65478

Jul 31 2019, 4:51 PM · Restricted Project
rahmanl updated the diff for D65478: Create unique, but identically-named ELF sections for explicitly-sectioned functions and globals when using -function-sections and -data-sections..

Fixed the comment and removed the braces.

Jul 31 2019, 4:43 PM · Restricted Project
rahmanl updated the diff for D65478: Create unique, but identically-named ELF sections for explicitly-sectioned functions and globals when using -function-sections and -data-sections..
Jul 31 2019, 2:11 PM · Restricted Project
rahmanl updated the diff for D65478: Create unique, but identically-named ELF sections for explicitly-sectioned functions and globals when using -function-sections and -data-sections..

Fix regular expression in explicit-elf-sections.ll test.

Jul 31 2019, 10:07 AM · Restricted Project

Jul 30 2019

rahmanl updated the diff for D65478: Create unique, but identically-named ELF sections for explicitly-sectioned functions and globals when using -function-sections and -data-sections..

Updated the patch to handle data sections as well (thanks to @pcc for the suggestion).

Jul 30 2019, 6:06 PM · Restricted Project
rahmanl created D65478: Create unique, but identically-named ELF sections for explicitly-sectioned functions and globals when using -function-sections and -data-sections..
Jul 30 2019, 2:25 PM · Restricted Project