[Crash-utility] [PATCH] Fix SIAL warnings
Dave Anderson
anderson at redhat.com
Fri Nov 9 19:57:41 UTC 2007
Bernhard Walle wrote:
> This patch fixes "operation on 'v1' may be undefined" warning in sial_exeop().
> In some places V1 and L1 where used as arguments at the same time.
>
> It's from lkcdutils and has been there in CVS for a few month. Originally
> written by Jan Blunck <jblunck at suse.de>.
Thanks, Bernhard -- it's queued based upon Luc's approval.
Luc, can you give this an ACK?
Thanks,
Dave
>
>
> Signed-off-by: Bernhard Walle <bwalle at suse.de>
>
> ---
> extensions/libsial/sial_op.c | 95 ++++++++++++++++++++++++++-----------------
> 1 file changed, 59 insertions(+), 36 deletions(-)
>
> --- a/extensions/libsial/sial_op.c
> +++ b/extensions/libsial/sial_op.c
> @@ -28,15 +28,15 @@ typedef struct {
> #define V3 (v3?v3:(v3=NODE_EXE(P3)))
> #define V4 (v4?v4:(v4=NODE_EXE(P4)))
>
> -#define L1 (unival(v1?v1:V1))
> -#define L2 (unival(v2?v2:V2))
> -#define L3 (unival(v3?v3:V3))
> -#define L4 (unival(v4?v4:V4))
> -
> -#define S1 ((v1?v1:V1)->v.data)
> -#define S2 ((v2?v2:V2)->v.data)
> -#define S3 ((v3?v3:V3)->v.data)
> -#define S4 ((v4?v4:V4)->v.data)
> +#define L1 (unival(V1))
> +#define L2 (unival(V2))
> +#define L3 (unival(V3))
> +#define L4 (unival(V4))
> +
> +#define S1 ((V1)->v.data)
> +#define S2 ((V2)->v.data)
> +#define S3 ((V3)->v.data)
> +#define S4 ((V4)->v.data)
>
> void sial_do_deref(int n, value_t *v, value_t *ref);
> ul
> @@ -545,39 +545,53 @@ inval:
> case ADD: { /* expr + expr */
> /* adding two pointers ? */
> if(V2->type.type == V_REF) goto inval;
> - sial_transfer(v=sial_newval(), V1, L1 + L2*size);
> +
> + V1;
> + sial_transfer(v=sial_newval(), v1,
> + unival(v1) + L2 * size);
> }
> break;
> case SUB: { /* expr - expr */
> -
> /* different results if mixed types.
> if both are pointers then result is a V_BASE */
> if(V2->type.type == V_REF)
> v=sial_makebtype(L1 - L2);
>
> - else sial_transfer(v=sial_newval(), V1, L1 - L2*size);
> + else {
> + V1;
> + sial_transfer(v=sial_newval(), v1,
> + unival(v1) - L2 * size);
> + }
> }
> break;
> case PREDECR: { /* pre is easy */
> - sial_transfer(v=sial_newval(), V1, L1-size);
> - sial_setval(V1, v);
> + V1;
> + sial_transfer(v=sial_newval(), v1,
> + unival(v1) - size);
> + sial_setval(v1, v);
> }
> break;
> case PREINCR: {
> - sial_transfer(v=sial_newval(), V1, L1+size);
> - sial_setval(V1, v);
> + V1;
> + sial_transfer(v=sial_newval(), v1,
> + unival(v1) + size);
> + sial_setval(v1, v);
> }
> break;
> case POSTINCR: {
> - sial_transfer(v=sial_newval(), V1, L1+size);
> - sial_setval(V1, v);
> - sial_transfer(v, V1, L1);
> + V1;
> + sial_transfer(v=sial_newval(), v1,
> + unival(v1) + size);
> + sial_setval(v1, v);
> + sial_transfer(v, v1, unival(v1));
> }
> break;
> case POSTDECR: {
> - sial_transfer(v=sial_newval(), V1, L1-size);
> - sial_setval(V1, v);
> - sial_transfer(v, V1, L1);
> + V1;
> + sial_transfer(v=sial_newval(), v1,
> + unival(v1) - size);
> + sial_setval(v1, v);
> + sial_transfer(v, v1, unival(v1));
> }
> break;
> default:
> @@ -625,26 +639,33 @@ inval:
> }
> break;
> case PREDECR: { /* pre is easy */
> - sial_transfer(v=sial_newval(), V1, L1-1);
> - sial_setval(V1, v);
> + V1;
> + sial_transfer(v=sial_newval(), v1,
> + unival(v1) - 1);
> + sial_setval(v1, v);
> }
> break;
> case PREINCR: {
> V1;
> - sial_transfer(v=sial_newval(), V1, L1+1);
> - sial_setval(V1, v);
> + sial_transfer(v=sial_newval(), v1,
> + unival(v1) + 1);
> + sial_setval(v1, v);
> }
> break;
> case POSTINCR: {
> - sial_transfer(v=sial_newval(), V1, L1+1);
> - sial_setval(V1, v);
> - sial_transfer(v, V1, L1);
> + V1;
> + sial_transfer(v=sial_newval(), v1,
> + unival(v1) + 1);
> + sial_setval(v1, v);
> + sial_transfer(v, v1, unival(v1));
> }
> break;
> case POSTDECR: {
> - sial_transfer(v=sial_newval(), V1, L1-1);
> - sial_setval(V1, v);
> - sial_transfer(v, V1, L1);
> + V1;
> + sial_transfer(v=sial_newval(), v1,
> + unival(v1) - 1);
> + sial_setval(v1, v);
> + sial_transfer(v, v1, unival(v1));
> }
> break;
> default: sial_rerror(&P1->pos, "Oops ops ! [%d]", top);
> @@ -682,12 +703,14 @@ doop:
> else {
>
> /* if it's a Me-op then v is already set */
> - if(top != o->op) { sial_setval(V1, v); }
> - else {
> -
> - sial_setval(V1, V2);
> + V1;
> + if(top != o->op) {
> + sial_setval(v1, v);
> + } else {
> + sial_setval(v1, V2);
> v=sial_cloneval(V2);
> }
> +
> }
> }
> /* the result of a assignment if not an Lvalue_t */
>
More information about the Crash-utility
mailing list