aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@gcc.gnu.org>2016-01-13 20:21:59 +0100
committerJakub Jelinek <jakub@gcc.gnu.org>2016-01-13 20:21:59 +0100
commit2ad3adf102641812fe09742f545f8565bebd74ac (patch)
tree5cf0ee272a52d3041c573de778920af037820ca4
parent260936f29d63bb0cebfd624804c915e528aea575 (diff)
downloadgcc-2ad3adf102641812fe09742f545f8565bebd74ac.zip
gcc-2ad3adf102641812fe09742f545f8565bebd74ac.tar.gz
gcc-2ad3adf102641812fe09742f545f8565bebd74ac.tar.bz2
re PR middle-end/69156 (gcc.dg/pr59630.c: ICE: verify_gimple failed: non-trivial conversion at assignment with -fno-tree-ccp)
PR tree-optimization/69156 * gimple.c (validate_type): Removed. (gimple_builtin_call_types_compatible_p): Use useless_type_conversion_p instead of validate_type. * value-prof.c (gimple_stringop_fixed_value): Fold icall_size to correct type. * gcc.dg/pr69156.c: New test. From-SVN: r232342
-rw-r--r--gcc/ChangeLog35
-rw-r--r--gcc/gimple.c23
-rw-r--r--gcc/testsuite/ChangeLog11
-rw-r--r--gcc/testsuite/gcc.dg/pr69156.c10
-rw-r--r--gcc/value-prof.c3
5 files changed, 45 insertions, 37 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index a759568..c6ae288 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,12 @@
+2016-01-13 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/69156
+ * gimple.c (validate_type): Removed.
+ (gimple_builtin_call_types_compatible_p): Use
+ useless_type_conversion_p instead of validate_type.
+ * value-prof.c (gimple_stringop_fixed_value): Fold
+ icall_size to correct type.
+
2016-01-13 Jonathan Wakely <jwakely@redhat.com>
* doc/extend.texi (__atomic Builtins): Clarify compare_exchange
@@ -47,7 +56,7 @@
* config/arm/arm-arches.def: Remove spurious whitespace in "armv8.1-a"
and "armv8.1-a+crc" entries.
-2016-01-13 Alexander Fomin <alexander.fomin@intel.com>
+2016-01-13 Alexander Fomin <alexander.fomin@intel.com>
PR target/69228
* config/i386/sse.md (define_expand "avx512pf_gatherpf<mode>sf"):
@@ -97,7 +106,7 @@
(compute_path_counts): Only do count adjustment when it's really
needed.
-2016-01-12 Sandra Loosemore <sandra@codesourcery.com>
+2016-01-12 Sandra Loosemore <sandra@codesourcery.com>
* doc/invoke.texi (Spec Files): Move section down in file, past
all command-line option descriptions.
@@ -111,7 +120,7 @@
(walk_type): Likewise.
(write_func_for_structure): Likewise.
-2016-01-12 Sandra Loosemore <sandra@codesourcery.com>
+2016-01-12 Sandra Loosemore <sandra@codesourcery.com>
* doc/invoke.texi (Option Summary) Move -no-canonical-prefixes to
Directory Options, and -specs= to Overall Options.
@@ -138,7 +147,7 @@
* tree-vrp.c (adjust_range_with_scev): Check overflow in range
information computed for expression "init + nit * step".
-2016-01-12 Sandra Loosemore <sandra@codesourcery.com>
+2016-01-12 Sandra Loosemore <sandra@codesourcery.com>
* doc/invoke.texi (Invoking GCC): Copy-edit. Incorporate information
about name of GCC executable. Remove deleted node from menu.
@@ -215,7 +224,7 @@
for permuted strided SLP loads and do not spuriously assign
to SLP_TREE_VEC_STMTS.
-2016-01-12 Andris Pavenis <andris.pavenis@iki.fi>
+2016-01-12 Andris Pavenis <andris.pavenis@iki.fi>
* config/i386/djgpp.h (PREFERRED_DEBUGGING_TYPE): Define to DWARF2
(TARGET_ASM_OUTPUT_IDENT): Define to default_asm_output_ident_directive
@@ -361,7 +370,7 @@
* ifcvt.c (bb_ok_for_noce_convert_multiple_sets): Limit number of
conditionl moves.
-2016-01-11 Alexandre Oliva <aoliva@redhat.com>
+2016-01-11 Alexandre Oliva <aoliva@redhat.com>
PR bootstrap/69123
* var-tracking.c (drop_overlapping_mem_locs): Operate on all
@@ -586,7 +595,7 @@
depending on frame_pointer_needed before remaining integer and SSE
registers are saved.
-2016-01-07 Sandra Loosemore <sandra@codesourcery.com>
+2016-01-07 Sandra Loosemore <sandra@codesourcery.com>
PR 1078
* doc/extend.texi (Nvidia PDX Function Attributes): New section.
@@ -662,7 +671,7 @@
EXPR instead of ARG.
* ubsan.h (ubsan_instrument_float_cast): Adjust declaration.
-2016-01-05 Sandra Loosemore <sandra@codesourcery.com>
+2016-01-05 Sandra Loosemore <sandra@codesourcery.com>
PR 1078
* doc/extend.texi (RL78 Variable Attributes): New section.
@@ -702,19 +711,19 @@
* config/i386/sse.md: Replace xm with xBm in plusminus and
any_logic patterns.
-2016-01-05 Sandra Loosemore <sandra@codesourcery.com>
+2016-01-05 Sandra Loosemore <sandra@codesourcery.com>
PR 1078
* doc/extend.texi (V850 Function Attributes): New section.
(V850 Variable Attributes): New section.
-2016-01-05 Sandra Loosemore <sandra@codesourcery.com>
+2016-01-05 Sandra Loosemore <sandra@codesourcery.com>
PR 1078
* doc/extend.texi (MicroBlaze Function Attributes): Document
interrupt_handler and fast_interrupt attributes.
-2016-01-05 Sergei Trofimovich <siarheit@google.com>
+2016-01-05 Sergei Trofimovich <siarheit@google.com>
PR other/60465
* config/ia64/ia64.c (ia64_expand_load_address): Use gprel64
@@ -813,7 +822,7 @@
* doc/install.texi (--with-multilib-list): Describe the meaning of the
option for arm*-*-* targets.
-2016-01-03 Sandra Loosemore <sandra@codesourcery.com>
+2016-01-03 Sandra Loosemore <sandra@codesourcery.com>
* doc/extend.texi (Common Function Attributes): Move docs for
MSP430-specific attributes to....
@@ -823,7 +832,7 @@
entries and add a cross-reference to the corresponding function
attribute docs.
-2016-01-03 Vladimír Čunát <vcunat@gmail.com>
+2016-01-03 Vladimír Čunát <vcunat@gmail.com>
* doc/invoke.texi (RS/6000 and PowerPC Options): Fix
-finite-math typo.
diff --git a/gcc/gimple.c b/gcc/gimple.c
index f312f90..ff3c68a 100644
--- a/gcc/gimple.c
+++ b/gcc/gimple.c
@@ -2445,24 +2445,6 @@ gimple_ior_addresses_taken (bitmap addresses_taken, gimple *stmt)
}
-/* Return true if TYPE1 and TYPE2 are compatible enough for builtin
- processing. */
-
-static bool
-validate_type (tree type1, tree type2)
-{
- if (INTEGRAL_TYPE_P (type1)
- && INTEGRAL_TYPE_P (type2))
- ;
- else if (POINTER_TYPE_P (type1)
- && POINTER_TYPE_P (type2))
- ;
- else if (TREE_CODE (type1)
- != TREE_CODE (type2))
- return false;
- return true;
-}
-
/* Return true when STMTs arguments and return value match those of FNDECL,
a decl of a builtin function. */
@@ -2473,7 +2455,8 @@ gimple_builtin_call_types_compatible_p (const gimple *stmt, tree fndecl)
tree ret = gimple_call_lhs (stmt);
if (ret
- && !validate_type (TREE_TYPE (ret), TREE_TYPE (TREE_TYPE (fndecl))))
+ && !useless_type_conversion_p (TREE_TYPE (ret),
+ TREE_TYPE (TREE_TYPE (fndecl))))
return false;
tree targs = TYPE_ARG_TYPES (TREE_TYPE (fndecl));
@@ -2484,7 +2467,7 @@ gimple_builtin_call_types_compatible_p (const gimple *stmt, tree fndecl)
if (!targs)
return true;
tree arg = gimple_call_arg (stmt, i);
- if (!validate_type (TREE_TYPE (arg), TREE_VALUE (targs)))
+ if (!useless_type_conversion_p (TREE_VALUE (targs), TREE_TYPE (arg)))
return false;
targs = TREE_CHAIN (targs);
}
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index e896dcd..dff8d69 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2016-01-13 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/69156
+ * gcc.dg/pr69156.c: New test.
+
2016-01-13 H.J. Lu <hongjiu.lu@intel.com>
* gcc.target/i386/pr69225-7.c: New test.
@@ -19,7 +24,7 @@
PR tree-optimization/69169
* gcc.dg/pr69169.c: New test.
-2016-01-13 Alexander Fomin <alexander.fomin@intel.com>
+2016-01-13 Alexander Fomin <alexander.fomin@intel.com>
PR target/69228
* gcc.target/i386/avx512pf-vscatterpf0dpd-1.c: Adjust.
@@ -250,7 +255,7 @@
for ix86 targets.
* gcc.dg/ifcvt-5.c: New test.
-2016-01-11 Alexandre Oliva <aoliva@redhat.com>
+2016-01-11 Alexandre Oliva <aoliva@redhat.com>
PR bootstrap/69123
* g++.dg/pr69123.C: New.
@@ -408,7 +413,7 @@
* g++.dg/pr66655_1.cc: Test support file.
* g++.dg/pr66655.h: Test header file.
-2016-01-07 Dominique d'Humieres <dominiq@lps.ens.fr>
+2016-01-07 Dominique d'Humieres <dominiq@lps.ens.fr>
PR fortran/66680
gfortran.dg/gomp/pr66680.f90: New test.
diff --git a/gcc/testsuite/gcc.dg/pr69156.c b/gcc/testsuite/gcc.dg/pr69156.c
new file mode 100644
index 0000000..b22aaec
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr69156.c
@@ -0,0 +1,10 @@
+/* PR tree-optimization/69156 */
+/* { dg-do compile } */
+/* { dg-options "-O1 -fno-tree-ccp" } */
+
+_Bool
+foo ()
+{
+ _Bool (*f) () = __builtin_abs; /* { dg-warning "initialization from incompatible pointer type" } */
+ return f (0);
+}
diff --git a/gcc/value-prof.c b/gcc/value-prof.c
index 336b8ae..f9574b6 100644
--- a/gcc/value-prof.c
+++ b/gcc/value-prof.c
@@ -1697,7 +1697,8 @@ gimple_stringop_fixed_value (gcall *vcall_stmt, tree icall_size, int prob,
gimple_set_vuse (vcall_stmt, NULL);
update_stmt (vcall_stmt);
icall_stmt = as_a <gcall *> (gimple_copy (vcall_stmt));
- gimple_call_set_arg (icall_stmt, size_arg, icall_size);
+ gimple_call_set_arg (icall_stmt, size_arg,
+ fold_convert (optype, icall_size));
gsi_insert_before (&gsi, icall_stmt, GSI_SAME_STMT);
/* Fix CFG. */