[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: gcc-6 e gprof, mi son perso qualcosa?



Ciao,

Il Sab, 28 Gennaio 2017 9:59 pm, Alessandro Pellizzari ha scritto:
> La sparo perché non so quasi niente di compilatori, ma forse il
> compilatore e l'optimizer si accorgono che non usi mai argv, ma solo
> argc. Fanno inline di tutto il codice e semplicemente sostituiscono main
> con un semplice count(argc) e un loop.

Grazie del suggerimento, ma in realtà non ho chiesto al compilatore di
ottimizzare, ed infatti non lo ha fatto (verificato con objdump -d).

Comunque, pur essendo un codice molto breve, non credo che gli
ottimizzatori attuali sarebbero in grado di capire che calcola l'n-esimo
numero di Fibonacci, dove n è il numero di parametri (argc) e di
riscrivere un codice più sensato per calcolare l'elemento giusto della
successione.

Chiedendo a gcc di ottimizzare (con '-O2') riesce a trasformare una delle
due chiamate ricorsive in una "ricorsione in coda" (tail recursion), ma
l'altra resta...

In ogni caso, il problema non è il codice. Mi sono accorto del problema
con un programma ben più articolato e complesso, ma per condividerlo ho
scritto due righe minimali su cui si manifestasse il comportamento
inatteso.
Con gcc-5 problemi non ne ho, vorrei capire se gprof funziona anche con
gcc-6, o se va aperto un bug.

Cià,
m

-- 
http://bodrato.it/papers/


Reply to: