Я реализую Jit-компилятор с libgccjit и застрял при попытке получить результат двоичной операции.
Проблема не в результате, а в объявлении типа результата.
У меня два gcc_jit_rvalue
и хотят выполнить простую бинарную операцию над ними.
Эти два значения могут иметь любой тип.
Для четвертого параметра gcc_jit_context_new_binary_op
Я должен указать тип результата.
Учитывая, что я не знаю типы значений, но могу получить gcc_jit_type*
из них, как я могу узнать стандартный тип результата C (тип результата, который GCC будет использовать при компиляции выражения C a + b
) выражения?
Я знаю, что могу написать кучу if
а также else
или же switch
заявления, чтобы пройти каждую чертову комбинацию целого числа и числа с плавающей запятой и вернуть то, что ожидалось бы в C, но это много печатать я действительно не хочу делать.
Есть ли какой-нибудь более простой способ найти тип результата, который GCC использовал бы, если бы он компилировал код C?
Задача ещё не решена.
Других решений пока нет …