[PATCH] D144016: [Sema] Relax a failing assertion in TransformBlockExpr

Aaron Ballman via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Wed Feb 15 12:07:28 PST 2023


aaron.ballman added a comment.

Precommit CI found an issue on Windows that should be addressed:

  FAIL: Clang :: CodeGenCXX/cxx1z-constexpr-if.cpp (7014 of 17903)
  ******************** TEST 'Clang :: CodeGenCXX/cxx1z-constexpr-if.cpp' FAILED ********************
  Script:
  --
  : 'RUN: at line 1';   c:\ws\w32-1\llvm-project\premerge-checks\build\bin\clang.exe -cc1 -internal-isystem c:\ws\w32-1\llvm-project\premerge-checks\build\lib\clang\17\include -nostdsysteminc -std=c++1z C:\ws\w32-1\llvm-project\premerge-checks\clang\test\CodeGenCXX\cxx1z-constexpr-if.cpp -emit-llvm -fblocks -o - | c:\ws\w32-1\llvm-project\premerge-checks\build\bin\filecheck.exe C:\ws\w32-1\llvm-project\premerge-checks\clang\test\CodeGenCXX\cxx1z-constexpr-if.cpp --implicit-check-not=should_not_be_used
  --
  Exit Code: 1
  
  Command Output (stdout):
  --
  $ ":" "RUN: at line 1"
  $ "c:\ws\w32-1\llvm-project\premerge-checks\build\bin\clang.exe" "-cc1" "-internal-isystem" "c:\ws\w32-1\llvm-project\premerge-checks\build\lib\clang\17\include" "-nostdsysteminc" "-std=c++1z" "C:\ws\w32-1\llvm-project\premerge-checks\clang\test\CodeGenCXX\cxx1z-constexpr-if.cpp" "-emit-llvm" "-fblocks" "-o" "-"
  $ "c:\ws\w32-1\llvm-project\premerge-checks\build\bin\filecheck.exe" "C:\ws\w32-1\llvm-project\premerge-checks\clang\test\CodeGenCXX\cxx1z-constexpr-if.cpp" "--implicit-check-not=should_not_be_used"
  # command stderr:
  C:\ws\w32-1\llvm-project\premerge-checks\clang\test\CodeGenCXX\cxx1z-constexpr-if.cpp:50:17: error: CHECK-LABEL: expected string not found in input
  // CHECK-LABEL: define internal void @___ZN16BlockThisCapture1S1mILb0EEEvv_block_invoke(
                  ^
  <stdin>:1:1: note: scanning from here
  ; ModuleID = 'C:\ws\w32-1\llvm-project\premerge-checks\clang\test\CodeGenCXX\cxx1z-constexpr-if.cpp'
  ^
  <stdin>:53:1: note: possible intended match here
  define internal void @"__??$m@$0A@@S at BlockThisCapture@@QEAAXXZ_block_invoke"(ptr noundef %.block_descriptor) #3 {
  ^
  
  Input file: <stdin>
  Check file: C:\ws\w32-1\llvm-project\premerge-checks\clang\test\CodeGenCXX\cxx1z-constexpr-if.cpp
  
  -dump-input=help explains the following input dump.
  
  Input was:
  <<<<<<
              1: ; ModuleID = 'C:\ws\w32-1\llvm-project\premerge-checks\clang\test\CodeGenCXX\cxx1z-constexpr-if.cpp' 
  label:50'0     X~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ error: no match found
              2: source_filename = "C:\\ws\\w32-1\\llvm-project\\premerge-checks\\clang\\test\\CodeGenCXX\\cxx1z-constexpr-if.cpp" 
  label:50'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
              3: target datalayout = "e-m:w-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" 
  label:50'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
              4: target triple = "x86_64-pc-windows-msvc" 
  label:50'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
              5:  
  label:50'0     ~
              6: %"struct.BlockThisCapture::S" = type { i8 } 
  label:50'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
              .
              .
              .
             48:  call void %0(ptr noundef @__block_literal_global) 
  label:50'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
             49:  ret void 
  label:50'0     ~~~~~~~~~~
             50: } 
  label:50'0     ~~
             51:  
  label:50'0     ~
             52: ; Function Attrs: noinline nounwind optnone 
  label:50'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
             53: define internal void @"__??$m@$0A@@S at BlockThisCapture@@QEAAXXZ_block_invoke"(ptr noundef %.block_descriptor) #3 { 
  label:50'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  label:50'1     ?                                                                                                                  possible intended match
             54: entry: 
  label:50'0     ~~~~~~~
             55:  %.block_descriptor.addr = alloca ptr, align 8 
  label:50'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
             56:  %block.addr = alloca ptr, align 8 
  label:50'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
             57:  store ptr %.block_descriptor, ptr %.block_descriptor.addr, align 8 
  label:50'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
             58:  store ptr %.block_descriptor, ptr %block.addr, align 8 
  label:50'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
              .
              .
              .
  >>>>>>
  
  error: command failed with exit status: 1

It looks like you may need a target triple to ensure the mangled names are consistent.

Also, can you add a release note for the fix?


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D144016/new/

https://reviews.llvm.org/D144016



More information about the cfe-commits mailing list