Запитання з тегом «llvm-codegen»

5
Чи допускає стандарт C ++, щоб неініціалізований bool збів програму?
Я знаю, що «невизначена поведінка» в C ++ може в значній мірі дозволити компілятору робити все, що завгодно. Однак у мене стався збій, який мене здивував, оскільки я припускав, що код досить безпечний. У цьому випадку справжня проблема траплялася лише на певній платформі з використанням конкретного компілятора, і лише за …

1
Чому компілятор Rust не оптимізує код, припускаючи, що два змінні посилання не можуть мати псевдонім?
Наскільки я знаю, псевдонім посилання / вказівника може перешкоджати можливості компілятора генерувати оптимізований код, оскільки вони повинні забезпечувати, щоб згенерований бінарний файл поводився правильно у випадку, коли два посилання / покажчики справді псевдоніми. Наприклад, у наведеному нижче коді С void adds(int *a, int *b) { *a += *b; *a += …

2
Чому під час циклічного перегляду масиву з 240 і більше елементами великий вплив на продуктивність?
Під час запуску циклу суми над масивом в Rust, я помітив величезний спад продуктивності, коли CAPACITY> = 240. CAPACITY= 239 приблизно в 80 разів швидше. Чи є спеціальна оптимізація компіляції, яку Rust робить для "коротких" масивів? Укладено з rustc -C opt-level=3. use std::time::Instant; const CAPACITY: usize = 240; const IN_LOOPS: …

4
Як працює 128-розрядний цілий `i128` Руста на 64-бітній системі?
Іржа має 128-бітні цілі числа, вони позначаються типом даних i128(і u128для непідписаних вкладишів): let a: i128 = 170141183460469231731687303715884105727; Як Rust змушує ці i128значення працювати в 64-бітній системі; наприклад, як це робить арифметику на них? Оскільки, наскільки я знаю, значення не може вміститися в одному реєстрі процесора x86-64, чи компілятор якось …

1
Коли слід використовувати inline в Rust?
Іржа має вбудований атрибут, який можна використовувати в одному з цих трьох ароматів: #[inline] #[inline(always)] #[inline(never)] Коли їх слід застосовувати? У посиланні Rust ми бачимо розділ вбудованих атрибутів, в якому сказано Компілятор автоматично вбудовує функції на основі внутрішньої евристики. Неправильно вбудовані функції можуть насправді зробити програму повільнішою, тому їй слід …

3
Чому LLVM виділяє надлишкову змінну?
Ось простий файл C із визначенням enum та mainфункцією: enum days {MON, TUE, WED, THU}; int main() { enum days d; d = WED; return 0; } Він транслюється в наступний ІК LLVM: define dso_local i32 @main() #0 { %1 = alloca i32, align 4 %2 = alloca i32, align …
9 c  llvm  llvm-codegen 
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.