Skip to content

Commit 4e19977

Browse files
authored
Use unsigned int for module NodeIDs. (#234)
NodeIDs for the module need to be created as unsigned integers. The getNodeId method assumes the IDs are unsigned and accesses the attributes as such. LLVM 17 has increased their type checking for this, so several tests are now failing with debug builds. This should resolve these problems.
1 parent 03ca9ec commit 4e19977

File tree

3 files changed

+8
-8
lines changed

3 files changed

+8
-8
lines changed

targets/systems/mock/Transforms/QubitLocalization.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -751,7 +751,7 @@ void mock::MockQubitLocalizationPass::runOnOperation(MockSystem &target) {
751751
controllerBuilder = new OpBuilder(controllerMainOp.getBody());
752752
controllerModule->setAttr(
753753
llvm::StringRef("quir.nodeId"),
754-
controllerBuilder->getI32IntegerAttr(config->controllerNode()));
754+
controllerBuilder->getUI32IntegerAttr(config->controllerNode()));
755755
controllerModule->setAttr(
756756
llvm::StringRef("quir.nodeType"),
757757
controllerBuilder->getStringAttr(llvm::StringRef("controller")));
@@ -772,7 +772,7 @@ void mock::MockQubitLocalizationPass::runOnOperation(MockSystem &target) {
772772
controllerBuilder->getStringAttr(llvm::StringRef("drive")));
773773
driveMod.getOperation()->setAttr(
774774
llvm::StringRef("quir.nodeId"),
775-
controllerBuilder->getI32IntegerAttr(nodeId));
775+
controllerBuilder->getUI32IntegerAttr(nodeId));
776776
driveMod.getOperation()->setAttr(
777777
llvm::StringRef("quir.physicalId"),
778778
controllerBuilder->getI32IntegerAttr(qubitIdx));
@@ -794,7 +794,7 @@ void mock::MockQubitLocalizationPass::runOnOperation(MockSystem &target) {
794794
controllerBuilder->getStringAttr(llvm::StringRef("acquire")));
795795
acquireMod.getOperation()->setAttr(
796796
llvm::StringRef("quir.nodeId"),
797-
controllerBuilder->getI32IntegerAttr(nodeId));
797+
controllerBuilder->getUI32IntegerAttr(nodeId));
798798
acquireMod.getOperation()->setAttr(
799799
llvm::StringRef("quir.physicalIds"),
800800
controllerBuilder->getI32ArrayAttr(

targets/systems/mock/test/static/Conversion/QUIRToStd/llvmgen.mlir

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
// CHECK: define i32 @main() {
1616
// CHECK: ret i32 0
1717
// CHECK: }
18-
module @controller attributes {quir.nodeId = 1000 : i32, quir.nodeType = "controller"} {
18+
module @controller attributes {quir.nodeId = 1000 : ui32, quir.nodeType = "controller"} {
1919
func.func @main() -> i32 attributes {quir.classicalOnly = false} {
2020
%0 = quir.constant #quir.duration<1000.0> : !quir.duration<dt>
2121
%1 = qcs.recv {fromId = 0 : index} : i1

targets/systems/mock/test/static/Transforms/qubit-localization.mlir

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ func.func @main () -> i32 {
6060
return %zero : i32
6161
}
6262

63-
// CHECK: module @controller attributes {quir.nodeId = 1000 : i32, quir.nodeType = "controller"} {
63+
// CHECK: module @controller attributes {quir.nodeId = 1000 : ui32, quir.nodeType = "controller"} {
6464
// CHECK: func.func @subroutine2_q1_q0() attributes {quir.classicalOnly = false} {
6565
// CHECK: quir.call_subroutine @"subroutine1_q1_!quir.angle<20>_index"(%angle, %c5) : (!quir.angle<20>, index) -> ()
6666
// CHECK: func.func @subroutine2_q0_q1() attributes {quir.classicalOnly = false} {
@@ -74,7 +74,7 @@ func.func @main () -> i32 {
7474
// CHECK: quir.call_subroutine @"subroutine1_q0_!quir.angle<20>_index"(%angle, %c10) : (!quir.angle<20>, index) -> ()
7575
// CHECK: quir.call_subroutine @subroutine2_q0_q1() : () -> ()
7676
// CHECK: quir.call_subroutine @subroutine2_q1_q0() : () -> ()
77-
// CHECK: module @mock_drive_0 attributes {quir.nodeId = 1 : i32, quir.nodeType = "drive", quir.physicalId = 0 : i32} {
77+
// CHECK: module @mock_drive_0 attributes {quir.nodeId = 1 : ui32, quir.nodeType = "drive", quir.physicalId = 0 : i32} {
7878
// CHECK: quir.call_subroutine @"subroutine1_q1_!quir.angle<20>_index"(%angle, %c5) : (!quir.angle<20>, index) -> ()
7979
// CHECK: quir.call_gate @defcalPhase_qq(%angle, %0) : (!quir.angle<20>, !quir.qubit<1>) -> ()
8080
// CHECK: quir.call_subroutine @"subroutine1_q0_!quir.angle<20>_index"(%angle, %c5) : (!quir.angle<20>, index) -> ()
@@ -98,7 +98,7 @@ func.func @main () -> i32 {
9898
// CHECK: quir.call_subroutine @subroutine2_q1_q0() : () -> ()
9999
// CHECK: %2 = quir.call_defcal_measure @defcalMeasure_q0(%0) : (!quir.qubit<1>) -> i1
100100
// CHECK: %3 = quir.call_defcal_measure @defcalMeasure_q1(%0) : (!quir.qubit<1>) -> i1
101-
// CHECK: module @mock_drive_1 attributes {quir.nodeId = 2 : i32, quir.nodeType = "drive", quir.physicalId = 1 : i32} {
101+
// CHECK: module @mock_drive_1 attributes {quir.nodeId = 2 : ui32, quir.nodeType = "drive", quir.physicalId = 1 : i32} {
102102
// CHECK: func @subroutine2_q1_q0() attributes {quir.classicalOnly = false} {
103103
// CHECK: quir.call_gate @defcalPhase_qq(%angle, %0) : (!quir.angle<20>, !quir.qubit<1>) -> ()
104104
// CHECK: quir.call_subroutine @"subroutine1_q1_!quir.angle<20>_index"(%angle, %c5) : (!quir.angle<20>, index) -> ()
@@ -123,7 +123,7 @@ func.func @main () -> i32 {
123123
// CHECK: quir.call_subroutine @"subroutine1_q0_!quir.angle<20>_index"(%angle, %c10) : (!quir.angle<20>, index) -> ()
124124
// CHECK: quir.call_subroutine @subroutine2_q0_q1() : () -> ()
125125
// CHECK: quir.call_subroutine @subroutine2_q1_q0() : () -> ()
126-
// CHECK: module @mock_acquire_0 attributes {quir.nodeId = 0 : i32, quir.nodeType = "acquire", quir.physicalIds = [0 : i32, 1 : i32]} {
126+
// CHECK: module @mock_acquire_0 attributes {quir.nodeId = 0 : ui32, quir.nodeType = "acquire", quir.physicalIds = [0 : i32, 1 : i32]} {
127127
// CHECK: func @subroutine2_q1_q0() attributes {quir.classicalOnly = false} {
128128
// CHECK: quir.call_subroutine @"subroutine1_q1_!quir.angle<20>_index"(%angle, %c5) : (!quir.angle<20>, index) -> ()
129129
// CHECK: func @subroutine2_q0_q1() attributes {quir.classicalOnly = false} {

0 commit comments

Comments
 (0)