Skip to content

Commit 15c40ab

Browse files
committed
Workaround use of empty labels in kernel builder.
Signed-off-by: Eric Schweitz <eschweitz@nvidia.com>
1 parent 2acc144 commit 15c40ab

File tree

1 file changed

+16
-4
lines changed

1 file changed

+16
-4
lines changed

runtime/cudaq/builder/kernel_builder.cpp

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -776,16 +776,28 @@ QuakeValue applyMeasure(ImplicitLocOpBuilder &builder, Value value,
776776

777777
cudaq::info("kernel_builder apply measurement");
778778

779-
auto strAttr = builder.getStringAttr(regName);
779+
// FIXME: regName cannot be empty, but the prototypes give an empty string as
780+
// the default. This is a workaround to clear out the empty string so we don't
781+
// build broken IR.
782+
StringAttr strAttr;
783+
if (!regName.empty())
784+
strAttr = builder.getStringAttr(regName);
785+
780786
Type resTy = builder.getI1Type();
781787
Type measTy = quake::MeasureType::get(builder.getContext());
782788
if (!type.isa<quake::RefType>()) {
783789
resTy = cc::StdvecType::get(resTy);
784790
measTy = cc::StdvecType::get(measTy);
785791
}
786-
Value measureResult =
787-
builder.template create<QuakeMeasureOp>(measTy, value, strAttr)
788-
.getMeasOut();
792+
Value measureResult;
793+
if (strAttr)
794+
measureResult =
795+
builder.template create<QuakeMeasureOp>(measTy, value, strAttr)
796+
.getMeasOut();
797+
else
798+
measureResult =
799+
builder.template create<QuakeMeasureOp>(measTy, value).getMeasOut();
800+
789801
Value bits = builder.create<quake::DiscriminateOp>(resTy, measureResult);
790802
return QuakeValue(builder, bits);
791803
}

0 commit comments

Comments
 (0)