rjmccall added a comment.
SGTM, thanks!
Repository:
rC Clang
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D57797/new/
https://reviews.llvm.org/D57797
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/
This revision was not accepted when it landed; it landed in state "Needs
Review".
This revision was automatically updated to reflect the committed changes.
Closed by commit rC353495: Variable auto-init: fix __block initialization
(authored by jfb, committed by ).
Changed prior to commit:
https
jfb updated this revision to Diff 185896.
jfb added a comment.
- Remove whitespace changes.
Repository:
rC Clang
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D57797/new/
https://reviews.llvm.org/D57797
Files:
lib/CodeGen/CGDecl.cpp
test/CodeGenCXX/trivial-auto-var-init.cpp
Ind
jfb marked an inline comment as done.
jfb added inline comments.
Comment at: lib/CodeGen/CGDecl.cpp:1642
CharUnits Size = getContext().getTypeSizeInChars(type);
if (!Size.isZero()) {
jfb wrote:
> rjmccall wrote:
> > Does this check handle flexible arr
jfb updated this revision to Diff 185892.
jfb marked 4 inline comments as done.
jfb added a comment.
- Simplify patch greatly.
Repository:
rC Clang
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D57797/new/
https://reviews.llvm.org/D57797
Files:
lib/CodeGen/CGDecl.cpp
test/CodeGen
rjmccall added inline comments.
Comment at: lib/CodeGen/CGDecl.cpp:1726
+emitByrefStructureInit(emission);
+ }
+
jfb wrote:
> Note that we still want this to be pulled out in this way because
> `emitByrefStructureInit` emits the call to the initializer (in
jfb marked 2 inline comments as done.
jfb added inline comments.
Comment at: lib/CodeGen/CGDecl.cpp:1605
-emitByrefStructureInit(emission);
-
// Initialize the variable here if it doesn't have a initializer and it is a
rjmccall wrote:
> Are these changes s
jfb marked 2 inline comments as done.
jfb added inline comments.
Comment at: lib/CodeGen/CGDecl.cpp:1726
+emitByrefStructureInit(emission);
+ }
+
Note that we still want this to be pulled out in this way because
`emitByrefStructureInit` emits the call to th
rjmccall added inline comments.
Comment at: lib/CodeGen/CGDecl.cpp:1605
-emitByrefStructureInit(emission);
-
// Initialize the variable here if it doesn't have a initializer and it is a
Are these changes still needed?
Comment at: lib/Cod
jfb updated this revision to Diff 185883.
jfb added a comment.
- Only initialize __block's storage.
Repository:
rC Clang
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D57797/new/
https://reviews.llvm.org/D57797
Files:
lib/CodeGen/CGDecl.cpp
test/CodeGenCXX/trivial-auto-var-init.c
jfb marked 3 inline comments as done.
jfb added inline comments.
Comment at: lib/CodeGen/CGDecl.cpp:1643
CharUnits Size = getContext().getTypeSizeInChars(type);
if (!Size.isZero()) {
switch (trivialAutoVarInit) {
rjmccall wrote:
> jfb wrote:
> >
rjmccall added inline comments.
Comment at: lib/CodeGen/CGDecl.cpp:1643
CharUnits Size = getContext().getTypeSizeInChars(type);
if (!Size.isZero()) {
switch (trivialAutoVarInit) {
jfb wrote:
> rjmccall wrote:
> > Can't you just drill to the byref
jfb marked 5 inline comments as done.
jfb added inline comments.
Comment at: lib/CodeGen/CGDecl.cpp:1642
CharUnits Size = getContext().getTypeSizeInChars(type);
if (!Size.isZero()) {
rjmccall wrote:
> Does this check handle flexible arrays on zero-siz
rjmccall added inline comments.
Comment at: lib/CodeGen/CGDecl.cpp:1611
drillIntoBlockVariable(*this, Dst, &D);
+}
defaultInitNonTrivialCStructVar(Dst);
rjmccall wrote:
> Why don't you just initialize the payload right here, after we've drilled
>
rjmccall added inline comments.
Comment at: lib/CodeGen/CGDecl.cpp:1611
drillIntoBlockVariable(*this, Dst, &D);
+}
defaultInitNonTrivialCStructVar(Dst);
Why don't you just initialize the payload right here, after we've drilled down
to it?
=
jfb created this revision.
jfb added reviewers: rjmccall, pcc, kcc.
Herald added subscribers: cfe-commits, dexonsmith, jkorous.
Herald added a project: clang.
Automatic initialization [1] of __block variables was happening too late, which
caused self-init usage to crash, such as here:
typedef str
16 matches
Mail list logo