2007-06-20 Jakub Jelinek <jakub@redhat.com>
+ PR middle-end/31959
+ * builtins.c: Include diagnostic.h.
+ (expand_builtin_expect): Make gcc_assert more permissive.
+ * Makefile.in (builtins.o): Depend on $(DIAGNOSTIC_H).
+
PR inline-asm/32109
* gimplify.c (gimplify_asm_expr): Issue error if type is addressable
and !allows_mem.
$(EXPR_H) $(OPTABS_H) insn-config.h $(RECOG_H) output.h typeclass.h \
hard-reg-set.h toplev.h hard-reg-set.h except.h $(TM_P_H) $(PREDICT_H) \
libfuncs.h $(REAL_H) langhooks.h $(BASIC_BLOCK_H) tree-mudflap.h \
- $(BUILTINS_DEF) $(MACHMODE_H)
+ $(BUILTINS_DEF) $(MACHMODE_H) $(DIAGNOSTIC_H)
calls.o : calls.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
$(TREE_H) $(FLAGS_H) $(EXPR_H) $(OPTABS_H) langhooks.h $(TARGET_H) \
libfuncs.h $(REGS_H) toplev.h output.h $(FUNCTION_H) $(TIMEVAR_H) $(TM_P_H) \
#include "tree-mudflap.h"
#include "tree-flow.h"
#include "value-prof.h"
+#include "diagnostic.h"
#ifndef PAD_VARARGS_DOWN
#define PAD_VARARGS_DOWN BYTES_BIG_ENDIAN
target = expand_expr (arg, target, VOIDmode, EXPAND_NORMAL);
/* When guessing was done, the hints should be already stripped away. */
- gcc_assert (!flag_guess_branch_prob);
+ gcc_assert (!flag_guess_branch_prob
+ || optimize == 0 || errorcount || sorrycount);
return target;
}
2007-06-20 Jakub Jelinek <jakub@redhat.com>
+ PR middle-end/31959
+ * gcc.dg/pr31959.c: New test.
+
PR inline-asm/32109
* g++.dg/ext/asm10.C: New test.
--- /dev/null
+/* PR middle-end/31959 */
+/* { dg-do compile } */
+/* { dg-options "-O0 -fguess-branch-probability" } */
+
+struct A { int i; };
+
+static inline struct A *
+bar (struct A *x)
+{
+ return x;
+}
+
+void *
+foo (struct A *x, int y)
+{
+ void *p = (void *) 0;
+ if (__builtin_expect (y >= 6, 0))
+ p = bar (x);
+ return p;
+}