[flang][openacc] Fix unparsing of combined construct (bug 47659)
This patch fixes the bug report in https://bugs.llvm.org/show_bug.cgi?id=47659 Reviewed By: sameeranjoshi Differential Revision: https://reviews.llvm.org/D88597
This commit is contained in:
		
							parent
							
								
									e20f459229
								
							
						
					
					
						commit
						91b49fc257
					
				| 
						 | 
				
			
			@ -1903,8 +1903,8 @@ public:
 | 
			
		|||
    EndOpenACC();
 | 
			
		||||
    Walk(std::get<std::optional<DoConstruct>>(x.t));
 | 
			
		||||
    BeginOpenACC();
 | 
			
		||||
    Walk("!$ACC END ", std::get<std::optional<DoConstruct>>(x.t));
 | 
			
		||||
    Put("\n");
 | 
			
		||||
    Walk("!$ACC END ", std::get<std::optional<AccEndCombinedDirective>>(x.t),
 | 
			
		||||
        "\n");
 | 
			
		||||
    EndOpenACC();
 | 
			
		||||
  }
 | 
			
		||||
  void Unparse(const OpenACCRoutineConstruct &x) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,19 @@
 | 
			
		|||
! RUN: %f18 -fopenacc -funparse %s | FileCheck %s
 | 
			
		||||
 | 
			
		||||
! Test unparse does not crash with OpenACC directives.
 | 
			
		||||
 | 
			
		||||
! Test bug 47659
 | 
			
		||||
program bug47659
 | 
			
		||||
  integer :: i, j
 | 
			
		||||
  label1: do i = 1, 10
 | 
			
		||||
    !$acc parallel loop
 | 
			
		||||
    do j = 1, 10
 | 
			
		||||
      if (j == 2) then
 | 
			
		||||
        exit label1
 | 
			
		||||
      end if
 | 
			
		||||
    end do
 | 
			
		||||
  end do label1
 | 
			
		||||
end program
 | 
			
		||||
 | 
			
		||||
!CHECK-LABEL: PROGRAM bug47659
 | 
			
		||||
!CHECK: !$ACC PARALLEL LOOP
 | 
			
		||||
		Loading…
	
		Reference in New Issue