Page MenuHomePhabricator

ssijaric (Sanjin Sijaric)
User

Projects

User does not belong to any projects.

User Details

User Since
Feb 6 2014, 12:57 PM (289 w, 1 d)

Recent Activity

Apr 17 2019

ssijaric added inline comments to D60349: [COFF, ARM64] Fix ABI implementation of struct returns.
Apr 17 2019, 5:21 PM · Restricted Project

Jan 18 2019

ssijaric committed rL351577: Fix the buildbot issue introduced by r351421.
Fix the buildbot issue introduced by r351421
Jan 18 2019, 11:41 AM
ssijaric added a comment to rL351421: [ARM64][Windows] Share unwind codes between epilogues.
Jan 18 2019, 11:41 AM

Jan 17 2019

ssijaric added a comment to rL351404: [SEH] [ARM64] Retrieve the frame pointer from SEH funclets.

@ssijaric This is failing on EXPENSIVE_CHECKS buildbots, can you take a look or should I revert?

http://lab.llvm.org:8011/builders/llvm-clang-x86_64-expensive-checks-win/builds/15196/steps/test-check-all/logs/stdio

Thanks for letting me know! I am looking it at it now.

Jan 17 2019, 2:21 PM
ssijaric committed rL351472: Fix the buildbot failure introduced by r351404.
Fix the buildbot failure introduced by r351404
Jan 17 2019, 12:28 PM
ssijaric added a comment to rL351404: [SEH] [ARM64] Retrieve the frame pointer from SEH funclets.

@ssijaric This is failing on EXPENSIVE_CHECKS buildbots, can you take a look or should I revert?

http://lab.llvm.org:8011/builders/llvm-clang-x86_64-expensive-checks-win/builds/15196/steps/test-check-all/logs/stdio

Jan 17 2019, 10:41 AM
ssijaric committed rL351421: [ARM64][Windows] Share unwind codes between epilogues.
[ARM64][Windows] Share unwind codes between epilogues
Jan 17 2019, 1:50 AM
ssijaric closed D56813: [AArch64] [Windows] Share unwind codes between epilogues with identical unwind codes.
Jan 17 2019, 1:50 AM

Jan 16 2019

ssijaric added a comment to D56813: [AArch64] [Windows] Share unwind codes between epilogues with identical unwind codes.

I've confirmed that I can build Firefox successfully with this patch on top of latest trunk. Thank you @ssijaric!

Jan 16 2019, 4:55 PM
ssijaric updated the diff for D56813: [AArch64] [Windows] Share unwind codes between epilogues with identical unwind codes.

Address Eli's comments.

Jan 16 2019, 4:35 PM
ssijaric closed D56528: [SEH] [ARM64] Retrieve the frame pointer from SEH funclets.

Committed under https://reviews.llvm.org/rL351404. Forgot to add a Different Revision line.

Jan 16 2019, 4:34 PM
ssijaric committed rL351404: [SEH] [ARM64] Retrieve the frame pointer from SEH funclets.
[SEH] [ARM64] Retrieve the frame pointer from SEH funclets
Jan 16 2019, 4:28 PM
ssijaric created D56813: [AArch64] [Windows] Share unwind codes between epilogues with identical unwind codes.
Jan 16 2019, 3:00 PM

Jan 15 2019

ssijaric committed rL351302: [SEH] Pass the frame pointer from SEH finally to finally functions.
[SEH] Pass the frame pointer from SEH finally to finally functions
Jan 15 2019, 11:46 PM
ssijaric committed rC351302: [SEH] Pass the frame pointer from SEH finally to finally functions.
[SEH] Pass the frame pointer from SEH finally to finally functions
Jan 15 2019, 11:46 PM
ssijaric closed D56463: [SEH] Pass the frame pointer from SEH finally to finally functions.
Jan 15 2019, 11:46 PM

Jan 11 2019

