public inbox for gcc-bugs@sourceware.org help / color / mirror / Atom feed
* [Bug middle-end/21180] New: [4.1 Regression] checking on fold is no longer happen in some cases @ 2005-04-23 17:06 pinskia at gcc dot gnu dot org 2005-04-23 17:06 ` [Bug middle-end/21180] " pinskia at gcc dot gnu dot org ` (10 more replies) 0 siblings, 11 replies; 12+ messages in thread From: pinskia at gcc dot gnu dot org @ 2005-04-23 17:06 UTC (permalink / raw) To: gcc-bugs the changes to use "fold_buildN" instead of "fold (buildN", makes us no do fold checking in those case. This PR records that face. -- Summary: [4.1 Regression] checking on fold is no longer happen in some cases Product: gcc Version: 4.1.0 Status: UNCONFIRMED Severity: normal Priority: P2 Component: middle-end AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: pinskia at gcc dot gnu dot org CC: gcc-bugs at gcc dot gnu dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21180 ^ permalink raw reply [flat|nested] 12+ messages in thread
* [Bug middle-end/21180] [4.1 Regression] checking on fold is no longer happen in some cases 2005-04-23 17:06 [Bug middle-end/21180] New: [4.1 Regression] checking on fold is no longer happen in some cases pinskia at gcc dot gnu dot org @ 2005-04-23 17:06 ` pinskia at gcc dot gnu dot org 2005-04-23 17:28 ` [Bug middle-end/21180] [4.1 Regression] checking on fold no longer happens " kazu at cs dot umass dot edu ` (9 subsequent siblings) 10 siblings, 0 replies; 12+ messages in thread From: pinskia at gcc dot gnu dot org @ 2005-04-23 17:06 UTC (permalink / raw) To: gcc-bugs -- What |Removed |Added ---------------------------------------------------------------------------- CC| |kazu at cs dot umass dot edu Target Milestone|--- |4.1.0 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21180 ^ permalink raw reply [flat|nested] 12+ messages in thread
* [Bug middle-end/21180] [4.1 Regression] checking on fold no longer happens in some cases 2005-04-23 17:06 [Bug middle-end/21180] New: [4.1 Regression] checking on fold is no longer happen in some cases pinskia at gcc dot gnu dot org 2005-04-23 17:06 ` [Bug middle-end/21180] " pinskia at gcc dot gnu dot org @ 2005-04-23 17:28 ` kazu at cs dot umass dot edu 2005-06-15 3:17 ` pinskia at gcc dot gnu dot org ` (8 subsequent siblings) 10 siblings, 0 replies; 12+ messages in thread From: kazu at cs dot umass dot edu @ 2005-04-23 17:28 UTC (permalink / raw) To: gcc-bugs -- What |Removed |Added ---------------------------------------------------------------------------- Summary|[4.1 Regression] checking on|[4.1 Regression] checking on |fold is no longer happen in |fold no longer happens in |some cases |some cases http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21180 ^ permalink raw reply [flat|nested] 12+ messages in thread
* [Bug middle-end/21180] [4.1 Regression] checking on fold no longer happens in some cases 2005-04-23 17:06 [Bug middle-end/21180] New: [4.1 Regression] checking on fold is no longer happen in some cases pinskia at gcc dot gnu dot org 2005-04-23 17:06 ` [Bug middle-end/21180] " pinskia at gcc dot gnu dot org 2005-04-23 17:28 ` [Bug middle-end/21180] [4.1 Regression] checking on fold no longer happens " kazu at cs dot umass dot edu @ 2005-06-15 3:17 ` pinskia at gcc dot gnu dot org 2005-07-04 12:18 ` pinskia at gcc dot gnu dot org ` (7 subsequent siblings) 10 siblings, 0 replies; 12+ messages in thread From: pinskia at gcc dot gnu dot org @ 2005-06-15 3:17 UTC (permalink / raw) To: gcc-bugs ------- Additional Comments From pinskia at gcc dot gnu dot org 2005-06-15 03:17 ------- Confirmed, I might get around to doing this. -- What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Ever Confirmed| |1 Last reconfirmed|0000-00-00 00:00:00 |2005-06-15 03:17:36 date| | http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21180 ^ permalink raw reply [flat|nested] 12+ messages in thread
* [Bug middle-end/21180] [4.1 Regression] checking on fold no longer happens in some cases 2005-04-23 17:06 [Bug middle-end/21180] New: [4.1 Regression] checking on fold is no longer happen in some cases pinskia at gcc dot gnu dot org ` (2 preceding siblings ...) 2005-06-15 3:17 ` pinskia at gcc dot gnu dot org @ 2005-07-04 12:18 ` pinskia at gcc dot gnu dot org 2005-07-04 17:04 ` pinskia at gcc dot gnu dot org ` (6 subsequent siblings) 10 siblings, 0 replies; 12+ messages in thread From: pinskia at gcc dot gnu dot org @ 2005-07-04 12:18 UTC (permalink / raw) To: gcc-bugs ------- Additional Comments From pinskia at gcc dot gnu dot org 2005-07-04 12:18 ------- Testing a patch for this. -- What |Removed |Added ---------------------------------------------------------------------------- AssignedTo|unassigned at gcc dot gnu |pinskia at gcc dot gnu dot |dot org |org Status|NEW |ASSIGNED http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21180 ^ permalink raw reply [flat|nested] 12+ messages in thread
* [Bug middle-end/21180] [4.1 Regression] checking on fold no longer happens in some cases 2005-04-23 17:06 [Bug middle-end/21180] New: [4.1 Regression] checking on fold is no longer happen in some cases pinskia at gcc dot gnu dot org ` (3 preceding siblings ...) 2005-07-04 12:18 ` pinskia at gcc dot gnu dot org @ 2005-07-04 17:04 ` pinskia at gcc dot gnu dot org 2005-07-04 18:16 ` pinskia at gcc dot gnu dot org ` (5 subsequent siblings) 10 siblings, 0 replies; 12+ messages in thread From: pinskia at gcc dot gnu dot org @ 2005-07-04 17:04 UTC (permalink / raw) To: gcc-bugs ------- Additional Comments From pinskia at gcc dot gnu dot org 2005-07-04 17:03 ------- s/face/fact/ This is the patch I am testing right now: * fold-const.c (fold_build1): Add checksum for the operands. (fold_build2): Likewise. (fold_build3): Likewise. Index: fold-const.c =============================================================== ==== RCS file: /cvs/gcc/gcc/gcc/fold-const.c,v retrieving revision 1.600 diff -u -p -r1.600 fold-const.c --- fold-const.c 2 Jul 2005 16:24:25 -0000 1.600 +++ fold-const.c 4 Jul 2005 17:02:26 -0000 @@ -10322,11 +10322,33 @@ recursive_label: tree fold_build1 (enum tree_code code, tree type, tree op0) { - tree tem = fold_unary (code, type, op0); - if (tem) - return tem; - - return build1 (code, type, op0); + tree tem; +#ifdef ENABLE_FOLD_CHECKING + unsigned char checksum_before[16], checksum_after[16]; + struct md5_ctx ctx; + htab_t ht; + + ht = htab_create (32, htab_hash_pointer, htab_eq_pointer, NULL); + md5_init_ctx (&ctx); + fold_checksum_tree (op0, &ctx, ht); + md5_finish_ctx (&ctx, checksum_before); + htab_empty (ht); +#endif + + tem = fold_unary (code, type, op0); + if (!tem) + tem = build1 (code, type, op0); + +#ifdef ENABLE_FOLD_CHECKING + md5_init_ctx (&ctx); + fold_checksum_tree (op0, &ctx, ht); + md5_finish_ctx (&ctx, checksum_after); + htab_delete (ht); + + if (memcmp (checksum_before, checksum_after, 16)) + fold_check_failed (op0, tem); +#endif + return tem; } /* Fold a binary tree expression with code CODE of type TYPE with @@ -10337,11 +10359,49 @@ fold_build1 (enum tree_code code, tree t tree fold_build2 (enum tree_code code, tree type, tree op0, tree op1) { - tree tem = fold_binary (code, type, op0, op1); - if (tem) - return tem; + tree tem; +#ifdef ENABLE_FOLD_CHECKING + unsigned char checksum_before_op0[16], + checksum_before_op1[16], + checksum_after_op0[16], + checksum_after_op1[16]; + struct md5_ctx ctx; + htab_t ht; + + ht = htab_create (32, htab_hash_pointer, htab_eq_pointer, NULL); + md5_init_ctx (&ctx); + fold_checksum_tree (op0, &ctx, ht); + md5_finish_ctx (&ctx, checksum_before_op0); + htab_empty (ht); + + md5_init_ctx (&ctx); + fold_checksum_tree (op1, &ctx, ht); + md5_finish_ctx (&ctx, checksum_before_op1); + htab_empty (ht); +#endif + + tem = fold_binary (code, type, op0, op1); + if (!tem) + tem = build2 (code, type, op0, op1); + +#ifdef ENABLE_FOLD_CHECKING + md5_init_ctx (&ctx); + fold_checksum_tree (op0, &ctx, ht); + md5_finish_ctx (&ctx, checksum_after_op0); + htab_empty (ht); - return build2 (code, type, op0, op1); + if (memcmp (checksum_before_op0, checksum_after_op0, 16)) + fold_check_failed (op0, tem); + + md5_init_ctx (&ctx); + fold_checksum_tree (op1, &ctx, ht); + md5_finish_ctx (&ctx, checksum_after_op1); + htab_delete (ht); + + if (memcmp (checksum_before_op1, checksum_after_op1, 16)) + fold_check_failed (op1, tem); +#endif + return tem; } /* Fold a ternary tree expression with code CODE of type TYPE with @@ -10351,12 +10411,64 @@ fold_build2 (enum tree_code code, tree t tree fold_build3 (enum tree_code code, tree type, tree op0, tree op1, tree op2) -{ - tree tem = fold_ternary (code, type, op0, op1, op2); - if (tem) - return tem; +{ tree tem; +#ifdef ENABLE_FOLD_CHECKING + unsigned char checksum_before_op0[16], + checksum_before_op1[16], + checksum_before_op2[16], + checksum_after_op0[16], + checksum_after_op1[16], + checksum_after_op2[16]; + struct md5_ctx ctx; + htab_t ht; + + ht = htab_create (32, htab_hash_pointer, htab_eq_pointer, NULL); + md5_init_ctx (&ctx); + fold_checksum_tree (op0, &ctx, ht); + md5_finish_ctx (&ctx, checksum_before_op0); + htab_empty (ht); + + md5_init_ctx (&ctx); + fold_checksum_tree (op1, &ctx, ht); + md5_finish_ctx (&ctx, checksum_before_op1); + htab_empty (ht); + + md5_init_ctx (&ctx); + fold_checksum_tree (op2, &ctx, ht); + md5_finish_ctx (&ctx, checksum_before_op2); + htab_empty (ht); +#endif + + tem = fold_ternary (code, type, op0, op1, op2); + if (!tem) + tem = build3 (code, type, op0, op1, op2); + +#ifdef ENABLE_FOLD_CHECKING + md5_init_ctx (&ctx); + fold_checksum_tree (op0, &ctx, ht); + md5_finish_ctx (&ctx, checksum_after_op0); + htab_empty (ht); - return build3 (code, type, op0, op1, op2); + if (memcmp (checksum_before_op0, checksum_after_op0, 16)) + fold_check_failed (op0, tem); + + md5_init_ctx (&ctx); + fold_checksum_tree (op1, &ctx, ht); + md5_finish_ctx (&ctx, checksum_after_op1); + htab_empty (ht); + + if (memcmp (checksum_before_op1, checksum_after_op1, 16)) + fold_check_failed (op1, tem); + + md5_init_ctx (&ctx); + fold_checksum_tree (op2, &ctx, ht); + md5_finish_ctx (&ctx, checksum_after_op2); + htab_delete (ht); + + if (memcmp (checksum_before_op2, checksum_after_op2, 16)) + fold_check_failed (op2, tem); +#endif + return tem; } /* Perform constant folding and related simplification of initializer -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21180 ^ permalink raw reply [flat|nested] 12+ messages in thread
* [Bug middle-end/21180] [4.1 Regression] checking on fold no longer happens in some cases 2005-04-23 17:06 [Bug middle-end/21180] New: [4.1 Regression] checking on fold is no longer happen in some cases pinskia at gcc dot gnu dot org ` (4 preceding siblings ...) 2005-07-04 17:04 ` pinskia at gcc dot gnu dot org @ 2005-07-04 18:16 ` pinskia at gcc dot gnu dot org 2005-07-13 10:37 ` belyshev at depni dot sinp dot msu dot ru ` (4 subsequent siblings) 10 siblings, 0 replies; 12+ messages in thread From: pinskia at gcc dot gnu dot org @ 2005-07-04 18:16 UTC (permalink / raw) To: gcc-bugs ------- Additional Comments From pinskia at gcc dot gnu dot org 2005-07-04 18:16 ------- Patch posted here: <http://gcc.gnu.org/ml/gcc-patches/2005-07/msg00205.html>. -- What |Removed |Added ---------------------------------------------------------------------------- URL| |http://gcc.gnu.org/ml/gcc- | |patches/2005- | |07/msg00205.html Keywords| |patch http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21180 ^ permalink raw reply [flat|nested] 12+ messages in thread
* [Bug middle-end/21180] [4.1 Regression] checking on fold no longer happens in some cases 2005-04-23 17:06 [Bug middle-end/21180] New: [4.1 Regression] checking on fold is no longer happen in some cases pinskia at gcc dot gnu dot org ` (5 preceding siblings ...) 2005-07-04 18:16 ` pinskia at gcc dot gnu dot org @ 2005-07-13 10:37 ` belyshev at depni dot sinp dot msu dot ru 2005-07-13 11:20 ` belyshev at depni dot sinp dot msu dot ru ` (3 subsequent siblings) 10 siblings, 0 replies; 12+ messages in thread From: belyshev at depni dot sinp dot msu dot ru @ 2005-07-13 10:37 UTC (permalink / raw) To: gcc-bugs ------- Additional Comments From belyshev at depni dot sinp dot msu dot ru 2005-07-13 10:31 ------- This patch does'n work now, it fails on any input: <built-in>:0: internal compiler error: tree check: expected function_decl, have type_decl in fold_checksum_tree, at fold-const.c:10288 #0 internal_error (gmsgid=0xc377c8 "tree check: %s, have %s in %s, at %s:%d") at ../../gcc41/gcc/diagnostic.c:534 #1 0x000000000098ba01 in tree_check_failed (node=0x2aaaaaf9e340, file=0xba6438 "../../gcc41/gcc/fold-const.c", line=10288, function=0xdf5d90 "fold_checksum_tree") at ../../gcc41/gcc/tree.c:5778 #2 0x0000000000731e54 in fold_checksum_tree (expr=0x2aaaaaf9e340, ctx=0x7fffffa5c0f0, ht=0xec7730) at ../../gcc41/gcc/fold-const.c:10288 #3 0x00000000007322a1 in fold_checksum_tree (expr=0x7fffffa5bb70, ctx=0x7fffffa5c0f0, ht=0xec7730) at ../../gcc41/gcc/fold-const.c:10302 #4 0x000000000073160f in fold_checksum_tree (expr=0x2aaaaaf835d0, ctx=0x7fffffa5c0f0, ht=0xec7730) at ../../gcc41/gcc/fold-const.c:10231 #5 0x0000000000732781 in fold_build2 (code=MINUS_EXPR, type=0x2aaaaaf91000, op0=0x2aaaaaf835d0, op1=0x2aaaaaf835d0) at ../../gcc41/gcc/fold-const.c:10379 #6 0x0000000000959db6 in layout_type (type=0x2aaaaafa1c60) at ../../gcc41/gcc/stor-layout.c:1715 #7 0x000000000097f3b8 in type_hash_lookup (hashcode=196468616, type=0x2aaaaafa1c60) at ../../gcc41/gcc/tree.c:3922 #8 0x000000000097f4f1 in type_hash_canon (hashcode=196468616, type=0x2aaaaafa1c60) at ../../gcc41/gcc/tree.c:3972 #9 0x0000000000986088 in build_array_type (elt_type=0x2aaaaafa1b00, index_type=0x2aaaaafa1bb0) at ../../gcc41/gcc/tree.c:4846 #10 0x00000000009f6c4e in ix86_build_builtin_va_list () at ../../gcc41/gcc/config/i386/i386.c:3402 #11 0x000000000098d191 in build_common_tree_nodes_2 (short_double=0) at ../../gcc41/gcc/tree.c:6097 #12 0x0000000000464b00 in c_common_nodes_and_builtins () -- What |Removed |Added ---------------------------------------------------------------------------- Last reconfirmed|2005-06-30 13:11:22 |2005-07-13 10:31:11 date| | http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21180 ^ permalink raw reply [flat|nested] 12+ messages in thread
* [Bug middle-end/21180] [4.1 Regression] checking on fold no longer happens in some cases 2005-04-23 17:06 [Bug middle-end/21180] New: [4.1 Regression] checking on fold is no longer happen in some cases pinskia at gcc dot gnu dot org ` (6 preceding siblings ...) 2005-07-13 10:37 ` belyshev at depni dot sinp dot msu dot ru @ 2005-07-13 11:20 ` belyshev at depni dot sinp dot msu dot ru 2005-07-21 19:37 ` pinskia at gcc dot gnu dot org ` (2 subsequent siblings) 10 siblings, 0 replies; 12+ messages in thread From: belyshev at depni dot sinp dot msu dot ru @ 2005-07-13 11:20 UTC (permalink / raw) To: gcc-bugs ------- Additional Comments From belyshev at depni dot sinp dot msu dot ru 2005-07-13 10:51 ------- (In reply to comment #5) > This patch does'n work now, it fails on any input: ignore this comment, failure is not related to this patch. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21180 ^ permalink raw reply [flat|nested] 12+ messages in thread
* [Bug middle-end/21180] [4.1 Regression] checking on fold no longer happens in some cases 2005-04-23 17:06 [Bug middle-end/21180] New: [4.1 Regression] checking on fold is no longer happen in some cases pinskia at gcc dot gnu dot org ` (7 preceding siblings ...) 2005-07-13 11:20 ` belyshev at depni dot sinp dot msu dot ru @ 2005-07-21 19:37 ` pinskia at gcc dot gnu dot org 2005-07-21 19:53 ` cvs-commit at gcc dot gnu dot org 2005-08-29 0:12 ` dberlin at gcc dot gnu dot org 10 siblings, 0 replies; 12+ messages in thread From: pinskia at gcc dot gnu dot org @ 2005-07-21 19:37 UTC (permalink / raw) To: gcc-bugs ------- Additional Comments From pinskia at gcc dot gnu dot org 2005-07-21 19:36 ------- Fixed. -- What |Removed |Added ---------------------------------------------------------------------------- Status|ASSIGNED |RESOLVED Resolution| |FIXED http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21180 ^ permalink raw reply [flat|nested] 12+ messages in thread
* [Bug middle-end/21180] [4.1 Regression] checking on fold no longer happens in some cases 2005-04-23 17:06 [Bug middle-end/21180] New: [4.1 Regression] checking on fold is no longer happen in some cases pinskia at gcc dot gnu dot org ` (8 preceding siblings ...) 2005-07-21 19:37 ` pinskia at gcc dot gnu dot org @ 2005-07-21 19:53 ` cvs-commit at gcc dot gnu dot org 2005-08-29 0:12 ` dberlin at gcc dot gnu dot org 10 siblings, 0 replies; 12+ messages in thread From: cvs-commit at gcc dot gnu dot org @ 2005-07-21 19:53 UTC (permalink / raw) To: gcc-bugs ------- Additional Comments From cvs-commit at gcc dot gnu dot org 2005-07-21 19:36 ------- Subject: Bug 21180 CVSROOT: /cvs/gcc Module name: gcc Changes by: pinskia@gcc.gnu.org 2005-07-21 19:36:51 Modified files: gcc : ChangeLog fold-const.c Log message: 2005-07-21 Andrew Pinski <pinskia@physics.uc.edu> PR middle-end/21180 * fold-const.c (fold_build1): Add checksum for the operands. (fold_build2): Likewise. (fold_build3): Likewise. Patches: http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/ChangeLog.diff?cvsroot=gcc&r1=2.9502&r2=2.9503 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/fold-const.c.diff?cvsroot=gcc&r1=1.607&r2=1.608 -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21180 ^ permalink raw reply [flat|nested] 12+ messages in thread
* [Bug middle-end/21180] [4.1 Regression] checking on fold no longer happens in some cases 2005-04-23 17:06 [Bug middle-end/21180] New: [4.1 Regression] checking on fold is no longer happen in some cases pinskia at gcc dot gnu dot org ` (9 preceding siblings ...) 2005-07-21 19:53 ` cvs-commit at gcc dot gnu dot org @ 2005-08-29 0:12 ` dberlin at gcc dot gnu dot org 10 siblings, 0 replies; 12+ messages in thread From: dberlin at gcc dot gnu dot org @ 2005-08-29 0:12 UTC (permalink / raw) To: gcc-bugs -- Bug 21180 depends on bug 22455, which changed state. Bug 22455 Summary: [4.1 regression] ICE tree check: expected function_decl, have type_decl in fold_checksum_tree, at fold-const.c:10282 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=22455 What |Old Value |New Value ---------------------------------------------------------------------------- Status|ASSIGNED |RESOLVED Resolution| |FIXED http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21180 ^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2005-08-29 0:12 UTC | newest] Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2005-04-23 17:06 [Bug middle-end/21180] New: [4.1 Regression] checking on fold is no longer happen in some cases pinskia at gcc dot gnu dot org 2005-04-23 17:06 ` [Bug middle-end/21180] " pinskia at gcc dot gnu dot org 2005-04-23 17:28 ` [Bug middle-end/21180] [4.1 Regression] checking on fold no longer happens " kazu at cs dot umass dot edu 2005-06-15 3:17 ` pinskia at gcc dot gnu dot org 2005-07-04 12:18 ` pinskia at gcc dot gnu dot org 2005-07-04 17:04 ` pinskia at gcc dot gnu dot org 2005-07-04 18:16 ` pinskia at gcc dot gnu dot org 2005-07-13 10:37 ` belyshev at depni dot sinp dot msu dot ru 2005-07-13 11:20 ` belyshev at depni dot sinp dot msu dot ru 2005-07-21 19:37 ` pinskia at gcc dot gnu dot org 2005-07-21 19:53 ` cvs-commit at gcc dot gnu dot org 2005-08-29 0:12 ` dberlin at gcc dot gnu dot org
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).