[PATCH] D43783: [OpenCL] Remove block invoke function from emitted block literal struct

Sven van Haastregt via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Fri Aug 17 09:26:07 PDT 2018


svenvh added a comment.

Sorry for digging up an old commit...

Apparently this broke block arguments, e.g. the following test case:

  int foo(int (^ bl)(void)) {
    return bl();
  }
  
  int get21() {
    return foo(^{return 21;});
  }
  
  int get42() {
    return foo(^{return 42;});
  }

In particular, the VarDecl that `getBlockExpr()` sees doesn't have an initializer when the called block comes from an argument (causing clang to crash).


Repository:
  rC Clang

https://reviews.llvm.org/D43783





More information about the cfe-commits mailing list