ssijaric updated the diff for D56463: [SEH] Pass the frame pointer from SEH finally to finally functions.

Address formatting comments.

Jan 11 2019, 11:34 AM

Jan 10 2019

ssijaric updated the diff for D56528: [SEH] [ARM64] Retrieve the frame pointer from SEH funclets.

Clarify the comment. By looking at cl.exe generated code, it looks like only the frame pointer is passed in x1. The base pointer, if needed, is used directly (e.g. x19). I will verify with a more complicated test case.

Jan 10 2019, 5:08 PM
ssijaric updated the diff for D56528: [SEH] [ARM64] Retrieve the frame pointer from SEH funclets.

Cleanup per Eli's comments. Checking for the personality function is probably not necessary. I could add an assert instead of the check?

Jan 10 2019, 11:24 AM

Jan 9 2019

ssijaric created D56528: [SEH] [ARM64] Retrieve the frame pointer from SEH funclets.
Jan 9 2019, 6:29 PM

Jan 8 2019

ssijaric created D56463: [SEH] Pass the frame pointer from SEH finally to finally functions.
Jan 8 2019, 4:29 PM

Dec 3 2018

ssijaric committed rL348222: [ARM64][Windows] Fix local stack size for funclets.
[ARM64][Windows] Fix local stack size for funclets
Dec 3 2018, 4:58 PM
ssijaric closed D55096: [ARM64] [Windows] Fix the local stack size for funclets.
Dec 3 2018, 4:57 PM

Nov 29 2018

ssijaric created D55096: [ARM64] [Windows] Fix the local stack size for funclets.
Nov 29 2018, 5:17 PM

Nov 6 2018

ssijaric added a comment to D51524: [ARM64] [Windows] Handle funclets.

Oh, I guess there is one special case for the prologue I didn't mention: varargs functions. I think the patch handles that correctly already, but I'll add a test.

