Принудительно проинлайнить мелкую функцию
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 31.07.06 03:44
Оценка:
Проект компилируется компиляторами MS от VC++ 6.0 (версия 12) и от Win2k3 DDK (версия 13.10). В классе есть пара функций-переходников:

  void Lock (void) const { CS.Enter (); }
  void Unlock (void) const { CS.Leave (); }


При включенной оптимизации обе функции, само собой, замечательно инлайнятся. При отключенной (Debug/checked) — не инлайнятся, хоть ты тресни. Добавил __forceinline, вставлял перед этими определениями #pragma optimize ("gt", on), пробовал перебирать параметры оптимизации в прагме — упорно не инлайнит. Понятно, если вставлять прагмы там, где зовутся Lock/Unlock — все будет нормально, но это неприемлемо.

Enter/Leave — обычные (не виртуальные) функции, без рекурсии, CS — ссылка на объект их класса.

Как заставить компилятор инлайнить эти функции при отключенной общей оптимизации?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.