On Mon, Oct 26, 2015 at 5:08 AM, Pohjolainen, Topi <topi.pohjolai...@intel.com> wrote: > On Wed, Oct 21, 2015 at 03:58:13PM -0700, Matt Turner wrote: >> Often annotations are identical between sets of consecutive >> instructions. We can perhaps avoid some memory allocations by reusing >> the previous annotation. >> --- >> src/mesa/drivers/dri/i965/intel_asm_annotation.c | 19 ++++++++++++++----- >> 1 file changed, 14 insertions(+), 5 deletions(-) >> >> diff --git a/src/mesa/drivers/dri/i965/intel_asm_annotation.c >> b/src/mesa/drivers/dri/i965/intel_asm_annotation.c >> index f87a9bb..58830db 100644 >> --- a/src/mesa/drivers/dri/i965/intel_asm_annotation.c >> +++ b/src/mesa/drivers/dri/i965/intel_asm_annotation.c >> @@ -112,6 +112,20 @@ void annotate(const struct brw_device_info *devinfo, >> ann->block_start = cfg->blocks[annotation->cur_block]; >> } >> >> + if (bblock_end(cfg->blocks[annotation->cur_block]) == inst) { >> + ann->block_end = cfg->blocks[annotation->cur_block]; >> + annotation->cur_block++; >> + } >> + >> + /* Merge this annotation with the previous if possible. */ >> + struct annotation *prev = &annotation->ann[annotation->ann_count - 2]; > > What guarantees that annotation->ann_count is always at least two at this > point?
Nothing! Good catch :) I'll add "annotation->ann_count >= 2 &&" as the first part of the conditional immediately below. >> + if (ann->ir == prev->ir && >> + ann->annotation == prev->annotation && >> + ann->block_start == NULL) { >> + annotation->ann_count--; >> + return; >> + } >> + _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev