python-2.5, gcc-4.2.0, rpm-4.4.6 i -fwrapv
    Marcin 'Qrczak' Kowalczyk 
    qrczak w knm.org.pl
       
    Nie, 15 Paź 2006, 16:21:01 CEST
    
    
  
Jest dziwna sprawa. Przy wersjach z HEAD tego co w subject Python
wykłada się na testach:
test_builtin
test test_builtin failed -- Traceback (most recent call last):
  File "/home/users/qrczak/rpm/BUILD/Python-2.5/Lib/test/test_builtin.py", line
999, in test_long
    self.assertEqual(long(ss), long(vv))
AssertionError: 100000000000000000000L != 93386650000961830912L
[...]
test_array
make: *** [test] Segmentation fault
Od jakiegoś czasu w rpmrc w CFLAGS jest -fwrapv. Doszedłem do tego,
że jeśli longobject.c jest kompilowany z -fwrapv, to działa źle:
$ LD_LIBRARY_PATH=. ./python -c 'print 10L**20'
93386650000961830912
natomiast jeśli tylko usunąć -fwrapv, to działa dobrze.
Na zdrowy rozum powinno być dokładnie odwrotnie. Python zakłada,
że arytmetyka całkowita ze znakiem się zawija. Jego deweloperzy już
wiedzą, że to gwałci reguły C, ale poprawienie tego odłożyli na później.
Tymczasem -fwrapv wyłącza optymalizacje zakładające, że nie będzie
przepełnień, czyli powinno pozwolić skompilować błędny kod, a nie
mu zaszkodzić.
Ktoś umie to wytłumaczyć?
-- 
   __("<         Marcin Kowalczyk
   \__/       qrczak w knm.org.pl
    ^^     http://qrnik.knm.org.pl/~qrczak/
    
    
Więcej informacji o liście dyskusyjnej pld-devel-pl