Ok, thanks. paul
> On Mar 11, 2020, at 1:12 PM, Jakub Jelinek <ja...@redhat.com> wrote: > > Hi! > > As mentioned in the PR, the generic code decides to put the a variable into > lcomm_section, which is a NOSWITCH section and thus the generic code doesn't > switch into a particular section before using > ASM_OUTPUT{_ALIGNED{,_DECL}_}_LOCAL, on many targets that results just in > .lcomm (or for non-local .comm) directives which don't need a switch to some > section, other targets put switch_to_section (bss_section) at the start of > that macro. > pdp11 doesn't do that (and doesn't have bss_section), and so emits the > lcomm/comm variables in whatever section is current (it has only .text/.data > and for DEC assembler rodata). > > The following patch fixes that by putting it always into data section, and > additionally avoids emitting an empty line in the assembly for the lcomm > vars. > > Tested on the testcase, I'm afraid I have no other way to test this target. > Ok for trunk? > > 2020-03-11 Jakub Jelinek <ja...@redhat.com> > > PR target/94134 > * config/pdp11/pdp11.c (pdp11_asm_output_var): Call switch_to_section > at the start to switch to data section. Don't print extra newline if > .globl directive has not been emitted. > > * gcc.c-torture/execute/pr94134.c: New test. > > --- gcc/config/pdp11/pdp11.c.jj 2020-01-12 11:54:36.382413876 +0100 > +++ gcc/config/pdp11/pdp11.c 2020-03-11 15:44:43.373970000 +0100 > @@ -743,6 +743,7 @@ void > pdp11_asm_output_var (FILE *file, const char *name, int size, > int align, bool global) > { > + switch_to_section (data_section); > if (align > 8) > fprintf (file, "\t.even\n"); > if (TARGET_DEC_ASM) > @@ -763,8 +764,8 @@ pdp11_asm_output_var (FILE *file, const > { > fprintf (file, ".globl "); > assemble_name (file, name); > + fprintf (file, "\n"); > } > - fprintf (file, "\n"); > assemble_name (file, name); > fputs (":", file); > ASM_OUTPUT_SKIP (file, size); > --- gcc/testsuite/gcc.c-torture/execute/pr94134.c.jj 2020-03-11 > 15:46:09.540710642 +0100 > +++ gcc/testsuite/gcc.c-torture/execute/pr94134.c 2020-03-11 > 15:40:18.538840663 +0100 > @@ -0,0 +1,14 @@ > +/* PR target/94134 */ > + > +static volatile int a = 0; > +static volatile int b = 1; > + > +int > +main () > +{ > + a++; > + b++; > + if (a != 1 || b != 2) > + __builtin_abort (); > + return 0; > +} > > Jakub >