From 541bb2e33f89b07bcbea2e27275df858760c8ec8 Mon Sep 17 00:00:00 2001 From: Brian Paul Date: Tue, 31 Jan 2012 07:01:53 -0700 Subject: [PATCH] nv50: use larger arrays to silence warnings and fix buffer overflows MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit The warnings were: nv50_pc_regalloc.c: In function ‘pass_generate_phi_movs’: nv50_pc_regalloc.c:423:41: warning: array subscript is above array bounds codegen/nv50_ir_peephole.cpp: In member function ‘bool nv50_ir::MemoryOpt::replaceStFromSt(nv50_ir::Instruction*, nv50_ir::MemoryOpt::Record*)’: codegen/nv50_ir_peephole.cpp:1475:18: warning: array subscript is above array bounds codegen/nv50_ir_peephole.cpp:1475:18: warning: array subscript is above array bounds codegen/nv50_ir_peephole.cpp:1475:18: warning: array subscript is above array bounds codegen/nv50_ir_peephole.cpp:1475:18: warning: array subscript is above array bounds And add some assertions to catch this sooner in debug builds. --- src/gallium/drivers/nv50/codegen/nv50_ir_peephole.cpp | 2 +- src/gallium/drivers/nv50/nv50_pc.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/gallium/drivers/nv50/codegen/nv50_ir_peephole.cpp b/src/gallium/drivers/nv50/codegen/nv50_ir_peephole.cpp index fc025d8767e..fb4041f0b88 100644 --- a/src/gallium/drivers/nv50/codegen/nv50_ir_peephole.cpp +++ b/src/gallium/drivers/nv50/codegen/nv50_ir_peephole.cpp @@ -1463,7 +1463,7 @@ MemoryOpt::replaceStFromSt(Instruction *restrict st, Record *rec) st->takeExtraSources(0, extra); if (offR < offS) { - Value *vals[4]; + Value *vals[10]; int s, n; int k = 0; // get non-replaced sources of ri diff --git a/src/gallium/drivers/nv50/nv50_pc.h b/src/gallium/drivers/nv50/nv50_pc.h index 45804d3a913..9abefa2f2aa 100644 --- a/src/gallium/drivers/nv50/nv50_pc.h +++ b/src/gallium/drivers/nv50/nv50_pc.h @@ -234,7 +234,7 @@ struct nv_instruction { int serial; struct nv_value *def[4]; struct nv_value *flags_def; - struct nv_ref *src[5]; + struct nv_ref *src[6]; struct nv_ref *flags_src; struct nv_basic_block *bb; struct nv_basic_block *target; /* target block of control flow insn */ -- 2.30.2