https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84947

            Bug ID: 84947
           Summary: UBSAN:
                    ipcp_bits_lattice::meet_with(generic_wide_int<fixed_wi
                    de_int_storage<192> >,
                    generic_wide_int<fixed_wide_int_storage<192> >,
                    unsigned int) ../../gcc/ipa-cp.c:1058
           Product: gcc
           Version: unknown
            Status: UNCONFIRMED
          Keywords: ice-on-valid-code
          Severity: normal
          Priority: P3
         Component: ipa
          Assignee: unassigned at gcc dot gnu.org
          Reporter: marxin at gcc dot gnu.org
                CC: jamborm at gcc dot gnu.org, marxin at gcc dot gnu.org
  Target Milestone: ---

Following causes UBSAN:

$ cat a.c
int main() { foo(0); }

$ cat b.c
struct a {
} foo(struct a b) {
}

$ gcc -flto -O2 [ab].c
a.c: In function ‘main’:
a.c:1:14: warning: implicit declaration of function ‘foo’
[-Wimplicit-function-declaration]
 int main() { foo(0); }
              ^~~
a.c:1:14: warning: type of ‘foo’ does not match original declaration
[-Wlto-type-mismatch]
 int main() { foo(0); }
              ^
b.c:2:3: note: return value type mismatch
 } foo(struct a b) {
   ^
b.c:2:3: note: type ‘struct a’ should match type ‘int’
b.c:2:3: note: ‘foo’ was previously declared here
../../gcc/hwint.h:293:61: runtime error: shift exponent 64 is too large for
64-bit type 'long unsigned int'
    #0 0x37bd3d1 in sext_hwi ../../gcc/hwint.h:293
    #1 0x37bd3d1 in
wi::binary_traits<generic_wide_int<fixed_wide_int_storage<192> >,
generic_wide_int<fixed_wide_int_storage<192> >,
wi::int_traits<generic_wide_int<fixed_wide_int_storage<192> >
>::precision_type, wi::int_traits<generic_wide_int<fixed_wide_int_storage<192>
> >::precision_type>::result_type
wi::sext<generic_wide_int<fixed_wide_int_storage<192> >
>(generic_wide_int<fixed_wide_int_storage<192> > const&, unsigned int)
../../gcc/wide-int.h:2133
    #2 0x37bd3d1 in
ipcp_bits_lattice::meet_with(generic_wide_int<fixed_wide_int_storage<192> >,
generic_wide_int<fixed_wide_int_storage<192> >, unsigned int)
../../gcc/ipa-cp.c:1058
    #3 0x37c3d07 in propagate_bits_across_jump_function(cgraph_edge*, int,
ipa_jump_func*, ipcp_bits_lattice*) ../../gcc/ipa-cp.c:1878
    #4 0x37c5892 in propagate_constants_across_call ../../gcc/ipa-cp.c:2317
    #5 0x37d8ca2 in propagate_constants_topo ../../gcc/ipa-cp.c:3224
    #6 0x37d8ca2 in ipcp_propagate_stage ../../gcc/ipa-cp.c:3318
    #7 0x37e28ee in ipcp_driver ../../gcc/ipa-cp.c:5044
    #8 0x37e28ee in execute ../../gcc/ipa-cp.c:5138
    #9 0x16690a0 in execute_one_pass(opt_pass*) ../../gcc/passes.c:2497
    #10 0x166e35a in execute_ipa_pass_list(opt_pass*) ../../gcc/passes.c:2932
    #11 0x6a22f8 in do_whole_program_analysis ../../gcc/lto/lto.c:3147
    #12 0x6a22f8 in lto_main() ../../gcc/lto/lto.c:3368
    #13 0x1a607ca in compile_file ../../gcc/toplev.c:455
    #14 0x628cdc in do_compile ../../gcc/toplev.c:2132
    #15 0x628cdc in toplev::main(int, char**) ../../gcc/toplev.c:2267
    #16 0x62b76a in main ../../gcc/main.c:39
    #17 0x7ffff5cafa86 in __libc_start_main (/lib64/libc.so.6+0x21a86)
    #18 0x62b899 in _start
(/home/marxin/bin/gcc/lib/gcc/x86_64-pc-linux-gnu/8.0.1/lto1+0x62b899)

Reply via email to