OS << 'r';
if (getCharacteristics() & COFF::IMAGE_SCN_MEM_DISCARDABLE)
OS << 'n';
-
+ if (getCharacteristics() & COFF::IMAGE_SCN_CNT_INITIALIZED_DATA)
+ OS << 'd';
OS << '"';
if (getCharacteristics() & COFF::IMAGE_SCN_LNK_COMDAT) {
--- /dev/null
+; RUN: llc -mtriple i686-windows %s -o - | FileCheck %s
+; RUN: llc -mtriple x86_64-windows %s -o - | FileCheck %s
+; RUN: llc -mtriple thumbv7-windows %s -o - | FileCheck %s
+
+@data = dllexport constant [5 x i8] c"data\00", align 1
+
+; CHECK: .section .rdata,"rd"
+
; CHECK: .globl Var1
@Var1 = dllexport global i32 1, align 4
-; CHECK: .rdata,"r"
+; CHECK: .rdata,"rd"
; CHECK: .globl Var2
@Var2 = dllexport unnamed_addr constant i32 1
; CHECK: .comm Var3
@Var3 = common dllexport global i32 0, align 4
-; CHECK: .section .data,"w",discard,WeakVar1
+; CHECK: .section .data,"wd",discard,WeakVar1
; CHECK: .globl WeakVar1
@WeakVar1 = weak_odr dllexport global i32 1, align 4
-; CHECK: .section .rdata,"r",discard,WeakVar2
+; CHECK: .section .rdata,"rd",discard,WeakVar2
; CHECK: .globl WeakVar2
@WeakVar2 = weak_odr dllexport unnamed_addr constant i32 1
; CHECK: .globl _Var1
@Var1 = dllexport global i32 1, align 4
-; CHECK: .rdata,"r"
+; CHECK: .rdata,"rd"
; CHECK: .globl _Var2
@Var2 = dllexport unnamed_addr constant i32 1
; CHECK: .comm _Var3
@Var3 = common dllexport global i32 0, align 4
-; CHECK: .section .data,"w",discard,_WeakVar1
+; CHECK: .section .data,"wd",discard,_WeakVar1
; CHECK: .globl _WeakVar1
@WeakVar1 = weak_odr dllexport global i32 1, align 4
-; CHECK: .section .rdata,"r",discard,_WeakVar2
+; CHECK: .section .rdata,"rd",discard,_WeakVar2
; CHECK: .globl _WeakVar2
@WeakVar2 = weak_odr dllexport unnamed_addr constant i32 1
; LINUX-SECTIONS: .section .rodata.G3,"a",@progbits
; LINUX-SECTIONS: .globl G3
-; WIN32-SECTIONS: .section .rdata,"r",one_only,_G3
+; WIN32-SECTIONS: .section .rdata,"rd",one_only,_G3
; WIN32-SECTIONS: .globl _G3
; LINUX-SECTIONS: .section .rodata.G7,"aMS",@progbits,1
; LINUX-SECTIONS: .globl G7
-; WIN32-SECTIONS: .section .rdata,"r",one_only,_G7
+; WIN32-SECTIONS: .section .rdata,"rd",one_only,_G7
; WIN32-SECTIONS: .globl _G7
; LINUX-SECTIONS: .asciz "foo"
; LINUX-SECTIONS: .size .LG14, 4
-; WIN32-SECTIONS: .section .rdata,"r"
+; WIN32-SECTIONS: .section .rdata,"rd"
; WIN32-SECTIONS: L_G14:
; WIN32-SECTIONS: .asciz "foo"
; X86-NEXT: ret
; X86-NEXT: [[END_OF_F:.*]]:
;
-; X86-LABEL: .section .debug$S,"rn"
+; X86-LABEL: .section .debug$S,"rnd"
; X86-NEXT: .long 4
; X86-NEXT: .long 242
; X86-NEXT: .long [[F2_END:.*]]-[[F2_START:.*]]
; X64-NEXT: ret
; X64-NEXT: [[END_OF_F:.*]]:
;
-; X64-LABEL: .section .debug$S,"rn"
+; X64-LABEL: .section .debug$S,"rnd"
; X64-NEXT: .long 4
; X64-NEXT: .long 242
; X64-NEXT: .long [[F2_END:.*]]-[[F2_START:.*]]
; X86-NEXT: ret
; X86-NEXT: [[END_OF_F:.*]]:
;
-; X86-LABEL: .section .debug$S,"rn"
+; X86-LABEL: .section .debug$S,"rnd"
; X86-NEXT: .long 4
; X86-NEXT: .long 242
; X86-NEXT: .long [[F2_END:.*]]-[[F2_START:.*]]
; X64-NEXT: ret
; X64-NEXT: [[END_OF_F:.*]]:
;
-; X64-LABEL: .section .debug$S,"rn"
+; X64-LABEL: .section .debug$S,"rnd"
; X64-NEXT: .long 4
; X64-NEXT: .long 242
; X64-NEXT: .long [[F2_END:.*]]-[[F2_START:.*]]
; X86-NEXT: ret
; X86-NEXT: [[END_OF_F:.*]]:
;
-; X86-LABEL: .section .debug$S,"rn"
+; X86-LABEL: .section .debug$S,"rnd"
; X86-NEXT: .long 4
; Line table subsection for x
; X86-NEXT: .long 242
; X64-NEXT: ret
; X64-NEXT: [[END_OF_F:.*]]:
;
-; X64-LABEL: .section .debug$S,"rn"
+; X64-LABEL: .section .debug$S,"rnd"
; X64-NEXT: .long 4
; Line table subsection for x
; X64-NEXT: .long 242
; X86-NEXT: ret
; X86-NEXT: [[END_OF_F:.*]]:
;
-; X86-LABEL: .section .debug$S,"rn"
+; X86-LABEL: .section .debug$S,"rnd"
; X86-NEXT: .long 4
; X86-NEXT: .long 242
; X86-NEXT: .long [[F2_END:.*]]-[[F2_START:.*]]
; X64-NEXT: ret
; X64-NEXT: [[END_OF_F:.*]]:
;
-; X64-LABEL: .section .debug$S,"rn"
+; X64-LABEL: .section .debug$S,"rnd"
; X64-NEXT: .long 4
; X64-NEXT: .long 242
; X64-NEXT: .long [[F2_END:.*]]-[[F2_START:.*]]
; X86-NEXT: [[END_OF_BAR:^L.*]]:{{$}}
; X86-NOT: ret
-; X86-LABEL: .section .debug$S,"rn"
+; X86-LABEL: .section .debug$S,"rnd"
; X86: .secrel32 "?bar@@YAXHZZ"
; X86-NEXT: .secidx "?bar@@YAXHZZ"
; X86: .long 0
; CHECK: .section .debug_info
; RUN: llc -mtriple=i686-pc-win32 -filetype=asm -O0 < %s | FileCheck -check-prefix=WIN32 %s
-; WIN32: .section .debug$S,"rn"
+; WIN32: .section .debug$S,"rnd"
; generated from:
; clang -g -S -emit-llvm test.c -o test.ll
ret i32 0
}
-; WIN32: .section .CRT$XCU,"r"
+; WIN32: .section .CRT$XCU,"rd"
; WIN32: a_global_ctor
-; WIN32: .section .CRT$XTX,"r"
+; WIN32: .section .CRT$XTX,"rd"
; WIN32: a_global_dtor
-; MINGW32: .section .ctors,"w"
+; MINGW32: .section .ctors,"wd"
; MINGW32: a_global_ctor
-; MINGW32: .section .dtors,"w"
+; MINGW32: .section .dtors,"wd"
; MINGW32: a_global_dtor
}\r
\r
; Weak global\r
-; X86: .section .data,"r",discard,_a\r
+; X86: .section .data,"rd",discard,_a\r
; X86: .globl _a\r
; X86: .zero 12\r
;\r
-; X64: .section .data,"r",discard,a\r
+; X64: .section .data,"rd",discard,a\r
; X64: .globl a\r
; X64: .zero 12\r
@a = weak unnamed_addr constant { i32, i32, i32 } { i32 0, i32 0, i32 0}, section ".data"\r
\r
-; X86: .section .tls$,"w",discard,_b\r
+; X86: .section .tls$,"wd",discard,_b\r
; X86: .globl _b\r
; X86: .long 0\r
;\r
-; X64: .section .tls$,"w",discard,b\r
+; X64: .section .tls$,"wd",discard,b\r
; X64: .globl b\r
; X64: .long 0\r
\r