Teknologi Komputer dan Internet > C/C++

[MSVC C++] clang-cl yang kadang fail compiling/linking?

(1/1)

descrates:
sebenarnya ini bug yang agak lucu
yang sampai sekarang belum fixed
mulai dari clang 5 keatas
contohnya kalo compile x64 success
giliran x86 aka 32 bit failed error di <limits>
sebaliknya kadang x86 linking bisa
giliran x64 error

why?

jawabannya ada di source code-nya
ini kaitannya dengan /include/ punya msvc
pada 32 bit code nyaris tidak ada revisi berarti
yang 64 bit cenderung direvisi berkala

SDK MSVC yg bisa handle 90% x64 & x86
cuman SDK 7.1 + msvc 2010/2012 (yg partial)
2013 error x86 + linking problem
2015 error x86 + linking problem
2017 error x86 + linking problem
2019 error x86 + linking problem

solusi?

pakai cmake
buat x64 pakai clang-cl
buat x86 pakai msvc
linkernya msvc (tapi susah juga kalo mau full lto)

descrates:
ada fakta menarik jika clang-cl dicombo dengan icl
ini kaitannya dengan icl lib juga sih contoh libmmt.lib
contoh ketika clang-cl pakai msvc2015 lib (defaultnya SSE2)
tapi ketika implementasi pada icl lib tidak begitu
(SSE2 punya intel tidak terlink dengan baik)

contoh kasus

pada kasus _exp2 misalnya
secara default clang-cl akan linking ke msvc2015 lib
jika lib diganti ke icl lib bisa saja tapi bikin crash
untuk mengubah ke icl lib juga akan susah sekali
yang patternnya cukup panjang -> libm sse2 exp2

solusi?

kita harus edit source dan compile ulang clang-cl

descrates:
ini juga bug yang terbilang aneh, aneh bener
ketika memakai SVML (-fveclib=SVML)
selain linking ke SVML, clang bikin vector juga
hasilnya antar vector akan saling bertabrakan
SVML bentrok dengan vector internal
hal ini membuat aplikasi crash

descrates:
kalo ini bisa dibilang rare bug juga
pada clang 10 alpha bug ini mulai ada
dan clang-cl & lld-link harus "sama versi"
kalau beda versi bakal error
terus juga sekarang forcing ke MSVC
dan sekarang clang-cl 10 + msvc2019
sudah mendekati dengan icl
dari segi performance
clang-cl + msvc2013 = 15x (avg)
clang-cl + msvc2015 = 16x (avg)
clang-cl + msvc2017 = 17x (avg)
clang-cl + msvc2019 = 19x (avg)
clang-cl + icl 17 + msvc2013 = 20x (avg)
icl 17 = 18x (avg)
icl 18 = 19x (avg)
icl 19 = 19x - 20x (avg)
bugnya begini
kondisi ketika LTO + create .debug info
clang-cl create lto.tmp dan oke
tapi waktu linking, lld-link tidak resolve
karena tidak bisa baca reference
jika tidak LTO semua normal
solusi?
belum tahu

descrates:
lanjut ya bugnya
bug ini sebenarnya berkaitan dengan "fail if mismatch" etc
ketika compile secara "fastway" mendadak tidak bisa linking
(dan kelamaan kalau harus masuk cmake)

clang-cl *.cpp

error?

solusinya gunakan 2 langkah

1. clang-cl /c *.cpp
2. lld-link /force *.obj (kalau error di SEH pakai /safeseh:no)

Navigasi

[0] Indeks Pesan

Ke versi lengkap