public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug sanitizer/59397] New: ICE in ubsan_encode_value, at ubsan.c:143 for -fsanitize=signed-integer-overflow
@ 2013-12-05 14:44 burnus at gcc dot gnu.org
  2013-12-05 14:48 ` [Bug sanitizer/59397] " mpolacek at gcc dot gnu.org
                   ` (3 more replies)
  0 siblings, 4 replies; 5+ messages in thread
From: burnus at gcc dot gnu.org @ 2013-12-05 14:44 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59397

            Bug ID: 59397
           Summary: ICE in ubsan_encode_value, at ubsan.c:143 for
                    -fsanitize=signed-integer-overflow
           Product: gcc
           Version: 4.9.0
            Status: UNCONFIRMED
          Keywords: ice-on-valid-code
          Severity: normal
          Priority: P3
         Component: sanitizer
          Assignee: unassigned at gcc dot gnu.org
          Reporter: burnus at gcc dot gnu.org
                CC: dodji at gcc dot gnu.org, dvyukov at gcc dot gnu.org,
                    jakub at gcc dot gnu.org, kcc at gcc dot gnu.org,
                    mpolacek at gcc dot gnu.org

Created attachment 31388
  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=31388&action=edit
C++ test case, run as g++ -fsanitize=signed-integer-overflow

The attached test case fails with:

$ g++ -fsanitize=signed-integer-overflow -S test12.ii

test12.ii: In function 'int s_vectorizeLoop()':
test12.ii:15:29: internal compiler error: in ubsan_encode_value, at ubsan.c:143
   dir = three::direction( t + dir );
                             ^
0xbc9f03 ubsan_encode_value(tree_node*)
        ../../gcc/ubsan.c:143
0xbcb814 ubsan_build_overflow_builtin(tree_code, unsigned int, tree_node*,
tree_node*, tree_node*)
        ../../gcc/ubsan.c:667
0xa2c020 ubsan_expand_si_overflow_addsub_check(tree_code,
gimple_statement_base*)
        ../../gcc/internal-fn.c:175


^ permalink raw reply	[flat|nested] 5+ messages in thread

* [Bug sanitizer/59397] ICE in ubsan_encode_value, at ubsan.c:143 for -fsanitize=signed-integer-overflow
  2013-12-05 14:44 [Bug sanitizer/59397] New: ICE in ubsan_encode_value, at ubsan.c:143 for -fsanitize=signed-integer-overflow burnus at gcc dot gnu.org
@ 2013-12-05 14:48 ` mpolacek at gcc dot gnu.org
  2013-12-05 17:00 ` mpolacek at gcc dot gnu.org
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 5+ messages in thread
From: mpolacek at gcc dot gnu.org @ 2013-12-05 14:48 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59397

Marek Polacek <mpolacek at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |ASSIGNED
   Last reconfirmed|                            |2013-12-05
           Assignee|unassigned at gcc dot gnu.org      |mpolacek at gcc dot gnu.org
   Target Milestone|---                         |4.9.0
     Ever confirmed|0                           |1

--- Comment #1 from Marek Polacek <mpolacek at gcc dot gnu.org> ---
Yeah, the problem is that we don't handle ENUMERAL_TYPEs (nor BOOLEAN_TYPEs). 
Will be fixed as a part of PR59333 fix.  Thanks for report.


^ permalink raw reply	[flat|nested] 5+ messages in thread

* [Bug sanitizer/59397] ICE in ubsan_encode_value, at ubsan.c:143 for -fsanitize=signed-integer-overflow
  2013-12-05 14:44 [Bug sanitizer/59397] New: ICE in ubsan_encode_value, at ubsan.c:143 for -fsanitize=signed-integer-overflow burnus at gcc dot gnu.org
  2013-12-05 14:48 ` [Bug sanitizer/59397] " mpolacek at gcc dot gnu.org
@ 2013-12-05 17:00 ` mpolacek at gcc dot gnu.org
  2013-12-05 18:03 ` mpolacek at gcc dot gnu.org
  2013-12-05 18:04 ` mpolacek at gcc dot gnu.org
  3 siblings, 0 replies; 5+ messages in thread
From: mpolacek at gcc dot gnu.org @ 2013-12-05 17:00 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59397

