orcprogam-{mips,mmx,sse}: bail out if get_align_var fails
authorVincent Penquerc'h <vincent.penquerch@collabora.co.uk>
Wed, 16 Apr 2014 11:07:40 +0000 (12:07 +0100)
committerVincent Penquerc'h <vincent.penquerch@collabora.co.uk>
Wed, 16 Apr 2014 11:12:24 +0000 (12:12 +0100)
Coverity 1146979, 1146980, 1146977, 1146978, 1146973

orc/orcprogram-mips.c
orc/orcprogram-mmx.c
orc/orcprogram-sse.c

index c0df7db..85f084f 100644 (file)
@@ -659,6 +659,9 @@ orc_compiler_orc_mips_assemble (OrcCompiler *compiler)
   int var_size_shift;
   int i;
 
+  if (align_var < 0)
+    return;
+
   var_size_shift = get_shift (compiler->vars[align_var].size);
 
   stack_size = orc_mips_emit_prologue (compiler);
index 432992b..50169ef 100644 (file)
@@ -650,6 +650,8 @@ orc_emit_split_3_regions (OrcCompiler *compiler)
   int var_size_shift;
 
   align_var = get_align_var (compiler);
+  if (align_var < 0)
+    return;
   var_size_shift = get_shift (compiler->vars[align_var].size);
   align_shift = var_size_shift + compiler->loop_shift;
 
@@ -717,6 +719,8 @@ orc_emit_split_2_regions (OrcCompiler *compiler)
   int var_size_shift;
 
   align_var = get_align_var (compiler);
+  if (align_var < 0)
+    return;
   var_size_shift = get_shift (compiler->vars[align_var].size);
   align_shift = var_size_shift + compiler->loop_shift;
 
@@ -777,6 +781,10 @@ orc_compiler_mmx_assemble (OrcCompiler *compiler)
   }
 
   align_var = get_align_var (compiler);
+  if (align_var < 0) {
+    orc_x86_assemble_copy (compiler);
+    return;
+  }
   is_aligned = compiler->vars[align_var].is_aligned;
 
   {
index ac2fce3..abeeff5 100644 (file)
@@ -650,6 +650,8 @@ orc_emit_split_3_regions (OrcCompiler *compiler)
   int var_size_shift;
 
   align_var = get_align_var (compiler);
+  if (align_var < 0)
+    return;
   var_size_shift = get_shift (compiler->vars[align_var].size);
   align_shift = var_size_shift + compiler->loop_shift;
 
@@ -717,6 +719,8 @@ orc_emit_split_2_regions (OrcCompiler *compiler)
   int var_size_shift;
 
   align_var = get_align_var (compiler);
+  if (align_var < 0)
+    return;
   var_size_shift = get_shift (compiler->vars[align_var].size);
   align_shift = var_size_shift + compiler->loop_shift;
 
@@ -777,6 +781,10 @@ orc_compiler_sse_assemble (OrcCompiler *compiler)
   }
 
   align_var = get_align_var (compiler);
+  if (align_var < 0) {
+    orc_x86_assemble_copy (compiler);
+    return;
+  }
   is_aligned = compiler->vars[align_var].is_aligned;
 
   {