This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
I've been looking for macros to control integer promotions, especially for
temporary statements. Consider for instance the following code:
char c; ... if (c + 4 > 10) ...
On my target, c gets zero_extended to int, then the addition and comparison
are performed in SImode, while it is not really necessary (could be done in
QImode as well and would save the zero_extend).
No, it cannot. You would get wrong behaviour if c >= 252 (assuming char
is unsigned 8 bit), because (char)(c + 4) < 10, but c + 4 > 10.
cond = c + 4 > 10; cond = ((int)c + 4) > 10; cond = ((int)c) > 6); cond = ((char)c) > (char)6);
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |