spirv-reader: Fix bug with passing stack-allocated variable
When handling OpCompositeExtract, the SPIRV reader uses a stack-allocated U32 type instead of one heap allocated by the type manager. This causes type determination later to dereference a garbage address. Change-Id: I7d60b6dbf8310e53565d7db47eac4dd92b1bbfa0 Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/34684 Reviewed-by: dan sinclair <dsinclair@chromium.org> Commit-Queue: Austin Eng <enga@chromium.org>
This commit is contained in:
parent
b3becb2f25
commit
41083cbca4
|
@ -3092,9 +3092,9 @@ TypedExpression FunctionEmitter::MakeCompositeExtract(
|
||||||
TypedExpression current_expr(MakeOperand(inst, 0));
|
TypedExpression current_expr(MakeOperand(inst, 0));
|
||||||
|
|
||||||
auto make_index = [this](uint32_t literal) {
|
auto make_index = [this](uint32_t literal) {
|
||||||
ast::type::U32 u32;
|
auto* type = create<ast::type::U32>();
|
||||||
return create<ast::ScalarConstructorExpression>(
|
return create<ast::ScalarConstructorExpression>(
|
||||||
create<ast::UintLiteral>(&u32, literal));
|
create<ast::UintLiteral>(type, literal));
|
||||||
};
|
};
|
||||||
|
|
||||||
const auto composite = inst.GetSingleWordInOperand(0);
|
const auto composite = inst.GetSingleWordInOperand(0);
|
||||||
|
|
Loading…
Reference in New Issue