Учёт регистра имён массивов #15

Closed
opened 2023-11-07 11:13:48 +00:00 by xnpster · 1 comment
Collaborator

В коде

      program example
      integer:: i, j, k
      integer::  P, Q, F
      integer, dimension(100):: E, F
!$omp threadprivate(F) 
      
      do I = 3, 10
            E(I) = 0
      enddo

      do I = 3, 10
            F(1) = 0
            E(I) = F(1)
      enddo

      end

массив F не распознаётся как threadprivate из-за того, что после парсинга директивы в множество приватных массивов попадает имя "F", а SgSymbol*->identifier() для этого массива возвращает "f" для этого массива:

loop_analyzer.cpp: 2619

    if (it->second.find(toFind->identifier()) != it->second.end())
        return true;
    else
        return false;

toFind->identifier() = "f"
it->second = { "F" }

Если в исходной программе переименовать F на f, то парсинг пройдёт корректно

В коде ``` program example integer:: i, j, k integer:: P, Q, F integer, dimension(100):: E, F !$omp threadprivate(F) do I = 3, 10 E(I) = 0 enddo do I = 3, 10 F(1) = 0 E(I) = F(1) enddo end ``` массив F не распознаётся как threadprivate из-за того, что после парсинга директивы в множество приватных массивов попадает имя "F", а SgSymbol*->identifier() для этого массива возвращает "f" для этого массива: ``` loop_analyzer.cpp: 2619 if (it->second.find(toFind->identifier()) != it->second.end()) return true; else return false; ``` toFind->identifier() = "f" it->second = { "F" } Если в исходной программе переименовать F на f, то парсинг пройдёт корректно
Owner

понятно, не учел этот факт =) конвертер переводит все в нижний регистр, а комментарии остаются такими, как были. Добавлю перевод в нижний регистр директив omp.

понятно, не учел этот факт =) конвертер переводит все в нижний регистр, а комментарии остаются такими, как были. Добавлю перевод в нижний регистр директив omp.
Sign in to join this conversation.
No Label
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Alexander_KS/SAPFOR#15