Fix for github issue #6.
When creating a constant zero for implementing a unary minus operation using a binary subtraction operator, the constant needs to be to exactly the expression width.
This commit is contained in:
parent
336b29955d
commit
d1c9dd554b
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2001-2013 Stephen Williams (steve@icarus.com)
|
* Copyright (c) 2001-2014 Stephen Williams (steve@icarus.com)
|
||||||
*
|
*
|
||||||
* This source code is free software; you can redistribute it
|
* This source code is free software; you can redistribute it
|
||||||
* and/or modify it in source code form under the terms of the GNU
|
* and/or modify it in source code form under the terms of the GNU
|
||||||
|
|
@ -48,7 +48,7 @@ NetNet* sub_net_from(Design*des, NetScope*scope, long val, NetNet*sig)
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
verinum zero ((int64_t)val);
|
verinum zero ((int64_t)val);
|
||||||
zero = pad_to_width(zero, sig->vector_width());
|
zero = cast_to_width(zero, sig->vector_width());
|
||||||
zero.has_sign(sig->get_signed());
|
zero.has_sign(sig->get_signed());
|
||||||
NetConst*zero_obj = new NetConst(scope, scope->local_symbol(), zero);
|
NetConst*zero_obj = new NetConst(scope, scope->local_symbol(), zero);
|
||||||
zero_obj->set_line(*sig);
|
zero_obj->set_line(*sig);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue