Pertanyaan Apakah menentukan parameter atau variabel sebagai __attribute__ ((tidak terpakai)) memungkinkan kompiler untuk melakukan pengoptimalan tambahan?


Saya sangat ingin tahu tentang LLVM 4.1, tetapi akan tertarik dengan perilaku kompiler lain juga.

Menurut Dokumentasi GCC (yang didukung oleh LLVM paling tidak sebagian), unused atribut memiliki perilaku berikut:

This attribute, attached to a variable, means that the variable is meant to be possibly unused. GCC will not produce a warning for this variable. 

Jika compiler dapat memperingatkan Anda tentang parameter dan variabel yang tidak digunakan, mungkin sudah diketahui parameter dan variabel apa yang tidak digunakan tanpa Anda harus memberitahukannya (terutama karena unused atribut hanya menunjukkan bahwa variabel tersebut mungkin tidak terpakai). Oleh karena itu, apakah itu unused Atribut memungkinkan kompilator untuk melakukan optimasi tambahan, atau apakah tujuannya hanya untuk memungkinkan kode yang lebih mudah dibaca? Juga, jika unused atribut sebenarnya memungkinkan compiler untuk melakukan pengoptimalan tambahan, apa yang terjadi jika Anda benar-benar berakhir menggunakan parameter atau variabel yang ditentukan sebagai unused? LLVM (di XCode) tampaknya tidak mengeluh tentang kasus ini, meskipun mungkin saya tidak mengkompilasi pada tingkat optimasi yang tepat atau dengan peringatan yang benar diaktifkan.


4
2018-01-17 21:03


asal


Jawaban:


__attribute__((unused)) tidak membantu optimalisasi, dan itu tidak berarti bahwa nilainya adalah perlu tidak terpakai. Ini menekan peringatan (jika ada alasan untuk peringatan ini, yaitu, jika nilainya memang tidak terpakai), itu saja.


6
2018-01-17 21:08