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

--- Comment #14 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Looking at gimple with co_await B{200000}; line commented out, the difference
-fno-range-for-ext-temps vs -frange-for-ext-temps is
@@ -77,7 +77,6 @@ void A::~A (struct A * const this)

 void bar ()
 {
+  struct A D.2934;
   struct A ret;

   try
@@ -89,15 +88,14 @@ void bar ()
           {
             const char * const & item;
             struct A & __for_range;
-            struct A D.2634;
             const char * * __for_begin;
             const char * * __for_end;

             try
               {
                 D.2934 = foo (); [return slot optimization]
-                __for_range = &D.2634;
                 try
                   {
+                    __for_range = &D.2934;
                     __for_begin = A::begin (__for_range);
                     __for_end = A::end (__for_range);
(changed D.2657 to D.2634 in one case because it is the same thing).  So the
temporary is declared in a different scope and __for_range initialized once
inside of the try/finally and once outside of it.  Everything else is the same.

Reply via email to