Add support for loading _Bool value in i386, x86_64 and arm as well as support for storing _Bool value on arm.
Unified · Split
| @@ -571,7 +571,7 @@ void load(int r, SValue *sv) · 570 unmodified lines | ||
| 571 | 571 | op=0xE5100000; |
| 572 | 572 | if(!sign) |
| 573 | 573 | op|=0x800000; |
| 574 | − if ((ft & VT_BTYPE) == VT_BYTE) | |
| 574 | + if ((ft & VT_BTYPE) == VT_BYTE || (ft & VT_BTYPE) == VT_BOOL) | |
| 575 | 575 | op|=0x400000; |
| 576 | 576 | o(op|(intr(r)<<12)|fc|(base<<16)); |
| 577 | 577 | } |
| @@ -699,7 +699,7 @@ void store(int r, SValue *sv) · 121 unmodified lines | ||
| 699 | 699 | op=0xE5000000; |
| 700 | 700 | if(!sign) |
| 701 | 701 | op|=0x800000; |
| 702 | − if ((ft & VT_BTYPE) == VT_BYTE) | |
| 702 | + if ((ft & VT_BTYPE) == VT_BYTE || (ft & VT_BTYPE) == VT_BOOL) | |
| 703 | 703 | op|=0x400000; |
| 704 | 704 | o(op|(intr(r)<<12)|fc|(base<<16)); |
| 705 | 705 | } |
| @@ -244,7 +244,7 @@ ST_FUNC void load(int r, SValue *sv) · 243 unmodified lines | ||
| 244 | 244 | } else if ((ft & VT_BTYPE) == VT_LDOUBLE) { |
| 245 | 245 | o(0xdb); /* fldt */ |
| 246 | 246 | r = 5; |
| 247 | − } else if ((ft & VT_TYPE) == VT_BYTE) { | |
| 247 | + } else if ((ft & VT_TYPE) == VT_BYTE || (ft & VT_TYPE) == VT_BOOL) { | |
| 248 | 248 | o(0xbe0f); /* movsbl */ |
| 249 | 249 | } else if ((ft & VT_TYPE) == (VT_BYTE | VT_UNSIGNED)) { |
| 250 | 250 | o(0xb60f); /* movzbl */ |
| @@ -414,7 +414,7 @@ void load(int r, SValue *sv) · 413 unmodified lines | ||
| 414 | 414 | r = REG_VALUE(r); |
| 415 | 415 | } else if ((ft & VT_BTYPE) == VT_LDOUBLE) { |
| 416 | 416 | b = 0xdb, r = 5; /* fldt */ |
| 417 | − } else if ((ft & VT_TYPE) == VT_BYTE) { | |
| 417 | + } else if ((ft & VT_TYPE) == VT_BYTE || (ft & VT_TYPE) == VT_BOOL) { | |
| 418 | 418 | b = 0xbe0f; /* movsbl */ |
| 419 | 419 | } else if ((ft & VT_TYPE) == (VT_BYTE | VT_UNSIGNED)) { |
| 420 | 420 | b = 0xb60f; /* movzbl */ |