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

--- Comment #1 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
The *.original dump diff before/after is
@@ -32,11 +32,11 @@
     }
   <D.2413>:;
   {
-    struct C * D.2390;
+    struct C * D.2390 = D.2378 + ((SAVE_EXPR <(sizetype) ((struct X *)
this)->n> - (sizetype) D.2380) + 18446744073709551615);

     (if (D.2378 != 0B)
       {
-        (void) (D.2390 = D.2378 + ((SAVE_EXPR <(sizetype) ((struct X *)
this)->n> - (sizetype) D.2380) + 18446744073709551615));, while (1)
+                struct C * D.2390 = D.2378 + ((SAVE_EXPR <(sizetype) ((struct
X *) this)->n> - (sizetype) D.2380) + 18446744073709551615);, while (1)
           {
             if (D.2390 == D.2378) break;, (void) (D.2390 = D.2390 +
18446744073709551615);;, C<int>::~C (D.2390);;
           };
and I think the problem is that this in the latter comes from the wrong ctor -
_ZN1XC4Ev rather than expected _ZN1XC2Ev.

Reply via email to