बिल्डिंग, न केवल संकलन, निम्नलिखित ऑप्टिमाइज़ेशन चालू होने पर डेल्फी 6 का उपयोग करते समय आंतरिक कंपाइलर त्रुटि के साथ विफल रहता है। Inc() कार्यों के बजाय असाइनमेंट का उपयोग करना। क्या यह एक कंपाइलर बग है? अजीब रिकॉर्ड संरचनाएं इसलिए हैं क्योंकि मूल कोड को इस न्यूनतम उदाहरण में कम कर दिया गया है।क्या यह कोड एक कंपाइलर बग के कारण निर्माण करने में विफल रहता है?
program Project1;
type
requestCountsType = array[0..1] of
record
processed: int64;
end;
talliestype = record
counts: requestCountsType;
end;
healthtype = record
charged: talliestype;
end;
procedure computeProcessed(const h: healthtype; var requests, bytesin, bytesout: int64);
var i: byte;
begin
requests := 0; bytesin := 0; bytesout := 0;
for i := 0 to 1 do
begin
inc(requests, h.charged.counts[i].processed); // including this generates compiler internal error C1405 when optimization is on
// requests := requests + h.charged.counts[i].processed; // this works
end;
end;
var ht: healthtype; var r, b1, b2: int64;
begin
computeProcessed(ht, r, b1, b2);
end.
मैं कहूंगा कि एक आंतरिक कंपाइलर त्रुटि एक बग है, हां। यदि कोड मान्य नहीं था, तो आप कम से कम एक उचित त्रुटि की उम्मीद करेंगे। मेरा मानना है कि आपके 'inc' कोड में कुछ भी गलत नहीं है। और अगर यह अनुकूलन के बिना काम करता है .. – Blorgbeard
लगता है कि यह स्वास्थ्य प्रकार के * const * पसंद नहीं है। –
उस समय 99.99%, यदि आपको लगता है कि यह एक कंपाइलर बग है, तो यह नहीं है। एक असली पकड़ने के लिए +1। –