diff options
author | Feng Xue <fxue@os.amperecomputing.com> | 2020-01-19 15:49:44 +0800 |
---|---|---|
committer | Feng Xue <fxue@os.amperecomputing.com> | 2020-01-25 22:18:18 +0800 |
commit | 98dd8c97e44ee8134cecf681045b715a8a73c7cd (patch) | |
tree | 6b9b76023b5616842ea59f860062674a3826868c /gcc | |
parent | 53d172975f269138ba227f6d4560950265c36df8 (diff) | |
download | gcc-98dd8c97e44ee8134cecf681045b715a8a73c7cd.zip gcc-98dd8c97e44ee8134cecf681045b715a8a73c7cd.tar.gz gcc-98dd8c97e44ee8134cecf681045b715a8a73c7cd.tar.bz2 |
Remove assertion in get_info_about_necessary_edges
2020-01-25 Feng Xue <fxue@os.amperecomputing.com>
PR ipa/93166
* ipa-cp.c (get_info_about_necessary_edges): Remove value
check assertion.
PR ipa/93166
* g++.dg/pr93166.C: New test.
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/ipa-cp.c | 3 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/pr93166.C | 208 |
4 files changed, 219 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 0f19fc4..e35efd6 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2020-01-25 Feng Xue <fxue@os.amperecomputing.com> + + PR ipa/93166 + * ipa-cp.c (get_info_about_necessary_edges): Remove value + check assertion. + 2020-01-24 Jeff Law <law@redhat.com> PR tree-optimization/92788 diff --git a/gcc/ipa-cp.c b/gcc/ipa-cp.c index 17da1d8..e762abb 100644 --- a/gcc/ipa-cp.c +++ b/gcc/ipa-cp.c @@ -4175,9 +4175,6 @@ get_info_about_necessary_edges (ipcp_value<valtype> *val, cgraph_node *dest, hot |= cs->maybe_hot_p (); if (cs->caller != dest) non_self_recursive = true; - else if (src->val) - gcc_assert (values_equal_for_ipcp_p (src->val->value, - val->value)); } cs = get_next_cgraph_edge_clone (cs); } diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index ecf0a66..6795839 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2020-01-25 Feng Xue <fxue@os.amperecomputing.com> + + PR ipa/93166 + * g++.dg/pr93166.C: New test. + 2020-01-25 Andrew Pinski <apinski@marvell.com> * gcc.target/aarch64/vec_zeroextend.c: Fix for big-endian. diff --git a/gcc/testsuite/g++.dg/pr93166.C b/gcc/testsuite/g++.dg/pr93166.C new file mode 100644 index 0000000..e9234ce --- /dev/null +++ b/gcc/testsuite/g++.dg/pr93166.C @@ -0,0 +1,208 @@ +// { dg-do compile } +// { dg-options "-shared -flto -O2 -fPIC -fvisibility=hidden" } + +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); +} |