]> granicus.if.org Git - clang/commit
Merging r324537:
authorHans Wennborg <hans@hanshq.net>
Fri, 9 Feb 2018 09:04:00 +0000 (09:04 +0000)
committerHans Wennborg <hans@hanshq.net>
Fri, 9 Feb 2018 09:04:00 +0000 (09:04 +0000)
commit4a005620928c39874a0177ec97d84e636ab8dbfc
tree72a125ab4504b114d4a7b9c3477a671801fe4063
parent1d5b6bd0b8ee0cad2a92f45245b5fbbf23c48ef3
Merging r324537:
------------------------------------------------------------------------
r324537 | rsmith | 2018-02-07 23:25:16 +0100 (Wed, 07 Feb 2018) | 14 lines

PR36055: fix computation of *-dependence in nested initializer lists.

When we synthesize an implicit inner initializer list when analyzing an outer
initializer list, we add it to the outer list immediately, and then fill in the
inner list. This gives the outer list no chance to update its *-dependence bits
with those of the completed inner list. To fix this, re-add the inner list to
the outer list once it's completed.

Note that we do not recompute the *-dependence bits from scratch when we
complete an outer list; this would give the wrong result for the case where a
designated initializer overwrites a dependent initializer with a non-dependent
one. The resulting list in that case should still be dependent, even though all
traces of the dependence were removed from the semantic form.

------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/cfe/branches/release_60@324719 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Sema/SemaInit.cpp
test/SemaCXX/init-expr-crash.cpp
test/SemaTemplate/instantiate-init.cpp