← All posts tagged llvm

arrowdodger

Кстати, эти кадры сделали забавную штуку — на винде ихний MCJIT тоже работает, несмотря на то, что они эмитят ELF.
Т.е. на выходе получается ELF контейнер, содержащий виндовый код (вызовы Windows API, например) и эта байда работает.

arrowdodger

Ну вот, Intel запилила MC-JIT (JIT, использующий новый фреймворк MC для работы с машинным кодом) для ELF. Апстримят патчи теперь.
Говорят, запилили отладку JIT-кода из GDB.

arrowdodger

AMD заопенсурсили AMDIL бэкэнд к LLVM. Он, правда, для 2.9, но они обещают в скором времени допилить его до транка и закоммитить в репозиторий.
Другая проблема — "LLVM-IR that isn’t generated from AMD’s OpenCL frontend does not produce any AMDIL". Не уверен точно почему.

arrowdodger

Ну вот, libc++ и libcxxrt закоммичены в HEAD ветку фряхи. Сейчас, правда, они ни для чего не юзаются и билдятся только при наличии специального кноба.
Автор подумывает о перепиле базового GCC, чтобы он юзал libcxxrt вместо GNU'шной libsupc++. Это в будущем позволит избежать проблем с ABI при переходе на новую стандартную библиотеку С++.
Олсо, в десятой фряхе планируется выпилить как GCC, так и его libstdc++.

arrowdodger

Ну и магия эти компиляторы.
Мужик разработал мудреную оптимизацию (патч на 92кб), прогнал тесты, везде прирост производительности, кроме одного теста. Сидят теперь в рассылке, рассуждают отчего. Вольный перевод:
"В проблемном базовом блоке есть независимые loads и stores. Aliasing
analysis позволяет выявить, что они не относятся к одной и той же области памяти.
Однако, некоторые расчет смещений, используемых в этих loads и stores
оптимизируются векторизатором (оптимизацией, разработанной мужиком).
Когда эта фигня случается aliasing analysis теряет возможность доказать, что
эти доступы к памяти независимы и происходят КРОВЬКИШКИ."

Ну скажите, не магия ли?

arrowdodger

// In newer versions of STP, a memory management mechanism has been
// introduced that automatically invalidates certain C interface
// pointers at vc_Destroy time.

FUUUUUUUUU~, я дебажил это два часа, пока не прочитал коммент.

arrowdodger

В транк закоммитили первый патч проекта Address Sanitizer. Это что-то вроде -fstack-protector, только какой-то продвинутый. На очереди рантайм и патч для кланга.

arrowdodger

bool rewriteInstructionForSpills(const LiveInterval &li, const VNInfo *VNI, bool TrySplit, SlotIndex index, SlotIndex end, MachineInstr *MI, MachineInstr *OrigDefMI, MachineInstr DefMI, unsigned Slot, int LdSlot, bool isLoad, bool isLoadSS, bool DefIsReMat, bool CanDelete, VirtRegMap &vrm, const TargetRegisterClass rc, SmallVector<int, 4> &ReMatIds, const MachineLoopInfo loopInfo, unsigned &NewVReg, unsigned ImpUse, bool &HasDef, bool &HasUse, DenseMap<unsigned,unsigned> &MBBVRegsMap, std::vector<LiveInterval> &NewLIs);
К счастью, эту байду уже выпилили после замены "лишь бы работал" инструкшн шедулера на замудренный "greedy".