मैं मान रहा हूं कि ऑनलाइन कंपाइलर GCC या कम्पैटिबल कंपाइलर का उपयोग करते हैं। बेशक, किसी भी अन्य संकलक को भी समान अनुकूलन करने की अनुमति है, लेकिन जीसीसी प्रलेखन अच्छी तरह से बताता है कि यह क्या करता है:
-faggressive-loop-optimizations
यह विकल्प लूप ऑप्टिमाइज़र को लूप के पुनरावृत्तियों की संख्या के लिए सीमा प्राप्त करने के लिए भाषा की कमी का उपयोग करने के लिए कहता है। यह मानता है कि लूप कोड अपरिभाषित व्यवहार को लागू नहीं करता है, उदाहरण के लिए हस्ताक्षरित पूर्णांक ओवरफ्लो या आउट-ऑफ-बाउंड ऐरे एक्सेस के कारण। लूप के पुनरावृत्तियों की संख्या के लिए सीमा का उपयोग लूप को अनियंत्रित और छीलने के लिए किया जाता है और लूप निकास परीक्षण के अनुकूलन को निर्देशित करता है। यह विकल्प डिफॉल्ट द्वारा सक्षम हो जाता है।
यह विकल्प केवल उन मामलों के आधार पर धारणा बनाने की अनुमति देता है जहां यूबी साबित होता है। उन मान्यताओं का लाभ उठाने के लिए, अन्य अनुकूलन को सक्षम करने की आवश्यकता हो सकती है, जैसे कि निरंतर तह।
हस्ताक्षरित पूर्णांक अतिप्रवाह में अपरिभाषित व्यवहार होता है। ऑप्टिमाइज़र यह साबित करने में सक्षम था कि i
173 से अधिक का कोई भी मूल्य यूबी का कारण होगा, और क्योंकि यह मान सकता है कि कोई यूबी नहीं है, यह भी मान सकता है कि i
यह 173 से अधिक नहीं है। यह आगे साबित कर सकता है किi < 300
हमेशा सच है, और इसलिए लूप की स्थिति को दूर अनुकूलित किया जा सकता है।
4169 और कुछ अन्य मूल्य क्यों नहीं?
वे साइटें संभवतः उन आउटपुट लाइनों (या वर्णों या बाइट्स) की संख्या को सीमित करती हैं जो वे दिखाती हैं और उसी सीमा को साझा करने के लिए होती हैं।