История изменений
Исправление
kirk_johnson,
(текущая версия)
:
Я именно об этом и сказал, что можно изменив встроенный в компилятор метод работы с va* с простейших манипуляций до функций со вспомогательными структурами поменять принцип работы передачи неопределенного количества аргументов. Возможно в результате будет работать всё и быстрее. Ну и что?
Во-первых, ты сказал не это:
Там говорится, что если бы переписать va* и стандарт языка
Во-вторых, ничего переписывать не нужно, потому что эта структура ТАМ И ТАК ИСПОЛЬЗУЕТСЯ (в clang конечно же, в llvm этого просто не было).
А вот и алгоритм:
+ // Decide which area this value should be read from.
+ // TODO: Implement the AMD64 ABI in its entirety. This simple
+ // selection mechanism works only for the basic types.
+ if (ArgVT == MVT::f80) {
+ llvm_unreachable("va_arg for f80 not yet implemented");
+ } else if (ArgVT.isFloatingPoint() && ArgSize <= 16 /*bytes*/) {
+ ArgMode = 2; // Argument passed in XMM register. Use fp_offset.
+ } else if (ArgVT.isInteger() && ArgSize <= 32 /*bytes*/) {
+ ArgMode = 1; // Argument passed in GPR64 register(s). Use gp_offset.
+ } else {
+ llvm_unreachable("Unhandled argument type in LowerVAARG");
+ }
Исправление
kirk_johnson,
:
Я именно об этом и сказал, что можно изменив встроенный в компилятор метод работы с va* с простейших манипуляций до функций со вспомогательными структурами поменять принцип работы передачи неопределенного количества аргументов. Возможно в результате будет работать всё и быстрее. Ну и что?
Во-первых, ты сказал не это:
Там говорится, что если бы переписать va* и стандарт языка
Во-вторых, ничего переписывать не нужно, потому что эта структура ТАМ И ТАК ИСПОЛЬЗУЕТСЯ (в clang конечно же, в llvm этого просто не было).
Исправление
kirk_johnson,
:
Я именно об этом и сказал, что можно изменив встроенный в компилятор метод работы с va* с простейших манипуляций до функций со вспомогательными структурами поменять принцип работы передачи неопределенного количества аргументов. Возможно в результате будет работать всё и быстрее. Ну и что?
Во-первых, ты сказал не это:
Там говорится, что если бы переписать va* и стандарт языка
Во-вторых, ничего переписывать не нужно, потому что эта структура ТАМ И ТАК ИСПОЛЬЗУЕТСЯ (В clang конечно же, в llvm этого просто не было).
Исходная версия
kirk_johnson,
:
Я именно об этом и сказал, что можно изменив встроенный в компилятор метод работы с va* с простейших манипуляций до функций со вспомогательными структурами поменять принцип работы передачи неопределенного количества аргументов. Возможно в результате будет работать всё и быстрее. Ну и что?
Во-первых, ты сказал не это:
Там говорится, что если бы переписать va* и стандарт языка
Во-вторых, ничего переписывать не нужно, потому что эта структура ТАМ И ТАК ИСПОЛЬЗУЕТСЯ :D