| /* { dg-do compile } */ |
| /* { dg-options "-O2" } */ |
| /* PRE testcase for PR 24231, problem with PRE coalescing abnormal phis. */ |
| struct MemoryManager { |
| virtual void deallocate() = 0; |
| }; |
| struct XalanVector { |
| ~XalanVector() { |
| m_memoryManager->deallocate(); |
| } |
| void swap(XalanVector& theOther) { |
| MemoryManager* const theTempManager = m_memoryManager; |
| m_memoryManager = theOther.m_memoryManager; |
| theOther.m_memoryManager = theTempManager; |
| theOther.m_size = 0; |
| } |
| void push_back() { |
| XalanVector theTemp(*this); |
| theTemp.push_back(); |
| swap(theTemp); |
| } |
| MemoryManager* m_memoryManager; |
| int m_size; |
| }; |
| void f(void) { |
| XalanVector tempVector; |
| tempVector.push_back(); |
| } |