diff options
author | Vincent Penquerc'h <vincent.penquerch@collabora.co.uk> | 2014-04-16 12:07:40 +0100 |
---|---|---|
committer | Vincent Penquerc'h <vincent.penquerch@collabora.co.uk> | 2014-04-16 12:12:24 +0100 |
commit | 2d646b423b8b6394bcde5c680c685d1e09af1ee7 (patch) | |
tree | 54ef64776c907126ad786fae626149ec72cd0527 | |
parent | ef573c170f275121cf521b659ecf55a72d7a7543 (diff) |
orcprogam-{mips,mmx,sse}: bail out if get_align_var fails
-rw-r--r-- | orc/orcprogram-mips.c | 3 | ||||
-rw-r--r-- | orc/orcprogram-mmx.c | 8 | ||||
-rw-r--r-- | orc/orcprogram-sse.c | 8 |
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; { |