view gcc/testsuite/g++.dg/lto/pr93166_0.C @ 145:1830386684a0

gcc-9.2.0
author anatofuz
date Thu, 13 Feb 2020 11:34:05 +0900
parents
children
line wrap: on
line source

// PR ipa/93166
// { dg-lto-do link }
// { dg-lto-options { { -fPIC -O2 -flto -fvisibility=hidden } } }
// { dg-require-effective-target shared }
// { dg-require-effective-target fpic }
// { dg-extra-ld-options "-shared" }
// { dg-require-visibility "" }

namespace Qt {
enum DropAction {};
}
class QObject;
struct QMetaObject {
  static void activate(const QMetaObject *, void *);
  enum Call {};
  struct {
    const QMetaObject *superdata;
    int *stringdata;
    unsigned *data;
    typedef void (*StaticMetacallFunction)(QObject *, Call, int, void **);
    StaticMetacallFunction static_metacallrelatedMetaObjectsextradata;
  } d;
};
class QString;
struct QListData {
  struct Data;
  Data *d;
};
template <typename> class QList {
  union {
    QListData p;
    QListData::Data *d;
  };

public:
  ~QList();
};
class QStringList : QList<QString> {};
template <typename> struct QScopedPointerDeleter;
class QObjectData;
template <typename, typename = QScopedPointerDeleter<QObjectData>>
class QScopedPointer {
public:
  ~QScopedPointer();
  QObjectData *d;
};

template <typename> struct FunctionPointer;
template <class Obj, typename Ret, typename... Args>
struct FunctionPointer<Ret (Obj::*)(Args...)> {
  typedef Obj Object;
};

class QObject {
public:
  virtual ~QObject();
  virtual void disconnectNotify();
  template <typename Func1, typename Func2>
  void connect(typename FunctionPointer<Func1>::Object *, Func1,
               typename FunctionPointer<Func2>::Object *, Func2);
  QScopedPointer<QObjectData> d_ptr;
};
class QPaintDevicePrivate;
class QPaintDevice {
public:
  virtual ~QPaintDevice();
  unsigned short painters;
  QPaintDevicePrivate *reserved;
};
class QWidgetData;
class QWidget : public QObject, QPaintDevice {
  QWidgetData *data;
};
class QFrame : public QWidget {};
class QMenu;
class QMimeData;
class QAbstractScrollArea : public QFrame {};
class QAbstractItemView : public QAbstractScrollArea {};
class QTreeView : public QAbstractItemView {};
class QTreeWidgetItem;
class QTreeWidget : public QTreeView {};
class QSignalMapper;
class KActionCollection;
class MenuFile;
class MenuFolderInfo;
class MenuEntryInfo;
class MenuSeparatorInfo;
class TreeView : QTreeWidget {
public:
  static const QMetaObject d;
  static void qt_static_metacall(QObject *, QMetaObject::Call, int, void **);
  void disableAction();
  bool dropMimeData(QTreeWidgetItem *, int, const QMimeData *, Qt::DropAction);
  KActionCollection *m_ac;
  QMenu *m_popupMenu;
  int m_clipboard;
  MenuFolderInfo *m_clipboardFolderInfo;
  MenuEntryInfo *m_clipboardEntryInfo;
  bool m_showHidden;
  MenuFile *m_menuFile;
  MenuFolderInfo *m_rootFolder;
  MenuSeparatorInfo *m_separator;
  QStringList m_newMenuIds;
  QStringList m_newDirectoryList;
  bool m_layoutDirty;
  bool m_detailedMenuEntries;
  bool m_detailedEntriesNamesFirst;
  QStringList m_dropMimeTypes;
  QSignalMapper *m_sortSignalMapper;
};
struct {
  int data[];
} b;
unsigned c[]{};
void TreeView::qt_static_metacall(QObject *p1, QMetaObject::Call, int,
                                  void **p4) {
  static_cast<TreeView *>(p1)->dropMimeData(
      0, 0, 0, *reinterpret_cast<Qt::DropAction *>(p4));
}
const QMetaObject TreeView::d{&d, b.data, c, qt_static_metacall};
void TreeView::disableAction() { QMetaObject::activate(&d, nullptr); }
template <typename> struct QScopedPointerDeleter;
class KXMLGUIClientPrivate;
class KXMLGUIClient {
public:
  virtual void m_fn2();
  KXMLGUIClient();
  virtual ~KXMLGUIClient();
  KXMLGUIClientPrivate *const d;
};
class KXMLGUIBuilderPrivate;
class KXMLGUIBuilder {
public:
  virtual ~KXMLGUIBuilder();
  virtual QStringList customTags();
  KXMLGUIBuilderPrivate *const d;
};

class QMainWindow : public QWidget {};
class KMainWindowPrivate;
class KMainWindow : public QMainWindow {
  KMainWindowPrivate *const k_ptr;
};
class KXmlGuiWindow : public KMainWindow,
                      KXMLGUIBuilder,
                      virtual KXMLGUIClient {
public:
  KXmlGuiWindow();
};
class QSplitter;
class QAction;
class BasicTab;
class TreeView;
class KTreeWidgetSearchLine;
class KMenuEdit : public KXmlGuiWindow {
public:
  KMenuEdit();
  TreeView *m_tree;
  BasicTab *m_basicTab;
  QSplitter *m_splitter;
  KTreeWidgetSearchLine *m_searchLine;
  QAction *m_actionDelete;
  bool m_showHidden;
};
int __attribute__((visibility("default"))) fn1() { new KMenuEdit; return 0; }
template <class> struct QTypedArrayData;
class QString {
public:
  ~QString();
  QTypedArrayData<unsigned short> *d;
};
class MenuEntryInfo;
class MenuInfo {
public:
  virtual ~MenuInfo();
};
class MenuFolderInfo : MenuInfo {
public:
  void updateFullId(const QString &);
  QString id;
  QString fullId;
  QString caption;
  QString genericname;
  QString comment;
  QString directoryFile;
  QString icon;
  QList<MenuFolderInfo *> subFolders;
  QList<MenuEntryInfo *> entries;
  QList<MenuInfo *> initialLayout;
  bool dirty;
  bool hidden;
};
void MenuFolderInfo::updateFullId(const QString &) {
  for (MenuFolderInfo *a = 0;;)
    a->updateFullId(fullId);
}

MenuFolderInfo *a1, *b1;
bool TreeView::dropMimeData(QTreeWidgetItem *, int, const QMimeData *,
                            Qt::DropAction) {
  b1->updateFullId(a1->fullId);
  return true;
}

class BasicTab {
public:
  void slotDisableAction();
};

KMenuEdit::KMenuEdit() {
  connect(m_tree, &TreeView::disableAction, m_basicTab,
          &BasicTab::slotDisableAction);
}