[applied] ir: Support cloning data members of unions

Message ID 87tu4z4g4n.fsf@redhat.com
State New
Headers
Series [applied] ir: Support cloning data members of unions |

Commit Message

Dodji Seketeli Sept. 22, 2022, 2:51 p.m. UTC
  Hello,

When cloning a data member, var_decl::clone wrongly assumes we are
looking at a data member of a class.  It could also be a data member
of an union.  Fixed thus.

This fixes crashes when self comparing Fedora 36 packages of the qt6
group with the command:

    $ fedabipkgdiff --self-compare --from fc36 qt6-qtsensors

There are lot of other packages from the qt group that were making
this command fail, but I am not mentioning them here for the sake
conciseness.

	* src/abg-ir.cc (var_decl::clone): Support cloning data members
	for unions.

Signed-off-by: Dodji Seketeli <dodji@redhat.com>
Applied to master.
---
 src/abg-ir.cc | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
  

Patch

diff --git a/src/abg-ir.cc b/src/abg-ir.cc
index 1cd2a219..f739b126 100644
--- a/src/abg-ir.cc
+++ b/src/abg-ir.cc
@@ -19131,7 +19131,7 @@  var_decl::clone() const
 
   if (is_member_decl(*this))
     {
-      class_decl* scope = dynamic_cast<class_decl*>(get_scope());
+      class_or_union* scope = is_class_or_union_type(get_scope());
       scope->add_data_member(v, get_member_access_specifier(*this),
 			     get_data_member_is_laid_out(*this),
 			     get_member_is_static(*this),