ref: c3ea36274bc6d11ed47c11275e3c8bb64291c101
parent: 53727b8e75d92fb88ac9916608e581e181d832c6
author: Roberto E. Vargas Caballero <[email protected]>
date: Wed Oct 7 10:00:48 EDT 2015
Force to use long long in emitconst We don't know what is the size of the constant, so the best option is to cast it to long long and use the specifier for it.
--- a/cc1/code.c
+++ b/cc1/code.c
@@ -195,7 +195,9 @@
case INT:
case ENUM:
u = (tp->sign) ? (TUINT) sym->u.i : sym->u.u;
- printf("#%c%lX", np->type->letter, sym->u.i & ones(tp->size));
+ printf("#%c%llX",
+ np->type->letter,
+ (long long) sym->u.i & ones(tp->size));
break;
case ARY:
/*
--- a/cc1/tests/test024.c
+++ b/cc1/tests/test024.c
@@ -11,17 +11,17 @@
A3 Q i
A4 O u
A3 #Q1 :Q
- A3 #QFFFFFFFF :Q
- A3 #QFFFFFFFF :Q
+ A3 #QFFFFFFFFFFFFFFFF :Q
+ A3 #QFFFFFFFFFFFFFFFF :Q
A3 #QFFFF :Q
- A3 #QFFFFFFFF :Q
+ A3 #QFFFFFFFFFFFFFFFF :Q
A3 #Q3 :Q
A3 #Q1 :Q
A4 #O1 :O
- A4 #OFFFFFFFF :O
- A4 #OFFFFFFFF :O
+ A4 #OFFFFFFFFFFFFFFFF :O
+ A4 #OFFFFFFFFFFFFFFFF :O
A4 #OFFFF :O
- A4 #OFFFFFFFF :O
+ A4 #OFFFFFFFFFFFFFFFF :O
A4 #O3 :O
A4 #O0 :O
r #I0