Неопределенность правил GCC __restritce__C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Неопределенность правил GCC __restritce__

Сообщение Anonymous »

Я не уверен, что передача __Restrict __ указатель на другую функцию всегда нарушает правила ограничения псевдонима (при условии, что другая функция читает или записывается на нее) или если это более тонкая
Я знаю, что это не стандартный C ++ и вместо этого расширение C99, которое поддерживает GCC. Документация GCC на самом деле мало что освещает мой вопрос: https://gcc.gnu.org/onlinedocs/gcc/rest ... nters.html
Говоря о c с C99): https://en.cppreference.com/w/c/language/restrict
Примечательно, что эталонная ссылка CPP Состояния: < /p>

во время каждого выполнения блока, в котором ограниченный указатель P
объявляется (обычно Каждое выполнение корпуса функции, в котором P является параметом функции
), если какой -то объект, который доступен через p
(прямо или косвенно), изменен, тогда все доступные
к этому объекту (как считывает, так и записывает) в этом блоке должен возникнуть
через P (прямо или косвенно), в противном случае поведение
не определен: < /p>
< /blockquote>
также гласит: < /p>

Назначение из одного ограниченного указателя к другому не определено
поведение, за исключением случаев, когда он назначен из указателя к объекту в некотором
наружном блоке к указателю в каком -то внутреннем блоке (включая использование аргумента ограниченного указателя
при вызове функции с ограниченным параметром
pointer) или при возвращении из функции ( И в противном случае
Когда блок оттока закончился): < /p>
< /blockquote>
Ниже я сделал некоторые код, чтобы охватить некоторые случаи, я могу Представьте себе: < /p>

Код: Выделить всё

#include 
#include 

class Foo {
public:
void func1(char* __restrict__ ptr1) {
// 1. Does passing ptr1 to another method break the rules of restrict?
// I don't think it does because func2 only reads in its own scope
func2(ptr1);

// func3 writes
func3(ptr1);

ptr1 += 3;

// EDITED: 4. Is this read guaranteed to see the change from func2?
std::cout 

Подробнее здесь: [url]https://stackoverflow.com/questions/79459973/uncertainty-of-gcc-restrict-rules[/url]
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»