X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=src%2FSDCCval.h;h=03b7dd138a1dfa8f05166678d9c222c4178795ee;hb=61c6515b039a977d80942130e789e6fc0f243cf5;hp=bb49bee7eb9bd0da24f715f4200776b006bba6a7;hpb=a9f3838bdbedc49bb24f63070e0bef2e6fb5edea;p=fw%2Fsdcc diff --git a/src/SDCCval.h b/src/SDCCval.h index bb49bee7..03b7dd13 100644 --- a/src/SDCCval.h +++ b/src/SDCCval.h @@ -6,19 +6,19 @@ under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. - + This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. - + You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - + In other words, you are welcome to use, share and improve this program. You are forbidden to forbid anyone else to use, share and improve - what you give them. Help stamp out software-hoarding! + what you give them. Help stamp out software-hoarding! -------------------------------------------------------------------------*/ #ifndef SDCCVAL_H #define SDCCVAL_H @@ -30,13 +30,13 @@ /* * See ISO/IEC 9899, chapter 6.3.1.4 Real floating and integer: * If the value of the integral part cannot be represented by the integer type, the behavior is undefined. - * This shows up on Mac OS X i386 platform + * This shows up on Mac OS X i386 platform which useus SSE unit instead of the x87 FPU for floating-point operations */ /* * on Mac OS X ppc (long) 2147483648.0 equals to 2147483647, so we explicitely convert it to 0x80000000 * on other known platforms (long) 2147483648.0 equals to -2147483648 */ -#define double2ul(val) ((val <= (double)0x80000000UL) ? 0x80000000UL : (((val) < 0) ? (unsigned long) -((long) -(val)) : (unsigned long) (val))) +#define double2ul(val) (((val) < 0) ? (((val) < -2147483647.0) ? 0x80000000UL : (unsigned long) -((long) -(val))) : (unsigned long) (val)) /* value wrapper */ typedef struct value @@ -58,7 +58,6 @@ typedef struct literalList struct literalList *next; } literalList; - enum { INIT_NODE, @@ -96,9 +95,9 @@ CCR_RESULT; #define IS_VARG(x) (x->vArgs) /* forward definitions for the symbol table related functions */ -void initValue (); -value *newValue (); +value *newValue (void); value *constVal (const char *); +value *constCharVal (unsigned char); value *reverseVal (value *); value *reverseValWithType (value *); value *copyValue (value *); @@ -140,8 +139,8 @@ value *list2val (initList *); struct ast *list2expr (initList *); void resolveIvalSym (initList *, sym_link *); value *valFromType (sym_link *); -value *constFloatVal (char *); -value *constFixed16x16Val (char *); +value *constFloatVal (const char *); +value *constFixed16x16Val (const char *); int getNelements (sym_link *, initList *); value *valForArray (struct ast *); value *valForStructElem (struct ast *, struct ast *);