--- Comment #2 from Marek Polacek <mpolacek at gcc dot gnu.org> ---
Reduced testcase for c-c++-common:

typedef enum E { A = -1 } e;
int
foo (void)
{
  e e = A;
  return e + 1;
}


^ permalink raw reply	[flat|nested] 5+ messages in thread

* [Bug sanitizer/59397] ICE in ubsan_encode_value, at ubsan.c:143 for -fsanitize=signed-integer-overflow
  2013-12-05 14:44 [Bug sanitizer/59397] New: ICE in ubsan_encode_value, at ubsan.c:143 for -fsanitize=signed-integer-overflow burnus at gcc dot gnu.org
  2013-12-05 14:48 ` [Bug sanitizer/59397] " mpolacek at gcc dot gnu.org
  2013-12-05 17:00 ` mpolacek at gcc dot gnu.org
@ 2013-12-05 18:03 ` mpolacek at gcc dot gnu.org
  2013-12-05 18:04 ` mpolacek at gcc dot gnu.org
  3 siblings, 0 replies; 5+ messages in thread
From: mpolacek at gcc dot gnu.org @ 2013-12-05 18:03 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59397

--- Comment #3 from Marek Polacek <mpolacek at gcc dot gnu.org> ---
Author: mpolacek
Date: Thu Dec  5 18:03:44 2013
New Revision: 205714

URL: http://gcc.gnu.org/viewcvs?rev=205714&root=gcc&view=rev
Log:
    PR sanitizer/59333
    PR sanitizer/59397
    * ubsan.c: Include rtl.h and expr.h.
    (ubsan_encode_value): Add new parameter.  If expanding, assign
    a stack slot for DECL_RTL of the temporary and call expand_assignment.
    Handle BOOLEAN_TYPE and ENUMERAL_TYPE.
    (ubsan_build_overflow_builtin): Adjust ubsan_encode_value call.
    * ubsan.h (ubsan_encode_value): Adjust declaration.
    * internal-fn.c (ubsan_expand_si_overflow_addsub_check): Move
    ubsan_build_overflow_builtin above expand_normal call.  Surround this call
    with push_temp_slots and pop_temp_slots.
    (ubsan_expand_si_overflow_neg_check): Likewise.
    (ubsan_expand_si_overflow_mul_check): Likewise.
testsuite/
    * c-c++-common/ubsan/pr59333.c: New test.
    * c-c++-common/ubsan/pr59397.c: New test.

Added:
    trunk/gcc/testsuite/c-c++-common/ubsan/pr59333.c
    trunk/gcc/testsuite/c-c++-common/ubsan/pr59397.c
Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/internal-fn.c
    trunk/gcc/testsuite/ChangeLog
    trunk/gcc/ubsan.c
    trunk/gcc/ubsan.h


^ permalink raw reply	[flat|nested] 5+ messages in thread

* [Bug sanitizer/59397] ICE in ubsan_encode_value, at ubsan.c:143 for -fsanitize=signed-integer-overflow
  2013-12-05 14:44 [Bug sanitizer/59397] New: ICE in ubsan_encode_value, at ubsan.c:143 for -fsanitize=signed-integer-overflow burnus at gcc dot gnu.org
                   ` (2 preceding siblings ...)
  2013-12-05 18:03 ` mpolacek at gcc dot gnu.org
@ 2013-12-05 18:04 ` mpolacek at gcc dot gnu.org
  3 siblings, 0 replies; 5+ messages in thread
From: mpolacek at gcc dot gnu.org @ 2013-12-05 18:04 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59397

Marek Polacek <mpolacek at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|ASSIGNED                    |RESOLVED
         Resolution|---                         |FIXED

--- Comment #4 from Marek Polacek <mpolacek at gcc dot gnu.org> ---
Fixed.


^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2013-12-05 18:04 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-12-05 14:44 [Bug sanitizer/59397] New: ICE in ubsan_encode_value, at ubsan.c:143 for -fsanitize=signed-integer-overflow burnus at gcc dot gnu.org
2013-12-05 14:48 ` [Bug sanitizer/59397] " mpolacek at gcc dot gnu.org
2013-12-05 17:00 ` mpolacek at gcc dot gnu.org
2013-12-05 18:03 ` mpolacek at gcc dot gnu.org
2013-12-05 18:04 ` mpolacek at gcc dot gnu.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).