+2015-03-05 Martin Liska <mliska@suse.cz>
+
+ PR ipa/65318
+ * ipa-icf.c (sem_variable::equals): Compare variables types.
+
2015-03-05 Alex Velenko <alex.velenko@arm.com>
* config/arm/arm.c (arm_function_in_section_p): Fix predicate to
if (DECL_INITIAL (item->decl) == error_mark_node && in_lto_p)
dyn_cast <varpool_node *>(item->node)->get_constructor ();
+ /* As seen in PR ipa/65303 we have to compare variables types. */
+ if (!func_checker::compatible_types_p (TREE_TYPE (decl),
+ TREE_TYPE (item->decl)))
+ return return_false_with_msg ("variables types are different");
+
ret = sem_variable::equals (DECL_INITIAL (decl),
DECL_INITIAL (item->node->decl));
if (dump_file && (dump_flags & TDF_DETAILS))
+2015-03-05 Martin Liska <mliska@suse.cz>
+
+ PR ipa/65318
+ * gcc.dg/ipa/pr65318.c: New test.
+
2015-03-05 Marek Polacek <polacek@redhat.com>
* c-c++-common/ubsan/bounds-6.c: Use dg-do run.
--- /dev/null
+/* { dg-do compile } */
+/* { dg-options "-O2 -fdump-ipa-icf-details" } */
+
+static short a = 0;
+short b = -1;
+static unsigned short c = 0;
+
+int
+main ()
+{
+ if (a <= b)
+ return 1;
+
+ return 0;
+}
+
+/* { dg-final { scan-ipa-dump "Equal symbols: 0" "icf" } } */
+/* { dg-final { cleanup-ipa-dump "icf" } } */