For both dynamic allocas and stack realignment, the initial implementation of unwinding missed a significant rule: "r29 must point to the bottom of stack". That's probably straightforward to resolve, but I don't really want to do it in this patch (and I'm not sure what the practical effect is). Beyond that, there's probably more handling necessary to correctly handle a dynamic alloca inside a funclet (since we need to reset the frame pointer, but we still need access to the old frame pointer). And I don't really want to block this patch on solving that; it's obscure enough that it won't affect most code.

I have a couple small fixes for stack realignment, a fix for a MachineVerifier failure, and a testcase for realignment; I'll upload a new version.

Nov 6 2018, 3:44 AM
ssijaric added inline comments to D51524: [ARM64] [Windows] Handle funclets.
Nov 6 2018, 3:23 AM

Nov 1 2018

ssijaric updated the diff for D51524: [ARM64] [Windows] Handle funclets.

Fix the check for IsFunclet in emitEpilogue.

Nov 1 2018, 10:06 PM
ssijaric accepted D54015: [AArch64] [Windows] Misc fixes for llvm-readobj -unwind..

LGTM

Nov 1 2018, 5:49 PM
ssijaric updated the diff for D51524: [ARM64] [Windows] Handle funclets.

Remove an unused variable. Fix a nasty bug that Eli just pointed out, where I didn't insert a PrologEnd in funclets in this patch. Previously, I relied on an RAII object to this for me when we would go out of scope. I removed that logic, but forgot to insert a prolog end marker for the funclet case.

Nov 1 2018, 1:56 PM
ssijaric added inline comments to D51524: [ARM64] [Windows] Handle funclets.
Nov 1 2018, 12:45 PM
ssijaric updated the diff for D51524: [ARM64] [Windows] Handle funclets.

Address comments: spelling mistakes, better comments, a better test case.

Nov 1 2018, 12:01 AM

Oct 31 2018

ssijaric committed rL345701: [ARM64] [Windows] Exception handling support in frame lowering.
[ARM64] [Windows] Exception handling support in frame lowering
Oct 31 2018, 2:31 AM
ssijaric closed D50288: [ARM64] [Windows] Exception handling support in frame lowering.
Oct 31 2018, 2:31 AM

Oct 30 2018

ssijaric added inline comments to D51524: [ARM64] [Windows] Handle funclets.
Oct 30 2018, 5:30 PM
ssijaric added inline comments to D51524: [ARM64] [Windows] Handle funclets.
Oct 30 2018, 3:07 PM

Oct 29 2018

ssijaric updated the diff for D50288: [ARM64] [Windows] Exception handling support in frame lowering.

Address Eli's feedback.

Oct 29 2018, 11:44 PM
ssijaric updated the diff for D50288: [ARM64] [Windows] Exception handling support in frame lowering.

Add test cases. Use getSEHReg to retrieve SEH register numbers. Clean up the logic in a few places.

Oct 29 2018, 3:06 PM

Oct 26 2018

ssijaric committed rL345450: [ARM64][Windows] MCLayer support for exception handling.
[ARM64][Windows] MCLayer support for exception handling
Oct 26 2018, 11:15 PM
ssijaric closed D50166: [ARM64] [Windows] MCLayer support for exception handling.
Oct 26 2018, 11:15 PM
ssijaric updated the diff for D50166: [ARM64] [Windows] MCLayer support for exception handling.

Remove spaces in wineh2.mit test case. Fix the extended code words logic that Eli pointed out. Add a test case to make sure that shrink wrapping doesn't kick in.

Oct 26 2018, 4:12 PM
ssijaric added a comment to D50166: [ARM64] [Windows] MCLayer support for exception handling.
In D50166#1277766, @rnk wrote:

So, I will skip a test case for shrink wrapping. Will add a few more tests to cover remaining the unwind codes.

Can you copy a test where shrink wrapping would fire, and validate that it does not for aarch64-windows-gnu? Without the test, someone could remove the logic you found and no tests would fail. We have a test like this for x86_64.

Oct 26 2018, 4:07 PM
ssijaric updated the diff for D50166: [ARM64] [Windows] MCLayer support for exception handling.

Add test cases for the remaining SEH opcodes. Disable post RA scheduling for the test cases.

Oct 26 2018, 2:08 AM

Oct 25 2018

ssijaric added a comment to D50166: [ARM64] [Windows] MCLayer support for exception handling.
In D50166#1274871, @rnk wrote:

Missing test coverage for SEH_SaveFPLR_X, SEH_SaveReg, SEH_SaveFReg, SEH_SetFP, SEH_AddFP, SEH_Nop, and the alloc_s variant of SEH_StackAlloc. (I'd like to see at least one use of each opcode to show the encoding is correct/consistent with llvm-readobj.)

I'd also like to see a test for shrink-wrapping. You may have to disable it if you cannot yet describe such prologues it with SEH_ opcodes.

Hi Reid,

I think shrink wrapping is disabled by default for AArch64. I have a small test case that gets shrink-wrapped, but only if I enable it manually using -enable-shrink-wrap. Do we need a test case if it's disabled by default?

Oct 25 2018, 9:24 PM
ssijaric added a comment to D50166: [ARM64] [Windows] MCLayer support for exception handling.
In D50166#1274871, @rnk wrote:

Missing test coverage for SEH_SaveFPLR_X, SEH_SaveReg, SEH_SaveFReg, SEH_SetFP, SEH_AddFP, SEH_Nop, and the alloc_s variant of SEH_StackAlloc. (I'd like to see at least one use of each opcode to show the encoding is correct/consistent with llvm-readobj.)

I'd also like to see a test for shrink-wrapping. You may have to disable it if you cannot yet describe such prologues it with SEH_ opcodes.

Oct 25 2018, 6:28 PM
ssijaric added a comment to D53540: [COFF, ARM64] Implement support for SEH extensions __try/__except/__finally.

We need to have a test case that checks for access to local variables from the finally and except funclets. The parent's frame pointer is the second argument to both the filter functions and termination handlers, fro what I see. We need to make sure that locals variables in funclets are being accessed off x1, and not the stack pointer.

Oct 25 2018, 12:21 PM

Oct 24 2018

ssijaric committed rL345196: [MIR] Add hasWinCFI field.
[MIR] Add hasWinCFI field
Oct 24 2018, 2:09 PM
ssijaric closed D51201: [MIR] Add hasWinCFI field.
Oct 24 2018, 2:09 PM

Oct 23 2018

ssijaric committed rL345108: [ARM64][Windows] Add unwind support to llvm-readobj.
[ARM64][Windows] Add unwind support to llvm-readobj
Oct 23 2018, 5:05 PM
ssijaric closed D53264: [ARM64] [Windows] Add unwind support to llvm-readobj.
Oct 23 2018, 5:05 PM
ssijaric updated the diff for D50166: [ARM64] [Windows] MCLayer support for exception handling.

Fix the test case, wineh5.mir, to conform to what cl.exe produces.

Oct 23 2018, 4:48 PM
ssijaric added inline comments to D50166: [ARM64] [Windows] MCLayer support for exception handling.
Oct 23 2018, 12:57 PM
ssijaric updated the diff for D50166: [ARM64] [Windows] MCLayer support for exception handling.

Re-uploaed with full context and remove an unused declaration of getLabelPlusOne.

Oct 23 2018, 11:07 AM

Oct 22 2018

ssijaric updated the diff for D50166: [ARM64] [Windows] MCLayer support for exception handling.

Add test cases. These depend on D53264 and D51201.

Oct 22 2018, 6:02 PM
ssijaric updated the diff for D53264: [ARM64] [Windows] Add unwind support to llvm-readobj.

Fix the printing of save_freg and save_freg_x that Eli just pointed out.

Oct 22 2018, 5:34 PM
ssijaric updated the diff for D53264: [ARM64] [Windows] Add unwind support to llvm-readobj.

Address Eli's latest comments.

Oct 22 2018, 5:15 PM

Oct 21 2018

ssijaric updated the diff for D53264: [ARM64] [Windows] Add unwind support to llvm-readobj.

Fix a few operator precedence bugs uncovered while writing test cases for the MCLayer patch (D50166).

Oct 21 2018, 1:24 PM

Oct 19 2018

ssijaric updated the diff for D53264: [ARM64] [Windows] Add unwind support to llvm-readobj.

Also fix a few unwind code hex dumps. Wasn't printing all the bytes.

Oct 19 2018, 3:40 PM
ssijaric updated the diff for D51201: [MIR] Add hasWinCFI field.

Add hasWinCFI to MIRPrinter as well, now that HasWinCFI is a plain bool.

Oct 19 2018, 3:08 PM
ssijaric updated the diff for D53264: [ARM64] [Windows] Add unwind support to llvm-readobj.

Better error handling. Fix alloc_m decoding.

Oct 19 2018, 2:30 PM
ssijaric added inline comments to D53264: [ARM64] [Windows] Add unwind support to llvm-readobj.
Oct 19 2018, 12:43 PM

Oct 18 2018

ssijaric updated the diff for D53264: [ARM64] [Windows] Add unwind support to llvm-readobj.

Address Eli's latest feedback, and an add an additional test case.

Oct 18 2018, 2:19 PM

Oct 17 2018

ssijaric updated the diff for D53264: [ARM64] [Windows] Add unwind support to llvm-readobj.

Fix bugs and add two assembly test cases constructed by hand to test the error handling.

Oct 17 2018, 6:22 PM

Oct 16 2018

ssijaric added inline comments to D53264: [ARM64] [Windows] Add unwind support to llvm-readobj.
Oct 16 2018, 4:53 PM
ssijaric added inline comments to D53264: [ARM64] [Windows] Add unwind support to llvm-readobj.
Oct 16 2018, 4:38 PM
ssijaric updated the diff for D53264: [ARM64] [Windows] Add unwind support to llvm-readobj.

Addressed Eli's comments.

Oct 16 2018, 3:37 PM

Oct 15 2018

ssijaric added inline comments to D53264: [ARM64] [Windows] Add unwind support to llvm-readobj.
Oct 15 2018, 4:52 PM

Oct 14 2018

ssijaric created D53264: [ARM64] [Windows] Add unwind support to llvm-readobj.
Oct 14 2018, 8:02 PM

Sep 12 2018

ssijaric updated the diff for D50166: [ARM64] [Windows] MCLayer support for exception handling.

Thanks for reviewing, Reid. This update uses llvm_unreachable instead of asserts, and moves createAArch64TargetObjectStreamer to AArch64TargetStreamer.h/.cpp. To do this, I also moved AArch64TargetELFStreamer to the llvm namespace.

Sep 12 2018, 5:32 PM

Sep 7 2018

ssijaric added a reviewer for D50166: [ARM64] [Windows] MCLayer support for exception handling: thegameg.
Sep 7 2018, 10:43 AM
ssijaric updated the diff for D50288: [ARM64] [Windows] Exception handling support in frame lowering.

Addressed Francis' review feedback, and ran clang-format through some parts of the changes in AArch64FrameLowering.cpp. Changed the title to better reflect the intent of the patch.

Sep 7 2018, 10:31 AM

Sep 4 2018

ssijaric added a comment to D50288: [ARM64] [Windows] Exception handling support in frame lowering.

Thanks for reviewing, Francis. I'll upload an updated patch.

Sep 4 2018, 4:56 PM

Aug 31 2018

ssijaric committed rL341270: Make HasWinCFI a plain bool instead of Optional<bool>.
Make HasWinCFI a plain bool instead of Optional<bool>
Aug 31 2018, 5:34 PM
ssijaric closed D51560: Make HasWinCFI a plain bool instead of Optional<bool>.
Aug 31 2018, 5:34 PM
ssijaric created D51560: Make HasWinCFI a plain bool instead of Optional<bool>.
Aug 31 2018, 3:04 PM
ssijaric updated the diff for D51524: [ARM64] [Windows] Handle funclets.

A few formatting fixes.

Aug 31 2018, 10:27 AM

Aug 30 2018

ssijaric added inline comments to D51524: [ARM64] [Windows] Handle funclets.
Aug 30 2018, 10:14 PM
ssijaric created D51524: [ARM64] [Windows] Handle funclets.
Aug 30 2018, 6:10 PM

Aug 29 2018

ssijaric updated the diff for D50288: [ARM64] [Windows] Exception handling support in frame lowering.

Addressed the comments and reduced the patch to handle only the frame lowering portion. Changes for funclets and EH tables will go in separate patches.

Aug 29 2018, 11:33 PM

Aug 24 2018

ssijaric added inline comments to D50288: [ARM64] [Windows] Exception handling support in frame lowering.
Aug 24 2018, 6:19 PM

Aug 23 2018

ssijaric added a comment to D50166: [ARM64] [Windows] MCLayer support for exception handling.

I also moved the AArch64 specific changes to the Windows exception handling tables to this patch, as they are needed to get the test case to pass (they are required in order to populate .xdata correctly). The test case also has a dependence on https://reviews.llvm.org/D51201, which adds HasWinCFI to the MIRParser.

Aug 23 2018, 6:30 PM
ssijaric updated the diff for D50166: [ARM64] [Windows] MCLayer support for exception handling.

Add a test case and fix a couple of encodings.

Aug 23 2018, 5:53 PM
ssijaric created D51201: [MIR] Add hasWinCFI field.
Aug 23 2018, 5:38 PM

Aug 13 2018

ssijaric updated the diff for D50166: [ARM64] [Windows] MCLayer support for exception handling.

Move SEH opcode handling to AArch64 target streamers.

Aug 13 2018, 5:03 PM

Aug 6 2018

ssijaric added a comment to D50166: [ARM64] [Windows] MCLayer support for exception handling.

Hi Reid,

Aug 6 2018, 1:12 PM

Aug 3 2018

ssijaric updated the summary of D50288: [ARM64] [Windows] Exception handling support in frame lowering.
Aug 3 2018, 8:40 PM
ssijaric updated the diff for D50288: [ARM64] [Windows] Exception handling support in frame lowering.

Remove a couple of unused functions from the initial patch. Fix formatting.

Aug 3 2018, 7:44 PM
ssijaric created D50288: [ARM64] [Windows] Exception handling support in frame lowering.
Aug 3 2018, 5:17 PM

Aug 2 2018

ssijaric updated the diff for D50166: [ARM64] [Windows] MCLayer support for exception handling.

Use errs instead of assert MCAsmPrinter for unwind opcodes that are not yet supported. Address Eli's non-determinism comment. Use range-based for loops. Still need to add a test case.

Aug 2 2018, 5:39 PM
ssijaric added inline comments to D50166: [ARM64] [Windows] MCLayer support for exception handling.
Aug 2 2018, 3:03 PM

Aug 1 2018

ssijaric created D50166: [ARM64] [Windows] MCLayer support for exception handling.
Aug 1 2018, 5:33 PM

Jul 26 2018

ssijaric committed rL338076: [ARM64] [Windows] Follow MS X86_64 C++ ABI when passing structs.
[ARM64] [Windows] Follow MS X86_64 C++ ABI when passing structs
Jul 26 2018, 3:18 PM
ssijaric committed rC338076: [ARM64] [Windows] Follow MS X86_64 C++ ABI when passing structs.
[ARM64] [Windows] Follow MS X86_64 C++ ABI when passing structs
Jul 26 2018, 3:18 PM
ssijaric closed D49770: [ARM64] [Windows] Follow MS X86_64 C++ ABI when passing structs.
Jul 26 2018, 3:18 PM
ssijaric updated the diff for D49770: [ARM64] [Windows] Follow MS X86_64 C++ ABI when passing structs.

Last change before committing to address Reid's point of using CCK_MicrosoftWin64 for Windows on both X86_64 and ARM64.

Jul 26 2018, 1:29 PM

Jul 25 2018

ssijaric updated the diff for D49770: [ARM64] [Windows] Follow MS X86_64 C++ ABI when passing structs.

Updated to address Martin's observation. Verified that small structs with default copy constructors and non-trivial destructors are passed in registers on ARM64 Windows.

Jul 25 2018, 4:57 PM
ssijaric added a comment to D49770: [ARM64] [Windows] Follow MS X86_64 C++ ABI when passing structs.

Yes, it looks like the comment for the thumb case is applicable here as well. VC++ on ARM64 passes small structs with a destructor and a default copy constructor in a register, while clang passes them on the stack. I will probably address this in a separate patch.

Jul 25 2018, 2:20 PM

Jul 24 2018

ssijaric created D49770: [ARM64] [Windows] Follow MS X86_64 C++ ABI when passing structs.
Jul 24 2018, 4:38 PM

Jul 22 2018

ssijaric accepted D49644: [COFF] Hoist constant pool handling from X86AsmPrinter into AsmPrinter.

LGTM

Jul 22 2018, 3:22 PM
ssijaric abandoned D49640: [ARM64][Windows] Create COMDAT symbols for sections containing constants.

Abandoning, as this will be fixed in D49644.

Jul 22 2018, 3:13 PM

Jul 21 2018

ssijaric created D49640: [ARM64][Windows] Create COMDAT symbols for sections containing constants.
Jul 21 2018, 7:09 PM