summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWim Taymans <wtaymans@redhat.com>2014-09-17 15:36:47 +0200
committerWim Taymans <wtaymans@redhat.com>2014-09-17 15:36:47 +0200
commit4a7f1c0c1d9418e7d220110c5a0ec732f755c284 (patch)
tree0b8a24bc0be9bb44db98a84aa904edae2f19f653
parentfa62bd0444eb72e039b5a106a18385b82178eac4 (diff)
compiler: do << and | on unsigned ints only
-rw-r--r--orc/orccompiler.c13
1 files changed, 7 insertions, 6 deletions
diff --git a/orc/orccompiler.c b/orc/orccompiler.c
index bfb220f..1acb0ff 100644
--- a/orc/orccompiler.c
+++ b/orc/orccompiler.c
@@ -1052,25 +1052,26 @@ orc_compiler_get_constant (OrcCompiler *compiler, int size, int value)
{
int i;
int tmp;
+ unsigned int v = value;
if (size < 4) {
if (size < 2) {
- value &= 0xff;
- value |= (value<<8);
+ v &= 0xff;
+ v |= (v<<8);
}
- value &= 0xffff;
- value |= (value<<16);
+ v &= 0xffff;
+ v |= (v<<16);
}
for(i=0;i<compiler->n_constants;i++){
if (compiler->constants[i].is_long == FALSE &&
- compiler->constants[i].value == value) {
+ compiler->constants[i].value == v) {
break;
}
}
if (i == compiler->n_constants) {
compiler->n_constants++;
- compiler->constants[i].value = value;
+ compiler->constants[i].value = v;
compiler->constants[i].alloc_reg = 0;
compiler->constants[i].use_count = 0;
compiler->constants[i].is_long = FALSE;