ref: 53727b8e75d92fb88ac9916608e581e181d832c6
parent: 2883d0179563960dacbe4c97ec78f3822aca7c29
author: Roberto E. Vargas Caballero <k0ga@shike2.com>
date: Wed Oct 7 09:57:34 EDT 2015
Fix cast between integer constants
--- a/cc1/fold.c
+++ b/cc1/fold.c
@@ -226,7 +226,7 @@
default: return 0;
}
- res->u.u = u;
+ res->u.u = u & ones(res->type->size);
return 1;
sign:
@@ -521,6 +521,7 @@
u = (oldtp->sign) ? osym->u.i : osym->u.u;
break;
case FLOAT:
+ oldtp = newtp;
u = osym->u.f;
break;
default:
@@ -529,7 +530,6 @@
mask = ones(newtp->size);
if (newtp->sign) {
negmask = ~mask;
- u &= mask;
if (u & (negmask >> 1) & mask)
u |= negmask;
aux.u.i = u;
--- a/cc1/tests/test023.c
+++ b/cc1/tests/test023.c
@@ -13,8 +13,8 @@
A3 #W1 :W
A3 #WFFFFFFFF :W
A3 #WFFFFFFFF :W
+ A3 #WFFFF :W
A3 #WFFFFFFFF :W
- A3 #WFFFFFFFF :W
A3 #W3 :W
A3 #W1 :W
A3 #W0 :W
@@ -21,7 +21,7 @@
A4 #Z1 :Z
A4 #ZFFFFFFFF :Z
A4 #ZFFFFFFFF :Z
- A4 #ZFFFFFFFF :Z
+ A4 #ZFFFF :Z
A4 #ZFFFFFFFF :Z
A4 #Z3 :Z
A4 #Z1 :Z
--- a/cc1/tests/test024.c
+++ b/cc1/tests/test024.c
@@ -13,14 +13,14 @@
A3 #Q1 :Q
A3 #QFFFFFFFF :Q
A3 #QFFFFFFFF :Q
+ A3 #QFFFF :Q
A3 #QFFFFFFFF :Q
- A3 #QFFFFFFFF :Q
A3 #Q3 :Q
A3 #Q1 :Q
A4 #O1 :O
A4 #OFFFFFFFF :O
A4 #OFFFFFFFF :O
- A4 #OFFFFFFFF :O
+ A4 #OFFFF :O
A4 #OFFFFFFFF :O
A4 #O3 :O
A4 #O0 :O
--
⑨