Skip to content

Commit 942f678

Browse files
committed
qbe: Use extern for globals with external linkage
1 parent b50e017 commit 942f678

40 files changed

Lines changed: 99 additions & 94 deletions

qbe.c

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,9 @@ struct value {
1919
VALUE_TYPE,
2020
VALUE_LABEL,
2121

22-
VALUE_THREAD = 1<<4,
23-
VALUE_QUOTE = 1<<5,
22+
VALUE_EXTERN = 1<<4,
23+
VALUE_THREAD = 1<<5,
24+
VALUE_QUOTE = 1<<6,
2425
} kind;
2526
unsigned id;
2627
union {
@@ -139,6 +140,8 @@ mkglobal(struct decl *d)
139140

140141
v = xmalloc(sizeof(*v));
141142
v->kind = VALUE_GLOBAL;
143+
if (d->linkage == LINKEXTERN)
144+
v->kind |= VALUE_EXTERN;
142145
if (d->kind == DECLOBJECT && d->u.obj.storage == SDTHREAD)
143146
v->kind |= VALUE_THREAD;
144147
if (d->asmname) {
@@ -1173,6 +1176,8 @@ emitvalue(struct value *v)
11731176
printf("d_%.17g", v->u.f);
11741177
break;
11751178
case VALUE_GLOBAL:
1179+
if (v->kind & VALUE_EXTERN)
1180+
fputs("extern ", stdout);
11761181
if (v->kind & VALUE_THREAD)
11771182
fputs("thread ", stdout);
11781183
/* fallthrough */

test/add-int-pointer.qbe

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ function $f() {
44
@body.2
55
%.1 =l extsw 1
66
%.2 =l mul %.1, 4
7-
%.3 =l add $x, %.2
7+
%.3 =l add extern $x, %.2
88
ret
99
}
1010
export data $x = align 4 { z 8 }

test/alignas-vla-strict.qbe

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ export
33
function w $main() {
44
@start.1
55
@body.2
6-
%.1 =w loadw $n
6+
%.1 =w loadw extern $n
77
%.2 =l extsw %.1
88
%.3 =l mul %.2, 1
99
%.4 =l add %.3, 48

test/bitfield-assignment-sign-extend.qbe

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ export
22
function w $main() {
33
@start.1
44
@body.2
5-
%.1 =l add $s, 0
5+
%.1 =l add extern $s, 0
66
%.2 =w shl 15, 0
77
%.3 =w shl %.2, 28
88
%.4 =w sar %.3, 28

test/bitfield-compound-assign.qbe

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ export
22
function $f() {
33
@start.1
44
@body.2
5-
%.1 =l add $s, 0
5+
%.1 =l add extern $s, 0
66
%.2 =w loadw %.1
77
%.3 =w shl %.2, 19
88
%.4 =w sar %.3, 23

test/bitfield-integer-promotion.qbe

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ function w $main() {
33
@start.1
44
@body.2
55
%.1 =w neg 1
6-
%.2 =l add $s, 0
6+
%.2 =l add extern $s, 0
77
%.3 =w loadw %.2
88
%.4 =w shl %.3, 30
99
%.5 =w shr %.4, 30

test/bitfield-load-signed.qbe

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ export
22
function $f() {
33
@start.1
44
@body.2
5-
%.1 =l add $s, 0
5+
%.1 =l add extern $s, 0
66
%.2 =w loadw %.1
77
%.3 =w shl %.2, 13
88
%.4 =w sar %.3, 17

test/bitfield-load-unsigned.qbe

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ export
22
function $f() {
33
@start.1
44
@body.2
5-
%.1 =l add $s, 0
5+
%.1 =l add extern $s, 0
66
%.2 =w loadw %.1
77
%.3 =w shl %.2, 13
88
%.4 =w shr %.3, 17

test/bitfield-short.qbe

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ export
33
function w $main() {
44
@start.1
55
@body.2
6-
%.1 =l add $s, 0
6+
%.1 =l add extern $s, 0
77
%.2 =w loadsh %.1
88
%.3 =w shl %.2, 25
99
%.4 =w sar %.3, 25

test/builtin-expect.qbe

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ export
22
function w $main() {
33
@start.1
44
@body.2
5-
%.1 =w loadw $x
5+
%.1 =w loadw extern $x
66
ret %.1
77
}
88
export data $x = align 4 { z 4 }

0 commit comments

Comments
 (0)