Вопросы по теме 'compiler-optimization'

изменяемый квалификатор и переупорядочение компилятора
Компилятор не может исключить или изменить порядок чтения / записи в переменные с указанием volatile . Но как насчет случаев, когда присутствуют другие переменные, которые могут или не могут быть volatile -квалифицированными? Сценарий 1...
5798 просмотров
schedule 05.10.2023

Короткое замыкание логических операндов без побочных эффектов
Для вознаграждения: Как можно отключить это поведение в каждом конкретном случае, не отключая и не снижая уровень оптимизации? Следующее условное выражение было скомпилировано на MinGW GCC 3.4.5, где a — это тип signed long , а m — тип...
913 просмотров

оптимизация компилятором возвращаемого значения в VS 2010
используя VS 2010 с полной оптимизацией /Ox, посмотрите на следующие два вызова функций: static string test1(const string& input) { return input; } static void test2(const string& input, string& output) { output = input; }...
667 просмотров

Оптимизация компилятора, потокобезопасность?
У меня вопрос относительно оптимизаций, которые потенциально может сделать компилятор. Приведенный ниже код говорит сам за себя (это пример): typedef struct test { short i; } s_test; int function1(char *bin) { s_test foo;...
891 просмотров

Промежуточная генерация кода для моего компилятора Fortran: DAG или четверки
Я пишу мини-компилятор Fortran с использованием Flex и Bison. На данный момент я закончил лексический и синтаксический анализ. Я занимаюсь семантическим анализом проверки типов и теперь должен выбрать IR. Моя целевая машина - MIPS. Поэтому я хочу...
464 просмотров

Существует ли эквивалент флага -ffast-math для компилятора Visual Studio C++?
Я работаю с компилятором C++ по умолчанию (думаю, он называется «компилятор Visual Studio C++»), который поставляется с Visual Studio 2013 с флагом /Ox ( Полная оптимизация ). Из-за побочных эффектов с плавающей запятой я должен отключить флаг...
5923 просмотров

Возможно ли (как) дать директивы компилятору внутри кода c/c++
Я хотел бы, чтобы мой исходный код давал определенные директивы компилятора (такие как удаление символов, оптимизация скорости, размеры кадров стека и т. д.). Точно так же, как #pragma comment(lib, "Mylibrary.lib") дает команду компоновщику...
139 просмотров
schedule 19.08.2022

Расширение компилятора для оценки сложной функции (с известными входными значениями) во время компиляции, вне досягаемости `constexpr`
Взгляните на этот пример . Попытка использовать constexpr для получения оценки времени компиляции будет крайне сложной, если не невозможной. Однако при вызове функции все аргументы известны во время компиляции. Теоретически (при наличии...
238 просмотров
schedule 04.07.2022

Большинство компиляторов преобразуют % 2 в битовое сравнение? Это действительно быстрее?
В программировании часто нужно проверять, является ли число нечетным или четным. Для этого мы обычно используем: n % 2 == 0 Однако я понимаю, что оператор '%' фактически выполняет деление и возвращает остаток; поэтому в случае выше было...
395 просмотров

Есть ли способ отключить оптимизацию циклов как при компиляции C++, так и при компиляции Rust?
Я ищу флаг компилятора, который позволит мне предотвратить оптимизацию компилятором цикла в коде следующим образом: void func() { std::unique_ptr<int> up1(new int(0)), up2; up2 = move(up1); for(int i = 0; i < 1000000000; i++)...
294 просмотров
schedule 26.01.2024

Уменьшение размера отладочных символов (исполняемый файл раздувается до 4 ГБ)
Таким образом, основная проблема заключается в том, что размер моего встроенного исполняемого файла составляет 4 ГБ с включенными символами отладки (от 75 МБ до 300 МБ без символов отладки и с различными уровнями оптимизации). Как я могу...
2378 просмотров

C# Псевдоним атрибута (например, встроенный намек)
Некоторое время я хотел сократить "встроенный" атрибут (no- using -pollution) от абсурдности: [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)] до, ну, [InlineHint] или...
826 просмотров

GCC - неверная оптимизация при использовании сигналов POSIX
#include <stdlib.h> #include <stdio.h> #include <signal.h> int current = 0; void sigint_handle(int sig) { printf("sigint: %d\n", current); } int main() { sigset(SIGINT, sigint_handle); while (1) { current++;...
53 просмотров
schedule 15.03.2024

Как заставить IAR использовать нужные инструкции Cortex-M0+ (для этой функции оптимизация будет отключена)
Мне нужно заставить IAR tp использовать определенную инструкцию Cortex-M0+ в какой-то части моего кода при написании кода на C. Пожалуйста, не предлагайте чистые функции ассемблера или встроенный ассемблер и т. д. Мне удалось сделать это для 51...
162 просмотров

Почему p1007r0 std::assume_aligned устраняет необходимость в эпилоге?
Мое понимание заключается в том, что векторизация кода работает примерно так: Для данных в массиве ниже первого адреса в массиве, который кратен 128 (или 256, или любым другим инструкциям SIMD), выполняется медленная поэлементная обработка....
296 просмотров

Неверное двойное преобразование компилятором AIX 13.1.3 для c++
Мы приводим данные из массива char* к функции do double, как в следующей функции: double getDouble(const char* szData, const size_t dataLength) { double res = 0; if(dataLength == 8) { ub8 doubleData = *(ub8*)(szData);...
123 просмотров
schedule 20.10.2023

неспособность оптимизировать, казалось бы, очевидный инвариант цикла (но квалификатор volatile сделал волшебство)
Ссылка на Godbolt: https://godbolt.org/g/Hv6MAL typedef int cell; cell y; const cell *phys_addr = (const cell*)0x12340; int main() { for (int i = 0; i < 20; i++) { for (int j = 0; j < 30; j++) { for (int k = 0; k...
110 просмотров

Почему это мертвое хранилище unique_ptr нельзя устранить?
#include <memory> #include <vector> using namespace std; vector<unique_ptr<int>> e; void f(unique_ptr<int> u) { e.emplace_back(move(u)); } Для Clang и GCC , приведенный выше фрагмент кода генерирует что-то...
127 просмотров
schedule 20.03.2024

В GCC, что такое оптимизация дерева по сравнению с оптимизацией RTL?
Когда я сообщаю об ошибке в GCC по поводу пропущенной оптимизации, я всегда не понимаю, следует ли мне подавать ее в разделе «rtl-оптимизация» или «оптимизация дерева». Я просмотрел страницу компонентов на GCC bugzilla, и это не так. там толком не...
125 просмотров
schedule 09.11.2022

Как убедиться, что часть кода оптимизирована?
tl;dr : можно ли как-то гарантировать (например, написав модульный тест), что некоторые вещи будут оптимизированы, например. целые петли? Обычный подход, чтобы убедиться, что что-то не включено в производственную сборку, состоит в том, чтобы...
533 просмотров