Related articles |
---|
Improved C warning messages mikov@usa.net (Tzvetan Mikov) (1999-04-22) |
Re: Improved C warning messages jejones@microware.com (James Jones) (1999-04-26) |
Re: Improved C warning messages gopi@sankhya.com (1999-04-26) |
Re: Improved C warning messages rinie4384@my-dejanews.com (1999-04-26) |
Re: Improved C warning messages fjh@cs.mu.OZ.AU (1999-04-29) |
Re: Improved C warning messages mikov@usa.net (Tzvetan Mikov) (1999-04-29) |
Re: Improved C warning messages mikov@usa.net (Tzvetan Mikov) (1999-04-29) |
Re: Improved C warning messages saroj@bear.com (1999-04-30) |
From: | gopi@sankhya.com |
Newsgroups: | comp.compilers |
Date: | 26 Apr 1999 02:03:18 -0400 |
Organization: | Deja News - The Leader in Internet Discussion |
References: | 99-04-080 |
Keywords: | C, errors |
"Tzvetan Mikov" <mikov@usa.net> wrote:
> I am developing an ANSI C compiler and here is a problem I stumbled upon
> recently. It is not of great importance for the code generation, but it is
> interesting and I would appreciate any ideas or pointers for a clean
> solution.
In the parse tree at each node, you could maintain in addition to the type of
the expression, the smallest data type that is known to hold the value without
losing any information. This can then be used to decide on whether or not
a particular warning should be issued.
> unsigned u;
> short s;
> ....
> s = u >> 16; // must not produce warning about assigning int to short
Assuming u is 32-bit int, the above can in fact be a correct worning -- unless
the shift value is >= 17. (0xffffffff >> 16) != (short)0xffff
> abstracted the front end from the target CPU. It operates with
> variable type sizes (e.g. "int" might be or might not be equal to
> "long", etc.) It gets even more interesting if signed and unsigned
> bitfields are involved.
I believe a conservative use of the above method would result in an elegant
solution.
Best Regards,
gopi
---
Gopi Kumar Bulusu bulusu@giasmd01.vsnl.net.in
Sankhya Technologies Private Ltd. http://www.sankhya.com
+91 44 822 7357 GMT + 5:30
Return to the
comp.compilers page.
Search the
comp.compilers archives again.