ref: cfd05d23cb1e3716f9d59e1ad95bbb29c4da713b
parent: dbd4a25ef1165b87b3848ad1d7e64beb663b6329
author: Roberto E. Vargas Caballero <[email protected]>
date: Fri Aug 14 18:02:23 EDT 2015
Reserve always an identifier for labels Labels are always emitted, so they must have an identifier always. Before this patch temporal labels were not installed because they don't have name, and it caused that all the temporal labels hadn't an identifier, they were emitted as L0.
--- a/cc1/symbol.c
+++ b/cc1/symbol.c
@@ -166,6 +166,7 @@
return sym;
if (ns == NS_LABEL) {
sym->next = labels;
+ sym->id = ++localcnt;
return labels = sym;
}
@@ -260,7 +261,7 @@
sym = linkhash(newsym(ns), sym->name);
assign_id:
- if (sym->ns != NS_CPP)
+ if (sym->ns != NS_CPP || sym->ns != NS_LABEL)
sym->id = (curctx) ? ++localcnt : ++globalcnt;
return sym;
--- a/cc1/tests/test004.c
+++ b/cc1/tests/test004.c
@@ -22,9 +22,9 @@
A2 A2 A2 #I3 <I #I1 #I0 ?I +I :I
A2 A2 A2 #I1 >I #I1 #I0 ?I +I :I
A2 A2 A2 #I4 <I #I1 #I0 ?I +I :I
- j L0 A2 #I4 =I
+ j L3 A2 #I4 =I
yI #I1
-L0
+L3
yI #I0
}
*/
@@ -52,4 +52,4 @@
if(x != 4)
return 1;
return 0;
-}
\ No newline at end of file
+}
--- a/cc1/tests/test005.c
+++ b/cc1/tests/test005.c
@@ -12,9 +12,9 @@
A2 A2 #I0 =I #I1 #I0 ?I :I
A2 A2 ~I :I
A2 A2 _I :I
- j L0 A2 #I2 =I
+ j L3 A2 #I2 =I
yI #I1
-L0
+L3
yI #I0
}
*/