Skip to content

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
@wangpc-pp wangpc-pp requested a review from ilovepi January 25, 2024 07:14
@llvmbot
Copy link
Member

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 requested a review from MaskRay January 25, 2024 07:15
@wangpc-pp wangpc-pp merged commit 41fe98a into main Jan 25, 2024
@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