9fans - fans of the OS Plan 9 from Bell Labs
 help / color / mirror / Atom feed
* [9fans] A compiler bug
@ 2018-08-01  7:21 Bakul Shah
  2018-08-01 23:35 ` Charles Forsyth
  0 siblings, 1 reply; 7+ messages in thread
From: Bakul Shah @ 2018-08-01  7:21 UTC (permalink / raw)
  To: Fans of the OS Plan 9 from Bell Labs

Consider:

% cat x.c
#include <u.h>
uintptr foo[3];
uintptr bar=&foo[2];

% 8c -c x.c	# this works.
% 5c -c x.c	# this fails
x.c:3 initializer is not a constant: bar

If I change the last line to

uintptr* bar=&foo[2];

Both compilers compile it fine. But if I change the last line
to

uintptr bar=(uintptr)&foo[2];

both compilers fail. Note that the last two examples are
type correct.

uintptr is the same size as int* so there should be no runtime
cost and we already know from the second example that &foo[2]
is a link time constant.

Similar code to the last two examples compiles on gcc/clang.

This seems like a compiler bug.



^ permalink raw reply	[flat|nested] 7+ messages in thread
* Re: [9fans] A compiler bug
@ 2018-08-02 14:20 cinap_lenrek
  2018-08-05 14:53 ` Charles Forsyth
  0 siblings, 1 reply; 7+ messages in thread
From: cinap_lenrek @ 2018-08-02 14:20 UTC (permalink / raw)
  To: 9fans

> Fwiw, the bugs in 6c and 8c where the cast fails was fixed in 9front
> with https://code.9front.org/hg/plan9front/rev/7cf7079502a7

for 8c/6c only. but its not portable as charles pointed out. this needs a
proper fix.

--
cinap



^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2018-08-05 14:53 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-08-01  7:21 [9fans] A compiler bug Bakul Shah
2018-08-01 23:35 ` Charles Forsyth
2018-08-02  0:27   ` Bakul Shah
2018-08-02  9:38     ` Charles Forsyth
2018-08-02 13:28       ` Benjamin Purcell
2018-08-02 14:20 cinap_lenrek
2018-08-05 14:53 ` Charles Forsyth

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).