This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Fix firefox FDO build


Hi,
Firefox FDO build fails with undefined reference to __builtin_unreachable.  THis is caused by a bug
in gimple-fold that introduces the refernece in the cases it hits impossible devirtualization.
We use __builtin_unreachable in the case we update call, but when updating reference, we need
to use something else.  This patch uses NULL - the program is undefined at this point and NULL
seems to fit the bill well (moreover this path is currently executed only for FDO or speculative
devirt code. No one introduces GIMPLE_ASSIGN with OBJ_TYPE_REF).

Bootstrapped/regtsted x86_64-linux, will commit it shortly.

	* gimple-fold.c (fold_gimple_assign): Do not intorudce referneces
	to BUILT_IN_UNREACHABLE.
Index: gimple-fold.c
===================================================================
--- gimple-fold.c	(revision 213860)
+++ gimple-fold.c	(working copy)
@@ -385,7 +385,9 @@ fold_gimple_assign (gimple_stmt_iterator
 		    if (targets.length () == 1)
 		      fndecl = targets[0]->decl;
 		    else
-		      fndecl = builtin_decl_implicit (BUILT_IN_UNREACHABLE);
+		      /* We can not use __builtin_unreachable here because it
+			 can not have address taken.  */
+		      fndecl = integer_zero_node;
 		    if (dump_enabled_p ())
 		      {
 			location_t loc = gimple_location_safe (stmt);


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]