- User Since
- Feb 6 2014, 12:57 PM (296 w, 5 d)
Apr 17 2019
Jan 18 2019
Jan 17 2019
Jan 16 2019
Address Eli's comments.
Committed under https://reviews.llvm.org/rL351404. Forgot to add a Different Revision line.
Jan 15 2019
Jan 11 2019
Address formatting comments.
Jan 10 2019
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.
Cleanup per Eli's comments. Checking for the personality function is probably not necessary. I could add an assert instead of the check?
Jan 9 2019
Jan 8 2019
Dec 3 2018
Nov 29 2018
Nov 6 2018
Nov 1 2018
Fix the check for IsFunclet in emitEpilogue.
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.
Address comments: spelling mistakes, better comments, a better test case.
Oct 31 2018
Oct 30 2018
Oct 29 2018
Address Eli's feedback.
Add test cases. Use getSEHReg to retrieve SEH register numbers. Clean up the logic in a few places.
Oct 26 2018
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.
Add test cases for the remaining SEH opcodes. Disable post RA scheduling for the test cases.
Oct 25 2018
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 24 2018
Oct 23 2018
Fix the test case, wineh5.mir, to conform to what cl.exe produces.
Re-uploaed with full context and remove an unused declaration of getLabelPlusOne.
Oct 22 2018
Fix the printing of save_freg and save_freg_x that Eli just pointed out.
Address Eli's latest comments.
Oct 21 2018
Fix a few operator precedence bugs uncovered while writing test cases for the MCLayer patch (D50166).
Oct 19 2018
Also fix a few unwind code hex dumps. Wasn't printing all the bytes.
Add hasWinCFI to MIRPrinter as well, now that HasWinCFI is a plain bool.
Better error handling. Fix alloc_m decoding.
Oct 18 2018
Address Eli's latest feedback, and an add an additional test case.
Oct 17 2018
Fix bugs and add two assembly test cases constructed by hand to test the error handling.
Oct 16 2018
Addressed Eli's comments.
Oct 15 2018
Oct 14 2018
Sep 12 2018
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 7 2018
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 4 2018
Thanks for reviewing, Francis. I'll upload an updated patch.
Aug 31 2018
A few formatting fixes.
Aug 30 2018
Aug 29 2018
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 24 2018
Aug 23 2018
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.
Add a test case and fix a couple of encodings.
Aug 13 2018
Move SEH opcode handling to AArch64 target streamers.
Aug 6 2018
Aug 3 2018
Remove a couple of unused functions from the initial patch. Fix formatting.
Aug 2 2018
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 1 2018
Jul 26 2018
Last change before committing to address Reid's point of using CCK_MicrosoftWin64 for Windows on both X86_64 and ARM64.
Jul 25 2018
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.
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 24 2018
Jul 22 2018
Abandoning, as this will be fixed in D49644.