https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80664

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |wrong-code
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2017-05-08
     Ever confirmed|0                           |1
      Known to fail|                            |4.8.5, 7.1.0

--- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> ---
.original shows it:

;; Function int main() (null)
;; enabled by -tree-original


{
  <<< Unknown tree: try_block
  {
    struct vector v;

        struct vector v;
    <<cleanup_point <<< Unknown tree: expr_stmt
  std::vector<std::shared_ptr<R> >::vector (&v, TARGET_EXPR <D.39273,
{._M_array=(const struct shared_ptr *) &TARGET_EXPR <D.39271, {TARGET_EXPR
<D.38842, <<< Unknown tree: aggr_init_expr
  4
  make_shared
  D.38842
  (int &) &TARGET_EXPR <D.36803, 1> >>>>, TARGET_EXPR <D.38867, <<< Unknown
tree: aggr_init_expr
...
    try
      {

      }
    finally
      {
        std::vector<std::shared_ptr<R> >::~vector (&v);
      }
  }
  <<< Unknown tree: handler

  try
    {
      <<cleanup_point <<< Unknown tree: expr_stmt
  (void) __cxa_begin_catch (__builtin_eh_pointer (0)) >>>>>;
    }
  finally
    {
      __cxa_end_catch ();
    } >>> >>>;
}

eh, so the construction is not in the try block!

Reply via email to