summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVincent Penquerc'h <vincent.penquerch@collabora.co.uk>2014-04-16 12:07:40 +0100
committerVincent Penquerc'h <vincent.penquerch@collabora.co.uk>2014-04-16 12:12:24 +0100
commit2d646b423b8b6394bcde5c680c685d1e09af1ee7 (patch)
tree54ef64776c907126ad786fae626149ec72cd0527
parentef573c170f275121cf521b659ecf55a72d7a7543 (diff)
orcprogam-{mips,mmx,sse}: bail out if get_align_var fails
-rw-r--r--orc/orcprogram-mips.c3
-rw-r--r--orc/orcprogram-mmx.c8
-rw-r--r--orc/orcprogram-sse.c8
3 files changed, 19 insertions, 0 deletions
diff --git a/orc/orcprogram-mips.c b/orc/orcprogram-mips.c
index c0df7db..85f084f 100644
--- a/orc/orcprogram-mips.c
+++ b/orc/orcprogram-mips.c
@@ -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);
diff --git a/orc/orcprogram-mmx.c b/orc/orcprogram-mmx.c
index 432992b..50169ef 100644
--- a/orc/orcprogram-mmx.c
+++ b/orc/orcprogram-mmx.c
@@ -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;
{
diff --git a/orc/orcprogram-sse.c b/orc/orcprogram-sse.c
index ac2fce3..abeeff5 100644
--- a/orc/orcprogram-sse.c
+++ b/orc/orcprogram-sse.c
@@ -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;
{