Index: COFF/Driver.cpp =================================================================== --- COFF/Driver.cpp +++ COFF/Driver.cpp @@ -434,14 +434,16 @@ if (findUnderscoreMangle("wWinMain")) { if (!findUnderscoreMangle("WinMain")) return mangle("wWinMainCRTStartup"); - warn("found both wWinMain and WinMain; using latter"); + if (!Config->MinGW) + warn("found both wWinMain and WinMain; using latter"); } return mangle("WinMainCRTStartup"); } if (findUnderscoreMangle("wmain")) { if (!findUnderscoreMangle("main")) return mangle("wmainCRTStartup"); - warn("found both wmain and main; using latter"); + if (!Config->MinGW) + warn("found both wmain and main; using latter"); } return mangle("mainCRTStartup"); } Index: test/COFF/entry-inference5.s =================================================================== --- /dev/null +++ test/COFF/entry-inference5.s @@ -0,0 +1,22 @@ +# REQUIRES: x86 +# RUN: echo -e ".text\n.globl otherfunc\notherfunc:\nret" > %t-lib1.s +# RUN: echo -e ".text\n.globl wmain\nwmain:\nret" > %t-lib2.s +# RUN: llvm-mc -triple=x86_64-windows-gnu %s -filetype=obj -o %t.o +# RUN: llvm-mc -triple=x86_64-windows-gnu %t-lib1.s -filetype=obj -o %t-lib1.o +# RUN: llvm-mc -triple=x86_64-windows-gnu %t-lib2.s -filetype=obj -o %t-lib2.o +# RUN: llvm-ar crs %t-lib.a %t-lib1.o %t-lib2.o + +# RUN: lld-link -lldmingw %t.o %t-lib.a -out:%t.exe 2>&1 | FileCheck -allow-empty %s + +# Check that this doesn't print any warnings. +# CHECK-NOT: found both wmain and main + + .text + .globl main + .globl mainCRTStartup +main: + call otherfunc + ret +mainCRTStartup: + call main + ret