Simplify codegen and debug info generation for block context parameters.
authorAdrian Prantl <aprantl@apple.com>
Thu, 26 Oct 2017 18:16:05 +0000 (18:16 +0000)
committerAdrian Prantl <aprantl@apple.com>
Thu, 26 Oct 2017 18:16:05 +0000 (18:16 +0000)
commit1c45b09add3b9a254af8b85c9cbc37f16fc34f92
treeb0792be31450825433ae8c82590f8c53512aa34f
parent9b4e32785ab10c28240634aa0a2a2f5100704d6f
Simplify codegen and debug info generation for block context parameters.

The exisiting code goes out of its way to put block parameters into an
alloca only at -O0, and then describes the funciton argument with a
dbg.declare, which is undocumented in the LLVM-CFE contract and does
not actually behave as intended after LLVM r642022.

This patch just generates the alloca unconditionally, the mem2reg pass
will eliminate it at -O1 and up anyway and points the dbg.declare to
the alloca as intended (which mem2reg will then correctly rewrite into
a dbg.value).

rdar://problem/35043980

Differential Revision: https://reviews.llvm.org/D39305

llvm-svn: 316684
clang/lib/CodeGen/CGBlocks.cpp
clang/lib/CodeGen/CGDebugInfo.cpp
clang/lib/CodeGen/CGDebugInfo.h
clang/test/CodeGen/debug-info-block-vars.c [new file with mode: 0644]
clang/test/CodeGenObjC/debug-info-block-captured-self.m [deleted file]