Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

llvm: cleanup options parsing #42413

Merged
merged 1 commit into from
Sep 29, 2021
Merged

llvm: cleanup options parsing #42413

merged 1 commit into from
Sep 29, 2021

Conversation

vtjnash
Copy link
Member

@vtjnash vtjnash commented Sep 28, 2021

These just don't need to be so verbose and hard-coded.

Comment on lines -8219 to -8220
const char *const argv_avoidsfb[] = {"", "-x86-disable-avoid-SFB"}; // llvm bug 41629, see https://gist.github.com/vtjnash/192cab72a6cfc00256ff118238163b55
cl::ParseCommandLineOptions(sizeof(argv_avoidsfb)/sizeof(argv_avoidsfb[0]), argv_avoidsfb, "disable-avoidsfb\n");
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

https://bugs.llvm.org/show_bug.cgi?id=41629 fixed by

$ git show 8172ed91f8ff753fb
commit 8172ed91f8ff753fb3042f39b0d43aed89fdd3e6
Author: Craig Topper <craig.topper@intel.com>
Date:   Wed Jun 24 00:10:36 2020 -0700

    [X86] Speculatively fix to X86AvoidStoreForwardingBlocks not deference a machine mem operand if there isn't one present.
    
    Eric Christopher informed me that FastISel memcpy handling creates
    load/store instructions without mem operands. We should fix that,
    but I doubt that's the only case of missed mem operands so seems
    better to be defensive here.
    
    I don't have a test case yet, but I'll try to add one if i get a
    test from Eric.

Comment on lines -8215 to -8216
const char *const argv_copyprop[] = {"", "-disable-copyprop"}; // llvm bug 21743
cl::ParseCommandLineOptions(sizeof(argv_copyprop)/sizeof(argv_copyprop[0]), argv_copyprop, "disable-copyprop\n");
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

https://bugs.llvm.org/show_bug.cgi?id=21743 fixed by

commit 796d906e06f8f5a3c8d4f5f0faa5c47697153490
Author: Quentin Colombet <qcolombet@apple.com>
Date:   Thu Apr 23 21:17:39 2015 +0000

    [MachineCopyPropagation] Handle undef flags conservatively so that we do not
    remove copies that are useful after breaking some hardware dependencies.
    In other words, handle this kind of situations conservatively by assuming reg2
    is redefined by the undef flag.
    reg1 = copy reg2
    = inst reg2<undef>
    reg2 = copy reg1
    Copy propagation used to remove the last copy.
    This is incorrect because the undef flag on reg2 in inst, allows next
    passes to put whatever trashed value in reg2 that may help.
    In practice we end up with this code:
    reg1 = copy reg2
    reg2 = 0
    = inst reg2<undef>
    reg2 = copy reg1
    
    This fixes PR21743.
    
    llvm-svn: 235647

@vtjnash vtjnash added the merge me PR is reviewed. Merge when all tests are passing label Sep 28, 2021
@vtjnash vtjnash merged commit e12d017 into master Sep 29, 2021
@vtjnash vtjnash deleted the jn/llvm-opts branch September 29, 2021 15:22
@DilumAluthge DilumAluthge removed the merge me PR is reviewed. Merge when all tests are passing label Oct 2, 2021
LilithHafner pushed a commit to LilithHafner/julia that referenced this pull request Feb 22, 2022
LilithHafner pushed a commit to LilithHafner/julia that referenced this pull request Mar 8, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants