String merging broken on Windows
#9577 (closed) introduced string literal merging via the linker. Unfortunately I haven't been able to get this to function on Windows, resulting in testsuite failures of #9577 (closed).
Even gcc appears to do the wrong thing here,
$ cat hi.c
#include <stdio.h>
const char *hi = "hello world";
extern const char *hi2;
void main() {
printf("%p %p", hi, hi2);
}
$ cat hi2.c
const char *hi2 = "hello world";
$ gcc -c hi.c; gcc -c hi2.c; gcc -fmerge-all-constants hi2.o hi.o
$ ./a.exe
0x100403040 0x100403030
$ gcc -s hi2.c
$ cat hi2.s
.file "hi2.c"
.globl hi
.section .rdata,"dr"
.LC0:
.ascii "hello world\0"
.data
.align 8
hi:
.quad .LC0
.ident "GCC: (GNU) 5.3.0"
Trac metadata
| Trac field | Value |
|---|---|
| Version | 8.0.1 |
| Type | Bug |
| TypeOfFailure | OtherFailure |
| Priority | normal |
| Resolution | Unresolved |
| Component | Compiler |
| Test case | |
| Differential revisions | |
| BlockedBy | |
| Related | |
| Blocking | |
| CC | Phyx- |
| Operating system | |
| Architecture |