Вы что-то странное обсуждали. Алиасинг это про разные типы в одной области памяти, а объекта типа void в памяти быть не может. Наличие void* не будет само по себе ломать оптимизации чтения/записи просто потому, что через void* они невозможны
То есть, алиазинг становится возможным, только когда мы начинаем работать с этой памятью через void*, а для этого обязательно (!) придётся его во что-то скастовать. Если это char* в memcpy — алиасимся со всем/перечитываем всё, если это T* — страдают только объекты T. Правильно?