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

[TableGen] Use MapVector to remove non-determinism #79411

Conversation

wangpc-pp
Copy link
Contributor

@wangpc-pp wangpc-pp commented Jan 25, 2024

This fixes found non-determinism when LLVM_REVERSE_ITERATION
option is ON.

Fixes #79420.

Created using spr 1.3.4
@llvmbot llvmbot added the llvm:SelectionDAG SelectionDAGISel as well label Jan 25, 2024
@llvmbot
Copy link
Collaborator

llvmbot commented Jan 25, 2024

@llvm/pr-subscribers-llvm-selectiondag

Author: Wang Pengcheng (wangpc-pp)

Changes

This fixes found non-determinism when LLVM_REVERSE_ITERATION
option is ON.


Full diff: https://github.com/llvm/llvm-project/pull/79411.diff

2 Files Affected:

  • (modified) llvm/test/TableGen/address-space-patfrags.td (+2-2)
  • (modified) llvm/utils/TableGen/DAGISelMatcherEmitter.cpp (+2-1)
diff --git a/llvm/test/TableGen/address-space-patfrags.td b/llvm/test/TableGen/address-space-patfrags.td
index 4aec6ea7e0eae86..46050a70720fbe1 100644
--- a/llvm/test/TableGen/address-space-patfrags.td
+++ b/llvm/test/TableGen/address-space-patfrags.td
@@ -46,7 +46,7 @@ def inst_d : Instruction {
   let InOperandList = (ins GPR32:$src0, GPR32:$src1);
 }
 
-// SDAG: case 1: {
+// SDAG: case 0: {
 // SDAG-NEXT: // Predicate_pat_frag_b
 // SDAG-NEXT: // Predicate_truncstorei16_addrspace
 // SDAG-NEXT: SDNode *N = Node;
@@ -69,7 +69,7 @@ def : Pat <
 >;
 
 
-// SDAG: case 6: {
+// SDAG: case 4: {
 // SDAG: // Predicate_pat_frag_a
 // SDAG-NEXT: SDNode *N = Node;
 // SDAG-NEXT: (void)N;
diff --git a/llvm/utils/TableGen/DAGISelMatcherEmitter.cpp b/llvm/utils/TableGen/DAGISelMatcherEmitter.cpp
index 455183987b7b27b..50156d34528c153 100644
--- a/llvm/utils/TableGen/DAGISelMatcherEmitter.cpp
+++ b/llvm/utils/TableGen/DAGISelMatcherEmitter.cpp
@@ -57,7 +57,8 @@ class MatcherTableEmitter {
 
   // We de-duplicate the predicates by code string, and use this map to track
   // all the patterns with "identical" predicates.
-  StringMap<TinyPtrVector<TreePattern *>> NodePredicatesByCodeToRun;
+  MapVector<std::string, TinyPtrVector<TreePattern *>, StringMap<unsigned>>
+      NodePredicatesByCodeToRun;
 
   std::vector<std::string> PatternPredicates;
 

@wangpc-pp wangpc-pp merged commit 41fe98a into main Jan 25, 2024
4 of 5 checks passed
@wangpc-pp wangpc-pp deleted the users/wangpc-pp/spr/tablegen-use-mapvector-to-remove-non-determinism branch January 25, 2024 08:16
llvmbot pushed a commit to llvmbot/llvm-project that referenced this pull request Jan 25, 2024
This fixes found non-determinism when `LLVM_REVERSE_ITERATION`
option is `ON`.

Fixes llvm#79420.

Reviewers: ilovepi, MaskRay

Reviewed By: MaskRay

Pull Request: llvm#79411

(cherry picked from commit 41fe98a)
tstellar pushed a commit that referenced this pull request Jan 27, 2024
This fixes found non-determinism when `LLVM_REVERSE_ITERATION`
option is `ON`.

Fixes #79420.

Reviewers: ilovepi, MaskRay

Reviewed By: MaskRay

Pull Request: #79411

(cherry picked from commit 41fe98a)
tstellar pushed a commit to tstellar/llvm-project that referenced this pull request Feb 14, 2024
This fixes found non-determinism when `LLVM_REVERSE_ITERATION`
option is `ON`.

Fixes llvm#79420.

Reviewers: ilovepi, MaskRay

Reviewed By: MaskRay

Pull Request: llvm#79411

(cherry picked from commit 41fe98a)
tstellar pushed a commit to tstellar/llvm-project that referenced this pull request Feb 14, 2024
This fixes found non-determinism when `LLVM_REVERSE_ITERATION`
option is `ON`.

Fixes llvm#79420.

Reviewers: ilovepi, MaskRay

Reviewed By: MaskRay

Pull Request: llvm#79411

(cherry picked from commit 41fe98a)
tstellar pushed a commit to tstellar/llvm-project that referenced this pull request Feb 14, 2024
This fixes found non-determinism when `LLVM_REVERSE_ITERATION`
option is `ON`.

Fixes llvm#79420.

Reviewers: ilovepi, MaskRay

Reviewed By: MaskRay

Pull Request: llvm#79411

(cherry picked from commit 41fe98a)
tstellar pushed a commit to tstellar/llvm-project that referenced this pull request Feb 14, 2024
This fixes found non-determinism when `LLVM_REVERSE_ITERATION`
option is `ON`.

Fixes llvm#79420.

Reviewers: ilovepi, MaskRay

Reviewed By: MaskRay

Pull Request: llvm#79411

(cherry picked from commit 41fe98a)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
llvm:SelectionDAG SelectionDAGISel as well
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[TableGen] TableGen/address-space-patfrags.td failed when LLVM_REVERSE_ITERATION=On
3 participants