All streams
Search
Write a publication
Pull to refresh
286
0
Владимир @32bit_me

Программист

Send message
Это время сборки без Clang, как я понимаю?
У вас в настройках CMake выставлен флаг INCLUDE_LLVM_TOOLS? Может быть, из-за этого не собирает lli?
Я собираю gcc, но под Linux. Под Windows я также собирал, но в Visual Studio.
Всё же попробуйте gcc, должно собираться.
Вы можете скачать бинарники и исходники здесь: http://releases.llvm.org/download.html#5.0.0
lli нужен для интерпретации промежуточного кода LLVM IR. Вы можете компилировать его утилитой llc и потом запускать, результат будет тем же самым
Извините, это отвратительно.
Статья, возможно, интересная, но из-за картинок пришлось закрыть, не читая.
По моему опыту, наоборот. Если говоришь, что у тебя есть другие предложения, это сильно стимулирует потенциального работодателя.
Вы бы не так по-хамски общались, можно было бы поговорить на эту тему.
1. Нет, не путаю.
2. Компилятор, внезапно, имеет абсолютно детерминированный алгоритм оптимизации, который в каждом конкретном случае приведёт к конкретному поведению.
3. На эту тему можно долго и много рассуждать, скоро напишу ещё, кстати.
Джедай настоящий темной стороны Силы UB избегать должен.
Это оружие джедая. Не такое грубое и беспорядочное, как бластер, но элегантное оружие более цивилизованной эпохи.

Это про С, и во многом, про С++. UB — плата за скорость и эффективность.
Для использования особенностей конкретного процессора есть как минимум два «законных» способа:
1) ассемблерные вставки (куда оптимизатор не лезет)
2) intrinsic-функции, которые для этого и существуют.
Всё это делает не clang, это делает opt, и вы можете отключить любой из проходов оптимизации. Или написать свой. По умолчанию всё работает так, как работает, и здесь бессмысленно возмущаться, потому что стандарты и алгоритмы оптимизации от этого не изменятся.
В следующей части как раз написано, в чём тут сложность.
Если вам нужно сделать запись в массив, расположенный по адресу 0, объявите его как volatile. Компилятор не оптимизирует доступ к volatile-переменным.
> об указателе null, а не 0
#define NULL ((void *) 0)

>ИМХО, но тут явно недоработка компилятора.
Нет.
В соответствии со стандартом, разыменование нулевого указателя является UB.
Она избыточна, если присходит после разыменования указателя. То есть компилятор считает, что если указатель уже успешно разыменован, он не может быть нулевым.

Information

Rating
Does not participate
Date of birth
Registered
Activity