এটি হল g++ কমান্ড যা আমাদের একাধিক বিনামূল্যের অনলাইন ওয়ার্কস্টেশন যেমন উবুন্টু অনলাইন, ফেডোরা অনলাইন, উইন্ডোজ অনলাইন এমুলেটর বা MAC OS অনলাইন এমুলেটর ব্যবহার করে OnWorks ফ্রি হোস্টিং প্রদানকারীতে চালানো যেতে পারে।
কার্যক্রম:
NAME এর
gcc - GNU প্রকল্প C এবং C++ কম্পাইলার
সাইনোপিসিস
জিসিসি [-c|-S|-E] [-std=মান]
[-g] [-পিজি] [-Oস্তর]
[-Wসতর্ক...] [-ডব্লিউডান্টিক]
[-IDir...] [-LDir...]
[-Dম্যাক্রো[=defn]...] [-Uম্যাক্রো]
[-fপছন্দ...] [-mমেশিন বিকল্প...]
[-o আউটফাইল] [@ফাইল] ইনফাইল...
শুধুমাত্র সবচেয়ে দরকারী বিকল্প এখানে তালিকাভুক্ত করা হয়; বাকি জন্য নীচে দেখুন. g ++ গ্রহণ
বেশিরভাগ ক্ষেত্রে একই বিকল্প জিসিসি.
বর্ণনাঃ
আপনি যখন GCC আহ্বান করেন, এটি সাধারণত প্রিপ্রসেসিং, সংকলন, সমাবেশ এবং লিঙ্কিং করে।
"সামগ্রিক বিকল্পগুলি" আপনাকে একটি মধ্যবর্তী পর্যায়ে এই প্রক্রিয়াটি বন্ধ করার অনুমতি দেয়। জন্য
উদাহরণস্বরূপ, -c বিকল্পটি লিঙ্কার চালানোর জন্য না বলে। তারপর আউটপুট অবজেক্ট নিয়ে গঠিত
অ্যাসেম্বলার দ্বারা ফাইল আউটপুট।
অন্যান্য বিকল্পগুলি প্রক্রিয়াকরণের এক পর্যায়ে প্রেরণ করা হয়। কিছু বিকল্প নিয়ন্ত্রণ
প্রিপ্রসেসর এবং অন্যান্য কম্পাইলার নিজেই। তবুও অন্যান্য বিকল্পগুলি অ্যাসেম্বলার নিয়ন্ত্রণ করে এবং
লিঙ্কার এগুলোর বেশিরভাগই এখানে নথিভুক্ত করা হয়নি, যেহেতু আপনাকে খুব কমই তাদের কোনোটি ব্যবহার করতে হবে।
আপনি GCC এর সাথে ব্যবহার করতে পারেন এমন বেশিরভাগ কমান্ড-লাইন বিকল্পগুলি সি প্রোগ্রামগুলির জন্য দরকারী; কখন
একটি বিকল্প শুধুমাত্র অন্য ভাষার সাথে উপযোগী (সাধারণত C++), ব্যাখ্যাটি তাই বলে
স্পষ্টভাবে যদি একটি নির্দিষ্ট বিকল্পের জন্য বিবরণ একটি উত্স উল্লেখ না করে
ভাষা, আপনি সমস্ত সমর্থিত ভাষার সাথে সেই বিকল্পটি ব্যবহার করতে পারেন।
সার্জারির জিসিসি প্রোগ্রাম অপশন এবং ফাইলের নাম অপারেন্ড হিসাবে গ্রহণ করে। অনেক অপশন আছে বহু-
অক্ষরের নাম; তাই একাধিক একক-অক্ষর বিকল্প হতে পারে না গ্রুপ করা: -ডিভি খুব
অন্য রকম -d -v.
আপনি বিকল্প এবং অন্যান্য যুক্তি মিশ্রিত করতে পারেন. বেশিরভাগ অংশে, আপনি যে অর্ডারটি ব্যবহার করেন তা হয় না
ব্যাপার আপনি যখন একই ধরণের একাধিক বিকল্প ব্যবহার করেন তখন অর্ডারটি গুরুত্বপূর্ণ; উদাহরণস্বরূপ, যদি
আপনি নির্দিষ্ট করুন -L একাধিকবার, নির্দেশিকাগুলি নির্দিষ্ট ক্রমে অনুসন্ধান করা হয়। এছাড়াও,
বসানো -l বিকল্প উল্লেখযোগ্য।
অনেক অপশনে লম্বা নাম দিয়ে শুরু হয় -f বা সাথে -W---উদাহরণ স্বরূপ,
-ফমভ-লুপ-আক্রমণকারীরা, -Wformat এবং তাই এর বেশিরভাগই ইতিবাচক এবং নেতিবাচক উভয়ই রয়েছে
ফর্ম এর নেতিবাচক রূপ -ফু is -fno-foo. এই ম্যানুয়াল নথি এই শুধুমাত্র একটি
দুটি ফর্ম, যেটি একটি ডিফল্ট নয়৷
বিকল্প
পছন্দ সারাংশ
এখানে টাইপ অনুসারে গোষ্ঠীবদ্ধ সমস্ত বিকল্পের একটি সারাংশ রয়েছে। ব্যাখ্যা নিম্নলিখিত আছে
বিভাগে।
সার্বিক অপশন সমূহ
-c -S -E -o ফাইল -নো-প্রামানিক-উপসর্গ পাইপ -পাস-প্রস্থান-কোড -x ভাষা -v
-### --help[=শ্রেণী[...]] --লক্ষ্য-সাহায্য --সংস্করণ - মোড়ক @ফাইল -pplugin =ফাইল
-ফ্লাগিন-আর্গ-নাম=ARG -fdump-ada-pec[- পাতলা] -ফাদা-স্পেক-প্যারেন্ট=একক
-fdump- গো-স্পেক =ফাইল
C ভাষা অপশন সমূহ
-আনসি -std=মান -fgnu89-ইনলাইন -অক্স-তথ্য ফাইলের নাম
-পতন-প্যারামিটারহীন-ভেরিয়েডিক-ফাংশন -ফনো-এএসএম -এফএনও-বিল্টিন -এফএনও-বিল্টিন-ক্রিয়া
-ফোস্টেড -ফ্রিস্ট্যান্ডিং - fopenacc -ফোপেনএমপি -ফোপেনএমপি-সিমড -এফএমএস-এক্সটেনশন
-fplan9-এক্সটেনশন -ট্রিগ্রাফ - ঐতিহ্যগত -প্রথাগত-cpp পতিত-একক-নির্ভুলতা
-fcond-অমিল -ফ্ল্যাক্স-ভেক্টর-রূপান্তর -ফসাইনড-বিটফিল্ডস -ফসাইনড-চার
ফানসাইনড-বিটফিল্ড -ফানসাইনড-চার
সি ++ ভাষা অপশন সমূহ
-ফ্যাবি-সংস্করণ=n -fno-অ্যাক্সেস-কন্ট্রোল -fcheck-নতুন -fconstexpr-গভীরতা=n
-বন্ধু-ইনজেকশন -ফনো-এলাইড-নির্মাণকারী -এফএনও-এনফোর্স-এহ-স্পেক্স - সুযোগের জন্য
-এফএনও-ফর-স্কোপ -fno-gnu-কীওয়ার্ড -fno-ইমপ্লিসিট-টেমপ্লেট
-fno-ইমপ্লিসিট-ইনলাইন-টেমপ্লেট -fno-ইমপ্লিমেন্ট-ইনলাইন -এফএমএস-এক্সটেনশন
-fno-nonansi-builtins -fnothrow-opt -fno-অপারেটর-নাম -ফনো-বিকল্প-ডায়াগস
-অনুমতিপূর্ণ -fno-সুন্দর-টেমপ্লেট -ফ্রেপো -এফএনও-আরটিটি -fsized-অবণ্টন -ফস্ট্যাটস
-ftemplate-ব্যাকট্রেস-সীমা=n -ftemplate-গভীরতা=n -fno-থ্রেডসেফ-স্ট্যাটিক্স
-ফিউজ-সিএক্সএ-এটেক্সিট -fno-দুর্বল -নোস্টডিঙ্ক++ -fvisibility-ইনলাইন-লুকানো
-fvtable- ভেরিফাই =[এসটিডি|preinit|না] -fvtv-গণনা -fvtv-ডিবাগ -ফিসিবিলিটি-এমএস-কমপ্যাট
-সাংখ্যিক-আক্ষরিক -ওয়াবি=n -ওয়াবি-ট্যাগ -Wconversion-null -Wctor-dtor-গোপনীয়তা
-Wdelete-non-ভার্চুয়াল-ডোর -লিটারাল-প্রত্যয় - সংকীর্ণ - ব্যতীত -নোন-ভার্চুয়াল-ডোর
-নিয়ন্ত্রণ -Weffc ++ -Wstrict-null-sentinel -Wno-নন-টেমপ্লেট-বন্ধু -ওল্ড-স্টাইল-কাস্ট
-ওভারলোডেড-ভার্চুয়াল -Wno-pmf-রূপান্তর -Wsign-promo
উদ্দেশ্য গ এবং উদ্দেশ্য-C++ ভাষা অপশন সমূহ
-fconstant-স্ট্রিং-শ্রেণী=শ্রেণির নাম -fgnu-রানটাইম -পরবর্তী-রানটাইম -fno-nil-রিসিভার
-ফবজেসি-এবি-সংস্করণ=n -fobjc-কল-cxx-cdtors -fobjc-সরাসরি-প্রেরণ -fobjc- ব্যতিক্রম
-ফবজেসি-জিসি -ফবজেসি-নিলচেক -FOBJC-STD = OBJC1 -fno-স্থানীয়-আইভারস
-ফাইভার-দৃশ্যমানতা=[প্রকাশ্য|রক্ষিত|ব্যক্তিগত|প্যাকেজ] -freplace-objc-ক্লাস
-fzero-লিংক -জেন-ডিক্লেস -Wassign-Intercept -উনো-প্রটোকল -সেলেক্টর
- কঠোর-নির্বাচক-ম্যাচ -উন্ড ঘোষিত-নির্বাচক
ভাষা স্বাধীন অপশন সমূহ
-fmessage-দৈর্ঘ্য=n -fdiagnosts-শো-লোকেশন =[একদা|প্রতিটি লাইন]
-fdiagnostics-বর্ণ = =[গাড়ী|না|সর্বদা] -fno-ডায়াগনস্টিকস-শো-বিকল্প
-fno-ডায়াগনস্টিকস-শো-ক্যারেট
সতর্কতা অপশন সমূহ
-fsyntax-শুধুমাত্র -fmax-ত্রুটি=n -ডব্লিউডান্টিক -শিক্ষা সংক্রান্ত-ত্রুটি -w -ওয়েক্সট্রা -ওয়াল
-ওয়াডড্রেস -ওয়াগ্রিগেট-রিটার্ন -আড়ম্বরপূর্ণ-লুপ-অপ্টিমাইজেশান -ওয়ারে-সীমা
-ওয়ারে-সীমা=n -Wbool-তুলনা -Wno- বৈশিষ্ট্য -Wno-বিল্টিন-ম্যাক্রো-পুনরায় সংজ্ঞায়িত
-Wc90-c99-কম্প্যাট -Wc99-c11-কম্প্যাট -Wc++-কম্প্যাট -Wc++11-কম্প্যাট -Wc++14-কম্প্যাট
-Wcast-সারিবদ্ধ -Wcast-গুণ -Wchar-সাবস্ক্রিপ্ট -Wclobbered -Wcomment
শর্তসাপেক্ষে-সমর্থিত -Wconversion -Wcoverage-অমিল -তারিখ-সময়
মুছে ফেলুন-অসম্পূর্ণ -WNO-CPP -উনো-বঞ্চিত -Wno-বঞ্চিত-ঘোষণা
-Wno-নির্ধারিত-init -Wdisabled-অপ্টিমাইজেশান -উনো-বাতিল-কোয়ালিফায়ার
-Wno-বাতিল-অ্যারে-কোয়ালিফায়ার -নো-ডিআইভি-বাই-জিরো -ডাবল-প্রমোশন -শরীর ভেজা
-ভেনাম-তুলনা -Wno-endif-লেবেল -ভুল -ভুল=* মারাত্মক-ত্রুটি -Wfloat-সমান
-Wformat -Wformat = 2 -Wno-ফর্ম্যাটে-ধারণ করে-nul -Wno-ফর্ম্যাট-অতিরিক্ত-আর্গস
-Wformat-nonliteral -Wformat-নিরাপত্তা -Wformat- স্বাক্ষরিততা -Wformat-y2k
-Wframe-এর চেয়ে বড়-=লেন -Wno-মুক্ত-ননহেপ-বস্তু -Wjump-মিস-ইনিট
-অজ্ঞান-কোয়ালিফায়ার -অসঙ্গত-পয়েন্টার-টাইপ -উইমপ্লিসিট
- Wimplicit-ফাংশন-ঘোষণা - Wimplicit-int -ভিনিত-স্বয়ং -উইনলাইন
-Wno-int-রূপান্তর -নো-ইন-ইন-টু-পয়েন্টার-কাস্ট -Wno-অবৈধ-অফসেটফ -উইনভালিড-পিএইচ
-Wlarger-এর চেয়ে =লেন -উনসেফ-লুপ-অপ্টিমাইজেশন -ব্লোগিকাল-ওপ -যৌক্তিক-না-বন্ধনী
-লং-লং -উমাইন -Wmaybe-uninitialized -WMEMEMSTE- ট্রান্সপোজড-আর্জস -উইমিসিং-বন্ধনী
মিসিং-ফিল্ড-ইনিশিয়ালাইজার মিসিং-ইনক্লুড-ডিরস -উনো-মাল্টিচার -উনোনুল
-সাধারণকৃত=[না|id|NFC|nfkc]
-ওডর -উনো-ওভারফ্লো -ওপেনএমপি-সিমড -ওভারলেন্থ-স্ট্রিং -Wpacked
-ডব্লিউপ্যাকড-বিটফিল্ড-কমপ্যাট -Wpadded - বন্ধনী -Wpedantic-ms- বিন্যাস
-নো-পেডান্টিক-এমএস-ফর্ম্যাট -Wpointer-rith -Wno-পয়েন্টার থেকে int-কাস্ট -অপ্রয়োজনীয়- ঘোষণা
-Wno-রিটার্ন-স্থানীয়-addr -Wreturn-টাইপ -ডেনসেন্স-পয়েন্ট -ছায়া -উনো-ছায়া-ইভার
-Wshift-গণনা-নেতিবাচক -Wshift-কাউন্ট-ওভারফ্লো -সাইন-তুলনা -Wsign-রূপান্তর
-Wfloat-রূপান্তর -পয়েন্টার-মেমাক্সেসের আকার -Wsizeof-অ্যারে-আর্গুমেন্ট
-Wstack-রক্ষক -Wstack- ব্যবহার =লেন -WSTRICT-LIASING -WSTRICT-LIASING = n
-Wstrict-ওভারফ্লো -WSTRICT-overflow =n -Wsuggest-rtribute =[বিশুদ্ধ|const|ফেরত নেই|বিন্যাস]
-সাজেস্ট-ফাইনাল-টাইপ -পরামর্শ-চূড়ান্ত-পদ্ধতি -সাজেস্ট-ওভাররাইড
-উমিসিং-ফর্ম্যাট-অ্যাট্রিবিউট -উউইচ -Wswitch-ডিফল্ট -উইউইচ-এনাম -Wswitch-bool
-Wsync-nand -Wsystem-headers -WTRAMPOLINES -Wtrigraphs -Wtype-সীমা -উন্ডেফ
-উনিনিটিয়ালাইজড -অজানা-প্রাগমাস -নো-প্রাগমাস -Wunsufixed-float-constants
-ওয়ান ব্যবহার করা হয়েছে -Wunused-ফাংশন -Wunused-লেবেল -Wunused-স্থানীয়-টাইপডেফ -Wunused-পরামিটার
-উনো-অব্যবহৃত-ফলাফল -উইনজড-মান - Wunused- পরিবর্তনশীল -Wunused-কিন্তু-সেট-প্যারামিটার
-উইনজুসেড-তবে-সেট-পরিবর্তনশীল -উইসলেস-কাস্ট -Wvariadic-ম্যাক্রো
-Wvector-অপারেশন-পারফরম্যান্স -Wvla -Wvolatile-register-var লিখুন-স্ট্রিং
-Wzero-as-নাল-পয়েন্টার-কনস্ট্যান্ট
C এবং উদ্দেশ্য-সি-শুধুমাত্র সতর্কতা অপশন সমূহ
-Wbad-ফাংশন-কাস্ট মিসিং-ঘোষণা -Wmissing-প্যারামিটার-টাইপ
-Wmissing-প্রোটোটাইপ -তে আবদ্ধ-এক্সটারনস -ওল্ড-স্টাইল-ঘোষণা -ওল্ড-স্টাইল-সংজ্ঞা
-Wstrict-প্রোটোটাইপ - ঐতিহ্যগত ঐতিহ্যগত-রূপান্তর
-বিবৃতি-পরবর্তী ঘোষণা -Wpointer-চিহ্ন
ডিবাগ করা অপশন সমূহ
-dঅক্ষর - ডাম্পস্পেস - ডাম্প মেশিন - ডাম্প সংস্করণ -fsanitize =শৈলী -fsanitize-পুনরুদ্ধার
-fsanitize-recover=শৈলী -ফাসান-ছায়া-অফসেট=সংখ্যা
-fsanitize-অনির্ধারিত-ফাঁদ-অন-ত্রুটি -fcheck-পয়েন্টার-বাউন্ডস -fchkp-চেক-অসম্পূর্ণ-টাইপ
-fchkp-প্রথম-ক্ষেত্রের-নিজের-সীমা আছে -fchkp-সংকীর্ণ-সীমানা
-fchkp-সংকীর্ণ-থেকে-অভ্যন্তরীণ-অ্যারে -fchkp-অপ্টিমাইজ করুন -fchkp-ব্যবহার-দ্রুত-স্ট্রিং-ফাংশন
-fchkp-use-nochk-স্ট্রিং-ফাংশন -fchkp-ব্যবহার-স্থির-সীমা
-fchkp-use-static-const-সীমা -fchkp-treat-zero-dynamic-size- as-infinite
-fchkp-চেক-পড়ুন -fchkp-চেক-পড়ুন -fchkp-চেক-লিখুন -fchkp-স্টোর-বাউন্ডস
-fchkp-ইনস্ট্রুমেন্ট-কল -fchkp-যন্ত্র-চিহ্নিত-শুধু -fchkp-use-wrappers
-fdbg-cnt-তালিকা -fdbg-cnt =পাল্টা মূল্য তালিকা -ফডিসেবল-আইপি-পাস_নাম
-fdisable-rtl-পাস_নাম -fdisable-rtl-পাস-নাম=পরিসীমা তালিকা অক্ষম-গাছ-পাস_নাম
অক্ষম-গাছ-পাস-নাম=পরিসীমা তালিকা -fdump-noaddr -fdump-অসংখ্যিত
-fdump-অসংখ্যিত-লিঙ্ক -fdump-অনুবাদ-ইউনিট[-n] -fdump-শ্রেণী-শ্রেণিক্রম[-n]
-fdump-ipa-সমস্ত -fdump-আইপিএ-সিগ্রাফ -fdump-ipa-ইনলাইন -fdump-পাস -fdump-পরিসংখ্যান
-fdump-বৃক্ষ-সমস্ত -fdump-ট্রি-অরিজিনাল[-n] -fdump-ট্রি-অপ্টিমাইজ করা[-n] -ফডাম্প-ট্রি-সিএফজি
-fdump-ট্রি-অরফে -ফডাম্প-ট্রি-সিএইচ -ফডাম্প-ট্রি-এসএসএ[-n] -fdump-ট্রি-প্রি[-n]
-ফডাম্প-ট্রি-সিসিপি[-n] -ফডাম্প-ট্রি-ডিসিই[-n] -ফডাম্প-ট্রি-গিম্পল[-কাঁচা] -fdump-ট্রি-ডোম[-n]
-ফডাম্প-ট্রি-ডিএসই[-n] -এফডাম্প-ট্রি-ফিপ্রপ[-n] -এফডাম্প-ট্রি-ফিওপ্ট[-n]
-ফডাম্প-ট্রি-ফোরউপ্রপ[-n] -ফডাম্প-ট্রি-কপিরেনাম[-n] -এফডাম্প-ট্রি-এনআরভি -ফডাম্প-ট্রি-ভেক্ট
-fdump-ট্রি-সিঙ্ক -ফডাম্প-ট্রি-এসআরএ[-n] -ফডাম্প-ট্রি-ফোরউপ্রপ[-n] -fdump-বৃক্ষ-মুক্ত[-n]
-fdump- ট্রি-ভেটেবল-ভেরিফাই -এফডাম্প-ট্রি-ভিআরপি[-n] -ফডাম্প-ট্রি-স্টোরসিসিপি[-n]
-fdump-ফাইনাল-insns=ফাইল -fcompare-debug[=opts] -fcompare-ডিবাগ-সেকেন্ড
-ফিলিমিনেট-ডওয়ার্ফ 2-ডুপস -fno-বর্জন-অব্যবহৃত-ডিবাগ-টাইপস
-ফেলিমিনেট-অব্যবহৃত-ডিবাগ-প্রতীক -femit-শ্রেণী-ডিবাগ-সর্বদা -প্রমাণযোগ্য-রকম-পাস
-প্রমাণযোগ্য-রকম-পাস=পরিসীমা তালিকা -fdebug-টাইপস-বিভাগ -এফএমইএম-রিপোর্ট-ডব্লিউপিএ -এফএমইএম-রিপোর্ট
-fpre-ipa-মেম-রিপোর্ট -fpost-ipa-মেম-রিপোর্ট -এফপ্রোফাইল-আর্কস -fopt-তথ্য
-ফপ্ট-তথ্য-অপশন[=ফাইল] -ফ্রেন্ডম-বীজ=সংখ্যা -ফসচেড-ভারবোজ =n -fsel-নির্ধারিত-ভার্বোস
-fsel-নির্ধারিত-ডাম্প-cfg -fsel-নির্ধারিত-পাইপলাইনিং-ভার্বোস -fstack-ব্যবহার -সবচেয়ে কভারেজ
-এফটাইম-রিপোর্ট -fvar-ট্র্যাকিং -fvar-ট্র্যাকিং-অ্যাসাইনমেন্ট
-fvar-ট্র্যাকিং-অ্যাসাইনমেন্ট-টগল -g -gস্তর -gtoggle -gcoff -gdwarf-সংস্করণ -ggdb
-গ্রেকর্ড-জিসিসি-সুইচ -জিনো-রেকর্ড-জিসিসি-সুইচ -gstabs -gstabs+ -gstrict-বামন
-গ্নো-কঠোর-বামন -জিভিএমএস -gxcoff -gxcoff+ -gz[=আদর্শ] -fno-মার্জ-ডিবাগ-স্ট্রিং
-FNO-DWARF2-CFI-ASM -fdebug-prefix-Map =পুরাতন=নতুন -ফেমিট-স্ট্রাক্ট-ডিবাগ-বেসিওলি
-ফেমিট-স্ট্রাক্ট-ডিবাগ-হ্রাস -femit-struct-ডিবাগ-বিশদ[=বিশেষ তালিকা] -p -পিজি
-প্রিন্ট-ফাইল-নাম=লাইব্রেরি -প্রিন্ট-লিবিজিসিসি-ফাইল-নাম -প্রিন্ট-মাল্টি-ডিরেক্টরি
-প্রিন্ট-মাল্টি-লিব -প্রিন্ট-মাল্টি-ওএস-ডিরেক্টরি -প্রিন্ট-প্রোগ-নাম=কার্যক্রম
-প্রিন্ট-সার্চ-ডিরার্স -Q -প্রিন্ট-সিসরুট -প্রিন্ট-সিসরুট-হেডার-প্রত্যয় -সেভ-টেম্পস
-স্যাভ-টেম্পস = সিডাব্লুডি -স্যাভ-টেম্পস = ওবিজে -time[=ফাইল]
অপ্টিমাইজেশান অপশন সমূহ
-ফ্যাগ্রেসিভ-লুপ-অপ্টিমাইজেশন -ফ্যালাইন-ফাংশন[=n] -ফালাইন-জাম্প[=n]
-ফ্যালাইন-লেবেল[=n] -ফ্লাইন-লুপস [=n] -fasociative-গণিত -ফটো-প্রোফাইল
-ফটো-প্রোফাইল[=পথ] -fauto-inc-ডিসেম্বর -fbranch-সম্ভাবনা
-fbranch-টার্গেট-লোড-অপ্টিমাইজ -fbranch-টার্গেট-লোড-অপ্টিমাইজ২ -fbtr-bb-এক্সক্লুসিভ
-fcaller-সংরক্ষণ -ফচেক-ডেটা-ডিপস -fcombine-স্ট্যাক-সামঞ্জস্য -fconserve-স্ট্যাক
-FCOMPARE-LIM -fcprop-রেজিস্টার -ফক্রসজাম্পিং -fcse-অনুসরণ-জাম্প -FCSE-SKIP-BLOCKS
-fcx-ফরট্রান-নিয়ম -fcx-সীমিত-পরিসর -fdata-বিভাগ -fdce -fdelayed-শাখা
-ফডিলিট-নাল-পয়েন্টার-চেকস -fdevirtualize -fdevirtualize-অনুমানমূলকভাবে
-fdevirtualize-at-ltrans -fdse -ভয়পূর্ণ-ইনলাইনিং -ফিপা-স্রা ব্যয়বহুল-অপ্টিমাইজেশান
-ffat-lto-বস্তু ফাস্ট-গণিত শুধুমাত্র সীমাবদ্ধ-গণিত -ফ্লোট-স্টোর
-ফেক্সেস-নির্ভুলতা=শৈলী -ফরওয়ার্ড-প্রচার করা -ffp-চুক্তি=শৈলী -ফাংশন-বিভাগ
-fgcse -fgcse-আফটার-রিলোড -fgcse-las -fgcse-lm -fgraphite-পরিচয় -fgcse-Sm
-fhoist-সংলগ্ন-লোড -fif-রূপান্তর -fif-রূপান্তর২ -ফাইনডাইরেক্ট-ইনলাইনিং
-ফিনলাইন-ফাংশন -ফিনলাইন-ফাংশন-কলে-একবার -ফিনলাইন-সীমা=n
-ফিনলাইন-ছোট-ফাংশন -ফিপা-সিপি -ফিপা-সিপি-ক্লোন -ফিপা-সিপি-সারিবদ্ধকরণ -ফিপা-পিটিএ
-ফিপা-প্রোফাইল -ফিপা-বিশুদ্ধ-কনস্ট -ফিপা-রেফারেন্স -ফিপা-আইসিএফ -ফিরা-অ্যালগরিদম=অ্যালগরিদম
-ফিরা-অঞ্চল=এলাকা -ফিরা-উত্থান-চাপ -ফিরা-লুপ-চাপ -fno-ira-শেয়ার-সেভ-স্লট
-fno-ira-শেয়ার-স্পিল-স্লট -ফিরা-ভার্বোস=n -ফিসোলেট-ভুল-পথ-অধিকার
-ফিসোলেট-ভুল-পাথ-বৈশিষ্ট্য -ফাইভপ্টস -fkeep-ইনলাইন-ফাংশন
-ফকিপ-স্ট্যাটিক-কনস্টস -ফ্লাইভ-রেঞ্জ-সঙ্কোচন - ফ্লপ-ব্লক -ফ্লুপ-ইন্টারচেঞ্জ
-ফ্লুপ-স্ট্রিপ-খনি -ফ্লুপ-আনরোল-এবং-জ্যাম -ফ্লুপ-নেস্ট-অপ্টিমাইজ -floop-সমান্তরাল-সমস্ত
-ফ্লরা-রিম্যাট -ফ্লো -ফ্লো-কম্প্রেশন-লেভেল -ফ্লো-পার্টিশন=পানা -ফ্লো-রিপোর্ট
-ফ্লো-রিপোর্ট-ডব্লিউপিএ -fmerge-সমস্ত ধ্রুবক -fmerge-ধ্রুবক -fmodulo-নির্ধারিত
-fmodulo-নির্ধারিত-অনুমতি-রেগমুভস -ফমভ-লুপ-আক্রমণকারীরা -fno-শাখা-গণনা-রেজি
-ফনো-ডিফার-পপ -fno-ফাংশন-cse -fno-অনুমান-শাখা-সম্ভাব্যতা -fno-ইনলাইন
-fno-math-erno -fno-peephole -fno-peephole2 -fno-নির্ধারিত-ইন্টারব্লক -fno-sched-স্পেক
-fno-স্বাক্ষরিত-শূন্য -fno-টপলেভেল-পুনঃক্রম -fno-ট্র্যাপিং-গণিত
-fno-শূন্য-শুরু-ইন-বিএসএস -ফমিট-ফ্রেম-পয়েন্টার -ফোপ্টিমাইজ-ভাই-কল
-আংশিক-ইনলাইনিং -ফপিল-লুপস -ফপ্রেডিকটিভ-কমনিং -fprefetch-লুপ-অ্যারে
-প্রোফাইল-রিপোর্ট -প্রোফাইল-সংশোধন -ফপ্রোফাইল-ডির =পথ -প্রোফাইল-জেনারেট করুন
-ফপ্রোফাইল-জেনারেট =পথ -প্রোফাইল-ব্যবহার -ফপ্রোফাইল-ব্যবহার =পথ -প্রোফাইল-মান
-প্রোফাইল-পুনঃক্রম-ফাংশন -ফ্রেসিপ্রোকাল-গণিত মুক্ত -ফ্রেনাম-রেজিস্টার
-ফ্রিঅর্ডার-ব্লক -ফ্রিঅর্ডার-ব্লক-এবং-পার্টিশন -ফ্রিঅর্ডার-ফাংশন
-frerun-cse-আফটার-লুপ -ফ্রেশডিউল-মডিউল-নির্ধারিত-লুপ -প্রাথমিক-গণিত
-fsched2-ব্যবহার-সুপারব্লক -fsched-চাপ -fsched-স্পেক-লোড
-fsched-বিশেষ-লোড-বিপজ্জনক -ফসচড-স্টলড-ইনস-ডেপ [=n] -ফসচড-স্টলড-ইনস [=n]
-fsched-গ্রুপ-হিউরিস্টিক -fsched-সমালোচনা-পাথ-হিউরিস্টিক -ফসচড-স্পেক-ইন-হিউরিস্টিক
-fsched-র্যাঙ্ক-হিউরিস্টিক -ফসচড-লাস্ট-ইন-হিউরিস্টিক -ফসড-ডেপ-কাউন্ট-হিউরিস্টিক
-fschedule-ফিউশন -fschedule- inss -fschedule-inss2 -সেকশন-অ্যাঙ্কর
-fselective-শিডিউলিং -ফসেক্টিভ-স্কিডুলিং 2 -fsel-নির্ধারিত-পাইপলাইনিং
-fsel-নির্ধারিত-পাইপলাইন-বাইরের-লুপ -fsemantic-interposition -ফ্রিংক-মোড়
-ফসিগনালিং-ন্যানস -fsingle-নির্ভুলতা-ধ্রুবক -fsplit-ivs-ইন-আনরোলার
-fsplit-ওয়াইড-টাইপস -fssa-phiopt -ফস্ট্যাক-রক্ষক -fstack-রক্ষক-সমস্ত
-fstack-রক্ষক-শক্তিশালী -fstack-রক্ষক-স্পষ্ট -fstdarg-অপ্ট -ট্রিক্ট-এলিয়াসিং
-fstrict-ওভারফ্লো -fthread-জাম্প -ফট্রেসার -এফট্রি-বিট-সিসিপি -এফটি-বিল্টিন-কল-ডিসিই
-এফট্রি-সিসিপি -ftre-ch -Free-coalesce-inline-vars -Free-coalesce-vars -ftre-কপি-প্রপ
-ftree-কপিরনাম -free-dce -free-dominator-opts -ftre-dse -free-forwprop
-ফ্রি-ফ্রি -ftre-লুপ-যদি-রূপান্তর -এফটি-লুপ-ইফ-কনভার্ট-স্টোর -ফ্রি-লুপ-আইএম
-ফ্রি-ফিপ্রপ -ফ্রি-লুপ-ডিস্ট্রিবিউশন -এফট্রি-লুপ-ডিস্ট্রিবিউট-প্যাটার্ন
-এফট্রি-লুপ-ইভক্যানন -ফ্রি-লুপ-লিনিয়ার -এফট্রি-লুপ-অপ্টিমাইজ -ফ্রি-লুপ-ভেক্টরাইজ
-ftree- parallelize-loops=n -ফ্রি-প্রি -ফ্রি-আংশিক-প্রাক -এফটি-পিটিএ -free-reassoc
-ফ্রি-সিঙ্ক -এফটি-এসএলএসআর -ftre-sra -এফট্রি-সুইচ-রূপান্তর -free-tail-merge
-free-ter -ফ্রি-ভেক্টরাইজ -এফটি-ভিআরপি -এক সময়ে মজা করা ফানরোল-অল-লুপস
-ফানরোল-লুপস -ফানসেফ-লুপ-অপ্টিমাইজেশন -ফানসেফ-গণিত-অপ্টিমাইজেশন
-ফানসুইচ-লুপস -ফিপা-রা পরিবর্তনশীল-সম্প্রসারণ-ইন-আনরোলার -fvect-কস্ট-মডেল -fvpt
-ফওয়েব -পুরো-প্রোগ্রাম -fwpa -ফিউজ-লিঙ্কার-প্লাগইন --পরম নাম=মূল্য -O -ও0 -ও1 -ও2
-ও3 -ওএস -অফাস্ট -ওগ
প্রিপ্রসেসর অপশন সমূহ
-Aপ্রশ্ন=উত্তর -এ-প্রশ্ন[=উত্তর] -C -ডিডি -ডি -ডিএম -dn -Dম্যাক্রো[=defn] -E -H
-ইডিরাফটার Dir -অন্তর্ভুক্ত ফাইল -ইমাক্রোস ফাইল -ইপ্রিফিক্স ফাইল - উপসর্গ সহ Dir
-আগে উপসর্গ সহ Dir -সিস্টেম Dir -ইমাল্টিলিব Dir -ইসসরুট Dir -M -এমএম -এমএফ -এমজি
-এমপি -এমকিউ -এমটি -নোস্টডিঙ্ক -P -fdebug-cpp -ftrack-ম্যাক্রো-সম্প্রসারণ -fworking-ডিরেক্টরি
-রিম্যাপ -ট্রিগ্রাফ -undef -Uম্যাক্রো -ডব্লিউপি,পছন্দ -এক্সপ্রেপ্রসেসর পছন্দ -নো-ইন্টিগ্রেটেড-সিপিপি
অ্যাসেম্বলার পছন্দ
-ওয়া,পছন্দ - Xassembler পছন্দ
linker অপশন সমূহ
অবজেক্ট-ফাইলের নাম -ফিউজ-ld=linker -lলাইব্রেরি -নোস্টার্ট ফাইল -নোডফল্টলিবস -নোস্টডিলিব
-পাই - গতিশীল -s - স্থির -স্ট্যাটিক-লিবিজিসিসি -স্ট্যাটিক-libstdc ++ -স্থির-লিবাসন
-স্ট্যাটিক-লিবটসান -স্ট্যাটিক-লিবলসান -স্ট্যাটিক-লিবুবসান -static-libmpx স্ট্যাটিক-libmpxwrappers
- শেয়ার করা হয়েছে -শেয়ারড-লিবিজিসি - প্রতীকী -T লিপি -ডব্লিউএল,পছন্দ -এক্সলিংকার পছন্দ -u প্রতীক -z
শব্দ
নির্দেশিকা অপশন সমূহ
-Bউপসর্গ -IDir -iplugindir =Dir -উদ্ধৃতিDir -LDir -চশমা =ফাইল -আমি- -সাইরুট =Dir
--no-sysroot-প্রত্যয়
মেশিন নির্ভরশীল অপশন সমূহ
এআরচ 64 অপশন সমূহ -মাবি=নাম -বিগ-এন্ডিয়ান - সামান্য-এন্ডিয়ান -mgeneral-regs-শুধুমাত্র
-mcmodel=ক্ষুদ্র -mcmodel=ছোট -mcmodel=বড় -mstrict-সারিবদ্ধ -মোমিট-লিফ-ফ্রেম-পয়েন্টার
-mno-বাদ-পত্র-ফ্রেম-পয়েন্টার -mtls-dialect = desc -mtls-উপভাষা = ঐতিহ্যবাহী
-mfix-cortex-a53-835769 -MNO-FIX- CORTEX-A53-835769 -mfix-cortex-a53-843419
-MNO-FIX- CORTEX-A53-843419 -মার্চ =নাম -mcpu =নাম -mtune =নাম
অ্যাডাপ্টেভা নিকট যীশুর আবির্ভাব অপশন সমূহ -mhalf-reg-ফাইল -mprefer- শর্ট-ইনস-রেজি -মব্র্যাঞ্চ-কস্ট =NUM
-mcmove -mnops =NUM -msoft-cmpsf -msplit-lohi -পোস্ট-ইঙ্ক -পোস্ট-সংশোধন
-mstack-oftset =NUM - নিকটতম -মলং-কল -mshort-কল -msmall16 -mfp-মোড=মোড
-mvect-ডাবল -ম্যাক্স-ভেক্টর-এলাইন =NUM -msplit-vecmove-শীঘ্রই -m1reg-REG
এআরসি অপশন সমূহ -mbarrel-sifter -mcpu =সিপিইউ -ma6 -মার্ক 600 -ma7 -মার্ক 700 -এমডিপিএফপি
-mdpfp-কম্প্যাক্ট -mdpfp-দ্রুত -mno-dpfp-lrsr -মেয়া -mno-mpy -mmul32x16 -mmul64 - মান
-mspfp -mspfp-কম্প্যাক্ট -mspfp-দ্রুত -msimd -মেমসফট-ফ্লোট -mswap -এমসিআরসি -এমডিএসপি-প্যাকা -এমডিভিবিএফ
-মলক -এমএমএসি-ডি 16 -এমএমএসি -২৪ -mrtsc -mswap - টেলিফোনি -mxy -মিসাইজ -ম্যানোটেট-সারিবদ্ধ
-মার্কলিনাক্স -মারক্লিনাক্স_প্রোফ -মেপিলগ-সিএফআই -মলং-কল -মিডিয়াম-কল -msdata
-mucb-mcount -mvolatile ক্যাশে -মলিন কল -মিউটো-মডিফাই-রেগ - mbbit-peephole -mno-BRcc
-mcase-ভেক্টর-pcrel -mcompact- কেসি -mno-Cond-Exec -মিয়ারলি-সিব্র্যাঞ্চি -মেক্সপ্যান্ড-এডিডিডি
মাইন্ডেক্সড-লোড -ম্লরা -mlra-অগ্রাধিকার-কোনটি নয় -mlra-অগ্রাধিকার-কম্প্যাক্ট এমএলআরএ-অগ্রাধিকার-
ননকম্প্যাক্ট -mno-মিলিকোড -মিক্সড-কোড -mq-শ্রেণী -mrcq -mrcw -msize-স্তর=স্তর
-mtune =সিপিইউ -মমুলকস্ট =NUM -মুনালাইন-প্রোব-থ্রেশহোল্ড =সম্ভাবনা
এআরএম অপশন সমূহ -mapcs-ফ্রেম -mno-apcs-ফ্রেম -মাবি=নাম -mapcs-স্ট্যাক-চেক
-mno-apcs-স্ট্যাক-চেক -ম্যাপসিএস-ফ্লোট -mno-apcs-ালু -mapcs-পুনঃপ্রবেশকারী
-mno-apcs-পুনঃপ্রবেশকারী -msched-prolog -mno-sched-prolog - সামান্য-এন্ডিয়ান -বিগ-এন্ডিয়ান
-mfloat-abi =নাম -mfp16-ফরম্যাট=নাম -mthumb-ইন্টারওয়ার্ক -ম্নো-থাম্ব-ইন্টারওয়ার্ক -mcpu =নাম
-মার্চ =নাম -mfpu =নাম -mtune =নাম -প্রিন্ট-টিউন-তথ্য -mstructure-আকার-সীমানা=n
-মাবোর্ট-অন-নরেটার্ন -মলং-কল -mno-লং-কল -একটি-ছবি-বেস
-mno-একক-পিক-বেস -mpic-রেজিস্টার=REG -mnop-fun-dllimport -mpoke-ফাংশন-নাম
-মথম্ব -মর্ম -mtpcs-ফ্রেম -mtpcs-পাতা-ফ্রেম -mcaller-সুপার-ইন্টারওয়ার্কিং
-mcallee-সুপার-ইন্টারওয়ার্কিং -এমটিপি=নাম -mtls-উপভাষা=উপভাষা -mword-স্থানান্তর
-mfix-cortex-M3-LDRD -সাম্প্রদায়িক-প্রবেশ -64 বিটের জন্য mneon- -mslow-ফ্ল্যাশ-ডেটা
-masm-সিনট্যাক্স-ইউনিফাইড -mrestrict-এটা
এভিআর অপশন সমূহ -mmcu =MCU - maccumulate- args -মব্র্যাঞ্চ-কস্ট =মূল্য -mcall-প্রোলোগস -পুদিনা8
-mn_flash=আয়তন -mno-বিঘ্ন -মরেলাক্স -mrmw -mstrict-x -mtiny-স্ট্যাক -nodevicelib
-ওয়াদ্দার-স্পেস-কনভার্ট
ব্ল্যাকফিন অপশন সমূহ -mcpu =সিপিইউ[-সিরেভিশন] -msim -মোমিট-লিফ-ফ্রেম-পয়েন্টার
-mno-বাদ-পত্র-ফ্রেম-পয়েন্টার -mspecld-অসঙ্গতি -mno-স্পেকল্ড-অসঙ্গতি -mcsync-অসঙ্গতি
-mno-csync-অসঙ্গতি -ম্লো -64 কে -mno-Low64k -mstack-Check-l1 -মিড-শেয়ারড-লাইব্রেরি
-mno-আইডি-শেয়ারড-লাইব্রেরি -mshared-লাইব্রেরি-id=n -mleaf-id-শেয়ারড-লাইব্রেরি
-mno-লিফ-আইডি-শেয়ারড-লাইব্রেরি -msep-ডেটা -mno-সেপ-ডেটা -মলং-কল -mno-লং-কল
-mfast-fp -মিনলাইন-প্লেট - মাল্টিকোর -ম্যাকোরিয়া -mcoreb -msdram -micplb
C6X অপশন সমূহ -বিগ-এন্ডিয়ান - সামান্য-এন্ডিয়ান -মার্চ =সিপিইউ -msim -msdata =sdata-টাইপ
Cris অপশন সমূহ -mcpu =সিপিইউ -মার্চ =সিপিইউ -mtune =সিপিইউ -mmax-স্ট্যাক-ফ্রেম=n
-মেলিনাক্স-স্ট্যাকসাইজ=n - metrax4 - metrax100 -এমপিডিবাগ -mcc-init -mno-পার্শ্বপ্রতিক্রিয়া
-mstack-সারিবদ্ধ -mdata-সারিবদ্ধ -mconst- align -m32-বিট -m16-বিট -m8-বিট
-mno-প্রোলোগ-এপিলগ -mno-gotplt -মেল্ফ - maout -মেলিনাক্স -ম্লিনাক্স -সিম -সিম2
-mmul-বাগ-কাজ -mno-mul-বাগ-ওয়ার্কআরউন্ড
CR16 অপশন সমূহ -ম্ম্যাক -MCR16CPLUS -mcr16c -msim -পুদিনা32 -এমবিট-অপস -mdata-মডেল=মডেল
ডারউইন অপশন সমূহ -সব_লোড -অনুমতিযোগ্য_ক্লায়েন্ট - খিলান -আর্ক_ত্রুটি_মারাত্মক -শুধুমাত্র
-আবদ্ধ_এ_লোড -পাঁজা -বান্ডিল_লোডার -গ্রাহকের নাম -সামঞ্জস্যতা_সংস্করণ
-বর্তমান সংস্করণ -মৃত_ফালা -নির্ভরতা-ফাইল -ডিলিব_ফাইল -ডিলিঙ্কার_ইনস্টল_নাম
-গতিশীল -ডাইনামিকলিব -রপ্তানি_প্রতীক_তালিকা - ফাইললিস্ট -ফ্ল্যাট_নামস্পেস
-ফোর্স_সিপুসুবটাইপ_আল -ফোর্স_ফ্ল্যাট_নামস্পেস -হেডারপ্যাড_ম্যাক্স_ইনস্টল_নাম -ফ্রেমওয়ার্ক
-ইমেজ_বেস -এটা -ইনস্টল_নাম -কেপ_প্রাইভেট_এক্সটার্ন -মাল্টি_মডিউল
-গুণ_সংজ্ঞায়িত - multiply_defined_unused -নোল_লোড
-NO_DEAD_STRIP_INITS_AND_TERMS -নোফিক্সপ্রিবাইন্ডিং - nomultidefs -নোপ্রেবাইন্ড
-নোসগ্লিংকডিট -পেজজিরো_সাইজ -প্রিবাইন্ড -প্রিবাইন্ড_সব_টুলেভেল_মডিউল -প্রাইভেট_বান্ডেল
-শুধুমাত্র_রিলোক্স -সাম্প্রদায়িক -বিভাগের বস্তুর প্রতীক -কেন লোড -SEG1ADDR -সৃষ্টি করা
-বিভাগের বস্তুর প্রতীক -সেক্টরডার -সেগাদ্দার -SEGS_read_only_addr -SEGS_READ_WRITE_ADDR
-SEG_ADDR_TABLE -SEG_ADDR_TABLE_FILENAME -সগ্লিংকডিট -সেগপ্রোট -SEGS_read_only_addr
-SEGS_READ_WRITE_ADDR -একক_মডিউল - স্থির -সাব_লাইব্রেরি -সাব_ছাতা
-টুলেভেল_নামস্পেস - ছাতা -অনির্ধারিত -অরপ্তানিকৃত_প্রতীক_তালিকা
-দুর্বল_রেফারেন্স_অমিল -হাউডস বোঝা -F - gused -গফুল -mmacosx-সংস্করণ-মিন=সংস্করণ
-mkernel -মন-বাইট-বুল
ডিসেম্বর আরম্ভ অপশন সমূহ -mno-fp-regs -মেমসফট-ফ্লোট -মিইইই -মিইই-সহ-অনির্দিষ্ট
-mieee-সঙ্গতিপূর্ণ -mfp-ট্র্যাপ-মোড=মোড -mfp-রাউন্ডিং-মোড=মোড -mtrap-নির্ভুলতা=মোড
-নির্মাণ-ধ্রুবক -mcpu =cpu-টাইপ -mtune =cpu-টাইপ -mbwx -ম্ম্যাক্স -mfix -mcix
-mfloat-ভ্যাক্স -mfloat-ieeee -mexplicit-রিলোকস -msmall-ডেটা -mlarge-ডেটা -msmall-টেক্সট
- বড়-পাঠ্য -mmemory-lateency=সময়
FR30 অপশন সমূহ -msmall-মডেল -mno-lsim
FRV অপশন সমূহ -mgpr-32 -mgpr-64 -mfpr-32 -mfpr-64 -মহার্ড-ফ্লোট -মেমসফট-ফ্লোট
- malloc-cc -mfixed-সিসি -mdword -mno-dword - mduble -এমনো-ডবল -মিডিয়া -mno-মিডিয়া
-মুমুলাদ -মনো-মুলাদ -mfdpic -মিনলাইন-প্লেট -mgprel-ro -মাল্টিলিব-লাইব্রেরি-ছবি
-মিলিংকড-এফপি -মলং-কল - ক্ষতিকর লেবেল -মিলিব্রেরি-ছবি -এমএসিসি -4 -এমএসিসি -8 -মপ্যাক
-mno-প্যাক -mno-Eflags -mcond-চালনা -এমনো-কন্ড-মুভ -মোপ্টিমাইজ-সদস্য
-mno-অপ্টিমাইজ-মেম্বার -mscc -mno-scc -mcond- এক্সেক -mno-Cond-Exec -mvliw-শাখা
-mno-vliw-শাখা -multi-cond-exec -mno-মাল্টি-কন্ড-এক্সেক -মনেস্টেড-কন্ড-এক্সেক
-ম্নো-নেস্টেড-কন্ড-এক্সেক -mtomcat-পরিসংখ্যান -mtls -এমটিএলএস -mcpu =সিপিইউ
জিএনইউ / লিনাক্স অপশন সমূহ -mglibc - muclibc -এমবিওনিক -ম্যান্ড্রয়েড -tno-android-cc -tno-android-ld
H8 / 300 অপশন সমূহ -মরেলাক্স -এমএইচ -মাইক্রোসফট -mn -মেক্সআর -mno-exr -পুদিনা32 -ম্যালাইন-300
এইচপিপিএ অপশন সমূহ -মার্চ =আর্কিটেকচার-টাইপ -মডিসেবল-এফপ্রেগস -mdisable-সূচীকরণ
-mfast-পরোক্ষ-কল -এমগাস -mgnu-Ld -এমএইচপি-এলডি -mfixed- রেঞ্জ =রেজিস্টার-পরিসীমা
-এমজাম্প-ইন-বিলম্ব -মিলিঙ্কার-অপ্ট -মলং-কল -মলাং-লোড-স্টোর -mno-অক্ষম-fpregs
-mno-অক্ষম-সূচীকরণ -mno-দ্রুত-পরোক্ষ-কল -মনো-গ্যাস -এমনো-জাম্প-ইন-বিলম্ব
-mno-লং-লোড-স্টোর -mno-পোর্টেবল-রানটাইম -মনো-নরম-ফ্লোট -mno-স্পেস-regs
-মেমসফট-ফ্লোট -এমপিএ-রিস্ক-1-0 -এমপিএ-রিস্ক-1-1 -এমপিএ-রিস্ক-2-0 পরিবহনযোগ্য-রানটাইম
-mschedule =cpu-টাইপ -mspace -regs -msio -mwsio -মিউনিক্স=ইউনিক্স-এসটিডি -নোলিবডল্ড - স্থির
- থ্রেড
আইএ-64 অপশন সমূহ -বিগ-এন্ডিয়ান - সামান্য-এন্ডিয়ান -mgnu- হিসাবে -mgnu-Ld -মনো-ছবি
-mvolatile-asm-স্টপ -মরেজিস্টার-নাম -msdata -ম্নো-এসডিএটা -মকনস্ট্যান্ট-জিপি -মটো-ছবি
-মফিউজড-এমএডিডি -মিনলাইন-ফ্লোট-ডিভাইড-মিন-লেটেন্সি -মিনলাইন-ফ্লোট-ডিভাইড-ম্যাক্স-থ্রুপুট
-mno-ইনলাইন-ফ্লোট-বিভাজন -মিনলাইন-ইন-ডিভাইড-মিন-লেটেন্সি
-মিনলাইন-ইন-ডিভাইড-সর্বোচ্চ-থ্রুপুট -mno-ইনলাইন-ইন-ডিভাইড -মিনলাইন-sqrt-মিন-লেটেন্সি
-মিনলাইন-স্কার্ট-ম্যাক্স-থ্রুপুট -mno-ইনলাইন-sqrt -mdwarf2-asm -মর্লি-স্টপ-বিটস
-mfixed- রেঞ্জ =রেজিস্টার-পরিসীমা -mtls-আকার=tls-আকার -mtune =cpu-টাইপ -milp32 -mlp64
-msched-br-ডেটা-স্পেক -msched- আর-ডেটা-স্পেক -msched-নিয়ন্ত্রণ-বিশেষ -msched-Br-ইন-ডেটা-স্পেক
-msched-ar-ইন-ডেটা-স্পেক -এমএসচেড-ইন-কন্ট্রোল-স্পেক -msched-pec-Ldc
-msched-স্পেক-কন্ট্রোল-এলডিসি -msched-prefer- নন-ডেটা-স্পেক-ইনস
-msched-prefer-non- নিয়ন্ত্রণ-স্পেক-ইনসেনস -msched-স্টপ-বিট-পরে-প্রতিটি-চক্র
-msched-গণনা-বিশেষ-ইন-গুরুত্বপূর্ণ-পথ -msel-নির্ধারিত-না-চেক-কন্ট্রোল-স্পেক
-msched-fp-mem-deps-শূন্য-খরচ -msched-max- মেমরি-ইনসনস-হার্ড-সীমাবদ্ধ
-msched-max- মেমরি-ইনসএনএস =সর্বোচ্চ-ইনস
LM32 অপশন সমূহ -mbarrel-shift-সক্ষম -mdivide-সক্ষম -মিলিপ্লাই-সক্রিয়
-msign-এক্সটেন্ড-সক্ষম -মিউজার-সক্ষম
এম 32 আর/ডি অপশন সমূহ -m32r2 -m32rx -m32r -এমডিবাগ ম্যালাইন-লুপস -mno- align-loops
-মিস্যু-রেট=সংখ্যা -মব্র্যাঞ্চ-কস্ট =সংখ্যা -মডেল=কোড-আকার-মডেল-টাইপ -msdata =তথ্য-
আদর্শ -mno-flush-func -mflush-func =নাম -mno-ফ্লাশ-ট্র্যাপ -mflush- ফাঁদ =সংখ্যা -G NUM
M32C অপশন সমূহ -mcpu =সিপিইউ -msim -মেমরেগস=সংখ্যা
M680x0 অপশন সমূহ -মার্চ =খিলান -mcpu =সিপিইউ -mtune =সুর -m68000 -m68020 -M68020-40
-M68020-60 -m68030 -m68040 -m68060 -mcpu32 -m5200 -m5206e -m528x -m5307 -m5407
-mcfv4e -এমবিটফিল্ড -mno-বিটফিল্ড -mc68000 -mc68020 -মনোবিটফিল্ড -এমআরটিডি -mno-rtd
-mdiv -mno-div -mshort -mno-ছোট -মহার্ড-ফ্লোট -m68881 -মেমসফট-ফ্লোট -এমপিক্রেল
-ম্যালিগ-ইন -mstrict-সারিবদ্ধ -msep-ডেটা -mno-সেপ-ডেটা -মশার্ড-লাইব্রেরি-আইডি = এন
-মিড-শেয়ারড-লাইব্রেরি -mno-আইডি-শেয়ারড-লাইব্রেরি -mxgot -mno-xgot
এমকোর অপশন সমূহ - mhardlit -এমনো-হার্ডলিট -mdiv -mno-div -mrelax- অবিলম্বে
-এমনো-আরাম-অবিলম্বে -মওয়াইড-বিটফিল্ডস -mno-ওয়াইড-বিটফিল্ড -m4byte-ফাংশন
-mno-4byte-ফাংশন -mcallgraph-ডেটা -mno-কলগ্রাফ-ডেটা -mslow-বাইট
-mno-স্লো-বাইট -mno-lsim - সামান্য-এন্ডিয়ান -বিগ-এন্ডিয়ান -m210 -m340
-mstack-বৃদ্ধি
এমইপি অপশন সমূহ - mabsdiff -মল-অপস - ম্যাভারেজ -মবেসড =n -এমবিটপস -mc =n -mclip
-mconfig =নাম -mcop -mcop32 -mcop64 -mivc2 -এমডিসি -mdiv -মেব -মেল -মিও-অস্থির -ml
-ম্লিডজ -মিমি -মিমিনম্যাক্স -মমল্ট -মনো-অপস -মরেপেট -মাইক্রোসফট -মসাতুর -msdram -msim -msimnovec
-এমটিএফ -mtiny =n
মাইক্রোব্লেজ অপশন সমূহ -মেমসফট-ফ্লোট -মহার্ড-ফ্লোট -msmall-বিভাজন -mcpu =সিপিইউ -mmemppy
-mxl-soft-mul -mxl-soft-div -mxl-ব্যারেল-শিফট -mxl-প্যাটার্ন-তুলনা -mxl-স্ট্যাক-চেক
-mxl-gp-opt -mno-ক্লিয়ারবস -mxl-গুণ-উচ্চ -mxl-ফ্লোট-রূপান্তর -mxl-Float-sqrt
-বিগ-এন্ডিয়ান - সামান্য-এন্ডিয়ান -mxl-পুনঃক্রম -mxl-মোড-অ্যাপ-মডেল
মিপস অপশন সমূহ -ইএল -ইবি -মার্চ =খিলান -mtune =খিলান -মিপস 1 -মিপস 2 -মিপস 3 -মিপস 4
-মিপস 32 -mips32r2 -mips32r3 -mips32r5 -mips32r6 -মিপস 64 -mips64r2 -mips64r3
-mips64r5 -mips64r6 -মিপস 16 -mno-Mips16 -mflip-MIPS16 -মিন্টারলিংক-সংকুচিত
-mno-ইন্টারলিংক-সংকুচিত -মিন্টারলিঙ্ক-এমআইপিএস 16 -mno-ইন্টারলিঙ্ক-এমআইপিএস 16 -মাবি=আবী
-ম্যাবিক্যালস -মনো-অবিকালস -মশার্ড -mno-ভাগ করা -mplt -mno-plt -mxgot -mno-xgot
-mgp32 -mgp64 -mfp32 -mfpxx -mfp64 -মহার্ড-ফ্লোট -মেমসফট-ফ্লোট -mno-ভাসা
-একটি-ভাসা -mdouble-ালু -modd-spreg -mno-odd-spreg -ম্যাবস =মোড -মনন=এনকোডিং
-এমডিএসপি -mno-dsp -mdspr2 -mno-dspr2 -এমএমসিইউ -mmno-mcu -মেভা -এমনো-ইভা -mvirt -mno-virt
-mxpa -mno-xpa - মিমিক্রোমিপস -mno-মাইক্রোমিপস -mfpu =fpu-টাইপ -msmartmips -mno-smartmips
প্রতিবন্ধী-একক -mno-জোড়া-একক -mdmx -mno-mdmx -মিপস 3 ডি -mno-Mips3d -এমএমটি
-mno-Mt -mllsc -mno-llsc -মলং64 -মলং32 -msym32 -mno-sym32 -GNUM
-ম্লোকাল-এসডিএটা -mno-স্থানীয়-এসডেটা -মেক্সটার্ন-এসডেটা -mno-বাহ্যিক-এসডেটা -mgpopt -mno-gopt
-মেম্বেড-ডেটা -mno-এম্বেডেড-ডেটা -মুনিনীত-কনস্ট-ইন-রোডাটা
-mno-uninit-const- ইন-রোডাটা -mcode-পাঠযোগ্য=বিন্যাস -msplit-ঠিকানা
-mno-বিভক্ত-ঠিকানা -mexplicit-রিলোকস -mno-স্পষ্ট-রিলোকস -mcheck-শূন্য-বিভাগ
-mno-চেক-শূন্য-বিভাগ -mdivide-ফাঁদ -মডিভাইড-ব্রেকস -mmemppy -mno-আমার মনে
-মলং-কল -mno-লং-কল -মমদ -মনো-পাগল -মিমাদ্দ -মনো-ইমাদ -মফিউজড-এমএডিডি
-মনো-ফিউজড-এমএডিডি -নোকপ্প -mfix-24k -mno-Fix-24k -mfix-r4000 -mno-Fix-r4000
-mfix-r4400 -mno-Fix-r4400 -mfix-r10000 -mno-Fix-r10000 -mfix-rm7000 -mno-Fix-rm7000
-mfix-vr4120 -mno-Fix-vr4120 -mfix-vr4130 -mno-Fix-vr4130 -mfix-Sb1 -mno-Fix-Sb1
-mflush-func =ফাংশন -mno-flush-func -মব্র্যাঞ্চ-কস্ট =NUM শাখা-সম্ভাব্য
-mno-শাখা-সম্ভাব্য -mfp- ব্যতিক্রম -mno-fp-ব্যতিক্রম -mvr4130-সারিবদ্ধ -mno-vr4130-সারিবদ্ধ
-msynci -ম্নো-সিঙ্কি -ম্রেলাক্স-পিক-কলস -এমনো-আরাম-পিক-কল -mmcount-ra-ঠিকানা
এমএমআইএক্স অপশন সমূহ -mlibfuncs -mno-libfuncs -মেপসিলন - mno-epsilon -মাবি=গ্নু
-মাবি=মিক্সওয়্যার -mzero-প্রসারিত -mknuthdiv -mtoplevel-প্রতীক -মেল্ফ ব্রাঞ্চ-ভবিষ্যদ্বাণী
-mno-শাখা-ভবিষ্যদ্বাণী -mbase-ঠিকানা -mno-বেস-ঠিকানা -একটি-প্রস্থান
-mno-একক-প্রস্থান
MN10300 অপশন সমূহ -mmult-বাগ -mno-mult-বাগ -mno-am33 - mam33 -mam33-2 - mam34 -mtune =সিপিইউ-
আদর্শ -ম্রেটার্ন-পয়েন্টার-অন-ডি 0 -mno-Crt0 -মরেলাক্স -মলিও -mstelb
সাহস অপশন সমূহ -মেব -মেল -mmul.x -mno-Crt0
MSP430 অপশন সমূহ -msim -masm-হেক্স -mmcu = -mcpu = - বড় -msmall -মরেলাক্স -mhwmult = -মিন্ট
এনডিএস 32 অপশন সমূহ -বিগ-এন্ডিয়ান - সামান্য-এন্ডিয়ান -মরিডস-রেজেস -mfull-regs -mcmov -mno-cmov
-mperf-ext -mno-parf-ext -mv3push -mno-v3push -m16 বিট -mno-16 বিট -misr-ভেক্টর-আকার=NUM
-mcache-block-size =NUM -মার্চ =খিলান -mcmodel =কোড-মডেল -ম্যাক্টর-ডোর -মরেলাক্স
Nios II অপশন সমূহ -G NUM -mgpopt=পছন্দ -mgpopt -mno-gpopt -মেল -মেব -mno-বাইপাস-ক্যাশে
-এমবিপাস-ক্যাশে -mno-ক্যাশে-অস্থির -mcache-অস্থির -mno-fast-sw-div -মাস্ট-সুই-ডিআইভি
-mhw-mul -mno-hw-mul -mhw-mulx -mno-Hw-mulx -mno-hw-div -mhw-div -মকাস্টম-inss=N
-এমনো-কাস্টম-inss -mcustom-fpu-cfg =নাম -মহাল -msmallc -msys-crt0 =নাম -msys-lib =নাম
এনভিডিয়া PTX অপশন সমূহ -m32 -m64 - mmainkernel
পিডিপি -11 অপশন সমূহ -এমএফপিইউ -মেমসফট-ফ্লোট -mac0 -mno-ac0 -m40 -m45 -m10 -mbcopy
-এমবিকপি-বিল্টিন -পুদিনা32 -mno-int16 -পুদিনা16 -mno-int32 -mfloat32 -mno-Float64
-mfloat64 -mno-Float32 -মাবশি -মনো-অবশি ব্রাঞ্চ-ব্যয়বহুল ব্রাঞ্চ-সস্তা
-মিউনিক্স-এএসএম -এমডিইসি-এএসএম
পিকোচিপ অপশন সমূহ -mae =ae_টাইপ -mvliw-lokahead=N -চিহ্ন-রূপে-ঠিকানা
-mno-অদক্ষ-সতর্কতা
পাওয়ারপিসি অপশন সমূহ RS/6000 এবং PowerPC অপশন দেখুন।
RL78 অপশন সমূহ -msim -mmul=কোনটি নয় -mmul = g13 -mmul = rl78 -m64bit-ডাবলস -m32bit-ডাবলস
আরএস/6000 এবং পাওয়ারপিসি অপশন সমূহ -mcpu =cpu-টাইপ -mtune =cpu-টাইপ -mcmodel =কোড-মডেল
-mpowerpc64 -মালটিভিক -mno-altivec -mpowerpc-gpopt -mno-Fowerpc-gpopt
-mpowerpc-Gfxopt -mno-Fowerpc-gfxopt -mmfcrf -mno-mfcrf -mpopcntb -mno-popcntb
-mpopcntd -mno-popcntd -mfprnd -mno-fprnd -mcmpb -mno-cmpb -mmfpgpr -mno-mfpgpr
-মহার্ড-ডিএফপি -এমনো-হার্ড-ডিএফপি -মফুল-টোক -মিনিমাল-টক -mno-Fp-in-toc -ম্নো-এসএম-ইন-টোক
-m64 -m32 -mxl-কম্প্যাট -mno-xl-compat -এমপিই ক্ষতিকর শক্তি ক্ষতিকর-প্রাকৃতিক
-মেমসফট-ফ্লোট -মহার্ড-ফ্লোট - একাধিক -mno-একাধিক -একটি-ভাসা -mdouble-ালু
-msimple-fpu -মস্ট্রিং -mno-স্ট্রিং -মুপডেট -mno-আপডেট -mavoid-সূচিবদ্ধ-ঠিকানা
-mno-এড়িয়ে যাওয়া-সূচিবদ্ধ-ঠিকানা -মফিউজড-এমএডিডি -মনো-ফিউজড-এমএডিডি -mbit-সারিবদ্ধ
-mno-বিট-সারিবদ্ধ -mstrict-সারিবদ্ধ -mno-কঠোর-সারিবদ্ধ - পুনরায় স্থানান্তরযোগ্য -এমনো-রিলোকেটেবল
-ম্রেলোক্যাটেবল-লিব -mno-রিলোকেটেবল-লিব -mtoc -mno-toc - সামান্য - সামান্য-এন্ডিয়ান
-বিগ -বিগ-এন্ডিয়ান -মডিনামিক-নো-পিক -মালটিভিক -mswdiv -একটি-ছবি-বেস
-prioritize-restricted-insns=অগ্রাধিকার -msched-ব্যয়বহুল-dep=নির্ভরতা_প্রকার
-মিনসার্ট-শেড-নপস =পরিকল্পনা -mcall-sysv -mcall-netbsd -maix-struct-রিটার্ন
-msvr4-struct-রিটার্ন -মাবি=abi-টাইপ -সুরক্ষিত-plt -mbss-plt
-ব্লক-মুভ-ইনলাইন-সীমা=NUM -মিসেল -mno-isel -মিসেল = হ্যাঁ -মিসেল = না -এমএসপিই -mno-spe
-mspe=হ্যাঁ -mspe=না - প্রতিবন্ধী -এমজেন-সেল-মাইক্রোকোড -mwarn-সেল-মাইক্রোকোড -mvrsave
-mno-vrsave -mmulhw -mno-mulhw -mdlmzb -mno-dlmzb -mfloat-gprs=হ্যাঁ -mfloat-gprs = না
-mfloat-gprs=একক -mfloat-gprs=ডবল -এমপ্রোটোটাইপ -mno-প্রোটোটাইপ -msim -এমএমভিএমই
- পাগল - myellowknife -সদস্য -msdata -msdata =মনোনীত করা -এমভিএক্সওয়ার্কস -G NUM - থ্রেড -mrecip
-mrecip =মনোনীত করা -mno-রেসিপি -mrecip-নির্ভুলতা -mno-রেসিপি-নির্ভুলতা -mveclibabi =আদর্শ -mfriz
-এমনো-ফ্রিজ -পয়েন্টার-টু-নেস্টেড-ফাংশন -mno-পয়েন্টার-টু-নেস্টেড-ফাংশন
-msave-toc-পরোক্ষ -mno-সংরক্ষণ-toc-পরোক্ষ -এমপাওয়ার8-ফিউশন -mno-mpower8-ফিউশন
-এমপাওয়ার8-ভেক্টর -mno-power8-ভেক্টর -mcrypto -mno-ক্রিপ্টো -mdirect-চলন -mno-সরাসরি-সরানো
-mquad-মেমরি -mno-quad-মেমরি -mquad-মেমরি-পারমাণবিক -mno-quad-মেমরি-পারমাণবিক
-mcompat-Align-parm -mno-compat- অ্যালাইন-পারম -mupper-regs-df -mno-উপর-রেজিস-ডিএফ
-mupper-regs-sf -mno-উপর-রেজিস-এসএফ -মুপার-রেগস -mno-উপর-রেজিস
RX অপশন সমূহ -m64bit-ডাবলস -m32bit-ডাবলস -এফপিইউ -নোফপু -mcpu = -বিগ-এন্ডিয়ান-ডেটা
-মিলিটল-এন্ডিয়ান-ডেটা -msmall-ডেটা -msim -মনো-সিম -mas100-সিনট্যাক্স -mno-as100-সিনট্যাক্স
-মরেলাক্স -mmax-ধ্রুবক-আকার= -মিন্ট-রেজিস্টার= -mpid -mno-সতর্ক-একাধিক-দ্রুত-বিঘ্ন
-msave-acc-ইন-ইন্টারপ্রেস
S / 390 এবং zseries অপশন সমূহ -mtune =cpu-টাইপ -মার্চ =cpu-টাইপ -মহার্ড-ফ্লোট -মেমসফট-ফ্লোট
-মহার্ড-ডিএফপি -এমনো-হার্ড-ডিএফপি -মলং-ডবল-64 -মলং-ডবল-128 -এমব্যাকচেইন
-mno-ব্যাকচেইন -প্যাকড-স্ট্যাক -mno-প্যাকড-স্ট্যাক -msmall-Exec -ম্নো-স্মল-এক্সেক
-mmvcle -mno-mvcle -m64 -m31 -এমডিবাগ -mno-ডিবাগ -মেসা - mzarch -এমটিপিএফ-ট্রেস
-mno-tpf-ট্রেস -মফিউজড-এমএডিডি -মনো-ফিউজড-এমএডিডি -মওয়ার্ন-ফ্রেমসাইজ -mwarn-ডাইনামিকস্ট্যাক
-mstack-আকার -mstack গার্ড -mhotpatch =অর্ধশব্দ,অর্ধশব্দ
স্কোর অপশন সমূহ -মেব -মেল -mnhwloop -মুলস -ম্ম্যাক -mscore5 -mscore5u -mscore7 -mscore7d
SH অপশন সমূহ -m1 -m2 -m2e -m2a-nofpu -m2a-একক-শুধু -m2a-একক -m2a -m3 -m3e
-m4-nofpu -m4-একক-শুধু -m4-একক -m4 -m4a-nofpu -m4a-একক-শুধু -m4a-একক
-m4a -m4al -m5-64 মিডিয়া -M5-64Media-nofpu -m5-32 মিডিয়া -M5-32Media-nofpu -m5-কম্প্যাক্ট
-m5-কম্প্যাক্ট-নফপু -এমবি -ml -mdalign -মরেলাক্স -বিগটেবল -mfmovd -মিতাছি -মরেনেসাস
-এমনো-রেনেসাস - mnomacsave -মিইইই -mno-ieee -এমবিটপস -মিসাইজ -মিনলাইন-আইসি_ইনভ্যালিডেট
-mpadstruct -এমস্পেস -mprefergot -মিউজারের মোড -মাল্টকস্ট=সংখ্যা -mdiv =কৌশল
-mdivsi3_libfunc =নাম -mfixed- রেঞ্জ =রেজিস্টার-পরিসীমা মাইন্ডেক্সড-অ্যাড্রেসিং
-mgettrcost =সংখ্যা -mpt-স্থির -ম্যাকুমুলেট-আউটগোয়িং-আর্গস -অবাধ্য-প্রতীক
-ম্যাটমিক-মডেল=পারমাণবিক মডেল -মব্র্যাঞ্চ-কস্ট =NUM -mzdcbranch -mno-zdcbranch
-mcbranch-force-delay-slot -মফিউজড-এমএডিডি -মনো-ফিউজড-এমএডিডি -mfsca -mno-fsca -mfsrra
-mno-fsrra -প্রকাশ করা -এমটাএস
সোলারিস 2 অপশন সমূহ -mclear-hwcap -mno-ক্লিয়ার-hwcap -মিম্পুর-টেক্সট -mno-অশুদ্ধ-টেক্সট
- থ্রেড - থ্রেড
SPARC অপশন সমূহ -mcpu =cpu-টাইপ -mtune =cpu-টাইপ -mcmodel =কোড-মডেল -mmemory-মডেল=মেম-
মডেল -m32 -m64 -ম্যাপ-রেজেস -mno-app -regs -মফাস্টার-স্ট্রাক্টস -mno-দ্রুত-structs
-mflat -এমনো-ফ্ল্যাট -এমএফপিইউ -mno-fpu -মহার্ড-ফ্লোট -মেমসফট-ফ্লোট -মহার্ড-কোয়াড-ফ্লোট
-মেমসফট-কোয়াড-ফ্লোট -mstack-পক্ষপাত -mno-স্ট্যাক-পক্ষপাত -সাম্প্রদায়িক-দ্বৈত
-mno-unaligned- ডাবলস -মিউজার-মোড -mno-ব্যবহারকারী-মোড -mv8plus -mno-v8plus -এমভিএস
-mno-vis -mvis2 -mno-vis2 -mvis3 -mno-vis3 -mcbcond -mno-cbcond -mfmaf -mno-fmaf
-mpopc -mno-popc -mfix-at697f -mfix-ut699
এসপিএস অপশন সমূহ -মওয়ার্ন-রিলোক -মরর-রিলোক -এমএসএফ-ডিএমএ -মুনসেফ-ডিএমএ ব্রাঞ্চ-ইঙ্গিত
-msmall-মেম -ম্লার্জ-মেম -mstdmain -mfixed- রেঞ্জ =রেজিস্টার-পরিসীমা -mea32 -mea64
-maddress-স্পেস-রূপান্তর -mno-ঠিকানা-স্পেস-রূপান্তর -mcache-size =ক্যাশে-আকার
-ম্যাটমিক-আপডেট -mno-পরমাণু-আপডেট
পদ্ধতি V অপশন সমূহ -কিউ -কিউএন -ওয়াইপি,পাথ -ইম,Dir
টাইল-জিএক্স অপশন সমূহ -mcpu = সিপিইউ -m32 -m64 -বিগ-এন্ডিয়ান - সামান্য-এন্ডিয়ান -mcmodel =কোড-মডেল
টাইলপ্রো অপশন সমূহ -mcpu =সিপিইউ -m32
V850 অপশন সমূহ -মলং-কল -mno-লং-কল -এমইপি -mno-ep -mprolog-ফাংশন
-mno-prolog-ফাংশন -এমস্পেস -mtda =n -msda =n -mzda =n -ম্যাপ-রেজেস -mno-app -regs
-mdisable-calt -mno-অক্ষম-কল -MV850E2V3 -mv850e2 -mv850e1 -mv850es -mv850e
-mv850 -MV850E3V5 -ম্লুপ -মরেলাক্স -মলং-জাম্প -মেমসফট-ফ্লোট -মহার্ড-ফ্লোট -এমজিসিসি-আবি
-MRH850-ABI -এমবিগ-সুইচ
ভ্যাক্স অপশন সমূহ -এমজি -mgnu -মিউনিক্স
ভিজিয়াম অপশন সমূহ -এমডিবাগ -msim -এমএফপিইউ -mno-fpu -মহার্ড-ফ্লোট -মেমসফট-ফ্লোট -mcpu =cpu-টাইপ
-mtune =cpu-টাইপ -msv-মোড -মিউজার-মোড
VMS অপশন সমূহ -mvms-রিটার্ন-কোড -mdebug-main =উপসর্গ -mmalloc64 -mpointer-size =আয়তন
ভিএক্স ওয়ার্কস অপশন সমূহ -এমআরটিপি -অ-স্থির -বস্ট্যাটিক -বিডাইনামিক -Xbind-অলস -এক্সবাইন্ড-এখন
x86 অপশন সমূহ -mtune =cpu-টাইপ -মার্চ =cpu-টাইপ -mtune-ctrl =বৈশিষ্টের তালিকা
-mdump-টিউন- বৈশিষ্ট্য -mno-ডিফল্ট -mfpmath =একক -মমাস =উপভাষা -মনো-ফ্যান্সি-ম্যাথ -387
-mno-Fp-ret- ইন -387 -মেমসফট-ফ্লোট -mno-ওয়াইড-গুণ -এমআরটিডি - ম্যালিগন-ডবল
-mpreferred- স্ট্যাক-সীমানা =NUM -মিনকমিং-স্ট্যাক-সীমা =NUM -এমসিএলডি -mcx16 - msahf
-মেমভবে -mcrc32 -mrecip -mrecip =মনোনীত করা -mvzeroupper -mprefer-Avx128 -এমএমএমএক্স -এমএসই -msse2
-msse3 -mssse3 -msse4.1 -msse4.2 -msse4 -মভেক্স -mavx2 -mavx512f -mavx512pf -mavx512er
-mavx512cd -মশা -মেস -mpclmul -mfsgsbase -mrdrnd -mf16c -mfma -mprefetchwt1
-mclflushopt -mxsavec -mxsaves -msse4a -m3dnow -mpopcnt - mabm -এমবিএমআই -এমটিবিএম -mfma4 -mxop
-mlzcnt -mbmi2 -mfxsr -mx সংরক্ষণ করুন -mxsaveopt -mrtm -mlwp -mmpx -mmwaitx -মথ্রেডস
-ম্নো-এলাইন-স্ট্রিংপস -মিনলাইন-অল-স্ট্রিংপস -মিনলাইন-স্ট্রিংপস-গতিশীলভাবে
-mstringop-কৌশল=পানা -mmemcpy-কৌশল=কৌশল -mmemset-কৌশল=কৌশল
-mpush-আরগস -ম্যাকুমুলেট-আউটগোয়িং-আর্গস -m128bit-লং-ডাবল -m96bit-লং-ডাবল
-মলং-ডবল-64 -মলং-ডবল-80 -মলং-ডবল-128 -আমগ্রিপর্ম =NUM -msseregparm
-mveclibabi =আদর্শ -mvect8-Ret-ইন-এমইএম -mpc32 -mpc64 -mpc80 -mstackrealign
-মোমিট-লিফ-ফ্রেম-পয়েন্টার -মনো-রেড-জোন -mno-Tls- ডাইরেক্ট-সেগ-রেফস -mcmodel =কোড-মডেল
-মাবি=নাম -maddress-মোড=মোড -m32 -m64 -mx32 -m16 -mlarge-ডেটা-থ্রেশহোল্ড=NUM
-msse2avx -মফেন্ট্রি -mrecord-mcount -mnop-mcount -m8bit-idiv
-mavx256-বিভক্ত-অসংখ্যাযুক্ত-লোড -mavx256-বিভক্ত-অসংখ্যাযুক্ত-স্টোর -ম্যালাইন-ডেটা=আদর্শ
-mstack- প্রোটেক্টর-গার্ড =পাহারা
x86 উইন্ডোজ অপশন সমূহ -মকনসোল -mcygwin -ম্নো-সিগউইন -এমডিএল -mnop-fun-dllimport -মথ্রেড
-মিউনিকোড -mwin32 -মুইন্ডোস -fno-সেট-স্ট্যাক-এক্সিকিউটেবল
Xstormy16 অপশন সমূহ -msim
এক্সটেনসা অপশন সমূহ -mconst16 -mno-const16 -মফিউজড-এমএডিডি -মনো-ফিউজড-এমএডিডি -এমফোর্স-নো-ছবি
mserialize-অস্থির -mno-সিরিয়ালাইজ-অস্থির -মটেক্সট-বিভাগ-আধ্যাত্মিক
-mno-টেক্সট-বিভাগ-আক্ষরিক -mtarget-lign -mno-টার্গেট-সারিবদ্ধ -মল্লং কল
-মনো-লং কল
zseries অপশন সমূহ S/390 এবং zSeries বিকল্পগুলি দেখুন।
কোড প্রজন্ম অপশন সমূহ
-fcal-সংরক্ষিত-REG -fcal-ব্যবহৃত-REG স্থির-REG - ব্যতিক্রম -অ-কল-ব্যতিক্রম
-ফডিলিট-ডেড-এক্সসেপশনস -ফানউইন্ড-টেবিল -ফ্যাসিঙ্ক্রোনাস-আনওয়াইন্ড-টেবিল -fno-gnu-অনন্য
-ফিনহিবিট-আকার-নির্দেশ -ফিনস্ট্রুমেন্ট-ফাংশন
-ফিনস্ট্রুমেন্ট-ফাংশন-বাদ-ফাংশন-লিস্ট=সিম,সিম...
-ফিনস্ট্রুমেন্ট-ফাংশন-বাদ-ফাইল-তালিকা=ফাইল,ফাইল... -fno-সাধারণ -ফনো-ইন্ডেন্ট
-fpcc-struct-রিটার্ন -fpic -fpic -fpie -fpie -fno-জাম্প-টেবিল -frecord-gcc-সুইচ
-freg-struct-রিটার্ন -ফশোর্ট-এনামস -fshort-ডাবল -ফশোর্ট-ডাব্লুচার -ফভারবোজ-অফল
-fpack-truct [=n] -fstack-চেক -ফস্ট্যাক-সীমা-নিবন্ধন =REG -fstack-সীমা-চিহ্ন=সিম
-fno-স্ট্যাক-সীমা -fsplit-স্ট্যাক - fleading-আন্ডারস্কোর -ftls-মডেল=মডেল
-fstack-পুনঃব্যবহার=Reuse_level -ftrapv -fwrapv -fbounds-চেক
-fvisibility=[ডিফল্ট|অভ্যন্তরীণ|গোপন|রক্ষিত] -fstrict-অস্থির-বিটফিল্ড
-fsync-libcalls
অপশন সমূহ নিয়ামক দ্য রকম of আউটপুট
সংকলনে চারটি ধাপ পর্যন্ত জড়িত থাকতে পারে: প্রিপ্রসেসিং, কম্পাইলেশন প্রপার, অ্যাসেম্বলি এবং
লিঙ্ক করা, সবসময় সেই ক্রমে। GCC বেশ কিছু প্রিপ্রসেসিং এবং কম্পাইল করতে সক্ষম
ফাইলগুলি হয় একাধিক অ্যাসেম্বলার ইনপুট ফাইলে, অথবা একটি অ্যাসেম্বলার ইনপুট ফাইলে; তারপর
প্রতিটি অ্যাসেম্বলার ইনপুট ফাইল একটি অবজেক্ট ফাইল তৈরি করে এবং লিঙ্ক করা সমস্ত অবজেক্টকে একত্রিত করে
একটি এক্সিকিউটেবল ফাইলে ফাইলগুলি (যেগুলি নতুন সংকলিত, এবং ইনপুট হিসাবে নির্দিষ্ট করা হয়েছে)।
যেকোন প্রদত্ত ইনপুট ফাইলের জন্য, ফাইলের নামের প্রত্যয়টি নির্ধারণ করে কি ধরনের সংকলন
সম্পন্ন:
ফাইল.c
সি সোর্স কোড যা অবশ্যই প্রিপ্রসেসড হতে হবে।
ফাইল.i
সি সোর্স কোড যা প্রিপ্রসেস করা উচিত নয়।
ফাইল.ii
C++ সোর্স কোড যা প্রি-প্রসেস করা উচিত নয়।
ফাইল.m
অবজেক্টিভ-সি সোর্স কোড। মনে রাখবেন যে আপনাকে অবশ্যই এর সাথে লিঙ্ক করতে হবে libobjc একটি করতে লাইব্রেরি
উদ্দেশ্য-সি প্রোগ্রামের কাজ।
ফাইল.মি
অবজেক্টিভ-সি সোর্স কোড যা প্রি-প্রসেস করা উচিত নয়।
ফাইল.mm
ফাইল.M
উদ্দেশ্য-C++ সোর্স কোড। মনে রাখবেন যে আপনাকে অবশ্যই এর সাথে লিঙ্ক করতে হবে libobjc লাইব্রেরি করতে
একটি উদ্দেশ্য-সি++ প্রোগ্রামের কাজ। মনে রাখবেন যে .M একটি আক্ষরিক মূলধন বোঝায় এম.
ফাইল.mii
উদ্দেশ্য-C++ সোর্স কোড যা প্রি-প্রসেস করা উচিত নয়।
ফাইল.h
সি, সি++, অবজেক্টিভ-সি বা অবজেক্টিভ-সি++ হেডার ফাইলকে একটি প্রি-কম্পাইল করা হবে
হেডার (ডিফল্ট), বা C, C++ হেডার ফাইলকে অ্যাডা স্পেকে পরিণত করতে হবে (এর মাধ্যমে
-fdump-ada-pec সুইচ)।
ফাইল.cc
ফাইল.সিপি
ফাইল.cxx
ফাইল.সিপিপি
ফাইলসিপিপি
ফাইল.c ++
ফাইল.C
C++ সোর্স কোড যা প্রি-প্রসেস করা আবশ্যক। উল্লেখ্য যে মধ্যে .cxx, শেষ দুটি অক্ষর
উভয় আক্ষরিক হতে হবে x। একইভাবে, .C একটি আক্ষরিক মূলধন C বোঝায়।
ফাইল.mm
ফাইল.M
অবজেক্টিভ-সি++ সোর্স কোড যা প্রিপ্রসেস করা আবশ্যক।
ফাইল.mii
উদ্দেশ্য-C++ সোর্স কোড যা প্রি-প্রসেস করা উচিত নয়।
ফাইল.hh
ফাইল.H
ফাইল.এইচপি
ফাইল.hxx
ফাইল.এইচপিপি
ফাইল.এইচপিপি
ফাইল.h ++
ফাইল.tcc
C++ হেডার ফাইলকে একটি প্রি-কম্পাইলড হেডার বা অ্যাডা স্পেকে পরিণত করতে হবে।
ফাইল.f
ফাইলজন্য
ফাইল.ftn
স্থির ফর্ম ফরট্রান সোর্স কোড যা প্রিপ্রসেস করা উচিত নয়।
ফাইল.F
ফাইল.ফর
ফাইল.fpp
ফাইল.এফপিপি
ফাইল.Ftn
স্থির ফর্ম ফরট্রান সোর্স কোড যা অবশ্যই প্রিপ্রসেসড হতে হবে (প্রথাগত সাথে
প্রিপ্রসেসর)।
ফাইল.f90
ফাইল.f95
ফাইল.f03
ফাইল.f08
ফ্রি ফর্ম ফরট্রান সোর্স কোড যা প্রিপ্রসেস করা উচিত নয়।
ফাইল.F90
ফাইল.F95
ফাইল.F03
ফাইল.F08
ফ্রি ফর্ম ফরট্রান সোর্স কোড যা অবশ্যই প্রিপ্রসেসড হতে হবে (প্রথাগত সাথে
প্রিপ্রসেসর)।
ফাইল.যাওয়া
সোর্স কোড যান.
ফাইল.ad
অ্যাডা সোর্স কোড ফাইল যাতে একটি লাইব্রেরি ইউনিট ঘোষণা রয়েছে (এটির একটি ঘোষণা
প্যাকেজ, সাবপ্রোগ্রাম, বা জেনেরিক, বা একটি জেনেরিক ইনস্ট্যান্টিয়েশন), বা একটি লাইব্রেরি ইউনিট
পুনঃনামকরণ ঘোষণা (একটি প্যাকেজ, জেনেরিক, বা সাবপ্রোগ্রাম নাম পরিবর্তনের ঘোষণা)। যেমন
ফাইলও বলা হয় চশমা.
ফাইল.এডিবি
একটি লাইব্রেরি ইউনিট বডি (একটি সাবপ্রোগ্রাম বা প্যাকেজ বডি) ধারণকারী অ্যাডা সোর্স কোড ফাইল।
এই ধরনের ফাইলও বলা হয় লাশ.
ফাইল.s
অ্যাসেম্বলার কোড।
ফাইল.S
ফাইল.sx
অ্যাসেম্বলার কোড যা অবশ্যই প্রিপ্রসেসড হতে হবে।
অন্যান্য
একটি বস্তু ফাইল সরাসরি লিঙ্কিং মধ্যে খাওয়ানো হবে. কোনো স্বীকৃত সঙ্গে কোনো ফাইলের নাম
প্রত্যয় এই ভাবে চিকিত্সা করা হয়.
আপনি এর সাথে স্পষ্টভাবে ইনপুট ভাষা নির্দিষ্ট করতে পারেন -x বিকল্প:
-x ভাষা
স্পষ্টভাবে উল্লেখ করুন ভাষা নিম্নলিখিত ইনপুট ফাইলগুলির জন্য (এটি না দিয়ে
কম্পাইলার ফাইল নামের প্রত্যয়ের উপর ভিত্তি করে একটি ডিফল্ট চয়ন করুন)। এই বিকল্পটি সকলের জন্য প্রযোজ্য
পরবর্তী পর্যন্ত ইনপুট ফাইল অনুসরণ করুন -x বিকল্প জন্য সম্ভাব্য মান ভাষা হয়:
c c-হেডার cpp-আউটপুট
c++ c++-হেডার c++-cpp-আউটপুট
অবজেক্টিভ-সি অবজেক্টিভ-সি-হেডার অবজেক্টিভ-সি-সিপিপি-আউটপুট
অবজেক্টিভ-সি++ অবজেক্টিভ-সি++-হেডার অবজেক্টিভ-সি++-সিপিপি-আউটপুট
অ্যাসেম্বলার অ্যাসেম্বলার-সাথে-সিপিপি
Ada
f77 f77-cpp-ইনপুট f95 f95-cpp-ইনপুট
go
জাভা
-x না
একটি ভাষার যেকোনো স্পেসিফিকেশন বন্ধ করুন, যাতে পরবর্তী ফাইলগুলি পরিচালনা করা হয়
তাদের ফাইলের নামের প্রত্যয় অনুসারে (যেমন তারা যদি থাকে -x মোটেও ব্যবহার করা হয়নি)।
-পাস-প্রস্থান-কোড
সাধারণত জিসিসি কম্পাইলারের কোনো ফেজ ফিরে এলে প্রোগ্রাম 1-এর কোড দিয়ে প্রস্থান করে
একটি অ-সফল রিটার্ন কোড। যদি আপনি উল্লেখ করেন -পাস-প্রস্থান-কোড, দ্য জিসিসি পরিবর্তে প্রোগ্রাম
একটি ত্রুটি ফেরত যে কোনো ফেজ দ্বারা উত্পাদিত সংখ্যাগতভাবে সর্বোচ্চ ত্রুটির সাথে রিটার্ন করে
ইঙ্গিত. অভ্যন্তরীণ কম্পাইলার ত্রুটি হলে C, C++ এবং Fortran ফ্রন্ট এন্ড 4 রিটার্ন করে
সম্মুখীন হয়
আপনি যদি সংকলনের কয়েকটি ধাপ চান তবে আপনি ব্যবহার করতে পারেন -x (বা ফাইলের নাম প্রত্যয়)
বলতে জিসিসি কোথায় শুরু করতে হবে, এবং বিকল্পগুলির মধ্যে একটি -c, -S, বা -E যেখানে বলা জিসিসি হল
থামা উল্লেখ্য যে কিছু সংমিশ্রণ (উদাহরণস্বরূপ, -x cpp-আউটপুট -E) নির্দেশ জিসিসি করতে
কিছু না.
-c সোর্স ফাইল কম্পাইল বা একত্রিত করুন, কিন্তু লিঙ্ক করবেন না। লিঙ্কিং পর্যায় সহজভাবে হয়
শেষ না. চূড়ান্ত আউটপুট প্রতিটি উৎস ফাইলের জন্য একটি অবজেক্ট ফাইল আকারে হয়.
ডিফল্টরূপে, একটি উৎস ফাইলের জন্য অবজেক্ট ফাইলের নাম প্রত্যয় প্রতিস্থাপন দ্বারা তৈরি করা হয় .c,
.i, .s, ইত্যাদি, সহ .o.
অচেনা ইনপুট ফাইল, সংকলন বা সমাবেশের প্রয়োজন নেই, উপেক্ষা করা হয়।
-S সংকলনের পর্যায় যথাযথভাবে বন্ধ করুন; জড়ো করবেন না আউটপুট আছে
নির্দিষ্ট করা প্রতিটি নন-অ্যাসেম্বলার ইনপুট ফাইলের জন্য একটি অ্যাসেম্বলার কোড ফাইলের ফর্ম।
ডিফল্টরূপে, একটি উৎস ফাইলের জন্য অ্যাসেম্বলার ফাইলের নাম প্রত্যয়টি প্রতিস্থাপন করে তৈরি করা হয়
.c, .i, ইত্যাদি, সহ .s.
যে ইনপুট ফাইলগুলির সংকলনের প্রয়োজন নেই সেগুলি উপেক্ষা করা হয়।
-E প্রিপ্রসেসিং পর্যায়ের পরে থামুন; কম্পাইলার সঠিকভাবে চালাবেন না। আউটপুট আছে
প্রিপ্রসেসড সোর্স কোডের ফর্ম, যা স্ট্যান্ডার্ড আউটপুটে পাঠানো হয়।
যে ইনপুট ফাইলগুলির জন্য প্রি-প্রসেসিং প্রয়োজন হয় না সেগুলি উপেক্ষা করা হয়।
-o ফাইল
ফাইলে আউটপুট রাখুন ফাইল. এটি যে কোন ধরণের আউটপুট উত্পাদিত হচ্ছে তার জন্য প্রযোজ্য,
এটি একটি এক্সিকিউটেবল ফাইল, একটি অবজেক্ট ফাইল, একটি অ্যাসেম্বলার ফাইল বা প্রি-প্রসেসড সি
কোড।
If -o নির্দিষ্ট করা নেই, ডিফল্ট হল একটি এক্সিকিউটেবল ফাইল রাখা a. আউট, বস্তু
জন্য ফাইল উত্স.সুফিক্স in উৎস, এর অ্যাসেম্বলার ফাইল ইন উৎস, একটি precompiled
হেডার ফাইল ইন উত্স। suffix.gch, এবং স্ট্যান্ডার্ড আউটপুটে সমস্ত প্রিপ্রসেসড সি সোর্স।
-v প্রিন্ট করুন (স্ট্যান্ডার্ড ত্রুটি আউটপুটে) এর ধাপগুলি চালানোর জন্য কার্যকর করা কমান্ডগুলি
সংকলন এছাড়াও কম্পাইলার ড্রাইভার প্রোগ্রাম এবং এর সংস্করণ নম্বর প্রিন্ট করুন
প্রিপ্রসেসর এবং কম্পাইলার সঠিক।
-###
মত -v ব্যতীত কমান্ডগুলি কার্যকর করা হয় না এবং আর্গুমেন্টগুলি উদ্ধৃত করা হয় যদি না তারা
শুধুমাত্র আলফানিউমেরিক অক্ষর বা "./-_" থাকে। এটি শেল স্ক্রিপ্টের জন্য দরকারী
ড্রাইভার দ্বারা তৈরি কমান্ড লাইন ক্যাপচার করুন।
পাইপ
এর বিভিন্ন পর্যায়ে যোগাযোগের জন্য অস্থায়ী ফাইলের পরিবর্তে পাইপ ব্যবহার করুন
সংকলন এটি এমন কিছু সিস্টেমে কাজ করতে ব্যর্থ হয় যেখানে অ্যাসেম্বলার পড়তে অক্ষম
একটি পাইপ থেকে; কিন্তু GNU অ্যাসেম্বলারের কোন সমস্যা নেই।
--help
প্রিন্ট করুন (স্ট্যান্ডার্ড আউটপুটে) কমান্ড-লাইন বিকল্পগুলির একটি বিবরণ যা দ্বারা বোঝা যায়
জিসিসি। যদি -v বিকল্প এছাড়াও তারপর নির্দিষ্ট করা হয় --help এছাড়াও বিভিন্ন উপর প্রেরণ করা হয়
দ্বারা আহ্বান করা প্রক্রিয়া জিসিসি, যাতে তারা কমান্ড-লাইন বিকল্পগুলি প্রদর্শন করতে পারে
গ্রহণ যদি -ওয়েক্সট্রা বিকল্পটিও নির্দিষ্ট করা হয়েছে (এর আগে --help বিকল্প),
তারপর কমান্ড-লাইন বিকল্পগুলি যেগুলির সাথে সম্পর্কিত কোনও ডকুমেন্টেশন নেই
প্রদর্শিত
--লক্ষ্য-সাহায্য
লক্ষ্য-নির্দিষ্ট কমান্ড-লাইন বিকল্পগুলির একটি বিবরণ মুদ্রণ করুন (স্ট্যান্ডার্ড আউটপুটে)
প্রতিটি টুলের জন্য। কিছু লক্ষ্যের জন্য অতিরিক্ত লক্ষ্য-নির্দিষ্ট তথ্যও হতে পারে
মুদ্রিত।
--সহায়তা={শ্রেণী|[^]কোয়ালিফায়ার}[...]
প্রিন্ট করুন (স্ট্যান্ডার্ড আউটপুটে) কমান্ড-লাইন বিকল্পগুলির একটি বিবরণ যা দ্বারা বোঝা যায়
কম্পাইলার যা সমস্ত নির্দিষ্ট ক্লাস এবং কোয়ালিফায়ারে ফিট করে। এগুলো হল
সমর্থিত ক্লাস:
অপ্টিমাইজার
কম্পাইলার দ্বারা সমর্থিত সমস্ত অপ্টিমাইজেশান বিকল্পগুলি প্রদর্শন করুন।
সতর্কবার্তা
কম্পাইলার দ্বারা উত্পাদিত সতর্কতা বার্তা নিয়ন্ত্রণকারী সমস্ত বিকল্প প্রদর্শন করুন।
লক্ষ্য
লক্ষ্য-নির্দিষ্ট বিকল্পগুলি প্রদর্শন করুন। অসদৃশ --লক্ষ্য-সাহায্য বিকল্প যাইহোক, লক্ষ্য-
লিঙ্কার এবং অ্যাসেম্বলারের নির্দিষ্ট বিকল্পগুলি প্রদর্শিত হয় না। এই কারণ
এই সরঞ্জামগুলি বর্তমানে বর্ধিত সমর্থন করে না --সহায়তা= বাক্য গঠন.
প্যারাম
দ্বারা স্বীকৃত মান প্রদর্শন করুন --পরম বিকল্প।
ভাষা
এর জন্য সমর্থিত বিকল্পগুলি প্রদর্শন করুন ভাষা, কোথায় ভাষা একটির নাম
GCC-এর এই সংস্করণে সমর্থিত ভাষাগুলি।
সাধারণ
সমস্ত ভাষার জন্য সাধারণ বিকল্পগুলি প্রদর্শন করুন।
এই সমর্থিত যোগ্যতা:
অনথিভুক্ত
শুধুমাত্র সেই বিকল্পগুলি প্রদর্শন করুন যা নথিভুক্ত নয়।
যোগদান
একই মধ্যে একটি সমান চিহ্নের পরে প্রদর্শিত একটি যুক্তি গ্রহণের বিকল্পগুলি প্রদর্শন করুন৷
পাঠ্যের অবিচ্ছিন্ন অংশ, যেমন: --help=লক্ষ্য.
আলাদা
ডিসপ্লে অপশন একটি আর্গুমেন্ট গ্রহণ করে যা একটি পৃথক শব্দ হিসাবে প্রদর্শিত হয়
মূল বিকল্প, যেমন: -o আউটপুট ফাইল.
এইভাবে উদাহরণের জন্য সমর্থিত সমস্ত অনথিভুক্ত লক্ষ্য-নির্দিষ্ট সুইচগুলি প্রদর্শন করার জন্য
কম্পাইলার, ব্যবহার করুন:
--help=লক্ষ্য,অনথিভুক্ত
একটি কোয়ালিফায়ার এর অর্থটি এর সাথে উপসর্গ দিয়ে উল্টানো যেতে পারে ^ চরিত্র, তাই জন্য
সমস্ত বাইনারি সতর্কীকরণ বিকল্পগুলি প্রদর্শনের উদাহরণ (যেমন, যেগুলি হয় চালু বা বন্ধ
এবং যে একটি যুক্তি গ্রহণ করে না) যার একটি বর্ণনা আছে, ব্যবহার করুন:
--help=সতর্কতা,^যোগ হয়েছে,^অনথিভুক্ত
যুক্তি --সহায়তা= শুধুমাত্র ইনভার্টেড কোয়ালিফায়ার নিয়ে গঠিত হওয়া উচিত নয়।
বেশ কয়েকটি ক্লাস একত্রিত করা সম্ভব, যদিও এটি সাধারণত আউটপুটকে সীমাবদ্ধ করে
প্রদর্শন করার মতো কিছুই নেই। একটি ক্ষেত্রে যেখানে এটি কাজ করে, তবে, যখন
ক্লাস এক লক্ষ্য. উদাহরণস্বরূপ, সমস্ত লক্ষ্য-নির্দিষ্ট প্রদর্শন করা
অপ্টিমাইজেশান বিকল্প, ব্যবহার করুন:
--help=টার্গেট,অপ্টিমাইজার
সার্জারির --সহায়তা= বিকল্পটি কমান্ড লাইনে পুনরাবৃত্তি করা যেতে পারে। প্রতিটি ধারাবাহিক ব্যবহার প্রদর্শন করে
এর অনুরোধ করা বিকল্পগুলির ক্লাস, যেগুলি ইতিমধ্যে প্রদর্শিত হয়েছে সেগুলি এড়িয়ে যাচ্ছে।
যদি -Q এর আগে কমান্ড লাইনে বিকল্পটি উপস্থিত হয় --সহায়তা= বিকল্প, তারপর
বর্ণনামূলক পাঠ্য দ্বারা প্রদর্শিত --সহায়তা= পরিবর্তিত. পরিবর্তে প্রদর্শিত বর্ণনা
বিকল্পগুলি, বিকল্পটি সক্ষম, নিষ্ক্রিয় বা সেট কিনা তা একটি ইঙ্গিত দেওয়া হয়
একটি নির্দিষ্ট মান (অনুমান করা হচ্ছে যে কম্পাইলার এই বিন্দুতে জানে যেখানে
--সহায়তা= বিকল্প ব্যবহার করা হয়)।
এখানে ARM পোর্ট থেকে একটি ছাঁটাই করা উদাহরণ জিসিসি:
% জিসিসি -কিউ -এমবিআই = 2 -হেল্প = লক্ষ্য -সি
নিম্নলিখিত বিকল্পগুলি লক্ষ্য নির্দিষ্ট:
-মাবি = 2
-মাবোর্ট-অন-নরেটার্ন [অক্ষম]
-মানচিত্র [অক্ষম]
আউটপুট পূর্ববর্তী কমান্ড-লাইন বিকল্পগুলির প্রভাবের জন্য সংবেদনশীল, তাই এর জন্য
উদাহরণে কোন অপ্টিমাইজেশানগুলি সক্রিয় করা হয়েছে তা খুঁজে বের করা সম্ভব৷ -ও2 ব্যবহার করে:
-Q -O2 --help=অপ্টিমাইজার
বিকল্পভাবে আপনি আবিষ্কার করতে পারেন কোন বাইনারি অপ্টিমাইজেশানগুলি দ্বারা সক্রিয় করা হয়েছে৷ -ও3 ব্যবহার করে:
gcc -c -Q -O3 --help=অপ্টিমাইজার > /tmp/O3-opts
gcc -c -Q -O2 --help=অপ্টিমাইজার > /tmp/O2-opts
diff /tmp/O2-opts /tmp/O3-opts | grep সক্রিয়
-নো-প্রামানিক-উপসর্গ
কোন প্রতীকী লিঙ্ক প্রসারিত করবেন না, রেফারেন্স সমাধান করুন /../ or /./, অথবা পথ তৈরি করুন
একটি আপেক্ষিক উপসর্গ তৈরি করার সময় পরম।
--সংস্করণ
আমন্ত্রিত GCC এর সংস্করণ নম্বর এবং কপিরাইট প্রদর্শন করুন।
- মোড়ক
একটি র্যাপার প্রোগ্রামের অধীনে সমস্ত সাবকমান্ড আহ্বান করুন। মোড়ক প্রোগ্রামের নাম এবং
এর পরামিতিগুলি একটি কমা পৃথক তালিকা হিসাবে পাস করা হয়।
gcc -c tc -wrapper gdb, -args
এটি সমস্ত সাবপ্রোগ্রামকে আহ্বান করে জিসিসি অধীনে জিডিবি --আর্গস, এইভাবে আমন্ত্রণ cc1 is
জিডিবি --আর্গস cc1 ....
-pplugin =নাম.so
ফাইলে প্লাগইন কোড লোড করুন নামতাই, একটি শেয়ার করা অবজেক্ট বলে ধরে নেওয়া হয়েছে
কম্পাইলার শেয়ার্ড অবজেক্ট ফাইলের বেস নাম প্লাগইন সনাক্ত করতে ব্যবহৃত হয়
যুক্তি পার্সিংয়ের উদ্দেশ্যে (দেখুন -ফ্লাগিন-আর্গ-নাম-চাবি=মূল্য নিচে). প্রতিটি
প্লাগইন এপিআই-এ নির্দিষ্ট কলব্যাক ফাংশন সংজ্ঞায়িত করা উচিত।
-ফ্লাগিন-আর্গ-নাম-চাবি=মূল্য
নামক একটি যুক্তি সংজ্ঞায়িত করুন চাবি একটি মান সঙ্গে মূল্য প্লাগইন নামক জন্য নাম.
-fdump-ada-pec[- পাতলা]
C এবং C++ সোর্স এবং ফাইলগুলি অন্তর্ভুক্ত করার জন্য, সংশ্লিষ্ট Ada চশমা তৈরি করুন।
-ফাদা-স্পেক-প্যারেন্ট=একক
সাথে -fdump-ada-pec[- পাতলা] উপরে, এর চাইল্ড ইউনিট হিসাবে Ada চশমা তৈরি করুন
মাতা একক.
-fdump- গো-স্পেক =ফাইল
যেকোনো ভাষায় ইনপুট ফাইলের জন্য, অনুরূপ Go ঘোষণা তৈরি করুন ফাইল. এই
Go "const", "type", "var" এবং "func" ঘোষণা তৈরি করে যা একটি কার্যকর উপায় হতে পারে
অন্য কোনো ভাষায় লেখা কোডে একটি গো ইন্টারফেস লেখা শুরু করতে।
@ফাইল
থেকে কমান্ড লাইন বিকল্প পড়ুন ফাইল. পঠিত বিকল্পগুলি এর জায়গায় সন্নিবেশ করা হয়েছে
আসল @ফাইল বিকল্প। যদি ফাইল বিদ্যমান নেই, বা পড়া যাবে না, তারপর বিকল্প
আক্ষরিকভাবে চিকিত্সা করা হবে, এবং অপসারণ করা হবে না।
বিকল্পগুলি ফাইল হোয়াইটস্পেস দ্বারা পৃথক করা হয়। একটি সাদা স্থান অক্ষর অন্তর্ভুক্ত করা যেতে পারে
একক বা ডবল উদ্ধৃতিতে সমগ্র বিকল্পটিকে ঘিরে একটি বিকল্পে। যে কোন
অক্ষরটি (একটি ব্যাকস্ল্যাশ সহ) অক্ষরটির উপসর্গ দিয়ে অন্তর্ভুক্ত করা যেতে পারে
ব্যাকস্ল্যাশ সহ অন্তর্ভুক্ত। দ্য ফাইল নিজেই অতিরিক্ত @ থাকতে পারেফাইল বিকল্প; যেকোনো
এই ধরনের বিকল্পগুলি পুনরাবৃত্তিমূলকভাবে প্রক্রিয়া করা হবে।
কম্পাইলিং সি ++ প্রোগ্রাম
C++ সোর্স ফাইলগুলি প্রচলিতভাবে একটি প্রত্যয় ব্যবহার করে .C, .cc, .সিপিপি, সিপিপি, .c ++, .সিপি, বা
.cxx; C++ হেডার ফাইল প্রায়ই ব্যবহার করে .hh, .এইচপিপি, .H, অথবা (ভাগ করা টেমপ্লেট কোডের জন্য) .tcc; এবং
প্রিপ্রসেসড C++ ফাইল প্রত্যয় ব্যবহার করে .ii. GCC এই নামগুলির সাথে ফাইলগুলিকে স্বীকৃতি দেয় এবং
আপনি কম্পাইলারকে কম্পাইল করার মতো একইভাবে কল করলেও সেগুলোকে C++ প্রোগ্রাম হিসেবে কম্পাইল করে
সি প্রোগ্রাম (সাধারণত নামের সাথে জিসিসি).
তবে, ব্যবহার জিসিসি C++ লাইব্রেরি যোগ করে না। g ++ একটি প্রোগ্রাম যা GCC এবং
স্বয়ংক্রিয়ভাবে C++ লাইব্রেরির বিরুদ্ধে লিঙ্কিং নির্দিষ্ট করে। এটা চিকিত্সা .c, .h এবং .i ফাইল হিসাবে
সি সোর্স ফাইলের পরিবর্তে C++ সোর্স ফাইল, যদি না -x ব্যবহৃত হয়. এই প্রোগ্রাম এছাড়াও দরকারী
একটি সি শিরোনাম ফাইল precompiling যখন a .h C++ সংকলনে ব্যবহারের জন্য এক্সটেনশন। চালু
অনেক সিস্টেম, g ++ নামের সাথেও ইনস্টল করা হয় সি ++.
আপনি যখন C++ প্রোগ্রাম কম্পাইল করেন, আপনি একই কমান্ড-লাইন বিকল্পগুলির অনেকগুলি নির্দিষ্ট করতে পারেন
আপনি যেকোনো ভাষায় প্রোগ্রাম কম্পাইল করার জন্য ব্যবহার করেন; বা কমান্ড-লাইন বিকল্পগুলি C এর জন্য অর্থপূর্ণ
এবং সম্পর্কিত ভাষা; অথবা বিকল্পগুলি যা শুধুমাত্র C++ প্রোগ্রামগুলির জন্য অর্থপূর্ণ।
অপশন সমূহ নিয়ামক C উপভাষা
নিম্নলিখিত বিকল্পগুলি C-এর উপভাষা নিয়ন্ত্রণ করে (বা C থেকে উদ্ভূত ভাষা, যেমন C++,
অবজেক্টিভ-সি এবং অবজেক্টিভ-সি++) যা কম্পাইলার গ্রহণ করে:
-আনসি
সি মোডে, এটি এর সমতুল্য -std=c90. C++ মোডে, এটি সমতুল্য
-std=c++98.
এটি GCC এর কিছু বৈশিষ্ট্য বন্ধ করে যা ISO C90 এর সাথে বেমানান (যখন
সি কোড কম্পাইল করা), অথবা স্ট্যান্ডার্ড C++ (যখন C++ কোড কম্পাইল করা হয়), যেমন "asm" এবং
"typeof" কীওয়ার্ড এবং পূর্বনির্ধারিত ম্যাক্রো যেমন "unix" এবং "vax" যা চিহ্নিত করে
আপনি যে ধরনের সিস্টেম ব্যবহার করছেন। এটি অবাঞ্ছিত এবং খুব কমই ব্যবহৃত ISO সক্ষম করে
ট্রিগ্রাফ বৈশিষ্ট্য। C কম্পাইলারের জন্য, এটি C++ শৈলীর স্বীকৃতি অক্ষম করে //
মন্তব্যের পাশাপাশি "ইনলাইন" কীওয়ার্ড।
বিকল্প কীওয়ার্ড "__asm__", "__extension__", "__inline__" এবং "__typeof__"
সত্ত্বেও কাজ চালিয়ে যান -আনসি. আপনি তাদের একটি ISO C প্রোগ্রামে ব্যবহার করতে চান না,
অবশ্যই, কিন্তু এটি অন্তর্ভুক্ত করা যেতে পারে যে হেডার ফাইলগুলিতে তাদের রাখা দরকারী
সঙ্গে সম্পন্ন সংকলন -আনসি. বিকল্প পূর্বনির্ধারিত ম্যাক্রো যেমন "__unix__" এবং
"__vax__" সহ বা ছাড়াও উপলব্ধ -আনসি.
সার্জারির -আনসি বিকল্পটি অ-আইএসও প্রোগ্রামগুলিকে নিঃস্বার্থভাবে প্রত্যাখ্যান করার কারণ করে না। জন্য
যে, -ডব্লিউডান্টিক ছাড়াও প্রয়োজন হয় -আনসি.
ম্যাক্রো "__STRICT_ANSI__" পূর্বনির্ধারিত হয় যখন -আনসি বিকল্প ব্যবহার করা হয়। কিছু হেডার
ফাইলগুলি এই ম্যাক্রোটি লক্ষ্য করতে পারে এবং নির্দিষ্ট ফাংশন ঘোষণা বা সংজ্ঞায়িত করা থেকে বিরত থাকতে পারে
কিছু ম্যাক্রো যেগুলিকে ISO স্ট্যান্ডার্ডের জন্য ডাকে না; এই হস্তক্ষেপ এড়াতে হয়
অন্য কিছুর জন্য এই নামগুলি ব্যবহার করতে পারে এমন কোনও প্রোগ্রামের সাথে।
যে ফাংশনগুলি সাধারণত তৈরি করা হয় কিন্তু ISO C দ্বারা সংজ্ঞায়িত শব্দার্থবিদ্যা নেই (যেমন
হিসাবে "alloca" এবং "ffs") যখন বিল্ট-ইন ফাংশন হয় না -আনসি ব্যবহৃত হয়.
-std=
ভাষার মান নির্ধারণ করুন। এই বিকল্পটি বর্তমানে শুধুমাত্র তখনই সমর্থিত
C বা C++ কম্পাইল করা হচ্ছে।
কম্পাইলার বিভিন্ন বেস স্ট্যান্ডার্ড গ্রহণ করতে পারে, যেমন c90 or সি ++ 98, এবং GNU উপভাষা
যারা মান, যেমন gnu90 or জিএনইউ ++ 98. যখন একটি বেস স্ট্যান্ডার্ড নির্দিষ্ট করা হয়,
কম্পাইলার সেই স্ট্যান্ডার্ড অনুসরণ করে এবং GNU এক্সটেনশন ব্যবহারকারী সমস্ত প্রোগ্রাম গ্রহণ করে
যে এটা বিরোধিতা না. উদাহরণ স্বরূপ, -std=c90 GCC এর কিছু বৈশিষ্ট্য বন্ধ করে
যেগুলি ISO C90 এর সাথে সামঞ্জস্যপূর্ণ নয়, যেমন "asm" এবং "typeof" কীওয়ার্ড, কিন্তু নয়
অন্যান্য GNU এক্সটেনশন যেগুলির ISO C90-তে কোনও অর্থ নেই, যেমন বাদ দেওয়া
একটি "?:" অভিব্যক্তির মধ্যবর্তী শব্দ। অন্যদিকে, যখন একটি মানের একটি GNU উপভাষা
নির্দিষ্ট করা আছে, কম্পাইলার দ্বারা সমর্থিত সমস্ত বৈশিষ্ট্য সক্রিয় করা হয়েছে, এমনকি যখন সেগুলিও
বৈশিষ্ট্যগুলি বেস স্ট্যান্ডার্ডের অর্থ পরিবর্তন করে। ফলস্বরূপ, কিছু কঠোর-সঙ্গতিপূর্ণ
প্রোগ্রাম প্রত্যাখ্যাত হতে পারে. বিশেষ মান দ্বারা ব্যবহৃত হয় -ডব্লিউডান্টিক সনাক্ত করতে
কোন বৈশিষ্ট্যগুলি হল GNU এক্সটেনশনগুলি স্ট্যান্ডার্ডের সেই সংস্করণে দেওয়া। উদাহরণ স্বরূপ
-STD = gnu90 -ডব্লিউডান্টিক C++ শৈলী সম্পর্কে সতর্ক করে // মন্তব্য, যখন -STD = gnu99 -ডব্লিউডান্টিক
না.
এই বিকল্পের জন্য একটি মান প্রদান করা আবশ্যক; সম্ভাব্য মান হয়
c90
c89
iso9899: 1990
সমস্ত ISO C90 প্রোগ্রাম সমর্থন করুন (কিছু নির্দিষ্ট GNU এক্সটেনশন যা ISO C90 এর সাথে বিরোধপূর্ণ
অক্ষম)। একই রকম -আনসি সি কোডের জন্য।
iso9899: 199409
সংশোধনী 90 এ পরিবর্তিত হিসাবে ISO C1।
c99
সি 9 এক্স
iso9899: 1999
ISO9899: 199x
ISO C99। এই মান যথেষ্ট সম্পূর্ণরূপে সমর্থিত, modulo বাগ এবং
ফ্লোটিং-পয়েন্ট সমস্যা (প্রধানত কিন্তু সম্পূর্ণরূপে ঐচ্ছিক C99 বৈশিষ্ট্যের সাথে সম্পর্কিত নয়
অ্যানেক্সেস F এবং G থেকে)। দেখাhttp://gcc.gnu.org/c99status.html> আরো জন্য
তথ্য নাম গুলো সি 9 এক্স এবং ISO9899: 199x বঞ্চিত হয়
c11
সি 1 এক্স
iso9899: 2011
ISO C11, ISO C স্ট্যান্ডার্ডের 2011 সালের সংশোধন। এই মান যথেষ্ট
সম্পূর্ণরূপে সমর্থিত, মডিউল বাগ, ফ্লোটিং-পয়েন্ট সমস্যা (প্রধানত কিন্তু সম্পূর্ণ নয়
অ্যানেক্সেস F এবং G থেকে ঐচ্ছিক C11 বৈশিষ্ট্য সম্পর্কিত) এবং ঐচ্ছিক অ্যানেক্স K
(বাউন্ড-চেকিং ইন্টারফেস) এবং এল (বিশ্লেষণযোগ্যতা)। নাম সি 1 এক্স অবমূল্যায়ন করা হয়।
gnu90
gnu89
ISO C90 এর GNU উপভাষা (কিছু C99 বৈশিষ্ট্য সহ)।
gnu99
gnu9x
ISO C99 এর GNU উপভাষা। নাম gnu9x অবমূল্যায়ন করা হয়।
gnu11
gnu1x
ISO C11 এর GNU উপভাষা। এটি সি কোডের জন্য ডিফল্ট। নাম gnu1x is
অবমূল্যায়ন
সি ++ 98
সি ++ 03
1998 ISO C++ স্ট্যান্ডার্ড প্লাস 2003 প্রযুক্তিগত সংশোধনী এবং কিছু অতিরিক্ত
ত্রুটি রিপোর্ট। একই রকম -আনসি C++ কোডের জন্য।
জিএনইউ ++ 98
জিএনইউ ++ 03
এর GNU উপভাষা -std=c++98. এটি C++ কোডের জন্য ডিফল্ট।
সি ++ 11
সি ++ 0x
2011 ISO C++ স্ট্যান্ডার্ড প্লাস সংশোধনী। নাম সি ++ 0x অবমূল্যায়ন করা হয়।
জিএনইউ ++ 11
gnu ++ 0x
এর GNU উপভাষা -std=c++11। নাম gnu ++ 0x অবমূল্যায়ন করা হয়।
সি ++ 14
সি ++ 1y
2014 ISO C++ স্ট্যান্ডার্ড প্লাস সংশোধনী। নাম সি ++ 1y অবমূল্যায়ন করা হয়।
জিএনইউ ++ 14
gnu ++ 1y
এর GNU উপভাষা -std=c++14। নাম gnu ++ 1y অবমূল্যায়ন করা হয়।
c++1z
আইএসও সি++ স্ট্যান্ডার্ডের পরবর্তী সংশোধন, 2017 সালের জন্য অস্থায়ীভাবে পরিকল্পনা করা হয়েছে। সমর্থন
অত্যন্ত পরীক্ষামূলক, এবং প্রায় অবশ্যই বেমানান উপায়ে পরিবর্তিত হবে
ভবিষ্যতের রিলিজ।
gnu++1z
এর GNU উপভাষা -std=c++1z. সমর্থন অত্যন্ত পরীক্ষামূলক, এবং প্রায় হবে
ভবিষ্যতের রিলিজে অবশ্যই বেমানান উপায়ে পরিবর্তন হবে।
-fgnu89-ইনলাইন
পছন্দ -fgnu89-ইনলাইন GCC কে বলে "ইনলাইন" এর জন্য প্রথাগত GNU শব্দার্থবিদ্যা ব্যবহার করতে
C99 মোডে থাকাকালীন ফাংশন।
এই বিকল্পটি ব্যবহার করা মোটামুটি "gnu_inline" ফাংশন বৈশিষ্ট্য যোগ করার সমতুল্য
সব ইনলাইন ফাংশন.
পছন্দ -fno-gnu89-ইনলাইন GCC-কে স্পষ্টভাবে C99 শব্দার্থবিদ্যা ব্যবহার করতে বলে
"ইনলাইন" যখন C99 বা gnu99 মোডে থাকে (অর্থাৎ, এটি ডিফল্ট আচরণ নির্দিষ্ট করে)। এই
বিকল্প সমর্থিত নয় -std=c90 or -STD = gnu90 মোড.
প্রিপ্রসেসর ম্যাক্রো "__GNUC_GNU_INLINE__" এবং "__GNUC_STDC_INLINE__" ব্যবহার করা যেতে পারে
"ইনলাইন" ফাংশনের জন্য কোন শব্দার্থবিদ্যা কার্যকর তা পরীক্ষা করতে।
-অক্স-তথ্য ফাইলের নাম
ঘোষিত এবং/অথবা সমস্ত ফাংশনের জন্য প্রদত্ত ফাইলের নাম প্রোটোটাইপ ঘোষণার আউটপুট
হেডার ফাইল সহ একটি অনুবাদ ইউনিটে সংজ্ঞায়িত। এই বিকল্প হয়
সি ব্যতীত অন্য কোনো ভাষায় নীরবে উপেক্ষা করা হয়।
ঘোষণার পাশাপাশি, ফাইলটি নির্দেশ করে, মন্তব্যে, প্রতিটি ঘোষণার উত্স
(উৎস ফাইল এবং লাইন), ঘোষণাটি অন্তর্নিহিত ছিল কিনা, প্রোটোটাইপ করা হয়েছে বা
আনপ্রোটোটাইপড (I, N নতুন বা জন্য O পুরানো জন্য, যথাক্রমে, প্রথম অক্ষর পরে
লাইন নম্বর এবং কোলন), এবং এটি একটি ঘোষণা বা সংজ্ঞা থেকে এসেছে কিনা
(C or F, যথাক্রমে, নিম্নলিখিত অক্ষরে)। ফাংশনের ক্ষেত্রে
সংজ্ঞা, তাদের ঘোষণা অনুসরণ করে আর্গুমেন্টের একটি K&R-শৈলী তালিকাও রয়েছে
ঘোষণার পরে, ভিতরের মন্তব্য প্রদান করা হয়েছে।
-পতন-প্যারামিটারহীন-ভেরিয়েডিক-ফাংশন
নামযুক্ত পরামিতি ছাড়া বৈচিত্র্যময় ফাংশন গ্রহণ করুন।
যদিও এই ধরনের একটি ফাংশন সংজ্ঞায়িত করা সম্ভব, এটি খুব কার্যকর নয়
যুক্তি পড়া সম্ভব নয়। এটি শুধুমাত্র C এর জন্য সমর্থিত কারণ এই গঠনটি
C++ দ্বারা অনুমোদিত।
-ফনো-এএসএম
"asm", "inline" বা "typeof" কে কীওয়ার্ড হিসেবে চিনবেন না, যাতে সেই কোড এইগুলি ব্যবহার করতে পারে
শনাক্তকারী হিসাবে শব্দ। আপনি "__asm__", "__inline__" এবং কীওয়ার্ড ব্যবহার করতে পারেন
পরিবর্তে "__typeof__"। -আনসি বোঝা -ফনো-এএসএম.
C++ এ, এই সুইচটি শুধুমাত্র "typeof" কীওয়ার্ডকে প্রভাবিত করে, যেহেতু "asm" এবং "ইনলাইন"
স্ট্যান্ডার্ড কীওয়ার্ড। আপনি ব্যবহার করতে চাইতে পারেন -fno-gnu-কীওয়ার্ড পরিবর্তে পতাকা, যা আছে
একই প্রভাব। C99 মোডে (-std=c99 or -STD = gnu99), এই সুইচ শুধুমাত্র প্রভাবিত করে
"asm" এবং "typeof" কীওয়ার্ড, যেহেতু "ইনলাইন" ISO C99-এ একটি আদর্শ কীওয়ার্ড।
-এফএনও-বিল্টিন
-এফএনও-বিল্টিন-ক্রিয়া
বিল্ট-ইন ফাংশনগুলি চিনবেন না যা দিয়ে শুরু হয় না __বিল্টিন_ উপসর্গ হিসাবে
GCC সাধারণত কিছু বিল্ট-ইন ফাংশন আরও পরিচালনা করার জন্য বিশেষ কোড তৈরি করে
দক্ষতার সাথে উদাহরণস্বরূপ, "অ্যালোকা" এ কল করা একক নির্দেশে পরিণত হতে পারে
স্ট্যাক সরাসরি সামঞ্জস্য করুন, এবং "memcpy" এ কলগুলি ইনলাইন কপি লুপ হয়ে যেতে পারে। দ্য
ফলাফল কোড প্রায়ই ছোট এবং দ্রুত উভয় হয়, কিন্তু ফাংশন কল নম্বর থেকে
আর এইভাবে প্রদর্শিত হবে, আপনি সেই কলগুলিতে একটি ব্রেকপয়েন্ট সেট করতে পারবেন না বা পরিবর্তন করতে পারবেন না
একটি ভিন্ন লাইব্রেরির সাথে লিঙ্ক করে ফাংশনগুলির আচরণ। উপরন্তু, যখন
একটি ফাংশন একটি অন্তর্নির্মিত ফাংশন হিসাবে স্বীকৃত, GCC সে সম্পর্কে তথ্য ব্যবহার করতে পারে
ফাংশন সেই ফাংশনে কলের সমস্যা সম্পর্কে সতর্ক করতে, বা আরও জেনারেট করতে
কার্যকরী কোড, এমনকি যদি ফলাফল কোডটিতে এখনও সেই ফাংশনে কল থাকে। জন্য
উদাহরণ, সতর্কতা সঙ্গে দেওয়া হয় -Wformat "printf" এ খারাপ কলের জন্য যখন "printf" হয়
অন্তর্নির্মিত এবং "strlen" গ্লোবাল মেমরি পরিবর্তন না করার জন্য পরিচিত।
সঙ্গে সঙ্গে -এফএনও-বিল্টিন-ক্রিয়া বিকল্প শুধুমাত্র অন্তর্নির্মিত ফাংশন ক্রিয়া নিষ্ক্রিয় করা.
ক্রিয়া দিয়ে শুরু করা উচিত নয় __বিল্টিন_. যদি একটি ফাংশনের নাম দেওয়া হয় যা অন্তর্নির্মিত নয়
GCC-এর এই সংস্করণে, এই বিকল্পটি উপেক্ষা করা হয়েছে। কোন অনুরূপ আছে
বিল্টিন-ক্রিয়া বিকল্প; আপনি যদি বেছে বেছে বিল্ট-ইন ফাংশন সক্রিয় করতে চান
ব্যবহার -এফএনও-বিল্টিন or -ফ্রিস্ট্যান্ডিং, আপনি ম্যাক্রো সংজ্ঞায়িত করতে পারেন যেমন:
# abs(n) __builtin_abs (n)) সংজ্ঞায়িত করুন
# strcpy(d, s) __builtin_strcpy (d), (s)) সংজ্ঞায়িত করুন
-ফোস্টেড
দাবি করুন যে সংকলন একটি হোস্ট করা পরিবেশকে লক্ষ্য করে। এই থেকেই বোঝা - বিল্টিন. একটি
হোস্টেড এনভায়রনমেন্ট হল এমন একটি যেখানে সম্পূর্ণ স্ট্যান্ডার্ড লাইব্রেরি পাওয়া যায় এবং এর মধ্যে
কোনটি "প্রধান" এর রিটার্ন টাইপের "int" আছে। উদাহরণগুলি একটি ছাড়া প্রায় সবকিছু
কার্নেল এই সমতুল্য -fno-ফ্রিস্ট্যান্ডিং.
-ফ্রিস্ট্যান্ডিং
দাবি করুন যে সংকলন একটি ফ্রিস্ট্যান্ডিং পরিবেশকে লক্ষ্য করে। এই থেকেই বোঝা
-এফএনও-বিল্টিন. একটি ফ্রিস্ট্যান্ডিং পরিবেশ এমন একটি যেখানে স্ট্যান্ডার্ড লাইব্রেরি নাও থাকতে পারে
বিদ্যমান, এবং প্রোগ্রাম স্টার্টআপ অগত্যা "প্রধান" এ নাও হতে পারে। সবচেয়ে স্পষ্ট উদাহরণ
একটি OS কার্নেল। এই সমতুল্য -fno-হোস্টেড.
- fopenacc
C/C++-এ OpenACC নির্দেশাবলী "#pragma acc" এবং Fortran-এ "!$acc" পরিচালনা সক্ষম করুন৷
কখন - fopenacc নির্দিষ্ট করা হয়েছে, কম্পাইলার অনুযায়ী ত্বরিত কোড তৈরি করে
OpenACC অ্যাপ্লিকেশন প্রোগ্রামিং ইন্টারফেস v2.0http://www.openacc.org/> এই বিকল্প
বোঝা - থ্রেড, এবং এইভাবে শুধুমাত্র সেই লক্ষ্যে সমর্থিত যেগুলির জন্য সমর্থন আছে৷
- থ্রেড.
মনে রাখবেন এটি একটি পরীক্ষামূলক বৈশিষ্ট্য, অসম্পূর্ণ এবং ভবিষ্যতে পরিবর্তন হতে পারে
GCC এর সংস্করণ। দেখাhttps://gcc.gnu.org/wiki/OpenACC> আরো তথ্যের জন্য।
-ফোপেনএমপি
C/C++-এ OpenMP নির্দেশিকা "#pragma omp" এবং Fortran-এ "!$omp" পরিচালনা সক্ষম করুন৷
কখন -ফোপেনএমপি নির্দিষ্ট করা হয়েছে, কম্পাইলার অনুযায়ী সমান্তরাল কোড তৈরি করে
OpenMP অ্যাপ্লিকেশন প্রোগ্রাম ইন্টারফেস v4.0http://www.openmp.org/> এই বিকল্প
বোঝা - থ্রেড, এবং এইভাবে শুধুমাত্র সেই লক্ষ্যে সমর্থিত যেগুলির জন্য সমর্থন আছে৷
- থ্রেড. -ফোপেনএমপি বোঝা -ফোপেনএমপি-সিমড.
-ফোপেনএমপি-সিমড
C/C++-এ "#pragma omp" এবং "!$omp"-এর সাহায্যে OpenMP-এর SIMD নির্দেশাবলী পরিচালনা করতে সক্ষম করুন
ফোর্টরান। অন্যান্য OpenMP নির্দেশাবলী উপেক্ষা করা হয়।
-ফিলকপ্লাস
C/C++ এর জন্য Cilk Plus ভাষা এক্সটেনশন বৈশিষ্ট্যের ব্যবহার সক্ষম করুন। যখন বিকল্প
-ফিলকপ্লাস নির্দিষ্ট করা হয়েছে, সিল্ক প্লাস ল্যাঙ্গুয়েজ এক্সটেনশন বৈশিষ্ট্যগুলির ব্যবহার সক্ষম করুন৷
C/C++ এর জন্য। বর্তমান বাস্তবায়ন ABI সংস্করণ 1.2 অনুসরণ করে। এই হল একটি
পরীক্ষামূলক বৈশিষ্ট্য যা শুধুমাত্র আংশিকভাবে সম্পূর্ণ, এবং যার ইন্টারফেস পরিবর্তন হতে পারে
GCC-এর ভবিষ্যত সংস্করণে যেমন অফিসিয়াল স্পেসিফিকেশন পরিবর্তন হয়। বর্তমানে, সব
বৈশিষ্ট্য কিন্তু "_Cilk_for" প্রয়োগ করা হয়েছে।
-fgnu-tm
যখন বিকল্প -fgnu-tm নির্দিষ্ট করা হয়েছে, কম্পাইলার লিনাক্সের জন্য কোড তৈরি করে
ইন্টেলের বর্তমান লেনদেন মেমরি ABI স্পেসিফিকেশন নথির রূপ (রিভিশন
1.1, মে 6 2009)। এটি একটি পরীক্ষামূলক বৈশিষ্ট্য যার ইন্টারফেস পরিবর্তন হতে পারে
GCC এর ভবিষ্যত সংস্করণ, অফিসিয়াল স্পেসিফিকেশন পরিবর্তনের সাথে সাথে। দয়া করে নোট করুন যে না
সমস্ত আর্কিটেকচার এই বৈশিষ্ট্যের জন্য সমর্থিত।
লেনদেনের মেমরির জন্য GCC-এর সমর্থন সম্পর্কে আরও তথ্যের জন্য,
নোট করুন যে লেনদেন সংক্রান্ত মেমরি বৈশিষ্ট্যটি নন-কল ব্যতিক্রমগুলির সাথে সমর্থিত নয়
(-অ-কল-ব্যতিক্রম).
-এফএমএস-এক্সটেনশন
মাইক্রোসফ্ট হেডার ফাইলে ব্যবহৃত কিছু অ-মানক গঠন গ্রহণ করুন।
C++ কোডে, এটি স্ট্রাকচারের সদস্যদের নামগুলিকে পূর্ববর্তী প্রকারের মতো হতে দেয়
ঘোষণা
টাইপডেফ ইন্ট ইউউ;
গঠন ABC {
Uow uow;
};
কাঠামো এবং ইউনিয়নে নামহীন ক্ষেত্রের কিছু ক্ষেত্রে শুধুমাত্র এটির সাথেই গৃহীত হয়
বিকল্প।
মনে রাখবেন যে এই বিকল্পটি সকল টার্গেটের জন্য বন্ধ কিন্তু x86 টার্গেট ms-abi ব্যবহার করে।
-fplan9-এক্সটেনশন
প্ল্যান 9 কোডে ব্যবহৃত কিছু অ-মানক নির্মাণ গ্রহণ করুন।
এটি সক্ষম করে -এফএমএস-এক্সটেনশন, বেনামী সহ কাঠামোতে পয়েন্টার পাস করার অনুমতি দেয়
ক্ষেত্রগুলি ফাংশনগুলির জন্য যা ক্ষেত্রের ধরণের উপাদানগুলিতে পয়েন্টার আশা করে, এবং৷
একটি টাইপডেফ ব্যবহার করে ঘোষিত বেনামী ক্ষেত্রগুলির উল্লেখ করার অনুমতিগুলি। এই শুধুমাত্র
C এর জন্য সমর্থিত, C++ নয়।
-ট্রিগ্রাফ
আইএসও সি ট্রিগ্রাফ সমর্থন করে। দ্য -আনসি বিকল্প (এবং -স্টেড কঠোর আইএসও সি এর জন্য বিকল্প
সামঞ্জস্য) বোঝায় -ট্রিগ্রাফ.
- ঐতিহ্যগত
-প্রথাগত-cpp
পূর্বে, এই বিকল্পগুলির কারণে GCC একটি প্রাক-মানক C কম্পাইলার অনুকরণ করার চেষ্টা করত।
তারা এখন শুধুমাত্র সঙ্গে সমর্থিত -E সুইচ প্রিপ্রসেসর সমর্থন অব্যাহত
একটি প্রাক-মানক মোড। বিস্তারিত জানার জন্য GNU CPP ম্যানুয়াল দেখুন।
-fcond-অমিল
দ্বিতীয় এবং তৃতীয় আর্গুমেন্টে অমিল ধরনের সহ শর্তসাপেক্ষ অভিব্যক্তির অনুমতি দিন।
এই ধরনের অভিব্যক্তির মান অকার্যকর। এই বিকল্পটি C++ এর জন্য সমর্থিত নয়।
-ফ্ল্যাক্স-ভেক্টর-রূপান্তর
বিভিন্ন সংখ্যক উপাদান এবং/অথবা সহ ভেক্টরের মধ্যে অন্তর্নিহিত রূপান্তরের অনুমতি দিন
বেমানান উপাদান প্রকার। এই বিকল্পটি নতুন কোডের জন্য ব্যবহার করা উচিত নয়।
-ফানসাইনড-চার
"char" টাইপটিকে স্বাক্ষরবিহীন হতে দিন, যেমন "অস্বাক্ষরহীন চর"।
প্রতিটি ধরনের মেশিনের একটি ডিফল্ট আছে "চার" কি হওয়া উচিত। এটা হয় মত
ডিফল্টরূপে "স্বাক্ষরবিহীন চর" বা ডিফল্টরূপে "স্বাক্ষরিত চর" এর মতো।
আদর্শভাবে, একটি পোর্টেবল প্রোগ্রাম সর্বদা "স্বাক্ষরিত চর" বা "স্বাক্ষরবিহীন চর" ব্যবহার করা উচিত যখন এটি
একটি বস্তুর স্বাক্ষরতার উপর নির্ভর করে। কিন্তু ব্যবহার করার জন্য অনেক প্রোগ্রাম লেখা হয়েছে
প্লেইন "char" এবং এটি স্বাক্ষরিত হবে বলে আশা করে, অথবা এটির উপর নির্ভর করে স্বাক্ষরবিহীন হওয়ার প্রত্যাশা করে
যে মেশিনের জন্য তারা লেখা হয়েছিল। এই বিকল্প, এবং তার বিপরীত, আপনি যেমন একটি করতে দিন
প্রোগ্রাম বিপরীত ডিফল্ট সঙ্গে কাজ.
টাইপ "char" সবসময় প্রতিটি "স্বাক্ষরিত চর" বা "অস্বাক্ষরিত" থেকে একটি স্বতন্ত্র প্রকার
char", যদিও এর আচরণ সবসময় এই দুটির মধ্যে একটির মতো হয়।
-ফসাইনড-চার
টাইপ "char" সাইন করা যাক, যেমন "স্বাক্ষরিত চর"।
উল্লেখ্য যে এই সমতুল্য -fno-স্বাক্ষরবিহীন-চর, যা এর নেতিবাচক রূপ
-ফানসাইনড-চার. একইভাবে, বিকল্প -fno-স্বাক্ষরিত-চর সমতুল্য
-ফানসাইনড-চার.
-ফসাইনড-বিটফিল্ডস
ফানসাইনড-বিটফিল্ড
-fno-স্বাক্ষরিত-বিটফিল্ড
-fno-আনসাইন করা-বিটফিল্ড
এই বিকল্পগুলি ঘোষণার সময় একটি বিট-ক্ষেত্র স্বাক্ষরিত বা স্বাক্ষরিত কিনা তা নিয়ন্ত্রণ করে
"স্বাক্ষরিত" বা "স্বাক্ষরবিহীন" ব্যবহার করে না। ডিফল্টরূপে, যেমন একটি বিট-ক্ষেত্র স্বাক্ষরিত হয়,
কারণ এটি সামঞ্জস্যপূর্ণ: মৌলিক পূর্ণসংখ্যার ধরন যেমন "int" স্বাক্ষরিত প্রকার।
অপশন সমূহ নিয়ামক সি ++ উপভাষা
এই বিভাগে কমান্ড-লাইন বিকল্পগুলি বর্ণনা করে যা শুধুমাত্র C++ প্রোগ্রামগুলির জন্য অর্থপূর্ণ।
আপনার প্রোগ্রাম কোন ভাষাতেই থাকুক না কেন আপনি বেশিরভাগ GNU কম্পাইলার অপশন ব্যবহার করতে পারেন
মধ্যে আছে। উদাহরণস্বরূপ, আপনি একটি ফাইল কম্পাইল করতে পারেন ফার্স্টক্লাস.সি এটার মত:
g ++ -g -prepo -o -c ফার্স্টক্লাস.সি
এই উদাহরণে, শুধুমাত্র -ফ্রেপো শুধুমাত্র C++ প্রোগ্রামের জন্য একটি বিকল্প; আপনি ব্যবহার করতে পারেন
GCC দ্বারা সমর্থিত যেকোনো ভাষা সহ অন্যান্য বিকল্প।
এখানে বিকল্পগুলির একটি তালিকা রয়েছে যা কেবল C++ প্রোগ্রাম কম্পাইল করার জন্য:
-ফ্যাবি-সংস্করণ=n
সংস্করণ ব্যবহার করুন n C++ ABI-এর। ডিফল্ট সংস্করণ 0।
সংস্করণ 0 C++ ABI স্পেসিফিকেশনের সাথে সবচেয়ে ঘনিষ্ঠভাবে সঙ্গতিপূর্ণ সংস্করণকে বোঝায়।
অতএব, সংস্করণ 0 ব্যবহার করে প্রাপ্ত ABI G++ এর বিভিন্ন সংস্করণে পরিবর্তিত হবে
ABI বাগগুলি ঠিক করা হয়েছে।
সংস্করণ 1 হল C++ ABI-এর সংস্করণ যা G++ 3.2-এ প্রথম উপস্থিত হয়েছিল।
সংস্করণ 2 হল C++ ABI-এর সংস্করণ যা প্রথম G++ 3.4-এ উপস্থিত হয়েছিল এবং ছিল
G++ 4.9 এর মাধ্যমে ডিফল্ট।
সংস্করণ 3 একটি টেমপ্লেট যুক্তি হিসাবে একটি ধ্রুবক ঠিকানা ম্যাঙ্গলিং একটি ত্রুটি সংশোধন করে৷
সংস্করণ 4, যা প্রথম G++ 4.5-এ আবির্ভূত হয়েছে, ভেক্টরের জন্য একটি আদর্শ ম্যাঙ্গলিং প্রয়োগ করে
ধরনের।
সংস্করণ 5, যা প্রথম G++ 4.6-এ উপস্থিত হয়েছিল, অ্যাট্রিবিউটের ম্যাঙ্গলিং সংশোধন করে
ফাংশন পয়েন্টার প্রকারের উপর const/volatile, একটি প্লেইন decl এর decltype, এবং a এর ব্যবহার
অন্য প্যারামিটারের ঘোষণায় ফাংশন প্যারামিটার।
সংস্করণ 6, যা প্রথম G++ 4.7-এ উপস্থিত হয়েছিল, C++11-এর প্রচার আচরণ সংশোধন করে
স্কোপড enums এবং টেমপ্লেট আর্গুমেন্ট প্যাকগুলির ম্যাঙ্গলিং, const/static_cast, উপসর্গ ++
এবং --, এবং একটি টেমপ্লেট আর্গুমেন্ট হিসাবে ব্যবহৃত একটি ক্লাস স্কোপ ফাংশন।
সংস্করণ 7, যা প্রথম G++ 4.8-এ আবির্ভূত হয়েছিল, যা nullptr_t কে বিল্টইন টাইপ হিসাবে বিবেচনা করে
এবং ডিফল্ট আর্গুমেন্ট স্কোপে ল্যাম্বডাসের ম্যাঙ্গলিং সংশোধন করে।
সংস্করণ 8, যা প্রথম G++ 4.9-এ উপস্থিত হয়েছে, এর প্রতিস্থাপন আচরণ সংশোধন করে
ফাংশন-সিভি-কোয়ালিফায়ার সহ ফাংশন প্রকার।
আরো দেখুন -ওয়াবি.
-ফ্যাবি-কম্প্যাট-সংস্করণ=n
দৃঢ় উপনাম সমর্থন করে এমন লক্ষ্যগুলিতে, G++ তৈরি করে পরিবর্তনগুলিকে ঘিরে কাজ করে
একটি ভুলের সাথে একটি চিহ্ন সংজ্ঞায়িত করার সময় সঠিক ম্যাঙ্গলড নামের একটি উপনাম
বিকৃত নাম এই সুইচটি নির্দিষ্ট করে যে ABI সংস্করণটি উপনামের জন্য ব্যবহার করা হবে৷
সঙ্গে -ফ্যাবি-সংস্করণ=0 (ডিফল্ট), এই ডিফল্ট 2. যদি অন্য ABI সংস্করণ হয়
স্পষ্টভাবে নির্বাচিত, এটি 0-তে ডিফল্ট।
সামঞ্জস্য সংস্করণ এছাড়াও দ্বারা সেট করা হয় -ওয়াবি=n.
-fno-অ্যাক্সেস-কন্ট্রোল
সমস্ত অ্যাক্সেস চেকিং বন্ধ করুন। এই সুইচটি মূলত বাগগুলির আশেপাশে কাজ করার জন্য উপযোগী
অ্যাক্সেস কন্ট্রোল কোড।
-fcheck-নতুন
চেষ্টা করার আগে পরীক্ষা করুন যে "অপারেটর নতুন" দ্বারা ফিরে আসা পয়েন্টারটি নন-নাল
বরাদ্দ স্টোরেজ পরিবর্তন করুন। এই চেকটি সাধারণত অপ্রয়োজনীয় কারণ C++
স্ট্যান্ডার্ড নির্দিষ্ট করে যে "অপারেটর নতুন" শুধুমাত্র 0 প্রদান করে যদি এটি "থ্রো()" ঘোষণা করা হয়, ইন
যে ক্ষেত্রে কম্পাইলার সবসময় এই বিকল্পটি ছাড়াই রিটার্ন মান পরীক্ষা করে। ভিতরে
অন্য সব ক্ষেত্রে, যখন "অপারেটর নতুন" একটি অ-খালি ব্যতিক্রম স্পেসিফিকেশন, মেমরি থাকে
ক্লান্তি "std::bad_alloc" নিক্ষেপ করে সংকেত দেওয়া হয়। আরো দেখুন নতুন (পরে).
-fconstexpr-গভীরতা=n
C++11 constexpr ফাংশনের জন্য সর্বাধিক নেস্টেড মূল্যায়ন গভীরতা সেট করুন n. একটি সীমা
ধ্রুবক অভিব্যক্তি মূল্যায়নের সময় অবিরাম পুনরাবৃত্তি সনাক্ত করতে প্রয়োজন। দ্য
স্ট্যান্ডার্ড দ্বারা নির্দিষ্ট করা ন্যূনতম হল 512।
-fdeduce-init-তালিকা
একটি বন্ধনী থেকে "std::initializer_list" হিসাবে একটি টেমপ্লেট টাইপ প্যারামিটার কেটে নেওয়া সক্ষম করুন-
আবদ্ধ প্রাথমিক তালিকা, যেমন
টেমপ্লেট অটো ফরওয়ার্ড (টি টি) -> ডিক্লটাইপ (রিয়েলফন (টি))
{
রিটার্ন realfn (t);
}
অকার্যকর চ()
{
এগিয়ে ({1,2}); // এগিয়ে কল >
}
এই কর্তন মূল প্রস্তাবিত একটি সম্ভাব্য এক্সটেনশন হিসাবে বাস্তবায়িত হয়েছে
C++11 স্ট্যান্ডার্ডের জন্য শব্দার্থবিদ্যা, কিন্তু চূড়ান্ত স্ট্যান্ডার্ডের অংশ ছিল না, তাই হল
ডিফল্টরূপে নিষ্ক্রিয়। এই বিকল্পটি বন্ধ করা হয়েছে এবং ভবিষ্যতে সরানো হতে পারে৷
G++ এর সংস্করণ।
-বন্ধু-ইনজেকশন
বন্ধুর ফাংশনগুলিকে আবদ্ধ নামস্থানে প্রবেশ করান, যাতে সেগুলি বাইরে দৃশ্যমান হয়
যে শ্রেণিতে তারা ঘোষণা করা হয়েছে তার সুযোগ। বন্ধু ফাংশন নথিভুক্ত ছিল
পুরানো টীকাযুক্ত C++ রেফারেন্স ম্যানুয়ালটিতে এইভাবে কাজ করতে। যাইহোক, ISO C++ এ
বন্ধু ফাংশন যা একটি এনক্লোজিং স্কোপে ঘোষিত নয় শুধুমাত্র ব্যবহার করে পাওয়া যাবে
যুক্তি নির্ভর লুকআপ। GCC সাধারণ আচরণে ডিফল্ট।
এই বিকল্পটি সামঞ্জস্যের জন্য, এবং G++ এর ভবিষ্যতের প্রকাশে সরানো হতে পারে।
-ফনো-এলাইড-নির্মাণকারী
C++ স্ট্যান্ডার্ড একটি বাস্তবায়নকে শুধুমাত্র একটি অস্থায়ী তৈরি করা বাদ দিতে দেয়
একই ধরনের অন্য বস্তু আরম্ভ করার জন্য ব্যবহৃত হয়। এই বিকল্পটি নির্দিষ্ট করা নিষ্ক্রিয় করে
যে অপ্টিমাইজেশান, এবং G++ কে সমস্ত ক্ষেত্রে কপি কনস্ট্রাক্টরকে কল করতে বাধ্য করে।
-এফএনও-এনফোর্স-এহ-স্পেক্স
রান টাইমে ব্যতিক্রম স্পেসিফিকেশন লঙ্ঘনের জন্য চেক করার জন্য কোড তৈরি করবেন না।
এই বিকল্পটি C++ স্ট্যান্ডার্ড লঙ্ঘন করে, কিন্তু কোডের আকার কমানোর জন্য উপযোগী হতে পারে
উত্পাদন তৈরি করে, অনেকটা "NDEBUG" সংজ্ঞায়িত করার মতো। এটি ব্যবহারকারীর কোড দেয় না
ব্যতিক্রম স্পেসিফিকেশন লঙ্ঘন করে ব্যতিক্রম নিক্ষেপ করার অনুমতি; দ্য
কম্পাইলার এখনও নির্দিষ্টকরণের উপর ভিত্তি করে অপ্টিমাইজ করে, তাই একটি অপ্রত্যাশিত নিক্ষেপ
রান টাইমে অনির্ধারিত আচরণের ফলাফল ব্যতিক্রম।
-ফেক্সটারন-টিএলএস-ইনিট
-fno-extern- tls- init
C++11 এবং OpenMP মানগুলি "thread_local" এবং "threadprivate" ভেরিয়েবলকে অনুমতি দেয়
ডায়নামিক (রানটাইম) ইনিশিয়ালাইজেশন আছে। এটি সমর্থন করার জন্য, যেমন একটি পরিবর্তনশীল ব্যবহার
একটি র্যাপার ফাংশনের মধ্য দিয়ে যায় যা যেকোনো প্রয়োজনীয় সূচনা করে। যখন
ভেরিয়েবলের ব্যবহার এবং সংজ্ঞা একই অনুবাদ ইউনিটে, এই ওভারহেড করতে পারে
দূরে অপ্টিমাইজ করা হবে, কিন্তু ব্যবহার যখন একটি ভিন্ন অনুবাদ ইউনিট আছে
উল্লেখযোগ্য ওভারহেড এমনকি যদি পরিবর্তনশীল আসলে গতিশীল প্রয়োজন না হয়
আরম্ভ. প্রোগ্রামার যদি নিশ্চিত হতে পারে যে কোন ভেরিয়েবলের ব্যবহার নেই
TU সংজ্ঞায়িত করার জন্য ডায়নামিক ইনিশিয়ালাইজেশন ট্রিগার করতে হবে (হয় কারণ পরিবর্তনশীল
স্ট্যাটিকভাবে আরম্ভ করা, অথবা সংজ্ঞায়িত TU-তে ভেরিয়েবলের ব্যবহার কার্যকর করা হবে
অন্য TU-তে ব্যবহার করার আগে), তারা এই ওভারহেড এড়াতে পারে
-fno-extern- tls- init বিকল্প।
যে লক্ষ্যগুলি প্রতীক উপনাম সমর্থন করে, ডিফল্ট হয় -ফেক্সটারন-টিএলএস-ইনিট. লক্ষ্যবস্তুতে
যে প্রতীক উপনাম সমর্থন করে না, ডিফল্ট হয় -fno-extern- tls- init.
- সুযোগের জন্য
-এফএনও-ফর-স্কোপ
If - সুযোগের জন্য নির্দিষ্ট করা হয়েছে, ভেরিয়েবলের সুযোগ a এ ঘোষণা করা হয়েছে for-init-বিবৃতি
সি++ স্ট্যান্ডার্ড দ্বারা নির্দিষ্ট করা "ফর" লুপের মধ্যেই সীমাবদ্ধ। যদি
-এফএনও-ফর-স্কোপ নির্দিষ্ট করা হয়েছে, ভেরিয়েবলের সুযোগ a এ ঘোষণা করা হয়েছে for-init-বিবৃতি
এনক্লোসিং স্কোপের শেষ পর্যন্ত প্রসারিত হয়, যেমনটি G++ এর পুরানো সংস্করণে ছিল, এবং
C++ এর অন্যান্য (প্রথাগত) বাস্তবায়ন।
যদি কোন পতাকা দেওয়া না হয়, ডিফল্ট মান অনুসরণ করা, কিন্তু অনুমতি দেওয়া এবং দেওয়া
পুরানো-শৈলী কোডের জন্য একটি সতর্কতা যা অন্যথায় অবৈধ হবে, বা ভিন্ন হবে
আচরণ।
-fno-gnu-কীওয়ার্ড
"typeof" কে কীওয়ার্ড হিসেবে চিনবেন না, যাতে সেই কোডটি এই শব্দটিকে একটি হিসেবে ব্যবহার করতে পারে
শনাক্তকারী আপনি পরিবর্তে "__typeof__" কীওয়ার্ড ব্যবহার করতে পারেন। -আনসি বোঝা
-fno-gnu-কীওয়ার্ড.
-fno-ইমপ্লিসিট-টেমপ্লেট
অ-ইনলাইন টেমপ্লেটগুলির জন্য কখনই কোড নির্গত করবেন না যেগুলি অন্তর্নিহিতভাবে (যেমন দ্বারা
ব্যবহার করুন); শুধুমাত্র স্পষ্ট উদাহরণের জন্য কোড নির্গত করুন।
-fno-ইমপ্লিসিট-ইনলাইন-টেমপ্লেট
ইনলাইন টেমপ্লেটের অন্তর্নিহিত ইন্সটেশনের জন্য কোড নির্গত করবেন না। ডিফল্ট
ইনলাইনগুলিকে ভিন্নভাবে পরিচালনা করা যাতে অপ্টিমাইজেশানের প্রয়োজনের সাথে এবং ছাড়াই কম্পাইল করা যায়
স্পষ্ট দৃষ্টান্তের একই সেট।
-fno-ইমপ্লিমেন্ট-ইনলাইন
স্থান বাঁচাতে, দ্বারা নিয়ন্ত্রিত ইনলাইন ফাংশনগুলির লাইনের বাইরের অনুলিপিগুলি নির্গত করবেন না৷
"#প্রাগমা বাস্তবায়ন"। এই ফাংশনগুলি না থাকলে এটি লিঙ্কার ত্রুটির কারণ হয়
ইনলাইন যেখানে তারা বলা হয়.
-এফএমএস-এক্সটেনশন
এমএফসি-তে ব্যবহৃত কনস্ট্রাক্ট সম্পর্কে Wpedantic সতর্কতা অক্ষম করুন, যেমন অন্তর্নিহিত int এবং
অ-মানক সিনট্যাক্সের মাধ্যমে সদস্য ফাংশনে একটি পয়েন্টার পাওয়া।
-fno-nonansi-builtins
ANSI/ISO C দ্বারা বাধ্যতামূলক নয় এমন ফাংশনগুলির অন্তর্নির্মিত ঘোষণাগুলি অক্ষম করুন
"ffs", "alloca", "_exit", "index", "bzero", "conjf" এবং অন্যান্য সম্পর্কিত অন্তর্ভুক্ত
ফাংশন।
-fnothrow-opt
একটি "থ্রো()" ব্যতিক্রম স্পেসিফিকেশন ব্যবহার করুন যেন এটি একটি "noexcept" স্পেসিফিকেশন
কোন ব্যতিক্রম ছাড়া একটি ফাংশন আপেক্ষিক টেক্সট আকার ওভারহেড হ্রাস বা নির্মূল করুন
স্পেসিফিকেশন যদি ফাংশনে নন-তুচ্ছ সহ প্রকারের স্থানীয় ভেরিয়েবল থাকে
destructors, ব্যতিক্রম স্পেসিফিকেশন আসলে ফাংশন ছোট করে তোলে কারণ
সেই ভেরিয়েবলগুলির জন্য EH ক্লিনআপগুলিকে অপ্টিমাইজ করা যেতে পারে। শব্দার্থিক প্রভাব হল
যে একটি ব্যতিক্রম যেমন একটি ব্যতিক্রম স্পেসিফিকেশন সঙ্গে একটি ফাংশন আউট নিক্ষিপ্ত
"অপ্রত্যাশিত" না হয়ে "টার্মিনেট" করার জন্য একটি কলের ফলাফল।
-fno-অপারেটর-নাম
অপারেটর নামের কীওয়ার্ড "এবং", "বিট্যান্ড", "বিটর", "compl", "না", "বা" ব্যবহার করবেন না
এবং "xor" কিওয়ার্ড হিসাবে প্রতিশব্দ হিসাবে।
-ফনো-বিকল্প-ডায়াগস
ডায়াগনস্টিকগুলি অক্ষম করুন যা স্ট্যান্ডার্ড বলে যে একটি কম্পাইলারকে ইস্যু করার দরকার নেই।
বর্তমানে, G++ দ্বারা জারি করা এই ধরনের একমাত্র ডায়াগনস্টিক হল একটি নামের জন্য
একটি শ্রেণীর মধ্যে একাধিক অর্থ।
-অনুমতিপূর্ণ
অসঙ্গতিপূর্ণ কোড সম্পর্কে ত্রুটি থেকে সতর্কতা পর্যন্ত কিছু ডায়াগনস্টিক ডাউনগ্রেড করুন। এইভাবে,
ব্যবহার -অনুমতিপূর্ণ কিছু নন-কনফর্মিং কোড কম্পাইল করার অনুমতি দেয়।
-fno-সুন্দর-টেমপ্লেট
যখন একটি ত্রুটি বার্তা একটি ফাংশন টেমপ্লেটের একটি বিশেষীকরণ বোঝায়, কম্পাইলার
সাধারণত টেমপ্লেট আর্গুমেন্ট দ্বারা অনুসরণ করে টেমপ্লেটের স্বাক্ষর প্রিন্ট করে এবং
স্বাক্ষরে যেকোনো টাইপডেফ বা টাইপনাম (যেমন "অকার্যকর f(T) [T = int] এর সাথে" বরং
"void f(int)") এর চেয়ে যাতে এটি স্পষ্ট হয় যে কোন টেমপ্লেট জড়িত। যখন একটি ত্রুটি
বার্তাটি একটি ক্লাস টেমপ্লেটের একটি বিশেষীকরণকে বোঝায়, কম্পাইলার যেকোনোটি বাদ দেয়
টেমপ্লেট আর্গুমেন্ট যা সেই টেমপ্লেটের জন্য ডিফল্ট টেমপ্লেট আর্গুমেন্টের সাথে মেলে। যদি
এই আচরণগুলির যেকোনো একটি ত্রুটির বার্তা বোঝার পরিবর্তে কঠিন করে তোলে
সহজ, আপনি ব্যবহার করতে পারেন -fno-সুন্দর-টেমপ্লেট তাদের নিষ্ক্রিয় করতে।
-ফ্রেপো
লিঙ্কের সময় স্বয়ংক্রিয় টেমপ্লেট ইনস্ট্যান্টেশন সক্ষম করুন। এই বিকল্পটিও বোঝায়
-fno-ইমপ্লিসিট-টেমপ্লেট.
-এফএনও-আরটিটি
দ্বারা ব্যবহারের জন্য ভার্চুয়াল ফাংশন সহ প্রতিটি ক্লাস সম্পর্কে তথ্য তৈরি করা অক্ষম করুন
C++ রান-টাইম টাইপ শনাক্তকরণ বৈশিষ্ট্য ("ডাইনামিক_কাস্ট" এবং "টাইপইড")। আপনি যদি
ভাষার সেই অংশগুলি ব্যবহার করবেন না, আপনি এই পতাকা ব্যবহার করে কিছু স্থান সংরক্ষণ করতে পারেন।
উল্লেখ্য যে ব্যতিক্রম হ্যান্ডলিং একই তথ্য ব্যবহার করে, কিন্তু G++ এটি তৈরি করে
প্রয়োজন "ডাইনামিক_কাস্ট" অপারেটরটি এখনও কাস্টের জন্য ব্যবহার করা যেতে পারে যার প্রয়োজন নেই৷
রান-টাইম টাইপ তথ্য, যেমন "অকার্যকর *" বা দ্ব্যর্থহীন বেস ক্লাসে কাস্ট করে।
-fsized-অবণ্টন
অন্তর্নির্মিত বিশ্ব ঘোষণা সক্রিয় করুন
void অপারেটর মুছে ফেলুন (void *, std::size_t) ছাড়া;
void অপারেটর মুছে ফেলুন [] (void *, std::size_t) ছাড়া ছাড়া;
C++ 14-এ চালু করা হয়েছে। এটি ব্যবহারকারী-সংজ্ঞায়িত প্রতিস্থাপন ডিলোকেশনের জন্য দরকারী
ফাংশন যেগুলি, উদাহরণস্বরূপ, দ্রুত ডিলোকেশন করতে বস্তুর আকার ব্যবহার করে।
অধীনে ডিফল্টরূপে সক্রিয় -std=c++14 এবং উপরে. পতাকাটি -Wsized-অবণ্টন সতর্ক
এমন জায়গা সম্পর্কে যা একটি সংজ্ঞা যোগ করতে চায়।
-ফস্ট্যাটস
সংকলনের শেষে ফ্রন্ট-এন্ড প্রক্রিয়াকরণ সম্পর্কে পরিসংখ্যান নির্গত করুন। এই
তথ্য সাধারণত শুধুমাত্র G++ উন্নয়ন দলের জন্য উপযোগী।
-ট্রিক্ট-এনামস
কম্পাইলারকে অনুমানটি ব্যবহার করে অপ্টিমাইজ করার অনুমতি দিন যে একটি গণিত প্রকারের মান
শুধুমাত্র গণনার একটি মান হতে পারে (যেমন C++ স্ট্যান্ডার্ডে সংজ্ঞায়িত করা হয়েছে;
মূলত, একটি মান যা ন্যূনতম সংখ্যক বিটের প্রয়োজনে উপস্থাপন করা যেতে পারে
সমস্ত গণনাকারীদের প্রতিনিধিত্ব করে)। প্রোগ্রামটি ব্যবহার করলে এই অনুমানটি বৈধ নাও হতে পারে
একটি নির্বিচারে পূর্ণসংখ্যা মানকে গণনাকৃত প্রকারে রূপান্তর করার জন্য একটি কাস্ট।
-ftemplate-ব্যাকট্রেস-সীমা=n
একটি সতর্কতা বা ত্রুটির জন্য সর্বাধিক সংখ্যক টেমপ্লেট ইনস্ট্যান্টিয়েশন নোট সেট করুন
থেকে n. ডিফল্ট মান হল 10।
-ftemplate-গভীরতা=n
টেমপ্লেট ক্লাসের জন্য সর্বাধিক ইনস্ট্যান্টিয়েশন গভীরতা সেট করুন n. উপর একটি সীমা
টেমপ্লেটের সময় অবিরাম পুনরাবৃত্তি সনাক্ত করতে টেমপ্লেট ইনস্ট্যান্টিয়েশন গভীরতা প্রয়োজন
ক্লাস ইনস্ট্যান্টেশন ANSI/ISO C++ কনফর্মিং প্রোগ্রামগুলিকে সর্বোচ্চ নির্ভর করা উচিত নয়
17-এর বেশি গভীরতা (C++1024-এ 11-এ পরিবর্তিত হয়েছে)। ডিফল্ট মান হল 900, হিসাবে
কম্পাইলার কিছু পরিস্থিতিতে 1024 আঘাত করার আগে স্ট্যাক স্পেস ফুরিয়ে যেতে পারে।
-fno-থ্রেডসেফ-স্ট্যাটিক্স
থ্রেডের জন্য C++ ABI-তে নির্দিষ্ট রুটিন ব্যবহার করতে অতিরিক্ত কোড নির্গত করবেন না-
স্থানীয় পরিসংখ্যানের নিরাপদ সূচনা। আপনি কোড আকার কমাতে এই বিকল্প ব্যবহার করতে পারেন
কোডে সামান্য যা থ্রেড-নিরাপদ হতে হবে না।
-ফিউজ-সিএক্সএ-এটেক্সিট
"__cxa_atexit" এর সাথে স্ট্যাটিক স্টোরেজ সময়কাল সহ বস্তুর জন্য ধ্বংসকারী নিবন্ধন করুন
"atexit" ফাংশনের পরিবর্তে ফাংশন। এই বিকল্পটি সম্পূর্ণরূপে জন্য প্রয়োজন
স্ট্যাটিক ডেস্ট্রাক্টরের মান-সম্মত হ্যান্ডলিং, কিন্তু শুধুমাত্র যদি আপনার সি লাইব্রেরি কাজ করে
"__cxa_atexit" সমর্থন করে।
-FNO-USE-CXA-exception-Ptr
"__cxa_get_exception_ptr" রানটাইম রুটিন ব্যবহার করবেন না। এই জন্য
"std::uncaught_exception" ভুল হবে, কিন্তু রানটাইম রুটিন হলে এটি প্রয়োজনীয়
পাওয়া যায় না.
-fvisibility-ইনলাইন-লুকানো
এই সুইচটি ঘোষণা করে যে ব্যবহারকারী ইনলাইনের সাথে পয়েন্টার তুলনা করার চেষ্টা করেন না
ফাংশন বা পদ্ধতি যেখানে দুটি ফাংশনের ঠিকানা ভিন্নভাবে নেওয়া হয়
ভাগ করা বস্তু।
এর প্রভাব হল যে GCC কার্যকরভাবে, ইনলাইন পদ্ধতিগুলিকে চিহ্নিত করতে পারে
"__অ্যাট্রিবিউট__ ((দৃশ্যমানতা ("লুকানো")))" যাতে তারা রপ্তানিতে উপস্থিত না হয়
একটি DSO এর টেবিল এবং DSO-এর মধ্যে ব্যবহার করার সময় PLT নির্দেশের প্রয়োজন হয় না।
এই বিকল্পটি সক্রিয় করা একটি DSO এর লোড এবং লিঙ্কের সময়গুলির উপর নাটকীয় প্রভাব ফেলতে পারে
লাইব্রেরি ভারী হয়ে গেলে ডায়নামিক এক্সপোর্ট টেবিলের আকার ব্যাপকভাবে হ্রাস করে
টেমপ্লেট ব্যবহার।
এই সুইচের আচরণ লুকানো হিসাবে চিহ্নিত করার পদ্ধতির মতো নয়
সরাসরি, কারণ এটি ফাংশন বা কারণের স্থানীয় ভেরিয়েবলকে প্রভাবিত করে না
কম্পাইলারটি অনুমান করার জন্য যে ফাংশনটি শুধুমাত্র একটি ভাগ করা বস্তুতে সংজ্ঞায়িত করা হয়েছে।
আপনি একটি পদ্ধতির প্রভাবকে প্রত্যাখ্যান করতে স্পষ্টভাবে দৃশ্যমানতা হিসেবে চিহ্নিত করতে পারেন
যে পদ্ধতির জন্য সুইচ. উদাহরণস্বরূপ, যদি আপনি একটি পয়েন্টার তুলনা করতে চান
বিশেষ ইনলাইন পদ্ধতি, আপনি এটিকে ডিফল্ট দৃশ্যমানতা হিসাবে চিহ্নিত করতে পারেন। চিহ্নিত করা
সুস্পষ্ট দৃশ্যমানতার সাথে ক্লাস বন্ধ করার কোন প্রভাব নেই।
স্পষ্টভাবে তাত্ক্ষণিক ইনলাইন পদ্ধতিগুলি তাদের সংযোগ হিসাবে এই বিকল্প দ্বারা প্রভাবিত হয় না
অন্যথায় একটি শেয়ার্ড লাইব্রেরি সীমানা অতিক্রম করতে পারে।
-ফিসিবিলিটি-এমএস-কমপ্যাট
এই পতাকাটি GCC-এর C++ লিঙ্কেজ মডেল তৈরি করতে দৃশ্যমানতা সেটিংস ব্যবহার করার চেষ্টা করে
মাইক্রোসফ্ট ভিজ্যুয়াল স্টুডিওর সাথে সামঞ্জস্যপূর্ণ।
পতাকা GCC এর লিঙ্কেজ মডেলে এই পরিবর্তনগুলি করে:
1. এটি ডিফল্ট দৃশ্যমানতাকে "লুকানো" তে সেট করে, যেমন -fvisibility= লুকানো.
2. প্রকারগুলি, কিন্তু তাদের সদস্য নয়, ডিফল্টরূপে লুকানো হয় না৷
3. স্পষ্ট দৃশ্যমানতা ছাড়াই প্রকারের জন্য এক সংজ্ঞা নিয়ম শিথিল
স্পেসিফিকেশন যা একাধিক ভাগ করা বস্তুতে সংজ্ঞায়িত করা হয়েছে: সেই ঘোষণাগুলি
যদি এই বিকল্পটি ব্যবহার না করা হয় তখন অনুমতি দেওয়া হয়।
নতুন কোডে এটি ব্যবহার করা ভাল -fvisibility= লুকানো এবং রপ্তানি করা হয় যে ক্লাস
বাহ্যিকভাবে দৃশ্যমান হওয়ার উদ্দেশ্যে। দুর্ভাগ্যবশত কোডের উপর নির্ভর করা সম্ভব,
সম্ভবত ঘটনাক্রমে, ভিজ্যুয়াল স্টুডিও আচরণের উপর।
এই পরিবর্তনের পরিণতিগুলির মধ্যে একই ধরণের স্ট্যাটিক ডেটা সদস্য
একই নামের সাথে কিন্তু বিভিন্ন ভাগ করা বস্তুতে সংজ্ঞায়িত করা হয়, তাই পরিবর্তন হয়
একটি অন্যটি পরিবর্তন করে না; এবং যে নির্দেশক ফাংশন সদস্যদের মধ্যে সংজ্ঞায়িত
বিভিন্ন ভাগ করা বস্তু সমান তুলনা নাও হতে পারে. এই পতাকা দেওয়া হলে, এটি একটি
ভিন্নভাবে একই নামের সাথে প্রকারগুলিকে সংজ্ঞায়িত করার জন্য ODR-এর লঙ্ঘন।
-fvtable- ভেরিফাই =[এসটিডি|preinit|না]
চালু করুন (বা ব্যবহার করলে বন্ধ করুন -fvtable- ভেরিফাই = কিছুই নয়) নিরাপত্তা বৈশিষ্ট্য যা যাচাই করে
রান টাইম, প্রতিটি ভার্চুয়াল কলের জন্য, যে vtable পয়েন্টার যার মাধ্যমে কল হয়
করা বস্তুর প্রকারের জন্য বৈধ, এবং দূষিত বা ওভাররাইট করা হয়নি।
যদি একটি অবৈধ vtable পয়েন্টার রান টাইমে সনাক্ত করা হয়, একটি ত্রুটি রিপোর্ট করা হয় এবং
কর্মসূচী বাস্তবায়ন অবিলম্বে বন্ধ করা হয়।
এই বিকল্পটি প্রোগ্রাম স্টার্টআপে রান-টাইম ডেটা স্ট্রাকচার তৈরি করে, যা হয়
vtable পয়েন্টার যাচাই করার জন্য ব্যবহৃত হয়। অপশন এসটিডি এবং preinit নিয়ন্ত্রণ
এই ডেটা স্ট্রাকচারগুলি কখন তৈরি করা হয় তার সময়। উভয় ক্ষেত্রেই ডেটা স্ট্রাকচার
মৃত্যুদন্ড "প্রধান" পৌঁছানোর আগে নির্মিত। ব্যবহার -fvtable- ভেরিফাই = স্ট্যান্ড তথ্য ঘটায়
শেয়ার্ড লাইব্রেরি লোড এবং ইনিশিয়ালাইজ করার পর কাঠামো তৈরি করা হবে।
-fvtable- ভেরিফাই = প্রিনিট শেয়ার্ড লাইব্রেরি হওয়ার আগেই সেগুলি তৈরি করা হয়
লোড এবং আরম্ভ.
যদি এই বিকল্পটি বিভিন্ন মান সহ কমান্ড লাইনে একাধিকবার প্রদর্শিত হয়
নির্দিষ্ট করা, না উভয়ের উপরে সর্বোচ্চ অগ্রাধিকার নেয় এসটিডি এবং preinit; preinit লাগে
বেশি অগ্রাধিকার এসটিডি.
-fvtv-ডিবাগ
সঙ্গে একযোগে ব্যবহার করা হয় -fvtable- ভেরিফাই = স্ট্যান্ড or -fvtable- ভেরিফাই = প্রিনিট, কারণসমূহ
vtable যাচাইকরণ বৈশিষ্ট্যের জন্য রানটাইম ফাংশনের ডিবাগ সংস্করণ
ডাকা এই পতাকাটি কম্পাইলারকে কোন vtable সম্পর্কে তথ্য লগ করার কারণও করে
পয়েন্টার এটি প্রতিটি ক্লাসের জন্য খুঁজে পায়। নামের একটি ফাইলে এই তথ্য লেখা হয়েছে
vtv_set_ptr_data.log পরিবেশ ভেরিয়েবল দ্বারা নাম করা ডিরেক্টরিতে VTV_LOGS_DIR
যদি এটি সংজ্ঞায়িত করা হয় বা অন্যথায় বর্তমান কাজের ডিরেক্টরি।
দ্রষ্টব্য: এই বৈশিষ্ট্য সংযোজন লগ ফাইলে ডেটা। আপনি একটি নতুন লগ ফাইল চান, হতে
যে কোনো বিদ্যমান মুছে ফেলা নিশ্চিত করুন.
-fvtv-গণনা
এটি একটি ডিবাগিং পতাকা। সঙ্গে একযোগে ব্যবহার করা হয় -fvtable- ভেরিফাই = স্ট্যান্ড or
-fvtable- ভেরিফাই = প্রিনিট, এর ফলে কম্পাইলার মোট সংখ্যার ট্র্যাক রাখতে পারে
ভার্চুয়াল কল এটি সম্মুখীন হয় এবং এটি সন্নিবেশ করা যাচাইকরণের সংখ্যা। এটাও
নির্দিষ্ট রান-টাইম লাইব্রেরি ফাংশনে কলের সংখ্যা গণনা করে যা এটি সন্নিবেশ করায় এবং
প্রতিটি সংকলন ইউনিটের জন্য এই তথ্য লগ করে। কম্পাইলার এই তথ্য লেখেন
নামের একটি ফাইলে vtv_count_data.log পরিবেশ ভেরিয়েবল দ্বারা নাম করা ডিরেক্টরিতে
VTV_LOGS_DIR যদি এটি সংজ্ঞায়িত করা হয় বা অন্যথায় বর্তমান কাজের ডিরেক্টরি। এটাও
প্রতিটি ক্লাসের জন্য vtable পয়েন্টার সেটের আকার গণনা করে এবং এই তথ্যটি লেখে
থেকে vtv_class_set_sizes.log একই ডিরেক্টরির মধ্যে
দ্রষ্টব্য: এই বৈশিষ্ট্য সংযোজন লগ ফাইলের ডেটা। তাজা লগ ফাইল পেতে, নিশ্চিত হন
যেকোনো বিদ্যমান মুছে ফেলুন।
-fno-দুর্বল
দুর্বল প্রতীক সমর্থন ব্যবহার করবেন না, এমনকি যদি এটি লিঙ্কার দ্বারা সরবরাহ করা হয়। ডিফল্টরূপে, G++
দুর্বল প্রতীক ব্যবহার করে যদি তারা উপলব্ধ থাকে। এই বিকল্পটি শুধুমাত্র পরীক্ষার জন্য বিদ্যমান, এবং
শেষ ব্যবহারকারীদের দ্বারা ব্যবহার করা উচিত নয়; এটি নিকৃষ্ট কোডের ফলাফল এবং কোন সুবিধা নেই।
এই বিকল্পটি G++ এর ভবিষ্যতের রিলিজে সরানো হতে পারে।
-নোস্টডিঙ্ক++
C++ এর জন্য নির্দিষ্ট স্ট্যান্ডার্ড ডিরেক্টরিগুলিতে হেডার ফাইলগুলি অনুসন্ধান করবেন না, তবে করুন
এখনও অন্যান্য স্ট্যান্ডার্ড ডিরেক্টরি অনুসন্ধান করুন। (এই বিকল্পটি নির্মাণ করার সময় ব্যবহার করা হয়
C++ লাইব্রেরি।)
উপরন্তু, এই অপ্টিমাইজেশান, সতর্কতা, এবং কোড জেনারেশন বিকল্পগুলির শুধুমাত্র অর্থ আছে
C++ প্রোগ্রামের জন্য:
-ওয়াবি (সি, অবজেক্টিভ-সি, সি++ এবং অবজেক্টিভ-সি++ শুধুমাত্র)
যখন একটি সুস্পষ্ট -ফ্যাবি-সংস্করণ=n বিকল্পটি ব্যবহার করা হয়, যখন এটি তৈরি হয় তখন G++ সতর্ক করে দেয়
কোড যা সম্ভবত বিক্রেতা-নিরপেক্ষ C++ ABI-এর সাথে সামঞ্জস্যপূর্ণ নয়। যেহেতু G++ এখন
ডিফল্ট থেকে -ফ্যাবি-সংস্করণ=0, -ওয়াবি একটি পুরানো ABI সংস্করণ না হলে কোন প্রভাব নেই
নির্বাচিত (সহ -ফ্যাবি-সংস্করণ=n) বা একটি পুরানো সামঞ্জস্যপূর্ণ সংস্করণ নির্বাচন করা হয়েছে (এর সাথে
-ওয়াবি=n or -ফ্যাবি-কম্প্যাট-সংস্করণ=n).
যদিও এই ধরনের সমস্ত ক্ষেত্রে সতর্ক করার চেষ্টা করা হয়েছে, সম্ভবত কিছু আছে
যেসব ক্ষেত্রে সতর্ক করা হয় না, যদিও G++ বেমানান কোড তৈরি করছে।
এমন কিছু ক্ষেত্রেও হতে পারে যেখানে সতর্কতা নির্গত হয় যদিও কোডটি
উত্পন্ন সামঞ্জস্যপূর্ণ.
আপনি যদি উদ্বিগ্ন হন তবে এই সতর্কতাগুলি এড়াতে আপনার কোডটি পুনরায় লিখতে হবে
সত্য যে G++ দ্বারা উত্পন্ন কোড বাইনারি দ্বারা উত্পন্ন কোডের সাথে সামঞ্জস্যপূর্ণ নাও হতে পারে
অন্যান্য কম্পাইলার।
-ওয়াবি সামঞ্জস্য সম্পর্কে সতর্ক করার জন্য একটি স্পষ্ট সংস্করণ নম্বরের সাথেও ব্যবহার করা যেতে পারে
একটি নির্দিষ্ট সঙ্গে -ফ্যাবি-সংস্করণ স্তর, যেমন -ওয়াবি=2 আপেক্ষিক পরিবর্তন সম্পর্কে সতর্ক করতে
-ফ্যাবি-সংস্করণ=2. একটি সংস্করণ নম্বর নির্দিষ্ট করেও সেট করে -ফ্যাবি-কম্প্যাট-সংস্করণ=n.
পরিচিত অসঙ্গতি মধ্যে -ফ্যাবি-সংস্করণ=2 (যা GCC 3.4 থেকে ডিফল্ট ছিল
4.9) অন্তর্ভুক্ত:
* রেফারেন্স টাইপের একটি নন-টাইপ টেমপ্লেট প্যারামিটার সহ একটি টেমপ্লেট ম্যাঙ্গল করা হয়েছে
ভুলভাবে:
বাহ্যিক int n;
টেমপ্লেট struct S {};
void n (S ) {2}
এই স্থির করা হয়েছিল -ফ্যাবি-সংস্করণ=3.
* "__অ্যাট্রিবিউট ((ভেক্টর_সাইজ))" ব্যবহার করে ঘোষিত SIMD ভেক্টরের প্রকারগুলিকে একটিতে বিভক্ত করা হয়েছিল
অ-মানক উপায় যা ভেক্টর গ্রহণকারী ফাংশনগুলির ওভারলোডিংয়ের অনুমতি দেয় না
বিভিন্ন আকারের।
ম্যাঙ্গলিং পরিবর্তন করা হয়েছে মধ্যে -ফ্যাবি-সংস্করণ=4.
* "__অ্যাট্রিবিউট ((const))" এবং "noreturn" কে টাইপ কোয়ালিফায়ার হিসেবে বিভক্ত করা হয়েছিল, এবং
একটি সরল ঘোষণার "decltype" দূরে ভাঁজ করা হয়েছে.
এই ম্যাঙ্গলিং সমস্যাগুলি স্থির করা হয়েছিল -ফ্যাবি-সংস্করণ=5.
* একটি বৈচিত্র্যময় ফাংশনের আর্গুমেন্ট হিসাবে পাস করা স্কোপড গণনাকারীর মত প্রচার করা হয়
unscoped গণনাকারী, যার ফলে "va_arg" অভিযোগ করতে পারে। বেশির ভাগ লক্ষ্যেই তা হয় না
আসলে এবিআই পাস করার পরামিতিকে প্রভাবিত করে, কারণ যুক্তি পাস করার কোন উপায় নেই
"int" এর চেয়ে ছোট।
এছাড়াও, ABI টেমপ্লেট আর্গুমেন্ট প্যাক, "const_cast" এর ম্যাঙ্গলিং পরিবর্তন করেছে।
"static_cast", উপসর্গ বৃদ্ধি/হ্রাস, এবং একটি ক্লাস স্কোপ ফাংশন a হিসাবে ব্যবহৃত হয়
টেমপ্লেট যুক্তি।
এই সমস্যাগুলি সংশোধন করা হয়েছিল -ফ্যাবি-সংস্করণ=6.
* ডিফল্ট আর্গুমেন্টের সুযোগে ল্যাম্বডাসকে ভুলভাবে আটকানো হয়েছে এবং ABI পরিবর্তিত হয়েছে
"nullptr_t" এর ম্যাঙ্গলিং।
এই সমস্যাগুলি সংশোধন করা হয়েছিল -ফ্যাবি-সংস্করণ=7.
* যখন ফাংশন-সিভি-কোয়ালিফায়ারের সাথে একটি ফাংশন টাইপ ম্যাঙ্গলিং, তখন অ-যোগ্য
ফাংশন টাইপ ভুলভাবে প্রতিস্থাপন প্রার্থী হিসাবে বিবেচিত হয়েছিল।
এই স্থির করা হয়েছিল -ফ্যাবি-সংস্করণ=8.
এটি psABI-সম্পর্কিত পরিবর্তন সম্পর্কেও সতর্ক করে। পরিচিত psABI এই সময়ে পরিবর্তিত হয়
অন্তর্ভুক্ত:
* SysV/x86-64-এর জন্য, "লং ডবল" সদস্য সহ ইউনিয়নগুলি মেমরি হিসাবে পাস করা হয়৷
psABI-তে নির্দিষ্ট করা হয়েছে। উদাহরণ স্বরূপ:
ইউনিয়ন ইউ {
দীর্ঘ ডবল ld;
int i;
};
"ইউনিয়ন ইউ" সবসময় স্মৃতিতে পাস করা হয়।
-ওয়াবি-ট্যাগ (শুধুমাত্র C++ এবং উদ্দেশ্য-C++)
ABI ট্যাগ সহ একটি টাইপ এমন একটি প্রসঙ্গে ব্যবহার করা হলে সতর্ক করুন যেখানে সেই ABI ট্যাগ নেই৷
দেখ সি ++ আরোপ করা ABI ট্যাগ সম্পর্কে আরও তথ্যের জন্য।
-Wctor-dtor-গোপনীয়তা (শুধুমাত্র C++ এবং উদ্দেশ্য-C++)
যখন একটি ক্লাস অব্যবহারযোগ্য মনে হয় তখন সতর্ক করুন কারণ এতে সমস্ত কনস্ট্রাক্টর বা ধ্বংসকারী
ক্লাসটি ব্যক্তিগত, এবং এতে বন্ধু বা পাবলিক স্ট্যাটিক সদস্য ফাংশন নেই।
এছাড়াও সতর্ক করুন যদি কোনো অ-ব্যক্তিগত পদ্ধতি না থাকে এবং অন্তত একজন ব্যক্তিগত সদস্য থাকে
ফাংশন যা একটি কনস্ট্রাক্টর বা ধ্বংসকারী নয়।
-Wdelete-non-ভার্চুয়াল-ডোর (শুধুমাত্র C++ এবং উদ্দেশ্য-C++)
ভার্চুয়াল আছে এমন একটি ক্লাসের একটি উদাহরণ ধ্বংস করতে "মুছুন" ব্যবহার করা হলে সতর্ক করুন
ফাংশন এবং অ-ভার্চুয়াল ধ্বংসকারী। প্রাপ্ত একটি উদাহরণ মুছে ফেলা অনিরাপদ
বেস ক্লাসে একটি পয়েন্টারের মাধ্যমে ক্লাস করুন যদি বেস ক্লাসের ভার্চুয়াল না থাকে
ধ্বংসকারী এই সতর্কতা দ্বারা সক্রিয় করা হয় -ওয়াল.
-লিটারাল-প্রত্যয় (শুধুমাত্র C++ এবং উদ্দেশ্য-C++)
সতর্ক করুন যখন একটি স্ট্রিং বা অক্ষর আক্ষরিক একটি ud-প্রত্যয় দ্বারা অনুসরণ করা হয় যা না
একটি আন্ডারস্কোর দিয়ে শুরু করুন। একটি কনফর্মিং এক্সটেনশন হিসাবে, GCC এই ধরনের প্রত্যয়গুলিকে বিবেচনা করে
কোডের সাথে পিছনের সামঞ্জস্য বজায় রাখার জন্য পৃথক প্রিপ্রসেসিং টোকেন
যেটি " থেকে ফরম্যাটিং ম্যাক্রো ব্যবহার করে ". উদাহরণ স্বরূপ:
# __STDC_FORMAT_MACROS সংজ্ঞায়িত করুন
#অন্তর্ভুক্ত
#অন্তর্ভুক্ত
int প্রধান () {
int64_t i64 = 123;
printf("My int64: %"PRId64"\n", i64);
}
এই ক্ষেত্রে, "PRId64" একটি পৃথক প্রিপ্রসেসিং টোকেন হিসাবে বিবেচিত হয়৷
এই সতর্কতা ডিফল্টরূপে সক্রিয় করা হয়.
- সংকীর্ণ (শুধুমাত্র C++ এবং উদ্দেশ্য-C++)
সতর্ক করুন যখন C++11 দ্বারা নিষিদ্ধ একটি সংকীর্ণ রূপান্তর এর মধ্যে ঘটে { }, উদাহরণস্বরূপ
int i = { 2.2 }; // ত্রুটি: দ্বিগুণ থেকে int পর্যন্ত সংকীর্ণ
এই পতাকা অন্তর্ভুক্ত করা হয় -ওয়াল এবং -Wc++11-কম্প্যাট.
সঙ্গে -std=c++11, -Wno-সংকীর্ণ মান দ্বারা প্রয়োজনীয় ডায়গনিস্টিক দমন করে।
মনে রাখবেন যে এটি সুগঠিত কোডের অর্থকে প্রভাবিত করে না; সংকীর্ণ রূপান্তর
SFINAE প্রসঙ্গে এখনও অসুস্থ বলে বিবেচিত হয়।
- ব্যতীত (শুধুমাত্র C++ এবং উদ্দেশ্য-C++)
একটি ফাংশনে কল করার কারণে যখন একটি noexcept-এক্সপ্রেশন মিথ্যা মূল্যায়ন করে তখন সতর্ক করুন৷
যার একটি অ-নিক্ষেপ ব্যতিক্রম স্পেসিফিকেশন নেই (যেমন "থ্রো()" বা
"noexcept") কিন্তু কম্পাইলার দ্বারা পরিচিত হয় যে কখনই ব্যতিক্রম নেই।
-নোন-ভার্চুয়াল-ডোর (শুধুমাত্র C++ এবং উদ্দেশ্য-C++)
একটি ক্লাসে ভার্চুয়াল ফাংশন এবং অ্যাক্সেসযোগ্য নন-ভার্চুয়াল ধ্বংসকারী থাকলে সতর্ক করুন৷
নিজে বা একটি অ্যাক্সেসযোগ্য পলিমরফিক বেস ক্লাসে, যে ক্ষেত্রে এটি সম্ভব কিন্তু
ক্লাসে একটি পয়েন্টারের মাধ্যমে একটি প্রাপ্ত ক্লাসের একটি উদাহরণ মুছে ফেলা অনিরাপদ
বা বেস ক্লাস। এই সতর্কতা স্বয়ংক্রিয়ভাবে সক্রিয় যদি -Weffc ++ উল্লিখিত আছে.
-নিয়ন্ত্রণ (শুধুমাত্র C++ এবং উদ্দেশ্য-C++)
কোডে প্রদত্ত সদস্য ইনিশিয়ালাইজারদের অর্ডারের সাথে মেলে না হলে সতর্ক করুন
যেখানে তাদের মৃত্যুদন্ড কার্যকর করতে হবে। এই ক্ষেত্রে:
কাঠামো a {
int i;
int j;
A (): j (0), i (1) {}
};
কম্পাইলার মেম্বার ইনিশিয়ালাইজারকে "i" এবং "j" এর সাথে মেলানোর জন্য পুনর্বিন্যাস করে
সদস্যদের ঘোষণা আদেশ, যে প্রভাব একটি সতর্কতা নির্গত. এই সতর্কতা
দ্বারা সক্রিয় -ওয়াল.
-সাংখ্যিক-আক্ষরিক (শুধুমাত্র C++ এবং উদ্দেশ্য-C++)
কাল্পনিক, স্থির-বিন্দু, বা মেশিন-সংজ্ঞায়িত আক্ষরিক সংখ্যা প্রত্যয়গুলিকে GNU হিসাবে গ্রহণ করুন
এক্সটেনশন যখন এই বিকল্পটি বন্ধ করা হয় তখন এই প্রত্যয়গুলিকে C++11 ব্যবহারকারী হিসাবে বিবেচনা করা হয়-
সংজ্ঞায়িত আক্ষরিক সংখ্যাসূচক প্রত্যয়। এটি সমস্ত প্রাক-C++11 উপভাষার জন্য ডিফল্টরূপে চালু থাকে
এবং সমস্ত GNU উপভাষা: -std=c++98, -std = gnu ++ 98, -std = gnu ++ 11, -std = gnu ++ 14. এই
বিকল্প ISO C++11 এর জন্য ডিফল্টরূপে বন্ধ থাকে (-std=c++11, ...)।
অনুসরণ -ডব্লিউ... বিকল্প দ্বারা প্রভাবিত হয় না -ওয়াল.
-Weffc ++ (শুধুমাত্র C++ এবং উদ্দেশ্য-C++)
স্কট মেয়ার্সের নিম্নলিখিত শৈলী নির্দেশিকা লঙ্ঘন সম্পর্কে সতর্ক করুন কার্যকর
সি ++ বইয়ের সিরিজ:
* গতিশীলভাবে ক্লাসের জন্য একটি কপি কনস্ট্রাক্টর এবং একটি অ্যাসাইনমেন্ট অপারেটর সংজ্ঞায়িত করুন-
বরাদ্দ মেমরি।
* কনস্ট্রাক্টরগুলিতে অ্যাসাইনমেন্টের শুরুতে অগ্রাধিকার দিন।
* "অপারেটর=" এর সাথে *এর একটি রেফারেন্স দিন।
* যখন আপনাকে একটি বস্তু ফেরত দিতে হবে তখন একটি রেফারেন্স ফেরত দেওয়ার চেষ্টা করবেন না।
* ইনক্রিমেন্ট এবং ডিক্রিমেন্ট অপারেটরগুলির উপসর্গ এবং পোস্টফিক্স ফর্মগুলির মধ্যে পার্থক্য করুন।
* কখনই "&&", "||", বা "," ওভারলোড করবেন না।
এই বিকল্পটিও সক্ষম করে -নোন-ভার্চুয়াল-ডোর, যা কার্যকরী C++ এর মধ্যে একটি
সুপারিশ যাইহোক, ভার্চুয়াল অভাব সম্পর্কে সতর্ক করার জন্য চেক বাড়ানো হয়
অ্যাক্সেসযোগ্য নন-পলিমরফিক বেস ক্লাসেও ধ্বংসকারী।
এই বিকল্পটি নির্বাচন করার সময়, সচেতন থাকুন যে স্ট্যান্ডার্ড লাইব্রেরি শিরোনামগুলি সব মেনে চলে না
এই নির্দেশিকাগুলির; ব্যবহার , grep -v সেই সতর্কতাগুলি ফিল্টার করতে।
-Wstrict-null-sentinel (শুধুমাত্র C++ এবং উদ্দেশ্য-C++)
সেন্টিনেল হিসাবে একটি অকাস্টেড "NULL" ব্যবহার সম্পর্কে সতর্ক করুন৷ শুধুমাত্র GCC দিয়ে কম্পাইল করার সময়
এটি একটি বৈধ সেন্টিনেল, কারণ "NULL" কে "__null" দ্বারা সংজ্ঞায়িত করা হয়েছে। যদিও এটি একটি শূন্য
একটি নাল পয়েন্টারের পরিবর্তে পয়েন্টার ধ্রুবক, এটি একই আকারের নিশ্চিত
একটি নির্দেশক হিসাবে। কিন্তু এই ব্যবহার বিভিন্ন কম্পাইলার জুড়ে বহনযোগ্য নয়।
-Wno-নন-টেমপ্লেট-বন্ধু (শুধুমাত্র C++ এবং উদ্দেশ্য-C++)
টেমপ্লেটের মধ্যে নন-টেমপ্লেটাইজড ফ্রেন্ড ফাংশন ঘোষণা করা হলে সতর্কতা অক্ষম করুন।
G++ এ স্পষ্ট টেমপ্লেট স্পেসিফিকেশন সমর্থনের আবির্ভাবের পর থেকে, যদি এর নাম
বন্ধু একটি অযোগ্য-আইডি (যেমন, বন্ধু foo (int)), C++ ভাষার স্পেসিফিকেশন
দাবি করে যে বন্ধু একটি সাধারণ, ননটেমপ্লেট ফাংশন ঘোষণা বা সংজ্ঞায়িত করে। (অধ্যায়
14.5.3)। G++ স্পষ্ট স্পেসিফিকেশন প্রয়োগ করার আগে, অযোগ্য-আইডি হতে পারে
একটি টেমপ্লেটাইজড ফাংশনের একটি বিশেষ বিশেষীকরণ হিসাবে ব্যাখ্যা করা হয়। কারণ এই
নন-কনফর্মিং আচরণ G++ এর জন্য আর ডিফল্ট আচরণ নয়,
-নন-টেমপ্লেট-বন্ধু কম্পাইলারকে সম্ভাব্য সমস্যার জন্য বিদ্যমান কোড পরীক্ষা করার অনুমতি দেয়
দাগ এবং ডিফল্টরূপে চালু আছে। এই নতুন কম্পাইলার আচরণ বন্ধ করা যেতে পারে সঙ্গে
-Wno-নন-টেমপ্লেট-বন্ধু, যা কনফরম্যান্ট কম্পাইলার কোড রাখে কিন্তু নিষ্ক্রিয় করে
সহায়ক সতর্কতা।
-ওল্ড-স্টাইল-কাস্ট (শুধুমাত্র C++ এবং উদ্দেশ্য-C++)
যদি একটি C++ প্রোগ্রামের মধ্যে একটি পুরানো-শৈলী (সি-স্টাইল) অ-অকার্যকর টাইপের কাস্ট ব্যবহার করা হয় তবে সতর্ক করুন।
নতুন-শৈলী কাস্ট ("ডাইনামিক_কাস্ট", "স্ট্যাটিক_কাস্ট", "পুনর্ব্যক্ত_কাস্ট", এবং
"const_cast") অনাকাঙ্ক্ষিত প্রভাবগুলির জন্য কম ঝুঁকিপূর্ণ এবং অনুসন্ধান করা অনেক সহজ।
-ওভারলোডেড-ভার্চুয়াল (শুধুমাত্র C++ এবং উদ্দেশ্য-C++)
সতর্ক করুন যখন একটি ফাংশন ঘোষণা একটি বেস ক্লাস থেকে ভার্চুয়াল ফাংশন লুকিয়ে রাখে। জন্য
উদাহরণ, মধ্যে:
কাঠামো a {
ভার্চুয়াল অকার্যকর f();
};
struct B: পাবলিক A {
অকার্যকর f (int);
};
"f" এর "A" শ্রেণীর সংস্করণ "B" তে লুকানো আছে, এবং কোড যেমন:
B*b;
b->f();
কম্পাইল করতে ব্যর্থ হয়।
-Wno-pmf-রূপান্তর (শুধুমাত্র C++ এবং উদ্দেশ্য-C++)
একটি আবদ্ধ পয়েন্টারকে সদস্য ফাংশনে একটি প্লেনে রূপান্তর করার জন্য ডায়াগনস্টিক অক্ষম করুন৷
পয়েন্টার
-Wsign-promo (শুধুমাত্র C++ এবং উদ্দেশ্য-C++)
ওভারলোড রেজোলিউশন যখন স্বাক্ষরবিহীন বা গণনাকৃত প্রকার থেকে একটি প্রচার বেছে নেয় তখন সতর্ক করুন৷
একটি স্বাক্ষরিত প্রকার, একই আকারের একটি স্বাক্ষরবিহীন প্রকারে রূপান্তরের উপর। আগে
G++ এর সংস্করণগুলি স্বাক্ষরবিহীনতা রক্ষা করার চেষ্টা করেছে, কিন্তু মান বর্তমানকে বাধ্যতামূলক করে
আচরণ।
অপশন সমূহ নিয়ামক উদ্দেশ্য গ এবং উদ্দেশ্য-C++ উপভাষা
(দ্রষ্টব্য: এই ম্যানুয়ালটি উদ্দেশ্য-সি এবং উদ্দেশ্য-সি++ ভাষাগুলি বর্ণনা করে না
নিজেদের.
এই বিভাগে কমান্ড-লাইন বিকল্পগুলি বর্ণনা করে যা শুধুমাত্র উদ্দেশ্য-সি-এর জন্য অর্থপূর্ণ
এবং উদ্দেশ্য-C++ প্রোগ্রাম। এছাড়াও আপনি বেশিরভাগ ভাষা-স্বাধীন GNU ব্যবহার করতে পারেন
কম্পাইলার অপশন। উদাহরণস্বরূপ, আপনি একটি ফাইল কম্পাইল করতে পারেন some_class.m এটার মত:
gcc -g -fgnu-রানটাইম -O -c some_class.m
এই উদাহরণে, -fgnu-রানটাইম একটি বিকল্প শুধুমাত্র উদ্দেশ্য-C এবং উদ্দেশ্য-C++ এর জন্য
প্রোগ্রাম; আপনি GCC দ্বারা সমর্থিত যেকোনো ভাষার সাথে অন্যান্য বিকল্পগুলি ব্যবহার করতে পারেন।
লক্ষ্য করুন যেহেতু অবজেক্টিভ-সি হল সি ভাষার একটি এক্সটেনশন, অবজেক্টিভ-সি সংকলন
সি ফ্রন্ট-এন্ডের জন্য নির্দিষ্ট বিকল্পগুলিও ব্যবহার করতে পারে (যেমন, - ঐতিহ্যগত)। একইভাবে,
উদ্দেশ্য-C++ সংকলন C++-নির্দিষ্ট বিকল্প ব্যবহার করতে পারে (যেমন, -ওয়াবি).
এখানে বিকল্পগুলির একটি তালিকা রয়েছে যা কেবল অবজেক্টিভ-সি এবং অবজেক্টিভ-সি++ কম্পাইল করার জন্য
প্রোগ্রাম:
-fconstant-স্ট্রিং-শ্রেণী=শ্রেণির নাম
ব্যবহার শ্রেণির নাম প্রতিটি আক্ষরিক স্ট্রিং জন্য তাত্ক্ষণিক ক্লাসের নাম হিসাবে
সিনট্যাক্স "@"..."" দিয়ে নির্দিষ্ট করা হয়েছে। ডিফল্ট ক্লাসের নাম "NXConstantString" যদি
GNU রানটাইম ব্যবহার করা হচ্ছে, এবং "NSConstantString" যদি পরবর্তী রানটাইম হচ্ছে
ব্যবহৃত (নীচে দেখুন)। দ্য -fconstant-ctrings বিকল্প, যদি উপস্থিতও থাকে, ওভাররাইড করে
-fconstant-স্ট্রিং-শ্রেণী "@"..."" আক্ষরিকগুলিকে ধ্রুবক হিসাবে সেট করুন এবং কারণ করুন৷
কোরফাউন্ডেশন স্ট্রিং।
-fgnu-রানটাইম
স্ট্যান্ডার্ড GNU অবজেক্টিভ-সি রানটাইমের সাথে সামঞ্জস্যপূর্ণ অবজেক্ট কোড তৈরি করুন। এই
অধিকাংশ ধরনের সিস্টেমের জন্য ডিফল্ট।
-পরবর্তী-রানটাইম
নেক্সট রানটাইমের সাথে সামঞ্জস্যপূর্ণ আউটপুট তৈরি করুন। এটি NeXT-ভিত্তিক ডিফল্ট
ডারউইন এবং ম্যাক ওএস এক্স সহ সিস্টেম। ম্যাক্রো "__NEXT_RUNTIME__" পূর্বনির্ধারিত যদি
(এবং শুধুমাত্র যদি) এই বিকল্পটি ব্যবহার করা হয়।
-fno-nil-রিসিভার
অনুমান করুন যে এতে সমস্ত উদ্দেশ্য-সি বার্তা প্রেরণ ("[রিসিভার বার্তা:আর্গ]")
অনুবাদ ইউনিট নিশ্চিত করুন যে রিসিভার "শূন্য" নয়। এই আরো জন্য অনুমতি দেয়
রানটাইমে দক্ষ এন্ট্রি পয়েন্ট ব্যবহার করা হবে। এই বিকল্প শুধুমাত্র উপলব্ধ
নেক্সট রানটাইম এবং এবিআই সংস্করণ 0 বা 1 এর সাথে সংযুক্ত।
-ফবজেসি-এবি-সংস্করণ=n
সংস্করণ ব্যবহার করুন n নির্বাচিত রানটাইমের জন্য উদ্দেশ্য-সি ABI-এর। এই বিকল্প হয়
বর্তমানে শুধুমাত্র পরবর্তী রানটাইমের জন্য সমর্থিত। সেক্ষেত্রে ভার্সন 0 হল
ঐতিহ্যগত (32-বিট) ABI বৈশিষ্ট্য এবং অন্যান্য উদ্দেশ্য-C 2.0 এর জন্য সমর্থন ছাড়াই
সংযোজন সংস্করণ 1 হল ঐতিহ্যগত (32-বিট) ABI যা বৈশিষ্ট্যগুলির জন্য সমর্থন এবং
অন্যান্য উদ্দেশ্য-সি 2.0 সংযোজন। সংস্করণ 2 হল আধুনিক (64-বিট) ABI। যদি কিছুই না হয়
নির্দিষ্ট করা হয়েছে, 0-বিট টার্গেট মেশিনে ডিফল্ট সংস্করণ 32 এবং 2-বিটের সংস্করণ 64
লক্ষ্য মেশিন।
-fobjc-কল-cxx-cdtors
প্রতিটি অবজেক্টিভ-সি ক্লাসের জন্য, এর কোনো ইনস্ট্যান্স ভেরিয়েবল একটি C++ অবজেক্ট কিনা তা পরীক্ষা করে দেখুন
একটি নন-তুচ্ছ ডিফল্ট কনস্ট্রাক্টর সহ। যদি তাই হয়, একটি বিশেষ "- (আইডি) সংশ্লেষণ করুন
.cxx_construct" ইনস্ট্যান্স পদ্ধতি যা যেকোনও নন-তুচ্ছ ডিফল্ট কনস্ট্রাক্টর চালায়
যেমন উদাহরণ ভেরিয়েবল, ক্রমানুসারে, এবং তারপর "self" ফেরত দিন। একইভাবে, আছে কিনা তা পরীক্ষা করুন
ইনস্ট্যান্স ভেরিয়েবল হল একটি C++ অবজেক্ট যার একটি নন-তুচ্ছ ধ্বংসকারী, এবং যদি তাই হয়, সংশ্লেষিত করুন
একটি বিশেষ "- (অকার্যকর) .cxx_destruct" পদ্ধতি যা এই জাতীয় সমস্ত ডিফল্ট ধ্বংসকারী চালায়,
বিপরীত ক্রম.
"- (id) .cxx_construct" এবং "- (void) .cxx_destruct" পদ্ধতিগুলি শুধুমাত্র এইভাবে তৈরি করা হয়েছে
বর্তমান অবজেক্টিভ-সি ক্লাসে ঘোষিত ইনস্ট্যান্স ভেরিয়েবলের উপর কাজ করে, এবং সেগুলি নয়
সুপারক্লাস থেকে উত্তরাধিকারসূত্রে প্রাপ্ত। এটি অবজেক্টিভ-সি রানটাইমের দায়িত্ব
একটি বস্তুর উত্তরাধিকার অনুক্রমের মধ্যে এই ধরনের সমস্ত পদ্ধতি আহ্বান করুন। "- (আইডি)
.cxx_construct" পদ্ধতিগুলি একটি নতুন অবজেক্টের পরপরই রানটাইম দ্বারা আহ্বান করা হয়
উদাহরণ বরাদ্দ করা হয়; "- (অকার্যকর) .cxx_destruct" পদ্ধতিগুলি অবিলম্বে চালু করা হয়৷
রানটাইম একটি অবজেক্ট ইনস্ট্যান্স ডিলোকেট করার আগে।
এই লেখা পর্যন্ত, Mac OS X 10.4 এবং পরবর্তীতে শুধুমাত্র NeXT রানটাইমের জন্য সমর্থন রয়েছে
"- (id) .cxx_construct" এবং "- (void) .cxx_destruct" পদ্ধতি ব্যবহার করা হচ্ছে।
-fobjc-সরাসরি-প্রেরণ
বার্তা প্রেরণকারীতে দ্রুত লাফ দেওয়ার অনুমতি দিন। ডারউইনের উপর এই মাধ্যমে সম্পন্ন করা হয়
com পৃষ্ঠা।
-fobjc- ব্যতিক্রম
অবজেক্টিভ-সি-তে কাঠামোগত ব্যতিক্রম পরিচালনার জন্য সিনট্যাকটিক সমর্থন সক্ষম করুন, এর মতো
C++ এবং জাভা কি অফার করে। উদ্দেশ্য-সি ব্যবহার করার জন্য এই বিকল্পটি প্রয়োজন
@try, @throw, @catch, @finally এবং @synchronized কীওয়ার্ড। এই বিকল্প উপলব্ধ
GNU রানটাইম এবং পরবর্তী রানটাইম উভয়ের সাথে (কিন্তু এর সাথে একত্রে উপলব্ধ নয়
Mac OS X 10.2 এবং পূর্ববর্তীতে পরবর্তী রানটাইম)।
-ফবজেসি-জিসি
অবজেক্টিভ-সি এবং অবজেক্টিভ-সি++ প্রোগ্রামে আবর্জনা সংগ্রহ (জিসি) সক্ষম করুন। এই বিকল্প
শুধুমাত্র পরবর্তী রানটাইমের সাথে উপলব্ধ; GNU রানটাইমে আলাদা আবর্জনা রয়েছে
সংগ্রহ বাস্তবায়ন যে বিশেষ কম্পাইলার পতাকা প্রয়োজন হয় না।
-ফবজেসি-নিলচেক
ABI-এর সংস্করণ 2 সহ পরবর্তী রানটাইমের জন্য, পদ্ধতিতে একটি শূন্য রিসিভারের জন্য পরীক্ষা করুন
প্রকৃত পদ্ধতি কল করার আগে invocations. এটি ডিফল্ট এবং হতে পারে
ব্যবহার করে অক্ষম -fno-objc-nilcheck. ক্লাস পদ্ধতি এবং সুপার কল চেক করা হয় না
এইভাবে শূন্যের জন্য এই পতাকাটি সেট করা যাই হোক না কেন। বর্তমানে এই পতাকা আছে
যখন GNU রানটাইম, বা নেক্সট রানটাইম ABI-এর একটি পুরানো সংস্করণ ব্যবহার করা হয় তখন কিছুই নেই।
-FOBJC-STD = OBJC1
জিসিসি 1.0 দ্বারা স্বীকৃত ভাষা অবজেক্টিভ-সি 4.0 এর ভাষা সিনট্যাক্সের সাথে সঙ্গতিপূর্ণ।
এটি শুধুমাত্র C/C++ ভাষায় উদ্দেশ্য-C সংযোজনকে প্রভাবিত করে; এটা প্রভাবিত করে না
C/C++ মানগুলির সাথে সামঞ্জস্য, যা পৃথক C/C++ উপভাষা দ্বারা নিয়ন্ত্রিত হয়
বিকল্প পতাকা। যখন এই বিকল্পটি অবজেক্টিভ-সি বা অবজেক্টিভ-সি++ ব্যবহার করা হয়
কম্পাইলার, জিসিসি 4.0 দ্বারা স্বীকৃত নয় এমন যেকোন অবজেক্টিভ-সি সিনট্যাক্স প্রত্যাখ্যান করা হয়। এই
আপনার অবজেক্টিভ-সি কোডের সাথে কম্পাইল করা যায় কিনা তা নিশ্চিত করতে হলে এটি কার্যকর
GCC এর পুরানো সংস্করণ।
-freplace-objc-ক্লাস
একটি বিশেষ মার্কার নির্দেশ নির্গত করুন ld(1) ফলে অবজেক্টে স্থিরভাবে লিঙ্ক না করা
ফাইল, এবং অনুমতি দিন ডাইল্ড(1) পরিবর্তে রান টাইমে এটি লোড করতে। এই ব্যবহার করা হয়
ফিক্স-এন্ড-কন্টিনিউ ডিবাগিং মোডের সাথে একযোগে, যেখানে অবজেক্ট ফাইল ইন
প্রশ্নটি পুনরায় সংকলিত এবং গতিশীলভাবে প্রোগ্রামের মধ্যে পুনরায় লোড করা যেতে পারে
সঞ্চালন, প্রোগ্রাম নিজেই পুনরায় আরম্ভ করার প্রয়োজন ছাড়া। বর্তমানে, ফিক্স এবং-
Continue কার্যকারিতা শুধুমাত্র Mac এ NeXT রানটাইমের সাথে একযোগে উপলব্ধ
OS X 10.3 এবং পরবর্তী।
-fzero-লিংক
NeXT রানটাইমের জন্য কম্পাইল করার সময়, কম্পাইলার সাধারণত কল প্রতিস্থাপন করে
"objc_getClass("...")" (যখন কম্পাইলের সময় ক্লাসের নাম জানা যায়) সাথে
স্ট্যাটিক ক্লাস রেফারেন্স যা লোডের সময় শুরু হয়, যা রান-টাইম উন্নত করে
কর্মক্ষমতা. উল্লেখ করা -fzero-লিংক পতাকা এই আচরণ এবং কারণ দমন
ধরে রাখার জন্য "objc_getClass("...")" এ কল করে। এটি জিরো-লিঙ্কে দরকারী
ডিবাগিং মোড, যেহেতু এটি পৃথক শ্রেণী বাস্তবায়নের জন্য সংশোধন করার অনুমতি দেয়
প্রোগ্রাম সম্পাদনের সময়। GNU রানটাইম বর্তমানে সবসময় কল ধরে রাখে
"objc_get_class("...")" কমান্ড-লাইন বিকল্প নির্বিশেষে।
-fno-স্থানীয়-আইভারস
অবজেক্টিভ-সি-তে ডিফল্ট দৃষ্টান্ত ভেরিয়েবলগুলিকে স্থানীয় হিসাবে অ্যাক্সেস করা যেতে পারে
ক্লাসের পদ্ধতির মধ্যে থেকে ভেরিয়েবলগুলিকে তারা ঘোষণা করেছে। এটি হতে পারে
ইনস্ট্যান্স ভেরিয়েবল এবং স্থানীয়ভাবে ঘোষিত অন্যান্য ভেরিয়েবলের মধ্যে ছায়া
একটি ক্লাস পদ্ধতির ভিতরে বা বিশ্বব্যাপী একই নামের সাথে। উল্লেখ করা -fno-স্থানীয়-আইভারস
পতাকা এই আচরণকে নিষ্ক্রিয় করে এইভাবে পরিবর্তনশীল ছায়ার সমস্যাগুলি এড়িয়ে যায়।
-ফাইভার-দৃশ্যমানতা=[প্রকাশ্য|রক্ষিত|ব্যক্তিগত|প্যাকেজ]
নির্দিষ্ট বিকল্পে ডিফল্ট ইনস্ট্যান্স ভেরিয়েবল দৃশ্যমানতা সেট করুন যাতে সেই উদাহরণ
ডিফল্ট কোনো অ্যাক্সেস মডিফায়ার নির্দেশের সুযোগের বাইরে ঘোষিত ভেরিয়েবল
নির্দিষ্ট দৃশ্যমানতা।
-জেন-ডিক্লেস
সোর্স ফাইলে দেখা সমস্ত ক্লাসের ইন্টারফেস ডিক্লেয়ারেশন নামের একটি ফাইলে ডাম্প করুন
surcename.decl.
-Wassign-Intercept (শুধুমাত্র উদ্দেশ্য-সি এবং উদ্দেশ্য-সি++)
যখনই কোনো অবজেক্টিভ-সি অ্যাসাইনমেন্ট আবর্জনা সংগ্রহকারীর দ্বারা বাধাপ্রাপ্ত হয় তখন সতর্ক করুন।
-উনো-প্রটোকল (শুধুমাত্র উদ্দেশ্য-সি এবং উদ্দেশ্য-সি++)
যদি একটি ক্লাস একটি প্রোটোকল বাস্তবায়নের জন্য ঘোষণা করা হয়, প্রতিটি পদ্ধতির জন্য একটি সতর্কতা জারি করা হয়
প্রোটোকলের মধ্যে যা ক্লাস দ্বারা বাস্তবায়িত হয় না। ডিফল্ট আচরণ করা হয়
ক্লাসে স্পষ্টভাবে প্রয়োগ করা হয়নি এমন প্রতিটি পদ্ধতির জন্য একটি সতর্কতা জারি করুন, এমনকি যদি a
পদ্ধতি বাস্তবায়ন সুপারক্লাস থেকে উত্তরাধিকারসূত্রে প্রাপ্ত। আপনি যদি ব্যবহার করেন -উনো-প্রটোকল
বিকল্প, তারপর সুপারক্লাস থেকে উত্তরাধিকারসূত্রে প্রাপ্ত পদ্ধতিগুলিকে বাস্তবায়িত বলে মনে করা হয়,
এবং তাদের জন্য কোন সতর্কতা জারি করা হয় না।
-সেলেক্টর (শুধুমাত্র উদ্দেশ্য-সি এবং উদ্দেশ্য-সি++)
একই নির্বাচকের জন্য বিভিন্ন ধরণের একাধিক পদ্ধতির সময় পাওয়া গেলে সতর্ক করুন৷
সংকলন চেক শেষ পর্যায়ে পদ্ধতি তালিকা সঞ্চালিত হয়
সংকলন অতিরিক্তভাবে, a তে উপস্থিত প্রতিটি নির্বাচকের জন্য একটি চেক করা হয়
"@নির্বাচক(...)" অভিব্যক্তি, এবং সেই নির্বাচকের জন্য একটি সংশ্লিষ্ট পদ্ধতি হয়েছে
সংকলনের সময় পাওয়া যায়। কারণ এই চেকগুলি শুধুমাত্র শেষে মেথড টেবিল স্ক্যান করে
সংকলনের, এই সতর্কতাগুলি উত্পাদিত হয় না যদি সংকলনের চূড়ান্ত পর্যায়ে থাকে
পৌঁছানো হয়নি, উদাহরণস্বরূপ কারণ সংকলনের সময় একটি ত্রুটি পাওয়া যায়, বা কারণ
-fsyntax-শুধুমাত্র বিকল্প ব্যবহার করা হচ্ছে।
- কঠোর-নির্বাচক-ম্যাচ (শুধুমাত্র উদ্দেশ্য-সি এবং উদ্দেশ্য-সি++)
সতর্ক করুন যদি বিভিন্ন যুক্তি সহ একাধিক পদ্ধতি এবং/অথবা রিটার্নের ধরন পাওয়া যায় a এর জন্য
প্রদত্ত নির্বাচক যখন একটি রিসিভার এই নির্বাচক ব্যবহার করে একটি বার্তা পাঠানোর চেষ্টা
"আইডি" বা "ক্লাস" টাইপ করুন। যখন এই পতাকা বন্ধ থাকে (যা ডিফল্ট আচরণ),
কম্পাইলার এই ধরনের সতর্কতা বাদ দেয় যদি কোনো পার্থক্য পাওয়া যায় সেগুলি ভাগ করে নেওয়ার মধ্যে সীমাবদ্ধ থাকে
একই আকার এবং প্রান্তিককরণ।
-উন্ড ঘোষিত-নির্বাচক (শুধুমাত্র উদ্দেশ্য-সি এবং উদ্দেশ্য-সি++)
একটি অঘোষিত নির্বাচককে উল্লেখ করে একটি "@নির্বাচক(...)" অভিব্যক্তি পাওয়া গেলে সতর্ক করুন৷ ক
নির্বাচক অঘোষিত বলে বিবেচিত হয় যদি সেই নামের কোনো পদ্ধতি আগে ঘোষণা করা না হয়
"@নির্বাচক(...)" অভিব্যক্তি, হয় স্পষ্টভাবে একটি @ইন্টারফেসে বা @প্রোটোকলে
ঘোষণা, বা পরোক্ষভাবে একটি @ বাস্তবায়ন বিভাগে। এই বিকল্পটি সর্বদা সঞ্চালিত হয়
একটি "@নির্বাচক(...)" অভিব্যক্তি পাওয়া গেলেই এটি পরীক্ষা করে -সেলেক্টর কেবল
সংকলনের চূড়ান্ত পর্যায়ে তার চেকগুলি সম্পাদন করে। এটি কোডিংকেও কার্যকর করে
স্টাইল কনভেনশন যে পদ্ধতি এবং নির্বাচকদের ব্যবহার করার আগে ঘোষণা করা আবশ্যক।
-প্রিন্ট-objc-রানটাইম-তথ্য
C শিরোনাম তৈরি করুন যেটি সবচেয়ে বড় কাঠামোর বর্ণনা করে যা মান দ্বারা পাস করা হয়, যদি থাকে।
অপশন সমূহ থেকে নিয়ন্ত্রণ লক্ষণ বার্তা বিন্যাস
ঐতিহ্যগতভাবে, আউটপুট ডিভাইস নির্বিশেষে ডায়াগনস্টিক বার্তাগুলি ফর্ম্যাট করা হয়েছে
দিক (যেমন এর প্রস্থ, ...)। আপনি নিয়ন্ত্রণ করতে নীচে বর্ণিত বিকল্পগুলি ব্যবহার করতে পারেন
ডায়াগনস্টিক বার্তাগুলির জন্য বিন্যাসকরণ অ্যালগরিদম, যেমন প্রতি লাইনে কতগুলি অক্ষর, কতবার
উত্স অবস্থান তথ্য রিপোর্ট করা উচিত. উল্লেখ্য যে কিছু ভাষা সামনে শেষ হতে পারে
এই অপশন সম্মান না.
-fmessage-দৈর্ঘ্য=n
ত্রুটি বার্তাগুলি বিন্যাস করার চেষ্টা করুন যাতে তারা প্রায় লাইনে ফিট করে n চরিত্র. যদি n is
শূন্য, তারপর কোন লাইন-মোড়ানো হয় না; প্রতিটি ত্রুটি বার্তা একটি একক লাইনে প্রদর্শিত হয়।
এটি সমস্ত সম্মুখ প্রান্তের জন্য ডিফল্ট।
-fdiagnostics-show-location= একবার
শুধুমাত্র লাইন-র্যাপিং মোডে অর্থপূর্ণ। ডায়াগনস্টিক বার্তা রিপোর্টারকে নির্দেশ দেয়
উৎস অবস্থান তথ্য নির্গত একদা; অর্থাৎ, বার্তাটি মানানসই হওয়ার জন্য খুব দীর্ঘ হলে
একটি একক ভৌত লাইনে এবং আবৃত করতে হবে, উত্স অবস্থান নির্গত হবে না
(উপসর্গ হিসাবে) আবার, বারবার, পরবর্তী ধারাবাহিকতা লাইনে। এই হল
ডিফল্ট আচরণ।
-fdiagnostics-show-location=প্রতিটি লাইন
শুধুমাত্র লাইন-র্যাপিং মোডে অর্থপূর্ণ। ডায়াগনস্টিক বার্তা রিপোর্টারকে নির্দেশ দেয়
ফলাফলের ভৌত রেখার জন্য একই উৎস অবস্থানের তথ্য (উপসর্গ হিসাবে) নির্গত করুন
একটি বার্তা ভাঙ্গার প্রক্রিয়া থেকে যা একটি একক লাইনে মাপসই করা খুব দীর্ঘ।
-fdiagnostics-বর্ণ [=কখন]
-fno-ডায়াগনস্টিকস-রঙ
ডায়াগনস্টিকসে রঙ ব্যবহার করুন। কখন is না, সর্বদা, বা গাড়ী. ডিফল্ট কিভাবে উপর নির্ভর করে
কম্পাইলারটি কনফিগার করা হয়েছে, এটি উপরের যেকোনো একটি হতে পারে কখন বিকল্প বা এছাড়াও
না if GCC_colours পরিবেশ পরিবর্তনশীল পরিবেশে উপস্থিত নেই, এবং গাড়ী
অন্যথায়। গাড়ী মানে যখন স্ট্যান্ডার্ড ত্রুটি একটি টার্মিনাল হয় তখনই রঙ ব্যবহার করা। দ্য
ফর্ম -fdiagnostics-রঙ এবং -fno-ডায়াগনস্টিকস-রঙ জন্য উপনাম হয়
-fdiagnostics-color=সর্বদা এবং -fdiagnostics-color=কখনও না, যথাক্রমে।
রং পরিবেশ পরিবর্তনশীল দ্বারা সংজ্ঞায়িত করা হয় GCC_colours. এর মান হল একটি কোলন-
ক্ষমতার পৃথক তালিকা এবং গ্রাফিক রেন্ডিশন (এসজিআর) সাবস্ট্রিং নির্বাচন করুন। এসজিআর
কমান্ড টার্মিনাল বা টার্মিনাল এমুলেটর দ্বারা ব্যাখ্যা করা হয়। (এ বিভাগটি দেখুন
অনুমোদিত মান এবং তাদের অর্থের জন্য আপনার পাঠ্য টার্মিনালের ডকুমেন্টেশন
ক্যারেক্টার অ্যাট্রিবিউট।) এই সাবস্ট্রিং মানগুলি দশমিক প্রতিনিধিত্বে পূর্ণসংখ্যা
এবং সেমিকোলন দিয়ে সংযুক্ত করা যেতে পারে। সংযুক্ত করার জন্য সাধারণ মান অন্তর্ভুক্ত 1 উন্নত
সাহসী, 4 আন্ডারলাইনের জন্য, 5 পলকের জন্য, 7 বিপরীত জন্য, 39 ডিফল্ট ফোরগ্রাউন্ড রঙের জন্য, 30
থেকে 37 অগ্রভাগের রঙের জন্য, 90 থেকে 97 16-রঙ মোড ফোরগ্রাউন্ড রঙের জন্য, 38; 5; 0 থেকে
38; 5; 255 88-রঙ এবং 256-রঙ মোড ফোরগ্রাউন্ড রঙের জন্য, 49 ডিফল্ট ব্যাকগ্রাউন্ডের জন্য
রঙ, 40 থেকে 47 পটভূমির রঙের জন্য, 100 থেকে 107 16-রঙ মোড পটভূমি রং জন্য,
এবং 48; 5; 0 থেকে 48; 5; 255 88-রঙ এবং 256-রঙ মোড পটভূমি রং জন্য.
ডিফল্ট GCC_colours is
error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01
কোথায় 01; 31 গাঢ় লাল, 01; 35 গাঢ় ম্যাজেন্টা, 01; 36 সাহসী সায়ান, 01; 32 সাহসী
সবুজ এবং 01 সাহসী বিন্যাস GCC_colours খালি স্ট্রিং রং নিষ্ক্রিয় করে।
সমর্থিত ক্ষমতা নিম্নরূপ.
"ত্রুটি="
ত্রুটির জন্য SGR সাবস্ট্রিং: মার্কার।
"সতর্কতা"
সতর্কতার জন্য SGR সাবস্ট্রিং: মার্কার।
"দ্রষ্টব্য="
নোটের জন্য SGR সাবস্ট্রিং: মার্কার।
"ক্যারেট="
ক্যারেট লাইনের জন্য SGR সাবস্ট্রিং।
"লোকাস ="
অবস্থান তথ্যের জন্য SGR সাবস্ট্রিং, ফাইল: লাইন or ফাইল: লাইন: কলাম ইত্যাদি।
"উদ্ধৃতি="
উদ্ধৃতির মধ্যে মুদ্রিত তথ্যের জন্য SGR সাবস্ট্রিং।
-fno-ডায়াগনস্টিকস-শো-বিকল্প
ডিফল্টরূপে, নির্গত প্রতিটি ডায়াগনস্টিক কমান্ড-লাইন বিকল্প নির্দেশ করে পাঠ্য অন্তর্ভুক্ত করে
যেটি সরাসরি ডায়াগনস্টিক নিয়ন্ত্রণ করে (যদি এই ধরনের একটি বিকল্প ডায়াগনস্টিক জানে
যন্ত্রপাতি)। উল্লেখ করা -fno-ডায়াগনস্টিকস-শো-বিকল্প পতাকা যে দমন করে
আচরণ।
-fno-ডায়াগনস্টিকস-শো-ক্যারেট
ডিফল্টরূপে, নির্গত প্রতিটি ডায়াগনস্টিক মূল উৎস লাইন এবং একটি ক্যারেট '^' অন্তর্ভুক্ত করে
কলাম নির্দেশ করে। এই বিকল্পটি এই তথ্য দমন করে। উৎস লাইন হল
থেকে কাটা n অক্ষর, যদি -fmessage-দৈর্ঘ্য=n অপশন দেওয়া হয়। যখন আউটপুট
টার্মিনালে করা হয়, প্রস্থটি প্রদত্ত প্রস্থে সীমাবদ্ধ COLUMNS বাই
এনভায়রনমেন্ট ভেরিয়েবল বা, যদি সেট না করা হয়, টার্মিনাল প্রস্থে।
অপশন সমূহ থেকে অনুরোধ or দমন করা সতর্কবাণী
সতর্কতা হল ডায়াগনস্টিক বার্তা যা এমন নির্মাণের রিপোর্ট করে যা অন্তর্নিহিত নয়
ভুল কিন্তু এটি ঝুঁকিপূর্ণ বা একটি ত্রুটি হতে পারে বলে পরামর্শ দেয়৷
নিম্নলিখিত ভাষা-স্বাধীন বিকল্পগুলি নির্দিষ্ট সতর্কতা সক্রিয় করে না কিন্তু নিয়ন্ত্রণ করে
GCC দ্বারা উত্পাদিত ডায়গনিস্টিক ধরনের.
-fsyntax-শুধুমাত্র
সিনট্যাক্স ত্রুটির জন্য কোড পরীক্ষা করুন, কিন্তু এর বাইরে কিছু করবেন না।
-fmax-ত্রুটি=n
সর্বোচ্চ সংখ্যক ত্রুটি বার্তা সীমিত করে n, যে সময়ে জিসিসি বরং জামিন দেয়
সোর্স কোড প্রক্রিয়াকরণ চালিয়ে যাওয়ার চেষ্টা করার চেয়ে। যদি n হল 0 (ডিফল্ট),
উত্পাদিত ত্রুটি বার্তা সংখ্যার কোন সীমা নেই. যদি মারাত্মক-ত্রুটি এছাড়াও
নির্দিষ্ট, তারপর মারাত্মক-ত্রুটি এই বিকল্পের উপর অগ্রাধিকার নেয়।
-w সমস্ত সতর্কতা বার্তা বাধা দিন।
-ভুল
সমস্ত সতর্কতাকে ভুল করে ফেলুন।
-ভুল=
নির্দিষ্ট সতর্কতাটিকে একটি ত্রুটিতে পরিণত করুন। একটি সতর্কতার জন্য নির্দিষ্টকারী যুক্ত করা হয়েছে;
উদাহরণ স্বরূপ -Werror=সুইচ দ্বারা নিয়ন্ত্রিত সতর্কতা চালু করে -উউইচ ত্রুটির মধ্যে
এই সুইচটি নেতিবাচক রূপ নেয়, যা নেগেট করতে ব্যবহার করা হবে -ভুল নির্দিষ্ট সতর্কতার জন্য;
উদাহরণ স্বরূপ -Wno-error=সুইচ তোলে -উউইচ সতর্কতা ভুল না, এমনকি যখন -ভুল
কার্যকর হয়
প্রতিটি নিয়ন্ত্রণযোগ্য সতর্কতার জন্য সতর্কীকরণ বার্তাটি নিয়ন্ত্রণ করে এমন বিকল্প অন্তর্ভুক্ত করে
সতর্কবার্তা. যে বিকল্প তারপর ব্যবহার করা যেতে পারে -ভুল= এবং -Wno-eror = বর্ণনানুসারে
উপরে (সতর্কতা বার্তার বিকল্পটির মুদ্রণ ব্যবহার করে নিষ্ক্রিয় করা যেতে পারে
-fno-ডায়াগনস্টিকস-শো-বিকল্প পতাকা।)
উল্লেখ্য যে নির্দিষ্ট -ভুল=foo বিন্যাস স্বয়ংক্রিয়ভাবে বোঝায় -Wfoo বিন্যাস। যাহোক, -Wno-eror =foo বিন্যাস
কিছু বোঝায় না।
মারাত্মক-ত্রুটি
এই বিকল্পটি কম্পাইলারকে প্রথম ত্রুটির কারণে কম্পাইলেশন বাতিল করে দেয়
চালিয়ে যাওয়ার এবং আরও ত্রুটি বার্তা প্রিন্ট করার চেষ্টা করার পরিবর্তে।
আপনি শুরুতে বিকল্পগুলির সাথে অনেকগুলি নির্দিষ্ট সতর্কতার অনুরোধ করতে পারেন৷ -W, উদাহরণ স্বরূপ
-উইমপ্লিসিট অন্তর্নিহিত ঘোষণার উপর সতর্কতা অনুরোধ করার জন্য। এই নির্দিষ্ট সতর্কতা প্রতিটি
বিকল্পগুলিরও একটি নেতিবাচক ফর্ম শুরু আছে -ওনো- সতর্কতা বন্ধ করতে; উদাহরণ স্বরূপ,
-উনো-অন্তর্ভুক্ত. এই ম্যানুয়াল দুটি ফর্মের মধ্যে শুধুমাত্র একটি তালিকাভুক্ত করে, যেটি ডিফল্ট নয়।
আরও ভাষা-নির্দিষ্ট বিকল্পের জন্য এছাড়াও পড়ুন সি ++ উপভাষা অপশন সমূহ এবং উদ্দেশ্য গ
এবং উদ্দেশ্য-C++ উপভাষা অপশন সমূহ.
কিছু অপশন, যেমন -ওয়াল এবং -ওয়েক্সট্রা, অন্যান্য বিকল্প চালু করুন, যেমন -ওয়ান ব্যবহার করা হয়েছে, যা
আরও বিকল্প চালু করতে পারে, যেমন -উইনজড-মান. ইতিবাচক এবং এর সম্মিলিত প্রভাব
নেতিবাচক রূপ হল আরও নির্দিষ্ট বিকল্পগুলিকে কম নির্দিষ্টগুলির চেয়ে অগ্রাধিকার দেওয়া হয়,
কমান্ড লাইনে তাদের অবস্থান থেকে স্বাধীনভাবে। একই নির্দিষ্টতার বিকল্পগুলির জন্য,
শেষ একটি কার্যকর হয়. pragmas মাধ্যমে সক্রিয় বা নিষ্ক্রিয় বিকল্পগুলি কার্যকর হয় যেন তারা
কমান্ড লাইনের শেষে হাজির।
যখন একটি অচেনা সতর্কতা বিকল্প অনুরোধ করা হয় (যেমন, -অজানা-সতর্কতা), GCC নির্গত ক
ডায়গনিস্টিক বলে যে বিকল্পটি স্বীকৃত নয়। যাইহোক, যদি -ওনো- ফর্ম ব্যবহার করা হয়,
আচরণ সামান্য ভিন্ন: জন্য কোন ডায়গনিস্টিক উত্পাদিত হয় না -অজানা-সতর্কতা
অন্যান্য ডায়াগনস্টিক উত্পাদিত হচ্ছে না হলে. এটি নতুন ব্যবহার করার অনুমতি দেয় -ওনো- অপশন
পুরানো কম্পাইলারগুলির সাথে, কিন্তু কিছু ভুল হলে, কম্পাইলার সতর্ক করে যে একটি অচেনা
বিকল্প বিদ্যমান।
-ডব্লিউডান্টিক
-শিক্ষার্থী
কঠোর ISO C এবং ISO C++ দ্বারা দাবিকৃত সমস্ত সতর্কতা জারি করুন; যে সমস্ত প্রোগ্রাম প্রত্যাখ্যান
নিষিদ্ধ এক্সটেনশন ব্যবহার করুন, এবং কিছু অন্যান্য প্রোগ্রাম যা ISO C এবং ISO অনুসরণ করে না
সি++। ISO C-এর জন্য, যে কোনো দ্বারা নির্দিষ্ট ISO C স্ট্যান্ডার্ডের সংস্করণ অনুসরণ করে -স্টেড
বিকল্প ব্যবহার করা হয়।
বৈধ ISO C এবং ISO C++ প্রোগ্রামগুলি এই বিকল্পের সাথে বা ছাড়াই সঠিকভাবে কম্পাইল করা উচিত
(যদিও খুব কমই প্রয়োজন -আনসি বা একটি -স্টেড এর প্রয়োজনীয় সংস্করণ উল্লেখ করার বিকল্প
আইএসও সি)। যাইহোক, এই বিকল্প ছাড়া, নির্দিষ্ট GNU এক্সটেনশন এবং ঐতিহ্যগত C এবং
C++ বৈশিষ্ট্যগুলিও সমর্থিত। এই বিকল্প দিয়ে, তারা প্রত্যাখ্যাত হয়.
-ডব্লিউডান্টিক যার বিকল্প কীওয়ার্ড ব্যবহারের জন্য সতর্কতা বার্তা সৃষ্টি করে না
নাম শুরু হয় এবং শেষ হয় __. পেডেন্টিক সতর্কতাও অভিব্যক্তিতে অক্ষম করা হয়েছে
যেটি "__extension__" অনুসরণ করে। যাইহোক, শুধুমাত্র সিস্টেম হেডার ফাইল এই ব্যবহার করা উচিত
পালানোর রাস্তা; অ্যাপ্লিকেশন প্রোগ্রাম তাদের এড়ানো উচিত.
কিছু ব্যবহারকারী ব্যবহার করার চেষ্টা করুন -ডব্লিউডান্টিক কঠোর ISO C কনফার্মেন্সের জন্য প্রোগ্রামগুলি পরীক্ষা করতে। তারা
শীঘ্রই দেখতে পান যে এটি তারা যা চায় তা করে না: এটি কিছু অ-আইএসও অনুশীলন খুঁজে পায়,
কিন্তু সব নয়---শুধুমাত্র যাদের জন্য ISO C প্রয়োজন একটি ডায়গনিস্টিক, এবং কিছু অন্যদের জন্য
যা ডায়াগনস্টিক যোগ করা হয়েছে।
ISO C মেনে চলতে ব্যর্থতার রিপোর্ট করার একটি বৈশিষ্ট্য কিছু ক্ষেত্রে কার্যকর হতে পারে,
কিন্তু যথেষ্ট অতিরিক্ত কাজের প্রয়োজন হবে এবং এর থেকে বেশ আলাদা হবে
-ডব্লিউডান্টিক. আমরা নিকট ভবিষ্যতে এই ধরনের একটি বৈশিষ্ট্য সমর্থন করার পরিকল্পনা নেই.
যেখানে স্ট্যান্ডার্ড দিয়ে উল্লেখ করা হয়েছে -স্টেড C এর একটি GNU বর্ধিত উপভাষা উপস্থাপন করে, যেমন
gnu90 or gnu99, একটি অনুরূপ আছে ভিত্তি মান, ISO C এর সংস্করণ যার উপর
GNU বর্ধিত উপভাষা ভিত্তিক। থেকে সতর্কবার্তা -ডব্লিউডান্টিক তারা যেখানে আছে দেওয়া হয়
বেস স্ট্যান্ডার্ড দ্বারা প্রয়োজনীয়। (এ ধরনের সতর্কতা দেওয়ার কোনো মানে হয় না
শুধুমাত্র নির্দিষ্ট GNU C উপভাষায় নয় এমন বৈশিষ্ট্যগুলির জন্য, যেহেতু সংজ্ঞা অনুসারে GNU
C-এর উপভাষায় সমস্ত বৈশিষ্ট্য অন্তর্ভুক্ত রয়েছে যা কম্পাইলার প্রদত্ত বিকল্পের সাথে সমর্থন করে এবং
সতর্ক করার কিছু থাকবে না।)
-শিক্ষা সংক্রান্ত-ত্রুটি
যখনই একটি ত্রুটি দিন ভিত্তি মান (দেখুন -ডব্লিউডান্টিক) একটি ডায়াগনস্টিক প্রয়োজন, ইন
কিছু ক্ষেত্রে যেখানে কম্পাইল-টাইমে অনির্ধারিত আচরণ আছে এবং কিছু অন্যান্য ক্ষেত্রে
যা মান অনুযায়ী বৈধ প্রোগ্রামগুলির সংকলনকে বাধা দেয় না।
এই সমতুল্য নয় -Werror=শিক্ষার্থী, যেহেতু এই দ্বারা সক্ষম ত্রুটি আছে
বিকল্প এবং পরবর্তী দ্বারা সক্রিয় নয় এবং তদ্বিপরীত।
-ওয়াল
এটি নির্মাণ সম্পর্কে সমস্ত সতর্কতা সক্ষম করে যা কিছু ব্যবহারকারী বিবেচনা করে
সন্দেহজনক, এবং যেগুলি এড়ানো সহজ (অথবা সতর্কতা প্রতিরোধ করার জন্য পরিবর্তন), এমনকি এর মধ্যেও
ম্যাক্রোর সাথে সংযোগ। এটি বর্ণনা করা কিছু ভাষা-নির্দিষ্ট সতর্কতাও সক্ষম করে
in সি ++ উপভাষা অপশন সমূহ এবং উদ্দেশ্য গ এবং উদ্দেশ্য-C++ উপভাষা অপশন সমূহ.
-ওয়াল নিম্নলিখিত সতর্কতা পতাকা চালু করে:
-ওয়াডড্রেস -ওয়ারে-সীমা=1 (শুধুমাত্র সঙ্গে -ও2) -Wc++11-কম্প্যাট -Wc++14-কম্প্যাট
-Wchar-সাবস্ক্রিপ্ট -ভেনাম-তুলনা (C/ObjC-তে; এটি ডিফল্টরূপে C++ এ চালু থাকে)
- Wimplicit-int (শুধুমাত্র C এবং উদ্দেশ্য-C) - Wimplicit-ফাংশন-ঘোষণা (সি এবং
উদ্দেশ্য-সি শুধুমাত্র) -Wcomment -Wformat -উমাইন (শুধুমাত্র C/ObjC এর জন্য এবং যদি না
-ফ্রিস্ট্যান্ডিং) -Wmaybe-uninitialized -উইমিসিং-বন্ধনী (শুধুমাত্র C/ObjC এর জন্য) -উনোনুল
-ওপেনএমপি-সিমড - বন্ধনী -Wpointer-চিহ্ন -নিয়ন্ত্রণ -Wreturn-টাইপ -ডেনসেন্স-পয়েন্ট
-সাইন-তুলনা (শুধুমাত্র C++ এ) -WSTRICT-LIASING -WSTRICT-overflow = 1 -উউইচ
-Wtrigraphs -উনিনিটিয়ালাইজড -অজানা-প্রাগমাস -Wunused-ফাংশন -Wunused-লেবেল
-উইনজড-মান - Wunused- পরিবর্তনশীল -Wvolatile-register-var
নোট করুন যে কিছু সতর্কতা পতাকা দ্বারা উহ্য নয় -ওয়াল. তাদের কেউ কেউ সতর্ক করে
নির্মাণ যা ব্যবহারকারীরা সাধারণত সন্দেহজনক বিবেচনা করে না, কিন্তু যা
মাঝে মাঝে আপনি চেক করতে চাইতে পারেন; অন্যরা যে নির্মাণ সম্পর্কে সতর্ক
প্রয়োজনীয় বা কিছু ক্ষেত্রে এড়ানো কঠিন, এবং পরিবর্তন করার কোন সহজ উপায় নেই
সতর্কতা দমন করার জন্য কোড। তাদের কিছু দ্বারা সক্রিয় করা হয় -ওয়েক্সট্রা কিন্তু তাদের অনেক
স্বতন্ত্রভাবে সক্রিয় করা আবশ্যক।
-ওয়েক্সট্রা
এটি কিছু অতিরিক্ত সতর্কতা ফ্ল্যাগ সক্ষম করে যা দ্বারা সক্রিয় করা হয়নি -ওয়াল. (এই বিকল্পটি ব্যবহার করা হয়েছে
ডাকা হবে -W. পুরোনো নামটি এখনও সমর্থিত, তবে নতুন নামটি আরও বেশি
বর্ণনামূলক.)
-Wclobbered -শরীর ভেজা -অজ্ঞান-কোয়ালিফায়ার মিসিং-ফিল্ড-ইনিশিয়ালাইজার
-Wmissing-প্যারামিটার-টাইপ (শুধুমাত্র গ) -ওল্ড-স্টাইল-ঘোষণা (শুধুমাত্র গ) -ওভাররাইড-ইনিট
-সাইন-তুলনা -Wtype-সীমা -উনিনিটিয়ালাইজড -Wunused-পরামিটার (শুধুমাত্র সঙ্গে -ওয়ান ব্যবহার করা হয়েছে or
-ওয়াল) -Wunused-কিন্তু-সেট-প্যারামিটার (শুধুমাত্র সঙ্গে -ওয়ান ব্যবহার করা হয়েছে or -ওয়াল)
পছন্দ -ওয়েক্সট্রা এছাড়াও নিম্নলিখিত ক্ষেত্রে সতর্কতা বার্তা প্রিন্ট করে:
* একটি পয়েন্টারকে পূর্ণসংখ্যা শূন্যের সাথে "<", "<=", ">", বা ">=" এর সাথে তুলনা করা হয়।
* (শুধুমাত্র C++) একটি গণনাকারী এবং একটি নন-গণনাকারী উভয়ই শর্তসাপেক্ষে উপস্থিত হয়
অভিব্যক্তি।
* (শুধুমাত্র C++) অস্পষ্ট ভার্চুয়াল বেস।
* (শুধুমাত্র C++) একটি অ্যারে সাবস্ক্রিপ্ট করা যা "রেজিস্টার" ঘোষণা করা হয়েছে।
* (শুধুমাত্র C++) একটি ভেরিয়েবলের ঠিকানা নেওয়া যা "রেজিস্টার" হিসাবে ঘোষণা করা হয়েছে।
* (শুধুমাত্র C++) একটি বেস ক্লাস একটি প্রাপ্ত ক্লাসের কপি কনস্ট্রাক্টরে আরম্ভ করা হয় না।
-Wchar-সাবস্ক্রিপ্ট
অ্যারে সাবস্ক্রিপ্টে "char" টাইপ থাকলে সতর্ক করুন। এটি ত্রুটির একটি সাধারণ কারণ, যেমন
প্রোগ্রামাররা প্রায়ই ভুলে যায় যে কিছু মেশিনে এই ধরনের সাইন করা আছে। এই সতর্কতা
দ্বারা সক্রিয় -ওয়াল.
-Wcomment
যখনই একটি মন্তব্য শুরু ক্রম সতর্ক /* একটি মধ্যে প্রদর্শিত হয় /* মন্তব্য, অথবা যখনই একটি
ব্যাকস্ল্যাশ-নিউলাইন a তে উপস্থিত হয় // মন্তব্য এই সতর্কতা দ্বারা সক্রিয় করা হয় -ওয়াল.
-Wno-কভারেজ-অমিল
ব্যবহার করার সময় প্রতিক্রিয়া প্রোফাইল মেলে না হলে সতর্ক করুন -প্রোফাইল-ব্যবহার বিকল্প যদি একটি
এর সাথে কম্পাইল করার মধ্যে সোর্স ফাইল পরিবর্তন করা হয় -ফপ্রোফাইল-জেনারেল এবং সাথে -প্রোফাইল-ব্যবহার,
প্রোফাইল ফিডব্যাক সহ ফাইলগুলি সোর্স ফাইলের সাথে মেলাতে ব্যর্থ হতে পারে এবং GCC পারে না
প্রোফাইল প্রতিক্রিয়া তথ্য ব্যবহার করুন. ডিফল্টরূপে, এই সতর্কতা সক্রিয় করা হয় এবং হয়৷
একটি ত্রুটি হিসাবে বিবেচিত। -Wno-কভারেজ-অমিল সতর্কতা নিষ্ক্রিয় করতে ব্যবহার করা যেতে পারে বা
-Wno-error=কভারেজ-অমিল ত্রুটি নিষ্ক্রিয় করতে ব্যবহার করা যেতে পারে। ত্রুটি নিষ্ক্রিয় করা হচ্ছে
এই সতর্কতার কারণে খারাপভাবে অপ্টিমাইজ করা কোড হতে পারে এবং শুধুমাত্র এর ক্ষেত্রেই উপযোগী
খুব ছোটখাটো পরিবর্তন যেমন একটি বিদ্যমান কোড-বেসে বাগ ফিক্স। সম্পূর্ণরূপে নিষ্ক্রিয়
সতর্কতা সুপারিশ করা হয় না.
-WNO-CPP
(C, Objective-C, C++, Objective-C++ এবং Fortran শুধুমাত্র)
"#সতর্কতা" নির্দেশাবলী দ্বারা নির্গত সতর্কীকরণ বার্তাগুলিকে দমন করুন৷
-ডাবল-প্রমোশন (সি, সি++, অবজেক্টিভ-সি এবং অবজেক্টিভ-সি++ শুধুমাত্র)
একটি সতর্কতা দিন যখন "ফ্লোট" টাইপের একটি মান স্পষ্টভাবে "ডবল"-এ উন্নীত হয়। সিপিইউ
একটি 32-বিট "একক-নির্ভুলতা" ফ্লোটিং-পয়েন্ট ইউনিট হার্ডওয়্যারে "ফ্লোট" প্রয়োগ করে,
কিন্তু সফটওয়্যারে "ডাবল" অনুকরণ করুন। যেমন একটি মেশিনে, ব্যবহার করে গণনা করছেন
সফ্টওয়্যারের জন্য প্রয়োজনীয় ওভারহেডের কারণে "ডাবল" মান অনেক বেশি ব্যয়বহুল
অনুকরণ
ঘটনাক্রমে "ডাবল" দিয়ে গণনা করা সহজ কারণ ফ্লোটিং-পয়েন্ট
আক্ষরিক অর্থ হল "ডবল" টাইপ। উদাহরণস্বরূপ, এর মধ্যে:
ভাসমান এলাকা (ফ্লোট ব্যাসার্ধ)
{
রিটার্ন 3.14159 * ব্যাসার্ধ * ব্যাসার্ধ;
}
কম্পাইলার "ডবল" দিয়ে সম্পূর্ণ গণনা করে কারণ ফ্লোটিং-পয়েন্ট
আক্ষরিক একটি "দ্বৈত"।
-Wformat
-Wformat =n
আর্গুমেন্ট সরবরাহ করা হয়েছে তা নিশ্চিত করতে "printf" এবং "scanf" ইত্যাদি কলগুলি পরীক্ষা করুন
ফর্ম্যাট স্ট্রিং নির্দিষ্ট করা উপযুক্ত ধরনের আছে, এবং যে রূপান্তর
বিন্যাসে নির্দিষ্ট স্ট্রিং অর্থপূর্ণ. এর মধ্যে স্ট্যান্ডার্ড ফাংশন এবং
অন্যান্য ফরম্যাট বৈশিষ্ট্য দ্বারা নির্দিষ্ট করা হয়েছে, "printf", "scanf", "strftime" এবং
"strfmon" (একটি এক্স/ওপেন এক্সটেনশন, সি স্ট্যান্ডার্ডে নয়) পরিবার (বা অন্যান্য লক্ষ্য-
নির্দিষ্ট পরিবার)। কোন ফাংশন হয়েছে বিন্যাস বৈশিষ্ট্য ছাড়া চেক করা হয়
নির্দিষ্ট করা নির্বাচিত স্ট্যান্ডার্ড সংস্করণ এবং ফাংশন যেমন চেক উপর নির্ভর করে
উল্লেখিত বৈশিষ্ট্য ছাড়া দ্বারা নিষ্ক্রিয় করা হয় -ফ্রিস্ট্যান্ডিং or -এফএনও-বিল্টিন.
GNU libc সংস্করণ 2.2 দ্বারা সমর্থিত বিন্যাস বৈশিষ্ট্যগুলির বিপরীতে বিন্যাসগুলি পরীক্ষা করা হয়।
এর মধ্যে রয়েছে সমস্ত ISO C90 এবং C99 বৈশিষ্ট্য, পাশাপাশি একক ইউনিক্সের বৈশিষ্ট্যগুলি
স্পেসিফিকেশন এবং কিছু BSD এবং GNU এক্সটেনশন। অন্যান্য লাইব্রেরি বাস্তবায়ন নাও হতে পারে
এই সমস্ত বৈশিষ্ট্য সমর্থন করে; GCC এর বাইরে যাওয়া বৈশিষ্ট্য সম্পর্কে সতর্কতা সমর্থন করে না
একটি নির্দিষ্ট গ্রন্থাগারের সীমাবদ্ধতা। যাইহোক, যদি -ডব্লিউডান্টিক সঙ্গে ব্যবহৃত হয় -Wformat,
নির্বাচিত স্ট্যান্ডার্ড সংস্করণে নয় এমন বিন্যাস বৈশিষ্ট্য সম্পর্কে সতর্কতা দেওয়া হয়েছে (কিন্তু নয়
"strfmon" ফরম্যাটের জন্য, যেহেতু সেগুলি সি স্ট্যান্ডার্ডের কোনো সংস্করণে নেই)।
-Wformat = 1
-Wformat
পছন্দ -Wformat সমতুল্য -Wformat = 1, এবং -উনো-ফরম্যাট সমতুল্য
-Wformat = 0। থেকে -Wformat এছাড়াও বেশ কয়েকটির জন্য নাল ফরম্যাট আর্গুমেন্ট পরীক্ষা করে
ফাংশন, -Wformat এছাড়াও বোঝায় -উনোনুল. এই স্তরের বিন্যাসের কিছু দিক
চেকিং বিকল্প দ্বারা নিষ্ক্রিয় করা যেতে পারে: -Wno-ফর্ম্যাটে-ধারণ করে-nul,
-Wno-ফর্ম্যাট-অতিরিক্ত-আর্গস, এবং -Wno-ফর্ম্যাট-শূন্য-দৈর্ঘ্য. -Wformat দ্বারা সক্রিয় করা হয়
-ওয়াল.
-Wno-ফর্ম্যাটে-ধারণ করে-nul
If -Wformat নির্দিষ্ট করা আছে, NUL বাইট ধারণকারী বিন্যাস স্ট্রিং সম্পর্কে সতর্ক করবেন না।
-Wno-ফর্ম্যাট-অতিরিক্ত-আর্গস
If -Wformat নির্দিষ্ট করা হয়েছে, একটি "printf" বা অতিরিক্ত আর্গুমেন্ট সম্পর্কে সতর্ক করবেন না
"scanf" ফরম্যাট ফাংশন। সি মান উল্লেখ করে যে এই ধরনের আর্গুমেন্ট
উপেক্ষা করা
যেখানে অব্যবহৃত আর্গুমেন্টগুলি ব্যবহৃত আর্গুমেন্টগুলির মধ্যে থাকে যা দিয়ে নির্দিষ্ট করা হয় $
অপারেন্ড নম্বর স্পেসিফিকেশন, সাধারণত সতর্কতা এখনও দেওয়া হয়, যেহেতু
অব্যবহৃত বাদ দিতে "va_arg"-এ কোন ধরনের পাস করতে হবে তা বাস্তবায়ন জানতে পারেনি
যুক্তি. যাইহোক, "scanf" ফরম্যাটের ক্ষেত্রে, এই বিকল্পটি দমন করে
একক ইউনিক্স থেকে অব্যবহৃত আর্গুমেন্ট সব পয়েন্টার হলে সতর্ক করা
স্পেসিফিকেশন বলে যে এই ধরনের অব্যবহৃত আর্গুমেন্ট অনুমোদিত।
-Wno-ফর্ম্যাট-শূন্য-দৈর্ঘ্য
If -Wformat নির্দিষ্ট করা হয়েছে, শূন্য-দৈর্ঘ্য বিন্যাস সম্পর্কে সতর্ক করবেন না। সি স্ট্যান্ডার্ড
উল্লেখ করে যে শূন্য-দৈর্ঘ্য বিন্যাস অনুমোদিত।
-Wformat = 2
সক্ষম করা -Wformat প্লাস অতিরিক্ত বিন্যাস চেক. বর্তমানে এর সমতুল্য -Wformat
-Wformat-nonliteral -Wformat-নিরাপত্তা -Wformat-y2k.
-Wformat-nonliteral
If -Wformat নির্দিষ্ট করা হয়েছে, এছাড়াও সতর্ক করুন যদি বিন্যাস স্ট্রিং একটি স্ট্রিং আক্ষরিক না হয়
এবং তাই চেক করা যাবে না, যদি না ফরম্যাট ফাংশন তার ফরম্যাট আর্গুমেন্টকে হিসাবে নেয়
একটি "va_list"।
-Wformat-নিরাপত্তা
If -Wformat নির্দিষ্ট করা হয়েছে, এছাড়াও প্রতিনিধিত্বকারী ফর্ম্যাট ফাংশনগুলির ব্যবহার সম্পর্কে সতর্ক করে
সম্ভাব্য নিরাপত্তা সমস্যা। বর্তমানে, এটি "printf" এবং কল সম্পর্কে সতর্ক করে
"scanf" ফাংশন যেখানে ফর্ম্যাট স্ট্রিং একটি স্ট্রিং আক্ষরিক নয় এবং সেখানে নেই
ফরম্যাট আর্গুমেন্ট, যেমন "printf (foo);"। এটি একটি নিরাপত্তা গর্ত হতে পারে যদি
বিন্যাস স্ট্রিং অবিশ্বস্ত ইনপুট থেকে এসেছে এবং এতে রয়েছে %n. (এটি বর্তমানে একটি
কিসের উপসেট -Wformat-nonliteral সম্পর্কে সতর্ক করে, কিন্তু ভবিষ্যতে সতর্কতা হতে পারে
যোগ করো -Wformat-নিরাপত্তা যে অন্তর্ভুক্ত করা হয় না -Wformat-nonliteral.)
-Wformat- স্বাক্ষরিততা
If -Wformat নির্দিষ্ট করা হয়েছে, এছাড়াও সতর্ক করুন যদি বিন্যাস স্ট্রিং একটি স্বাক্ষরবিহীন প্রয়োজন হয়
যুক্তি এবং যুক্তি স্বাক্ষরিত এবং তদ্বিপরীত।
দ্রষ্টব্য: উবুন্টু 8.10 এবং পরবর্তী সংস্করণগুলিতে এই বিকল্পটি ডিফল্টরূপে C এর জন্য সক্রিয় করা হয়েছে,
C++, ObjC, ObjC++। নিষ্ক্রিয় করতে, ব্যবহার করুন -Wno-ফর্ম্যাট-নিরাপত্তা, অথবা সমস্ত বিন্যাস অক্ষম করুন
সঙ্গে সতর্কবার্তা -Wformat = 0. বিন্যাস নিরাপত্তা সতর্কতা মারাত্মক করতে, নির্দিষ্ট করুন
-Werror=ফরম্যাট-নিরাপত্তা.
-Wformat-y2k
If -Wformat নির্দিষ্ট করা হয়েছে, এছাড়াও "strftime" ফরম্যাট সম্পর্কে সতর্ক করুন যা শুধুমাত্র একটি ফল দিতে পারে
দুই অঙ্কের বছর।
-উনোনুল
একটি নন-নাল মান প্রয়োজন হিসাবে চিহ্নিত আর্গুমেন্টের জন্য একটি নাল পয়েন্টার পাস করার বিষয়ে সতর্ক করুন
"nonnull" ফাংশন বৈশিষ্ট্য দ্বারা।
-উনোনুল অন্তর্ভুক্ত করা হয় -ওয়াল এবং -Wformat. এটি দিয়ে নিষ্ক্রিয় করা যেতে পারে -উনো-অনুল
বিকল্প।
-ভিনিত-স্বয়ং (সি, সি++, অবজেক্টিভ-সি এবং অবজেক্টিভ-সি++ শুধুমাত্র)
অপ্রচলিত ভেরিয়েবল সম্পর্কে সতর্ক করুন যেগুলি নিজেদের সাথে শুরু করা হয়। এই নোট করুন
বিকল্প শুধুমাত্র সঙ্গে ব্যবহার করা যেতে পারে -উনিনিটিয়ালাইজড বিকল্প।
উদাহরণ স্বরূপ, GCC শুধুমাত্র নিম্নলিখিত স্নিপেটে "i" চালু না হওয়ার বিষয়ে সতর্ক করে৷
কখন -ভিনিত-স্বয়ং নির্দিষ্ট করা হয়েছে:
int f ()
{
int i = i;
প্রত্যাবর্তন i;
}
এই সতর্কতা দ্বারা সক্রিয় করা হয় -ওয়াল C++ এ।
- Wimplicit-int (শুধুমাত্র C এবং উদ্দেশ্য-C)
যখন একটি ঘোষণা একটি প্রকার নির্দিষ্ট করে না তখন সতর্ক করুন৷ এই সতর্কতা দ্বারা সক্রিয় করা হয় -ওয়াল.
- Wimplicit-ফাংশন-ঘোষণা (শুধুমাত্র C এবং উদ্দেশ্য-C)
ঘোষণা করার আগে যখনই একটি ফাংশন ব্যবহার করা হয় তখন একটি সতর্কতা দিন। C99 মোডে
(-std=c99 or -STD = gnu99), এই সতর্কতাটি ডিফল্টরূপে সক্রিয় থাকে এবং এটি একটিতে তৈরি হয়
দ্বারা ত্রুটি -শিক্ষা সংক্রান্ত-ত্রুটি. এই সতর্কতা দ্বারা সক্রিয় করা হয় -ওয়াল.
-উইমপ্লিসিট (শুধুমাত্র C এবং উদ্দেশ্য-C)
একই রকম - Wimplicit-int এবং - Wimplicit-ফাংশন-ঘোষণা. এই সতর্কতা সক্রিয় করা হয়েছে
by -ওয়াল.
-অজ্ঞান-কোয়ালিফায়ার (শুধুমাত্র C এবং C++)
কোনো ফাংশনের রিটার্ন টাইপের যদি "const" এর মতো টাইপ কোয়ালিফায়ার থাকে তাহলে সতর্ক করুন। আইএসও সি এর জন্য
এই ধরনের কোয়ালিফায়ারের কোন প্রভাব নেই, যেহেতু একটি ফাংশন দ্বারা প্রত্যাবর্তিত মান একটি নয়
মূল্য C++ এর জন্য, সতর্কতা শুধুমাত্র স্কেলার প্রকার বা "অকার্যকর" এর জন্য নির্গত হয়। আইএসও সি
ফাংশন সংজ্ঞায় যোগ্য "অকার্যকর" রিটার্ন প্রকার নিষিদ্ধ করে, তাই এই ধরনের রিটার্নের ধরন
এই বিকল্পটি ছাড়াই সর্বদা একটি সতর্কতা গ্রহণ করুন।
এই সতর্কতা দ্বারা সক্রিয় করা হয় -ওয়েক্সট্রা.
-উমাইন
"প্রধান" টাইপ সন্দেহজনক হলে সতর্ক করুন। "প্রধান" বহিরাগত সহ একটি ফাংশন হওয়া উচিত
লিঙ্কেজ, int রিটার্নিং, হয় শূন্য আর্গুমেন্ট গ্রহণ, দুই, বা তিনটি আর্গুমেন্ট
উপযুক্ত প্রকার। এই সতর্কতাটি ডিফল্টরূপে C++ এ সক্ষম করা হয় এবং যে কোনো একটি দ্বারা সক্ষম হয়
-ওয়াল or -ডব্লিউডান্টিক.
-উইমিসিং-বন্ধনী
একটি সমষ্টি বা ইউনিয়ন ইনিশিয়ালাইজার সম্পূর্ণরূপে বন্ধনী না থাকলে সতর্ক করুন৷ নিম্নলিখিত
উদাহরণস্বরূপ, "a" এর জন্য আরম্ভকারী সম্পূর্ণরূপে বন্ধনীযুক্ত নয়, তবে "b" এর জন্য সম্পূর্ণরূপে
বন্ধনী এই সতর্কতা দ্বারা সক্রিয় করা হয় -ওয়াল সি তে
int a[2][2] = { 0, 1, 2, 3};
int b [2] [2] = {{0, 1}, {2, 3}};
এই সতর্কতা দ্বারা সক্রিয় করা হয় -ওয়াল.
মিসিং-ইনক্লুড-ডিরস (সি, সি++, অবজেক্টিভ-সি এবং অবজেক্টিভ-সি++ শুধুমাত্র)
ব্যবহারকারীর দ্বারা সরবরাহ করা অন্তর্ভুক্ত ডিরেক্টরি বিদ্যমান না থাকলে সতর্ক করুন৷
- বন্ধনী
সতর্ক করুন যদি কিছু নির্দিষ্ট প্রসঙ্গে বন্ধনী বাদ দেওয়া হয়, যেমন যখন একটি থাকে
একটি প্রেক্ষাপটে অ্যাসাইনমেন্ট যেখানে একটি সত্য মান প্রত্যাশিত, বা যখন অপারেটর নেস্ট করা হয়
যার অগ্রাধিকার সম্পর্কে মানুষ প্রায়ই বিভ্রান্ত হয়।
"x<=y<=z" এর মতো তুলনা দেখা দিলে সতর্ক করুন; এটি "(x<=y ? 1 :) এর সমতুল্য
0) <= z", যা সাধারণ গাণিতিক থেকে একটি ভিন্ন ব্যাখ্যা
স্বরলিপি
এছাড়াও নির্মাণ সম্পর্কে সতর্ক করুন যেখানে বিভ্রান্তি থাকতে পারে যার "if" বিবৃতি একটি
"অন্য" শাখার অন্তর্গত। এখানে যেমন একটি ক্ষেত্রে একটি উদাহরণ:
{
যদি একটি)
যদি (খ)
ফু ();
আর
বার ();
}
C/C++-এ, প্রতিটি "অন্য" শাখা অন্তর্নিহিত সম্ভাব্য "যদি" বিবৃতির অন্তর্গত, যা
এই উদাহরণে "যদি (বি)"। এটি প্রায়শই প্রোগ্রামার যা আশা করে তা নয়
প্রোগ্রামার বেছে নেওয়া ইন্ডেন্টেশন দ্বারা উপরের উদাহরণে চিত্রিত। যখন সেখানে
এই বিভ্রান্তির সম্ভাবনা, এই পতাকা নির্দিষ্ট করা হলে GCC একটি সতর্কতা জারি করে।
সতর্কতা দূর করতে, সবচেয়ে ভিতরের "যদি" বিবৃতিটির চারপাশে স্পষ্ট বন্ধনী যুক্ত করুন
"অন্য" এনক্লোডিং "যদি" এর অন্তর্গত হতে পারে এমন কোন উপায় নেই। ফলাফল কোড দেখায়
এটার মত:
{
যদি একটি)
{
যদি (খ)
ফু ();
আর
বার ();
}
}
এছাড়াও বাদ দেওয়া মধ্যম অপারেন্ড সহ "?:" তে GNU এক্সটেনশনের বিপজ্জনক ব্যবহারের জন্য সতর্ক করুন৷
যখন "?": অপারেটর একটি বুলিয়ান এক্সপ্রেশনের শর্ত, বাদ দেওয়া মান
সর্বদা 1. প্রায়শই প্রোগ্রামাররা আশা করে যে এটি শর্তসাপেক্ষের ভিতরে গণনা করা একটি মান হবে
পরিবর্তে অভিব্যক্তি।
এই সতর্কতা দ্বারা সক্রিয় করা হয় -ওয়াল.
-ডেনসেন্স-পয়েন্ট
ক্রম লঙ্ঘনের কারণে অনির্ধারিত শব্দার্থবিদ্যা থাকতে পারে এমন কোড সম্পর্কে সতর্ক করুন
C এবং C++ স্ট্যান্ডার্ডে পয়েন্ট নিয়ম।
C এবং C++ স্ট্যান্ডার্ডগুলি একটি C/C++ প্রোগ্রামের অভিব্যক্তির ক্রম নির্ধারণ করে
পরিপ্রেক্ষিতে মূল্যায়ন করা হয় ক্রম পয়েন্ট, যা এর মধ্যে একটি আংশিক ক্রম উপস্থাপন করে
প্রোগ্রামের অংশগুলির সঞ্চালন: যেগুলি সিকোয়েন্স পয়েন্টের আগে কার্যকর করা হয়েছিল এবং সেগুলি৷
এর পরে মৃত্যুদন্ড কার্যকর করা হয়। এগুলি একটি পূর্ণ অভিব্যক্তির মূল্যায়নের পরে ঘটে (যা
একটি বৃহত্তর অভিব্যক্তির অংশ নয়), a এর প্রথম অপারেন্ডের মূল্যায়নের পরে
"&&", "||", "? :" বা "," (কমা) অপারেটর, একটি ফাংশন কল করার আগে (কিন্তু পরে
এর আর্গুমেন্টের মূল্যায়ন এবং কথিত ফাংশন নির্দেশ করে অভিব্যক্তি), এবং ইন
কিছু অন্যান্য জায়গা। ক্রম বিন্দু নিয়ম দ্বারা প্রকাশ করা ছাড়া অন্য, আদেশ
একটি অভিব্যক্তির subexpressions মূল্যায়ন নির্দিষ্ট করা হয় না. এই সব নিয়ম
মোট আদেশের পরিবর্তে শুধুমাত্র একটি আংশিক আদেশ বর্ণনা করুন, যেহেতু, উদাহরণস্বরূপ, যদি দুটি
ফাংশনগুলিকে একটি অভিব্যক্তির মধ্যে বলা হয় যার মধ্যে কোন ক্রম বিন্দু নেই,
ফাংশন কল করা হয় যে ক্রম নির্দিষ্ট করা হয় না. যাইহোক, মান
কমিটি ফাংশন কল ওভারল্যাপ না যে রায় দিয়েছে.
এটি নির্দিষ্ট করা হয় না যখন সিকোয়েন্স পয়েন্টের মধ্যে এর মান পরিবর্তন করে
বস্তু কার্যকর হয়। যে প্রোগ্রামগুলির আচরণ এর উপর নির্ভর করে তাদের অনির্ধারিত আচরণ রয়েছে;
C এবং C++ মানগুলি নির্দিষ্ট করে যে "পূর্ববর্তী এবং পরবর্তী ক্রম বিন্দুর মধ্যে একটি
বস্তুর একটি মূল্যায়ন দ্বারা সর্বাধিক একবারে তার সঞ্চিত মান পরিবর্তন করা হবে
অভিব্যক্তি তদ্ব্যতীত, পূর্বের মানটি শুধুমাত্র মান নির্ধারণের জন্য পড়া হবে
সংরক্ষণ করা হবে।"। যদি কোন প্রোগ্রাম এই নিয়মগুলি ভঙ্গ করে, তবে ফলাফলগুলি বিশেষ করে
বাস্তবায়ন সম্পূর্ণরূপে অপ্রত্যাশিত.
অনির্ধারিত আচরণ সহ কোডের উদাহরণ হল "a = a++;", "a[n] = b[n++]" এবং "a[i++] =
i;।" আরো কিছু জটিল ক্ষেত্রে এই বিকল্প দ্বারা নির্ণয় করা হয় না, এবং এটি একটি দিতে পারে
মাঝে মাঝে মিথ্যা ইতিবাচক ফলাফল, কিন্তু সাধারণভাবে এটি মোটামুটি কার্যকর পাওয়া গেছে
প্রোগ্রামগুলিতে এই ধরণের সমস্যা সনাক্ত করা।
মানটি বিভ্রান্তিকরভাবে শব্দ করা হয়েছে, তাই সুনির্দিষ্ট নিয়ে কিছু বিতর্ক রয়েছে
সূক্ষ্ম ক্ষেত্রে ক্রম বিন্দু নিয়মের অর্থ। আলোচনার লিঙ্ক
প্রস্তাবিত আনুষ্ঠানিক সংজ্ঞা সহ সমস্যা, জিসিসি রিডিং পৃষ্ঠায় পাওয়া যেতে পারে,
athttp://gcc.gnu.org/readings.html>.
এই সতর্কতা দ্বারা সক্রিয় করা হয় -ওয়াল C এবং C++ এর জন্য।
-Wno-রিটার্ন-স্থানীয়-addr
একটি ভেরিয়েবলে একটি পয়েন্টার (বা C++, একটি রেফারেন্স) ফেরত দেওয়ার বিষয়ে সতর্ক করবেন না
ফাংশন ফিরে আসার পরে সুযোগের বাইরে।
-Wreturn-টাইপ
যখনই একটি ফাংশনকে রিটার্ন টাইপ দিয়ে সংজ্ঞায়িত করা হয় যা "int" তে ডিফল্ট হয় তখন সতর্ক করুন। এছাড়াও
কোনো "রিটার্ন" স্টেটমেন্ট সম্পর্কে সতর্ক করুন যার রিটার্ন টাইপ ফাংশনে কোনো রিটার্ন মান নেই
"অকার্যকর" নয় (ফাংশন বডির শেষ অংশে পড়ে যাওয়াকে প্রত্যাবর্তন বলে মনে করা হয়
একটি মান ছাড়াই), এবং একটি ফাংশনে একটি অভিব্যক্তি সহ একটি "রিটার্ন" বিবৃতি সম্পর্কে
যার প্রত্যাবর্তনের ধরন "অকার্যকর"।
C++ এর জন্য, রিটার্ন টাইপ ছাড়া একটি ফাংশন সর্বদা একটি ডায়াগনস্টিক বার্তা তৈরি করে, এমনকি
কখন -Wno-রিটার্ন-টাইপ উল্লিখিত আছে. একমাত্র ব্যতিক্রম হল "প্রধান" এবং ফাংশন
সিস্টেম হেডারে সংজ্ঞায়িত।
এই সতর্কতা দ্বারা সক্রিয় করা হয় -ওয়াল.
-Wshift-গণনা-নেতিবাচক
শিফট গণনা নেতিবাচক হলে সতর্ক করুন। এই সতর্কতা ডিফল্টরূপে সক্রিয় করা হয়.
-Wshift-কাউন্ট-ওভারফ্লো
শিফট গণনা >= প্রকারের প্রস্থ হলে সতর্ক করুন। এই সতর্কতা ডিফল্টরূপে সক্রিয় করা হয়.
-উউইচ
যখনই একটি "সুইচ" বিবৃতিতে গণনাকৃত ধরণের সূচক থাকে এবং "কেস" এর অভাব থাকে তখন সতর্ক করুন
সেই গণনার এক বা একাধিক নামকৃত কোডের জন্য। (একটি "ডিফল্ট" এর উপস্থিতি
লেবেল এই সতর্কতাকে বাধা দেয়।) "কেস" লেবেলও গণনার পরিসরের বাইরে
যখন এই বিকল্পটি ব্যবহার করা হয় তখন সতর্কতা উস্কে দেয় (এমনকি যদি একটি "ডিফল্ট" লেবেল থাকে)। এই
সতর্কতা দ্বারা সক্রিয় করা হয় -ওয়াল.
-Wswitch-ডিফল্ট
যখনই একটি "সুইচ" বিবৃতিতে "ডিফল্ট" কেস না থাকে তখন সতর্ক করুন৷
-উইউইচ-এনাম
যখনই একটি "সুইচ" বিবৃতিতে গণনাকৃত ধরণের সূচক থাকে এবং "কেস" এর অভাব থাকে তখন সতর্ক করুন
সেই গণনার এক বা একাধিক নামকৃত কোডের জন্য। এর বাইরে "কেস" লেবেল
যখন এই বিকল্পটি ব্যবহার করা হয় তখন গণনা পরিসীমা সতর্কতাও উস্কে দেয়। পার্থক্য শুধু
মধ্যে -উউইচ এবং এই বিকল্পটি হল এই বিকল্পটি একটি বাদ দেওয়া সম্পর্কে একটি সতর্কতা দেয়
একটি "ডিফল্ট" লেবেল থাকলেও গণনা কোড।
-Wswitch-bool
যখনই একটি "সুইচ" বিবৃতিতে বুলিয়ান টাইপের একটি সূচক থাকে তখন সতর্ক করুন৷ এটা ও সম্ভব
নিয়ন্ত্রক অভিব্যক্তিটি ব্যতীত অন্য কোনও প্রকারে কাস্ট করে এই সতর্কতাটি দমন করুন
"বুল"। উদাহরণ স্বরূপ:
সুইচ ((int) (a == 4))
{
...
}
এই সতর্কতাটি ডিফল্টরূপে C এবং C++ প্রোগ্রামগুলির জন্য সক্রিয় করা হয়েছে।
-Wsync-nand (শুধুমাত্র C এবং C++)
"__sync_fetch_and_nand" এবং "__sync_nand_and_fetch" বিল্ট-ইন ফাংশন হলে সতর্ক করুন
ব্যবহৃত এই ফাংশনগুলি GCC 4.4-এ শব্দার্থবিদ্যা পরিবর্তন করেছে।
-Wtrigraphs
প্রোগ্রামের অর্থ পরিবর্তন করতে পারে এমন কোনো ট্রিগ্রাফ সম্মুখীন হলে সতর্ক করুন
(মন্তব্যের মধ্যে ট্রিগ্রাফ সম্পর্কে সতর্ক করা হয় না)। এই সতর্কতা দ্বারা সক্রিয় করা হয় -ওয়াল.
-Wunused-কিন্তু-সেট-প্যারামিটার
যখনই একটি ফাংশন প্যারামিটার বরাদ্দ করা হয়, তবে অন্যথায় অব্যবহৃত হয় (এর বাইরে
এর ঘোষণা)।
এই সতর্কতা দমন করতে "অব্যবহৃত" বৈশিষ্ট্য ব্যবহার করুন।
এই সতর্কতা দ্বারা সক্রিয় করা হয় -ওয়ান ব্যবহার করা হয়েছে এক্সাথে -ওয়েক্সট্রা.
-উইনজুসেড-তবে-সেট-পরিবর্তনশীল
যখনই একটি স্থানীয় ভেরিয়েবলকে বরাদ্দ করা হয়, তবে অন্যথায় অব্যবহৃত (এটি বাদ দিয়ে) সতর্ক করুন
ঘোষণা)। এই সতর্কতা দ্বারা সক্রিয় করা হয় -ওয়াল.
এই সতর্কতা দমন করতে "অব্যবহৃত" বৈশিষ্ট্য ব্যবহার করুন।
এই সতর্কতা দ্বারা সক্রিয় করা হয় -ওয়ান ব্যবহার করা হয়েছে, যা দ্বারা সক্রিয় করা হয়েছে -ওয়াল.
-Wunused-ফাংশন
যখনই একটি স্ট্যাটিক ফাংশন ঘোষণা করা হয় কিন্তু সংজ্ঞায়িত করা হয় না বা একটি নন-ইনলাইন স্ট্যাটিক হয় তখন সতর্ক করুন
ফাংশন অব্যবহৃত। এই সতর্কতা দ্বারা সক্রিয় করা হয় -ওয়াল.
-Wunused-লেবেল
যখনই একটি লেবেল ঘোষণা করা হয় কিন্তু ব্যবহার করা হয় না তখন সতর্ক করুন৷ এই সতর্কতা দ্বারা সক্রিয় করা হয় -ওয়াল.
এই সতর্কতা দমন করতে "অব্যবহৃত" বৈশিষ্ট্য ব্যবহার করুন।
-Wunused-স্থানীয়-টাইপডেফ (সি, অবজেক্টিভ-সি, সি++ এবং অবজেক্টিভ-সি++ শুধুমাত্র)
একটি ফাংশনে স্থানীয়ভাবে সংজ্ঞায়িত টাইপডেফ ব্যবহার না হলে সতর্ক করুন। এই সতর্কতা
দ্বারা সক্রিয় -ওয়াল.
-Wunused-পরামিটার
যখনই একটি ফাংশন প্যারামিটার তার ঘোষণা বাদ দিয়ে অব্যবহৃত হয় তখন সতর্ক করুন।
এই সতর্কতা দমন করতে "অব্যবহৃত" বৈশিষ্ট্য ব্যবহার করুন।
-উনো-অব্যবহৃত-ফলাফল
"warn_unused_result" এট্রিবিউট দিয়ে চিহ্নিত কোনো ফাংশনের কলার হলে সতর্ক করবেন না
এর রিটার্ন মান ব্যবহার করবেন না। ডিফল্ট হয় -অব্যবহৃত-ফলাফল.
- Wunused- পরিবর্তনশীল
সতর্ক করুন যখনই একটি স্থানীয় ভেরিয়েবল বা অ ধ্রুবক স্ট্যাটিক ভেরিয়েবল অব্যবহৃত হয়
এর ঘোষণা। এই সতর্কতা দ্বারা সক্রিয় করা হয় -ওয়াল.
এই সতর্কতা দমন করতে "অব্যবহৃত" বৈশিষ্ট্য ব্যবহার করুন।
-উইনজড-মান
যখনই একটি বিবৃতি স্পষ্টভাবে ব্যবহৃত হয় না এমন একটি ফলাফল গণনা করে সতর্ক করুন৷ দমন করতে
এই সতর্কতাটি অব্যবহৃত অভিব্যক্তিটিকে "অকার্যকর" তে নিক্ষেপ করে। এর মধ্যে একটি অভিব্যক্তি রয়েছে-
বিবৃতি বা একটি কমা অভিব্যক্তির বাম দিকে যার কোনো পার্শ্বপ্রতিক্রিয়া নেই।
উদাহরণস্বরূপ, একটি অভিব্যক্তি যেমন "x[i,j]" একটি সতর্কতা সৃষ্টি করে, যখন "x[(void)i,j]"
না.
এই সতর্কতা দ্বারা সক্রিয় করা হয় -ওয়াল.
-ওয়ান ব্যবহার করা হয়েছে
সবার উপরে -ওয়ান ব্যবহার করা হয়েছে একত্রিত বিকল্প।
একটি অব্যবহৃত ফাংশন প্যারামিটার সম্পর্কে একটি সতর্কতা পেতে, আপনাকে অবশ্যই নির্দিষ্ট করতে হবে
-ওয়েক্সট্রা -ওয়ান ব্যবহার করা হয়েছে (মনে রাখবেন যে -ওয়াল বোঝা -ওয়ান ব্যবহার করা হয়েছে), অথবা আলাদাভাবে উল্লেখ করুন
-Wunused-পরামিটার.
-উনিনিটিয়ালাইজড
সতর্ক করুন যদি একটি স্বয়ংক্রিয় ভেরিয়েবল প্রথম শুরু না করে ব্যবহার করা হয় বা যদি একটি পরিবর্তনশীল হয়
একটি "setjmp" কল দ্বারা clobbered হতে পারে. C++ তে, সতর্ক করুন যদি একটি নন-স্ট্যাটিক রেফারেন্স বা অ-
স্ট্যাটিক "const" সদস্য কনস্ট্রাক্টর ছাড়াই একটি ক্লাসে উপস্থিত হয়।
আপনি যদি কোড সম্পর্কে সতর্ক করতে চান যা ভেরিয়েবলের অপ্রবর্তিত মান ব্যবহার করে
এর নিজস্ব ইনিশিয়ালাইজার, ব্যবহার করুন -ভিনিত-স্বয়ং বিকল্প।
এই সতর্কতাগুলি কাঠামোর পৃথক অপ্রচলিত বা ক্লোবারযুক্ত উপাদানগুলির জন্য ঘটে,
ইউনিয়ন বা অ্যারে ভেরিয়েবল এবং সেইসাথে অপ্রবর্তিত বা ক্লোবার করা ভেরিয়েবলগুলির জন্য
সার্বিকভাবে. এগুলি "অস্থির" ঘোষিত ভেরিয়েবল বা উপাদানগুলির জন্য ঘটে না। কারণ
এই সতর্কতাগুলি অপ্টিমাইজেশান, সঠিক ভেরিয়েবল বা উপাদানগুলির উপর নির্ভর করে যার জন্য সেখানে৷
সতর্কতাগুলি সুনির্দিষ্ট অপ্টিমাইজেশান বিকল্প এবং ব্যবহৃত GCC সংস্করণের উপর নির্ভর করে।
মনে রাখবেন যে একটি ভেরিয়েবল সম্পর্কে কোন সতর্কতা নাও থাকতে পারে যা শুধুমাত্র a গণনা করতে ব্যবহৃত হয়
মান যেটি নিজে ব্যবহার করা হয় না, কারণ এই ধরনের গণনা ডেটা প্রবাহ দ্বারা মুছে ফেলা হতে পারে
সতর্কতা মুদ্রিত হওয়ার আগে বিশ্লেষণ।
-Wmaybe-uninitialized
একটি স্বয়ংক্রিয় ভেরিয়েবলের জন্য, যদি ফাংশন এন্ট্রি থেকে একটি ব্যবহারের জন্য একটি পথ বিদ্যমান থাকে
ভেরিয়েবল যেটি আরম্ভ করা হয়েছে, কিন্তু কিছু অন্যান্য পাথ আছে যার জন্য
পরিবর্তনশীল আরম্ভ করা হয় না, কম্পাইলার একটি সতর্কতা নির্গত করে যদি এটি প্রমাণ করতে না পারে
অপ্রবর্তিত পাথ রান টাইমে কার্যকর করা হয় না। এই সতর্কতা ঐচ্ছিক করা হয়
কারণ কোডটি সঠিক হওয়ার কারণগুলি দেখার জন্য GCC যথেষ্ট স্মার্ট নয়৷
একটি ত্রুটি আছে প্রদর্শিত হওয়া সত্ত্বেও. এটি কীভাবে ঘটতে পারে তার একটি উদাহরণ এখানে:
{
ইন্ট এক্স;
সুইচ (y)
{
কেস 1: x = 1;
বিরতি;
কেস 2: x = 4;
বিরতি;
কেস 3: x = 5;
}
foo (x);
}
যদি "y" এর মান সর্বদা 1, 2 বা 3 হয়, তাহলে "x" সর্বদা আরম্ভ করা হয়, কিন্তু GCC
এটা জানে না। সতর্কতা দমন করার জন্য, আপনাকে একটি ডিফল্ট কেস প্রদান করতে হবে
জাহির করা(0) বা অনুরূপ কোড।
এই বিকল্পটি সতর্ক করে যখন একটি অ-উদ্বায়ী স্বয়ংক্রিয় ভেরিয়েবল a দ্বারা পরিবর্তিত হতে পারে
"লংজেএমপি" এ কল করুন। এই সতর্কতাগুলিও শুধুমাত্র অপ্টিমাইজ করার ক্ষেত্রেই সম্ভব৷
সংকলন
কম্পাইলার শুধুমাত্র "setjmp" কলগুলি দেখে। "লংজেএমপি" কোথায় হবে তা জানা যায় না
ডাকা আসলে, একটি সংকেত হ্যান্ডলার কোডের যেকোনো সময়ে এটিকে কল করতে পারে। হিসেবে
ফলস্বরূপ, আপনি একটি সতর্কতা পেতে পারেন এমনকি যখন আসলে কোন সমস্যা নেই কারণ "লংজেএমপি"
আসলে এমন জায়গায় ডাকা যাবে না যা সমস্যা সৃষ্টি করবে।
আপনি যে সমস্ত ফাংশন ব্যবহার করেন তা ঘোষণা করলে কিছু মিথ্যা সতর্কতা এড়ানো যেতে পারে
কখনই "নরেটার্ন" হিসাবে ফিরে আসবেন না।
এই সতর্কতা দ্বারা সক্রিয় করা হয় -ওয়াল or -ওয়েক্সট্রা.
-অজানা-প্রাগমাস
সতর্ক করুন যখন একটি "#pragma" নির্দেশের সম্মুখীন হয় যা GCC দ্বারা বোঝা যায় না। এই যদি
কমান্ড-লাইন বিকল্প ব্যবহার করা হয়, এমনকি সিস্টেমে অজানা প্র্যাগমাসের জন্য সতর্কতা জারি করা হয়
হেডার ফাইল। সতর্কবাণী শুধুমাত্র দ্বারা সক্রিয় করা হলে এই ক্ষেত্রে নয় -ওয়াল
কমান্ড লাইন বিকল্প।
-নো-প্রাগমাস
pragmas এর অপব্যবহার সম্পর্কে সতর্ক করবেন না, যেমন ভুল প্যারামিটার, অবৈধ সিনট্যাক্স বা
pragmas মধ্যে দ্বন্দ্ব. আরো দেখুন -অজানা-প্রাগমাস.
-WSTRICT-LIASING
এই বিকল্প শুধুমাত্র সক্রিয় যখন -ট্রিক্ট-এলিয়াসিং সক্রিয়. এটা কোড সম্পর্কে সতর্ক করে যে
কম্পাইলার অপ্টিমাইজেশনের জন্য ব্যবহার করছে এমন কঠোর অ্যালিয়াসিং নিয়ম ভঙ্গ করতে পারে।
সতর্কতা সব ক্ষেত্রে ধরা পড়ে না, কিন্তু আরো সাধারণ ধরার চেষ্টা করে
ক্ষতি এটা অন্তর্ভুক্ত করা হয় -ওয়াল। এটি সমান -WSTRICT-LIASING = 3
-WSTRICT-LIASING = n
এই বিকল্প শুধুমাত্র সক্রিয় যখন -ট্রিক্ট-এলিয়াসিং সক্রিয়. এটা কোড সম্পর্কে সতর্ক করে যে
কম্পাইলার অপ্টিমাইজেশনের জন্য ব্যবহার করছে এমন কঠোর অ্যালিয়াসিং নিয়ম ভঙ্গ করতে পারে।
উচ্চ স্তরগুলি উচ্চ নির্ভুলতার সাথে মিলে যায় (কম মিথ্যা ইতিবাচক)। উচ্চতর স্তর
এছাড়াও আরো প্রচেষ্টা অনুরূপ, উপায় অনুরূপ -O কাজ করে। -WSTRICT-LIASING is
সমতুল্য -WSTRICT-LIASING = 3.
লেভেল 1: সবচেয়ে আক্রমনাত্মক, দ্রুত, কম সঠিক। উচ্চ স্তরের হলে সম্ভবত দরকারী
সতর্ক করবেন না কিন্তু -ট্রিক্ট-এলিয়াসিং এখনও কোডটি ভঙ্গ করে, কারণ এতে খুব কম মিথ্যা রয়েছে
নেতিবাচক যাইহোক, এটা অনেক মিথ্যা ইতিবাচক আছে. সমস্ত পয়েন্টার রূপান্তরের জন্য সতর্ক করে
সম্ভাব্য বেমানান প্রকারের মধ্যে, এমনকি যদি কখনো ডিরেফারেন্স না করা হয়। সামনে দৌড়ায়
শুধুমাত্র শেষ।
লেভেল 2: আক্রমনাত্মক, দ্রুত, খুব সুনির্দিষ্ট নয়। এখনও অনেক মিথ্যা ইতিবাচক থাকতে পারে (না
যদিও লেভেল 1 যত বেশি), এবং কিছু মিথ্যা নেতিবাচক (কিন্তু সম্ভবত লেভেল 1 এর চেয়ে বেশি)।
লেভেল 1 এর বিপরীতে, এটি শুধুমাত্র সতর্ক করে দেয় যখন একটি ঠিকানা নেওয়া হয়। অসম্পূর্ণ প্রকার সম্পর্কে সতর্ক করে।
শুধুমাত্র সামনের প্রান্তে চলে।
লেভেল 3 (এর জন্য ডিফল্ট -WSTRICT-LIASING): খুব কম মিথ্যা ইতিবাচক এবং কিছু থাকা উচিত
মিথ্যা নেতিবাচক যখন অপ্টিমাইজেশান সক্ষম করা থাকে তখন 1 বা 2 স্তরের তুলনায় কিছুটা ধীর।
সামনের প্রান্তে সাধারণ শ্লেষ + ডিরেফারেন্স প্যাটার্নের যত্ন নেয়:
"*(int*)&some_float"। অপ্টিমাইজেশান সক্ষম হলে, এটি পিছনের প্রান্তেও চলে, যেখানে
এটি প্রবাহ-সংবেদনশীল পয়েন্ট-টু তথ্য ব্যবহার করে একাধিক স্টেটমেন্ট কেস নিয়ে কাজ করে।
রূপান্তরিত পয়েন্টার ডিরেফারেন্স করা হলে শুধুমাত্র সতর্ক করে। অসম্পূর্ণ সম্পর্কে সতর্ক করে না
ধরনের।
-Wstrict-ওভারফ্লো
-WSTRICT-overflow =n
এই বিকল্প শুধুমাত্র সক্রিয় যখন -fstrict-ওভারফ্লো সক্রিয়. এটি মামলা সম্পর্কে সতর্ক করে
যেখানে কম্পাইলার অনুমানের উপর ভিত্তি করে অপ্টিমাইজ করে যে স্বাক্ষরিত ওভারফ্লো হয় না
ঘটবে নোট করুন যে এটি সমস্ত ক্ষেত্রে সতর্ক করে না যেখানে কোডটি ওভারফ্লো হতে পারে: এটি
শুধুমাত্র এমন ক্ষেত্রে সতর্ক করে যেখানে কম্পাইলার কিছু অপ্টিমাইজেশান প্রয়োগ করে। এইভাবে এই
সতর্কতা অপ্টিমাইজেশান স্তরের উপর নির্ভর করে।
একটি অপ্টিমাইজেশান যা অনুমান করে যে স্বাক্ষরিত ওভারফ্লো ঘটবে না তা পুরোপুরি নিরাপদ
জড়িত ভেরিয়েবলের মানগুলি এমন যে ওভারফ্লো কখনই হয় না, আসলে,
ঘটবে তাই এই সতর্কতা সহজেই একটি মিথ্যা ইতিবাচক দিতে পারে: কোড সম্পর্কে একটি সতর্কতা
যে আসলে একটি সমস্যা না. গুরুত্বপূর্ণ বিষয়গুলিতে ফোকাস করতে সাহায্য করার জন্য, বেশ কয়েকটি সতর্কতা
স্তর সংজ্ঞায়িত করা হয়। অনির্ধারিত স্বাক্ষরিত ওভারফ্লো ব্যবহারের জন্য কোন সতর্কতা জারি করা হয় না
একটি লুপের কতগুলি পুনরাবৃত্তির প্রয়োজন তা অনুমান করার সময়, বিশেষ করে নির্ধারণ করার সময়
একটি লুপ আদৌ কার্যকর করা হবে কিনা।
-WSTRICT-overflow = 1
সন্দেহজনক এবং এড়ানো সহজ উভয় ক্ষেত্রেই সতর্ক করুন। উদাহরণস্বরূপ, সঙ্গে
-fstrict-ওভারফ্লো, কম্পাইলার "x + 1 > x" থেকে 1 সরল করে। এই স্তরের
-Wstrict-ওভারফ্লো দ্বারা সক্রিয় করা হয় -ওয়াল; উচ্চ স্তরের হয় না, এবং হতে হবে
স্পষ্টভাবে অনুরোধ করা হয়েছে।
-WSTRICT-overflow = 2
এছাড়াও অন্যান্য ক্ষেত্রে সতর্ক করুন যেখানে একটি তুলনা একটি ধ্রুবকের সাথে সরলীকৃত হয়। জন্য
উদাহরণ: "abs (x) >= 0"। এই শুধুমাত্র যখন সরলীকৃত করা যেতে পারে -fstrict-ওভারফ্লো হয়
প্রভাব, কারণ "abs (INT_MIN)" "INT_MIN" এ ওভারফ্লো হয়, যা শূন্যেরও কম।
-Wstrict-ওভারফ্লো (কোন স্তর ছাড়া) একই -WSTRICT-overflow = 2.
-WSTRICT-overflow = 3
এছাড়াও অন্যান্য ক্ষেত্রে সতর্ক করুন যেখানে তুলনা সরলীকৃত হয়। যেমন: "x + 1
> 1" সরলীকৃত করা হয়েছে "x > 0"।
-WSTRICT-overflow = 4
উপরের ক্ষেত্রে অন্তর্ভুক্ত নয় এমন অন্যান্য সরলীকরণ সম্পর্কেও সতর্ক করুন। জন্য
উদাহরণ: "(x * 10) / 5" কে "x * 2" এ সরলীকৃত করা হয়েছে।
-WSTRICT-overflow = 5
এছাড়াও এমন ক্ষেত্রে সতর্ক করুন যেখানে কম্পাইলার একটি ধ্রুবকের মাত্রা হ্রাস করে
একটি তুলনা জড়িত. উদাহরণস্বরূপ: "x + 2 > y" কে সরলীকৃত করা হয়েছে "x + 1 >= y"।
এটি শুধুমাত্র সর্বোচ্চ সতর্কতা স্তরে রিপোর্ট করা হয়েছে কারণ এই সরলীকরণ
অনেক তুলনার ক্ষেত্রে প্রযোজ্য, তাই এই সতর্কতা স্তরটি একটি খুব বড় সংখ্যা দেয়
মিথ্যা ইতিবাচক.
-Wsuggest-rtribute =[বিশুদ্ধ|const|ফেরত নেই|বিন্যাস]
এমন ক্ষেত্রে সতর্ক করুন যেখানে একটি বৈশিষ্ট্য যোগ করা উপকারী হতে পারে। বর্তমানে গুণাবলী
সমর্থিত নীচে তালিকাভুক্ত করা হয়.
-Wsuggest-attribute=শুদ্ধ
-Wsuggest- অ্যাট্রিবিউট = কনস্ট
-Wsuggest-rtribute = Noreturn
ফাংশন সম্পর্কে সতর্ক করুন যা "বিশুদ্ধ", "কনস্ট" বা বৈশিষ্ট্যগুলির জন্য প্রার্থী হতে পারে
"ফেরত নেই". কম্পাইলার শুধুমাত্র অন্যান্য কম্পাইলেশনে দৃশ্যমান ফাংশনগুলির জন্য সতর্ক করে
ইউনিট বা ("বিশুদ্ধ" এবং "কনস্ট" এর ক্ষেত্রে) যদি এটি প্রমাণ করতে না পারে যে ফাংশন
স্বাভাবিকভাবে ফিরে আসে। একটি ফাংশন সাধারণত রিটার্ন করে যদি এতে অসীম না থাকে
লুপ বা অস্বাভাবিকভাবে প্রত্যাবর্তন নিক্ষেপ, কল "অবর্ট" বা ফাঁদ। এই বিশ্লেষণ
বিকল্প প্রয়োজন -ফিপা-বিশুদ্ধ-কনস্ট, যা ডিফল্টরূপে সক্রিয় করা হয় -O এবং উচ্চতর।
উচ্চতর অপ্টিমাইজেশান স্তর বিশ্লেষণের সঠিকতা উন্নত করে।
-Wsuggest-rtribute = ফর্ম্যাট
-উমিসিং-ফর্ম্যাট-অ্যাট্রিবিউট
ফাংশন পয়েন্টার সম্পর্কে সতর্ক করুন যা "ফরম্যাট" বৈশিষ্ট্যগুলির জন্য প্রার্থী হতে পারে।
মনে রাখবেন এগুলি শুধুমাত্র সম্ভাব্য প্রার্থী, সম্পূর্ণ নয়। GCC অনুমান করে যে
"ফরম্যাট" বৈশিষ্ট্য সহ ফাংশন পয়েন্টার যা অ্যাসাইনমেন্টে ব্যবহৃত হয়,
প্রারম্ভিকতা, প্যারামিটার পাসিং বা রিটার্ন বিবৃতি একটি সংশ্লিষ্ট থাকা উচিত
"ফরম্যাট" অ্যাট্রিবিউটের ফলে টাইপ। অর্থাৎ বাম-পাশে
অ্যাসাইনমেন্ট বা ইনিশিয়ালাইজেশন, প্যারামিটার ভেরিয়েবলের ধরন বা রিটার্ন
যথাক্রমে ধারণকারী ফাংশনের প্রকারেরও একটি "ফরম্যাট" বৈশিষ্ট্য থাকা উচিত
সতর্কতা এড়াতে।
GCC ফাংশন সংজ্ঞা সম্পর্কে সতর্ক করে যা "ফরম্যাট" এর প্রার্থী হতে পারে
গুণাবলী আবার, এই শুধুমাত্র সম্ভাব্য প্রার্থী. GCC অনুমান করে যে "ফরম্যাট"
বৈশিষ্ট্যগুলি যে কোনও ফাংশনের জন্য উপযুক্ত হতে পারে যা একটি ফাংশনকে কল করে
"vprintf" বা "vscanf", কিন্তু এটি সবসময় নাও হতে পারে, এবং কিছু ফাংশন
যার জন্য "ফরম্যাট" বৈশিষ্ট্যগুলি উপযুক্ত তা সনাক্ত করা যাবে না।
-সাজেস্ট-ফাইনাল-টাইপ
ভার্চুয়াল পদ্ধতির সাথে টাইপ সম্পর্কে সতর্ক করুন যেখানে টাইপ হলে কোডের গুণমান উন্নত হবে
C++11 "চূড়ান্ত" স্পেসিফায়ার দিয়ে ঘোষণা করা হয়েছিল, অথবা, যদি সম্ভব হয়, একটিতে ঘোষণা করা হয়
বেনামী নামস্থান। এটি জিসিসিকে পলিমরফিককে আরও আক্রমনাত্মকভাবে ডিভার্চুয়ালাইজ করার অনুমতি দেয়
কল এই সতর্কবার্তাটি লিঙ্ক টাইম অপ্টিমাইজেশানের সাথে আরও কার্যকর, যেখানে
শ্রেণী অনুক্রমের গ্রাফ সম্পর্কে তথ্য আরও সম্পূর্ণ।
-পরামর্শ-চূড়ান্ত-পদ্ধতি
ভার্চুয়াল পদ্ধতি সম্পর্কে সতর্ক করুন যেখানে পদ্ধতিটি থাকলে কোডের গুণমান উন্নত হবে
C++11 "চূড়ান্ত" স্পেসিফায়ার দিয়ে ঘোষিত, অথবা, যদি সম্ভব হয়, এর ধরন ঘোষণা করা হয়
একটি বেনামী নামস্থান বা "চূড়ান্ত" স্পেসিফায়ার সহ। এই সতর্কতা আরও কার্যকর
লিঙ্ক টাইম অপ্টিমাইজেশান সহ, যেখানে ক্লাস হায়ারার্কি গ্রাফ সম্পর্কে তথ্য রয়েছে
আরো সম্পূর্ণ। এটি প্রথমে পরামর্শ বিবেচনা করার সুপারিশ করা হয়
-সাজেস্ট-ফাইনাল-টাইপ এবং তারপর নতুন টীকা দিয়ে পুনর্নির্মাণ করুন।
-সাজেস্ট-ওভাররাইড
ওভাররাইড কীওয়ার্ড দিয়ে চিহ্নিত করা নেই এমন ভার্চুয়াল ফাংশন ওভাররাইড করার বিষয়ে সতর্ক করুন।
-ওয়ারে-সীমা
-ওয়ারে-সীমা=n
এই বিকল্প শুধুমাত্র সক্রিয় যখন -এফটি-ভিআরপি সক্রিয় (এর জন্য ডিফল্ট -ও2 এবং উপরে). এটা
অ্যারের সাবস্ক্রিপ্ট সম্পর্কে সতর্ক করে যা সবসময় সীমার বাইরে থাকে। এই সতর্কতা
দ্বারা সক্রিয় -ওয়াল.
-ওয়ারে-সীমা=1
এই সতর্কতা স্তর -ওয়ারে-সীমা এবং দ্বারা সক্রিয় করা হয় -ওয়াল; উচ্চ স্তরের
না, এবং স্পষ্টভাবে অনুরোধ করা আবশ্যক.
-ওয়ারে-সীমা=2
এই সতর্কতা স্তরটি এর শেষে অ্যারের জন্য সীমার বাইরে অ্যাক্সেস সম্পর্কেও সতর্ক করে
একটি struct এবং পয়েন্টার মাধ্যমে অ্যাক্সেস অ্যারে জন্য. এই সতর্কতা স্তর একটি দিতে পারে
বৃহত্তর সংখ্যক মিথ্যা ইতিবাচক এবং ডিফল্টরূপে নিষ্ক্রিয় করা হয়।
-Wbool-তুলনা
বুলিয়ান এক্সপ্রেশন সম্পর্কে সতর্ক করুন একটি পূর্ণসংখ্যা মানের সাথে তুলনা করে ভিন্ন
"সত্য মিথ্যা". উদাহরণস্বরূপ, নিম্নলিখিত তুলনা সর্বদা মিথ্যা:
int n = 5;
...
যদি ((n > 1) == 2) { ... }
এই সতর্কতা দ্বারা সক্রিয় করা হয় -ওয়াল.
-উনো-বাতিল-কোয়ালিফায়ার (শুধুমাত্র C এবং উদ্দেশ্য-C)
পয়েন্টারে টাইপ কোয়ালিফায়ার বাতিল করা হলে সতর্ক করবেন না। সাধারণত,
কম্পাইলার সতর্ক করে যদি একটি "const char *" ভেরিয়েবল এমন একটি ফাংশনে পাস করা হয় যা একটি "char" নেয়
*" প্যারামিটার। এই বিকল্পটি এই ধরনের সতর্কতা দমন করতে ব্যবহার করা যেতে পারে।
-Wno-বাতিল-অ্যারে-কোয়ালিফায়ার (শুধুমাত্র C এবং উদ্দেশ্য-C)
যদি পয়েন্টার টার্গেট অ্যারেতে কোয়ালিফায়ার টাইপ করা হয় তবে সতর্ক করবেন না
বাতিল সাধারণত, কম্পাইলার সতর্ক করে যদি একটি "const int (*)[]" ভেরিয়েবল পাস করা হয়
একটি ফাংশন যা একটি "int (*)[]" প্যারামিটার নেয়। এই বিকল্পটি দমন করতে ব্যবহার করা যেতে পারে
যেমন একটি সতর্কতা।
-Wno-বেমানান-পয়েন্টার-টাইপ (শুধুমাত্র C এবং উদ্দেশ্য-C)
বেমানান প্রকারের পয়েন্টারগুলির মধ্যে একটি রূপান্তর হলে সতর্ক করবেন না।
এই সতর্কতাটি এমন ক্ষেত্রে যা কভার করা হয়নি -Wno-পয়েন্টার-চিহ্ন, যা পয়েন্টারের জন্য সতর্ক করে
আর্গুমেন্ট পাসিং বা বিভিন্ন স্বাক্ষর সহ অ্যাসাইনমেন্ট।
-Wno-int-রূপান্তর (শুধুমাত্র C এবং উদ্দেশ্য-C)
পয়েন্টার থেকে অসঙ্গত পূর্ণসংখ্যা এবং পূর্ণসংখ্যা রূপান্তর থেকে পয়েন্টার সম্পর্কে সতর্ক করবেন না।
এই সতর্কতা অন্তর্নিহিত রূপান্তর সম্পর্কে; স্পষ্ট রূপান্তরের জন্য সতর্কতা
-নো-ইন-ইন-টু-পয়েন্টার-কাস্ট এবং -Wno-পয়েন্টার থেকে int-কাস্ট ব্যবহার করা যেতে পারে.
-নো-ডিআইভি-বাই-জিরো
শূন্য দ্বারা কম্পাইল-টাইম পূর্ণসংখ্যা বিভাজন সম্পর্কে সতর্ক করবেন না। দ্বারা ভাসমান-বিন্দু বিভাজন
শূন্য সম্পর্কে সতর্ক করা হয় না, কারণ এটি অসীমতা এবং প্রাপ্তির একটি বৈধ উপায় হতে পারে
NaNs
-Wsystem-headers
সিস্টেম হেডার ফাইলে পাওয়া গঠনের জন্য সতর্কতা বার্তা প্রিন্ট করুন। থেকে সতর্কবার্তা
সিস্টেম শিরোনামগুলি সাধারণত দমন করা হয়, অনুমান করে যে তারা সাধারণত করে না
বাস্তব সমস্যা নির্দেশ করে এবং শুধুমাত্র কম্পাইলার আউটপুট পড়তে কঠিন করে তুলবে। ব্যবহার
এই কমান্ড-লাইন বিকল্পটি জিসিসিকে সিস্টেম হেডার থেকে সতর্কতা নির্গত করতে বলে যেন তারা
ব্যবহারকারী কোড ঘটেছে. যাইহোক, নোট করুন যে ব্যবহার -ওয়াল এই বিকল্পের সাথে একযোগে
না না সিস্টেম হেডারে অজানা pragmas সম্পর্কে সতর্ক করুন---তার জন্য, -অজানা-প্রাগমাস
অবশ্যই ব্যবহার করা উচিত।
-WTRAMPOLINES
নেস্টেড ফাংশন পয়েন্টার জন্য উত্পন্ন trampolines সম্পর্কে সতর্ক করুন. একটি ট্রামপোলিন একটি
ছোট টুকরো ডেটা বা কোড যা রান টাইমে স্ট্যাকের উপর তৈরি হয় যখন ঠিকানা
একটি নেস্টেড ফাংশন নেওয়া হয় এবং নেস্টেড ফাংশনকে পরোক্ষভাবে কল করতে ব্যবহৃত হয়।
কিছু লক্ষ্যের জন্য, এটি শুধুমাত্র ডেটা দিয়ে তৈরি এবং এইভাবে কোন বিশেষ চিকিৎসার প্রয়োজন হয় না।
কিন্তু, বেশিরভাগ লক্ষ্যের জন্য, এটি কোড দ্বারা গঠিত এবং এইভাবে স্ট্যাক তৈরি করা প্রয়োজন
প্রোগ্রাম সঠিকভাবে কাজ করার জন্য এক্সিকিউটেবল।
-Wfloat-সমান
সমতা তুলনাতে ভাসমান-বিন্দু মান ব্যবহার করা হলে সতর্ক করুন।
এর পিছনে ধারণাটি হল যে কখনও কখনও এটি (প্রোগ্রামারের জন্য) সুবিধাজনক
ফ্লোটিং-পয়েন্ট মানগুলিকে অসীম সুনির্দিষ্ট বাস্তব সংখ্যার অনুমান হিসাবে বিবেচনা করুন।
আপনি যদি এটি করছেন, তাহলে আপনাকে গণনা করতে হবে (কোড বিশ্লেষণ করে, বা কিছুতে
অন্য উপায়) গণনা প্রবর্তিত সর্বাধিক বা সম্ভাব্য সর্বাধিক ত্রুটি, এবং
তুলনা করার সময় এটির অনুমতি দিন (এবং আউটপুট তৈরি করার সময়, কিন্তু এটি একটি
ভিন্ন সমস্যা)। বিশেষ করে, সমতার জন্য পরীক্ষার পরিবর্তে, আপনার পরীক্ষা করা উচিত
দুটি মান ওভারল্যাপ রেঞ্জ আছে কিনা তা দেখতে; এবং এই সঙ্গে করা হয়
রিলেশনাল অপারেটর, তাই সমতা তুলনা সম্ভবত ভুল।
- ঐতিহ্যগত (শুধুমাত্র C এবং উদ্দেশ্য-C)
প্রথাগত এবং ISO C-তে ভিন্নভাবে আচরণ করে এমন কিছু নির্মাণ সম্পর্কে সতর্ক করুন
আইএসও সি কনস্ট্রাক্ট সম্পর্কে সতর্ক করুন যার কোন প্রথাগত সি সমতুল্য নেই, এবং/অথবা সমস্যাযুক্ত
নির্মাণ যে এড়ানো উচিত.
* ম্যাক্রো প্যারামিটার যা ম্যাক্রো বডিতে স্ট্রিং লিটারেলের মধ্যে উপস্থিত হয়। ভিতরে
প্রথাগত C ম্যাক্রো প্রতিস্থাপন স্ট্রিং লিটারালের মধ্যে হয়, কিন্তু ISO C-তে
এটা না.
* ঐতিহ্যগত সি-তে, কিছু প্রিপ্রসেসর নির্দেশাবলী বিদ্যমান ছিল না। প্রথাগত
প্রিপ্রসেসররা শুধুমাত্র একটি লাইনকে একটি নির্দেশ হিসাবে বিবেচনা করে যদি # কলামে হাজির
লাইনে 1. অতএব - ঐতিহ্যগত নির্দেশাবলী সম্পর্কে সতর্ক করে যে ঐতিহ্যগত সি
বোঝে কিন্তু উপেক্ষা করে কারণ # প্রথম অক্ষর হিসাবে প্রদর্শিত হবে না
লাইন. এটি আপনাকে "#pragma" এর মতো নির্দেশাবলী লুকানোর পরামর্শ দেয় যা দ্বারা বোঝা যায় না
তাদের ইন্ডেন্ট করে ঐতিহ্যগত C. কিছু ঐতিহ্যগত বাস্তবায়ন করে না
"#elif" চিনুন, তাই এই বিকল্পটি এটিকে সম্পূর্ণভাবে এড়িয়ে যাওয়ার পরামর্শ দেয়।
* একটি ফাংশনের মতো ম্যাক্রো যা আর্গুমেন্ট ছাড়াই দেখা যায়।
* ইউনারী প্লাস অপারেটর।
* দ্য U পূর্ণসংখ্যা ধ্রুবক প্রত্যয়, বা F or L floating-point ধ্রুবক প্রত্যয়.
(প্রথাগত সি সমর্থন করে L পূর্ণসংখ্যা ধ্রুবকের উপর প্রত্যয়।) নোট করুন, এগুলো
প্রত্যয়গুলি বেশিরভাগ আধুনিক সিস্টেমের সিস্টেম হেডারে সংজ্ঞায়িত ম্যাক্রোগুলিতে উপস্থিত হয়,
যেমন _মিন/_ম্যাক্স "এ ম্যাক্রো ইউজার কোডে এই ম্যাক্রোর ব্যবহার হতে পারে
সাধারণত জাল সতর্কবার্তার দিকে নিয়ে যায়, তবে GCC এর ইন্টিগ্রেটেড প্রিপ্রসেসরে রয়েছে
এই ক্ষেত্রে সতর্কতা এড়াতে যথেষ্ট প্রেক্ষাপট।
* একটি ফাংশন একটি ব্লকে বাহ্যিক ঘোষণা করে এবং তারপর শেষ হওয়ার পরে ব্যবহৃত হয়
ব্লক।
* একটি "সুইচ" স্টেটমেন্ট "লং" টাইপের একটি অপারেন্ড আছে।
* একটি নন-"স্ট্যাটিক" ফাংশন ঘোষণা একটি "স্ট্যাটিক" এককে অনুসরণ করে। এই গঠন না
কিছু ঐতিহ্যগত সি কম্পাইলার দ্বারা গৃহীত।
* একটি পূর্ণসংখ্যা ধ্রুবকের ISO টাইপ এর থেকে আলাদা প্রস্থ বা স্বাক্ষর থাকে
ঐতিহ্যগত প্রকার। ধ্রুবকের ভিত্তি দশ হলেই এই সতর্কতা জারি করা হয়।
অর্থাৎ হেক্সাডেসিমেল বা অক্টাল মান, যা সাধারণত বিট প্যাটার্নের প্রতিনিধিত্ব করে, তা নয়
সম্পর্কে সতর্ক করেছেন।
* ISO স্ট্রিং সংযোগের ব্যবহার সনাক্ত করা হয়েছে।
* স্বয়ংক্রিয় সমষ্টির সূচনা।
* লেবেলের সাথে শনাক্তকারীর দ্বন্দ্ব। ঐতিহ্যগত C-এর জন্য আলাদা নামস্থানের অভাব রয়েছে
লেবেল.
* ইউনিয়নের সূচনা। আরম্ভকারী শূন্য হলে, সতর্কতা বাদ দেওয়া হয়।
ব্যবহারকারী কোডে শূন্য ইনিশিয়ালাইজার প্রদর্শিত হয় এমন ধারণার অধীনে এটি করা হয়
অনুপস্থিত ইনিশিয়ালাইজার সতর্কতা এড়াতে যেমন "__STDC__" এর উপর শর্তযুক্ত এবং নির্ভর করে
প্রথাগত C ক্ষেত্রে ডিফল্ট সূচনাকে শূন্য করা হয়।
* স্থির/ফ্লোটিং-পয়েন্ট মান এবং এর বিপরীতে প্রোটোটাইপ দ্বারা রূপান্তর। দ্য
প্রথাগত সি এর সাথে কম্পাইল করার সময় এই প্রোটোটাইপের অনুপস্থিতি গুরুতর কারণ
সমস্যা এটি সম্ভাব্য রূপান্তর সতর্কতার একটি উপসেট; সম্পূর্ণ সেটের জন্য
ব্যবহার ঐতিহ্যগত-রূপান্তর.
* ISO C শৈলী ফাংশন সংজ্ঞা ব্যবহার। ইচ্ছাকৃতভাবে এই সতর্কতা না জারি
প্রোটোটাইপ ঘোষণা বা বৈচিত্র্যময় ফাংশনের জন্য কারণ এই ISO C বৈশিষ্ট্যগুলি
Libiberty এর ঐতিহ্যগত C সামঞ্জস্যতা ম্যাক্রো ব্যবহার করার সময় আপনার কোডে উপস্থিত হয়,
"PARAMS" এবং "VPARAMS"। নেস্টেড ফাংশনগুলির জন্য এই সতর্কতাটিও বাইপাস করা হয়৷
কারণ সেই বৈশিষ্ট্যটি ইতিমধ্যেই একটি GCC এক্সটেনশন এবং তাই প্রাসঙ্গিক নয়৷
ঐতিহ্যগত সি সামঞ্জস্য।
ঐতিহ্যগত-রূপান্তর (শুধুমাত্র C এবং উদ্দেশ্য-C)
সতর্ক করুন যদি একটি প্রোটোটাইপ একটি প্রকার রূপান্তর ঘটায় যা ঘটবে তার থেকে ভিন্ন৷
একটি প্রোটোটাইপের অনুপস্থিতিতে একই যুক্তিতে। এর মধ্যে রূপান্তর অন্তর্ভুক্ত
স্থির বিন্দু ভাসমান এবং তদ্বিপরীত, এবং রূপান্তর প্রস্থ পরিবর্তন বা
একটি নির্দিষ্ট-পয়েন্ট আর্গুমেন্টের স্বাক্ষরতা যখন ডিফল্ট প্রচারের মতো একই।
-বিবৃতি-পরবর্তী ঘোষণা (শুধুমাত্র C এবং উদ্দেশ্য-C)
একটি ব্লকে একটি বিবৃতির পরে একটি ঘোষণা পাওয়া গেলে সতর্ক করুন৷ এই নির্মাণ, পরিচিত
C++ থেকে, ISO C99 এর সাথে চালু করা হয়েছিল এবং ডিফল্টভাবে GCC-তে অনুমোদিত। এইটা না
ISO C90 দ্বারা সমর্থিত।
-উন্ডেফ
সতর্ক করুন যদি একটি অনির্ধারিত শনাক্তকারীকে "#if" নির্দেশে মূল্যায়ন করা হয়।
-Wno-endif-লেবেল
যখনই একটি "#else" বা একটি "#endif" পাঠ্য দ্বারা অনুসরণ করা হয় তখন সতর্ক করবেন না৷
-ছায়া
যখনই একটি স্থানীয় ভেরিয়েবল বা টাইপ ডিক্লারেশন অন্য ভেরিয়েবলকে ছায়া দেয় তখন সতর্ক করুন,
প্যারামিটার, টাইপ, ক্লাস মেম্বার (C++ এ), অথবা ইনস্ট্যান্স ভেরিয়েবল (অবজেক্টিভ-সি-তে) অথবা
যখনই একটি অন্তর্নির্মিত ফাংশন ছায়া হয়. উল্লেখ্য যে C++ এ, কম্পাইলার সতর্ক করে যদি a
স্থানীয় ভেরিয়েবল একটি স্পষ্ট টাইপডেফকে ছায়া দেয়, কিন্তু যদি এটি একটি struct/class/enum-এর ছায়া দেয় তাহলে নয়।
-উনো-ছায়া-ইভার (শুধুমাত্র উদ্দেশ্য-সি)
যখনই একটি লোকাল ভেরিয়েবল একটি অবজেক্টিভ-সি-তে একটি ইনস্ট্যান্স ভেরিয়েবলকে ছায়া দেয় তখন সতর্ক করবেন না
পদ্ধতি।
-Wlarger-এর চেয়ে =লেন
যখনই কোন বস্তুর থেকে বড় হয় তখন সতর্ক করুন লেন বাইট সংজ্ঞায়িত করা হয়।
-Wframe-এর চেয়ে বড়-=লেন
একটি ফাংশন ফ্রেমের আকার এর থেকে বড় হলে সতর্ক করুন৷ লেন বাইট গণনা সম্পন্ন
স্ট্যাক ফ্রেমের আকার নির্ধারণ করতে আনুমানিক এবং রক্ষণশীল নয়। আসল
প্রয়োজনীয়তা এর চেয়ে কিছুটা বেশি হতে পারে লেন এমনকি যদি আপনি একটি সতর্কতা না পান। ভিতরে
উপরন্তু, "অ্যালোকা", পরিবর্তনশীল-দৈর্ঘ্যের অ্যারে, বা সম্পর্কিত মাধ্যমে বরাদ্দ করা যেকোনো স্থান
a ইস্যু করা হবে কিনা তা নির্ধারণ করার সময় কম্পাইলার দ্বারা constructs অন্তর্ভুক্ত করা হয় না
সাবধানবাণী।
-Wno-মুক্ত-ননহেপ-বস্তু
স্তূপে বরাদ্দ করা হয়নি এমন একটি বস্তুকে মুক্ত করার চেষ্টা করার সময় সতর্ক করবেন না।
-Wstack- ব্যবহার =লেন
একটি ফাংশনের স্ট্যাক ব্যবহার এর থেকে বড় হলে সতর্ক করুন৷ লেন বাইট গণনা
স্ট্যাক ব্যবহার রক্ষণশীল নির্ধারণ করতে সম্পন্ন করা হয়. "অ্যালোকা" এর মাধ্যমে বরাদ্দ করা যেকোনো স্থান
পরিবর্তনশীল-দৈর্ঘ্য অ্যারে, বা সম্পর্কিত নির্মাণ কম্পাইলার দ্বারা অন্তর্ভুক্ত করা হয় যখন
সতর্কতা জারি করা হবে কিনা তা নির্ধারণ করা।
বার্তাটি আউটপুটের সাথে সামঞ্জস্য রেখে -fstack-ব্যবহার.
* যদি স্ট্যাকের ব্যবহার সম্পূর্ণরূপে স্থির হয় কিন্তু নির্দিষ্ট পরিমাণ ছাড়িয়ে যায়, তাহলে তা হল:
সতর্কতা: স্ট্যাক ব্যবহার 1120 বাইট
* যদি স্ট্যাকের ব্যবহার (আংশিক) গতিশীল কিন্তু আবদ্ধ হয়, তাহলে তা হল:
সতর্কতা: স্ট্যাক ব্যবহার 1648 বাইট হতে পারে
* যদি স্ট্যাকের ব্যবহার (আংশিকভাবে) গতিশীল হয় এবং আবদ্ধ না হয়, তাহলে তা হল:
সতর্কতা: স্ট্যাক ব্যবহার সীমাহীন হতে পারে
-উনসেফ-লুপ-অপ্টিমাইজেশন
সতর্ক করুন যদি লুপটি অপ্টিমাইজ করা না যায় কারণ কম্পাইলার কিছু ধরে নিতে পারে না
লুপ সূচকের সীমানা। সঙ্গে -ফানসেফ-লুপ-অপ্টিমাইজেশন কম্পাইলার হলে সতর্ক করুন
এই ধরনের অনুমান করে।
-নো-পেডান্টিক-এমএস-ফর্ম্যাট (শুধুমাত্র MinGW লক্ষ্যমাত্রা)
সঙ্গে সংমিশ্রণে ব্যবহার করা হলে -Wformat এবং -শিক্ষার্থী GNU এক্সটেনশন ছাড়া, এটি
বিকল্পটি অ-আইএসও "প্রিন্টএফ" / "স্ক্যানএফ" বিন্যাস প্রস্থ নির্দিষ্টকরণের বিষয়ে সতর্কতা নিষ্ক্রিয় করে
"I32", "I64", এবং "I" উইন্ডোজ টার্গেটে ব্যবহৃত হয়, যা MS রানটাইমের উপর নির্ভর করে।
-Wpointer-rith
যেকোন কিছু সম্পর্কে সতর্ক করুন যা একটি ফাংশনের প্রকারের "আকার" বা "অকার্যকর" এর উপর নির্ভর করে। GNU C
"অকার্যকর *" এর সাথে গণনার সুবিধার জন্য এই ধরনের 1 এর আকার নির্ধারণ করে
পয়েন্টার এবং ফাংশন পয়েন্টার. C++ এ, একটি পাটিগণিত অপারেশনের সময়ও সতর্ক করুন
"NULL" জড়িত। এই সতর্কতা দ্বারা সক্রিয় করা হয় -ডব্লিউডান্টিক.
-Wtype-সীমা
সীমিত পরিসরের কারণে একটি তুলনা সর্বদা সত্য বা সর্বদা মিথ্যা হলে সতর্ক করুন
ডেটা টাইপ, কিন্তু ধ্রুবক অভিব্যক্তির জন্য সতর্ক করবেন না। উদাহরণস্বরূপ, যদি স্বাক্ষর না করা হয় তবে সতর্ক করুন
ভেরিয়েবলকে শূন্যের সাথে "<" বা ">=" এর সাথে তুলনা করা হয়। এই সতর্কতা দ্বারা সক্রিয় করা হয়
-ওয়েক্সট্রা.
-Wbad-ফাংশন-কাস্ট (শুধুমাত্র C এবং উদ্দেশ্য-C)
যখন একটি ফাংশন কল একটি অ-ম্যাচিং টাইপ কাস্ট করা হয় তখন সতর্ক করুন৷ উদাহরণস্বরূপ, একটি কল হলে সতর্ক করুন
একটি পূর্ণসংখ্যা টাইপ ফেরত একটি ফাংশন একটি পয়েন্টার টাইপ নিক্ষেপ করা হয়.
-Wc90-c99-কম্প্যাট (শুধুমাত্র C এবং উদ্দেশ্য-C)
ISO C90-এ উপস্থিত নয়, কিন্তু ISO C99-এ উপস্থিত বৈশিষ্ট্যগুলি সম্পর্কে সতর্ক করুন৷ এই ক্ষেত্রে,
পরিবর্তনশীল দৈর্ঘ্য অ্যারে, "লং লং" টাইপ, "বুল" টাইপ, যৌগ ব্যবহার সম্পর্কে সতর্ক করুন
আক্ষরিক, মনোনীত প্রাথমিক, এবং তাই। এই বিকল্পটি থেকে স্বাধীন
মান মোড। "__এক্সটেনশন__" অনুসরণকারী অভিব্যক্তিতে সতর্কতা অক্ষম করা হয়েছে।
-Wc99-c11-কম্প্যাট (শুধুমাত্র C এবং উদ্দেশ্য-C)
ISO C99-এ উপস্থিত নয়, কিন্তু ISO C11-এ উপস্থিত বৈশিষ্ট্যগুলি সম্পর্কে সতর্ক করুন৷ এই ক্ষেত্রে,
বেনামী কাঠামো এবং ইউনিয়ন ব্যবহার সম্পর্কে সতর্ক করুন, "_Atomic" টাইপ কোয়ালিফায়ার,
"_Thread_local" স্টোরেজ-ক্লাস স্পেসিফায়ার, "_Alignas" স্পেসিফায়ার, "Alignof" অপারেটর,
"_জেনারিক" কীওয়ার্ড, এবং তাই। এই বিকল্পটি স্ট্যান্ডার্ড মোড থেকে স্বাধীন।
"__এক্সটেনশন__" অনুসরণকারী অভিব্যক্তিতে সতর্কতা অক্ষম করা হয়েছে।
-Wc++-কম্প্যাট (শুধুমাত্র C এবং উদ্দেশ্য-C)
ISO C গঠন সম্পর্কে সতর্ক করুন যেগুলি ISO C এবং ISO-এর সাধারণ উপসেটের বাইরে
C++, যেমন "void *" থেকে একটি পয়েন্টার থেকে নন-"void"-এ অন্তর্নিহিত রূপান্তরের অনুরোধ
টাইপ করুন।
-Wc++11-কম্প্যাট (শুধুমাত্র C++ এবং উদ্দেশ্য-C++)
C++ নির্মাণ সম্পর্কে সতর্ক করুন যার অর্থ ISO C++ 1998 এবং ISO C++ 2011-এর মধ্যে আলাদা,
যেমন, ISO C++ 1998-এর শনাক্তকারী যা ISO C++ 2011-এর কীওয়ার্ড। এই সতর্কতা
সক্রিয় - সংকীর্ণ এবং দ্বারা সক্রিয় করা হয় -ওয়াল.
-Wc++14-কম্প্যাট (শুধুমাত্র C++ এবং উদ্দেশ্য-C++)
C++ নির্মাণ সম্পর্কে সতর্ক করুন যার অর্থ ISO C++ 2011 এবং ISO C++ 2014-এর মধ্যে আলাদা।
এই সতর্কতা দ্বারা সক্রিয় করা হয় -ওয়াল.
-Wcast-গুণ
লক্ষ্য টাইপ থেকে একটি টাইপ কোয়ালিফায়ার অপসারণ করার জন্য যখনই একটি পয়েন্টার কাস্ট করা হয় তখন সতর্ক করুন।
উদাহরণস্বরূপ, সতর্ক করুন যদি একটি "const char *" একটি সাধারণ "char *" এ কাস্ট করা হয়।
একটি অনিরাপদ উপায়ে একটি টাইপ কোয়ালিফায়ার প্রবর্তন করে এমন একটি কাস্ট তৈরি করার সময়ও সতর্ক করুন৷ জন্য
উদাহরণ, "char **" থেকে "const char **" কাস্ট করা অনিরাপদ, যেমন এই উদাহরণে:
/* p হল char ** মান। */
কনস্ট চর ** কিউ = (কনস্ট চর **) পি;
/* const char * এ শুধুমাত্র পঠনযোগ্য স্ট্রিং এর বরাদ্দ ঠিক আছে। */
*q = "স্ট্রিং";
/* এখন char** পয়েন্টার পয়েন্ট শুধুমাত্র-পঠন মেমরিতে। */
**p = 'b';
-Wcast-সারিবদ্ধ
যখনই একটি পয়েন্টার নিক্ষেপ করা হয় যাতে লক্ষ্যের প্রয়োজনীয় প্রান্তিককরণ হয় সতর্ক করুন
বৃদ্ধি উদাহরণস্বরূপ, সতর্ক করুন যদি একটি "char *" একটি "int *" এ কাস্ট করা হয় যেখানে মেশিনে
পূর্ণসংখ্যাগুলি কেবলমাত্র দুই বা চার-বাইটের সীমানায় অ্যাক্সেস করা যেতে পারে।
লিখুন-স্ট্রিং
সি কম্পাইল করার সময়, স্ট্রিং ধ্রুবকগুলি টাইপ করুন "const char[দৈর্ঘ্য]" যাতে অনুলিপি করা হয়
একটি নন-"const" "char *" পয়েন্টারে একজনের ঠিকানা একটি সতর্কতা তৈরি করে। এইগুলো
সতর্কতা আপনাকে কম্পাইল টাইম কোড খুঁজে পেতে সাহায্য করে যা একটি স্ট্রিং এ লেখার চেষ্টা করতে পারে
ধ্রুবক, কিন্তু শুধুমাত্র যদি আপনি ঘোষণায় "const" ব্যবহার করার বিষয়ে খুব সতর্ক থাকেন
এবং প্রোটোটাইপ। অন্যথায়, এটি একটি উপদ্রব মাত্র। এই কারণে আমরা বানাইনি -ওয়াল
এই সতর্কতা অনুরোধ.
C++ কম্পাইল করার সময়, স্ট্রিং লিটারাল থেকে "char"-এ অবচিত রূপান্তর সম্পর্কে সতর্ক করুন
*"। এই সতর্কতাটি সি++ প্রোগ্রামের জন্য ডিফল্টরূপে সক্রিয় থাকে।
-Wclobbered
"longjmp" বা "vfork" দ্বারা পরিবর্তিত হতে পারে এমন ভেরিয়েবলের জন্য সতর্ক করুন। এই সতর্কতা
এছাড়াও দ্বারা সক্রিয় -ওয়েক্সট্রা.
শর্তসাপেক্ষে-সমর্থিত (শুধুমাত্র C++ এবং উদ্দেশ্য-C++)
শর্তসাপেক্ষে-সমর্থিত (C++11 [intro.defs]) নির্মাণের জন্য সতর্ক করুন।
-Wconversion
অন্তর্নিহিত রূপান্তরগুলির জন্য সতর্ক করুন যা একটি মান পরিবর্তন করতে পারে। এই রূপান্তর অন্তর্ভুক্ত
বাস্তব এবং পূর্ণসংখ্যার মধ্যে, যেমন "abs (x)" যখন "x" হয় "দ্বৈত"; মধ্যে রূপান্তর
স্বাক্ষরিত এবং স্বাক্ষরবিহীন, যেমন "স্বাক্ষরবিহীন ui = -1"; এবং ছোট ধরনের রূপান্তর, যেমন
"sqrtf (M_PI)"। "abs(int) x)" এবং "ui = এর মতো স্পষ্ট কাস্টের জন্য সতর্ক করবেন না৷
(অস্বাক্ষরিত) -1", অথবা যদি "abs (2.0)" এর মত রূপান্তর দ্বারা মান পরিবর্তন না হয়।
স্বাক্ষরিত এবং স্বাক্ষরবিহীন পূর্ণসংখ্যার মধ্যে রূপান্তর সম্পর্কে সতর্কতা দ্বারা অক্ষম করা যেতে পারে
ব্যবহার -Wno-চিহ্ন-রূপান্তর.
C++ এর জন্য, ব্যবহারকারী-সংজ্ঞায়িত রূপান্তরগুলির জন্য বিভ্রান্তিকর ওভারলোড রেজোলিউশনের জন্যও সতর্ক করুন; এবং
রূপান্তরগুলি যেগুলি কখনই একটি টাইপ রূপান্তর অপারেটর ব্যবহার করে না: "অকার্যকর" তে রূপান্তর, একই৷
টাইপ, একটি বেস ক্লাস বা তাদের একটি রেফারেন্স। স্বাক্ষরিত মধ্যে রূপান্তর সম্পর্কে সতর্কতা
এবং স্বাক্ষরবিহীন পূর্ণসংখ্যা ডিফল্টরূপে C++ এ নিষ্ক্রিয় করা হয় যদি না -Wsign-রূপান্তর is
স্পষ্টভাবে সক্রিয়।
-Wno-রূপান্তর-শূন্য (শুধুমাত্র C++ এবং উদ্দেশ্য-C++)
"NULL" এবং নন-পয়েন্টার প্রকারের মধ্যে রূপান্তরের জন্য সতর্ক করবেন না। -Wconversion-null is
ডিফল্টরূপে সক্ষম।
-Wzero-as-নাল-পয়েন্টার-কনস্ট্যান্ট (শুধুমাত্র C++ এবং উদ্দেশ্য-C++)
যখন একটি আক্ষরিক '0' নাল পয়েন্টার ধ্রুবক হিসাবে ব্যবহৃত হয় তখন সতর্ক করুন। এই জন্য দরকারী হতে পারে
C++11-এ "nullptr"-এ রূপান্তর সহজতর করুন।
-তারিখ-সময়
ম্যাক্রো যখন "__TIME__", "__DATE__" বা "__TIMESTAMP__" এর মুখোমুখি হয় তখন সতর্ক করুন
বিট-ওয়াইজ-অভিন্ন প্রজননযোগ্য সংকলন প্রতিরোধ করতে পারে।
মুছে ফেলুন-অসম্পূর্ণ (শুধুমাত্র C++ এবং উদ্দেশ্য-C++)
অসম্পূর্ণ ধরনের একটি পয়েন্টার মুছে ফেলার সময় সতর্ক করুন, যা অনির্ধারিত আচরণের কারণ হতে পারে
রানটাইম এই সতর্কতা ডিফল্টরূপে সক্রিয় করা হয়.
-উইসলেস-কাস্ট (শুধুমাত্র C++ এবং উদ্দেশ্য-C++)
সতর্ক করুন যখন একটি অভিব্যক্তি তার নিজস্ব ধরনের কাস্ট করা হয়।
-শরীর ভেজা
একটি "if", "else" বা "do while" বিবৃতিতে একটি খালি বডি দেখা দিলে সতর্ক করুন। এই সতর্কতা
এছাড়াও দ্বারা সক্রিয় করা হয় -ওয়েক্সট্রা.
-ভেনাম-তুলনা
বিভিন্ন গণনা করা মানের মধ্যে তুলনা সম্পর্কে সতর্ক করুন। C++ সংখ্যায়
শর্তসাপেক্ষ অভিব্যক্তিতে অমিলগুলিও নির্ণয় করা হয় এবং সতর্কতা সক্রিয় করা হয়
ডিফল্ট. সি-তে এই সতর্কতা সক্রিয় করা হয়েছে -ওয়াল.
-Wjump-মিস-ইনিট (সি, উদ্দেশ্য-সি শুধুমাত্র)
সতর্ক করুন যদি একটি "গোটো" বিবৃতি বা একটি "সুইচ" বিবৃতি পুরো জুড়ে এগিয়ে যায়
একটি ভেরিয়েবলের সূচনা, বা পরিবর্তনশীল হওয়ার পরে একটি লেবেলে পিছনের দিকে ঝাঁপিয়ে পড়ে
আরম্ভ এটি শুধুমাত্র ভেরিয়েবল সম্পর্কে সতর্ক করে যেগুলি যখন শুরু হয় তখন
ঘোষিত. এই সতর্কতা শুধুমাত্র C এবং Objective-C এর জন্য সমর্থিত; C++ এ এই ধরনের
শাখা কোনো ক্ষেত্রে একটি ত্রুটি.
-Wjump-মিস-ইনিট অন্তর্ভুক্ত করা হয় -Wc++-কম্প্যাট. এটি দিয়ে নিষ্ক্রিয় করা যেতে পারে
-উনো-জাম্প-মিস-ইনিট বিকল্প।
-সাইন-তুলনা
যখন স্বাক্ষরিত এবং স্বাক্ষরবিহীন মানগুলির মধ্যে তুলনা একটি ভুল তৈরি করতে পারে তখন সতর্ক করুন৷
ফলাফল যখন স্বাক্ষরিত মান আনসাইন্ডে রূপান্তরিত হয়। এই সতর্কতাও সক্রিয় করা হয়েছে৷
by -ওয়েক্সট্রা; অন্যান্য সতর্কবার্তা পেতে -ওয়েক্সট্রা এই সতর্কতা ছাড়া, ব্যবহার করুন -ওয়েক্সট্রা
-উনো-সাইন-তুলনা.
-Wsign-রূপান্তর
অন্তর্নিহিত রূপান্তরগুলির জন্য সতর্ক করুন যা একটি পূর্ণসংখ্যা মানের চিহ্ন পরিবর্তন করতে পারে, যেমন
একটি স্বাক্ষরবিহীন পূর্ণসংখ্যা ভেরিয়েবলে একটি স্বাক্ষরিত পূর্ণসংখ্যা অভিব্যক্তি বরাদ্দ করা। একটি সুস্পষ্ট
ঢালাই সতর্কতা নীরব করে। C-তে, এই বিকল্পটি দ্বারাও সক্রিয় করা হয়েছে -Wconversion.
-Wfloat-রূপান্তর
অন্তর্নিহিত রূপান্তরগুলির জন্য সতর্ক করুন যা একটি বাস্তব মানের নির্ভুলতা হ্রাস করে৷ এই
বাস্তব থেকে পূর্ণসংখ্যা এবং উচ্চতর নির্ভুলতা বাস্তব থেকে নিম্নে রূপান্তর অন্তর্ভুক্ত করে
যথার্থ বাস্তব মান। এই বিকল্পটি দ্বারা সক্রিয় করা হয় -Wconversion.
-Wsized-অবণ্টন (শুধুমাত্র C++ এবং উদ্দেশ্য-C++)
একটি আকারবিহীন ডিলোকেশন ফাংশনের একটি সংজ্ঞা সম্পর্কে সতর্ক করুন৷
void অপারেটর মুছে ফেলুন (void *) ছাড়া;
void অপারেটর মুছে ফেলুন [] (অকার্যকর *) ছাড়া;
সংশ্লিষ্ট আকারের ডিলোকেশন ফাংশনের সংজ্ঞা ছাড়াই
void অপারেটর মুছে ফেলুন (void *, std::size_t) ছাড়া;
void অপারেটর মুছে ফেলুন [] (void *, std::size_t) ছাড়া ছাড়া;
্য মচক্সফন্দক্স. দ্বারা সক্রিয় -ওয়েক্সট্রা সাথে -fsized-অবণ্টন.
-পয়েন্টার-মেমাক্সেসের আকার
নির্দিষ্ট স্ট্রিং এবং মেমরি অন্তর্নির্মিত ফাংশন সন্দেহজনক দৈর্ঘ্য পরামিতি জন্য সতর্ক করুন
যদি যুক্তি "sizeof" ব্যবহার করে। এই সতর্কবার্তাটি যেমন "মেমসেট (ptr, 0, sizeof
(ptr));" যদি "ptr" একটি অ্যারে না হয়, কিন্তু একটি পয়েন্টার হয়, এবং একটি সম্ভাব্য সমাধানের পরামর্শ দেয়, অথবা
সম্পর্কে "memcpy (&foo, ptr, sizeof (&foo));"। এই সতর্কতা দ্বারা সক্রিয় করা হয় -ওয়াল.
-Wsizeof-অ্যারে-আর্গুমেন্ট
সতর্ক করুন যখন "sizeof" অপারেটরটি একটি প্যারামিটারে প্রয়োগ করা হয় যা একটি অ্যারে হিসাবে ঘোষণা করা হয়
একটি ফাংশন সংজ্ঞায়। এই সতর্কতাটি ডিফল্টরূপে C এবং C++ প্রোগ্রামগুলির জন্য সক্রিয় করা হয়েছে।
-WMEMEMSTE- ট্রান্সপোজড-আর্জস
"মেমসেট" বিল্ট-ইন ফাংশনে সন্দেহজনক কলের জন্য সতর্ক করুন, যদি দ্বিতীয় যুক্তিটি হয়
শূন্য নয় এবং তৃতীয় যুক্তিটি শূন্য। এটি eg@ কে "memset (buf, sizeof.) সম্পর্কে সতর্ক করে
buf, 0)" যেখানে সম্ভবত "memset (buf, 0, sizeof buf)" এর পরিবর্তে বোঝানো হয়েছিল৷
তৃতীয় যুক্তিটি আক্ষরিক শূন্য হলেই নির্গত হয়। যদি কিছু হয়
অভিব্যক্তি যা শূন্যে ভাঁজ করা হয়, শূন্য থেকে কিছু প্রকারের কাস্ট ইত্যাদি, এটি অনেক কম
সম্ভবত ব্যবহারকারী ভুলভাবে আর্গুমেন্ট বিনিময় করেছে এবং কোন সতর্কতা নির্গত হয় না।
এই সতর্কতা দ্বারা সক্রিয় করা হয় -ওয়াল.
-ওয়াডড্রেস
মেমরি ঠিকানার সন্দেহজনক ব্যবহার সম্পর্কে সতর্ক করুন। এর মধ্যে একটি ঠিকানা ব্যবহার করা অন্তর্ভুক্ত
একটি শর্তসাপেক্ষ অভিব্যক্তিতে ফাংশন, যেমন "void func(void); if (func)", এবং
একটি স্ট্রিং আক্ষরিক মেমরি ঠিকানার সাথে তুলনা, যেমন "if (x == "abc")"।
এই ধরনের ব্যবহারগুলি সাধারণত একটি প্রোগ্রামার ত্রুটি নির্দেশ করে: একটি ফাংশনের ঠিকানা সর্বদা
সত্যে মূল্যায়ন করে, তাই শর্তসাপেক্ষে তাদের ব্যবহার সাধারণত নির্দেশ করে যে প্রোগ্রামার
একটি ফাংশন কলে বন্ধনী ভুলে গেছি; এবং স্ট্রিং লিটারেলের সাথে তুলনা
অনির্দিষ্ট আচরণের ফলে এবং সি তে বহনযোগ্য নয়, তাই তারা সাধারণত নির্দেশ করে
যে প্রোগ্রামার "strcmp" ব্যবহার করতে চেয়েছিলেন। এই সতর্কতা দ্বারা সক্রিয় করা হয় -ওয়াল.
-ব্লোগিকাল-ওপ
অভিব্যক্তিতে লজিক্যাল অপারেটরদের সন্দেহজনক ব্যবহার সম্পর্কে সতর্ক করুন। এই ব্যবহার অন্তর্ভুক্ত
প্রেক্ষাপটে যৌক্তিক অপারেটর যেখানে একটি বিট-ওয়াইজ অপারেটর প্রত্যাশিত।
-যৌক্তিক-না-বন্ধনী
একটি তুলনার বাম দিকের অপারেন্ডে যৌক্তিক ব্যবহার না করা সম্পর্কে সতর্ক করুন। এই
RHS অপারেন্ড বুলিয়ান টাইপের হলে বিকল্পটি সতর্ক করে না। এর উদ্দেশ্য হল
নিম্নলিখিত মত সন্দেহজনক কোড সনাক্ত করুন:
int a;
...
যদি (!a > 1) { ... }
LHS বন্ধনীতে মোড়ানোর মাধ্যমে সতর্কতা দমন করা সম্ভব:
যদি (!a) > 1) { ... }
এই সতর্কতা দ্বারা সক্রিয় করা হয় -ওয়াল.
-ওয়াগ্রিগেট-রিটার্ন
স্ট্রাকচার বা ইউনিয়ন প্রদানকারী কোনো ফাংশন সংজ্ঞায়িত বা বলা হলে সতর্ক করুন। (ভিতরে
ভাষা যেখানে আপনি একটি অ্যারে ফেরত দিতে পারেন, এটি একটি সতর্কতাও প্রকাশ করে।)
-Wno-আক্রমনাত্মক-লুপ-অপ্টিমাইজেশান
ক্রমাগত পুনরাবৃত্তির সংখ্যা সহ একটি লুপে সতর্ক করুন যদি কম্পাইলার অনির্ধারিত সনাক্ত করে
এক বা একাধিক পুনরাবৃত্তির সময় কিছু বিবৃতিতে আচরণ।
-Wno- বৈশিষ্ট্য
যদি একটি অপ্রত্যাশিত "__অ্যাট্রিবিউট__" ব্যবহার করা হয়, যেমন অচেনা গুণাবলী, সতর্ক করবেন না,
ভেরিয়েবল, ইত্যাদিতে প্রয়োগ করা ফাংশন বৈশিষ্ট্য। এটি এর জন্য ত্রুটি বন্ধ করে না
সমর্থিত গুণাবলীর ভুল ব্যবহার।
-Wno-বিল্টিন-ম্যাক্রো-পুনরায় সংজ্ঞায়িত
কিছু বিল্ট-ইন ম্যাক্রো পুনরায় সংজ্ঞায়িত করা হলে সতর্ক করবেন না। এই জন্য সতর্কতা দমন
"__TIMESTAMP__", "__TIME__", "__DATE__", "__FILE__", এবং এর পুনরায় সংজ্ঞা
"__BASE_FILE__"।
-Wstrict-প্রোটোটাইপ (শুধুমাত্র C এবং উদ্দেশ্য-C)
আর্গুমেন্টের ধরন উল্লেখ না করে কোনো ফাংশন ঘোষণা বা সংজ্ঞায়িত করা হলে সতর্ক করুন। (একটি
পুরানো-শৈলী ফাংশন সংজ্ঞা একটি সতর্কতা ছাড়া অনুমোদিত হয় যদি একটি দ্বারা পূর্বে হয়
ঘোষণা যা যুক্তি প্রকারগুলি নির্দিষ্ট করে।)
-ওল্ড-স্টাইল-ঘোষণা (শুধুমাত্র C এবং উদ্দেশ্য-C)
একটি ঘোষণায় সি স্ট্যান্ডার্ড অনুযায়ী অপ্রচলিত ব্যবহারের জন্য সতর্ক করুন। জন্য
উদাহরণ, সতর্ক করুন যদি স্টোরেজ-ক্লাস স্পেসিফায়ার যেমন "স্ট্যাটিক" এ প্রথম জিনিস না হয়
ঘোষণা এই সতর্কতা দ্বারা সক্রিয় করা হয় -ওয়েক্সট্রা.
-ওল্ড-স্টাইল-সংজ্ঞা (শুধুমাত্র C এবং উদ্দেশ্য-C)
একটি পুরানো-শৈলী ফাংশন সংজ্ঞা ব্যবহার করা হলে সতর্ক করুন। থাকলেও সতর্কতা দেওয়া হয়
একটি পূর্ববর্তী প্রোটোটাইপ।
-Wmissing-প্যারামিটার-টাইপ (শুধুমাত্র C এবং উদ্দেশ্য-C)
K&R-শৈলী ফাংশনে টাইপ স্পেসিফায়ার ছাড়াই একটি ফাংশন প্যারামিটার ঘোষণা করা হয়:
void foo(বার) { }
এই সতর্কতা দ্বারা সক্রিয় করা হয় -ওয়েক্সট্রা.
-Wmissing-প্রোটোটাইপ (শুধুমাত্র C এবং উদ্দেশ্য-C)
পূর্ববর্তী প্রোটোটাইপ ঘোষণা ছাড়া একটি বিশ্বব্যাপী ফাংশন সংজ্ঞায়িত করা হলে সতর্ক করুন। এই
সতর্কতা জারি করা হয় এমনকি যদি সংজ্ঞা নিজেই একটি প্রোটোটাইপ প্রদান করে। এই বিকল্পটি ব্যবহার করুন
বৈশ্বিক ফাংশন সনাক্ত করতে যেগুলির মধ্যে একটি মিলিত প্রোটোটাইপ ঘোষণা নেই
হেডার ফাইল। এই বিকল্পটি C++ এর জন্য বৈধ নয় কারণ সমস্ত ফাংশন ঘোষণা
প্রোটোটাইপ প্রদান করুন এবং একটি অ-মেলা ঘোষণা পরিবর্তে একটি ওভারলোড ঘোষণা করে
পূর্ব ঘোষণার সাথে দ্বন্দ্ব। ব্যবহার করুন মিসিং-ঘোষণা অনুপস্থিত সনাক্ত করতে
C++ এ ঘোষণা।
মিসিং-ঘোষণা
পূর্ববর্তী ঘোষণা ছাড়া একটি বিশ্বব্যাপী ফাংশন সংজ্ঞায়িত করা হলে সতর্ক করুন। এমনকি যদি তাই না
সংজ্ঞা নিজেই একটি প্রোটোটাইপ প্রদান করে। বিশ্বব্যাপী সনাক্ত করতে এই বিকল্পটি ব্যবহার করুন
যে ফাংশন হেডার ফাইলে ঘোষণা করা হয় না। সি-তে, কোন সতর্কতা জারি করা হয় না
পূর্ববর্তী নন-প্রোটোটাইপ ঘোষণা সহ ফাংশন; ব্যবহার -Wmissing-প্রোটোটাইপ সনাক্ত
অনুপস্থিত প্রোটোটাইপ C++ এ, ফাংশন টেমপ্লেট বা এর জন্য কোনো সতর্কতা জারি করা হয় না
ইনলাইন ফাংশন, বা বেনামী নামস্থানে ফাংশনের জন্য।
মিসিং-ফিল্ড-ইনিশিয়ালাইজার
স্ট্রাকচারের ইনিশিয়ালাইজারের কিছু ক্ষেত্র অনুপস্থিত থাকলে সতর্ক করুন। উদাহরণস্বরূপ, নিম্নলিখিত
কোড এই ধরনের সতর্কতা সৃষ্টি করে, কারণ "xh" অন্তর্নিহিতভাবে শূন্য:
স্ট্রাক্ট এস {ইন্ট এফ, জি, এইচ; };
struct sx = { 3, 4 };
এই বিকল্পটি মনোনীত ইনিশিয়ালাইজার সম্পর্কে সতর্ক করে না, তাই নিম্নলিখিত পরিবর্তন
একটি সতর্কতা ট্রিগার করে না:
স্ট্রাক্ট এস {ইন্ট এফ, জি, এইচ; };
struct sx = { .f = 3, .g = 4 };
C++ এ এই বিকল্পটি খালি { } ইনিশিয়ালাইজার সম্পর্কে সতর্ক করে না, উদাহরণস্বরূপ:
স্ট্রাক্ট এস {ইন্ট এফ, জি, এইচ; };
sx = { };
এই সতর্কতা অন্তর্ভুক্ত করা হয়েছে -ওয়েক্সট্রা. অন্য পেতে -ওয়েক্সট্রা এটি ছাড়া সতর্কতা,
ব্যবহার -ওয়েক্সট্রা -Wno-অনুপস্থিত-ক্ষেত্র-সূচনাকারী.
-উনো-মাল্টিচার
একটি মাল্টি অক্ষর ধ্রুবক থাকলে সতর্ক করবেন না ('ফুফ') ব্যবহৃত হয়. সাধারণত তারা একটি নির্দেশ করে
ব্যবহারকারীর কোডে টাইপো, কারণ তাদের বাস্তবায়ন-সংজ্ঞায়িত মান রয়েছে এবং হওয়া উচিত নয়
পোর্টেবল কোড ব্যবহার করা হয়।
-স্বাভাবিক[=<না|id|NFC|nfkc>]
ISO C এবং ISO C++-এ, দুটি শনাক্তকারী আলাদা হয় যদি তারা এর ক্রম ভিন্ন হয়
চরিত্র. যাইহোক, কখনও কখনও যখন মৌলিক ASCII অক্ষর সেট বাইরে অক্ষর
ব্যবহার করা হয়, আপনার কাছে একই রকম দেখতে দুটি ভিন্ন অক্ষর ক্রম থাকতে পারে। এড়ানোর জন্য
বিভ্রান্তি, ISO 10646 মান কিছু সেট করে নিয়মমাফিককরণ নিয়ম যা প্রয়োগ করার সময়
নিশ্চিত করুন যে দুটি সিকোয়েন্স যা একই রকম দেখায় সেগুলি একই ক্রমে পরিণত হয়েছে৷ জিসিসি
আপনি যদি এমন শনাক্তকারী ব্যবহার করেন যা স্বাভাবিক করা হয়নি, তাহলে আপনাকে সতর্ক করতে পারে; এই বিকল্প
সেই সতর্কতা নিয়ন্ত্রণ করে।
GCC দ্বারা সমর্থিত সতর্কতার চারটি স্তর রয়েছে৷ ডিফল্ট হয় -সাধারণকৃত=nfc,
যা ISO 10646 "C" স্বাভাবিকীকৃত ফর্মে নেই এমন কোনো শনাক্তকারী সম্পর্কে সতর্ক করে,
NFC এর. NFC হল বেশিরভাগ ব্যবহারের জন্য প্রস্তাবিত ফর্ম। এর সমতুল্য -স্বাভাবিক.
দুর্ভাগ্যবশত, ISO C এবং ISO C++ দ্বারা শনাক্তকারীতে কিছু অক্ষর অনুমোদিত
যেটি, যখন NFC-তে পরিণত হয়, শনাক্তকারীতে অনুমোদিত নয়৷ অর্থাৎ কোন উপায় নেই
পোর্টেবল ISO C বা C++-এ এই চিহ্নগুলি ব্যবহার করতে এবং NFC-তে আপনার সমস্ত শনাক্তকারী থাকতে হবে।
-সাধারণকৃত=আইডি এই অক্ষরের জন্য সতর্কতা দমন করে। ভবিষ্যৎ আশা করা যায়
জড়িত মানগুলির সংস্করণগুলি এটিকে সংশোধন করবে, তাই এই বিকল্পটি নয়
ডিফল্ট.
আপনি লেখার মাধ্যমে সমস্ত অক্ষরের জন্য সতর্কতা বন্ধ করতে পারেন -সাধারণকৃত=কোনটি নয় or
-উনো-স্বাভাবিক. আপনি যদি অন্য কিছু স্বাভাবিককরণ ব্যবহার করেন তবেই আপনার এটি করা উচিত
স্কিম (যেমন "D"), কারণ অন্যথায় আপনি সহজেই বাগ তৈরি করতে পারেন যা আক্ষরিক অর্থে
দেখা অসম্ভব।
ISO 10646-এর কিছু অক্ষরের আলাদা অর্থ আছে কিন্তু কিছু ফন্টে একই রকম দেখায়
অথবা প্রদর্শন পদ্ধতি, বিশেষ করে একবার ফরম্যাটিং প্রয়োগ করা হয়েছে। এই ক্ষেত্রে
"\u207F", "সুপারস্ক্রিপ্ট ল্যাটিন ছোট অক্ষর N", ঠিক একটি নিয়মিত "n" এর মতোই প্রদর্শিত হয় যা
একটি সুপারস্ক্রিপ্টে স্থাপন করা হয়েছে। ISO 10646 সংজ্ঞায়িত করে এনএফকেসি স্বাভাবিকীকরণ স্কিম থেকে
এগুলিকেও একটি স্ট্যান্ডার্ড ফর্মে রূপান্তর করুন এবং আপনার কোড না থাকলে GCC সতর্ক করে
আপনি যদি NFKC ব্যবহার করেন -সাধারণকৃত=nfkc. এই সতর্কতা প্রতিটি সম্পর্কে সতর্কতা তুলনীয়
শনাক্তকারী যেটিতে O অক্ষর রয়েছে কারণ এটি 0 সংখ্যার সাথে বিভ্রান্ত হতে পারে,
এবং তাই ডিফল্ট নয়, তবে স্থানীয় কোডিং কনভেনশন হিসাবে উপযোগী হতে পারে যদি
এই অক্ষরগুলিকে স্বতন্ত্রভাবে প্রদর্শন করার জন্য প্রোগ্রামিং পরিবেশ স্থির করা যায় না।
-উনো-বঞ্চিত
অবহেলিত বৈশিষ্ট্য ব্যবহার সম্পর্কে সতর্ক করবেন না.
-Wno-বঞ্চিত-ঘোষণা
ফাংশন ব্যবহার সম্পর্কে সতর্ক করবেন না, ভেরিয়েবল, এবং অবচয় হিসাবে চিহ্নিত টাইপ
"বঞ্চিত" বৈশিষ্ট্য ব্যবহার করে।
-উনো-ওভারফ্লো
ধ্রুবক অভিব্যক্তিতে কম্পাইল-টাইম ওভারফ্লো সম্পর্কে সতর্ক করবেন না।
-Wno-odr
লিঙ্ক-টাইম অপ্টিমাইজেশানের সময় এক সংজ্ঞা নিয়ম লঙ্ঘন সম্পর্কে সতর্ক করুন। প্রয়োজন
-flto-odr-টাইপ-মার্জিং সক্রিয় করা ডিফল্টরূপে সক্রিয়.
-ওপেনএমপি-সিমড
যদি ভেক্টরাইজার খরচ মডেল OpenMP বা Cilk Plus simd নির্দেশকে ওভাররাইড করে তাহলে সতর্ক করুন
ব্যবহারকারী দ্বারা সেট করা। দ্য -fsimd-কস্ট-মডেল=সীমাহীন বিকল্প খরচ শিথিল করতে ব্যবহার করা যেতে পারে
মডেল.
-ওভাররাইড-ইনিট (শুধুমাত্র C এবং উদ্দেশ্য-C)
মনোনীত ব্যবহার করার সময় পার্শ্ব প্রতিক্রিয়া ছাড়াই একটি প্রাথমিক ক্ষেত্র ওভাররাইড করা হলে সতর্ক করুন
ইনিশিয়ালাইজার
এই সতর্কতা অন্তর্ভুক্ত করা হয়েছে -ওয়েক্সট্রা. অন্য পেতে -ওয়েক্সট্রা এটি ছাড়া সতর্কতা,
ব্যবহার -ওয়েক্সট্রা -Wno-ওভাররাইড-init.
-Wpacked
যদি একটি কাঠামোকে প্যাকড অ্যাট্রিবিউট দেওয়া হয় তবে সতর্ক করুন, কিন্তু প্যাকড অ্যাট্রিবিউটের নেই
কাঠামোর বিন্যাস বা আকারের উপর প্রভাব। এই ধরনের কাঠামোর জন্য ভুল-সারিবদ্ধ হতে পারে
সামান্য সুবিধা। উদাহরণ স্বরূপ, এই কোডে, "struct bar"-এ "fx" পরিবর্তনশীল
ভুলভাবে সংযোজন করা হয়েছে যদিও "struct bar"-এর নিজেই প্যাকড অ্যাট্রিবিউট নেই:
স্ট্রাক্ট ফু {
ইন্ট এক্স;
চর এ, বি, সি, ডি;
__ ribribute __ ((প্যাকড));
struct বার {
চর জেড;
স্ট্রাক্ট ফু এফ;
};
-ডব্লিউপ্যাকড-বিটফিল্ড-কমপ্যাট
GCC-এর 4.1, 4.2 এবং 4.3 সিরিজ টাইপের বিট-ক্ষেত্রগুলিতে "প্যাকড" বৈশিষ্ট্যকে উপেক্ষা করে
"চর"। এটি GCC 4.4 এ স্থির করা হয়েছে কিন্তু পরিবর্তনের ফলে পার্থক্য হতে পারে
কাঠামো বিন্যাস। GCC আপনাকে জানায় যখন এই ধরনের একটি ক্ষেত্রের অফসেট GCC-তে পরিবর্তিত হয়
4.4 উদাহরণস্বরূপ এটিতে "a" এবং "b" ক্ষেত্রের মধ্যে আর একটি 4-বিট প্যাডিং নেই
গঠন:
স্ট্রাক্ট ফু
{
চর এ: 4;
চর বি: 8;
} __attribute__ ((প্যাকড));
এই সতর্কতা ডিফল্টরূপে সক্রিয় করা হয়. ব্যবহার করুন -Wno-প্যাকড-বিটফিল্ড-কম্প্যাট এটি নিষ্ক্রিয় করতে
সাবধানবাণী।
-Wpadded
প্যাডিং একটি কাঠামোর মধ্যে অন্তর্ভুক্ত করা হলে সতর্ক করুন, হয় এর একটি উপাদান সারিবদ্ধ করতে
গঠন বা পুরো কাঠামো সারিবদ্ধ করা। কখনও কখনও যখন এটি ঘটে তখন এটি সম্ভব
প্যাডিং কমাতে কাঠামোর ক্ষেত্রগুলিকে পুনর্বিন্যাস করতে এবং তাই তৈরি করুন
গঠন ছোট।
-অপ্রয়োজনীয়- ঘোষণা
সতর্ক করুন যদি একই সুযোগে একাধিকবার ঘোষণা করা হয়, এমনকী এমন ক্ষেত্রেও
একাধিক ঘোষণা বৈধ এবং কিছুই পরিবর্তন করে না।
-তে আবদ্ধ-এক্সটারনস (শুধুমাত্র C এবং উদ্দেশ্য-C)
একটি ফাংশনের মধ্যে একটি "বহিরাগত" ঘোষণার সম্মুখীন হলে সতর্ক করুন৷
-Wno-উত্তরাধিকারী-ভেরিয়েডিক-ক্টর
বেস ক্লাসের সময় C++11 উত্তরাধিকারী কনস্ট্রাক্টর ব্যবহার সম্পর্কে সতর্কতা দমন করুন
উত্তরাধিকারসূত্রে প্রাপ্ত একটি সি বৈচিত্র্যময় কনস্ট্রাক্টর আছে; সতর্কতাটি ডিফল্টরূপে চালু থাকে কারণ
উপবৃত্ত উত্তরাধিকারসূত্রে পাওয়া যায় না।
-উইনলাইন
ইনলাইন হিসাবে ঘোষিত একটি ফাংশন ইনলাইন করা না গেলে সতর্ক করুন৷ এমনকি এই সঙ্গে
বিকল্প, কম্পাইলার ঘোষিত ইনলাইন ফাংশনগুলির ব্যর্থতা সম্পর্কে সতর্ক করে না
সিস্টেম হেডার।
কম্পাইলার একটি ইনলাইন কি না তা নির্ধারণ করতে বিভিন্ন হিউরিস্টিক ব্যবহার করে
ফাংশন উদাহরণস্বরূপ, কম্পাইলার ফাংশনের আকার বিবেচনা করে
ইনলাইন্ড এবং ইনলাইন করার পরিমাণ যা ইতিমধ্যে বর্তমান ফাংশনে করা হয়েছে।
অতএব, উত্স প্রোগ্রামে আপাতদৃষ্টিতে তুচ্ছ পরিবর্তন হতে পারে
দ্বারা উত্পাদিত সতর্কতা -উইনলাইন প্রদর্শিত বা অদৃশ্য হতে
-Wno-অবৈধ-অফসেটফ (শুধুমাত্র C++ এবং উদ্দেশ্য-C++)
একটি নন-পিওডি টাইপে "অফসেটফ" ম্যাক্রো প্রয়োগ করা থেকে সতর্কতা দমন করুন। অনুসারে
2014 ISO C++ মান, একটি অ-মানক-লেআউট প্রকারে "অফসেটফ" প্রয়োগ করা হল
অনির্ধারিত বিদ্যমান C++ বাস্তবায়নে, তবে, "অফসেটফ" সাধারণত দেয়
অর্থবহ ফলাফল। এই পতাকা ব্যবহারকারীদের জন্য যারা সচেতন যে তারা লিখছেন
ননপোর্টেবল কোড এবং যারা ইচ্ছাকৃতভাবে এটি সম্পর্কে সতর্কতা উপেক্ষা করতে বেছে নিয়েছে।
"অফসেটফ" এর উপর নিষেধাজ্ঞাগুলি সি++ স্ট্যান্ডার্ডের ভবিষ্যতের সংস্করণে শিথিল করা যেতে পারে।
-নো-ইন-ইন-টু-পয়েন্টার-কাস্ট
একটি ভিন্ন আকারের একটি পূর্ণসংখ্যার casts থেকে পয়েন্টার প্রকারের সতর্কতা দমন করুন৷ ভিতরে
C++, ছোট আকারের একটি পয়েন্টার টাইপ কাস্ট করা একটি ত্রুটি। উইন্ট-টু-পয়েন্টার-কাস্ট is
ডিফল্টরূপে সক্ষম।
-Wno-পয়েন্টার থেকে int-কাস্ট (শুধুমাত্র C এবং উদ্দেশ্য-C)
একটি পয়েন্টার থেকে একটি ভিন্ন আকারের একটি পূর্ণসংখ্যা ধরনের কাস্ট থেকে সতর্কতা দমন করুন।
-উইনভালিড-পিএইচ
সতর্ক করুন যদি অনুসন্ধানের পথে একটি প্রি-কম্পাইল করা হেডার পাওয়া যায় কিন্তু ব্যবহার করা যাবে না।
-লং-লং
"লং লং" টাইপ ব্যবহার করা হলে সতর্ক করুন। এই উভয় দ্বারা সক্রিয় করা হয় -ডব্লিউডান্টিক or
- ঐতিহ্যগত ISO C90 এবং C++98 মোডে। সতর্কতা বার্তাগুলিকে বাধা দিতে, ব্যবহার করুন
-উনো-লং-লং.
-Wvariadic-ম্যাক্রো
আইএসও C90 মোডে বৈচিত্র্যময় ম্যাক্রো ব্যবহার করা হলে বা GNU বিকল্প সিনট্যাক্স হলে সতর্ক করুন
ISO C99 মোডে ব্যবহৃত। এই উভয় দ্বারা সক্রিয় করা হয় -ডব্লিউডান্টিক or - ঐতিহ্যগত। থেকে
সতর্কতা বার্তা, ব্যবহার বাধা -Wno-variadic-macros.
-ভারার্গস
পরিবর্তনশীল আর্গুমেন্ট পরিচালনা করতে ব্যবহৃত ম্যাক্রোর সন্দেহজনক ব্যবহারের বিষয়ে সতর্ক করুন
"va_start"। এটি ডিফল্ট। সতর্কতা বার্তাগুলিকে বাধা দিতে, ব্যবহার করুন -উনো-ভারর্গস.
-Wvector-অপারেশন-পারফরম্যান্স
আর্কিটেকচারের SIMD ক্ষমতার মাধ্যমে ভেক্টর অপারেশন বাস্তবায়িত না হলে সতর্ক করুন।
কর্মক্ষমতা টিউনিং জন্য প্রধানত দরকারী. ভেক্টর অপারেশন বাস্তবায়ন করা যেতে পারে
"পিসওয়াইজ", যার মানে প্রতিটি ভেক্টরে স্কেলার অপারেশন করা হয়
উপাদান "সমান্তরালে", যার মানে ভেক্টর অপারেশন ব্যবহার করে প্রয়োগ করা হয়
বৃহত্তর ধরণের স্কেলার, যা সাধারণত বেশি কর্মক্ষমতা দক্ষ; এবং "একক হিসাবে
স্কেলার", যার মানে ভেক্টর একটি স্কেলার টাইপের মধ্যে ফিট করে।
-Wno-ভার্চুয়াল-সরানো-অর্পণ
একটি অ-তুচ্ছ C++11 পদক্ষেপের সাথে একটি ভার্চুয়াল বেস থেকে উত্তরাধিকার সম্পর্কে সতর্কতা দমন করুন
নিয়োগ অপারেটর. এটি বিপজ্জনক কারণ যদি ভার্চুয়াল বেস বরাবর পৌঁছানো যায়
একাধিক পথ, এটি একাধিকবার সরানো হয়, যার অর্থ উভয় বস্তুই শেষ হতে পারে
রাজ্য থেকে সরানো যদি মুভ অ্যাসাইনমেন্ট অপারেটর থেকে সরানো এড়াতে লেখা থাকে
একটি সরানো বস্তু থেকে, এই সতর্কতা নিষ্ক্রিয় করা যেতে পারে.
-Wvla
কোডে পরিবর্তনশীল দৈর্ঘ্য অ্যারে ব্যবহার করা হলে সতর্ক করুন। -উনো-ভলা বাধা দেয় -ডব্লিউডান্টিক
পরিবর্তনশীল দৈর্ঘ্য অ্যারের সতর্কতা।
-Wvolatile-register-var
একটি রেজিস্টার ভেরিয়েবল উদ্বায়ী ঘোষণা করা হলে সতর্ক করুন. উদ্বায়ী পরিবর্তনকারী না
সমস্ত অপ্টিমাইজেশানকে বাধা দেয় যা নিবন্ধনের জন্য পড়া এবং/অথবা লেখাগুলিকে বাদ দিতে পারে
ভেরিয়েবল এই সতর্কতা দ্বারা সক্রিয় করা হয় -ওয়াল.
-Wdisabled-অপ্টিমাইজেশান
অনুরোধ করা অপ্টিমাইজেশান পাস অক্ষম করা হলে সতর্ক করুন৷ এই সতর্কতা সাধারণত হয় না
ইঙ্গিত করুন যে আপনার কোডে কিছু ভুল আছে; এটা শুধুমাত্র GCC এর নির্দেশ করে
অপ্টিমাইজাররা কোডটি কার্যকরভাবে পরিচালনা করতে অক্ষম। প্রায়ই, সমস্যা যে আপনার
কোড খুব বড় বা খুব জটিল; GCC অপ্টিমাইজেশন যখন প্রোগ্রাম অপ্টিমাইজ করতে অস্বীকার করে
নিজেই সময় অত্যধিক পরিমাণ নিতে পারে.
-Wpointer-চিহ্ন (শুধুমাত্র C এবং উদ্দেশ্য-C)
বিভিন্ন স্বাক্ষর সহ পয়েন্টার আর্গুমেন্ট পাসিং বা অ্যাসাইনমেন্টের জন্য সতর্ক করুন। এই
বিকল্প শুধুমাত্র C এবং Objective-C এর জন্য সমর্থিত। এটা দ্বারা উহ্য হয় -ওয়াল এবং দ্বারা
-ডব্লিউডান্টিক, যা দিয়ে নিষ্ক্রিয় করা যেতে পারে -Wno-পয়েন্টার-চিহ্ন.
-Wstack-রক্ষক
এই বিকল্প শুধুমাত্র সক্রিয় যখন -ফস্ট্যাক-রক্ষক সক্রিয়. এটি ফাংশন সম্পর্কে সতর্ক করে
যেগুলো স্ট্যাক স্ম্যাশিং থেকে সুরক্ষিত নয়।
-ওভারলেন্থ-স্ট্রিং
"সর্বাধিক সর্বনিম্ন" দৈর্ঘ্যের চেয়ে দীর্ঘ স্ট্রিং ধ্রুবক সম্পর্কে সতর্ক করুন
সি স্ট্যান্ডার্ডে উল্লেখ করা হয়েছে। আধুনিক কম্পাইলাররা সাধারণত স্ট্রিং ধ্রুবককে অনুমতি দেয়
স্ট্যান্ডার্ডের ন্যূনতম সীমার চেয়ে অনেক বেশি দীর্ঘ, কিন্তু খুব পোর্টেবল প্রোগ্রাম করা উচিত
দীর্ঘ স্ট্রিং ব্যবহার এড়িয়ে চলুন.
সীমা প্রযোজ্য পরে স্ট্রিং ধ্রুবক সংযুক্তি, এবং ট্রেলিং গণনা করে না
NUL C90-এ, সীমা ছিল 509 অক্ষর; C99-এ এটিকে 4095-এ উন্নীত করা হয়েছিল। C++98 করে
একটি আদর্শ ন্যূনতম সর্বোচ্চ নির্দিষ্ট করে না, তাই আমরা এর মধ্যে ওভারলেন্থ স্ট্রিং নির্ণয় করি না
সি++।
এই বিকল্প দ্বারা উহ্য হয় -ডব্লিউডান্টিক, এবং এর সাথে অক্ষম করা যেতে পারে
-Wno-ওভারলেন্থ-স্ট্রিং.
-Wunsufixed-float-constants (শুধুমাত্র C এবং উদ্দেশ্য-C)
প্রত্যয় নেই এমন যেকোনো ভাসমান ধ্রুবকের জন্য একটি সতর্কতা জারি করুন। যখন ব্যবহার করা হয়
এক্সাথে -Wsystem-headers এটি সিস্টেম হেডার ফাইলে এই ধরনের ধ্রুবক সম্পর্কে সতর্ক করে।
"FLOAT_CONST_DECIMAL64" pragma ব্যবহার করার জন্য কোড প্রস্তুত করার সময় এটি কার্যকর হতে পারে
দশমিক ফ্লোটিং-পয়েন্ট এক্সটেনশন থেকে C99 পর্যন্ত।
-Wno-নির্ধারিত-init (শুধুমাত্র C এবং উদ্দেশ্য-C)
সতর্কবাণী দমন করুন যখন একটি অবস্থানগত ইনিশিয়ালাইজার ব্যবহার করা হয় একটি কাঠামো শুরু করতে
"নির্ধারিত_init" বৈশিষ্ট্য দিয়ে চিহ্নিত করা হয়েছে।
অপশন সমূহ উন্নত ডিবাগ করা আপনার কার্যক্রম or জিসিসি
GCC এর বিভিন্ন বিশেষ বিকল্প রয়েছে যা আপনার প্রোগ্রাম বা GCC ডিবাগ করার জন্য ব্যবহৃত হয়:
-g অপারেটিং সিস্টেমের নেটিভ ফরম্যাটে ডিবাগিং তথ্য তৈরি করুন (স্টাবস, সিওএফএফ,
XCOFF, বা DWARF 2)। GDB এই ডিবাগিং তথ্যের সাথে কাজ করতে পারে।
বেশিরভাগ সিস্টেমে যেগুলি স্ট্যাব ফর্ম্যাট ব্যবহার করে, -g অতিরিক্ত ডিবাগিং তথ্য ব্যবহার করতে সক্ষম করে
যে শুধুমাত্র GDB ব্যবহার করতে পারে; এই অতিরিক্ত তথ্য জিডিবিতে ডিবাগিং কাজকে আরও ভাল করে তোলে কিন্তু
সম্ভবত অন্যান্য ডিবাগার ক্র্যাশ করে বা প্রোগ্রাম পড়তে অস্বীকার করে। যদি তুমি চাও
অতিরিক্ত তথ্য উত্পন্ন কিনা তা নিশ্চিত করার জন্য নিয়ন্ত্রণ, ব্যবহার করুন -gstabs+, -gstabs,
-gxcoff+, -gxcoff, বা -জিভিএমএস (নিচে দেখ).
GCC আপনাকে ব্যবহার করতে দেয় -g সঙ্গে -O. অপ্টিমাইজড কোড দ্বারা নেওয়া শর্টকাট হতে পারে
মাঝে মাঝে আশ্চর্যজনক ফলাফল তৈরি করে: আপনি ঘোষিত কিছু ভেরিয়েবলে উপস্থিত নাও থাকতে পারে
সব নিয়ন্ত্রণের প্রবাহ সংক্ষিপ্তভাবে যেখানে আপনি এটি আশা করেননি সেখানে যেতে পারে; কিছু বিবৃতি হতে পারে
কার্যকর করা হবে না কারণ তারা ধ্রুবক ফলাফল গণনা করে বা তাদের মান ইতিমধ্যেই রয়েছে
হাত; কিছু বিবৃতি বিভিন্ন জায়গায় কার্যকর হতে পারে কারণ সেগুলি সরানো হয়েছে৷
loops
তবুও এটি অপ্টিমাইজড আউটপুট ডিবাগ করা সম্ভব প্রমাণ করে। এটি যুক্তিসঙ্গত করে তোলে
বাগ থাকতে পারে এমন প্রোগ্রামগুলির জন্য অপ্টিমাইজার ব্যবহার করতে।
নিম্নলিখিত বিকল্পগুলি উপযোগী হয় যখন GCC আরও কিছুর জন্য সক্ষমতার সাথে তৈরি করা হয়
একাধিক ডিবাগিং বিন্যাস।
-gsplit-বামন
একটি পৃথক আউটপুট ফাইলে যতটা সম্ভব বামন ডিবাগিং তথ্য আলাদা করুন
এক্সটেনশন .dwo সঙ্গে. এই বিকল্পটি বিল্ড সিস্টেমকে ফাইল লিঙ্ক করা এড়াতে অনুমতি দেয়
ডিবাগ তথ্য সহ। উপযোগী হতে, এই বিকল্পটির জন্য সক্ষম একটি ডিবাগার প্রয়োজন
.dwo ফাইল পড়া।
-ggdb
GDB দ্বারা ব্যবহারের জন্য ডিবাগিং তথ্য তৈরি করুন। এর মানে সবচেয়ে অভিব্যক্তিপূর্ণ ব্যবহার করা
বিন্যাস উপলব্ধ (DWARF 2, স্টাবস, বা নেটিভ ফরম্যাট যদি এর কোনটিই না হয়
সমর্থিত), সম্ভব হলে GDB এক্সটেনশন সহ।
-gpubnames
বামন .debug_pubnames এবং .debug_pubtypes বিভাগ তৈরি করুন।
-গ্গ্নু-পাবনাম
এর জন্য উপযুক্ত একটি বিন্যাসে .debug_pubnames এবং .debug_pubtypes বিভাগ তৈরি করুন
একটি GDB সূচকে রূপান্তর। এই বিকল্পটি শুধুমাত্র একটি লিঙ্কারের সাথে উপযোগী যা করতে পারে
GDB সূচক সংস্করণ 7 তৈরি করুন।
-gstabs
জিডিবি ছাড়াই স্ট্যাব ফরম্যাটে (যদি এটি সমর্থিত হয়) ডিবাগিং তথ্য তৈরি করুন
এক্সটেনশন এটি বেশিরভাগ BSD সিস্টেমে DBX দ্বারা ব্যবহৃত ফর্ম্যাট। MIPS, আলফা এবং
সিস্টেম V রিলিজ 4 সিস্টেম এই বিকল্পটি স্ট্যাব ডিবাগিং আউটপুট তৈরি করে যা নয়
DBX বা SDB দ্বারা বোঝা যায়। সিস্টেম V রিলিজ 4 সিস্টেমে এই বিকল্পটির জন্য GNU প্রয়োজন
সমবেত হও.
-ফেলিমিনেট-অব্যবহৃত-ডিবাগ-প্রতীক
শুধুমাত্র প্রতীকের জন্য স্ট্যাব ফরম্যাটে (যদি এটি সমর্থিত হয়) ডিবাগিং তথ্য তৈরি করুন
যে আসলে ব্যবহার করা হয়.
-femit-শ্রেণী-ডিবাগ-সর্বদা
শুধুমাত্র একটি অবজেক্ট ফাইলে একটি C++ ক্লাসের জন্য ডিবাগিং তথ্য নির্গত করার পরিবর্তে,
ক্লাস ব্যবহার করে সমস্ত অবজেক্ট ফাইলে এটি নির্গত করুন। এই বিকল্পটি শুধুমাত্র সঙ্গে ব্যবহার করা উচিত
ডিবাগার যারা GCC সাধারণত ডিবাগিং তথ্য নির্গত করে তা পরিচালনা করতে অক্ষম
ক্লাসের জন্য কারণ এই বিকল্পটি ব্যবহার করলে ডিবাগিং তথ্যের আকার বৃদ্ধি পায়
দুই একটি গুণনীয়ক হিসাবে অনেক.
-fdebug-টাইপস-বিভাগ
DWARF ভার্সন 4 বা উচ্চতর ব্যবহার করার সময়, DIE গুলিকে তাদের নিজস্ব টাইপ করা যেতে পারে
".debug_types" বিভাগকে ".debug_info" বিভাগের অংশ করার পরিবর্তে। এটা
লিঙ্কার তখন থেকে এগুলিকে আলাদা কমড্যাট বিভাগে রাখা আরও দক্ষ
সদৃশ অপসারণ. কিন্তু সমস্ত DWARF গ্রাহকরা এখনও ".debug_types" বিভাগ সমর্থন করে না
এবং কিছু বস্তুর উপর ".debug_types" ছোট ডিবাগিংয়ের পরিবর্তে বড় উৎপন্ন করে
তথ্য।
-gstabs+
GNU ব্যবহার করে স্ট্যাব ফরম্যাটে (যদি এটি সমর্থিত হয়) ডিবাগিং তথ্য তৈরি করুন
এক্সটেনশনগুলি শুধুমাত্র GNU ডিবাগার (GDB) দ্বারা বোঝা যায়। এই এক্সটেনশন ব্যবহার করা হয়
অন্যান্য ডিবাগার ক্র্যাশ করতে পারে বা প্রোগ্রাম পড়তে অস্বীকার করতে পারে।
-gcoff
COFF ফর্ম্যাটে ডিবাগিং তথ্য তৈরি করুন (যদি এটি সমর্থিত হয়)। এই হল
সিস্টেম ভি রিলিজ 4 এর আগে বেশিরভাগ সিস্টেম ভি সিস্টেমে SDB দ্বারা ব্যবহৃত ফর্ম্যাট।
-gxcoff
XCOFF ফর্ম্যাটে ডিবাগিং তথ্য তৈরি করুন (যদি এটি সমর্থিত হয়)। এই হল
IBM RS/6000 সিস্টেমে DBX ডিবাগার দ্বারা ব্যবহৃত বিন্যাস।
-gxcoff+
GNU ব্যবহার করে XCOFF ফর্ম্যাটে (যদি এটি সমর্থিত হয়) ডিবাগিং তথ্য তৈরি করুন
এক্সটেনশনগুলি শুধুমাত্র GNU ডিবাগার (GDB) দ্বারা বোঝা যায়। এই এক্সটেনশন ব্যবহার করা হয়
অন্যান্য ডিবাগার ক্র্যাশ করতে পারে বা প্রোগ্রাম পড়তে অস্বীকার করতে পারে, এবং হতে পারে
GNU অ্যাসেম্বলার (GAS) ব্যতীত অন্য অ্যাসেম্বলার একটি ত্রুটির সাথে ব্যর্থ হয়।
-gdwarf-সংস্করণ
DWARF ফরম্যাটে ডিবাগিং তথ্য তৈরি করুন (যদি এটি সমর্থিত হয়)। মুল্য
সংস্করণ 2, 3, 4 বা 5 হতে পারে; বেশিরভাগ লক্ষ্যের ডিফল্ট সংস্করণ হল 4. DWARF
সংস্করণ 5 শুধুমাত্র পরীক্ষামূলক.
মনে রাখবেন DWARF সংস্করণ 2 এর সাথে, কিছু পোর্টের প্রয়োজন হয় এবং সর্বদা কিছু অ-বিরোধী ব্যবহার করে
আনওয়াইন্ড টেবিলে DWARF 3 এক্সটেনশন।
সংস্করণ 4-এর জন্য GDB 7.0 এবং প্রয়োজন হতে পারে -fvar-ট্র্যাকিং-অ্যাসাইনমেন্ট সর্বোচ্চ সুবিধার জন্য।
-গ্রেকর্ড-জিসিসি-সুইচ
এই সুইচের ফলে কম্পাইলারকে আহ্বান করতে ব্যবহৃত কমান্ড-লাইন বিকল্পগুলি হতে পারে
DWARF-এ DW_AT_producer অ্যাট্রিবিউটে যুক্ত করার জন্য কোড জেনারেশনকে প্রভাবিত করে
ডিবাগিং তথ্য। বিকল্পগুলি তাদের থেকে আলাদা করে স্পেস দিয়ে সংযুক্ত করা হয়েছে
একে অপরের এবং কম্পাইলার সংস্করণ থেকে। আরো দেখুন -frecord-gcc-সুইচ অন্য জন্য
অবজেক্ট ফাইলে কম্পাইলার অপশন সংরক্ষণ করার উপায়। এটি ডিফল্ট।
-জিনো-রেকর্ড-জিসিসি-সুইচ
DWARF-এ DW_AT_producer অ্যাট্রিবিউটে কমান্ড-লাইন বিকল্পগুলি যুক্ত করার অনুমতি দিন
ডিবাগিং তথ্য।
-gstrict-বামন
এর সাথে নির্বাচিত হওয়ার চেয়ে পরবর্তী DWARF স্ট্যান্ডার্ড সংস্করণের এক্সটেনশনগুলি ব্যবহার করার অনুমতি দিন৷
-gdwarf-সংস্করণ. পরে থেকে অ-বিরোধী DWARF এক্সটেনশন ব্যবহার করে বেশিরভাগ লক্ষ্যে
স্ট্যান্ডার্ড সংস্করণ অনুমোদিত।
-গ্নো-কঠোর-বামন
এর সাথে নির্বাচিত হওয়ার চেয়ে পরবর্তী DWARF স্ট্যান্ডার্ড সংস্করণের এক্সটেনশনগুলি ব্যবহার করার অনুমতি দিন
-gdwarf-সংস্করণ.
-gz[=আদর্শ]
DWARF ফরম্যাটে সংকুচিত ডিবাগ বিভাগ তৈরি করুন, যদি এটি সমর্থিত হয়। যদি আদর্শ is
দেওয়া হয়নি, ডিফল্ট টাইপ অ্যাসেম্বলার এবং লিঙ্কারের ক্ষমতার উপর নির্ভর করে
ব্যবহার করা হয়েছে। আদর্শ একটি হতে পারে না (ডিবাগ বিভাগগুলিকে সংকুচিত করবেন না), zlib (zlib ব্যবহার করুন
ELF GABI বিন্যাসে কম্প্রেশন), অথবা zlib-gnu (প্রথাগত GNU তে zlib কম্প্রেশন ব্যবহার করুন
বিন্যাস)। যদি লিঙ্কার কম্প্রেসড ডিবাগ বিভাগ লেখা সমর্থন না করে, তাহলে বিকল্প
প্রত্যাখ্যাত হয়। অন্যথায়, যদি সমাবেশকারী তাদের সমর্থন না করে, -gz নীরবে হয়
অবজেক্ট ফাইল তৈরি করার সময় উপেক্ষা করা হয়।
-জিভিএমএস
আলফা/ভিএমএস ডিবাগ ফরম্যাটে ডিবাগিং তথ্য তৈরি করুন (যদি এটি সমর্থিত হয়)। এই
আলফা/ভিএমএস সিস্টেমে DEBUG দ্বারা ব্যবহৃত বিন্যাস।
-gস্তর
-ggdbস্তর
-gstabsস্তর
-gcoffস্তর
-gxcoffস্তর
-জিভিএমএসস্তর
ডিবাগিং তথ্যের জন্য অনুরোধ করুন এবং ব্যবহার করুন স্তর কত তথ্য নির্দিষ্ট করতে. দ্য
ডিফল্ট স্তর হল 2।
লেভেল 0 কোনো ডিবাগ তথ্য তৈরি করে না। এইভাবে, -g0 অস্বীকার করে -g.
লেভেল 1 ন্যূনতম তথ্য তৈরি করে, এর কিছু অংশে ব্যাকট্রেস তৈরি করার জন্য যথেষ্ট
প্রোগ্রাম যা আপনি ডিবাগ করার পরিকল্পনা করেন না। এর মধ্যে ফাংশনের বর্ণনা এবং
বহিরাগত ভেরিয়েবল, এবং লাইন নম্বর টেবিল, কিন্তু স্থানীয় ভেরিয়েবল সম্পর্কে কোন তথ্য নেই।
লেভেল 3 অতিরিক্ত তথ্য অন্তর্ভুক্ত করে, যেমন-তে উপস্থিত সমস্ত ম্যাক্রো সংজ্ঞা
কার্যক্রম. আপনি যখন ব্যবহার করেন তখন কিছু ডিবাগার ম্যাক্রো সম্প্রসারণ সমর্থন করে -g3.
-gdwarf-2 একটি সংযুক্ত ডিবাগ স্তর গ্রহণ করে না, কারণ GCC একটি সমর্থন করত
পছন্দ -gdwarf যার অর্থ DWARF এর সংস্করণ 1-এ ডিবাগ তথ্য তৈরি করা
বিন্যাস (যা সংস্করণ 2 থেকে খুব আলাদা), এবং এটি খুব বিভ্রান্তিকর হবে।
সেই ডিবাগ বিন্যাসটি দীর্ঘ অপ্রচলিত, কিন্তু বিকল্পটি এখন পরিবর্তন করা যাবে না। পরিবর্তে ব্যবহার করুন
একটি অতিরিক্ত -gস্তর DWARF এর জন্য ডিবাগ স্তর পরিবর্তন করার বিকল্প।
-gtoggle
ডিবাগ তথ্যের জেনারেশন বন্ধ করুন, যদি এই বিকল্পটি ছেড়ে দিলে এটি তৈরি হয়, বা এটি চালু করুন
অন্যথায় লেভেল 2 এ। কমান্ড লাইনে এই আর্গুমেন্টের অবস্থান নেই
ব্যাপার অন্যান্য সমস্ত বিকল্প প্রক্রিয়া করার পরে এটি কার্যকর হয়, এবং এটি শুধুমাত্র তাই করে
একবার, কতবার দেওয়া হোক না কেন। এই প্রধানত সঙ্গে ব্যবহার করার উদ্দেশ্যে করা হয়
-fcompare-debug.
-fsanitize=ঠিকানা
অ্যাড্রেস স্যানিটাইজার সক্ষম করুন, একটি দ্রুত মেমরি ত্রুটি সনাক্তকারী। মেমরি অ্যাক্সেস নির্দেশাবলী হয়
সীমার বাইরে এবং ব্যবহার-পর-মুক্ত বাগ সনাক্ত করতে instrumented. দেখা
<https://github.com/google/sanitizers/wiki/AddressSanitizer> আরো বিস্তারিত জানার জন্য। দ্য
রান-টাইম আচরণ ব্যবহার করে প্রভাবিত হতে পারে Asan_options পরিবেশ সূচক. কখন
"help=1" এ সেট করা, উপলব্ধ বিকল্পগুলি যন্ত্রের শুরুতে দেখানো হয়
কার্যক্রম. দেখা
<https://github.com/google/sanitizers/wiki/AddressSanitizerFlags#run-time-flags> a এর জন্য
সমর্থিত বিকল্পগুলির তালিকা।
-fsanitize=কারনেল-ঠিকানা
লিনাক্স কার্নেলের জন্য অ্যাড্রেস স্যানিটাইজার সক্ষম করুন। দেখাhttps://github.com/google/kasan/wiki>
আরো বিস্তারিত জানার জন্য.
-fsanitize=থ্রেড
থ্রেড স্যানিটাইজার সক্ষম করুন, একটি দ্রুত ডেটা রেস ডিটেক্টর। মেমরি অ্যাক্সেস নির্দেশাবলী হয়
ডেটা রেস বাগ সনাক্ত করতে যন্ত্রযুক্ত। দেখা
<https://github.com/google/sanitizers/wiki#threadsanitizer> আরো বিস্তারিত জানার জন্য। দৌড়-
সময় আচরণ ব্যবহার করে প্রভাবিত করা যেতে পারে Tsan_options পরিবেশ সূচক; দেখা
<https://github.com/google/sanitizers/wiki/ThreadSanitizerFlags> একটি তালিকা জন্য
সমর্থিত বিকল্প।
-fsanitize=লিক
লিক স্যানিটাইজার সক্ষম করুন, একটি মেমরি লিক ডিটেক্টর। এই বিকল্পটি শুধুমাত্র লিঙ্ক করার জন্য গুরুত্বপূর্ণ
এক্সিকিউটেবল এবং যদি না হয় -fsanitize=ঠিকানা না -fsanitize=থ্রেড ব্যবহৃত হয়. তার মধ্যে
ক্ষেত্রে এক্সিকিউটেবল একটি লাইব্রেরির সাথে লিঙ্ক করা হয় যা "malloc" এবং অন্যান্যকে ওভাররাইড করে
বরাদ্দকারী ফাংশন। দেখা
<https://github.com/google/sanitizers/wiki/AddressSanitizerLeakSanitizer> আরো জন্য
বিস্তারিত রান-টাইম আচরণ ব্যবহার করে প্রভাবিত হতে পারে Lsan_options পরিবেশ
পরিবর্তনশীল।
-fsanitize=অনির্ধারিত
Undefined BehaviorSanitizer সক্ষম করুন, একটি দ্রুত অনির্ধারিত আচরণ সনাক্তকারী। বিভিন্ন
রানটাইমে অনির্ধারিত আচরণ শনাক্ত করার জন্য গণনা করা হয়। কারেন্ট
সাব অপশন হল:
-fsanitize = শিফট
এই বিকল্পটি একটি শিফট অপারেশনের ফলাফল নয় তা পরীক্ষা করতে সক্ষম করে
অনির্ধারিত মনে রাখবেন যে ঠিক কি অনির্ধারিত হিসাবে বিবেচিত হয় তা সামান্য ভিন্ন
C এবং C++ এর মধ্যে, সেইসাথে ISO C90 এবং C99, ইত্যাদির মধ্যে।
-fsanitize=পূর্ণসংখ্যা-বিভাজ্য-শূন্য
শূন্য দ্বারা পূর্ণসংখ্যা বিভাজনের পাশাপাশি "INT_MIN / -1" বিভাগ সনাক্ত করুন।
-fsanitize=অপ্রাপ্ত
এই বিকল্পের সাহায্যে, কম্পাইলার "__builtin_unreachable" কলটিকে a এ পরিণত করে
এর পরিবর্তে ডায়াগনস্টিক মেসেজ কল করুন। "__builtin_unreachable" কলে পৌঁছানোর সময়,
আচরণ অনির্ধারিত।
-fsanitize=vla-বাউন্ড
এই বিকল্পটি কম্পাইলারকে একটি পরিবর্তনশীল দৈর্ঘ্যের আকার পরীক্ষা করার নির্দেশ দেয়
অ্যারে ইতিবাচক।
-fsanitize = নাল
এই বিকল্পটি পয়েন্টার চেকিং সক্ষম করে। বিশেষ করে, সঙ্গে নির্মিত অ্যাপ্লিকেশন
এই বিকল্পটি চালু হলে এটি একটি ত্রুটির বার্তা জারি করবে যখন এটি a dereference করার চেষ্টা করবে
NULL পয়েন্টার, অথবা যদি একটি রেফারেন্স (সম্ভবত একটি rvalue রেফারেন্স) একটি NULL এর সাথে আবদ্ধ হয়
পয়েন্টার, অথবা যদি একটি পদ্ধতি একটি NULL পয়েন্টার দ্বারা নির্দেশিত একটি বস্তুর উপর আহ্বান করা হয়।
-fsanitize=রিটার্ন
এই বিকল্পটি রিটার্ন স্টেটমেন্ট চেকিং সক্ষম করে। এই বিকল্প দিয়ে নির্মিত প্রোগ্রাম
একটি অ-অকার্যকর ফাংশন শেষ হলে একটি ত্রুটি বার্তা ইস্যু করবে
আসলে একটি মান ফেরত ছাড়াই পৌঁছেছে। এই বিকল্পটি শুধুমাত্র C++ এ কাজ করে।
-fsanitize=স্বাক্ষরিত-পূর্ণসংখ্যা-ওভারফ্লো
এই বিকল্পটি স্বাক্ষরিত পূর্ণসংখ্যা ওভারফ্লো চেকিং সক্ষম করে। আমরা যে ফলাফল পরীক্ষা
"+", "*", এবং unary এবং binary "-" উভয়ই স্বাক্ষরিত হয় না
পাটিগণিত দ্রষ্টব্য, পূর্ণসংখ্যা প্রচারের নিয়মগুলি অবশ্যই বিবেচনায় নেওয়া উচিত। এটাই,
নিম্নলিখিত একটি ওভারফ্লো নয়:
স্বাক্ষরিত char a = SCHAR_MAX;
a ++;
-fsanitize=সীমানা
এই বিকল্পটি অ্যারে বাউন্ডের ইনস্ট্রুমেন্টেশন সক্ষম করে। সীমার বাইরে বিভিন্ন
অ্যাক্সেস সনাক্ত করা হয়। নমনীয় অ্যারে সদস্য, নমনীয় অ্যারের সদস্য-সদৃশ অ্যারে,
এবং স্ট্যাটিক স্টোরেজ সহ ভেরিয়েবলের ইনিশিয়ালাইজারগুলিকে যন্ত্রযুক্ত করা হয় না।
-fsanitize=সারিবদ্ধকরণ
এই বিকল্পটি পয়েন্টারগুলির প্রান্তিককরণ পরীক্ষা করতে সক্ষম করে যখন সেগুলি ডিরেফারেন্স করা হয়,
অথবা যখন একটি রেফারেন্স অপর্যাপ্তভাবে সারিবদ্ধ লক্ষ্যে আবদ্ধ হয়, বা যখন একটি পদ্ধতি বা
কনস্ট্রাক্টর অপর্যাপ্তভাবে সারিবদ্ধ বস্তুতে আহ্বান করা হয়।
-fsanitize=বস্তুর আকার
এই বিকল্পটি ব্যবহার করে মেমরি রেফারেন্সের উপকরণ তৈরি করতে সক্ষম করে
"__builtin_object_size" ফাংশন। বিভিন্ন সীমার বাইরে পয়েন্টার অ্যাক্সেস হয়
সনাক্ত.
-fsanitize=float-divide-by-zero
শূন্য দ্বারা ভাসমান-বিন্দু বিভাজন সনাক্ত করুন। অন্যান্য অনুরূপ বিকল্প থেকে ভিন্ন,
-fsanitize=float-divide-by-zero দ্বারা সক্রিয় করা হয় না -fsanitize=অনির্ধারিত, থেকে
শূন্য দ্বারা ভাসমান-বিন্দু বিভাজন অসীমতা পাওয়ার একটি বৈধ উপায় হতে পারে
এবং NaNs।
-fsanitize=float-cast-overflow
এই বিকল্পটি ফ্লোটিং-পয়েন্ট টাইপকে পূর্ণসংখ্যা রূপান্তর পরীক্ষা করতে সক্ষম করে। আমরা চেক করি
যে রূপান্তরের ফলাফল উপচে পড়ে না। অন্যান্য অনুরূপ অসদৃশ
বিকল্প, -fsanitize=float-cast-overflow দ্বারা সক্রিয় করা হয় না -fsanitize=অনির্ধারিত.
এই বিকল্পটি "FE_INVALID" সক্রিয় ব্যতিক্রমগুলির সাথে ভাল কাজ করে না৷
-fsanitize=nonnull-অ্যাট্রিবিউট
এই বিকল্পটি কলের ইন্সট্রুমেন্টেশন সক্ষম করে, শূন্য মানগুলি নয় কিনা তা পরীক্ষা করে
"nonnull" ফাংশন দ্বারা একটি নন-নাল মান প্রয়োজন হিসাবে চিহ্নিত আর্গুমেন্টে পাস করা হয়েছে
বৈশিষ্ট্যাবলী।
-fsanitize=returns-nonnull-attribute
এই বিকল্পটি চিহ্নিত ফাংশনে রিটার্ন স্টেটমেন্টের ইনস্ট্রুমেন্টেশন সক্ষম করে
"returns_nonnull" ফাংশন বৈশিষ্ট্য, যেমন থেকে নাল মান ফেরত সনাক্ত করতে
ফাংশন।
-fsanitize=bool
এই বিকল্পটি বুল থেকে লোডের উপকরণ তৈরি করতে সক্ষম করে। যদি 0/1 ব্যতীত অন্য একটি মান
লোড করা হয়, একটি রান-টাইম ত্রুটি জারি করা হয়।
-fsanitize=enum
এই বিকল্পটি একটি enum টাইপ থেকে লোডের ইন্সট্রুমেন্টেশন সক্ষম করে। যদি একটি মান
enum টাইপ লোড করা হলে মান পরিসীমার বাইরে, একটি রান-টাইম ত্রুটি
জারি
-fsanitize=vptr
এই বিকল্পটি C++ সদস্য ফাংশন কল, সদস্য অ্যাক্সেসের উপকরণ সক্ষম করে
এবং পয়েন্টার থেকে বেস এবং প্রাপ্ত ক্লাসের মধ্যে কিছু রূপান্তর, যাচাই করার জন্য
উল্লেখিত বস্তুর সঠিক গতিশীল প্রকার আছে।
যদিও -ftrapv সাইনড ওভারফ্লো নির্গত হওয়ার জন্য ফাঁদ সৃষ্টি করে, -fsanitize=অনির্ধারিত
একটি ডায়াগনস্টিক বার্তা দেয়। এটি বর্তমানে শুধুমাত্র ভাষার C পরিবারের জন্য কাজ করে।
-fno-স্যানিটাইজ=সমস্ত
এই বিকল্পটি পূর্বে সক্ষম সমস্ত স্যানিটাইজার নিষ্ক্রিয় করে। -fsanitize=সমস্ত এটি না
অনুমোদিত, কারণ কিছু স্যানিটাইজার একসাথে ব্যবহার করা যাবে না।
-ফাসান-ছায়া-অফসেট=সংখ্যা
এই বিকল্পটি জিসিসিকে অ্যাড্রেস স্যানিটাইজার চেকগুলিতে কাস্টম শ্যাডো অফসেট ব্যবহার করতে বাধ্য করে। এটাই
কার্নেলের বিভিন্ন শ্যাডো মেমরি লেআউট নিয়ে পরীক্ষা করার জন্য দরকারী
অ্যাড্রেস স্যানিটাইজার।
-fsanitize-পুনরুদ্ধার[=opts]
-fsanitize-recover= কমা-তে উল্লিখিত স্যানিটাইজারগুলির জন্য ত্রুটি পুনরুদ্ধার মোড নিয়ন্ত্রণ করে-
পৃথক তালিকা opts. একটি স্যানিটাইজার উপাদানের জন্য এই বিকল্পটি সক্রিয় করার ফলে এটি ঘটে
প্রোগ্রাম চালানো চালিয়ে যাওয়ার চেষ্টা করুন যেন কোন ত্রুটি ঘটেনি। এর মানে একাধিক
রানটাইম ত্রুটি রিপোর্ট করা যেতে পারে একটি একক প্রোগ্রাম রান, এবং প্রস্থান কোড
প্রোগ্রাম সফলতা নির্দেশ করতে পারে এমনকি যখন ত্রুটি রিপোর্ট করা হয়েছে. দ্য
-fno-স্যানিটাইজ-পুনরুদ্ধার= এই আচরণটি পরিবর্তন করতে বিকল্পটি ব্যবহার করা যেতে পারে: শুধুমাত্র প্রথমটি
সনাক্ত করা ত্রুটি রিপোর্ট করা হয় এবং প্রোগ্রাম তারপর একটি নন-জিরো এক্সিট কোড দিয়ে প্রস্থান করে।
বর্তমানে এই বৈশিষ্ট্য শুধুমাত্র জন্য কাজ করে -fsanitize=অনির্ধারিত (এবং এর সাব অপশন ব্যতীত
উন্নত -fsanitize=অপ্রাপ্ত এবং -fsanitize=রিটার্ন), -fsanitize=float-cast-overflow,
-fsanitize=float-divide-by-zero এবং -fsanitize=কারনেল-ঠিকানা. এই স্যানিটাইজারগুলির জন্য
ত্রুটি পুনরুদ্ধার ডিফল্টরূপে চালু করা হয়. -fsanitize-recover=সমস্ত এবং
-fno-স্যানিটাইজ-পুনরুদ্ধার=সমস্ত এছাড়াও গৃহীত হয়, পূর্বের সকলের জন্য পুনরুদ্ধার সক্ষম করে
স্যানিটাইজার যে এটি সমর্থন করে, পরেরটি সমস্ত স্যানিটাইজারগুলির জন্য পুনরুদ্ধার অক্ষম করে
এটি সমর্থন
স্পষ্ট ছাড়া সিনট্যাক্স opts পরামিতি বঞ্চিত। এর সমতুল্য
-fsanitize-recover=অনির্ধারিত,ফ্লোট-কাস্ট-ওভারফ্লো,ফ্লোট-ডিভাইড-বাই-জিরো
একভাবে -fno-স্যানিটাইজ-পুনরুদ্ধার সমতুল্য
-fno-স্যানিটাইজ-পুনরুদ্ধার=অনির্ধারিত,ফ্লোট-কাস্ট-ওভারফ্লো,ফ্লোট-ডিভাইড-বাই-জিরো
-fsanitize-অনির্ধারিত-ফাঁদ-অন-ত্রুটি
সার্জারির -fsanitize-অনির্ধারিত-ফাঁদ-অন-ত্রুটি অপশন কম্পাইলারকে রিপোর্ট করার নির্দেশ দেয়
একটি "লিবুবসান" লাইব্রেরি রুটিনের পরিবর্তে "__builtin_trap" ব্যবহার করে অনির্ধারিত আচরণ।
এর সুবিধা হল "লিবুবসান" লাইব্রেরির প্রয়োজন নেই এবং লিঙ্ক করা নেই
মধ্যে, তাই এটি ফ্রিস্ট্যান্ডিং পরিবেশেও ব্যবহারযোগ্য।
-fcheck-পয়েন্টার-বাউন্ডস
পয়েন্টার বাউন্ডস চেকার ইনস্ট্রুমেন্টেশন সক্ষম করুন। প্রতিটি মেমরি রেফারেন্স instrumented হয়
এর সাথে সম্পর্কিত সীমার বিরুদ্ধে মেমরি অ্যাক্সেসের জন্য ব্যবহৃত পয়েন্টারের চেক সহ
পয়েন্টার
বর্তমানে শুধুমাত্র Intel MPX এর জন্য একটি বাস্তবায়ন উপলব্ধ রয়েছে, এইভাবে x86 টার্গেট এবং
-mmpx এই বৈশিষ্ট্য সক্রিয় করতে প্রয়োজন. MPX-ভিত্তিক ইন্সট্রুমেন্টেশনের প্রয়োজন a
হার্ডওয়্যারে MPX সক্ষম করতে এবং সীমা লঙ্ঘন সংকেত পরিচালনা করতে রানটাইম লাইব্রেরি। দ্বারা
ডিফল্ট যখন -fcheck-পয়েন্টার-বাউন্ডস এবং -mmpx অপশন একটি প্রোগ্রাম লিঙ্ক করতে ব্যবহার করা হয়,
জিসিসি ড্রাইভারের বিরুদ্ধে লিংক libmpx রানটাইম লাইব্রেরি এবং libmpxwrappers লাইব্রেরি এটা
এছাড়াও '-z bndplt' একটি লিঙ্কারকে পাস করে যদি এটি এই বিকল্পটিকে সমর্থন করে (যা চেক করা হয়)
libmpx কনফিগারেশনে)। নোট করুন যে লিঙ্কারের পুরানো সংস্করণ বিকল্প উপেক্ষা করতে পারে। সোনা
লিঙ্কার '-z bndplt' বিকল্প সমর্থন করে না। সমস্ত লিঙ্কারে '-z bndplt' সমর্থন ছাড়াই
ডায়নামিক লাইব্রেরিগুলিতে কলগুলি সামগ্রিক সুরক্ষা স্তর হ্রাস করে পাস করা সীমা হারায়। এটা
'-z bndplt' সমর্থন সহ লিঙ্কার ব্যবহার করার জন্য অত্যন্ত সুপারিশ করা হয়। ক্ষেত্রে যেমন লিঙ্কার না
উপলব্ধ এটা সবসময় ব্যবহার করার পরামর্শ দেওয়া হয় স্ট্যাটিক-libmpxwrappers ভাল সুরক্ষার জন্য
স্তর বা ব্যবহার - স্থির ডায়নামিক লাইব্রেরিতে বহিরাগত কল সম্পূর্ণরূপে এড়াতে। MPX-
ভিত্তিক ইন্সট্রুমেন্টেশন ডিবাগিংয়ের জন্য ব্যবহার করা যেতে পারে এবং উৎপাদনেও অন্তর্ভুক্ত হতে পারে
প্রোগ্রাম নিরাপত্তা বৃদ্ধি কোড. ব্যবহারের উপর নির্ভর করে, আপনার আলাদা হতে পারে
রানটাইম লাইব্রেরির জন্য প্রয়োজনীয়তা। MPX রানটাইম লাইব্রেরির বর্তমান সংস্করণ
একটি ডিবাগিং টুল হিসাবে ব্যবহারের জন্য আরো ভিত্তিক। MPX রানটাইম লাইব্রেরি ব্যবহার বোঝায়
-এলপিথ্রেড। আরো দেখুন -static-libmpx. রানটাইম লাইব্রেরি আচরণ প্রভাবিত হতে পারে
বিভিন্ন ব্যবহার CHKP_RT_* পরিবেশ ভেরিয়েবল। দেখা
<https://gcc.gnu.org/wiki/Intel%20MPX%20support%20in%20the%20GCC%20compiler> আরো জন্য
বিবরণ।
উত্পন্ন যন্ত্র বিভিন্ন দ্বারা নিয়ন্ত্রিত হতে পারে -fchkp-* বিকল্প এবং দ্বারা
"bnd_variable_size" গঠন ক্ষেত্রের বৈশিষ্ট্য এবং "bnd_legacy", এবং "bnd_instrument"
ফাংশন বৈশিষ্ট্য GCC নিয়ন্ত্রণের জন্য বেশ কিছু বিল্ট-ইন ফাংশনও প্রদান করে
পয়েন্টার সীমা পরীক্ষক.
-fchkp-চেক-অসম্পূর্ণ-টাইপ
অসম্পূর্ণ ধরনের ভেরিয়েবলের জন্য পয়েন্টার বাউন্ড চেক তৈরি করুন। দ্বারা সক্রিয়
ডিফল্ট.
-fchkp-সংকীর্ণ-সীমানা
পয়েন্টার সীমানা পরীক্ষক দ্বারা অবজেক্ট ক্ষেত্রগুলিতে পয়েন্টারগুলির জন্য ব্যবহৃত সীমা নিয়ন্ত্রণ করে। যদি
সংকীর্ণ সক্ষম করা হয় তারপর ক্ষেত্রের সীমানা ব্যবহার করা হয়। অন্যথায় অবজেক্ট বাউন্ড ব্যবহার করা হয়।
আরো দেখুন -fchkp-সংকীর্ণ-থেকে-অভ্যন্তরীণ-অ্যারে এবং -fchkp-প্রথম-ক্ষেত্রের-নিজের-সীমা আছে.
ডিফল্টরূপে সক্ষম করা হয়েছে।
-fchkp-প্রথম-ক্ষেত্রের-নিজের-সীমা আছে
পয়েন্টার বাউন্ডস পরীক্ষককে প্রথমটির ঠিকানার জন্য সংকীর্ণ সীমানা ব্যবহার করতে বাধ্য করে
কাঠামোর মধ্যে ক্ষেত্র। ডিফল্টরূপে প্রথম ক্ষেত্রের একটি পয়েন্টারের একই সীমা থাকে
পুরো কাঠামোর একটি নির্দেশক হিসাবে।
-fchkp-সংকীর্ণ-থেকে-অভ্যন্তরীণ-অ্যারে
পয়েন্টার বাউন্ডস চেকারকে নেস্টেডের ক্ষেত্রে সবচেয়ে ভিতরের অ্যারেগুলির সীমানা ব্যবহার করতে বাধ্য করে
স্ট্যাটিক অ্যারে অ্যাক্সেস। ডিফল্টরূপে এই বিকল্পটি নিষ্ক্রিয় এবং বাইরের সীমাবদ্ধ
অ্যারে ব্যবহার করা হয়।
-fchkp-অপ্টিমাইজ করুন
পয়েন্টার বাউন্ড চেকার অপ্টিমাইজেশান সক্ষম করে৷ অপ্টিমাইজেশানে ডিফল্টরূপে সক্রিয়
মাত্রা -O, -ও2, -ও3.
-fchkp-ব্যবহার-দ্রুত-স্ট্রিং-ফাংশন
পয়েন্টার দ্বারা স্ট্রিং ফাংশনগুলির *_nobnd সংস্করণের ব্যবহার সক্ষম করে (সীমা অনুলিপি করা নয়)
সীমা পরীক্ষক। ডিফল্টরূপে নিষ্ক্রিয়.
-fchkp-use-nochk-স্ট্রিং-ফাংশন
পয়েন্টার দ্বারা স্ট্রিং ফাংশনের *_nochk সংস্করণের (সীমা পরীক্ষা না করা) ব্যবহার সক্ষম করে
সীমা পরীক্ষক। ডিফল্টরূপে নিষ্ক্রিয়.
-fchkp-ব্যবহার-স্থির-সীমা
পয়েন্টার বাউন্ড চেকারকে স্ট্যাটিক বাউন্ড ধারণ করে স্ট্যাটিক বাউন্ড তৈরি করতে অনুমতি দিন
ভেরিয়েবল ডিফল্টরূপে সক্রিয়.
-fchkp-use-static-const-সীমা
ধ্রুবক সীমার জন্য তাদের প্রতিটি তৈরি করার পরিবর্তে স্ট্যাটিকালি-ইনিশিয়ালাইজ করা সীমানা ব্যবহার করুন
সময় তাদের প্রয়োজন হয়. ডিফল্টরূপে সক্রিয় যখন -fchkp-ব্যবহার-স্থির-সীমা সক্রিয় করা হয়.
-fchkp-treat-zero-dynamic-size- as-infinite
এই বিকল্পের সাহায্যে, অসম্পূর্ণ প্রকারের বস্তু যার গতিশীলভাবে প্রাপ্ত আকার শূন্য
পয়েন্টার বাউন্ডস চেকারের পরিবর্তে অসীম আকারের হিসাবে বিবেচনা করা হয়। এই বিকল্প
সহায়ক হতে পারে যদি একটি প্রোগ্রাম একটি লাইব্রেরির সাথে লিঙ্ক করা হয় যে কারো জন্য আকারের তথ্য অনুপস্থিত থাকে
প্রতীক ডিফল্টরূপে নিষ্ক্রিয়.
-fchkp-চেক-পড়ুন
পয়েন্টার বাউন্ডস চেকারকে নির্দেশ দেয় মেমরিতে সমস্ত পঠিত অ্যাক্সেসের জন্য চেক তৈরি করতে।
ডিফল্টরূপে সক্ষম করা হয়েছে।
-fchkp-চেক-লিখুন
পয়েন্টার বাউন্ডস চেকারকে নির্দেশ দেয় মেমরিতে সমস্ত লেখার অ্যাক্সেসের জন্য চেক তৈরি করতে।
ডিফল্টরূপে সক্ষম করা হয়েছে।
-fchkp-স্টোর-বাউন্ডস
পয়েন্টার লেখার জন্য সীমানা স্টোর তৈরি করতে পয়েন্টার বাউন্ড চেকারকে নির্দেশ দেয়।
ডিফল্টরূপে সক্ষম করা হয়েছে।
-fchkp-ইনস্ট্রুমেন্ট-কল
পয়েন্টার বাউন্ড চেকারকে নির্দেশ দেয় কলে পয়েন্টার বাউন্ড পাস করতে। ডিফল্টরূপে সক্রিয়.
-fchkp-যন্ত্র-চিহ্নিত-শুধু
পয়েন্টার বাউন্ডস পরীক্ষককে শুধুমাত্র চিহ্ন দিয়ে চিহ্নিত ফাংশনগুলিকে ইন্সট্রুমেন্ট করার নির্দেশ দেয়৷
"bnd_instrument" বৈশিষ্ট্য। ডিফল্টরূপে নিষ্ক্রিয়.
-fchkp-use-wrappers
পয়েন্টার বাউন্ডস পরীক্ষককে বিল্ট-ইন ফাংশনে কল প্রতিস্থাপন করার অনুমতি দেয়
মোড়ক ফাংশন. কখন -fchkp-use-wrappers একটি প্রোগ্রাম লিঙ্ক করতে ব্যবহৃত হয়, GCC ড্রাইভার
স্বয়ংক্রিয়ভাবে বিরুদ্ধে লিঙ্ক libmpxwrappers। আরো দেখুন স্ট্যাটিক-libmpxwrappers. সক্রিয়
গতানুগতিক.
-fdump-ফাইনাল-insns[=ফাইল]
চূড়ান্ত অভ্যন্তরীণ প্রতিনিধিত্ব (RTL) ডাম্প করুন ফাইল. যদি ঐচ্ছিক যুক্তি হয়
বাদ দেওয়া হয়েছে (বা যদি ফাইল হল "."), ডাম্প ফাইলের নাম সংযোজন দ্বারা নির্ধারিত হয়
কম্পাইলেশন আউটপুট ফাইলের নাম ".gkd"।
-fcompare-debug[=opts]
যদি কম্পাইলেশনের সময় কোনো ত্রুটি না ঘটে, তাহলে কম্পাইলারটি দ্বিতীয়বার চালান, যোগ করুন opts এবং
-fcompare-ডিবাগ-সেকেন্ড দ্বিতীয় সংকলন পাস আর্গুমেন্ট. ডাম্প
উভয় সংকলনে চূড়ান্ত অভ্যন্তরীণ উপস্থাপনা, এবং যদি তারা ভিন্ন হয় তবে একটি ত্রুটি মুদ্রণ করুন।
যদি সমান চিহ্ন বাদ দেওয়া হয়, ডিফল্ট -gtoggle ব্যবহৃত হয়.
পরিবেশ পরিবর্তনশীল Gcc_compare_debug, যদি সংজ্ঞায়িত করা হয়, অ-খালি এবং অশূন্য,
অন্তর্নিহিতভাবে সক্ষম করে -fcompare-debug। যদি Gcc_compare_debug একটি স্ট্রিং সংজ্ঞায়িত করা হয়
একটি ড্যাশ দিয়ে শুরু করে, তারপর এটি ব্যবহার করা হয় opts, অন্যথায় ডিফল্ট -gtoggle is
ব্যবহার করা হয়েছে।
-FCOMPARE-DEBUG =, সমান চিহ্ন সহ কিন্তু ছাড়া opts, এর সমতুল্য
-fno-তুলনা-ডিবাগ, যা চূড়ান্ত প্রতিনিধিত্বের ডাম্পিং নিষ্ক্রিয় করে এবং
দ্বিতীয় সংকলন, এমনকি প্রতিরোধ Gcc_compare_debug কার্যকর হওয়া থেকে।
সময় সম্পূর্ণ কভারেজ যাচাই করতে -fcompare-debug পরীক্ষা, সেট Gcc_compare_debug বলতে
-fcompare-debug-not-overred, যা GCC যেকোন বাস্তবে একটি অবৈধ বিকল্প হিসাবে প্রত্যাখ্যান করে
সংকলন (প্রিপ্রসেসিং, সমাবেশ বা লিঙ্ক করার পরিবর্তে)। শুধু একটি সতর্কতা পেতে,
বিন্যাস Gcc_compare_debug থেকে -w%n-fcompare-ডিবাগ না ওভাররাইড করা করব.
-fcompare-ডিবাগ-সেকেন্ড
অনুরোধ করা দ্বিতীয় কম্পাইলেশনের জন্য এই বিকল্পটি কম্পাইলারকে নিহিতভাবে পাঠানো হয়েছে
by -fcompare-debug, সতর্কতা নীরব করার বিকল্প সহ, এবং অন্যান্য বিকল্পগুলি বাদ দেওয়া
এটি ফাইল বা স্ট্যান্ডার্ড আউটপুটে পার্শ্ব-প্রতিক্রিয়া কম্পাইলার আউটপুট সৃষ্টি করবে।
ডাম্প ফাইল এবং সংরক্ষিত অস্থায়ী ফাইলের নাম পরিবর্তন করা হয়েছে যাতে ".gk" থাকে
দ্বিতীয় সংকলনের সময় অতিরিক্ত এক্সটেনশন, সেগুলি ওভাররাইট করা এড়াতে
প্রথম দ্বারা উত্পন্ন.
যখন এই বিকল্পটি কম্পাইলার ড্রাইভারের কাছে প্রেরণ করা হয়, তখন এটি ঘটায় প্রথম থেকে সংকলন
বাদ দিন, যা কম্পাইলারটিকে সঠিকভাবে ডিবাগ করা ছাড়া অন্য কিছুর জন্য এটিকে উপযোগী করে তোলে।
-ফিলিমিনেট-ডওয়ার্ফ 2-ডুপস
ডুপ্লিকেট করা তথ্য মুছে দিয়ে DWARF 2 ডিবাগিং তথ্য সংকুচিত করুন
প্রতিটি প্রতীক। DWARF 2 ডিবাগিং তৈরি করার সময় এই বিকল্পটি শুধুমাত্র অর্থপূর্ণ হয়
সঙ্গে তথ্য -gdwarf-2.
-ফেমিট-স্ট্রাক্ট-ডিবাগ-বেসিওলি
struct-এর মত ধরনের জন্য ডিবাগ তথ্য নির্গত শুধুমাত্র যখন বেস নাম
কম্পাইলেশন সোর্স ফাইল ফাইলের বেস নামের সাথে মেলে যেখানে স্ট্রাকটটি সংজ্ঞায়িত করা হয়েছে।
এই বিকল্পটি যথেষ্ট পরিমাণে ডিবাগিং তথ্যের আকার হ্রাস করে, কিন্তু এ
ডিবাগারের টাইপ তথ্যের উল্লেখযোগ্য সম্ভাব্য ক্ষতি। দেখা
-ফেমিট-স্ট্রাক্ট-ডিবাগ-হ্রাস কম আক্রমনাত্মক বিকল্পের জন্য। দেখা
-femit-struct-ডিবাগ-বিশদ আরো বিস্তারিত নিয়ন্ত্রণের জন্য।
এই বিকল্পটি শুধুমাত্র DWARF 2 এর সাথে কাজ করে।
-ফেমিট-স্ট্রাক্ট-ডিবাগ-হ্রাস
struct-এর মত ধরনের জন্য ডিবাগ তথ্য নির্গত শুধুমাত্র যখন বেস নাম
কম্পাইলেশন সোর্স ফাইলটি ফাইলের বেস নামের সাথে মেলে যেখানে টাইপটি সংজ্ঞায়িত করা হয়েছে,
যদি না struct একটি টেমপ্লেট বা একটি সিস্টেম হেডারে সংজ্ঞায়িত করা হয়।
এই বিকল্পটি উল্লেখযোগ্যভাবে ডিবাগিং তথ্যের আকার হ্রাস করে, কিছু সহ
ডিবাগারের টাইপ তথ্যের সম্ভাব্য ক্ষতি। দেখা -ফেমিট-স্ট্রাক্ট-ডিবাগ-বেসিওলি
আরও আক্রমণাত্মক বিকল্পের জন্য। দেখা -femit-struct-ডিবাগ-বিশদ আরও বিশদ জন্য
নিয়ন্ত্রণ।
এই বিকল্পটি শুধুমাত্র DWARF 2 এর সাথে কাজ করে।
-femit-struct-ডিবাগ-বিশদ[=বিশেষ তালিকা]
স্ট্রাকট-এর মতো প্রকারগুলি নির্দিষ্ট করুন যার জন্য কম্পাইলার ডিবাগ তথ্য তৈরি করে। দ্য
উদ্দেশ্য হল বিভিন্ন অবজেক্ট ফাইলের মধ্যে ডুপ্লিকেট স্ট্রাকট ডিবাগ তথ্য কমানো
একই প্রোগ্রামের মধ্যে।
এই বিকল্পটি একটি বিস্তারিত সংস্করণ -ফেমিট-স্ট্রাক্ট-ডিবাগ-হ্রাস এবং
-ফেমিট-স্ট্রাক্ট-ডিবাগ-বেসিওলি, যা বেশিরভাগ প্রয়োজনের জন্য পরিবেশন করে।
একটি স্পেসিফিকেশনের সিনট্যাক্স আছে[হল:|ইন্ড:][আদেশ:|বংশ:](কোন|sys|ভিত্তি|না)
ঐচ্ছিক প্রথম শব্দটি স্পেসিফিকেশনকে স্ট্রাকটে সীমাবদ্ধ করে যা সরাসরি ব্যবহার করা হয়
(হল:) বা পরোক্ষভাবে ব্যবহার করা হয় (ইন্ড:) একটি struct টাইপ সরাসরি ব্যবহার করা হয় যখন এটি টাইপ হয়
একটি পরিবর্তনশীল, সদস্য. অপ্রত্যক্ষ ব্যবহারগুলি নির্দেশকের মাধ্যমে স্ট্রাকটগুলির জন্য উদ্ভূত হয়। এটাই,
যখন একটি অসম্পূর্ণ কাঠামোর ব্যবহার বৈধ হয়, তখন ব্যবহারটি পরোক্ষ। একটি উদাহরণ হল struct হয়
এক সরাসরি struct হয় দুই * পরোক্ষ.
ঐচ্ছিক দ্বিতীয় শব্দটি সাধারণ কাঠামোর স্পেসিফিকেশনকে সীমাবদ্ধ করে (আদেশ:) বা
সাধারণ কাঠামো (বংশ:) জেনেরিক স্ট্রাকটগুলি ব্যাখ্যা করার জন্য কিছুটা জটিল। C++ এর জন্য,
এগুলি হল টেমপ্লেট ক্লাসের অ-স্পষ্ট বিশেষীকরণ, বা নন-টেমপ্লেট ক্লাস
উপরের মধ্যে। অন্যান্য প্রোগ্রামিং ভাষার জেনেরিক আছে, কিন্তু
-femit-struct-ডিবাগ-বিশদ এখনও তাদের বাস্তবায়ন করে না।
তৃতীয় শব্দটি সেই স্ট্রাকটের জন্য সোর্স ফাইলগুলি নির্দিষ্ট করে যার জন্য কম্পাইলার
ডিবাগ তথ্য নির্গত করা উচিত। মান না এবং কোন স্বাভাবিক অর্থ আছে। দ্য
মূল্য ভিত্তি মানে ফাইলের নামের ভিত্তি যেখানে টাইপ ডিক্লারেশন
প্রদর্শিত প্রধান সংকলন ফাইলের নামের বেসের সাথে মেলে। প্রস্তুতিতে,
এর মানে হল যে কম্পাইল করার সময় foo.c, প্রকারের জন্য ডিবাগ তথ্য তৈরি করা হয়
সেই ফাইলে ঘোষণা করা হয়েছে এবং foo.h, কিন্তু অন্য হেডার ফাইল নয়। মূল্য sys মানে
এই ধরনের সন্তোষজনক ভিত্তি অথবা সিস্টেম বা কম্পাইলার হেডারে ঘোষিত।
আপনার অ্যাপ্লিকেশনের জন্য সেরা সেটিংস নির্ধারণ করতে আপনাকে পরীক্ষা করার প্রয়োজন হতে পারে।
ডিফল্ট হয় -ফেমিট-স্ট্রাক্ট-ডিবাগ-ডিটেলড = সমস্ত.
এই বিকল্পটি শুধুমাত্র DWARF 2 এর সাথে কাজ করে।
-fno-মার্জ-ডিবাগ-স্ট্রিং
লিঙ্কারকে ডিবাগিং তথ্যে স্ট্রিংগুলিকে একত্রিত না করার জন্য নির্দেশ করুন
বিভিন্ন অবজেক্ট ফাইলে অভিন্ন। একত্রীকরণ সমস্ত অ্যাসেম্বলার দ্বারা সমর্থিত নয় বা
লিঙ্কার মার্জ করা আউটপুট ফাইলে ডিবাগ তথ্যের আকার হ্রাস করে
লিঙ্ক প্রক্রিয়াকরণের সময় বৃদ্ধির খরচ। একত্রীকরণ ডিফল্টরূপে সক্রিয় করা হয়৷
-fdebug-prefix-Map =পুরাতন=নতুন
ডিরেক্টরিতে ফাইল কম্পাইল করার সময় পুরাতন, রেকর্ড ডিবাগিং তথ্য হিসাবে তাদের বর্ণনা
in নতুন পরিবর্তে.
-FNO-DWARF2-CFI-ASM
Emit DWARF 2 unwind info যেহেতু কম্পাইলার জেনারেট করা ".eh_frame" সেকশন ব্যবহার না করে
GAS ".cfi_*" নির্দেশাবলী।
-p বিশ্লেষণ প্রোগ্রামের জন্য উপযুক্ত প্রোফাইল তথ্য লিখতে অতিরিক্ত কোড তৈরি করুন
অধ্যাপক. আপনি যে সোর্স ফাইলগুলি সম্পর্কে ডেটা চান তা কম্পাইল করার সময় আপনাকে অবশ্যই এই বিকল্পটি ব্যবহার করতে হবে,
এবং লিঙ্ক করার সময় আপনাকে অবশ্যই এটি ব্যবহার করতে হবে।
-পিজি বিশ্লেষণ প্রোগ্রামের জন্য উপযুক্ত প্রোফাইল তথ্য লিখতে অতিরিক্ত কোড তৈরি করুন
জিপিআরএফ. আপনি যে সোর্স ফাইলগুলি সম্পর্কে ডেটা চান তা কম্পাইল করার সময় আপনাকে অবশ্যই এই বিকল্পটি ব্যবহার করতে হবে,
এবং লিঙ্ক করার সময় আপনাকে অবশ্যই এটি ব্যবহার করতে হবে।
-Q কম্পাইলারকে প্রতিটি ফাংশনের নাম প্রিন্ট আউট করে যেমন এটি কম্পাইল করা হয় এবং কিছু মুদ্রণ করে
প্রতিটি পাসের পরিসংখ্যান যখন এটি শেষ হয়।
-এফটাইম-রিপোর্ট
কম্পাইলার প্রতিটি পাস দ্বারা গ্রাস সময় সম্পর্কে কিছু পরিসংখ্যান মুদ্রণ করে তোলে যখন এটি
শেষ।
-এফএমইএম-রিপোর্ট
কম্পাইলারকে স্থায়ী মেমরি বরাদ্দ সম্পর্কে কিছু পরিসংখ্যান মুদ্রণ করে যখন এটি
শেষ।
-এফএমইএম-রিপোর্ট-ডব্লিউপিএ
কম্পাইলারকে WPA-এর জন্য স্থায়ী মেমরি বরাদ্দ সম্পর্কে কিছু পরিসংখ্যান মুদ্রণ করে
শুধুমাত্র ফেজ।
-fpre-ipa-মেম-রিপোর্ট
-fpost-ipa-মেম-রিপোর্ট
কম্পাইলারকে স্থায়ী মেমরি বরাদ্দের আগে বা আগে কিছু পরিসংখ্যান মুদ্রণ করে
আন্তঃপ্রক্রিয়াগত অপ্টিমাইজেশনের পরে।
-প্রোফাইল-রিপোর্ট
কম্পাইলারকে (আনুমানিক) প্রোফাইলের ধারাবাহিকতা সম্পর্কে কিছু পরিসংখ্যান মুদ্রণ করে
এবং পৃথক পাসের প্রভাব।
-fstack-ব্যবহার
প্রতি-ফাংশনে প্রোগ্রামের জন্য কম্পাইলার আউটপুট স্ট্যাক ব্যবহারের তথ্য তৈরি করে
ভিত্তি ডাম্পের জন্য ফাইলের নাম যোগ করে তৈরি করা হয় .su থেকে অক্সনাম. অক্সনাম is
আউটপুট ফাইলের নাম থেকে উত্পন্ন, যদি স্পষ্টভাবে উল্লেখ করা হয় এবং এটি একটি নয়
এক্সিকিউটেবল, অন্যথায় এটি সোর্স ফাইলের বেসনেম। একটি এন্ট্রি গঠিত হয়
তিনটি ক্ষেত্র:
* ফাংশনের নাম।
* বাইট সংখ্যা.
* এক বা একাধিক কোয়ালিফায়ার: "স্ট্যাটিক", "ডাইনামিক", "বাউন্ডেড"।
কোয়ালিফায়ার "স্ট্যাটিক" এর অর্থ হল যে ফাংশনটি স্ট্যাকটিকে স্ট্যাকভাবে ম্যানিপুলেট করে: ক
ফাংশন এন্ট্রিতে ফ্রেমের জন্য নির্দিষ্ট সংখ্যক বাইট বরাদ্দ করা হয় এবং রিলিজ করা হয়
ফাংশন প্রস্থান; অন্যথায় ফাংশনে কোন স্ট্যাক সমন্বয় করা হয় না। দ্বিতীয়
ক্ষেত্র হল এই নির্দিষ্ট সংখ্যক বাইট।
কোয়ালিফায়ার "ডাইনামিক" এর মানে হল যে ফাংশনটি স্ট্যাককে গতিশীলভাবে ম্যানিপুলেট করে: ইন
উপরে বর্ণিত স্ট্যাটিক বরাদ্দ ছাড়াও, স্ট্যাক সমন্বয় করা হয়
ফাংশনের বডি, উদাহরণস্বরূপ ফাংশন কলের চারপাশে আর্গুমেন্ট পুশ/পপ করা। যদি
কোয়ালিফায়ার "বাউন্ডেড"ও উপস্থিত, এই সামঞ্জস্যের পরিমাণ সীমাবদ্ধ
কম্পাইল সময় এবং দ্বিতীয় ক্ষেত্রটি ব্যবহৃত স্ট্যাকের মোট পরিমাণের একটি উপরের সীমা
ফাংশন দ্বারা এটি উপস্থিত না থাকলে, এই সমন্বয়ের পরিমাণ সীমাবদ্ধ নয়
কম্পাইল সময়ে এবং দ্বিতীয় ক্ষেত্র শুধুমাত্র আবদ্ধ অংশ প্রতিনিধিত্ব করে।
-এফপ্রোফাইল-আর্কস
কোড যোগ করুন যাতে প্রোগ্রাম প্রবাহ পরিধির মধ্যে instrumented হয় কর্মসূচী সম্পাদনের সময়
প্রতিটি শাখা এবং কল কতবার কার্যকর করা হয়েছে এবং কতবার নেওয়া হয়েছে তা রেকর্ড করে
অথবা ফিরে আসে। যখন কম্পাইল করা প্রোগ্রামটি প্রস্থান করে তখন এটি একটি ফাইলে এই ডেটা সংরক্ষণ করে
Auxname.gcda প্রতিটি উৎস ফাইলের জন্য। ডেটা প্রোফাইল-নির্দেশিত জন্য ব্যবহার করা যেতে পারে
অপ্টিমাইজেশান (-fbranch-সম্ভাবনা), অথবা পরীক্ষার কভারেজ বিশ্লেষণের জন্য
(-সবচেয়ে কভারেজ) প্রতিটি বস্তু ফাইল এর অক্সনাম এর নাম থেকে উৎপন্ন হয়
আউটপুট ফাইল, যদি স্পষ্টভাবে নির্দিষ্ট করা থাকে এবং এটি চূড়ান্ত নির্বাহযোগ্য নয়, অন্যথায় এটি
উৎস ফাইলের মূল নাম। উভয় ক্ষেত্রেই কোনো প্রত্যয় সরানো হয় (যেমন
foo.gcda ইনপুট ফাইলের জন্য দির/foo.c, বা Dir/foo.gcda হিসাবে নির্দিষ্ট আউটপুট ফাইলের জন্য -o
দির/foo.o).
--কভারেজ
এই বিকল্পটি কভারেজ বিশ্লেষণের জন্য যন্ত্রযুক্ত কোড কম্পাইল এবং লিঙ্ক করতে ব্যবহৃত হয়। দ্য
অপশন এর প্রতিশব্দ -এফপ্রোফাইল-আর্কস -সবচেয়ে কভারেজ (সংকলন করার সময়) এবং -lgcov
(লিঙ্ক করার সময়)। আরও বিশদ বিবরণের জন্য সেই বিকল্পগুলির জন্য ডকুমেন্টেশন দেখুন।
* এর সাথে সোর্স ফাইল কম্পাইল করুন -এফপ্রোফাইল-আর্কস প্লাস অপ্টিমাইজেশান এবং কোড জেনারেশন
বিকল্প পরীক্ষার কভারেজ বিশ্লেষণের জন্য, অতিরিক্ত ব্যবহার করুন -সবচেয়ে কভারেজ বিকল্প।
আপনাকে একটি প্রোগ্রামে প্রতিটি উত্স ফাইল প্রোফাইল করতে হবে না।
* আপনার অবজেক্ট ফাইলের সাথে লিঙ্ক করুন -lgcov or -এফপ্রোফাইল-আর্কস (পরবর্তীটি বোঝায়
সাবেক)।
* আর্ক প্রোফাইল তৈরি করতে একটি প্রতিনিধি কাজের চাপে প্রোগ্রামটি চালান
তথ্য এটি যে কোনো সংখ্যক বার পুনরাবৃত্তি হতে পারে। আপনি একযোগে চালাতে পারেন
আপনার প্রোগ্রামের দৃষ্টান্ত, এবং প্রদান করে যে ফাইল সিস্টেম লকিং সমর্থন করে,
ডেটা ফাইল সঠিকভাবে আপডেট করা হবে। এছাড়াও "ফর্ক" কল সনাক্ত করা হয় এবং
সঠিকভাবে পরিচালিত (ডবল গণনা ঘটবে না)।
* প্রোফাইল-নির্দেশিত অপ্টিমাইজেশনের জন্য, একই সাথে আবার সোর্স ফাইল কম্পাইল করুন
অপ্টিমাইজেশান এবং কোড জেনারেশন অপশন প্লাস -fbranch-সম্ভাবনা.
* পরীক্ষার কভারেজ বিশ্লেষণের জন্য, ব্যবহার করুন gcov থেকে মানুষের পঠনযোগ্য তথ্য তৈরি করতে
দ্য .gcno এবং .gcda নথি পত্র. পড়ুন gcov আরও জন্য ডকুমেন্টেশন
তথ্য।
সঙ্গে -এফপ্রোফাইল-আর্কস, আপনার প্রোগ্রামের প্রতিটি ফাংশনের জন্য GCC একটি প্রোগ্রাম প্রবাহ তৈরি করে
গ্রাফ, তারপর গ্রাফের জন্য একটি বিস্তৃত গাছ খুঁজে পায়। শুধুমাত্র arcs যে উপর নেই
স্প্যানিং ট্রিকে ইনস্ট্রুমেন্ট করতে হবে: কম্পাইলার সংখ্যা গণনা করতে কোড যোগ করে
এই arcs মৃত্যুদন্ড কার্যকর করা হয় যে বার. যখন একটি চাপ হল একমাত্র প্রস্থান বা প্রবেশ পথ
একটি ব্লক, ইন্সট্রুমেন্টেশন কোড ব্লকে যোগ করা যেতে পারে; অন্যথায়, একটি নতুন মৌলিক
ইন্সট্রুমেন্টেশন কোড ধরে রাখতে ব্লক তৈরি করতে হবে।
-সবচেয়ে কভারেজ
একটি নোট ফাইল তৈরি করুন যে gcov কোড-কভারেজ ইউটিলিটি প্রোগ্রাম দেখানোর জন্য ব্যবহার করতে পারে
কভারেজ প্রতিটি উৎস ফাইলের নোট ফাইল বলা হয় Auxname.gcno। পড়ুন
-এফপ্রোফাইল-আর্কস একটি বর্ণনার জন্য উপরে বিকল্প অক্সনাম এবং কিভাবে করতে হবে তার নির্দেশাবলী
পরীক্ষার কভারেজ ডেটা তৈরি করুন। কভারেজ ডেটা সোর্স ফাইলের সাথে আরও ঘনিষ্ঠভাবে মেলে যদি
আপনি অপ্টিমাইজ করবেন না।
-fdbg-cnt-তালিকা
সমস্ত ডিবাগ কাউন্টারের জন্য নাম এবং কাউন্টার উপরের বাউন্ড প্রিন্ট করুন।
-fdbg-cnt =পাল্টা মূল্য তালিকা
অভ্যন্তরীণ ডিবাগ কাউন্টার উপরের বাউন্ড সেট করুন। পাল্টা মূল্য তালিকা একটি কমা দ্বারা পৃথক করা হয়
তালিকা নাম:মূল্য জোড়া যা প্রতিটি ডিবাগ কাউন্টারের উপরের সীমানা সেট করে নাম থেকে
মূল্য. সমস্ত ডিবাগ কাউন্টারে "UINT_MAX" এর প্রাথমিক উপরের সীমা থাকে; এইভাবে "dbg_cnt"
উপরের সীমাটি এই বিকল্প দ্বারা সেট করা না হলে সর্বদা সত্য প্রদান করে। উদাহরণস্বরূপ, সঙ্গে
-fdbg-cnt = dce: 10, টেল_ক্যাল: 0, "dbg_cnt(dce)" শুধুমাত্র প্রথম 10 এর জন্য সত্য প্রদান করে
আমন্ত্রণ
-প্রমাণযোগ্য-রকম-পাস
-ফডিসেবল-রকম-পাস=পরিসীমা তালিকা
এটি বিকল্পগুলির একটি সেট যা স্পষ্টভাবে অপ্টিমাইজেশন নিষ্ক্রিয়/সক্ষম করতে ব্যবহৃত হয়
পাস এই বিকল্পগুলি GCC ডিবাগ করার জন্য ব্যবহারের উদ্দেশ্যে। কম্পাইলার ব্যবহারকারীদের উচিত
পরিবর্তে পাস সক্রিয়/অক্ষম করার জন্য নিয়মিত বিকল্প ব্যবহার করুন।
-ফডিসেবল-আইপি-পাস
IPA পাস নিষ্ক্রিয় করুন পাস. পাস পাসের নাম। একই পাস স্ট্যাটিক হলে
কম্পাইলারে একাধিকবার আহ্বান করা হলে, পাসের নাম a এর সাথে যুক্ত করতে হবে
অনুক্রমিক সংখ্যা 1 থেকে শুরু।
-fdisable-rtl-পাস
-fdisable-rtl-পাস=পরিসীমা তালিকা
RTL পাস নিষ্ক্রিয় করুন পাস. পাস পাসের নাম। একই পাস স্ট্যাটিক হলে
কম্পাইলারে একাধিকবার আহ্বান করা হলে, পাসের নাম a এর সাথে যুক্ত করতে হবে
অনুক্রমিক সংখ্যা 1 থেকে শুরু। পরিসীমা তালিকা একটি কমা দ্বারা পৃথক করা তালিকা
ফাংশন রেঞ্জ বা অ্যাসেম্বলারের নাম। প্রতিটি ব্যাপ্তি a দ্বারা পৃথক করা একটি সংখ্যা জোড়া
কোলন পরিসীমা উভয় প্রান্তে অন্তর্ভুক্ত। পরিসীমা তুচ্ছ হলে, সংখ্যা
জোড়া একটি একক সংখ্যা হিসাবে সরলীকৃত করা যেতে পারে। যদি ফাংশন কল গ্রাফ নোড এর
ইউআইডি একটি নির্দিষ্ট রেঞ্জের মধ্যে পড়ে, পাস এর জন্য অক্ষম
ফাংশন দ্য ইউআইডি একটি ডাম্প ফাইলের ফাংশন হেডার এবং পাসে দেখানো হয়
নাম অপশন ব্যবহার করে ডাম্প করা যেতে পারে -fdump-পাস.
অক্ষম-গাছ-পাস
অক্ষম-গাছ-পাস=পরিসীমা তালিকা
ট্রি পাস অক্ষম করুন পাস। দেখ -fdisable-rtl বিকল্পের বর্ণনার জন্য
আর্গুমেন্ট।
-ফেনেবল-আইপিএ-পাস
IPA পাস সক্ষম করুন পাস. পাস পাসের নাম। একই পাস স্ট্যাটিক হলে
কম্পাইলারে একাধিকবার আহ্বান করা হলে, পাসের নাম a এর সাথে যুক্ত করতে হবে
অনুক্রমিক সংখ্যা 1 থেকে শুরু।
-ফেনেবল-আরটিএল-পাস
-ফেনেবল-আরটিএল-পাস=পরিসীমা তালিকা
RTL পাস সক্ষম করুন পাস। দেখ -fdisable-rtl বিকল্প যুক্তি বিবরণের জন্য এবং
উদাহরণ।
-ফেনযোগ্য গাছ-পাস
-ফেনযোগ্য গাছ-পাস=পরিসীমা তালিকা
ট্রি পাস সক্ষম করুন পাস। দেখ -fdisable-rtl বিকল্প আর্গুমেন্টের বর্ণনার জন্য।
এখানে এই বিকল্পগুলির ব্যবহার দেখানো কিছু উদাহরণ রয়েছে৷
# সমস্ত ফাংশনের জন্য ccp1 নিষ্ক্রিয় করুন
-fdisable-ট্রি-ccp1
# ফাংশনের জন্য সম্পূর্ণ আনরোল অক্ষম করুন যার cgraph নোড uid 1
-ফেনেবল-ট্রি-কনরোল=1
# নিম্নলিখিত রেঞ্জে ফাংশনের জন্য gcse2 নিষ্ক্রিয় করুন [1,1],
# [300,400], এবং [400,1000]
# foo এবং foo2 ফাংশনের জন্য gcse2 নিষ্ক্রিয় করুন
-fdisable-rtl-gcse2 = foo, foo2
# প্রাথমিক ইনলাইনিং অক্ষম করুন
-ফডিসেবল-ট্রি-ইনলাইন
# আইপিএ ইনলাইনিং নিষ্ক্রিয় করুন
-fdisable-ipa-ইনলাইন
# গাছ সম্পূর্ণ আনরোল সক্ষম করুন
-ফেনেবল-ট্রি-অনরোল
-dঅক্ষর
-fdump-rtl-পাস
-fdump-rtl-পাস=ফাইলের নাম
দ্বারা নির্দিষ্ট সময়ে সংকলনের সময় ডিবাগিং ডাম্প করতে বলে অক্ষর. এই
কম্পাইলারের RTL-ভিত্তিক পাস ডিবাগ করার জন্য ব্যবহৃত হয়। বেশিরভাগের জন্য ফাইলের নাম
ডাম্পগুলির একটি পাস নম্বর এবং একটি শব্দ যোগ করে তৈরি করা হয় ডাম্পনাম, এবং
ফাইলগুলি আউটপুট ফাইলের ডিরেক্টরিতে তৈরি করা হয়। জন্য =ফাইলের নাম বিকল্প,
পাস নম্বরযুক্ত ডাম্প ফাইলের পরিবর্তে প্রদত্ত ফাইলে ডাম্প আউটপুট হয়। বিঃদ্রঃ
যে পাস নম্বরটি স্ট্যাটিকভাবে গণনা করা হয় যখন পাসগুলি পাসে নিবন্ধিত হয়
ম্যানেজার এইভাবে সংখ্যায়নটি কার্যকর করার গতিশীল আদেশের সাথে সম্পর্কিত নয়
পাস বিশেষ করে, একটি প্লাগইন দ্বারা ইনস্টল করা একটি পাসের সংখ্যা 200 এর বেশি হতে পারে
যদি এটি বেশ তাড়াতাড়ি কার্যকর করা হয়। ডাম্পনাম আউটপুট ফাইলের নাম থেকে তৈরি হয়,
যদি স্পষ্টভাবে উল্লেখ করা হয় এবং এটি একটি এক্সিকিউটেবল নয়, অন্যথায় এটি এর বেসনেম
উৎস ফাইল। এই সুইচগুলির বিভিন্ন প্রভাব থাকতে পারে যখন -E জন্য ব্যবহৃত হয়
প্রিপ্রসেসিং
ডিবাগ ডাম্প একটি দিয়ে সক্ষম করা যেতে পারে -ফডাম্প-আরটিএল সুইচ বা কিছু -d পছন্দ অক্ষর। এখানে
ব্যবহার করার জন্য সম্ভাব্য অক্ষর হয় পাস এবং অক্ষর, এবং তাদের অর্থ:
-fdump-rtl-সারিবদ্ধকরণ
শাখা প্রান্তিককরণের পরে ডাম্প গণনা করা হয়েছে।
-fdump-rtl-amamcons
rtl স্টেটমেন্ট ঠিক করার পরে ডাম্প করুন যেগুলির মধ্যে/আউট সীমাবদ্ধতাগুলি অসন্তুষ্ট।
-fdump-rtl-uto_inc_dec
অটো-ইনক-ডিসেম্বর আবিষ্কারের পরে ডাম্প। এই পাস শুধুমাত্র স্থাপত্য চালানো হয় যে
স্বয়ংক্রিয় inc বা স্বয়ংক্রিয় ডিসেম্বর নির্দেশাবলী আছে.
-fdump-rtl- বাধা
বাধা নির্দেশাবলী পরিষ্কার করার পরে ডাম্প.
-ফডাম্প-আরটিএল-বিবিপার্ট
গরম এবং ঠান্ডা মৌলিক ব্লক পার্টিশন করার পরে ডাম্প.
-ফডাম্প-আরটিএল-বিবিআরও
ব্লক পুনর্বিন্যাস পরে ডাম্প.
-fdump-rtl-btl1
-fdump-rtl-btl2
-fdump-rtl-btl1 এবং -fdump-rtl-btl2 দুটি শাখা লক্ষ্যের পরে ডাম্পিং সক্ষম করুন
লোড অপ্টিমাইজেশান পাস।
-fdump-rtl-বাইপাস
জাম্প বাইপাস এবং নিয়ন্ত্রণ প্রবাহ অপ্টিমাইজেশান পরে ডাম্প.
-fdump-rtl-কম্বাইন
RTL নির্দেশের সমন্বয় পাসের পরে ডাম্প করুন।
-fdump-rtl-compgotos
কম্পিউটেড গোটো ডুপ্লিকেট করার পর ডাম্প করুন।
-fdump-rtl-c1
-fdump-rtl-c2
-fdump-rtl-c3
-fdump-rtl-c1, -fdump-rtl-c2, এবং -fdump-rtl-c3 তিনটির পরে ডাম্পিং সক্ষম করুন
যদি রূপান্তর পাস হয়।
-fdump-rtl-cprop_hardreg
হার্ড রেজিস্টার কপি প্রচারের পরে ডাম্প করুন।
-fdump-rtl-csa
স্ট্যাক সমন্বয় সমন্বয় পরে ডাম্প.
-FDUMP-RTL-CSE1
-FDUMP-RTL-CSE2
-FDUMP-RTL-CSE1 এবং -FDUMP-RTL-CSE2 দুটি সাধারণের পরে ডাম্পিং সক্ষম করুন
subexpression নির্মূল পাস.
-ফডাম্প-আরটিএল-ডিসিই
স্বতন্ত্র ডেড কোড নির্মূল পাসের পরে ডাম্প করুন।
-ফডাম্প-আরটিএল-ডিবিআর
বিলম্বিত শাখা সময়সূচী পরে ডাম্প.
-fdump-RTL-DCE1
-fdump-RTL-DCE2
-fdump-RTL-DCE1 এবং -fdump-RTL-DCE2 দুটি মৃত দোকান পরে ডাম্পিং সক্ষম করুন
নির্মূল পাস
-fdump-rtl-eh
EH হ্যান্ডলিং কোড চূড়ান্ত করার পরে ডাম্প।
-fdump-rtl-Eh_ranges
EH হ্যান্ডলিং পরিসীমা অঞ্চলের রূপান্তরের পরে ডাম্প।
-fdump-rtl-প্রসারিত
RTL প্রজন্মের পরে ডাম্প।
-fdump-rtl-fwprop1
-fdump-rtl-fwprop2
-fdump-rtl-fwprop1 এবং -fdump-rtl-fwprop2 দুই ফরোয়ার্ডের পরে ডাম্পিং সক্ষম করুন
বংশবিস্তার পাস।
-FDUMP-RTL-GCSE1
-FDUMP-RTL-GCSE2
-FDUMP-RTL-GCSE1 এবং -FDUMP-RTL-GCSE2 বিশ্বব্যাপী সাধারণের পরে ডাম্পিং সক্ষম করুন
সাব এক্সপ্রেশন নির্মূল।
-fdump-rtl-init-regs
রেজিস্টার শুরু করার পরে ডাম্প.
-fdump-rtl-intivals
প্রাথমিক মান সেটের গণনার পরে ডাম্প করুন।
-fdump-rtl-into_cfglayout
cfglayout মোডে রূপান্তর করার পরে ডাম্প করুন।
-ফডাম্প-আরটিএল-আইআরএ
পুনরাবৃত্ত রেজিস্টার বরাদ্দ পরে ডাম্প.
-fdump-rtl-জাম্প
দ্বিতীয় জাম্প অপ্টিমাইজেশান পরে ডাম্প.
-fdump-rtl-loop2
-fdump-rtl-loop2 rtl লুপ অপ্টিমাইজেশান পাস করার পরে ডাম্পিং সক্ষম করে।
-fdump-rtl-mach
মেশিন নির্ভর পুনর্গঠন পাস সম্পাদন করার পরে ডাম্প, যদি পাস
বিদ্যমান।
-fdump-rtl-Mode_sw
অপ্রয়োজনীয় মোড সুইচগুলি সরানোর পরে ডাম্প করুন।
-fdump-rtl-rnreg
রেজিস্টার renumbering পরে ডাম্প.
-fdump-rtl-outof_cfglayout
cfglayout মোড থেকে রূপান্তর করার পরে ডাম্প করুন।
-fdump-rtl-peephole2
peephole পাস পরে ডাম্প.
-fdump-rtl-Postreload
পোস্ট-রিলোড অপ্টিমাইজেশান পরে ডাম্প.
-fdump-rtl-pro_ এবং_পিলোগ
ফাংশন prologues এবং epilogues তৈরি করার পরে ডাম্প.
-fdump-rtl-sched1
-fdump-rtl-sched2
-fdump-rtl-sched1 এবং -fdump-rtl-sched2 মৌলিক ব্লকের পরে ডাম্পিং সক্ষম করুন
সময়সূচী পাস
-ফডাম্প-আরটিএল-রি
সাইন/শূন্য এক্সটেনশন নির্মূলের পরে ডাম্প করুন।
-fdump-rtl-seqabstr
সাধারণ ক্রম আবিষ্কারের পরে ডাম্প।
-fdump-rtl-সংক্ষিপ্ত
শাখা ছোট করার পর ডাম্প করুন।
-fdump-rtl-ভাইবোন
ভাইবোন কল অপ্টিমাইজেশান পরে ডাম্প.
-fdump-rtl-split1
-fdump-rtl-split2
-fdump-rtl-split3
-fdump-rtl-split4
-fdump-rtl-split5
এই বিকল্পগুলি নির্দেশ বিভাজনের পাঁচ রাউন্ডের পরে ডাম্পিং সক্ষম করে।
-fdump-rtl-sms
মডিউল সময়সূচী পরে ডাম্প. এই পাস শুধুমাত্র কিছু আর্কিটেকচারে চালানো হয়।
-fdump-rtl-স্ট্যাক
GCC এর "ফ্ল্যাট রেজিস্টার ফাইল" থেকে x87 এর রেজিস্টারে রূপান্তরের পরে ডাম্প করুন
স্ট্যাকের মতো রেজিস্টার। এই পাস শুধুমাত্র x86 ভেরিয়েন্টে চালানো হয়।
-fdump-rtl-subreg1
-fdump-rtl-subreg2
-fdump-rtl-subreg1 এবং -fdump-rtl-subreg2 দুটি উপরেগের পরে ডাম্পিং সক্ষম করুন
সম্প্রসারণ পাস
-fdump-rtl-আনশেয়ার
সমস্ত rtl শেয়ার না করা হয়েছে পরে ডাম্প.
-fdump-rtl-vartrack
পরিবর্তনশীল ট্র্যাকিং পরে ডাম্প.
-fdump-rtl-vregs
ভার্চুয়াল রেজিস্টারগুলিকে হার্ড রেজিস্টারে রূপান্তর করার পরে ডাম্প করুন।
-এফডাম্প-আরটিএল-ওয়েব
লাইভ পরিসীমা বিভাজন পরে ডাম্প.
-fdump-rtl-reglass
-fdump-rtl-subregs_of_mode_init
-fdump-rtl-subregs_of_mode_finish
-fdump-rtl-dfinit
-fdump-rtl-dfinish
এই ডাম্পগুলি সংজ্ঞায়িত করা হয় তবে সর্বদা খালি ফাইল তৈরি করে।
ইন
-fdump-rtl-সমস্ত
উপরে তালিকাভুক্ত সমস্ত ডাম্প উত্পাদন.
-da বিবিধ ডিবাগিং তথ্য সহ অ্যাসেম্বলার আউটপুট টীকা করুন।
-ডিডি সমস্ত ম্যাক্রো সংজ্ঞা ডাম্প করুন, প্রিপ্রসেসিং শেষে, স্বাভাবিক ছাড়াও
আউটপুট।
-ডিএইচ যখনই একটি ত্রুটি ঘটে তখন একটি কোর ডাম্প তৈরি করুন।
-ডিপি কোন প্যাটার্ন এবং নির্দেশ করে একটি মন্তব্য সহ অ্যাসেম্বলার আউটপুট টীকা করুন
বিকল্প ব্যবহার করা হয়। প্রতিটি নির্দেশের দৈর্ঘ্যও মুদ্রিত হয়।
-ডিপি প্রতিটি নির্দেশের আগে একটি মন্তব্য হিসাবে অ্যাসেম্বলার আউটপুটে RTL ডাম্প করুন। এছাড়াও
সক্রিয় -ডিপি টীকা।
-ডেক্স এটি কম্পাইল করার পরিবর্তে শুধুমাত্র একটি ফাংশনের জন্য RTL তৈরি করুন। সাধারণত এর সাথে ব্যবহার করা হয়
-fdump-rtl-প্রসারিত.
-fdump-noaddr
ডিবাগিং ডাম্প করার সময়, ঠিকানা আউটপুট দমন করুন। এই এটা আরো বাস্তবসম্মত করে তোলে
বিভিন্ন কম্পাইলার বাইনারি সহ কম্পাইলার আহ্বানের জন্য ডিবাগিং ডাম্পে ডিফ ব্যবহার করুন
এবং/অথবা বিভিন্ন টেক্সট/বিএসএস/ডেটা/হিপ/স্ট্যাক/ডিএসও স্টার্ট লোকেশন।
-ফ্রেপোর্ট-বাগ
C/C++ কম্পাইলারে ICE থাকলে অস্থায়ী ফাইলে ডিবাগ তথ্য সংগ্রহ করুন এবং ডাম্প করুন
ঘটেছে
-fdump-অসংখ্যিত
ডিবাগিং ডাম্প করার সময়, নির্দেশ সংখ্যা এবং ঠিকানা আউটপুট দমন করুন। এই
এর সাথে কম্পাইলার ইনভোকেশনের জন্য ডিবাগিং ডাম্পে ডিফ ব্যবহার করা আরও সম্ভাব্য করে তোলে
বিভিন্ন বিকল্প, বিশেষ করে সহ এবং ছাড়া -g.
-fdump-অসংখ্যিত-লিঙ্ক
ডিবাগিং ডাম্প করার সময় (দেখুন -d উপরের বিকল্প), এর জন্য নির্দেশ সংখ্যা দমন করুন
একটি অনুক্রম পূর্ববর্তী এবং পরবর্তী নির্দেশাবলী লিঙ্ক.
-fdump-অনুবাদ-ইউনিট (শুধুমাত্র C++)
-fdump-অনুবাদ-ইউনিট-অপশন (শুধুমাত্র C++)
একটি ফাইলে সম্পূর্ণ অনুবাদ ইউনিটের জন্য গাছের কাঠামোর একটি উপস্থাপনা ডাম্প করুন।
ফাইলের নাম যোগ করে তৈরি করা হয় .তু উৎস ফাইলের নাম, এবং ফাইল হয়
আউটপুট ফাইলের মতো একই ডিরেক্টরিতে তৈরি করা হয়েছে। যদি -অপশন ফর্ম ব্যবহার করা হয়,
অপশন ডাম্পের বিবরণ নিয়ন্ত্রণ করে যেমন বর্ণনা করা হয়েছে -fdump-বৃক্ষ অপশন।
-fdump-শ্রেণী-শ্রেণিক্রম (শুধুমাত্র C++)
-fdump-শ্রেণী-শ্রেণিক্রম-অপশন (শুধুমাত্র C++)
প্রতিটি শ্রেণীর শ্রেণিবিন্যাসের একটি উপস্থাপনা এবং ভার্চুয়াল ফাংশন টেবিল বিন্যাস a এ ডাম্প করুন
ফাইল ফাইলের নাম যোগ করে তৈরি করা হয় .শ্রেণী উৎস ফাইলের নাম এবং ফাইলে
আউটপুট ফাইলের মতো একই ডিরেক্টরিতে তৈরি করা হয়। যদি -অপশন ফর্ম ব্যবহার করা হয়,
অপশন ডাম্পের বিবরণ নিয়ন্ত্রণ করে যেমন বর্ণনা করা হয়েছে -fdump-বৃক্ষ অপশন।
-fdump-ipa-সুইচ
আন্তঃপ্রক্রিয়াগত বিশ্লেষণ ভাষার গাছের বিভিন্ন পর্যায়ে ডাম্পিং নিয়ন্ত্রণ করুন
ফাইল ফাইলের নাম উৎসে একটি সুইচ নির্দিষ্ট প্রত্যয় যুক্ত করে তৈরি করা হয়
ফাইলের নাম, এবং ফাইলটি আউটপুট ফাইলের মতো একই ডিরেক্টরিতে তৈরি করা হয়। দ্য
নিম্নলিখিত ডাম্প সম্ভব:
সব সমস্ত আন্তঃপ্রক্রিয়াগত বিশ্লেষণ ডাম্প সক্ষম করে।
সিগ্রাফ
কল-গ্রাফ অপ্টিমাইজেশান, অব্যবহৃত ফাংশন অপসারণ, এবং সম্পর্কে তথ্য ডাম্প করে
ইনলাইনিং সিদ্ধান্ত।
সঙ্গতিপূর্ণভাবে
ফাংশন ইনলাইনিং পরে ডাম্প.
-fdump-পাস
অপ্টিমাইজেশান পাসের তালিকা ডাম্প করুন যা কারেন্ট দ্বারা চালু এবং বন্ধ করা হয়
কমান্ড লাইন বিকল্প।
-fdump-পরিসংখ্যান-পছন্দ
একটি পৃথক ফাইলে পাস পরিসংখ্যানের ডাম্পিং সক্ষম এবং নিয়ন্ত্রণ করুন। ফাইলের নাম হল
শেষ হওয়া একটি প্রত্যয় যুক্ত করে তৈরি করা হয় পরিসংখ্যান উৎস ফাইলের নাম, এবং
ফাইলটি আউটপুট ফাইলের মতো একই ডিরেক্টরিতে তৈরি করা হয়। যদি -পছন্দ ফর্ম হল
ব্যবহৃত, -পরিসংখ্যান কাউন্টারগুলিকে সমগ্র সংকলন ইউনিটের উপর সংক্ষিপ্ত করার কারণ করে
- বিস্তারিত প্রতিটি ইভেন্টকে ডাম্প করে দেয় যেহেতু পাসগুলি তাদের তৈরি করে। কোন বিকল্প সঙ্গে ডিফল্ট হয়
কম্পাইল করা প্রতিটি ফাংশনের জন্য কাউন্টার যোগ করুন।
-fdump-ট্রি-সুইচ
-fdump-ট্রি-সুইচ-অপশন
-fdump-ট্রি-সুইচ-অপশন=ফাইলের নাম
মধ্যবর্তী ভাষা গাছ প্রক্রিয়াকরণের বিভিন্ন পর্যায়ে ডাম্পিং নিয়ন্ত্রণ করুন
একটি নথি. ফাইলের নামটিতে একটি সুইচ-নির্দিষ্ট প্রত্যয় যুক্ত করে তৈরি করা হয়
উৎস ফাইলের নাম, এবং ফাইলটি আউটপুট ফাইলের মতো একই ডিরেক্টরিতে তৈরি করা হয়। ভিতরে
কেস =ফাইলের নাম বিকল্প, ডাম্পটি স্বয়ংক্রিয় পরিবর্তে প্রদত্ত ফাইলে আউটপুট
নাম দেওয়া ডাম্প ফাইল। যদি -অপশন ফর্ম ব্যবহার করা হয়, অপশন এর একটি তালিকা - বিভক্ত
অপশন যা ডাম্পের বিবরণ নিয়ন্ত্রণ করে। সব অপশন সবার জন্য প্রযোজ্য নয়
ডাম্প যেগুলো অর্থপূর্ণ নয় সেগুলো উপেক্ষা করা হয়। নিম্নলিখিত বিকল্পগুলি উপলব্ধ
ঠিকানা
প্রতিটি নোডের ঠিকানা প্রিন্ট করুন। সাধারণত এটি পরিবর্তিত হওয়ায় এটি অর্থপূর্ণ নয়
পরিবেশ এবং উৎস ফাইল অনুযায়ী। এর প্রাথমিক ব্যবহার হল বাঁধার জন্য
একটি ডিবাগ পরিবেশ সহ ডাম্প ফাইল।
asmname
যদি একটি প্রদত্ত ঘোষণার জন্য "DECL_ASSEMBLER_NAME" সেট করা থাকে, তাহলে সেটি ডাম্পে ব্যবহার করুন
"DECL_NAME" এর পরিবর্তে। এটির প্রাথমিক ব্যবহার হল ব্যবহারের সহজতা থেকে পিছিয়ে কাজ করা
অ্যাসেম্বলি ফাইলে ম্যাঙ্গলড নাম।
পাতলা
ফ্রন্ট-এন্ড মধ্যবর্তী উপস্থাপনা ডাম্পিং করার সময়, এর সদস্যদের ডাম্পিং বাধা দেয়
একটি স্কোপ বা একটি ফাংশনের বডি শুধুমাত্র কারণ সেই সুযোগটি পৌঁছে গেছে। কেবল
এই ধরনের আইটেম ডাম্প যখন তারা অন্য কোনো পথ দ্বারা সরাসরি পৌঁছানো যায়.
সুন্দর-মুদ্রিত গাছ ডাম্পিং করার সময়, এই বিকল্পের মৃতদেহ ডাম্পিং বাধা দেয়
নিয়ন্ত্রণ কাঠামো।
RTL ডাম্প করার সময়, ডিফল্টের পরিবর্তে RTL স্লিম (কনডেন্সড) আকারে প্রিন্ট করুন
LISP-এর মতো উপস্থাপনা।
কাঁচা গাছের একটি কাঁচা উপস্থাপনা মুদ্রণ করুন। ডিফল্টরূপে, গাছগুলি সুন্দরভাবে মুদ্রিত হয়৷
একটি সি-এর মতো উপস্থাপনা।
বিস্তারিত
আরও বিস্তারিত ডাম্প সক্ষম করুন (প্রতিটি ডাম্প বিকল্প দ্বারা সম্মানিত নয়)। এছাড়াও অন্তর্ভুক্ত
অপ্টিমাইজেশান পাস থেকে তথ্য.
পরিসংখ্যান
পাস সম্পর্কে বিভিন্ন পরিসংখ্যান ডাম্পিং সক্ষম করুন (প্রতিটি ডাম্প দ্বারা সম্মানিত হয় না
বিকল্প)।
ব্লক
মৌলিক ব্লক সীমানা দেখানো সক্ষম করুন (কাঁচা ডাম্পে অক্ষম)।
চিত্রলেখ
প্রতিটি নির্দেশিত ডাম্প ফাইলের জন্য (-fdump-rtl-পাস), ডাম্প a
GraphViz-এর সাথে দেখার জন্য উপযুক্ত নিয়ন্ত্রণ প্রবাহ গ্রাফের উপস্থাপনা
file.passid.pass.dot. ফাইলের প্রতিটি ফাংশন একটি সাবগ্রাফ হিসাবে সুন্দর-মুদ্রিত হয়,
যাতে গ্রাফভিজ সেগুলিকে একক প্লটে রেন্ডার করতে পারে।
এই বিকল্পটি বর্তমানে শুধুমাত্র RTL ডাম্পের জন্য কাজ করে এবং RTL সর্বদা ডাম্প করা হয়
পাতলা ফর্ম।
vops
প্রতিটি বিবৃতির জন্য ভার্চুয়াল অপারেন্ড দেখানো সক্ষম করুন।
লাইননো
বিবৃতিগুলির জন্য লাইন নম্বর দেখানো সক্ষম করুন৷
ইউআইডি প্রতিটি ভেরিয়েবলের জন্য অনন্য ID ("DECL_UID") দেখানো সক্ষম করুন৷
ভার্বোস
প্রতিটি স্টেটমেন্টের জন্য ট্রি ডাম্প দেখানো সক্ষম করুন।
eh প্রতিটি বিবৃতি ধারণ করে EH অঞ্চলের নম্বর দেখানো সক্ষম করুন৷
SCEV
স্কেলার বিবর্তন বিশ্লেষণের বিবরণ দেখানো সক্ষম করুন।
অপ্টিমাইজ
অপ্টিমাইজেশান তথ্য দেখানো সক্ষম করুন (শুধুমাত্র নির্দিষ্ট পাসগুলিতে উপলব্ধ)।
মিস
মিস করা অপ্টিমাইজেশান তথ্য দেখানো সক্ষম করুন (শুধুমাত্র নির্দিষ্ট পাসগুলিতে উপলব্ধ)।
বিঃদ্রঃ
অন্যান্য বিস্তারিত অপ্টিমাইজেশান তথ্য সক্ষম করুন (শুধুমাত্র নির্দিষ্ট পাসগুলিতে উপলব্ধ)।
=ফাইলের নাম
একটি অটো নামের ডাম্প ফাইলের পরিবর্তে, প্রদত্ত ফাইলের নামে আউটপুট করুন। ফাইল
নাম stdout এবং stderr বিশেষভাবে চিকিত্সা করা হয় এবং ইতিমধ্যে খোলা বলে মনে করা হয়
স্ট্যান্ডার্ড স্ট্রীম উদাহরণ স্বরূপ,
gcc -o2 -ftree-vectorize -fdump- ট্রি-ভেক্টর-ব্লকস = foo.dump
-fdump- ট্রি-প্রি = স্টেরার ফাইল.সি
আউটপুট ভেক্টরাইজার ডাম্প মধ্যে foo.ডাম্প, যখন PRE ডাম্প আউটপুট চালু হয় stderr.
যদি একই পাসের জন্য দুটি বিরোধপূর্ণ ডাম্প ফাইলের নাম দেওয়া হয়, তাহলে পরবর্তীটি
বিকল্পটি আগেরটিকে ওভাররাইড করে।
সব বাদে সব অপশন চালু করুন কাঁচা, পাতলা, ভার্বোস এবং লাইননো.
অপটাল
সমস্ত অপ্টিমাইজেশান বিকল্পগুলি চালু করুন, যেমন, অপ্টিমাইজ, মিস, এবং বিঃদ্রঃ.
নিম্নলিখিত গাছের ডাম্প সম্ভব:
মূল
কোন গাছ ভিত্তিক অপ্টিমাইজেশান আগে ডাম্প, থেকে ফাইল.রিজিনাল.
অপ্টিমাইজ
সব গাছ ভিত্তিক অপ্টিমাইজেশান পরে ডাম্প, থেকে ফাইল.অপটিমাইজড.
জিম্পল
একটি ফাইলে জিমপ্লিফিকেশন পাসের আগে এবং পরে প্রতিটি ফাংশন ডাম্প করুন। ফাইল
নাম যোগ করে তৈরি করা হয় .গিম্পল উৎস ফাইলের নামে।
cfg প্রতিটি ফাংশনের কন্ট্রোল ফ্লো গ্রাফ একটি ফাইলে ডাম্প করুন। ফাইলের নাম দ্বারা তৈরি করা হয়
সংযোজন .cfg উৎস ফাইলের নামে।
ch লুপ হেডার কপি করার পর প্রতিটি ফাংশন ডাম্প করুন। ফাইলের নাম যোগ করে তৈরি করা হয়
.ch উৎস ফাইলের নামে।
SSA একটি ফাইলে SSA সম্পর্কিত তথ্য ডাম্প করুন। ফাইলের নাম যোগ করে তৈরি করা হয় .সা
উৎস ফাইলের নামে।
উপনাম
প্রতিটি ফাংশনের জন্য অ্যালিয়াসিং তথ্য ডাম্প করুন। ফাইলের নাম যোগ করে তৈরি করা হয়
.আলিয়াস উৎস ফাইলের নামে।
CCP CCP এর পরে প্রতিটি ফাংশন ডাম্প করুন। ফাইলের নাম যোগ করে তৈরি করা হয় .সিসিপি থেকে
উৎস ফাইলের নাম।
স্টোরেকসিপি
STORE-CCP এর পরে প্রতিটি ফাংশন ডাম্প করুন। ফাইলের নাম যোগ করে তৈরি করা হয় .storeccp
উৎস ফাইলের নামে।
প্রাক আংশিক অপ্রয়োজনীয়তা দূর করার পরে গাছ ডাম্প করুন। ফাইলের নাম দ্বারা তৈরি করা হয়
সংযোজন .প্রে উৎস ফাইলের নামে।
fre সম্পূর্ণ অপ্রয়োজনীয়তা দূর করার পরে গাছ ডাম্প করুন। ফাইলের নাম যোগ করে তৈরি করা হয়
.ফ্রে উৎস ফাইলের নামে।
কপিপ্রপ
অনুলিপি প্রচারের পরে গাছ ডাম্প করুন। ফাইলের নাম যোগ করে তৈরি করা হয় .কোপাইপ্রপ
উৎস ফাইলের নামে।
স্টোর_কোপাইপ্রপ
দোকান কপি-প্রচারের পরে গাছ ডাম্প. ফাইলের নাম যোগ করে তৈরি করা হয়
.আস্টোর_কোপাইপ্রপ উৎস ফাইলের নামে।
ডিসিই ডেড কোড নির্মূলের পর প্রতিটি ফাংশন ডাম্প করুন। ফাইলের নাম দ্বারা তৈরি করা হয়
সংযোজন .ডিসিই উৎস ফাইলের নামে।
মাইক্রোসফট সমষ্টির স্কেলার প্রতিস্থাপন সম্পাদন করার পরে প্রতিটি ফাংশন ডাম্প করুন। ফাইল
নাম যোগ করে তৈরি করা হয় .স্রা উৎস ফাইলের নামে।
ডুবা
কোড সিঙ্কিং করার পরে প্রতিটি ফাংশন ডাম্প করুন। ফাইলের নাম দ্বারা তৈরি করা হয়
সংযোজন ডুব উৎস ফাইলের নামে।
ডোম ডমিনেটর ট্রি অপ্টিমাইজেশান প্রয়োগ করার পরে প্রতিটি ফাংশন ডাম্প করুন। ফাইলের নাম হল
সংযোজন দ্বারা তৈরি । ডম উৎস ফাইলের নামে।
ডিএসই মৃত দোকান নির্মূল প্রয়োগ করার পরে প্রতিটি ফাংশন ডাম্প. ফাইলের নাম তৈরি করা হয়
যোগ করে .dse উৎস ফাইলের নামে।
Phiopt
PHI নোডগুলিকে স্ট্রেইটলাইন কোডে অপ্টিমাইজ করার পরে প্রতিটি ফাংশন ডাম্প করুন। ফাইল
নাম যোগ করে তৈরি করা হয় .ফিয়োপ্ট উৎস ফাইলের নামে।
ফোর্প্রপ
একক ব্যবহারের ভেরিয়েবলগুলিকে এগিয়ে প্রচার করার পরে প্রতিটি ফাংশন ডাম্প করুন। ফাইলের নাম
যোগ করে তৈরি করা হয় .Forwprop উৎস ফাইলের নামে।
কপিরিনেম
কপি রিনেম অপটিমাইজেশন প্রয়োগ করার পরে প্রতিটি ফাংশন ডাম্প করুন। ফাইলের নাম হল
সংযোজন দ্বারা তৈরি .কোপিরেনাম উৎস ফাইলের নামে।
এনআরভি জেনেরিকের উপর নামযুক্ত রিটার্ন মান অপ্টিমাইজেশান প্রয়োগ করার পরে প্রতিটি ফাংশন ডাম্প করুন
গাছ ফাইলের নাম যোগ করে তৈরি করা হয় .nrv উৎস ফাইলের নামে।
ভেক্ট
লুপগুলির ভেক্টরাইজেশন প্রয়োগ করার পরে প্রতিটি ফাংশন ডাম্প করুন। ফাইলের নাম তৈরি করা হয়
যোগ করে .vect উৎস ফাইলের নামে।
এসএলপি মৌলিক ব্লকের ভেক্টরাইজেশন প্রয়োগ করার পরে প্রতিটি ফাংশন ডাম্প করুন। ফাইলের নাম হল
সংযোজন দ্বারা তৈরি .এসএলপি উৎস ফাইলের নামে।
ভিআরপি ভ্যালু রেঞ্জ প্রোপাগেশন (VRP) এর পরে প্রতিটি ফাংশন ডাম্প করুন। ফাইলের নাম দ্বারা তৈরি করা হয়
সংযোজন .vrp উৎস ফাইলের নামে।
সব এই বিকল্পে প্রদত্ত পতাকা সহ সমস্ত উপলব্ধ ট্রি ডাম্প সক্রিয় করুন।
-fopt-তথ্য
-ফপ্ট-তথ্য-অপশন
-ফপ্ট-তথ্য-অপশন=ফাইলের নাম
বিভিন্ন অপ্টিমাইজেশন পাস থেকে অপ্টিমাইজেশান ডাম্প নিয়ন্ত্রণ করে। যদি -অপশন ফর্ম হল
ব্যবহৃত, অপশন এর একটি তালিকা - ডাম্প বিশদ নির্বাচন করতে পৃথক বিকল্প কীওয়ার্ড এবং
অপ্টিমাইজেশান
সার্জারির অপশন দুটি গোষ্ঠীতে বিভক্ত করা যেতে পারে: বিকল্পগুলির শব্দার্থ বর্ণনা করে
ডাম্প, এবং কোন অপটিমাইজেশন অন্তর্ভুক্ত করা উচিত তা বর্ণনা করে। থেকে বিকল্প
উভয় গ্রুপ অবাধে মিশ্রিত হতে পারে কারণ তারা অ ওভারল্যাপিং। যাইহোক, ক্ষেত্রে
কোনো দ্বন্দ্ব, পরবর্তী বিকল্পগুলি কমান্ড লাইনের আগের বিকল্পগুলিকে ওভাররাইড করে।
নিম্নলিখিত বিকল্পগুলি ডাম্প ভার্বোসিটি নিয়ন্ত্রণ করে:
অপ্টিমাইজ
একটি অপ্টিমাইজেশান সফলভাবে প্রয়োগ করা হলে তথ্য মুদ্রণ করুন। এটি একটি পাস পর্যন্ত
কোন তথ্য প্রাসঙ্গিক তা সিদ্ধান্ত নিতে। উদাহরণস্বরূপ, ভেক্টরাইজার প্রিন্ট পাস করে
সফলভাবে ভেক্টরাইজ করা লুপের উৎসের অবস্থান।
মিস
মিস করা অপ্টিমাইজেশন সম্পর্কে তথ্য মুদ্রণ করুন। ব্যক্তিগত পাস নিয়ন্ত্রণ যা
আউটপুটে অন্তর্ভুক্ত করার জন্য তথ্য।
বিঃদ্রঃ
অপ্টিমাইজেশান সম্পর্কে ভার্বোস তথ্য মুদ্রণ করুন, যেমন নির্দিষ্ট রূপান্তর,
সিদ্ধান্ত ইত্যাদি সম্পর্কে আরো বিস্তারিত বার্তা
সব বিস্তারিত অপ্টিমাইজেশান তথ্য মুদ্রণ করুন। এটা অন্তর্ভুক্ত অপ্টিমাইজ, মিস, এবং
বিঃদ্রঃ.
নিম্নলিখিত বিকল্পগুলির এক বা একাধিক কীওয়ার্ড একটি গ্রুপকে বর্ণনা করতে ব্যবহার করা যেতে পারে
অপ্টিমাইজেশন:
IPA সমস্ত আন্তঃপ্রক্রিয়াগত অপ্টিমাইজেশান থেকে ডাম্প সক্ষম করুন৷
লুপ
সমস্ত লুপ অপ্টিমাইজেশান থেকে ডাম্প সক্ষম করুন৷
সঙ্গতিপূর্ণভাবে
সমস্ত ইনলাইনিং অপ্টিমাইজেশান থেকে ডাম্প সক্ষম করুন৷
ভেক সমস্ত ভেক্টরাইজেশন অপ্টিমাইজেশান থেকে ডাম্প সক্ষম করুন৷
অপটাল
সমস্ত অপ্টিমাইজেশান থেকে ডাম্প সক্ষম করুন৷ এটি অপ্টিমাইজেশান গ্রুপগুলির একটি সুপারসেট
উপরে তালিকাভুক্ত।
If অপশন বাদ দেওয়া হয়, এটি ডিফল্ট অপ্টিমাইজড-অপ্টাল, যার অর্থ সমস্ত তথ্য ডাম্প করা
সমস্ত পাস থেকে সফল অপ্টিমাইজেশন সম্পর্কে।
যদি ফাইলের নাম প্রদান করা হয়, তারপর সব প্রযোজ্য অপ্টিমাইজেশন থেকে ডাম্প হয়
মধ্যে সংযুক্ত ফাইলের নাম. অন্যথায় ডাম্প আউটপুট সম্মুখের হয় stderr। যদিও
বহু -fopt-তথ্য বিকল্পগুলি গৃহীত হয়, শুধুমাত্র তাদের মধ্যে একটি অন্তর্ভুক্ত করতে পারে ফাইলের নাম। যদি
অন্যান্য ফাইলের নাম প্রদান করা হয় তারপর প্রথম বিকল্প ছাড়া সব উপেক্ষা করা হয়.
উল্লেখ্য যে আউটপুট ফাইলের নাম একাধিক অনুবাদ ইউনিটের ক্ষেত্রে ওভাররাইট করা হয়। যদি
একাধিক অনুবাদ ইউনিট থেকে একটি সম্মিলিত আউটপুট কাঙ্ক্ষিত, stderr ব্যবহার করা উচিত
পরিবর্তে.
নিম্নলিখিত উদাহরণে, অপ্টিমাইজেশান তথ্য আউটপুট হয় stderr:
gcc -O3 -fopt-তথ্য
এই উদাহরণ:
gcc -o3 -fopt -info -missed = মিস। সমস্ত
আউটপুট সব পাস থেকে অপ্টিমাইজেশান রিপোর্ট মিস মিস। সমস্ত, এবং এটি:
gcc -O2 -ftree-vectorize -fopt-info-vec-মিস
ভেক্টরাইজেশন পাস থেকে মিস অপ্টিমাইজেশন সুযোগ সম্পর্কে তথ্য মুদ্রণ করে
on stderr। মনে রাখবেন যে -ফোপ্ট-তথ্য-ভিসি-মিস সমতুল্য -fopt-তথ্য-মিসড-ভিইসি.
আরেকটি উদাহরণ হিসেবে,
gcc -o3 -fopt-info-inline- optimized-missed = inline.txt
মিস করা অপ্টিমাইজেশান এবং সেইসাথে অপ্টিমাইজ করা লোকেশন সম্পর্কে তথ্য আউটপুট করে
ইনলাইনিং প্রবেশ করে inline.txt.
অবশেষে, বিবেচনা করুন:
gcc -fopt-info-vec-missed = vec.miss -fopt- ইনফো-লুপ-অনুকূলিত = লুপ.ওপ্ট
এখানে দুটি আউটপুট ফাইলের নাম vec.miss এবং Loop.opt শুধুমাত্র একটি থেকে দ্বন্দ্ব আছে
আউটপুট ফাইল অনুমোদিত। এই ক্ষেত্রে, শুধুমাত্র প্রথম বিকল্প কার্যকর হয় এবং
পরবর্তী বিকল্প উপেক্ষা করা হয়. এইভাবে শুধুমাত্র vec.miss উত্পাদিত হয় যা ডাম্প ধারণ করে
মিস সুযোগ সম্পর্কে vectorizer থেকে.
-ফ্রেন্ডম-বীজ=সংখ্যা
এই বিকল্পটি একটি বীজ প্রদান করে যা GCC উৎপন্ন করার সময় এলোমেলো সংখ্যার জায়গায় ব্যবহার করে
নির্দিষ্ট প্রতীকের নাম যা প্রতিটি সংকলিত ফাইলে আলাদা হতে হবে। ইহা ও
কভারেজ ডেটা ফাইলে অনন্য স্ট্যাম্প স্থাপন করতে ব্যবহৃত হয় এবং যে বস্তুর ফাইলগুলি তৈরি করে
তাদের আপনি ব্যবহার করতে পারেন - অবাধ-বীজ প্রজননযোগ্য অভিন্ন বস্তু উত্পাদন করার বিকল্প
ফাইল।
সার্জারির সংখ্যা আপনার কম্পাইল করা প্রতিটি ফাইলের জন্য আলাদা হওয়া উচিত।
-ফসচেড-ভারবোজ =n
নির্দেশের সময়সূচী ব্যবহার করে এমন লক্ষ্যগুলিতে, এই বিকল্পটি পরিমাণ নিয়ন্ত্রণ করে
ডিবাগিং আউটপুট শিডিউলার প্রিন্ট। এই তথ্যটি স্ট্যান্ডার্ড ত্রুটিতে লেখা হয়েছে,
যদি না -fdump-rtl-sched1 or -fdump-rtl-sched2 নির্দিষ্ট করা হয়, যে ক্ষেত্রে এটি আউটপুট
সাধারণ ডাম্প তালিকা ফাইলে, .চেড 1 or .চেড 2 যথাক্রমে তবে এর জন্য n
নয়টির বেশি, আউটপুট সর্বদা স্ট্যান্ডার্ড ত্রুটিতে মুদ্রিত হয়।
জন্য n শূন্যের চেয়ে বড়, -ফসড-ভারবোজ হিসাবে একই তথ্য আউটপুট
-fdump-rtl-sched1 এবং -fdump-rtl-sched2। জন্য n একের বেশি, এটি মৌলিক আউটপুট
ব্লক সম্ভাবনা, বিস্তারিত প্রস্তুত তালিকা তথ্য এবং ইউনিট/insn তথ্য। জন্য n
দুইটির বেশি, এতে অ্যাবরট পয়েন্টে RTL, নিয়ন্ত্রণ-প্রবাহ এবং অঞ্চলের তথ্য অন্তর্ভুক্ত রয়েছে। এবং
উন্নত n চারের বেশি, -ফসড-ভারবোজ এছাড়াও নির্ভরতা তথ্য অন্তর্ভুক্ত.
-সেভ-টেম্পস
-স্যাভ-টেম্পস = সিডাব্লুডি
স্থায়ীভাবে স্বাভাবিক "অস্থায়ী" মধ্যবর্তী ফাইল সংরক্ষণ করুন; তাদের স্রোতে রাখুন
ডিরেক্টরি এবং উৎস ফাইলের উপর ভিত্তি করে তাদের নাম দিন। এইভাবে, কম্পাইলিং foo.c সঙ্গে -c
-সেভ-টেম্পস ফাইল তৈরি করে foo.i এবং foo.s, পাশাপাশি হিসাবে foo.o. এটি একটি তৈরি করে
প্রিপ্রসেসড foo.i আউটপুট ফাইল যদিও কম্পাইলার এখন সাধারণত একটি ব্যবহার করে
ইন্টিগ্রেটেড প্রিপ্রসেসর।
এর সাথে একত্রে ব্যবহার করা হলে -x কমান্ড লাইন বিকল্প, -সেভ-টেম্পস বুদ্ধিমান হয়
একটি ইনপুট সোর্স ফাইলের মতো একই এক্সটেনশন সহ লেখার উপর এড়াতে যথেষ্ট
মধ্যবর্তী ফাইল। সংশ্লিষ্ট মধ্যবর্তী ফাইল নাম পরিবর্তন করে প্রাপ্ত করা যেতে পারে
সোর্স ফাইল ব্যবহার করার আগে -সেভ-টেম্পস.
আপনি যদি জিসিসিকে সমান্তরালভাবে আমন্ত্রণ জানান, কয়েকটি বিভিন্ন উত্স ফাইল কম্পাইল করে যা ভাগ করে
বিভিন্ন সাবডিরেক্টরিতে সাধারণ বেস নাম বা একই সোর্স ফাইলের জন্য সংকলিত
একাধিক আউটপুট গন্তব্য, এটা সম্ভবত বিভিন্ন সমান্তরাল কম্পাইলার হবে
একে অপরের সাথে হস্তক্ষেপ করে, এবং অস্থায়ী ফাইলগুলি ওভাররাইট করে। এই ক্ষেত্রে:
gcc -save-temps -o outdir1/foo.o indir1/foo.c&
gcc -save-temps -o outdir2/foo.o indir2/foo.c&
ফলাফল হতে পারে foo.i এবং foo.o উভয় কম্পাইলার দ্বারা একযোগে লেখা হচ্ছে।
-স্যাভ-টেম্পস = ওবিজে
সাধারণ "অস্থায়ী" মধ্যবর্তী ফাইলগুলি স্থায়ীভাবে সংরক্ষণ করুন। যদি -o বিকল্প ব্যবহার করা হয়,
অস্থায়ী ফাইলগুলি অবজেক্ট ফাইলের উপর ভিত্তি করে। যদি -o বিকল্প ব্যবহার করা হয় না,
-স্যাভ-টেম্পস = ওবিজে সুইচ মত আচরণ করে -সেভ-টেম্পস.
উদাহরণ স্বরূপ:
জিসিসি -সেভ -টেম্পস = ওবিজে -সি foo.c
জিসিসি -সেভ -টেম্পস = ওবিজে -সি বার.সি -ও দির/এক্সবার.ও
জিসিসি -সেভ -টেম্পস = ওবিজে ফোবার.সি -ও ডির 2/ওয়াইফুবার
সৃষ্টি foo.i, foo.s, দির/এক্সবার.আই, দির/এক্সবার.এস, Dir2/yfoobar.i, Dir2/yfoobar.s, এবং
Dir2/yfoobar.o.
-time[=ফাইল]
কম্পাইলেশন সিকোয়েন্সে প্রতিটি সাবপ্রসেস দ্বারা নেওয়া CPU সময় রিপোর্ট করুন। সি এর জন্য
সোর্স ফাইল, এটি কম্পাইলার সঠিক এবং অ্যাসেম্বলার (প্লাস লিঙ্কার যদি লিঙ্ক করা হয়
সম্পন্ন).
একটি আউটপুট ফাইলের স্পেসিফিকেশন ছাড়া, আউটপুট এই মত দেখায়:
# সিসি 1 0.12 0.01
# হিসাবে 0.00 0.01
প্রতিটি লাইনের প্রথম সংখ্যাটি হল "ব্যবহারকারীর সময়", এটি কার্যকর করার জন্য ব্যয় করা সময়
প্রোগ্রাম নিজেই। দ্বিতীয় সংখ্যাটি হল "সিস্টেম টাইম", অপারেটিং নির্বাহে ব্যয় করা সময়
প্রোগ্রামের পক্ষে সিস্টেম রুটিন। উভয় সংখ্যাই সেকেন্ডে।
একটি আউটপুট ফাইলের স্পেসিফিকেশনের সাথে, আউটপুটটি নামযুক্ত ফাইলে যুক্ত করা হয়,
এবং এটি এই মত দেখায়:
0.12 0.01 cc1
0.00 0.01 হিসাবে
"ব্যবহারকারীর সময়" এবং "সিস্টেম সময়" প্রোগ্রামের নামের আগে সরানো হয়, এবং
প্রোগ্রামে পাস করা বিকল্পগুলি প্রদর্শিত হয়, যাতে কেউ পরে বলতে পারে কী ফাইল ছিল
কম্পাইল করা হচ্ছে, এবং কোন অপশন সহ।
-fvar-ট্র্যাকিং
পরিবর্তনশীল ট্র্যাকিং পাস চালান। এটি গণনা করে যেখানে প্রতিটি অবস্থানে ভেরিয়েবল সংরক্ষণ করা হয়
কোডে আরও ভাল ডিবাগিং তথ্য তারপর তৈরি করা হয় (যদি ডিবাগিং তথ্য
বিন্যাস এই তথ্য সমর্থন করে)।
অপ্টিমাইজেশানের সাথে কম্পাইল করার সময় এটি ডিফল্টরূপে সক্রিয় থাকে (-ওএস, -O, -ও2, ...),
ডিবাগিং তথ্য (-g) এবং ডিবাগ তথ্য বিন্যাস এটি সমর্থন করে।
-fvar-ট্র্যাকিং-অ্যাসাইনমেন্ট
সংকলনের প্রথম দিকে ব্যবহারকারীর ভেরিয়েবলে অ্যাসাইনমেন্টগুলিকে টীকা করুন এবং বহন করার চেষ্টা করুন৷
সম্পূর্ণ সংকলন জুড়ে টীকাগুলি শেষ পর্যন্ত, একটি প্রচেষ্টায়
অপ্টিমাইজ করার সময় ডিবাগ তথ্য উন্নত করতে। ব্যাবহার -gdwarf-4 বরাবর সুপারিশ করা হয়
এর সাথে.
var-ট্র্যাকিং অক্ষম থাকলেও এটি সক্ষম করা যেতে পারে, যে ক্ষেত্রে টীকাগুলি
তৈরি এবং রক্ষণাবেক্ষণ করা হয়েছে, কিন্তু শেষে বাতিল করা হয়েছে। ডিফল্টরূপে, এই পতাকা সক্রিয় করা হয়
এক্সাথে -fvar-ট্র্যাকিং, যখন নির্বাচনী সময়সূচী সক্ষম করা হয় তখন ছাড়া।
-fvar-ট্র্যাকিং-অ্যাসাইনমেন্ট-টগল
টগ্ল -fvar-ট্র্যাকিং-অ্যাসাইনমেন্ট, একইভাবে যে -gtoggle টগল -g.
-প্রিন্ট-ফাইল-নাম=লাইব্রেরি
লাইব্রেরি ফাইলের সম্পূর্ণ পরম নাম প্রিন্ট করুন লাইব্রেরি যে যখন ব্যবহার করা হবে
লিঙ্ক করা --- এবং অন্য কিছু করবেন না। এই বিকল্পের সাথে, GCC কম্পাইল বা লিঙ্ক করে না
কিছু; এটি শুধু ফাইলের নাম প্রিন্ট করে।
-প্রিন্ট-মাল্টি-ডিরেক্টরি
অন্য কোনো সুইচ দ্বারা নির্বাচিত মাল্টিলিবের সাথে সংশ্লিষ্ট ডিরেক্টরির নাম প্রিন্ট করুন
কমান্ড লাইনে উপস্থিত। এই ডিরেক্টরির মধ্যে বিদ্যমান অনুমিত হয় Gcc_exec_prefix.
-প্রিন্ট-মাল্টি-লিব
মাল্টিলিব ডিরেক্টরির নাম থেকে কম্পাইলার সুইচগুলিতে ম্যাপিং প্রিন্ট করুন যা তাদের সক্ষম করে।
ডিরেক্টরির নাম সুইচ দ্বারা পৃথক করা হয় ;, এবং প্রতিটি সুইচ একটি দিয়ে শুরু হয়
@ পরিবর্তে -, একাধিক সুইচের মধ্যে শূন্যস্থান ছাড়াই। এই অনুমিত হয়
সহজ শেল প্রক্রিয়াকরণ.
-প্রিন্ট-মাল্টি-ওএস-ডিরেক্টরি
নির্বাচিত মাল্টিলিবের জন্য ওএস লাইব্রেরির পাথ প্রিন্ট করুন, কিছুর তুলনায় liberal এর সংক্ষিপ্ত রূপ
সাবডিরেক্টরি OS লাইব্রেরি উপস্থিত থাকলে liberal এর সংক্ষিপ্ত রূপ সাবডিরেক্টরি এবং কোনো মাল্টিলিব নেই
ব্যবহার করা হয়, এই সাধারণত শুধু ., যদি OS লাইব্রেরিগুলিতে উপস্থিত থাকে libsuffix সহোদর
এই মুদ্রিত ডিরেক্টরি যেমন ../lib64, ../ lib or ../lib32, অথবা যদি OS লাইব্রেরি হয়
উপস্থাপন lib/subdir সাবডিরেক্টরি এটি প্রিন্ট করে যেমন amd64, স্পার্কভি 9 or ev6.
-প্রিন্ট-মাল্টিয়ার্ক
নির্বাচিত মাল্টিআর্কের জন্য OS লাইব্রেরির পাথ প্রিন্ট করুন, কিছুর তুলনায় liberal এর সংক্ষিপ্ত রূপ
উপ-ডিরেক্টরি
-প্রিন্ট-প্রোগ-নাম=কার্যক্রম
মত -প্রিন্ট-ফাইল-নাম, কিন্তু একটি প্রোগ্রামের জন্য অনুসন্ধান যেমন CPP.
-প্রিন্ট-লিবিজিসিসি-ফাইল-নাম
একই রকম -প্রিন্ট-ফাইল-নাম=libgcc.a.
আপনি ব্যবহার করার সময় এটি দরকারী -নোস্টডিলিব or -নোডফল্টলিবস কিন্তু আপনি লিঙ্ক করতে চান
libgcc.a. আপনি করতে পারেন:
gcc -nostdlib ... `gcc -print-libgcc-file-name`
-প্রিন্ট-সার্চ-ডিরার্স
কনফিগার করা ইনস্টলেশন ডিরেক্টরির নাম এবং প্রোগ্রামের একটি তালিকা এবং প্রিন্ট করুন
লাইব্রেরি ডিরেক্টরি জিসিসি অনুসন্ধান --- এবং অন্য কিছু করবেন না।
এই যখন দরকারী জিসিসি ত্রুটি বার্তা প্রিন্ট করে স্থাপন সমস্যা না পারেন Exec
সিপিপি 0: না এমন ফাইল or ডিরেক্টরি. এটি সমাধান করার জন্য আপনাকে হয় লাগাতে হবে সিপিপি 0 এবং
অন্যান্য কম্পাইলার উপাদান যেখানে জিসিসি তাদের খুঁজে পেতে আশা, অথবা আপনি সেট করতে পারেন
পরিবেশ সূচক Gcc_exec_prefix ডিরেক্টরিতে যেখানে আপনি তাদের ইনস্টল করেছেন। করবেন না
পিছিয়ে থাকা ভুলে যাও /.
-প্রিন্ট-সিসরুট
সংকলনের সময় ব্যবহৃত টার্গেট sysroot ডিরেক্টরি প্রিন্ট করুন। এই হল
লক্ষ্য sysroot নির্দিষ্ট করা হয় কনফিগার করার সময় বা ব্যবহার করে --sysroot বিকল্প,
সম্ভবত একটি অতিরিক্ত প্রত্যয় সহ যা সংকলন বিকল্পগুলির উপর নির্ভর করে। টার্গেট না থাকলে
sysroot নির্দিষ্ট করা হয়েছে, বিকল্পটি কিছুই প্রিন্ট করে না।
-প্রিন্ট-সিসরুট-হেডার-প্রত্যয়
হেডার অনুসন্ধান করার সময় টার্গেট sysroot-এ যোগ করা প্রত্যয়টি প্রিন্ট করুন, অথবা একটি দিন
কম্পাইলার যদি এই জাতীয় প্রত্যয়ের সাথে কনফিগার করা না থাকে তবে ত্রুটি --- এবং কিছু করবেন না
অন্য।
- ডাম্প মেশিন
কম্পাইলারের লক্ষ্য মেশিন প্রিন্ট করুন (উদাহরণস্বরূপ, আই 686-পিসি-লিনাক্স-জিএনইউ)---আর করবেন না
আর কিছু.
- ডাম্প সংস্করণ
কম্পাইলার সংস্করণ প্রিন্ট করুন (উদাহরণস্বরূপ, 3.0)---এবং অন্য কিছু করবেন না।
- ডাম্পস্পেস
কম্পাইলারের অন্তর্নির্মিত চশমাগুলি মুদ্রণ করুন --- এবং অন্য কিছু করবেন না। (এটি ব্যবহার করা হয় যখন
GCC নিজেই নির্মিত হচ্ছে।)
-fno-বর্জন-অব্যবহৃত-ডিবাগ-টাইপস
সাধারণত, DWARF 2 আউটপুট তৈরি করার সময়, GCC এর জন্য ডিবাগ প্রতীক আউটপুট তৈরি করা এড়িয়ে যায়
কম্পাইল করা সোর্স ফাইলে কোথাও ব্যবহার করা হয় না। কখনও কখনও এটি দরকারী
একটি সংকলন ইউনিটে ঘোষিত সমস্ত ধরণের জন্য GCC নির্গত ডিবাগিং তথ্য থাকতে,
নির্বিশেষে তারা আসলে সেই সংকলন ইউনিটে ব্যবহৃত হয় কিনা, এর জন্য
উদাহরণ যদি, ডিবাগারে, আপনি এমন একটি মান দিতে চান যা আসলে নয়
আপনার প্রোগ্রামে ব্যবহৃত (কিন্তু ঘোষিত)। আরো প্রায়ই, যাইহোক, এটি একটি ফলাফল
উল্লেখযোগ্য পরিমাণ নষ্ট স্থান।
অপশন সমূহ যে নিয়ন্ত্রণ অপ্টিমাইজেশান
এই বিকল্পগুলি বিভিন্ন ধরণের অপ্টিমাইজেশন নিয়ন্ত্রণ করে।
কোন অপটিমাইজেশন বিকল্প ছাড়াই, কম্পাইলারের লক্ষ্য হল সংকলনের খরচ কমানো
এবং ডিবাগিং প্রত্যাশিত ফলাফল উত্পাদন করতে. বিবৃতি স্বাধীন: যদি আপনি
বিবৃতিগুলির মধ্যে একটি ব্রেকপয়েন্ট সহ প্রোগ্রামটি বন্ধ করুন, তারপরে আপনি একটি নতুন মান নির্ধারণ করতে পারেন
যে কোন ভেরিয়েবল বা প্রোগ্রাম কাউন্টার পরিবর্তন করে অন্য কোন স্টেটমেন্টে ফাংশন এবং পান
আপনি উৎস কোড থেকে ঠিক ফলাফল আশা.
অপ্টিমাইজেশান ফ্ল্যাগ চালু করার ফলে কম্পাইলার কর্মক্ষমতা এবং/অথবা উন্নত করার চেষ্টা করে
সংকলনের সময় এবং সম্ভবত ডিবাগ করার ক্ষমতার ব্যয়ে কোডের আকার
প্রোগ্রাম.
কম্পাইলার প্রোগ্রামের জ্ঞানের উপর ভিত্তি করে অপ্টিমাইজেশান করে।
একক আউটপুট ফাইল মোডে একাধিক ফাইল একসাথে কম্পাইল করা কম্পাইলারকে ব্যবহার করার অনুমতি দেয়
তাদের প্রতিটি কম্পাইল করার সময় সমস্ত ফাইল থেকে প্রাপ্ত তথ্য।
সমস্ত অপ্টিমাইজেশান সরাসরি একটি পতাকা দ্বারা নিয়ন্ত্রিত হয় না। শুধুমাত্র অপ্টিমাইজেশান যে a আছে
পতাকা এই বিভাগে তালিকাভুক্ত করা হয়.
অধিকাংশ অপ্টিমাইজেশান শুধুমাত্র সক্রিয় করা হয় যদি একটি -O লেভেল কমান্ড লাইনে সেট করা আছে। অন্যথায়
পৃথক অপ্টিমাইজেশান ফ্ল্যাগ নির্দিষ্ট করা থাকলেও সেগুলি অক্ষম করা হয়েছে।
লক্ষ্য এবং কিভাবে GCC কনফিগার করা হয়েছে তার উপর নির্ভর করে, কিছুটা ভিন্ন সেট
প্রতিটিতে অপ্টিমাইজেশন সক্ষম করা যেতে পারে -O এখানে তালিকাভুক্ত তুলনায় স্তর. আপনি GCC আহ্বান করতে পারেন
সঙ্গে -Q --help=অপ্টিমাইজার এ সক্ষম হওয়া অপ্টিমাইজেশনের সঠিক সেট খুঁজে বের করতে
প্রতিটি স্তর।
-O
-ও1 অপ্টিমাইজ করুন। সংকলন অপ্টিমাইজ করার জন্য কিছুটা বেশি সময় লাগে, এবং অনেক বেশি মেমরি
একটি বড় ফাংশন।
সঙ্গে -O, কম্পাইলার পারফর্ম না করে কোডের আকার এবং এক্সিকিউশন সময় কমানোর চেষ্টা করে
যেকোন অপ্টিমাইজেশান যা কম্পাইলেশনের জন্য প্রচুর সময় নেয়।
-O নিম্নলিখিত অপ্টিমাইজেশান পতাকা চালু করে:
-fauto-inc-ডিসেম্বর -ফব্র্যাঞ্চ-কাউন্ট-রেগ -fcombine-স্ট্যাক-সামঞ্জস্য -FCOMPARE-LIM
-fcprop-রেজিস্টার -fdce -ফডিফার-পপ -fdelayed-শাখা -fdse -ফরওয়ার্ড-প্রচার করা
-fguess-শাখা-সম্ভাব্যতা -fif-রূপান্তর২ -fif-রূপান্তর
-ফিনলাইন-ফাংশন-কলে-একবার -ফিপা-বিশুদ্ধ-কনস্ট -ফিপা-প্রোফাইল -ফিপা-রেফারেন্স
-fmerge-ধ্রুবক -ফমভ-লুপ-আক্রমণকারীরা -ফ্রিংক-মোড় -fsplit-ওয়াইড-টাইপস
-এফট্রি-বিট-সিসিপি -এফট্রি-সিসিপি -fssa-phiopt -ftre-ch -ftre-কপি-প্রপ -ftree-কপিরনাম
-free-dce -free-dominator-opts -ftre-dse -free-forwprop -ফ্রি-ফ্রি -ফ্রি-ফিপ্রপ
-ফ্রি-সিঙ্ক -এফটি-এসএলএসআর -ftre-sra -এফটি-পিটিএ -free-ter -এক সময়ে মজা করা
-O এছাড়াও চালু হয় -ফমিট-ফ্রেম-পয়েন্টার মেশিনে যেখানে এটি করা হস্তক্ষেপ করে না
ডিবাগিং সহ।
-ও2 আরও অপ্টিমাইজ করুন। GCC প্রায় সমস্ত সমর্থিত অপ্টিমাইজেশান সঞ্চালন করে যা করে না
একটি স্থান-গতি ট্রেডঅফ জড়িত. তুলনামুলকভাবে -O, এই বিকল্প উভয় বৃদ্ধি
সংকলন সময় এবং উত্পন্ন কোড কর্মক্ষমতা.
-ও2 দ্বারা নির্দিষ্ট করা সমস্ত অপ্টিমাইজেশান পতাকা চালু করে -O. এটি নিম্নলিখিতগুলিও চালু করে
অপ্টিমাইজেশান পতাকা: -fthread-জাম্প -ফ্যালাইন-ফাংশন -ফালাইন-জাম্প ফ্যালাইন-লুপস
-ফ্যালাইন-লেবেল -fcaller-সংরক্ষণ -ফক্রসজাম্পিং -fcse-অনুসরণ-জাম্প -FCSE-SKIP-BLOCKS
-ফডিলিট-নাল-পয়েন্টার-চেকস -fdevirtualize -fdevirtualize-অনুমানমূলকভাবে
ব্যয়বহুল-অপ্টিমাইজেশান -fgcse -fgcse-lm -fhoist-সংলগ্ন-লোড
-ফিনলাইন-ছোট-ফাংশন -ফাইনডাইরেক্ট-ইনলাইনিং -ফিপা-সিপি -ফিপা-সিপি-সারিবদ্ধকরণ -ফিপা-স্রা
-ফিপা-আইসিএফ -ফিসোলেট-ভুল-পথ-অধিকার -ফ্লরা-রিম্যাট -ফোপ্টিমাইজ-ভাই-কল
-foptimize-strlen -আংশিক-ইনলাইনিং -fpephole2 -ফ্রিঅর্ডার-ব্লক
-ফ্রিঅর্ডার-ব্লক-এবং-পার্টিশন -ফ্রিঅর্ডার-ফাংশন -frerun-cse-আফটার-লুপ
-fsched-ইন্টারব্লক -fsched-বিশেষ -fschedule- inss -fschedule-inss2 -ট্রিক্ট-এলিয়াসিং
-fstrict-ওভারফ্লো -এফটি-বিল্টিন-কল-ডিসিই -এফট্রি-সুইচ-রূপান্তর -free-tail-merge
-ফ্রি-প্রি -এফটি-ভিআরপি -ফিপা-রা
নীচে সতর্কতা নোট করুন -fgcse আহ্বান সম্পর্কে -ও2 কম্পিউটেড ব্যবহার করে এমন প্রোগ্রামগুলিতে
গোটোস
দ্রষ্টব্য: উবুন্টু 8.10 এবং পরবর্তী সংস্করণগুলিতে, -D_fortify_source = 2 ডিফল্টরূপে সেট করা হয়, এবং হয়
সক্রিয় যখন -O 2 বা উচ্চতর সেট করা হয়েছে। এটি অতিরিক্ত কম্পাইল-টাইম সক্ষম করে এবং
বেশ কয়েকটি libc ফাংশনের জন্য রান-টাইম পরীক্ষা করে। নিষ্ক্রিয় করতে, যে কোনো একটি নির্দিষ্ট করুন
-U_fortify_source or -D_fortify_source = 0.
-ও3 আরো অপ্টিমাইজ করুন. -ও3 দ্বারা নির্দিষ্ট করা সমস্ত অপ্টিমাইজেশান চালু করে -ও2 এবং চালু হয়
দ্য -ফিনলাইন-ফাংশন, -ফানসুইচ-লুপস, -ফপ্রেডিকটিভ-কমনিং, -fgcse-আফটার-রিলোড,
-ফ্রি-লুপ-ভেক্টরাইজ, -এফট্রি-লুপ-ডিস্ট্রিবিউট-প্যাটার্ন, -এফটি-এসএলপি-ভেক্টরাইজ,
-fvect-কস্ট-মডেল, -ফ্রি-আংশিক-প্রাক এবং -ফিপা-সিপি-ক্লোন অপশন।
-ও0 কম্পাইলেশনের সময় হ্রাস করুন এবং ডিবাগিং প্রত্যাশিত ফলাফল তৈরি করুন। এই হল
ডিফল্ট.
-ওএস আকারের জন্য অপ্টিমাইজ করুন। -ওএস সব সক্ষম করে -ও2 অপ্টিমাইজেশান যা সাধারণত বৃদ্ধি পায় না
কোড আকার। এটি কোডের আকার কমাতে ডিজাইন করা আরও অপ্টিমাইজেশানও সঞ্চালন করে।
-ওএস নিম্নলিখিত অপ্টিমাইজেশান পতাকা নিষ্ক্রিয় করে: -ফ্যালাইন-ফাংশন -ফালাইন-জাম্প
ফ্যালাইন-লুপস -ফ্যালাইন-লেবেল -ফ্রিঅর্ডার-ব্লক -ফ্রিঅর্ডার-ব্লক-এবং-পার্টিশন
-fprefetch-লুপ-অ্যারে
-অফাস্ট
কঠোর মান সম্মতি উপেক্ষা. -অফাস্ট সব সক্ষম করে -ও3 অপ্টিমাইজেশান এটাও
অপ্টিমাইজেশান সক্ষম করে যা সমস্ত মান-সম্মত প্রোগ্রামের জন্য বৈধ নয়। এটা
সক্রিয় ফাস্ট-গণিত এবং ফোর্টরান-নির্দিষ্ট -ফনো-প্রোটেক্ট-প্যারেনস এবং -fstack-অ্যারে.
-ওগ ডিবাগিং অভিজ্ঞতা অপ্টিমাইজ করুন। -ওগ অপ্টিমাইজেশান সক্ষম করে যা হস্তক্ষেপ করে না
ডিবাগিং এটি আদর্শ সম্পাদনার জন্য পছন্দের অপ্টিমাইজেশান স্তর হওয়া উচিত-
কম্পাইল-ডিবাগ চক্র, রক্ষণাবেক্ষণের সময় একটি যুক্তিসঙ্গত স্তরের অপ্টিমাইজেশান প্রদান করে
দ্রুত সংকলন এবং একটি ভাল ডিবাগিং অভিজ্ঞতা।
আপনি যদি একাধিক ব্যবহার করেন -O বিকল্প, লেভেল নম্বর সহ বা ছাড়া, শেষ এই ধরনের বিকল্প
কার্যকর যে এক.
ফর্মের বিকল্প -fপতাকা মেশিন-স্বাধীন পতাকা নির্দিষ্ট করুন। অধিকাংশ পতাকা দুটিই আছে
ইতিবাচক এবং নেতিবাচক ফর্ম; এর নেতিবাচক রূপ -ফু is -fno-foo. নীচের টেবিলে,
শুধুমাত্র একটি ফর্ম তালিকাভুক্ত করা হয়েছে---যেটি আপনি সাধারণত ব্যবহার করেন। আপনি অন্য চিন্তা করতে পারেন
হয় অপসারণ দ্বারা ফর্ম না- বা এটি যোগ করা।
নিম্নলিখিত বিকল্পগুলি নির্দিষ্ট অপ্টিমাইজেশন নিয়ন্ত্রণ করে। তারা হয় দ্বারা সক্রিয় করা হয় -O
অপশন বা যেগুলির সাথে সম্পর্কিত। আপনি বিরল মধ্যে নিম্নলিখিত পতাকা ব্যবহার করতে পারেন
ক্ষেত্রে যখন অপ্টিমাইজেশানের "ফাইন-টিউনিং" করা উচিত।
-ফনো-ডিফার-পপ
ফাংশন রিটার্ন করার সাথে সাথে সর্বদা প্রতিটি ফাংশন কলে আর্গুমেন্টগুলি পপ করুন। জন্য
যে মেশিনে একটি ফাংশন কলের পরে আর্গুমেন্ট পপ করতে হবে, কম্পাইলার সাধারণত অনুমতি দেয়
বেশ কয়েকটি ফাংশন কলের জন্য স্ট্যাকে আর্গুমেন্ট জমা হয় এবং সেগুলিকে পপ করে
একদা.
স্তরে অক্ষম -O, -ও2, -ও3, -ওএস.
-ফরওয়ার্ড-প্রচার করা
RTL এ একটি ফরোয়ার্ড প্রচার পাস সম্পাদন করুন। পাস দুটি নির্দেশ একত্রিত করার চেষ্টা করে
এবং ফলাফল সরলীকৃত করা যেতে পারে কিনা তা পরীক্ষা করে। লুপ আনরোলিং সক্রিয় থাকলে, দুটি পাস
সঞ্চালিত হয় এবং দ্বিতীয়টি লুপ আনরোল করার পরে নির্ধারিত হয়।
এই বিকল্পটি অপ্টিমাইজেশান স্তরে ডিফল্টরূপে সক্রিয় থাকে৷ -O, -ও2, -ও3, -ওএস.
-ffp-চুক্তি=শৈলী
-ffp-চুক্তি=বন্ধ ফ্লোটিং-পয়েন্ট এক্সপ্রেশন সংকোচন নিষ্ক্রিয় করে। -ffp-চুক্তি=দ্রুত
ফ্লোটিং-পয়েন্ট এক্সপ্রেশন সংকোচনকে সক্ষম করে যেমন ফিউজড মাল্টিপ্লাই-অ্যাড গঠন করা
লক্ষ্য তাদের জন্য স্থানীয় সমর্থন আছে যদি অপারেশন. -ffp-চুক্তি=অন সম্ভব
ভাসমান-বিন্দু অভিব্যক্তি সংকোচন যদি ভাষার মান দ্বারা অনুমোদিত হয়। এই
বর্তমানে বাস্তবায়িত হয় না এবং এর সমান আচরণ করা হয় -ffp-চুক্তি=বন্ধ.
ডিফল্ট হয় -ffp-চুক্তি=দ্রুত.
-ফমিট-ফ্রেম-পয়েন্টার
যে ফাংশনগুলির প্রয়োজন নেই তার জন্য ফ্রেম পয়েন্টারটিকে একটি রেজিস্টারে রাখবেন না। এই
ফ্রেম পয়েন্টার সংরক্ষণ, সেট আপ এবং পুনরুদ্ধার করার নির্দেশাবলী এড়িয়ে যায়; এটা তোলে একটি
অতিরিক্ত রেজিস্টার অনেক ফাংশনে উপলব্ধ। It এছাড়াও তোলে ডিবাগিং অসম্ভব on
কিছু মেশিন।
কিছু মেশিনে, যেমন VAX, এই পতাকার কোন প্রভাব নেই, কারণ মান
কলিং সিকোয়েন্স স্বয়ংক্রিয়ভাবে ফ্রেম পয়েন্টার পরিচালনা করে এবং কিছুই সংরক্ষিত হয় না
এটা বিদ্যমান নেই ভান. মেশিন-বিবরণ ম্যাক্রো "FRAME_POINTER_REQUIRED"
একটি লক্ষ্য মেশিন এই পতাকা সমর্থন করে কিনা তা নিয়ন্ত্রণ করে।
32-বিট GNU/Linux x86 এবং 32-বিটের জন্য ডিফল্ট সেটিং (আকারের জন্য অপ্টিমাইজ না করার সময়)
ডারউইন x86 টার্গেট -ফমিট-ফ্রেম-পয়েন্টার. আপনি এর সাথে GCC কনফিগার করতে পারেন
--সক্ষম-ফ্রেম-পয়েন্টার ডিফল্ট পরিবর্তন করতে কনফিগার বিকল্প।
স্তরে সক্রিয় -O, -ও2, -ও3, -ওএস.
-ফোপ্টিমাইজ-ভাই-কল
ভাইবোন এবং পুনরাবৃত্ত কল অপ্টিমাইজ করুন।
স্তরে সক্রিয় -ও2, -ও3, -ওএস.
-foptimize-strlen
বিভিন্ন স্ট্যান্ডার্ড সি স্ট্রিং ফাংশন অপ্টিমাইজ করুন (যেমন "strlen", "strchr" বা "strcpy") এবং
দ্রুত বিকল্পে তাদের "_FORTIFY_SOURCE" প্রতিরূপ।
স্তরে সক্রিয় -ও2, -ও3.
-fno-ইনলাইন
"সর্বদা_ইনলাইন" দিয়ে চিহ্নিত ফাংশনগুলি ছাড়া অন্য কোনো ফাংশন ইনলাইনে প্রসারিত করবেন না
বৈশিষ্ট্য অপ্টিমাইজ না করার সময় এটি ডিফল্ট।
একক ফাংশনকে "নোইনলাইন" দিয়ে চিহ্নিত করে ইনলাইন থেকে ছাড় দেওয়া যেতে পারে
বৈশিষ্ট্যাবলী।
-ফিনলাইন-ছোট-ফাংশন
যখন তাদের শরীর প্রত্যাশার চেয়ে ছোট হয় তখন তাদের কলারের সাথে ফাংশনগুলিকে একীভূত করুন৷
ফাংশন কল কোড (তাই প্রোগ্রামের সামগ্রিক আকার ছোট হয়ে যায়)। কম্পাইলার
হিউরিস্টিকভাবে সিদ্ধান্ত নেয় কোন ফাংশনগুলিকে একীভূত করার জন্য যথেষ্ট সহজ
এই পথে. এই ইনলাইনিং সমস্ত ফাংশনের ক্ষেত্রে প্রযোজ্য, এমনকি যেগুলি ইনলাইন ঘোষণা করা হয়নি।
স্তরে সক্রিয় -ও2.
-ফাইনডাইরেক্ট-ইনলাইনিং
ইনলাইন এছাড়াও পরোক্ষ কল যে কম্পাইল সময় পরিচিত হতে আবিষ্কৃত হয় ধন্যবাদ
পূর্ববর্তী ইনলাইনিং। ইনলাইনিং চালু হলেই এই বিকল্পটির কোনো প্রভাব থাকে
দ্বারা -ফিনলাইন-ফাংশন or -ফিনলাইন-ছোট-ফাংশন অপশন।
স্তরে সক্রিয় -ও2.
-ফিনলাইন-ফাংশন
ইনলাইন করার জন্য সমস্ত ফাংশন বিবেচনা করুন, এমনকি যদি সেগুলি ইনলাইন ঘোষণা না করা হয়। দ্য
কম্পাইলার হিউরিস্টিকভাবে সিদ্ধান্ত নেয় যে কোন ফাংশনগুলি এইভাবে একত্রিত করা মূল্যবান।
যদি একটি প্রদত্ত ফাংশনের সমস্ত কল একত্রিত করা হয়, এবং ফাংশন ঘোষণা করা হয়
"স্ট্যাটিক", তাহলে ফাংশনটি সাধারণত অ্যাসেম্বলার কোড হিসাবে তার নিজের অধিকারে আউটপুট হয় না।
স্তরে সক্রিয় -ও3.
-ফিনলাইন-ফাংশন-কলে-একবার
এমনকি যদি তাদের কলার ইনলাইন করার জন্য একবার কল করা সমস্ত "স্ট্যাটিক" ফাংশন বিবেচনা করুন
তারা "ইনলাইন" হিসাবে চিহ্নিত করা হয় না। যদি একটি প্রদত্ত ফাংশন একটি কল একত্রিত করা হয়, তারপর
ফাংশন তার নিজের অধিকারে অ্যাসেম্বলার কোড হিসাবে আউটপুট নয়।
স্তরে সক্রিয় -ও1, -ও2, -ও3 এবং -ওএস.
-ভয়পূর্ণ-ইনলাইনিং
"সর্বদা_ইনলাইন" দ্বারা চিহ্নিত ইনলাইন ফাংশন এবং যে ফাংশনগুলির বডি এর থেকে ছোট বলে মনে হয়৷
ফাংশন কল ওভারহেড তাড়াতাড়ি করার আগে -প্রোফাইল-জেনারেট করুন ইন্সট্রুমেন্টেশন এবং
আসল ইনলাইনিং পাস। এটি করার ফলে প্রোফাইলিং উল্লেখযোগ্যভাবে সস্তা এবং সাধারণত
নেস্টেড র্যাপার ফাংশনের বড় চেইন থাকা প্রোগ্রামগুলিতে দ্রুত ইনলাইন করা।
ডিফল্টরূপে সক্ষম করা হয়েছে।
-ফিপা-স্রা
সমষ্টির আন্তঃপ্রক্রিয়াগত স্কেলার প্রতিস্থাপন, অব্যবহৃত পরামিতি অপসারণ সম্পাদন করুন
এবং মান দ্বারা পাস করা পরামিতি দ্বারা রেফারেন্স দ্বারা পাস করা পরামিতিগুলির প্রতিস্থাপন।
স্তরে সক্রিয় -ও2, -ও3 এবং -ওএস.
-ফিনলাইন-সীমা=n
ডিফল্টরূপে, GCC ফাংশনের আকার সীমিত করে যা ইনলাইন করা যেতে পারে। এই পতাকা অনুমতি দেয়
এই সীমার মোটা নিয়ন্ত্রণ। n ইনলাইন করা যেতে পারে যে ফাংশন আকার
ছদ্ম নির্দেশাবলীর সংখ্যা।
ইনলাইনিং আসলে বেশ কয়েকটি পরামিতি দ্বারা নিয়ন্ত্রিত হয়, যা নির্দিষ্ট করা যেতে পারে
স্বতন্ত্রভাবে ব্যবহার করে --পরম নাম=মূল্য. দ্য -ফিনলাইন-সীমা=n বিকল্প কিছু সেট করে
এই পরামিতিগুলি নিম্নরূপ:
সর্বোচ্চ-ইনলাইন-ইনস-সিঙ্গেল
তৈরি n/ 2।
সর্বোচ্চ-ইনলাইন-ইনস-অটো
তৈরি n/ 2।
ইনলাইনিং এবং নিয়ন্ত্রণকারী পৃথক পরামিতিগুলির একটি ডকুমেন্টেশনের জন্য নীচে দেখুন
এই পরামিতিগুলির ডিফল্টের জন্য।
বিঃদ্রঃ: এর কোন মূল্য থাকতে পারে -ফিনলাইন-সীমা যার ফলে ডিফল্ট আচরণ হয়।
বিঃদ্রঃ: ছদ্ম নির্দেশ প্রতিনিধিত্ব করে, এই বিশেষ প্রসঙ্গে, একটি বিমূর্ত
ফাংশনের আকার পরিমাপ। কোনোভাবেই এটি সমাবেশের গণনার প্রতিনিধিত্ব করে না
নির্দেশাবলী এবং যেমন এর সঠিক অর্থ এক রিলিজ থেকে পরিবর্তিত হতে পারে
অন্য।
-fno-কিপ-ইনলাইন-dllexport
এটি একটি আরো সূক্ষ্ম-দানা সংস্করণ -fkeep-ইনলাইন-ফাংশন, যা শুধুমাত্র প্রযোজ্য
যে ফাংশনগুলি "dllexport" অ্যাট্রিবিউট বা declspec ব্যবহার করে ঘোষণা করা হয়
-fkeep-ইনলাইন-ফাংশন
সি-তে, "স্ট্যাটিক" ফাংশন নির্গত করুন যেগুলি অবজেক্ট ফাইলে "ইনলাইন" ঘোষণা করা হয়, এমনকি যদি
ফাংশন তার সমস্ত কলার মধ্যে ইনলাইন করা হয়েছে. এই সুইচ প্রভাবিত করে না
GNU C90 এ "এক্সটার্ন ইনলাইন" এক্সটেনশন ব্যবহার করে ফাংশন। C++ এ, যেকোন এবং সব নির্গত করুন
অবজেক্ট ফাইলে ইনলাইন ফাংশন।
-ফকিপ-স্ট্যাটিক-কনস্টস
অপ্টিমাইজেশান চালু না থাকলে "স্ট্যাটিক কনস্ট" ঘোষণা করা ভেরিয়েবল নির্গত করা হয়
ভেরিয়েবল উল্লেখ করা হয় না.
GCC ডিফল্টরূপে এই বিকল্পটি সক্রিয় করে। কম্পাইলারকে জোর করে চেক করতে চাইলে ক
অপ্টিমাইজেশান চালু হোক বা না হোক, ভেরিয়েবলটি উল্লেখ করা হয়েছে, ব্যবহার করুন
দ্য -fno-কিপ-স্ট্যাটিক-কনস্টস বিকল্প।
-fmerge-ধ্রুবক
অভিন্ন ধ্রুবকগুলিকে একত্রিত করার প্রচেষ্টা (স্ট্রিং ধ্রুবক এবং ভাসমান-বিন্দু ধ্রুবক)
সংকলন ইউনিট জুড়ে।
এই বিকল্পটি অপ্টিমাইজ করা সংকলনের জন্য ডিফল্ট যদি অ্যাসেম্বলার এবং লিঙ্কার থাকে
এটা সমর্থন ব্যবহার করুন -fno-merge-constant এই আচরণকে বাধা দিতে।
স্তরে সক্রিয় -O, -ও2, -ও3, -ওএস.
-fmerge-সমস্ত ধ্রুবক
অভিন্ন ধ্রুবক এবং অভিন্ন ভেরিয়েবল একত্রিত করার প্রচেষ্টা।
এই বিকল্পটি বোঝায় -fmerge-ধ্রুবক। এ ছাড়াও -fmerge-ধ্রুবক এই
বিবেচনা করে যেমন এমনকি ধ্রুবক ইনিশিয়ালাইজড অ্যারে বা ইনিশিয়ালাইজড কনস্ট্যান্ট ভেরিয়েবলের সাথে
অবিচ্ছেদ্য বা ভাসমান-বিন্দু প্রকার। C বা C++ এর মতো ভাষার প্রতিটি পরিবর্তনশীল প্রয়োজন,
রিকার্সিভ কলে একই ভেরিয়েবলের একাধিক দৃষ্টান্ত সহ, স্বতন্ত্র থাকার জন্য
অবস্থান, তাই এই বিকল্পটি ব্যবহার করার ফলে অসঙ্গতিপূর্ণ আচরণ হয়।
-fmodulo-নির্ধারিত
প্রথম শিডিউলিং পাসের আগে অবিলম্বে সুইং মডিউল শিডিউলিং সম্পাদন করুন। এই
পাস অভ্যন্তরীণ লুপগুলি দেখে এবং বিভিন্ন ওভারল্যাপ করে তাদের নির্দেশগুলিকে পুনরায় সাজায়
পুনরাবৃত্তি।
-fmodulo-নির্ধারিত-অনুমতি-রেগমুভস
অনুমোদিত রেজিস্টার চালনা সহ আরও আক্রমনাত্মক এসএমএস-ভিত্তিক মডুলো সময়সূচী সম্পাদন করুন। দ্বারা
এই পতাকা সেট করার ফলে কিছু বিরোধী-নির্ভরতার প্রান্ত মুছে ফেলা হয়, যা ট্রিগার করে
জীবন-পরিসীমা বিশ্লেষণের উপর ভিত্তি করে রেগ-মুভের প্রজন্ম। এই বিকল্পটি কার্যকর
শুধুমাত্র সঙ্গে -fmodulo-নির্ধারিত সক্ষম করা হয়েছে।
-fno-শাখা-গণনা-রেজি
একটি গণনা রেজিস্টারে "হ্রাস এবং শাখা" নির্দেশাবলী ব্যবহার করবেন না, পরিবর্তে
নির্দেশাবলীর একটি ক্রম তৈরি করুন যা একটি রেজিস্টারকে হ্রাস করে, এর সাথে তুলনা করে
শূন্য, তারপর ফলাফলের উপর ভিত্তি করে শাখা। এই বিকল্পটি শুধুমাত্র অর্থবহ
আর্কিটেকচার যা এই ধরনের নির্দেশাবলী সমর্থন করে, যার মধ্যে রয়েছে x86, PowerPC, IA-64 এবং
এস/৩৯০।
এ ডিফল্টরূপে সক্রিয় করা হয়েছে৷ -ও1 এবং উচ্চতর।
ডিফল্ট হয় -ফব্র্যাঞ্চ-কাউন্ট-রেগ.
-fno-ফাংশন-cse
রেজিস্টারে ফাংশন ঠিকানা রাখবেন না; একটি কল যে প্রতিটি নির্দেশ তৈরি করুন
ধ্রুবক ফাংশন স্পষ্টভাবে ফাংশনের ঠিকানা ধারণ করে।
এই বিকল্পটি কম কার্যকরী কোডের ফলাফল, কিন্তু কিছু অদ্ভুত হ্যাক যা পরিবর্তন করে
অ্যাসেম্বলার আউটপুট অপ্টিমাইজেশান দ্বারা বিভ্রান্ত হতে পারে যখন এই বিকল্পটি হয়
ব্যবহার করা হয় না.
ডিফল্ট হয় -ফাংশন-সিএসই
-fno-শূন্য-শুরু-ইন-বিএসএস
যদি লক্ষ্য একটি BSS বিভাগ সমর্থন করে, GCC ডিফল্টভাবে ভেরিয়েবল রাখে
BSS-এ শূন্য থেকে শুরু করা হয়েছে। এটি ফলাফল কোডে স্থান সংরক্ষণ করতে পারে।
এই বিকল্পটি এই আচরণটি বন্ধ করে দেয় কারণ কিছু প্রোগ্রাম স্পষ্টভাবে ভেরিয়েবলের উপর নির্ভর করে
ডাটা সেকশনে যাচ্ছে---যেমন, ফলে এক্সিকিউটেবল খুঁজে পেতে পারে
সেই বিভাগের শুরু এবং/অথবা তার উপর ভিত্তি করে অনুমান করা।
ডিফল্ট হয় -fzero-শুরু করা-ইন-বিএসএস.
-fthread-জাম্প
অপ্টিমাইজেশানগুলি সঞ্চালন করুন যেটি দেখতে একটি লাফানো একটি অবস্থান যেখানে অন্য একটি শাখা আছে কিনা তা পরীক্ষা করে৷
প্রথম দ্বারা অনুপস্থিত তুলনা পাওয়া যায়। যদি তাই হয়, প্রথম শাখা পুনঃনির্দেশিত হয়
হয় দ্বিতীয় শাখার গন্তব্য বা অবিলম্বে এটি অনুসরণ করা একটি বিন্দু,
শর্তটি সত্য বা মিথ্যা বলে পরিচিত কিনা তার উপর নির্ভর করে।
স্তরে সক্রিয় -ও2, -ও3, -ওএস.
-fsplit-ওয়াইড-টাইপস
একটি টাইপ ব্যবহার করার সময় যা একাধিক রেজিস্টার দখল করে, যেমন একটি 32-বিটে "লং লং"
সিস্টেম, রেজিস্টারগুলিকে আলাদা করে বিভক্ত করুন এবং সেগুলি স্বাধীনভাবে বরাদ্দ করুন। এই সাধারণত
এই ধরনের জন্য আরও ভাল কোড তৈরি করে, কিন্তু ডিবাগিং আরও কঠিন করে তুলতে পারে।
স্তরে সক্রিয় -O, -ও2, -ও3, -ওএস.
-fcse-অনুসরণ-জাম্প
সাধারণ সাবএক্সপ্রেশন এলিমিনেশন (CSE), জাম্প নির্দেশাবলীর মাধ্যমে স্ক্যান করুন যখন
অন্য কোনো পথ দিয়ে লাফের লক্ষ্যে পৌঁছানো যায় না। উদাহরণস্বরূপ, যখন CSE সম্মুখীন হয়
একটি "যদি" বিবৃতি একটি "অন্য" ধারা সহ, CSE যখন শর্ত থাকে তখন লাফ দেয়
পরীক্ষিত মিথ্যা।
স্তরে সক্রিয় -ও2, -ও3, -ওএস.
-FCSE-SKIP-BLOCKS
এটির মতোই -fcse-অনুসরণ-জাম্প, কিন্তু CSE এর ফলে লাফিয়ে যায়
শর্তসাপেক্ষে ব্লকের উপর এড়িয়ে যান। যখন CSE একটি সাধারণ "if" স্টেটমেন্টের সম্মুখীন হয় যার সাথে নং
অন্য ধারা, -FCSE-SKIP-BLOCKS CSE এর শরীরের চারপাশে জাম্প অনুসরণ করে
"যদি"।
স্তরে সক্রিয় -ও2, -ও3, -ওএস.
-frerun-cse-আফটার-লুপ
লুপ অপ্টিমাইজেশান সঞ্চালিত হওয়ার পরে সাধারণ সাব এক্সপ্রেশন নির্মূল পুনরায় চালান।
স্তরে সক্রিয় -ও2, -ও3, -ওএস.
-fgcse
একটি বিশ্বব্যাপী সাধারণ সাব এক্সপ্রেশন নির্মূল পাস সম্পাদন করুন। এই পাস এছাড়াও সঞ্চালন
বিশ্বব্যাপী ধ্রুবক এবং অনুলিপি প্রচার।
বিঃদ্রঃ: কম্পিউটেড গোটোস ব্যবহার করে একটি প্রোগ্রাম কম্পাইল করার সময়, একটি GCC এক্সটেনশন, আপনি পেতে পারেন
আপনি যদি গ্লোবাল কমন সাব এক্সপ্রেশন নির্মূল অক্ষম করেন তবে রান-টাইম পারফরম্যান্স আরও ভাল
যোগ করে পাস -fno-gcse কমান্ড লাইনে।
স্তরে সক্রিয় -ও2, -ও3, -ওএস.
-fgcse-lm
কখন -fgcse-lm সক্রিয় করা হয়েছে, গ্লোবাল কমন সাব এক্সপ্রেশন বর্জন করার চেষ্টা করা হচ্ছে
লোড যে শুধুমাত্র নিজেদের মধ্যে দোকান দ্বারা নিহত হয়. এটি a ধারণকারী একটি লুপ অনুমতি দেয়
লোড/স্টোর সিকোয়েন্স লুপের বাইরের লোডে পরিবর্তন করতে হবে এবং এর মধ্যে একটি কপি/স্টোর
লুপ।
ডিফল্টরূপে সক্রিয় যখন -fgcse সক্রিয় করা হয়.
-fgcse-Sm
কখন -fgcse-Sm সক্ষম করা হয়েছে, একটি স্টোর মোশন পাস গ্লোবাল কমনের পরে চালানো হয়
সাব এক্সপ্রেশন নির্মূল। এই পাসটি দোকানগুলিকে লুপের বাইরে সরানোর চেষ্টা করে৷ যখন ব্যবহার করা হয়
সাথে -fgcse-lm, একটি লোড/স্টোর ক্রম ধারণকারী লুপ পরিবর্তন করা যেতে পারে
লুপের আগে একটি লোড এবং লুপের পরে একটি স্টোর।
কোনো অপ্টিমাইজেশান স্তরে সক্ষম নয়৷
-fgcse-las
কখন -fgcse-las সক্রিয় করা হয়েছে, গ্লোবাল কমন সাব এক্সপ্রেশন নির্মূল পাস
অপ্রয়োজনীয় লোডগুলি সরিয়ে দেয় যা স্টোরের পরে একই মেমরি অবস্থানে আসে (উভয়
আংশিক এবং সম্পূর্ণ অপ্রয়োজনীয়তা)।
কোনো অপ্টিমাইজেশান স্তরে সক্ষম নয়৷
-fgcse-আফটার-রিলোড
কখন -fgcse-আফটার-রিলোড সক্রিয় করা হয়েছে, একটি অপ্রয়োজনীয় লোড নির্মূল পাস সঞ্চালিত হয়
পুনরায় লোড করার পরে। এই পাসের উদ্দেশ্য হল অপ্রয়োজনীয় স্পিলিং পরিষ্কার করা।
-ফ্যাগ্রেসিভ-লুপ-অপ্টিমাইজেশন
এই বিকল্পটি লুপ অপ্টিমাইজারকে সীমানা বের করতে ভাষার সীমাবদ্ধতা ব্যবহার করতে বলে
একটি লুপের পুনরাবৃত্তির সংখ্যা। এটি অনুমান করে যে লুপ কোড আহ্বান করে না
অনির্ধারিত আচরণ উদাহরণস্বরূপ স্বাক্ষরিত পূর্ণসংখ্যা ওভারফ্লো বা আউট-অফ-বাউন্ড সৃষ্টি করে
অ্যারে অ্যাক্সেস একটি লুপের পুনরাবৃত্তির সংখ্যার সীমা নির্দেশ করতে ব্যবহৃত হয়
লুপ আনরোলিং এবং পিলিং এবং লুপ প্রস্থান পরীক্ষা অপ্টিমাইজেশান। এই বিকল্প সক্রিয় করা হয়েছে
গতানুগতিক.
-ফানসেফ-লুপ-অপ্টিমাইজেশন
এই বিকল্পটি লুপ অপ্টিমাইজারকে অনুমান করতে বলে যে লুপ সূচকগুলি ওভারফ্লো হয় না এবং
যে loops nontrivial প্রস্থান শর্ত অসীম নয়. এই একটি বিস্তৃত সক্রিয়
লুপ অপ্টিমাইজেশনের পরিসর এমনকি লুপ অপ্টিমাইজার নিজেই প্রমাণ করতে না পারলেও
অনুমান বৈধ। ব্যবহার করলে -উনসেফ-লুপ-অপ্টিমাইজেশন, কম্পাইলার আপনাকে সতর্ক করে
যদি এটি লুপ এই ধরনের খুঁজে পায়.
-ফক্রসজাম্পিং
ক্রস-জাম্পিং রূপান্তর সম্পাদন করুন। এই রূপান্তরটি সমতুল্য কোডকে একীভূত করে এবং
কোড আকার সংরক্ষণ করে। ফলস্বরূপ কোড ক্রস- ছাড়ার চেয়ে ভাল পারফর্ম করতে পারে বা নাও করতে পারে
জাম্পিং
স্তরে সক্রিয় -ও2, -ও3, -ওএস.
-fauto-inc-ডিসেম্বর
মেমরি অ্যাক্সেসের সাথে ঠিকানার বৃদ্ধি বা হ্রাস একত্রিত করুন। এই পাস
সর্বদা স্থাপত্যগুলিতে এড়িয়ে যান যেগুলিতে এটি সমর্থন করার জন্য নির্দেশাবলী নেই।
এ ডিফল্টরূপে সক্রিয় করা হয়েছে৷ -O এবং এটি সমর্থন করে এমন আর্কিটেকচারে উচ্চতর।
-fdce
RTL-এ ডেড কোড এলিমিনেশন (DCE) সম্পাদন করুন। এ ডিফল্টরূপে সক্রিয় করা হয়েছে৷ -O এবং উচ্চতর।
-fdse
RTL-এ ডেড স্টোর এলিমিনেশন (DSE) সম্পাদন করুন। এ ডিফল্টরূপে সক্রিয় করা হয়েছে৷ -O এবং উচ্চতর।
-fif-রূপান্তর
শর্তসাপেক্ষ লাফগুলিকে শাখা-হীন সমতুল্যগুলিতে রূপান্তর করার প্রচেষ্টা। এটা অন্তর্ভুক্ত
শর্তসাপেক্ষ চাল, ন্যূনতম, সর্বোচ্চ, সেট পতাকা এবং abs নির্দেশাবলী এবং কিছু কৌশল ব্যবহার
আদর্শ পাটিগণিত দ্বারা সম্ভব। যেখানে চিপ আছে সেখানে শর্তসাপেক্ষ এক্সিকিউশনের ব্যবহার
উপলব্ধ দ্বারা নিয়ন্ত্রিত হয় -fif-রূপান্তর২.
স্তরে সক্রিয় -O, -ও2, -ও3, -ওএস.
-fif-রূপান্তর২
শর্তসাপেক্ষ জাম্পে রূপান্তর করতে শর্তসাপেক্ষ এক্সিকিউশন (যেখানে উপলব্ধ) ব্যবহার করুন
শাখা-হীন সমতুল্য।
স্তরে সক্রিয় -O, -ও2, -ও3, -ওএস.
-fdeclone-Ctor-Dtor
C++ ABI-এর কনস্ট্রাক্টর এবং ডেস্ট্রাক্টরের জন্য একাধিক এন্ট্রি পয়েন্ট প্রয়োজন: একটি এর জন্য
বেস সাবজেক্ট, একটি সম্পূর্ণ অবজেক্টের জন্য এবং একটি ভার্চুয়াল ডেস্ট্রক্টরের জন্য যা কল করে
অপারেটর পরে মুছে ফেলুন। ভার্চুয়াল ঘাঁটি সহ একটি অনুক্রমের জন্য, বেস এবং সম্পূর্ণ
ভেরিয়েন্ট হল ক্লোন, যার মানে ফাংশনের দুটি কপি। এই বিকল্পের সাথে,
বেস এবং সম্পূর্ণ ভেরিয়েন্টগুলিকে থাঙ্কস হিসাবে পরিবর্তিত করা হয় যা একটি সাধারণ বাস্তবায়নকে কল করে।
দ্বারা সক্রিয় -ওএস.
-ফডিলিট-নাল-পয়েন্টার-চেকস
অনুমান করুন যে প্রোগ্রামগুলি নিরাপদে নাল পয়েন্টারগুলিকে আলাদা করতে পারে না এবং কোনও কোড বা ডেটা নেই
উপাদান সেখানে থাকে। এটি সহজ ধ্রুবক ভাঁজ অপ্টিমাইজেশান সক্ষম করে
অপ্টিমাইজেশান স্তর। উপরন্তু, GCC-তে অন্যান্য অপ্টিমাইজেশন পাস এই পতাকা ব্যবহার করে
বিশ্বব্যাপী ডেটাফ্লো বিশ্লেষণগুলি নিয়ন্ত্রণ করে যা নাল পয়েন্টারগুলির জন্য অকেজো চেকগুলি দূর করে;
এগুলি অনুমান করে যে যদি একটি পয়েন্টারটি ইতিমধ্যেই ডিরেফারেন্স করার পরে চেক করা হয় তবে এটি
শূন্য হতে পারে না।
তবে মনে রাখবেন যে কিছু পরিবেশে এই অনুমানটি সত্য নয়। ব্যবহার করুন
-FNO-DELETE-NULL- পয়েন্টার-চেকস নির্ভরশীল প্রোগ্রামগুলির জন্য এই অপ্টিমাইজেশনটি নিষ্ক্রিয় করতে
সেই আচরণের উপর।
কিছু লক্ষ্য, বিশেষ করে এম্বেড করা, এই বিকল্পটি সমস্ত স্তরে অক্ষম করে। অন্যথায়
এটি সব স্তরে সক্রিয় করা হয়েছে: -ও0, -ও1, -ও2, -ও3, -ওএস. পাস যে তথ্য ব্যবহার করে
বিভিন্ন অপ্টিমাইজেশান স্তরে স্বাধীনভাবে সক্রিয় করা হয়।
-fdevirtualize
কলগুলিকে ভার্চুয়াল ফাংশনে সরাসরি কলে রূপান্তর করার চেষ্টা করুন। এই উভয় করা হয়
একটি পদ্ধতির মধ্যে এবং আন্তঃপ্রক্রিয়াগতভাবে পরোক্ষ ইনলাইনিংয়ের অংশ হিসাবে
(-ফাইনডাইরেক্ট-ইনলাইনিং) এবং আন্তঃপ্রক্রিয়াগত ধ্রুবক প্রচার (-ফিপা-সিপি) এ সক্ষম করা হয়েছে
মাত্রা -ও2, -ও3, -ওএস.
-fdevirtualize-অনুমানমূলকভাবে
কলগুলিকে ভার্চুয়াল ফাংশনে অনুমানমূলক সরাসরি কলে রূপান্তর করার চেষ্টা করুন। উপর ভিত্তি করে
টাইপ উত্তরাধিকার গ্রাফ বিশ্লেষণ, একটি প্রদত্ত কলের জন্য সেট নির্ধারণ করুন
সম্ভাব্য লক্ষ্য। যদি সেটটি ছোট হয়, বিশেষত 1 আকারের, কলটি a এ পরিবর্তন করুন
প্রত্যক্ষ এবং পরোক্ষ কলগুলির মধ্যে শর্তসাপেক্ষ সিদ্ধান্ত নেওয়া। অনুমানমূলক কল সক্রিয়
আরো অপ্টিমাইজেশান, যেমন ইনলাইনিং। যখন তারা আরও পরে অকেজো মনে হয়
অপ্টিমাইজেশান, তারা মূল ফর্ম ফিরে রূপান্তরিত হয়.
-fdevirtualize-at-ltrans
লিঙ্কটি চালানোর সময় আক্রমণাত্মক ডিভার্চুয়ালাইজেশনের জন্য প্রয়োজনীয় অতিরিক্ত তথ্য স্ট্রিম করুন-
স্থানীয় রূপান্তর মোডে সময় অপ্টিমাইজার। এই বিকল্পটি আরও সক্ষম করে
ডিভার্চুয়ালাইজেশন কিন্তু উল্লেখযোগ্যভাবে স্ট্রিম করা ডেটার আকার বাড়ায়। এই জন্য
কারণ এটি ডিফল্টরূপে নিষ্ক্রিয় করা হয়।
ব্যয়বহুল-অপ্টিমাইজেশান
তুলনামূলকভাবে ব্যয়বহুল কিছু ছোটখাট অপ্টিমাইজেশান সম্পাদন করুন।
স্তরে সক্রিয় -ও2, -ও3, -ওএস.
মুক্ত
অপ্রয়োজনীয় এক্সটেনশন নির্দেশাবলী সরানোর চেষ্টা করুন। এই জন্য বিশেষভাবে সহায়ক
x86-64 আর্কিটেকচার, যা পরোক্ষভাবে 64-বিট রেজিস্টারে শূন্য-প্রসারিত করে
তাদের নিম্ন 32-বিট অর্ধেক লেখা.
স্তরে আলফা, AArch64 এবং x86 এর জন্য সক্ষম করা হয়েছে৷ -ও2, -ও3, -ওএস.
-এফএনও-লাইফটাইম-ডিএসই
C++ এ একটি বস্তুর মান শুধুমাত্র তার জীবদ্দশায় পরিবর্তন দ্বারা প্রভাবিত হয়: কখন
কনস্ট্রাক্টর শুরু হয়, অবজেক্টের একটি অনির্দিষ্ট মান থাকে এবং এর সময় কোন পরিবর্তন হয়
বস্তুর জীবনকাল মৃত যখন বস্তু ধ্বংস হয়. সাধারণত মৃত দোকান
নির্মূল এই সুবিধা গ্রহণ করবে; যদি আপনার কোড মানের উপর নির্ভর করে
অবজেক্ট স্টোরেজ অবজেক্টের জীবনকাল অতিক্রম করে, আপনি এই পতাকা ব্যবহার করতে পারেন
এই অপ্টিমাইজেশান নিষ্ক্রিয়.
-ফ্লাইভ-রেঞ্জ-সঙ্কোচন
রেজিস্টার লাইভ রেঞ্জ সংকোচনের মাধ্যমে রেজিস্টার চাপ কমানোর চেষ্টা। এই
ছোট বা মাঝারি আকারের রেজিস্টার সেট সহ দ্রুত প্রসেসরের জন্য সহায়ক।
-ফিরা-অ্যালগরিদম=অ্যালগরিদম
ইন্টিগ্রেটেড রেজিস্টার বরাদ্দকারীর জন্য নির্দিষ্ট রঙের অ্যালগরিদম ব্যবহার করুন। দ্য
অ্যালগরিদম যুক্তি হতে পারে অগ্রাধিকার, যা Chow এর অগ্রাধিকার রঙ নির্দিষ্ট করে, বা CB,
যা Chaitin-Briggs কালারিং নির্দিষ্ট করে। Chaitin-Briggs রঙ বাস্তবায়ন করা হয় না
সমস্ত আর্কিটেকচারের জন্য, কিন্তু যে লক্ষ্যগুলি এটি সমর্থন করে, তাদের জন্য এটি ডিফল্ট
কারণ এটি আরও ভাল কোড তৈরি করে।
-ফিরা-অঞ্চল=এলাকা
ইন্টিগ্রেটেড রেজিস্টার বরাদ্দকারীর জন্য নির্দিষ্ট অঞ্চল ব্যবহার করুন। দ্য এলাকা যুক্তি
নিম্নলিখিতগুলির মধ্যে একটি হওয়া উচিত:
সব রেজিস্টার বরাদ্দ অঞ্চল হিসাবে সমস্ত লুপ ব্যবহার করুন। এই জন্য সেরা ফলাফল দিতে পারেন
একটি ছোট এবং/অথবা অনিয়মিত রেজিস্টার সেট সহ মেশিন।
মিশ্র
অঞ্চল হিসাবে ছোট রেজিস্টার চাপ সহ লুপ ব্যতীত সমস্ত লুপ ব্যবহার করুন। এই
মান সাধারণত বেশিরভাগ ক্ষেত্রে এবং বেশিরভাগ আর্কিটেকচারের জন্য সেরা ফলাফল দেয়, এবং
গতির জন্য অপ্টিমাইজেশানের সাথে কম্পাইল করার সময় ডিফল্টরূপে সক্রিয় করা হয় (-O, -ও2, ...)।
এক একটি একক অঞ্চল হিসাবে সমস্ত ফাংশন ব্যবহার করুন। এটি সাধারণত ক্ষুদ্রতম কোডে পরিণত হয়
আকার, এবং এর জন্য ডিফল্টরূপে সক্ষম -ওএস or -ও0.
-ফিরা-উত্থান-চাপ
উত্তোলনের সিদ্ধান্তের জন্য কোড উত্তোলন পাসে রেজিস্টার চাপ মূল্যায়ন করতে IRA ব্যবহার করুন
অভিব্যক্তি এই বিকল্পটি সাধারণত ছোট কোডে পরিণত হয়, তবে এটি ধীর করতে পারে
কম্পাইলার ডাউন।
এই বিকল্পটি স্তরে সক্রিয় করা হয়েছে -ওএস সব লক্ষ্যের জন্য।
-ফিরা-লুপ-চাপ
লুপ ইনভেরিয়েন্টগুলি সরানোর সিদ্ধান্তের জন্য লুপে রেজিস্টার চাপ মূল্যায়ন করতে IRA ব্যবহার করুন।
এই বিকল্পটি সাধারণত মেশিনে দ্রুত এবং ছোট কোড তৈরি করে
বড় রেজিস্টার ফাইল (>= 32টি রেজিস্টার), কিন্তু এটি কম্পাইলারকে ধীর করে দিতে পারে।
এই বিকল্পটি স্তরে সক্রিয় করা হয়েছে -ও3 কিছু লক্ষ্যের জন্য।
-fno-ira-শেয়ার-সেভ-স্লট
কল-ব্যবহৃত হার্ড রেজিস্টার বাঁচানোর জন্য ব্যবহৃত স্ট্যাক স্লট শেয়ারিং অক্ষম করুন
ডাক. প্রতিটি হার্ড রেজিস্টার একটি পৃথক স্ট্যাক স্লট পায়, এবং ফলস্বরূপ ফাংশন স্ট্যাক
ফ্রেম বড়।
-fno-ira-শেয়ার-স্পিল-স্লট
সিউডো-রেজিস্টারের জন্য বরাদ্দ করা স্ট্যাক স্লট শেয়ারিং অক্ষম করুন। প্রতিটি ছদ্ম-রেজিস্টার
যে একটি হার্ড রেজিস্টার পায় না একটি পৃথক স্ট্যাক স্লট পায়, এবং ফলস্বরূপ ফাংশন
স্ট্যাক ফ্রেম বড়.
-ফিরা-ভার্বোস=n
ইন্টিগ্রেটেড রেজিস্টার বরাদ্দকারীর জন্য ডাম্প ফাইলের ভার্বোসিটি নিয়ন্ত্রণ করুন। দ্য
ডিফল্ট মান 5। মান থাকলে n 10 এর বেশি বা সমান, ডাম্প আউটপুট পাঠানো হয়
হিসাবে একই বিন্যাস ব্যবহার করে stderr n বিয়োগ 10
-ফ্লরা-রিম্যাট
LRA-তে CFG-সংবেদনশীল রিমেটেরিয়ালাইজেশন সক্ষম করুন। পরিবর্তে ছিটকে মান লোড
ছদ্ম, এলআরএ যদি লাভজনক হয় তবে মানকে পুনঃমৌলিককরণ (পুনঃগণনা) করার চেষ্টা করে।
স্তরে সক্রিয় -ও2, -ও3, -ওএস.
-fdelayed-শাখা
টার্গেট মেশিনের জন্য সমর্থিত হলে, শোষণ করার জন্য নির্দেশগুলি পুনরায় সাজানোর চেষ্টা করুন
বিলম্বিত শাখা নির্দেশের পরে নির্দেশনা স্লট উপলব্ধ।
স্তরে সক্রিয় -O, -ও2, -ও3, -ওএস.
-fschedule- inss
লক্ষ্য মেশিনের জন্য সমর্থিত হলে, নির্মূল করার জন্য নির্দেশাবলী পুনরায় সাজানোর চেষ্টা করুন
প্রয়োজনীয় ডেটা অনুপলব্ধ হওয়ার কারণে কার্যকরী স্টল। এই যে মেশিন সাহায্য করে
অন্যান্য নির্দেশাবলীর অনুমতি দিয়ে ধীর ভাসমান পয়েন্ট বা মেমরি লোড নির্দেশাবলী আছে
লোড বা ফ্লোটিং-পয়েন্ট নির্দেশের প্রয়োজন না হওয়া পর্যন্ত জারি করা হবে।
স্তরে সক্রিয় -ও2, -ও3.
-fschedule-inss2
অনুরূপ, একই, সমতুল্য -fschedule- inss, কিন্তু নির্দেশনা শিডিউলিংয়ের একটি অতিরিক্ত পাসের অনুরোধ করে
রেজিস্টার বরাদ্দ করা হয়েছে পরে. এটি একটি সহ মেশিনে বিশেষভাবে কার্যকর
তুলনামূলকভাবে কম সংখ্যক রেজিস্টার এবং যেখানে মেমরি লোড নির্দেশাবলীর চেয়ে বেশি লাগে
একটি চক্র।
স্তরে সক্রিয় -ও2, -ও3, -ওএস.
-fno-নির্ধারিত-ইন্টারব্লক
মৌলিক ব্লক জুড়ে নির্দেশাবলী নির্ধারণ করবেন না। এটি সাধারণত ডিফল্টরূপে সক্রিয় করা হয়
রেজিস্টার বরাদ্দের আগে সময়সূচী করার সময়, যেমন সঙ্গে -fschedule- inss বা এ -ও2 or
ঊর্ধ্বতন.
-fno-sched-স্পেক
অ-লোড নির্দেশাবলীর অনুমানমূলক গতির অনুমতি দেবেন না। এটি সাধারণত দ্বারা সক্রিয় করা হয়
রেজিস্টার বরাদ্দের আগে সময়সূচী করার সময় ডিফল্ট, যেমন এর সাথে -fschedule- inss বা এ
-ও2 বা উচ্চতর
-fsched-চাপ
রেজিস্টার বরাদ্দের আগে রেজিস্টার চাপ সংবেদনশীল insn সময়সূচী সক্ষম করুন। এই
রেজিস্টার বরাদ্দ সক্রিয় করার আগে সময়সূচী করার সময়ই তখনই অর্থপূর্ণ হয়, যেমন এর সাথে
-fschedule- inss বা এ -ও2 অথবা উচ্চতর. এই বিকল্পের ব্যবহার উৎপন্ন উন্নত করতে পারে
কোড এবং সংখ্যার উপরে রেজিস্টার চাপ বৃদ্ধি রোধ করে এর আকার হ্রাস করুন
রেজিস্টার বরাদ্দে উপলব্ধ হার্ড রেজিস্টার এবং পরবর্তী ছিটকে পড়া।
-fsched-স্পেক-লোড
কিছু লোড নির্দেশের অনুমানমূলক গতির অনুমতি দিন। এই শুধুমাত্র যখন জ্ঞান করে তোলে
রেজিস্টার বরাদ্দ আগে সময়সূচী, যেমন সঙ্গে -fschedule- inss বা এ -ও2 বা উচ্চতর
-fsched-বিশেষ-লোড-বিপজ্জনক
আরো লোড নির্দেশের অনুমানমূলক গতির অনুমতি দিন। এই শুধুমাত্র যখন জ্ঞান করে তোলে
রেজিস্টার বরাদ্দ আগে সময়সূচী, যেমন সঙ্গে -fschedule- inss বা এ -ও2 বা উচ্চতর
-ফসচড-স্টলড-ইনস
-ফসচড-স্টলড-ইনসএনএস =n
অচলের সারি থেকে কতগুলি insns (যদি থাকে) অকালে সরানো যায় তা নির্ধারণ করুন
দ্বিতীয় সময়সূচী পাসের সময় প্রস্তুত তালিকায় insns. -fno-sched- স্টলড-ইনস
মানে অকালে কোনো ইনসন্স সরানো হয় না, -ফসচড-স্টলড-ইনসএনএস = 0 কোন আছে মানে
কতগুলি সারিবদ্ধ insns সময়ের আগে সরানো যেতে পারে তার সীমা। -ফসচড-স্টলড-ইনস
একটি মান ছাড়া সমতুল্য -ফসচড-স্টলড-ইনসএনএস = 1.
-ফসচড-স্টলড-ইনস-ডেপ
-ফসচড-স্টলড-ইনস-ডেপ =n
একটি স্থগিত insn-এর উপর নির্ভরতার জন্য কতগুলি insn গ্রুপ (চক্র) পরীক্ষা করা হয় তা নির্ধারণ করুন
যেটি স্থবির ইনএসএনএসের সারি থেকে অকাল অপসারণের প্রার্থী। এই আছে
একটি প্রভাব শুধুমাত্র দ্বিতীয় সময়সূচী পাসের সময়, এবং শুধুমাত্র যদি -ফসচড-স্টলড-ইনস is
ব্যবহার করা হয়েছে। -fno-sched- স্টলড-ইনস-ডেপ সমতুল্য -ফসচড-স্টলড-ইনস-ডেপ = 0.
-ফসচড-স্টলড-ইনস-ডেপ একটি মান ছাড়া সমতুল্য
-ফসচড-স্টলড-ইনস-ডেপ = 1.
-fsched2-ব্যবহার-সুপারব্লক
রেজিস্টার বরাদ্দের পরে সময়সূচী করার সময়, সুপারব্লক সময়সূচী ব্যবহার করুন। এই অনুমতি দেয়
বেসিক ব্লক সীমানা জুড়ে গতি, যার ফলে দ্রুত সময়সূচী হয়। এই বিকল্প হয়
পরীক্ষামূলক, যেহেতু GCC মডেল দ্বারা ব্যবহৃত সমস্ত মেশিনের বিবরণ CPU যথেষ্ট ঘনিষ্ঠভাবে ব্যবহার করে না
অ্যালগরিদম থেকে অবিশ্বস্ত ফলাফল এড়াতে।
রেজিস্টার বরাদ্দের পরে সময়সূচী করার সময় এটি শুধুমাত্র অর্থপূর্ণ হয়, যেমন এর সাথে
-fschedule-inss2 বা এ -ও2 বা উচ্চতর
-fsched-গ্রুপ-হিউরিস্টিক
সময়সূচীতে গ্রুপ হিউরিস্টিক সক্ষম করুন। এই হিউরিস্টিক নির্দেশের পক্ষে
যেটি একটি শিডিউল গ্রুপের অন্তর্গত। সময়সূচী করার সময় এটি ডিফল্টরূপে সক্রিয় থাকে
সক্রিয়, যেমন সঙ্গে -fschedule- inss or -fschedule-inss2 বা এ -ও2 বা উচ্চতর
-fsched-সমালোচনা-পাথ-হিউরিস্টিক
সময়সূচীতে ক্রিটিকাল-পাথ হিউরিস্টিক সক্ষম করুন। এই হিউরিস্টিক পক্ষে
সমালোচনামূলক পথে নির্দেশাবলী। সময়সূচী করার সময় এটি ডিফল্টরূপে সক্রিয় থাকে
সক্রিয়, যেমন সঙ্গে -fschedule- inss or -fschedule-inss2 বা এ -ও2 বা উচ্চতর
-ফসচড-স্পেক-ইন-হিউরিস্টিক
সময়সূচীতে অনুমানমূলক নির্দেশ হিউরিস্টিক সক্ষম করুন। এই হিউরিস্টিক পক্ষে
বৃহত্তর নির্ভরতা দুর্বলতা সঙ্গে অনুমানমূলক নির্দেশাবলী. এটি ডিফল্টরূপে সক্ষম
যখন সময়সূচী সক্রিয় করা হয়, যেমন এর সাথে -fschedule- inss or -fschedule-inss2 বা এ -ও2
বা উচ্চতর
-fsched-র্যাঙ্ক-হিউরিস্টিক
সময়সূচীতে র্যাঙ্ক হিউরিস্টিক সক্ষম করুন। এই হিউরিস্টিক নির্দেশের পক্ষে
বৃহত্তর আকার বা ফ্রিকোয়েন্সি সহ একটি মৌলিক ব্লকের অন্তর্গত। এটি ডিফল্টরূপে সক্ষম
যখন সময়সূচী সক্রিয় করা হয়, যেমন এর সাথে -fschedule- inss or -fschedule-inss2 বা এ -ও2
বা উচ্চতর
-ফসচড-লাস্ট-ইন-হিউরিস্টিক
শিডিউলারে শেষ-নির্দেশ হিউরিস্টিক সক্ষম করুন। এই হিউরিস্টিক পক্ষে
নির্দেশ যা নির্ধারিত শেষ নির্দেশের উপর কম নির্ভরশীল। এটি সক্রিয় করা হয়েছে
ডিফল্টরূপে যখন সময়সূচী সক্রিয় করা হয়, যেমন এর সাথে -fschedule- inss or -fschedule-inss2
বা এ -ও2 বা উচ্চতর
-ফসড-ডেপ-কাউন্ট-হিউরিস্টিক
শিডিউলারে নির্ভরশীল-গণনা হিউরিস্টিক সক্ষম করুন। এই হিউরিস্টিক পক্ষে
যে নির্দেশের উপর নির্ভর করে আরও নির্দেশাবলী রয়েছে। এটি ডিফল্টরূপে সক্ষম
যখন সময়সূচী সক্রিয় করা হয়, যেমন এর সাথে -fschedule- inss or -fschedule-inss2 বা এ -ও2
বা উচ্চতর
-ফ্রেশডিউল-মডিউল-নির্ধারিত-লুপ
মডুলো সময়সূচী ঐতিহ্যগত সময়সূচীর আগে সঞ্চালিত হয়। যদি একটি লুপ মডুলো হয়
নির্ধারিত, পরবর্তী সময়সূচী পাস তার সময়সূচী পরিবর্তন করতে পারে। এই বিকল্পটি ব্যবহার করুন
সেই আচরণ নিয়ন্ত্রণ করুন।
-fselective-শিডিউলিং
নির্বাচনী সময়সূচী অ্যালগরিদম ব্যবহার করে নির্দেশাবলী নির্ধারণ করুন। নির্বাচনী সময়সূচী রান
প্রথম শিডিউলার পাসের পরিবর্তে।
-ফসেক্টিভ-স্কিডুলিং 2
নির্বাচনী সময়সূচী অ্যালগরিদম ব্যবহার করে নির্দেশাবলী নির্ধারণ করুন। নির্বাচনী সময়সূচী রান
পরিবর্তে দ্বিতীয় সময়সূচী পাস.
-fsel-নির্ধারিত-পাইপলাইনিং
নির্বাচনী শিডিউলিংয়ের সময় সবচেয়ে ভিতরের লুপের সফ্টওয়্যার পাইপলাইনিং সক্ষম করুন। এই
একটি ছাড়া বিকল্পের কোন প্রভাব নেই -fselective-শিডিউলিং or -ফসেক্টিভ-স্কিডুলিং 2
চালু করা হয়।
-fsel-নির্ধারিত-পাইপলাইন-বাইরের-লুপ
সিলেক্টিভ শিডিউলিংয়ের সময় পাইপলাইন লুপ করার সময়, বাইরের লুপও পাইপলাইন করুন। এই
বিকল্প কোন প্রভাব নেই যদি না -fsel-নির্ধারিত-পাইপলাইনিং চালু করা হয়।
-fsemantic-interposition
কিছু অবজেক্ট ফরম্যাট, যেমন ELF, ডায়নামিক লিঙ্কার দ্বারা চিহ্নের ইন্টারপোজ করার অনুমতি দেয়।
এর মানে হল যে DSO থেকে রপ্তানি করা চিহ্নগুলির জন্য, কম্পাইলার পারফর্ম করতে পারে না
আন্তঃপ্রক্রিয়াগত প্রচার, ইনলাইনিং এবং অন্যান্য অপ্টিমাইজেশান যে প্রত্যাশায়
প্রশ্নে ফাংশন বা পরিবর্তনশীল পরিবর্তন হতে পারে। যদিও এই বৈশিষ্ট্যটি দরকারী, এর জন্য
উদাহরণস্বরূপ, একটি ডিবাগিং বাস্তবায়ন দ্বারা মেমরি বরাদ্দকরণ ফাংশন পুনরায় লিখতে, এটি
কোড মানের শর্তে ব্যয়বহুল। সঙ্গে -fno-অর্থবোধক-ইন্টারপজিশন কম্পাইলার
অনুমান করে যে যদি ফাংশনের জন্য ইন্টারপোজিশন ঘটে তাহলে ওভাররাইটিং ফাংশন থাকবে
অবিকল একই শব্দার্থবিদ্যা (এবং পার্শ্ব প্রতিক্রিয়া)। একইভাবে যদি ইন্টারপোজিশন ঘটে
ভেরিয়েবলের জন্য, ভেরিয়েবলের কনস্ট্রাক্টর একই হবে। পতাকা নেই
ফাংশনের জন্য প্রভাব স্পষ্টভাবে ইনলাইনে ঘোষণা করা হয়েছে (যেখানে এটি কখনই অনুমোদিত নয়
শব্দার্থবিদ্যা পরিবর্তন করতে ইন্টারপোজিশন) এবং চিহ্নগুলির জন্য স্পষ্টভাবে দুর্বল ঘোষণা করা হয়েছে।
-ফ্রিংক-মোড়
এমিট ফাংশন prologues শুধুমাত্র ফাংশনের অংশগুলির আগে যা এটি প্রয়োজন, at এর পরিবর্তে
ফাংশনের শীর্ষে। এই পতাকাটি ডিফল্টরূপে সক্রিয় করা হয়েছে -O এবং উচ্চতর।
-fcaller-সংরক্ষণ
ফাংশন কল দ্বারা ক্লোবার করা রেজিস্টারগুলিতে মানগুলির বরাদ্দ সক্ষম করুন, দ্বারা৷
এই ধরনের কলের চারপাশে রেজিস্টার সংরক্ষণ এবং পুনরুদ্ধার করার জন্য অতিরিক্ত নির্দেশাবলী নির্গত করা। যেমন
বরাদ্দ শুধুমাত্র তখনই করা হয় যখন এটি আরও ভাল কোডের ফলাফল বলে মনে হয়।
এই বিকল্পটি সর্বদা নির্দিষ্ট মেশিনে ডিফল্টরূপে সক্রিয় থাকে, সাধারণত যেগুলি থাকে
পরিবর্তে ব্যবহার করার জন্য কোনো কল-সংরক্ষিত রেজিস্টার নেই।
স্তরে সক্রিয় -ও2, -ও3, -ওএস.
-fcombine-স্ট্যাক-সামঞ্জস্য
স্ট্যাক অ্যাডজাস্টমেন্ট (ধাক্কা এবং পপস) এবং স্ট্যাক মেমরি রেফারেন্স ট্র্যাক করে এবং তারপর চেষ্টা করে
তাদের একত্রিত করার উপায় খুঁজে বের করতে।
এ ডিফল্টরূপে সক্রিয় করা হয়েছে৷ -ও1 এবং উচ্চতর।
-ফিপা-রা
বরাদ্দের জন্য কলার সেভ রেজিস্টার ব্যবহার করুন যদি সেই রেজিস্টারগুলো কোনো কল করে ব্যবহার না করে
ফাংশন সেক্ষেত্রে কলের আশেপাশে সেগুলি সংরক্ষণ এবং পুনরুদ্ধার করার প্রয়োজন নেই।
এটি কেবল তখনই সম্ভব যখন বলা ফাংশনগুলি বর্তমান হিসাবে একই সংকলন ইউনিটের অংশ
ফাংশন এবং তারা এটির আগে সংকলিত হয়।
স্তরে সক্রিয় -ও2, -ও3, -ওএস.
-fconserve-স্ট্যাক
স্ট্যাকের ব্যবহার কমানোর চেষ্টা করুন। কম্পাইলার কম স্ট্যাক স্থান ব্যবহার করার চেষ্টা করে, এমনকি
যদি এটি প্রোগ্রামটিকে ধীর করে তোলে। এই বিকল্পটি সেটিং বোঝায় বড়-স্ট্যাক-ফ্রেম
পরামিতি 100 এবং বড়-স্ট্যাক-ফ্রেম-বৃদ্ধি পরামিতি 400।
-free-reassoc
গাছে পুনর্মিলন সম্পাদন করুন। এই পতাকাটি ডিফল্টরূপে সক্রিয় করা হয়েছে -O এবং উচ্চতর।
-ফ্রি-প্রি
গাছে আংশিক রিডানডেন্সি এলিমিনেশন (PRE) সম্পাদন করুন। এই পতাকা দ্বারা সক্রিয় করা হয়
ডিফল্ট এ -ও2 এবং -ও3.
-ফ্রি-আংশিক-প্রাক
আংশিক অপ্রয়োজনীয় নির্মূল (PRE) আরও আক্রমণাত্মক করুন। এই পতাকা দ্বারা সক্রিয় করা হয়
ডিফল্ট এ -ও3.
-free-forwprop
গাছে অগ্রবর্তী বংশবৃদ্ধি সম্পাদন করুন। এই পতাকাটি ডিফল্টরূপে সক্রিয় করা হয়েছে -O এবং
ঊর্ধ্বতন.
-ফ্রি-ফ্রি
গাছে সম্পূর্ণ রিডানডেন্সি এলিমিনেশন (FRE) সম্পাদন করুন। FRE এবং মধ্যে পার্থক্য
PRE হল FRE শুধুমাত্র অভিব্যক্তিগুলিকে বিবেচনা করে যেগুলি সমস্ত পাথের দিকে গণনা করা হয়
অপ্রয়োজনীয় গণনা এই বিশ্লেষণটি PRE এর চেয়ে দ্রুত, যদিও এটি কম প্রকাশ করে
অপ্রয়োজনীয়তা এই পতাকাটি ডিফল্টরূপে সক্রিয় করা হয়েছে -O এবং উচ্চতর।
-ফ্রি-ফিপ্রপ
গাছের উপর শর্তসাপেক্ষ পয়েন্টার থেকে লোড উত্তোলন সঞ্চালন. এই পাস দ্বারা সক্রিয় করা হয়
ডিফল্ট এ -O এবং উচ্চতর।
-fhoist-সংলগ্ন-লোড
অনুমানমূলকভাবে একটি if-then-else এর উভয় শাখা থেকে লোড উত্তোলন করুন যদি লোডগুলি থেকে হয়
একই কাঠামোর সন্নিহিত অবস্থান এবং লক্ষ্য স্থাপত্যের একটি শর্তাধীন রয়েছে
সরানোর নির্দেশ। এই পতাকাটি ডিফল্টরূপে সক্রিয় করা হয়েছে -ও2 এবং উচ্চতর।
-ftre-কপি-প্রপ
গাছে অনুলিপি প্রচার করুন। এই পাস অপ্রয়োজনীয় অনুলিপি ক্রিয়াকলাপ দূর করে।
এই পতাকাটি ডিফল্টরূপে সক্রিয় করা হয়েছে -O এবং উচ্চতর।
-ফিপা-বিশুদ্ধ-কনস্ট
কোন ফাংশন বিশুদ্ধ বা ধ্রুবক আবিষ্কার করুন. এ ডিফল্টরূপে সক্রিয় করা হয়েছে৷ -O এবং উচ্চতর।
-ফিপা-রেফারেন্স
কোন স্ট্যাটিক ভেরিয়েবলগুলি কম্পাইলেশন ইউনিট এড়িয়ে যায় না তা আবিষ্কার করুন। দ্বারা সক্রিয়
ডিফল্ট এ -O এবং উচ্চতর।
-ফিপা-পিটিএ
আন্তঃপ্রক্রিয়াগত পয়েন্টার বিশ্লেষণ এবং আন্তঃপ্রক্রিয়াগত পরিবর্তন সম্পাদন করুন এবং
রেফারেন্স বিশ্লেষণ। এই বিকল্পটি অত্যধিক মেমরি এবং কম্পাইল-টাইম ব্যবহার চালু করতে পারে
বড় সংকলন ইউনিট। এটি কোনো অপ্টিমাইজেশান স্তরে ডিফল্টরূপে সক্রিয় করা হয় না৷
-ফিপা-প্রোফাইল
আন্তঃপ্রক্রিয়াগত প্রোফাইল প্রচার সঞ্চালন. ফাংশন শুধুমাত্র ঠান্ডা থেকে বলা হয়
ফাংশন ঠান্ডা হিসাবে চিহ্নিত করা হয়. এছাড়াও ফাংশনগুলি একবার কার্যকর করা হয় (যেমন "ঠান্ডা",
"noreturn", স্ট্যাটিক কনস্ট্রাক্টর বা ধ্বংসকারী) চিহ্নিত করা হয়। ঠান্ডা ফাংশন এবং
একবার কার্যকর করা ফাংশনগুলির লুপ কম অংশ তারপর আকারের জন্য অপ্টিমাইজ করা হয়। দ্বারা সক্রিয়
ডিফল্ট এ -O এবং উচ্চতর।
-ফিপা-সিপি
আন্তঃপ্রক্রিয়াগত ধ্রুবক প্রচার সঞ্চালন. এই অপ্টিমাইজেশান প্রোগ্রাম বিশ্লেষণ
ফাংশনে পাস করা মানগুলি কখন ধ্রুবক এবং তারপর অপ্টিমাইজ করা হয় তা নির্ধারণ করতে
সেই অনুযায়ী এই অপ্টিমাইজেশন যথেষ্ট কর্মক্ষমতা বৃদ্ধি করতে পারে যদি
অ্যাপ্লিকেশন ফাংশন পাস ধ্রুবক আছে. এই পতাকাটি ডিফল্টরূপে সক্রিয় করা হয়েছে
-ও2, -ওএস এবং -ও3.
-ফিপা-সিপি-ক্লোন
আন্তঃপ্রক্রিয়াগত ধ্রুবক প্রচারকে শক্তিশালী করতে ফাংশন ক্লোনিং করুন। কখন
সক্রিয়, আন্তঃপ্রক্রিয়াগত ধ্রুবক প্রচার ফাংশন ক্লোনিং সঞ্চালিত হয় যখন
বাহ্যিকভাবে দৃশ্যমান ফাংশন ধ্রুবক আর্গুমেন্ট সঙ্গে কল করা যেতে পারে. কারণ এই
অপ্টিমাইজেশন ফাংশনের একাধিক কপি তৈরি করতে পারে, এটি উল্লেখযোগ্যভাবে বৃদ্ধি পেতে পারে
কোড আকার (দেখুন --পরম ipcp-ইউনিট-গ্রোথ=মূল্য) এই পতাকাটি ডিফল্টরূপে সক্রিয় করা হয়েছে
-ও3.
-ফিপা-সিপি-সারিবদ্ধকরণ
সক্রিয় করা হলে, এই অপ্টিমাইজেশানটি সমর্থন করার জন্য ফাংশন পরামিতিগুলির প্রান্তিককরণ প্রচার করে
ভাল ভেক্টরাইজেশন এবং স্ট্রিং অপারেশন।
এই পতাকাটি ডিফল্টরূপে সক্রিয় করা হয়েছে -ও2 এবং -ওএস. এটা যে প্রয়োজন -ফিপা-সিপি সক্রিয় করা হয়.
-ফিপা-আইসিএফ
ফাংশন এবং শুধুমাত্র-পঠন ভেরিয়েবলের জন্য অভিন্ন কোড ফোল্ডিং সম্পাদন করুন। দ্য
অপ্টিমাইজেশান কোডের আকার কমিয়ে দেয় এবং একটি ফাংশন প্রতিস্থাপন করে স্ট্যাকগুলিকে বিঘ্নিত করতে পারে
একটি ভিন্ন নামের সঙ্গে সমতুল্য এক দ্বারা. অপ্টিমাইজেশন আরও কার্যকরভাবে কাজ করে
লিঙ্ক সময় অপ্টিমাইজেশান সক্রিয়.
তবুও আচরণটি গোল্ড লিঙ্কার আইসিএফ অপ্টিমাইজেশনের মতো, জিসিসি আইসিএফ কাজ করে
বিভিন্ন স্তর এবং এইভাবে অপ্টিমাইজেশান একই নয় - সেখানে সমতা রয়েছে
শুধুমাত্র GCC দ্বারা পাওয়া যায় এবং সমতা শুধুমাত্র গোল্ড দ্বারা পাওয়া যায়।
এই পতাকাটি ডিফল্টরূপে সক্রিয় করা হয়েছে -ও2 এবং -ওএস.
-ফিসোলেট-ভুল-পথ-অধিকার
একটি নাল ডিরেফারেন্স করার কারণে ভুল বা অসংজ্ঞায়িত আচরণ ট্রিগার করে এমন পথগুলি সনাক্ত করুন
নির্দেশক মূল নিয়ন্ত্রণ প্রবাহ থেকে সেই পথগুলিকে বিচ্ছিন্ন করুন এবং বিবৃতিটি দিয়ে ঘুরিয়ে দিন
একটি ফাঁদ মধ্যে ভুল বা অসংজ্ঞায়িত আচরণ. এই পতাকাটি ডিফল্টরূপে সক্রিয় করা হয়েছে -ও2
এবং উচ্চতর।
-ফিসোলেট-ভুল-পাথ-বৈশিষ্ট্য
একটি শূন্য মান ব্যবহার করার কারণে ভুল বা অনির্ধারিত আচরণকে ট্রিগার করে এমন পথগুলি সনাক্ত করুন
একটি "returns_nonnull" বা "nonnull" বৈশিষ্ট্য দ্বারা নিষিদ্ধ একটি উপায়ে৷ সেই পথগুলিকে বিচ্ছিন্ন করুন
প্রধান নিয়ন্ত্রণ প্রবাহ থেকে এবং ভ্রান্ত বা অনির্ধারিত আচরণের সাথে বিবৃতিটি ঘুরিয়ে দিন
একটি ফাঁদে এটি বর্তমানে সক্ষম নয়, তবে এর দ্বারা সক্ষম হতে পারে৷ -ও2 ভবিষ্যতে
-ফ্রি-সিঙ্ক
গাছের উপর ফরওয়ার্ড স্টোর গতি সঞ্চালন. এই পতাকাটি ডিফল্টরূপে সক্রিয় করা হয়েছে -O এবং
ঊর্ধ্বতন.
-এফট্রি-বিট-সিসিপি
গাছে বিক্ষিপ্ত শর্তসাপেক্ষ বিট ধ্রুবক প্রচার সম্পাদন করুন এবং পয়েন্টার প্রচার করুন
প্রান্তিককরণ তথ্য। এই পাস শুধুমাত্র স্থানীয় স্কেলার ভেরিয়েবলের উপর কাজ করে এবং হয়
এ ডিফল্টরূপে সক্রিয় -O এবং উচ্চতর এটা যে প্রয়োজন -এফট্রি-সিসিপি সক্রিয় করা হয়.
-এফট্রি-সিসিপি
গাছে স্পার্স কন্ডিশনাল কনস্ট্যান্ট প্রপাগেশন (সিসিপি) সম্পাদন করুন। এই পাস শুধুমাত্র
স্থানীয় স্কেলার ভেরিয়েবলের উপর কাজ করে এবং ডিফল্টরূপে সক্রিয় করা হয় -O এবং উচ্চতর।
-fssa-phiopt
শর্তসাপেক্ষ কোড অপ্টিমাইজ করতে SSA PHI নোডগুলিতে প্যাটার্ন ম্যাচিং সম্পাদন করুন। এই পাস
এ ডিফল্টরূপে সক্রিয় -O এবং উচ্চতর।
-এফট্রি-সুইচ-রূপান্তর
একটি থেকে শুরুতে একটি স্যুইচ করে সাধারণ প্রাথমিককরণের রূপান্তর সম্পাদন করুন
স্কেলার অ্যারে। এই পতাকাটি ডিফল্টরূপে সক্রিয় করা হয়েছে -ও2 এবং উচ্চতর।
-free-tail-merge
অভিন্ন কোড ক্রম জন্য দেখুন. পাওয়া গেলে, একটি লাফ দিয়ে অন্যটিতে প্রতিস্থাপন করুন।
এই অপ্টিমাইজেশানটি টেল মার্জিং বা ক্রস জাম্পিং নামে পরিচিত। এই পতাকা দ্বারা সক্রিয় করা হয়
ডিফল্ট এ -ও2 এবং উচ্চতর এই পাসে সংকলনের সময় ব্যবহার করে সীমিত করা যেতে পারে
max-tail-merge-তুলনা প্যারামিটার এবং সর্বোচ্চ-লেজ-মার্জ-শিরোনাম প্যারামিটার।
-free-dce
গাছে ডেড কোড এলিমিনেশন (DCE) সম্পাদন করুন। এই পতাকাটি ডিফল্টরূপে সক্রিয় করা হয়েছে -O
এবং উচ্চতর।
-এফটি-বিল্টিন-কল-ডিসিই
বিল্ট-ইন ফাংশনগুলিতে কল করার জন্য শর্তসাপেক্ষ ডেড কোড এলিমিনেশন (DCE) সম্পাদন করুন
"ভ্রান্তি" সেট করতে পারে কিন্তু অন্যথায় পার্শ্ব-প্রতিক্রিয়া মুক্ত। এই পতাকা ডিফল্টরূপে সক্রিয় করা হয়
at -ও2 এবং উচ্চতর যদি -ওএস এছাড়াও নির্দিষ্ট করা হয় না.
-free-dominator-opts
বিভিন্ন ধরণের সাধারণ স্কেলার ক্লিনআপগুলি সম্পাদন করুন (ধ্রুবক/কপি প্রচার, অপ্রয়োজনীয়তা
নির্মূল, পরিসর প্রচার এবং অভিব্যক্তি সরলীকরণ) একটি প্রভাবশালীর উপর ভিত্তি করে
গাছ ট্রাভার্সাল এটি জাম্প থ্রেডিংও করে (জাম্প থেকে লাফ কমাতে)। এই
পতাকা ডিফল্টরূপে সক্রিয় করা হয় -O এবং উচ্চতর।
-ftre-dse
গাছে ডেড স্টোর এলিমিনেশন (DSE) সম্পাদন করুন। একটি মৃত দোকান একটি স্মৃতিতে একটি স্টোর
অবস্থান যা পরবর্তীতে অন্য দোকান দ্বারা কোনো হস্তক্ষেপ লোড ছাড়াই ওভাররাইট করা হয়। ভিতরে
এই ক্ষেত্রে আগের দোকান মুছে ফেলা যেতে পারে. এই পতাকাটি ডিফল্টরূপে সক্রিয় করা হয়েছে -O এবং
ঊর্ধ্বতন.
-ftre-ch
গাছে লুপ হেডার কপি করা সঞ্চালন করুন। এটি উপকারী কারণ এটি বৃদ্ধি পায়
কোড মোশন অপ্টিমাইজেশানের কার্যকারিতা। এটি একটি লাফও বাঁচায়। এই পতাকা
এ ডিফল্টরূপে সক্রিয় -O এবং উচ্চতর এটি জন্য সক্রিয় করা হয় না -ওএস, যেহেতু এটা সাধারণত
কোডের আকার বাড়ায়।
-এফট্রি-লুপ-অপ্টিমাইজ
গাছে লুপ অপ্টিমাইজেশন সঞ্চালন করুন। এই পতাকাটি ডিফল্টরূপে সক্রিয় করা হয়েছে -O এবং
ঊর্ধ্বতন.
-ফ্রি-লুপ-লিনিয়ার
গাছে লুপ ইন্টারচেঞ্জ রূপান্তর সম্পাদন করুন। একই রকম -ফ্লুপ-ইন্টারচেঞ্জ। ব্যবহার করা
এই কোড রূপান্তর, GCC এর সাথে কনফিগার করতে হবে --with-isl সক্ষম করতে
গ্রাফাইট লুপ রূপান্তর পরিকাঠামো.
-ফ্লুপ-ইন্টারচেঞ্জ
লুপগুলিতে লুপ ইন্টারচেঞ্জ রূপান্তর সম্পাদন করুন। দুটি নেস্টেড লুপ বিনিময় করা
ভিতরের এবং বাইরের লুপগুলি সুইচ করে। উদাহরণস্বরূপ, একটি লুপ দেওয়া হয়েছে যেমন:
Do j = 1, মি
আমি = 1, এন
এ (জে, আই) = এ (জে, আই) * সি
এন্ডডো
এন্ডডো
লুপ ইন্টারচেঞ্জ লুপটিকে এমনভাবে রূপান্তরিত করে যেন এটি লেখা ছিল:
আমি = 1, এন
Do j = 1, মি
এ (জে, আই) = এ (জে, আই) * সি
এন্ডডো
এন্ডডো
যা উপকারী হতে পারে যখন "N" ক্যাশে থেকে বড় হয়, কারণ ফোর্টরানে,
একটি অ্যারের উপাদানগুলি কলাম এবং মূল দ্বারা সংলগ্নভাবে মেমরিতে সংরক্ষণ করা হয়
লুপ সারিগুলির উপর পুনরাবৃত্তি করে, সম্ভাব্য প্রতিটি অ্যাক্সেসে একটি ক্যাশে মিস তৈরি করে। এই
অপ্টিমাইজেশান GCC দ্বারা সমর্থিত সমস্ত ভাষার জন্য প্রযোজ্য এবং এটি সীমাবদ্ধ নয়
ফোর্টরান। এই কোড রূপান্তর ব্যবহার করতে, GCC এর সাথে কনফিগার করতে হবে --with-isl থেকে
গ্রাফাইট লুপ রূপান্তর পরিকাঠামো সক্ষম করুন।
-ফ্লুপ-স্ট্রিপ-খনি
লুপগুলিতে লুপ স্ট্রিপ মাইনিং রূপান্তর সম্পাদন করুন। স্ট্রিপ মাইনিং একটি লুপ বিভক্ত করে
দুটি নেস্টেড লুপ। বাইরের লুপের স্ট্রিপ আকার এবং ভিতরের সমান ধাপ রয়েছে
লুপের একটি স্ট্রিপের মধ্যে মূল লুপের ধাপ রয়েছে। ফালা দৈর্ঘ্য পরিবর্তন করা যেতে পারে
ব্যবহার করে লুপ-ব্লক-টাইল-আকার প্যারামিটার উদাহরণস্বরূপ, একটি লুপ দেওয়া হয়েছে যেমন:
আমি = 1, এন
A (i) = a (i) + সি
এন্ডডো
লুপ স্ট্রিপ মাইনিং লুপটিকে এমনভাবে রূপান্তরিত করে যেন এটি লেখা ছিল:
Do II = 1, n, 51
DO I = II, মিনিট (II + 50, N)
A (i) = a (i) + সি
এন্ডডো
এন্ডডো
এই অপ্টিমাইজেশানটি GCC দ্বারা সমর্থিত সমস্ত ভাষার ক্ষেত্রে প্রযোজ্য এবং এর মধ্যে সীমাবদ্ধ নয়৷
ফোর্টরান। এই কোড রূপান্তর ব্যবহার করতে, GCC এর সাথে কনফিগার করতে হবে --with-isl থেকে
গ্রাফাইট লুপ রূপান্তর পরিকাঠামো সক্ষম করুন।
- ফ্লপ-ব্লক
লুপগুলিতে লুপ ব্লকিং রূপান্তরগুলি সম্পাদন করুন। ব্লকিং ফালা খনি প্রতিটি লুপ
লুপ নেস্ট যেমন উপাদান লুপের মেমরি অ্যাক্সেস ক্যাশের ভিতরে ফিট করে। দ্য
ফালা দৈর্ঘ্য ব্যবহার করে পরিবর্তন করা যেতে পারে লুপ-ব্লক-টাইল-আকার প্যারামিটার উদাহরণ স্বরূপ,
একটি লুপ দেওয়া হয়েছে যেমন:
আমি = 1, এন
Do j = 1, মি
এ (জে, আই) = বি (আই) + সি (জে)
এন্ডডো
এন্ডডো
লুপ ব্লকিং লুপটিকে এমনভাবে রূপান্তরিত করে যেন এটি লেখা ছিল:
Do II = 1, n, 51
জেজে = 1, এম, 51 করুন
DO I = II, মিনিট (II + 50, N)
DO J = JJ, মিন (JJ + 50, M)
এ (জে, আই) = বি (আই) + সি (জে)
এন্ডডো
এন্ডডো
এন্ডডো
এন্ডডো
যা উপকারী হতে পারে যখন "M" ক্যাশে থেকে বড় হয়, কারণ সবচেয়ে ভিতরের লুপ
ক্যাশে রাখা যেতে পারে এমন একটি ছোট পরিমাণ ডেটার উপর পুনরাবৃত্তি করে। এই
অপ্টিমাইজেশান GCC দ্বারা সমর্থিত সমস্ত ভাষার জন্য প্রযোজ্য এবং এটি সীমাবদ্ধ নয়
ফোর্টরান। এই কোড রূপান্তর ব্যবহার করতে, GCC এর সাথে কনফিগার করতে হবে --with-isl থেকে
গ্রাফাইট লুপ রূপান্তর পরিকাঠামো সক্ষম করুন।
-fgraphite-পরিচয়
গ্রাফাইটের জন্য পরিচয় রূপান্তর সক্ষম করুন। প্রতিটি SCOP-এর জন্য আমরা তৈরি করি
পলিহেড্রাল উপস্থাপনা এবং এটিকে জিম্পলে রূপান্তরিত করুন। ব্যবহার -fgraphite-পরিচয়
আমরা GIMPLE -> GRAPHITE -> GIMPLE রূপান্তরের খরচ বা সুবিধাগুলি পরীক্ষা করতে পারি।
কিছু ন্যূনতম অপ্টিমাইজেশনও কোড জেনারেটর ISL দ্বারা সঞ্চালিত হয়, যেমন সূচক
loops মধ্যে বিভক্ত এবং মৃত কোড নির্মূল.
-ফ্লুপ-নেস্ট-অপ্টিমাইজ
ISL ভিত্তিক লুপ নেস্ট অপ্টিমাইজার সক্ষম করুন৷ এটি একটি জেনেরিক লুপ নেস্ট অপ্টিমাইজার ভিত্তিক
প্লুটো অপ্টিমাইজেশান অ্যালগরিদমের উপর। এটি একটি লুপ কাঠামোর জন্য অপ্টিমাইজ করা গণনা করে৷
ডেটা-স্থানীয়তা এবং সমান্তরালতা। এই বিকল্পটি পরীক্ষামূলক।
-ফ্লুপ-আনরোল-এবং-জ্যাম
ISL ভিত্তিক লুপ নেস্ট অপ্টিমাইজারের জন্য আনরোল এবং জ্যাম সক্ষম করুন৷ আনরোল ফ্যাক্টর হতে পারে
ব্যবহার করে পরিবর্তিত হয়েছে লুপ-আনরোল-জ্যাম-সাইজ প্যারামিটার আনরোলড ডাইমেনশন (গণনা
সবচেয়ে ভিতরের থেকে) ব্যবহার করে পরিবর্তন করা যেতে পারে লুপ-আনরোল-জ্যাম-গভীরতা প্যারামিটার।
.
-floop-সমান্তরাল-সমস্ত
সমান্তরাল হতে পারে এমন লুপগুলি সনাক্ত করতে গ্রাফাইট ডেটা নির্ভরতা বিশ্লেষণ ব্যবহার করুন।
লুপ বহন নির্ভরতা ধারণ না করার জন্য বিশ্লেষণ করা যেতে পারে এমন সমস্ত লুপগুলিকে সমান্তরাল করুন
লুপগুলিকে সমান্তরাল করা লাভজনক কিনা তা পরীক্ষা না করেই।
-ফচেক-ডেটা-ডিপস
বিভিন্ন তথ্য নির্ভরতা বিশ্লেষক ফলাফল তুলনা. এই বিকল্পের জন্য ব্যবহার করা হয়
তথ্য নির্ভরতা বিশ্লেষক ডিবাগিং.
-ftre-লুপ-যদি-রূপান্তর
সবচেয়ে ভিতরের লুপগুলিতে শর্তসাপেক্ষ লাফগুলিকে শাখা-বিহীন রূপান্তর করার চেষ্টা করুন
সমতুল্য. উদ্দেশ্য হল ক্রমানুসারে ভেতরের লুপগুলি থেকে নিয়ন্ত্রণ-প্রবাহ অপসারণ করা
এই লুপগুলি পরিচালনা করার জন্য ভেক্টরাইজেশন পাসের ক্ষমতা উন্নত করতে। এই
ভেক্টরাইজেশন সক্রিয় থাকলে ডিফল্টরূপে সক্রিয়।
-এফটি-লুপ-ইফ-কনভার্ট-স্টোর
মেমরি রাইট ধারণকারী শর্তসাপেক্ষ লাফ যদি-রূপান্তর করার চেষ্টাও। এই
মাল্টি-থ্রেডেড প্রোগ্রামের জন্য রূপান্তর অনিরাপদ হতে পারে কারণ এটি শর্তসাপেক্ষে রূপান্তরিত করে
মেমরি নিঃশর্ত মেমরি লিখতে লিখতে. উদাহরণ স্বরূপ,
জন্য (i = 0; i < N; i++)
যদি (অবস্থা)
A [i] = এক্সপ্রিল;
রূপান্তরিত হয়
জন্য (i = 0; i < N; i++)
A[i] = cond? expr: A[i];
সম্ভাব্য ডেটা রেস উত্পাদন.
-ফ্রি-লুপ-ডিস্ট্রিবিউশন
লুপ বিতরণ সঞ্চালন. এই পতাকা বড় লুপ বডিতে ক্যাশে কর্মক্ষমতা উন্নত করতে পারে
এবং আরও লুপ অপ্টিমাইজেশান, যেমন সমান্তরালকরণ বা ভেক্টরাইজেশন, নেওয়ার অনুমতি দিন
স্থান উদাহরণস্বরূপ, লুপ
আমি = 1, এন
A (i) = b (i) + সি
D (i) = E (i) * f
এন্ডডো
রূপান্তরিত হয়
আমি = 1, এন
A (i) = b (i) + সি
এন্ডডো
আমি = 1, এন
D (i) = E (i) * f
এন্ডডো
-এফট্রি-লুপ-ডিস্ট্রিবিউট-প্যাটার্ন
প্যাটার্নের লুপ ডিস্ট্রিবিউশন সঞ্চালন করুন যা একটি কলের সাথে কোড তৈরি করা যেতে পারে
লাইব্রেরি এই পতাকাটি ডিফল্টরূপে সক্রিয় করা হয়েছে -ও3.
এই পাসটি ইনিশিয়ালাইজেশন লুপ বিতরণ করে এবং মেমসেট জিরোতে একটি কল তৈরি করে।
উদাহরণস্বরূপ, লুপ
আমি = 1, এন
A (i) = 0
বি (আই) = এ (আই) + আই
এন্ডডো
রূপান্তরিত হয়
আমি = 1, এন
A (i) = 0
এন্ডডো
আমি = 1, এন
বি (আই) = এ (আই) + আই
এন্ডডো
এবং ইনিশিয়ালাইজেশন লুপ মেমসেট জিরোতে কলে রূপান্তরিত হয়।
-ফ্রি-লুপ-আইএম
গাছে লুপ অপরিবর্তনীয় গতি সঞ্চালন করুন। এই পাস শুধুমাত্র কঠিন যে invariants সরানো
RTL স্তরে হ্যান্ডেল করা (ফাংশন কল, অপারেশন যা অতুচ্ছ ক্রমগুলিতে প্রসারিত হয়
insns)। সঙ্গে -ফানসুইচ-লুপস এটা যে অবস্থার অপারেন্ড সরানো হয়
লুপ থেকে invariant আউট, যাতে আমরা শুধুমাত্র তুচ্ছ invariantness বিশ্লেষণ ব্যবহার করতে পারেন
লুপ আনসুইচিং পাস এছাড়াও স্টোর গতি অন্তর্ভুক্ত.
-এফট্রি-লুপ-ইভক্যানন
লুপের পুনরাবৃত্তির সংখ্যার জন্য একটি ক্যানোনিকাল কাউন্টার তৈরি করুন যার জন্য নির্ধারণ করা হয়
পুনরাবৃত্তির সংখ্যা জটিল বিশ্লেষণের প্রয়োজন। পরে অপ্টিমাইজেশান তারপর হতে পারে
সহজেই সংখ্যা নির্ধারণ করুন। বিশেষ করে আনরোলিংয়ের ক্ষেত্রে দরকারী।
-ফাইভপ্টস
ইন্ডাকশন ভেরিয়েবল অপ্টিমাইজেশান সঞ্চালন করুন (শক্তি হ্রাস, ইন্ডাকশন ভেরিয়েবল
একত্রিতকরণ এবং আবেশন পরিবর্তনশীল নির্মূল) গাছে।
-ftree- parallelize-loops=n
সমান্তরাল loops, অর্থাৎ, n থ্রেডে চালানোর জন্য তাদের পুনরাবৃত্তি স্থান বিভক্ত করুন। এই
শুধুমাত্র সেই লুপের জন্য সম্ভব যার পুনরাবৃত্তি স্বাধীন এবং ইচ্ছামত হতে পারে
পুনরায় সাজানো অপটিমাইজেশন শুধুমাত্র মাল্টিপ্রসেসর মেশিনে লাভজনক, লুপের জন্য
যেগুলি মেমরি ব্যান্ডউইথ দ্বারা সীমাবদ্ধ যেমন CPU-নিবিড়। এই বিকল্প
বোঝা - থ্রেড, এবং এইভাবে শুধুমাত্র সেই লক্ষ্যে সমর্থিত যেগুলির জন্য সমর্থন আছে৷
- থ্রেড.
-এফটি-পিটিএ
গাছের উপর বিশ্লেষণ-স্থানীয় পয়েন্ট-ফাংশন সম্পাদন করুন। এই পতাকা ডিফল্টরূপে সক্রিয় করা হয়
at -O এবং উচ্চতর।
-ftre-sra
সমষ্টির স্কেলার প্রতিস্থাপন সঞ্চালন. এই পাস কাঠামোর রেফারেন্স প্রতিস্থাপন করে
খুব তাড়াতাড়ি মেমরিতে কাঠামোর প্রতিশ্রুতি রোধ করতে স্কেলার সহ। এই পতাকা
এ ডিফল্টরূপে সক্রিয় -O এবং উচ্চতর।
-ftree-কপিরনাম
গাছে অনুলিপি পুনঃনামকরণ সম্পাদন করুন। এই পাস কম্পাইলার অস্থায়ী নাম পরিবর্তন করার চেষ্টা করে
অনুলিপি অবস্থানে অন্যান্য ভেরিয়েবল, সাধারণত পরিবর্তনশীল নাম যা আরো
ঘনিষ্ঠভাবে মূল ভেরিয়েবল অনুরূপ. এই পতাকাটি ডিফল্টরূপে সক্রিয় করা হয়েছে -O এবং
ঊর্ধ্বতন.
-Free-coalesce-inlined-vars
কপিরিনেম পাস বলুন (দেখুন -ftree-কপিরনাম) ছোট ব্যবহারকারীকে একত্রিত করার চেষ্টা করতে-
সংজ্ঞায়িত ভেরিয়েবলগুলিও, কিন্তু শুধুমাত্র যদি সেগুলি অন্যান্য ফাংশন থেকে ইনলাইন করা হয়। এটা
এর আরো সীমিত রূপ -Free-coalesce-vars. এই ধরনের ডিবাগ তথ্য ক্ষতি হতে পারে
ইনলাইনড ভেরিয়েবল, কিন্তু এটি ইনলাইন্ড-ইন ফাংশনের ভেরিয়েবলগুলিকে আলাদা রাখে
অন্যান্য, যেমন তারা একটি ডিবাগিং এ প্রত্যাশিত মান ধারণ করার সম্ভাবনা বেশি
সেশন.
-Free-coalesce-vars
কপিরিনেম পাস বলুন (দেখুন -ftree-কপিরনাম) ছোট ব্যবহারকারীকে একত্রিত করার চেষ্টা করতে-
সংজ্ঞায়িত ভেরিয়েবলগুলিও, শুধুমাত্র কম্পাইলার অস্থায়ী পরিবর্তে। এটি গুরুতরভাবে সীমাবদ্ধ হতে পারে
এর সাথে সংকলিত একটি অপ্টিমাইজড প্রোগ্রাম ডিবাগ করার ক্ষমতা -fno-var-ট্র্যাকিং-অ্যাসাইনমেন্ট.
নেতিবাচক আকারে, এই পতাকা ব্যবহারকারী ভেরিয়েবলের SSA সমন্বিতকরণকে বাধা দেয়, সহ
ইনলাইন বেশী এই বিকল্পটি ডিফল্টরূপে সক্রিয় করা হয়।
-free-ter
SSA->স্বাভাবিক পর্যায়ের সময় অস্থায়ী অভিব্যক্তি প্রতিস্থাপন করুন। একক
use/single def temporaries তাদের ব্যবহারের অবস্থানে তাদের সংজ্ঞা দিয়ে প্রতিস্থাপিত হয়
অভিব্যক্তি এর ফলে নন-জিম্পল কোড পাওয়া যায়, কিন্তু প্রসারকদের আরও অনেক কিছু দেয়
জটিল গাছগুলি যাতে ভাল RTL জেনারেশনের জন্য কাজ করে। এই দ্বারা সক্রিয় করা হয়
ডিফল্ট এ -O এবং উচ্চতর।
-এফটি-এসএলএসআর
গাছের উপর সোজা লাইন শক্তি হ্রাস সঞ্চালন. এই সম্পর্কিত স্বীকৃতি
রাশিগুলি গুণের সাথে জড়িত এবং কম ব্যয়বহুল গণনা দ্বারা প্রতিস্থাপন করে
কখন সম্ভব. এটি ডিফল্টরূপে সক্রিয় করা হয়েছে -O এবং উচ্চতর।
-ফ্রি-ভেক্টরাইজ
গাছে ভেক্টরাইজেশন করুন। এই পতাকা সক্রিয় -ফ্রি-লুপ-ভেক্টরাইজ এবং
-এফটি-এসএলপি-ভেক্টরাইজ যদি স্পষ্টভাবে উল্লেখ না করা হয়।
-ফ্রি-লুপ-ভেক্টরাইজ
গাছে লুপ ভেক্টরাইজেশন সম্পাদন করুন। এই পতাকাটি ডিফল্টরূপে সক্রিয় করা হয়েছে -ও3 এবং কখন
-ফ্রি-ভেক্টরাইজ সক্রিয় করা হয়.
-এফটি-এসএলপি-ভেক্টরাইজ
গাছে বেসিক ব্লক ভেক্টরাইজেশন করুন। এই পতাকাটি ডিফল্টরূপে সক্রিয় করা হয়েছে -ও3 এবং
কখন -ফ্রি-ভেক্টরাইজ সক্রিয় করা হয়.
-fvect-কস্ট-মডেল=মডেল
ভেক্টরাইজেশনের জন্য ব্যবহৃত খরচ মডেল পরিবর্তন করুন। দ্য মডেল যুক্তি একটি হতে হবে
সীমাহীন, প্রগতিশীল or সস্তা। সঙ্গে সঙ্গে সীমাহীন ভেক্টরাইজড কোড-পাথ মডেল
সঙ্গে থাকাকালীন লাভজনক হতে অনুমান প্রগতিশীল মডেল একটি রানটাইম চেক গার্ড
ভেক্টরাইজড কোড-পাথ এটিকে শুধুমাত্র পুনরাবৃত্তি গণনার জন্য সক্ষম করতে যা সম্ভবত কার্যকর হবে
মূল স্কেলার লুপ চালানোর চেয়ে দ্রুত। দ্য সস্তা মডেল নিষ্ক্রিয়
লুপগুলির ভেক্টরাইজেশন যেখানে এটি করার কারণে যেমন খরচ নিষিদ্ধ হবে
ডেটা নির্ভরতা বা প্রান্তিককরণের জন্য প্রয়োজনীয় রানটাইম চেক কিন্তু অন্যথায় এর সমান
প্রগতিশীল মডেল. ডিফল্ট খরচ মডেল অন্যান্য অপ্টিমাইজেশান পতাকা উপর নির্ভর করে এবং হয়
পারেন প্রগতিশীল or সস্তা.
-fsimd-কস্ট-মডেল=মডেল
OpenMP বা Cilk দিয়ে চিহ্নিত লুপগুলির ভেক্টরাইজেশনের জন্য ব্যবহৃত খরচ মডেলটি পরিবর্তন করুন
প্লাস সিমডি নির্দেশিকা। দ্য মডেল যুক্তি একটি হতে হবে সীমাহীন, প্রগতিশীল, সস্তা.
এর সমস্ত মান মডেল বর্ণনা করা হিসাবে একই অর্থ আছে -fvect-কস্ট-মডেল এবং দ্বারা
ডিফল্ট একটি খরচ মডেল সঙ্গে সংজ্ঞায়িত -fvect-কস্ট-মডেল ব্যবহৃত হয়.
-এফটি-ভিআরপি
গাছে ভ্যালু রেঞ্জ প্রচার করুন। এটি ধ্রুবক প্রচারের অনুরূপ
পাস, কিন্তু মানের পরিবর্তে, মানের পরিসীমা প্রচার করা হয়। এই অনুমতি দেয়
অপ্টিমাইজাররা অপ্রয়োজনীয় রেঞ্জ চেক যেমন অ্যারে বাউন্ড চেক এবং নাল পয়েন্টার অপসারণ করে
চেক এটি ডিফল্টরূপে সক্রিয় করা হয়েছে -ও2 এবং উচ্চতর নাল পয়েন্টার চেক নির্মূল
শুধুমাত্র যদি করা হয় -ফডিলিট-নাল-পয়েন্টার-চেকস সক্রিয় করা হয়.
-fsplit-ivs-ইন-আনরোলার
এর পরবর্তী পুনরাবৃত্তিতে ইন্ডাকশন ভেরিয়েবলের মানের এক্সপ্রেশন সক্ষম করে
প্রথম পুনরাবৃত্তিতে মান ব্যবহার করে আনরোলড লুপ। এটি দীর্ঘ নির্ভরতা ভেঙে দেয়
চেইন, এইভাবে সময়সূচী পাসের দক্ষতা উন্নত করে।
সংমিশ্রণ -ফওয়েব এবং CSE প্রায়ই একই প্রভাব পেতে যথেষ্ট।
যাইহোক, এটি এমন ক্ষেত্রে নির্ভরযোগ্য নয় যেখানে লুপ বডি a এর চেয়ে বেশি জটিল
একক মৌলিক ব্লক। এটি কিছু আর্কিটেকচারের কারণেও কাজ করে না
CSE পাসে সীমাবদ্ধতা।
এই অপ্টিমাইজেশন ডিফল্টরূপে সক্রিয় করা হয়.
পরিবর্তনশীল-সম্প্রসারণ-ইন-আনরোলার
এই বিকল্পের সাহায্যে, কম্পাইলার কিছু স্থানীয় ভেরিয়েবলের একাধিক কপি তৈরি করে যখন
একটি লুপ আনরোল করা, যার ফলে উচ্চতর কোড হতে পারে।
-আংশিক-ইনলাইনিং
ফাংশনের ইনলাইন অংশ। এই বিকল্পটি শুধুমাত্র যখন ইনলাইন করা হয় তখনই কোনো প্রভাব ফেলে
দ্বারা চালু -ফিনলাইন-ফাংশন or -ফিনলাইন-ছোট-ফাংশন অপশন।
স্তরে সক্রিয় -ও2.
-ফপ্রেডিকটিভ-কমনিং
ভবিষ্যদ্বাণীমূলক কমনিং অপ্টিমাইজেশান সম্পাদন করুন, অর্থাৎ, গণনা পুনঃব্যবহার (বিশেষত
মেমরি লোড এবং স্টোর) লুপগুলির পূর্ববর্তী পুনরাবৃত্তিতে সঞ্চালিত হয়।
এই বিকল্পটি স্তরে সক্রিয় করা হয়েছে -ও3.
-fprefetch-লুপ-অ্যারে
টার্গেট মেশিন দ্বারা সমর্থিত হলে, মেমরি প্রিফেচ করার জন্য নির্দেশনা তৈরি করুন
বড় অ্যারে অ্যাক্সেস করে এমন লুপের কর্মক্ষমতা উন্নত করে।
এই বিকল্পটি আরও ভাল বা খারাপ কোড তৈরি করতে পারে; ফলাফলের উপর অত্যন্ত নির্ভরশীল
সোর্স কোডের মধ্যে লুপের গঠন।
স্তরে অক্ষম -ওএস.
-fno-peephole
-fno-peephole2
যেকোনো মেশিন-নির্দিষ্ট পিফোল অপ্টিমাইজেশান অক্ষম করুন। মধ্যে পার্থক্য
-fno-peephole এবং -fno-peephole2 তারা কম্পাইলার কিভাবে প্রয়োগ করা হয়; কিছু
লক্ষ্য একটি ব্যবহার করে, কেউ অন্যটি ব্যবহার করে, কয়েকটি উভয়ই ব্যবহার করে।
-fpephole ডিফল্টরূপে সক্রিয় করা হয়। -fpephole2 স্তরে সক্রিয় -ও2, -ও3, -ওএস.
-fno-অনুমান-শাখা-সম্ভাব্যতা
হিউরিস্টিকস ব্যবহার করে শাখার সম্ভাব্যতা অনুমান করবেন না।
GCC শাখার সম্ভাব্যতা অনুমান করতে হিউরিস্টিক ব্যবহার করে যদি সেগুলি দ্বারা সরবরাহ করা না হয়
প্রোফাইলিং প্রতিক্রিয়া (-এফপ্রোফাইল-আর্কস) এই হিউরিস্টিকগুলি নিয়ন্ত্রণ প্রবাহের উপর ভিত্তি করে
চিত্রলেখ. যদি কিছু শাখা সম্ভাব্যতা "__builtin_expect" দ্বারা নির্দিষ্ট করা হয়, তাহলে
হিউরিস্টিকগুলি বাকি নিয়ন্ত্রণ প্রবাহের জন্য শাখা সম্ভাব্যতা অনুমান করতে ব্যবহৃত হয়
গ্রাফ, "__builtin_expect" তথ্যকে বিবেচনায় নিয়ে। মধ্যে মিথস্ক্রিয়া
heuristics এবং "__builtin_expect" জটিল হতে পারে, এবং কিছু ক্ষেত্রে, এটি কার্যকর হতে পারে
হিউরিস্টিক অক্ষম করতে যাতে "__builtin_expect" এর প্রভাবগুলি সহজতর হয়
বোঝা.
ডিফল্ট হয় -fguess-শাখা-সম্ভাব্যতা স্তরে -O, -ও2, -ও3, -ওএস.
-ফ্রিঅর্ডার-ব্লক
নেওয়ার সংখ্যা কমাতে কম্পাইল করা ফাংশনে মৌলিক ব্লকগুলিকে পুনরায় সাজান
শাখা এবং কোড স্থানীয় উন্নতি.
স্তরে সক্রিয় -ও2, -ও3.
-ফ্রিঅর্ডার-ব্লক-এবং-পার্টিশন
সংকলিত ফাংশনে মৌলিক ব্লকগুলিকে পুনরায় সাজানোর পাশাপাশি কমানোর জন্য
নেওয়া শাখার সংখ্যা, গরম এবং ঠান্ডা মৌলিক ব্লকগুলিকে পৃথক বিভাগে ভাগ করে
পেজিং এবং ক্যাশে লোকেলিটি কর্মক্ষমতা উন্নত করতে সমাবেশ এবং .o ফাইলগুলির।
ব্যতিক্রম পরিচালনার উপস্থিতিতে এই অপ্টিমাইজেশন স্বয়ংক্রিয়ভাবে বন্ধ হয়ে যায়,
linkonce বিভাগগুলির জন্য, একটি ব্যবহারকারী-সংজ্ঞায়িত বিভাগ বৈশিষ্ট্য সহ ফাংশনগুলির জন্য এবং যেকোনোটিতে
স্থাপত্য যা নামযুক্ত বিভাগ সমর্থন করে না।
স্তরে x86 এর জন্য সক্ষম করা হয়েছে -ও2, -ও3.
-ফ্রিঅর্ডার-ফাংশন
কোড লোকেলিটি উন্নত করার জন্য অবজেক্ট ফাইলে ফাংশন পুনরায় সাজান। এই
বিশেষ উপধারা ".text.hot" ব্যবহার করে প্রয়োগ করা হয় যা প্রায়শই কার্যকর করা হয়
ফাংশন এবং ".text.unlikely" অসম্ভাব্য কার্যকরী ফাংশনের জন্য। পুনর্বিন্যাস দ্বারা সম্পন্ন করা হয়
লিঙ্কার তাই অবজেক্ট ফাইল ফরম্যাট অবশ্যই নামযুক্ত বিভাগ সমর্থন করবে এবং লিঙ্কার অবশ্যই স্থাপন করবে
তাদের একটি যুক্তিসঙ্গত উপায়ে.
এছাড়াও এই বিকল্পটিকে কার্যকর করার জন্য প্রোফাইল ফিডব্যাক অবশ্যই উপলব্ধ থাকতে হবে। দেখা
-এফপ্রোফাইল-আর্কস বিস্তারিত জানার জন্য.
স্তরে সক্রিয় -ও2, -ও3, -ওএস.
-ট্রিক্ট-এলিয়াসিং
কম্পাইলারকে ভাষার জন্য প্রযোজ্য কঠোরতম অ্যালিয়াসিং নিয়মগুলি অনুমান করার অনুমতি দিন
সংকলিত হচ্ছে C (এবং C++) এর জন্য, এটি প্রকারের উপর ভিত্তি করে অপ্টিমাইজেশন সক্রিয় করে
অভিব্যক্তি বিশেষ করে, এক ধরণের একটি বস্তুকে কখনই তে বাস করে না বলে ধরে নেওয়া হয়
একটি ভিন্ন ধরনের বস্তু হিসাবে একই ঠিকানা, যদি না প্রকারগুলি প্রায় একই হয়।
উদাহরণস্বরূপ, একটি "আনসাইন করা int" একটি "int" এর নাম দিতে পারে, কিন্তু একটি "void*" বা একটি "ডাবল" নয়। ক
ক্যারেক্টার টাইপ অন্য কোন টাইপের নাম হতে পারে।
এই মত কোড বিশেষ মনোযোগ দিন:
ইউনিয়ন a_union {
int i;
ডবল ডি;
};
int f () {
ইউনিয়ন a_union t;
td = 3.0;
ফেরত ti;
}
সবচেয়ে সাম্প্রতিক একটি থেকে একটি ভিন্ন ইউনিয়ন সদস্য থেকে পড়ার অভ্যাস
লিখিত ("টাইপ-punning" বলা হয়) সাধারণ. যদিও সাথে -ট্রিক্ট-এলিয়াসিং, টাইপ-
punning অনুমোদিত, যদি মেমরিটি ইউনিয়ন প্রকারের মাধ্যমে অ্যাক্সেস করা হয়। তাহলে
উপরের কোড প্রত্যাশিত হিসাবে কাজ করে। যাইহোক, এই কোড নাও হতে পারে:
int f () {
ইউনিয়ন a_union t;
int*ip;
td = 3.0;
ip = &t.i;
রিটার্ন *আইপি;
}
একইভাবে, ঠিকানা গ্রহণ, ফলাফল পয়েন্টার ঢালাই দ্বারা অ্যাক্সেস এবং
ফলাফলকে ডিরেফারেন্স করার ক্ষেত্রে অনির্ধারিত আচরণ রয়েছে, এমনকি যদি কাস্ট একটি ইউনিয়ন প্রকার ব্যবহার করে,
উদাহরণ:
int f () {
ডবল d = 3.0;
ফেরত ((ইউনিয়ন a_union *) &d)->i;
}
সার্জারির -ট্রিক্ট-এলিয়াসিং বিকল্প স্তরে সক্রিয় করা হয় -ও2, -ও3, -ওএস.
-fstrict-ওভারফ্লো
কম্পাইলারকে ভাষার উপর নির্ভর করে কঠোর স্বাক্ষরিত ওভারফ্লো নিয়ম অনুমান করার অনুমতি দিন
সংকলিত হচ্ছে C (এবং C++) এর জন্য এর মানে হল পাটিগণিত করার সময় ওভারফ্লো
স্বাক্ষরিত সংখ্যাগুলি অনির্ধারিত, যার মানে কম্পাইলার অনুমান করতে পারে যে এটি নেই
ঘটবে এটি বিভিন্ন অপ্টিমাইজেশনের অনুমতি দেয়। উদাহরণস্বরূপ, কম্পাইলার অনুমান করে যে
"i + 10 > i" এর মত একটি অভিব্যক্তি সর্বদা স্বাক্ষরিত "i" এর জন্য সত্য। এই অনুমান হল
শুধুমাত্র বৈধ যদি স্বাক্ষরিত ওভারফ্লো অনির্ধারিত হয়, কারণ "i + 10" হলে অভিব্যক্তিটি মিথ্যা
দুই পরিপূরক পাটিগণিত ব্যবহার করার সময় ওভারফ্লো হয়। যখন এই বিকল্প কার্যকর হয় যে কোনো
স্বাক্ষরিত সংখ্যা ওভারফ্লোতে একটি অপারেশন লিখতে হবে কিনা তা নির্ধারণ করার চেষ্টা করুন
সাবধানে আসলে ওভারফ্লো জড়িত না.
এই বিকল্পটি কম্পাইলারকে কঠোর পয়েন্টার শব্দার্থক অনুমান করার অনুমতি দেয়: দেওয়া
একটি বস্তুর পয়েন্টার, যদি সেই পয়েন্টারে একটি অফসেট যোগ করলে একটি পয়েন্টার তৈরি হয় না
একই বস্তুতে, সংযোজন অনির্ধারিত। এটি কম্পাইলারকে শেষ করার অনুমতি দেয়
যে "p + u > p" সর্বদা একটি পয়েন্টার "p" এবং স্বাক্ষরবিহীন পূর্ণসংখ্যা "u" এর জন্য সত্য। এই
অনুমান শুধুমাত্র বৈধ কারণ পয়েন্টার wraparound অনির্ধারিত, অভিব্যক্তি হিসাবে
মিথ্যা যদি দুই পরিপূরক গাণিতিক ব্যবহার করে "p + u" ওভারফ্লো হয়।
আরও দেখুন -fwrapv বিকল্প ব্যবহার -fwrapv মানে পূর্ণসংখ্যা স্বাক্ষরিত ওভারফ্লো
সম্পূর্ণরূপে সংজ্ঞায়িত: এটা wraps. কখন -fwrapv ব্যবহৃত হয়, মধ্যে কোন পার্থক্য নেই
-fstrict-ওভারফ্লো এবং -fno-কঠোর-ওভারফ্লো পূর্ণসংখ্যার জন্য সঙ্গে -fwrapv কিছু বিশেষ ধরনের
ওভারফ্লো অনুমোদিত হয়. উদাহরণস্বরূপ, যদি কম্পাইলারটি করার সময় একটি ওভারফ্লো পায়
ধ্রুবকের উপর পাটিগণিত, ওভারফ্লোড মান এখনও ব্যবহার করা যেতে পারে -fwrapv, কিন্তু না
অন্যথায়।
সার্জারির -fstrict-ওভারফ্লো বিকল্প স্তরে সক্রিয় করা হয় -ও2, -ও3, -ওএস.
-ফ্যালাইন-ফাংশন
-ফ্যালাইন-ফাংশন=n
ফাংশনের শুরুকে সারিবদ্ধ করুন পরবর্তী পাওয়ার-অফ-টু-এর চেয়ে বেশি n, পর্যন্ত এড়িয়ে যাচ্ছে n
বাইট এই ক্ষেত্রে, -ফ্যালাইন-ফাংশন=32 পরবর্তী 32-বাইটে ফাংশন সারিবদ্ধ করে
সীমানা, কিন্তু -ফ্যালাইন-ফাংশন=24 পরবর্তী 32-বাইটের সীমানায় সারিবদ্ধ হয় শুধুমাত্র যদি এটি হয়
23 বাইট বা তার কম বাদ দিয়ে করা যেতে পারে।
-fno-সারিবদ্ধ-ফাংশন এবং -ফ্যালাইন-ফাংশন=1 সমতুল্য এবং মানে যে ফাংশন
সারিবদ্ধ করা হয় না
কিছু সমাবেশকারী শুধুমাত্র এই পতাকা সমর্থন করে যখন n দুই একটি শক্তি; যে ক্ষেত্রে, এটা হয়
বৃত্তাকার
If n নির্দিষ্ট করা নেই বা শূন্য, একটি মেশিন-নির্ভর ডিফল্ট ব্যবহার করুন।
স্তরে সক্রিয় -ও2, -ও3.
-ফ্যালাইন-লেবেল
-ফ্লাইন-লেবেলস =n
সমস্ত শাখা লক্ষ্যগুলিকে একটি পাওয়ার-অফ-টু বাউন্ডারিতে সারিবদ্ধ করুন, পর্যন্ত এড়িয়ে যান n বাইট মত
-ফ্যালাইন-ফাংশন. এই বিকল্পটি সহজেই কোডকে ধীর করে দিতে পারে, কারণ এটি অবশ্যই সন্নিবেশ করাতে হবে
কোডের স্বাভাবিক প্রবাহে যখন শাখা লক্ষ্যে পৌঁছানো হয় তার জন্য ডামি অপারেশন।
-fno-সারিবদ্ধ-লেবেল এবং -ফ্যালাইন-লেবেল=1 সমতুল্য এবং মানে লেবেল নয়
সারিবদ্ধ
If ফ্যালাইন-লুপস or -ফালাইন-জাম্প প্রযোজ্য এবং এই মানের থেকে বড়, তাহলে
তাদের মান পরিবর্তে ব্যবহার করা হয়.
If n নির্দিষ্ট করা নেই বা শূন্য, একটি মেশিন-নির্ভর ডিফল্ট ব্যবহার করুন যা খুব সম্ভবত
হতে 1, কোন প্রান্তিককরণ মানে.
স্তরে সক্রিয় -ও2, -ও3.
ফ্যালাইন-লুপস
-ফ্লাইন-লুপস =n
একটি পাওয়ার-অফ-টু বাউন্ডারিতে লুপগুলি সারিবদ্ধ করুন, পর্যন্ত এড়িয়ে যান৷ n বাইট মত -ফ্যালাইন-ফাংশন.
যদি লুপগুলি বহুবার কার্যকর করা হয়, তবে এটি ডামির যেকোন মৃত্যুদণ্ডের জন্য তৈরি করে
অপারেশন।
-ফনো-এলিগন-লুপস এবং -ফ্লাইন-লুপস = 1 সমতুল্য এবং মানে যে loops হয় না
সারিবদ্ধ
If n নির্দিষ্ট করা নেই বা শূন্য, একটি মেশিন-নির্ভর ডিফল্ট ব্যবহার করুন।
স্তরে সক্রিয় -ও2, -ও3.
-ফালাইন-জাম্প
-ফালাইন-জাম্প=n
শাখা লক্ষ্যগুলিকে একটি পাওয়ার-অফ-টু বাউন্ডারিতে সারিবদ্ধ করুন, শাখা লক্ষ্যগুলির জন্য যেখানে লক্ষ্যগুলি
শুধুমাত্র লাফ দিয়ে, এড়িয়ে যাওয়া যায় n বাইট মত -ফ্যালাইন-ফাংশন. মধ্যে
এই ক্ষেত্রে, কোন ডামি অপারেশন চালানো হবে না.
-fno-সারিবদ্ধ-জাম্প এবং -ফালাইন-জাম্প = 1 সমতুল্য এবং মানে যে loops হয় না
সারিবদ্ধ
If n নির্দিষ্ট করা নেই বা শূন্য, একটি মেশিন-নির্ভর ডিফল্ট ব্যবহার করুন।
স্তরে সক্রিয় -ও2, -ও3.
-এক সময়ে মজা করা
এই বিকল্পটি সামঞ্জস্যের কারণে বাকি আছে। -এক সময়ে মজা করা কোন প্রভাব নেই, যখন
-fno-ইউনিট-এ-টাইমে বোঝা -fno-টপলেভেল-পুনঃক্রম এবং -এফএনও-সেকশন-অ্যাঙ্কর.
ডিফল্টরূপে সক্ষম করা হয়েছে।
-fno-টপলেভেল-পুনঃক্রম
শীর্ষ-স্তরের ফাংশন, ভেরিয়েবল, এবং "asm" বিবৃতি পুনর্বিন্যাস করবেন না। তাদের মধ্যে আউটপুট
একই ক্রম যে তারা ইনপুট ফাইলে প্রদর্শিত হবে। যখন এই বিকল্পটি ব্যবহার করা হয়,
রেফারেন্সহীন স্ট্যাটিক ভেরিয়েবল মুছে ফেলা হয় না। এই বিকল্প সমর্থন করার উদ্দেশ্যে করা হয়
বিদ্যমান কোড যা একটি নির্দিষ্ট অর্ডারের উপর নির্ভর করে। নতুন কোডের জন্য, এটি ব্যবহার করা ভাল
গুণাবলী যখন সম্ভব।
স্তরে সক্রিয় -ও0. যখন স্পষ্টভাবে অক্ষম করা হয়, এটিও বোঝায় -এফএনও-সেকশন-অ্যাঙ্কর,
যা অন্যথায় সক্রিয় করা হয় -ও0 কিছু লক্ষ্যে।
-ফওয়েব
রেজিস্টার বরাদ্দের উদ্দেশ্যে সাধারণত ব্যবহৃত ওয়েবগুলি তৈরি করে এবং প্রতিটি ওয়েবকে বরাদ্দ করে৷
পৃথক ছদ্ম নিবন্ধন. এটি রেজিস্টার বরাদ্দ পাস চালু করার অনুমতি দেয়
সিউডোস সরাসরি, কিন্তু আরও বেশ কিছু অপ্টিমাইজেশান পাসকে শক্তিশালী করে, যেমন CSE,
লুপ অপ্টিমাইজার এবং তুচ্ছ ডেড কোড রিমুভার। এটি অবশ্য ডিবাগিং করতে পারে
অসম্ভব, যেহেতু ভেরিয়েবল আর "হোম রেজিস্টার" এ থাকে না।
এর সাথে ডিফল্টরূপে সক্রিয় -ফানরোল-লুপস.
-পুরো-প্রোগ্রাম
অনুমান করুন যে বর্তমান সংকলন ইউনিটটি কম্পাইল করা পুরো প্রোগ্রামটিকে উপস্থাপন করে।
"প্রধান" বাদে সমস্ত পাবলিক ফাংশন এবং ভেরিয়েবল এবং এর দ্বারা মার্জ করা
অ্যাট্রিবিউট "externally_visible" স্ট্যাটিক ফাংশনে পরিণত হয় এবং কার্যকরভাবে অপ্টিমাইজ করা হয়
আন্তঃপ্রক্রিয়াগত অপ্টিমাইজার দ্বারা আরো আক্রমনাত্মক।
এই বিকল্পের সাথে একযোগে ব্যবহার করা উচিত নয় -ফ্লো. পরিবর্তে একটি লিঙ্কার উপর নির্ভর করে
প্লাগইন নিরাপদ এবং আরো সুনির্দিষ্ট তথ্য প্রদান করা উচিত.
-ফ্লো[=n]
এই বিকল্পটি স্ট্যান্ডার্ড লিঙ্ক-টাইম অপ্টিমাইজার চালায়। সোর্স কোড দিয়ে আমন্ত্রণ জানানো হলে, এটি
GIMPLE (GCC-এর অভ্যন্তরীণ উপস্থাপনাগুলির মধ্যে একটি) তৈরি করে এবং এটিকে বিশেষ ELF-তে লেখে
অবজেক্ট ফাইলের বিভাগগুলি। অবজেক্ট ফাইল একসাথে লিঙ্ক করা হয়, সব
ফাংশন বডিগুলি এই ELF বিভাগগুলি থেকে পড়া হয় এবং তাৎক্ষণিকভাবে করা হয় যেন সেগুলি ছিল৷
একই অনুবাদ ইউনিটের অংশ।
লিঙ্ক-টাইম অপ্টিমাইজার ব্যবহার করতে, -ফ্লো এবং অপ্টিমাইজেশান বিকল্পগুলি এ নির্দিষ্ট করা উচিত
কম্পাইল সময় এবং চূড়ান্ত লিঙ্ক চলাকালীন। উদাহরণ স্বরূপ:
gcc -c -o2 -flto foo.c
জিসিসি -সি -ও 2 -ফ্ল্টো বার.সি
জিসিসি -ও মাইপ্রোগ -ফ্ল্টো -o2 foo.o বার.ও
GCC-তে প্রথম দুটি আমন্ত্রণ GIMPLE-এর একটি বাইটকোড উপস্থাপনাকে বিশেষে সংরক্ষণ করে
ভিতরে ELF বিভাগ foo.o এবং বার.ও. চূড়ান্ত আহ্বান জিম্পল বাইটকোড পড়ে
থেকে foo.o এবং বার.ও, দুটি ফাইলকে একটি একক অভ্যন্তরীণ ছবিতে একত্রিত করে এবং কম্পাইল করে
যথারীতি ফলাফল। যেহেতু উভয় foo.o এবং বার.ও একটি একক ইমেজ মধ্যে মার্জ করা হয়, এই
GCC-তে সমস্ত আন্তঃপ্রক্রিয়াগত বিশ্লেষণ এবং অপ্টিমাইজেশানগুলিকে জুড়ে কাজ করে
দুটি ফাইল যেন একটি একক। এর মানে হল, উদাহরণস্বরূপ, ইনলাইনার হল
ইনলাইন ফাংশন করতে সক্ষম বার.ও মধ্যে ফাংশন মধ্যে foo.o এবং বিপরীতভাবে.
লিঙ্ক-টাইম অপ্টিমাইজেশান সক্ষম করার আরেকটি (সহজ) উপায় হল:
জিসিসি -ও মাইপ্রোগ -ফ্ল্টো -o2 foo.c Bar.c
উপরের জন্য বাইটকোড তৈরি করে foo.c এবং বার.সি, তাদের একত্রে একত্রিত করে
GIMPLE উপস্থাপনা এবং উত্পাদন স্বাভাবিক হিসাবে তাদের অপ্টিমাইজ করে মাইপ্রোগ.
মনে রাখা গুরুত্বপূর্ণ বিষয় হল যে আপনি লিঙ্ক-টাইম অপ্টিমাইজেশান সক্ষম করতে পারেন
লিঙ্ক-স্টেপ সম্পাদন করতে GCC ড্রাইভার ব্যবহার করতে হবে। GCC তারপর স্বয়ংক্রিয়ভাবে সম্পাদন করে
লিঙ্ক-টাইম অপ্টিমাইজেশান যদি জড়িত কোন বস্তুর সাথে কম্পাইল করা হয় -ফ্লো
কমান্ড লাইন বিকল্প। আপনি সাধারণত ব্যবহার করা অপ্টিমাইজেশান বিকল্প নির্দিষ্ট করা উচিত
লিঙ্ক-টাইম অপ্টিমাইজেশানের জন্য যদিও জিসিসি একটি অপ্টিমাইজেশন অনুমান করার ক্ষেত্রে চতুর হওয়ার চেষ্টা করে
আপনি যদি লিঙ্কে একটি নির্দিষ্ট করতে ব্যর্থ হন তবে কম্পাইল-টাইমে ব্যবহৃত বিকল্পগুলি থেকে ব্যবহার করার জন্য স্তর-
সময় আপনি সর্বদা লিঙ্ক-টাইম অপ্টিমাইজেশান করার স্বয়ংক্রিয় সিদ্ধান্তকে ওভাররাইড করতে পারেন
পাস করে লিঙ্ক-টাইম -fno-lto লিঙ্ক কমান্ডে।
সম্পূর্ণ প্রোগ্রাম অপ্টিমাইজেশান কার্যকর করার জন্য, এটি নির্দিষ্ট সম্পূর্ণ করা প্রয়োজন
প্রোগ্রাম অনুমান। কম্পাইলারকে জানতে হবে ফাংশন এবং ভেরিয়েবল কি হতে পারে
লিঙ্ক-টাইম অপ্টিমাইজ করা ইউনিটের বাইরে লাইব্রেরি এবং রানটাইম দ্বারা অ্যাক্সেস করা হয়েছে। কখন
লিঙ্কার, লিঙ্কার প্লাগইন দ্বারা সমর্থিত (দেখুন -ফিউজ-লিঙ্কার-প্লাগইন) পাস
ব্যবহৃত এবং বাহ্যিকভাবে দৃশ্যমান প্রতীক সম্পর্কে কম্পাইলারের কাছে তথ্য। যখন
লিঙ্কার প্লাগইন উপলব্ধ নয়, -পুরো-প্রোগ্রাম কম্পাইলারকে অনুমতি দিতে ব্যবহার করা উচিত
এই অনুমানগুলি তৈরি করতে, যা আরও আক্রমণাত্মক অপ্টিমাইজেশন সিদ্ধান্তের দিকে নিয়ে যায়।
কখন -ফিউজ-লিঙ্কার-প্লাগইন তখন সক্রিয় হয় না, যখন একটি ফাইল কম্পাইল করা হয় -ফ্লো, দ্য
জেনারেটেড অবজেক্ট ফাইলটি একটি নিয়মিত অবজেক্ট ফাইলের চেয়ে বড় কারণ এতে জিম্পল রয়েছে
বাইটকোড এবং স্বাভাবিক চূড়ান্ত কোড (দেখুন -ffat-lto-বস্তু. এর মানে সেই বস্তু
LTO তথ্য সহ ফাইলগুলিকে সাধারণ অবজেক্ট ফাইল হিসাবে লিঙ্ক করা যেতে পারে; যদি -fno-lto প্রেরণ করা হয়
লিঙ্কারে, কোন আন্তঃপ্রক্রিয়াগত অপ্টিমাইজেশান প্রয়োগ করা হয় না। উল্লেখ্য যে যখন
-fno-fat-lto-বস্তু কম্পাইল-পর্যায়টি সক্রিয় করা হয়েছে তবে আপনি একটি সম্পাদন করতে পারবেন না
তাদের উপর নিয়মিত, নন-এলটিও লিঙ্ক।
অতিরিক্তভাবে, পৃথক ফাইল কম্পাইল করতে ব্যবহৃত অপ্টিমাইজেশান ফ্ল্যাগগুলি নয়
অগত্যা লিঙ্ক সময়ে ব্যবহৃত যারা সম্পর্কিত. এই ক্ষেত্রে,
gcc -c -O0 -ffat-lto-বস্তু -flto foo.c
gcc -c -O0 -ffat-lto-বস্তু -flto bar.c
জিসিসি -o মাইপ্রোগ -o3 foo.o বার.ও
এটি অপ্টিমাইজড অ্যাসেম্বলার কোড সহ পৃথক অবজেক্ট ফাইল তৈরি করে, কিন্তু
ফলে বাইনারি মাইপ্রোগ এ অপ্টিমাইজ করা হয় -ও3. যদি, পরিবর্তে, চূড়ান্ত বাইনারি হয়
দিয়ে তৈরি -fno-lto, তারপর মাইপ্রোগ অপ্টিমাইজ করা হয় না।
চূড়ান্ত বাইনারি তৈরি করার সময়, GCC শুধুমাত্র সেগুলির জন্য লিঙ্ক-টাইম অপ্টিমাইজেশান প্রয়োগ করে
বাইটকোড ধারণকারী ফাইল। অতএব, আপনি অবজেক্ট ফাইলগুলিকে মিশ্রিত করতে এবং মেলাতে পারেন এবং
GIMPLE বাইটকোড এবং চূড়ান্ত অবজেক্ট কোড সহ লাইব্রেরি। GCC স্বয়ংক্রিয়ভাবে নির্বাচন করে
কোন ফাইলগুলি LTO মোডে অপ্টিমাইজ করতে হবে এবং কোন ফাইলগুলিকে আরও ছাড়াই লিঙ্ক করতে হবে৷
প্রক্রিয়াকরণ।
বাইটকোড তৈরি করার সময় জিসিসি দ্বারা সংরক্ষিত কিছু কোড জেনারেশন পতাকা রয়েছে, যেমন
তারা চূড়ান্ত লিঙ্ক পর্যায়ে ব্যবহার করা প্রয়োজন. সাধারণত অপশন নির্দিষ্ট করা হয়
লিঙ্ক-টাইম কম্পাইল-টাইমে নির্দিষ্ট করা ওভাররাইড করে।
আপনি একটি অপ্টিমাইজেশান স্তর বিকল্প নির্দিষ্ট না হলে -O লিঙ্ক-টাইমে তারপর GCC গণনা করে
অবজেক্ট ফাইল কম্পাইল করার সময় ব্যবহৃত অপ্টিমাইজেশান স্তরের উপর ভিত্তি করে একটি। দ্য
সর্বোচ্চ অপ্টিমাইজেশান স্তর এখানে জয়।
বর্তমানে, নিম্নলিখিত অপশন এবং তাদের সেটিং প্রথম অবজেক্ট ফাইল থেকে নেওয়া হয়েছে
যা স্পষ্টভাবে এটি নির্দিষ্ট করেছে: -fpic, -fpic, -fpie, - সাধারণ, - ব্যতিক্রম,
-অ-কল-ব্যতিক্রম, -fgnu-tm এবং সমস্ত -m লক্ষ্য পতাকা
সমস্ত সংকলন-ইউনিতে এবং চেষ্টা করার জন্য নির্দিষ্ট ABI পরিবর্তনশীল পতাকাগুলিকে মেলে ধরতে হবে
একটি বিরোধপূর্ণ মান সহ লিঙ্ক-টাইমে এটিকে ওভাররাইড করতে উপেক্ষা করা হয়। এটা অন্তর্ভুক্ত
যেমন বিকল্প -freg-struct-রিটার্ন এবং -fpcc-struct-রিটার্ন.
অন্যান্য বিকল্প যেমন -এফপিপি-চুক্তি, -fno-কঠোর-ওভারফ্লো, -fwrapv, -fno-trapv or
-fno-স্ট্রিক-অ্যালিয়াসিং লিঙ্ক পর্যায়ে পাস করা হয় এবং রক্ষণশীলভাবে মার্জ করা হয়
বিরোধপূর্ণ অনুবাদ ইউনিটের জন্য। বিশেষভাবে -fno-কঠোর-ওভারফ্লো, -fwrapv এবং
-fno-trapv অগ্রাধিকার গ্রহণ করুন এবং উদাহরণস্বরূপ -ffp-চুক্তি=বন্ধ উপর অগ্রাধিকার নেয়
-ffp-চুক্তি=দ্রুত. আপনি লিঙ্ক-টাইমে তাদের ওভাররাইড করতে পারেন.
এটি সুপারিশ করা হয় যে আপনি একই লিঙ্কে অংশগ্রহণকারী সমস্ত ফাইল কম্পাইল করুন
একই বিকল্পগুলি এবং লিঙ্কের সময় সেই বিকল্পগুলিও উল্লেখ করুন।
LTO যদি C লিঙ্কেজ সহ বস্তুর মুখোমুখি হয় তবে আলাদাভাবে বেমানান প্রকারের সাথে ঘোষণা করা হয়
অনুবাদ ইউনিট একসাথে সংযুক্ত করা হবে (ISO C99 অনুযায়ী অনির্ধারিত আচরণ
6.2.7), একটি অ-মারাত্মক ডায়াগনস্টিক জারি করা যেতে পারে। চালানোর সময় আচরণ এখনও অনির্ধারিত
সময় অনুরূপ ডায়গনিস্টিক অন্যান্য ভাষার জন্য উত্থাপিত হতে পারে.
LTO-এর আরেকটি বৈশিষ্ট্য হল আন্তঃপ্রক্রিয়াগত অপ্টিমাইজেশান প্রয়োগ করা সম্ভব
বিভিন্ন ভাষায় লেখা ফাইলগুলিতে:
gcc -c -flto foo.c
জি ++ -সি -ফ্ল্টো বার.সিসি
gfortran -c -flto baz.f90
জি ++ -ও মাইপ্রোগ -ফ্লো -o3 foo.o বার.ও বাজ.ও -lgfortran
লক্ষ্য করুন যে চূড়ান্ত লিঙ্কটি দিয়ে করা হয়েছে g ++ C++ রানটাইম লাইব্রেরি পেতে এবং
-এলজিফোর্ট্রান Fortran রানটাইম লাইব্রেরি পেতে যোগ করা হয়। সাধারণভাবে, মেশানোর সময়
LTO মোডে ভাষা, মিশ্রিত করার সময় আপনার একই লিঙ্ক কমান্ড বিকল্পগুলি ব্যবহার করা উচিত
একটি নিয়মিত (নন-এলটিও) সংকলনে ভাষা।
যদি জিম্পল বাইটকোড সম্বলিত অবজেক্ট ফাইলগুলি একটি লাইব্রেরি সংরক্ষণাগারে সংরক্ষণ করা হয়, বলুন
libfoo.a, যদি আপনি একটি ব্যবহার করেন তবে একটি LTO লিঙ্কে সেগুলি বের করা এবং ব্যবহার করা সম্ভব
প্লাগইন সমর্থন সহ লিঙ্কার। LTO-এর জন্য উপযুক্ত স্ট্যাটিক লাইব্রেরি তৈরি করতে, ব্যবহার করুন জিসিসি-এআর
এবং gcc-ranlib পরিবর্তে ar এবং রানলিব; এর সাথে অবজেক্ট ফাইলের চিহ্ন দেখাতে
জিম্পল বাইটকোড, ব্যবহার করুন জিসিসি-এনএম. এই কমান্ডের জন্য যে প্রয়োজন ar, রানলিব এবং nm হয়েছে
প্লাগইন সমর্থন সহ সংকলিত। লিঙ্কের সময়, পতাকাটি ব্যবহার করুন -ফিউজ-লিঙ্কার-প্লাগইন থেকে
নিশ্চিত করুন যে লাইব্রেরি LTO অপ্টিমাইজেশান প্রক্রিয়ায় অংশগ্রহণ করে:
gcc -o myprog -O2 -flto -fuse-linker-plugin ao bo -lfoo
লিঙ্কার প্লাগইন সক্রিয় করার সাথে সাথে, লিঙ্কার প্রয়োজনীয় GIMPLE ফাইলগুলি বের করে
libfoo.a এবং তাদের সমষ্টির অংশ করার জন্য চলমান GCC-তে প্রেরণ করে
GIMPLE ইমেজ অপ্টিমাইজ করা.
আপনি যদি প্লাগইন সমর্থন সহ লিঙ্কার ব্যবহার না করেন এবং/অথবা লিঙ্কার সক্ষম না করেন
প্লাগইন, তারপর ভিতরে বস্তু libfoo.a নিষ্কাশিত এবং স্বাভাবিক হিসাবে লিঙ্ক করা হয়, কিন্তু তারা
LTO অপ্টিমাইজেশান প্রক্রিয়ায় অংশগ্রহণ করবেন না। একটি স্ট্যাটিক লাইব্রেরি করতে
LTO অপ্টিমাইজেশান এবং স্বাভাবিক লিঙ্কেজ উভয়ের জন্য উপযুক্ত, এর সাথে এর অবজেক্ট ফাইলগুলি কম্পাইল করুন
-ফ্লো -ffat-lto-বস্তু.
লিঙ্ক-টাইম অপ্টিমাইজেশানগুলি পরিচালনা করার জন্য পুরো প্রোগ্রামের উপস্থিতির প্রয়োজন হয় না।
প্রোগ্রাম রপ্তানি করার জন্য কোন প্রতীক প্রয়োজন না হলে, এটি একত্রিত করা সম্ভব
-ফ্লো এবং -পুরো-প্রোগ্রাম আন্তঃপ্রক্রিয়াগত অপ্টিমাইজারদের আরও বেশি ব্যবহার করার অনুমতি দিতে
আক্রমনাত্মক অনুমান যা উন্নত অপ্টিমাইজেশন সুযোগের দিকে নিয়ে যেতে পারে। ব্যাবহার
-পুরো-প্রোগ্রাম লিঙ্কার প্লাগইন সক্রিয় থাকলে প্রয়োজন হয় না (দেখুন -ফিউজ-লিঙ্কার-প্লাগইন).
LTO এর বর্তমান বাস্তবায়ন বাইটকোড তৈরি করার কোন চেষ্টা করে না
বিভিন্ন ধরনের হোস্টের মধ্যে বহনযোগ্য। বাইটকোড ফাইল সংস্করণ এবং সেখানে আছে
একটি কঠোর সংস্করণ চেক, তাই GCC এর একটি সংস্করণে তৈরি করা বাইটকোড ফাইলগুলি তা করে না
GCC এর পুরানো বা নতুন সংস্করণের সাথে কাজ করুন।
লিঙ্ক-টাইম অপ্টিমাইজেশান ডিবাগিং তথ্য তৈরির সাথে ভাল কাজ করে না।
মিশ্রন -ফ্লো সঙ্গে -g বর্তমানে পরীক্ষামূলক এবং অপ্রত্যাশিত উত্পাদন প্রত্যাশিত
ফলাফল.
যদি আপনি ঐচ্ছিক উল্লেখ করেন n, অপ্টিমাইজেশান এবং কোড জেনারেশন লিঙ্কের সময়ে করা হয়
সমান্তরাল ব্যবহার করে মৃত্যুদন্ড কার্যকর করা হয় n একটি ইনস্টল ব্যবহার করে সমান্তরাল কাজ করা প্রোগ্রাম.
পরিবেশ পরিবর্তনশীল সুইচ ব্যবহৃত প্রোগ্রাম ওভাররাইড করতে ব্যবহার করা যেতে পারে। ডিফল্ট
মান n 1 হয়
আপনিও নির্দিষ্ট করতে পারেন -flto=জব সার্ভার নির্ধারণ করতে GNU make এর জব সার্ভার মোড ব্যবহার করুন
সমান্তরাল কাজের সংখ্যা। যখন মেকফাইল কলিং জিসিসি ইতিমধ্যেই থাকে তখন এটি কার্যকর
সমান্তরালভাবে কার্যকর করা। আপনি একটি prepend আবশ্যক + পিতামাতার কমান্ড রেসিপি থেকে
এই কাজ করার জন্য Makefile. এই বিকল্পটি সম্ভবত শুধুমাত্র যদি কাজ করে সুইচ GNU তৈরি করা হয়।
-ফ্লো-পার্টিশন=পানা
লিঙ্ক-টাইম অপ্টিমাইজার দ্বারা ব্যবহৃত পার্টিশনিং অ্যালগরিদম নির্দিষ্ট করুন। মান হল
পারেন 1to1 মূল উৎস ফাইলের মিররিং একটি পার্টিশন নির্দিষ্ট করতে বা সুষম
সমান আকারের খণ্ডে বিভাজন নির্দিষ্ট করতে (যখনই সম্ভব) বা সর্বোচ্চ তৈরী করতে
যেখানে সম্ভব প্রতিটি প্রতীকের জন্য নতুন পার্টিশন। নির্দিষ্ট করা না একটি অ্যালগরিদম হিসাবে
বিভাজন এবং স্ট্রিমিং সম্পূর্ণরূপে নিষ্ক্রিয় করে। ডিফল্ট মান হল সুষম। যদিও
1to1 বিভিন্ন কোড অর্ডারিং সমস্যার সমাধান হিসাবে ব্যবহার করা যেতে পারে, সর্বোচ্চ
পার্টিশন শুধুমাত্র অভ্যন্তরীণ পরীক্ষার জন্য উদ্দেশ্যে করা হয়. মূল্য এক যে নির্দিষ্ট করে
মান থাকাকালীন ঠিক একটি পার্টিশন ব্যবহার করা উচিত না পার্টিশনকে বাইপাস করে এবং
ডাব্লুপিএ ফেজ থেকে সরাসরি লিঙ্ক-টাইম অপ্টিমাইজেশান ধাপটি চালায়।
-flto-odr-টাইপ-মার্জিং
C++ প্রকারের ম্যাংগ্ল টাইপের নাম এবং তাদের একীকরণ এ স্ট্রিমিং সক্ষম করুন
লিঙ্কটাইম এটি LTO অবজেক্ট ফাইলের আকার বাড়ায়, কিন্তু এক সম্পর্কে ডায়াগনস্টিক সক্ষম করে
সংজ্ঞা নিয়ম লঙ্ঘন.
-ফ্লো-কম্প্রেশন-লেভেল=n
এই বিকল্পটি লিখিত মধ্যবর্তী ভাষার জন্য ব্যবহৃত সংকোচনের মাত্রা নির্দিষ্ট করে
LTO অবজেক্ট ফাইলগুলিতে, এবং শুধুমাত্র LTO মোডের সাথে একত্রে অর্থবহ (-ফ্লো).
বৈধ মান হল 0 (কোনও সংকোচন নেই) থেকে 9 (সর্বোচ্চ কম্প্রেশন)। এর বাইরে মান
পরিসীমা 0 বা 9 তে আটকানো হয়। যদি বিকল্পটি দেওয়া না হয়, একটি ডিফল্ট ব্যালেন্সড
কম্প্রেশন সেটিং ব্যবহার করা হয়।
-ফ্লো-রিপোর্ট
লিঙ্ক-টাইম অপ্টিমাইজারের কাজের অভ্যন্তরীণ বিবরণ সহ একটি প্রতিবেদন প্রিন্ট করে। দ্য
এই প্রতিবেদনের বিষয়বস্তু সংস্করণ থেকে সংস্করণে পরিবর্তিত হয়। এটি জিসিসির জন্য উপযোগী হতে বোঝানো হয়েছে
বিকাশকারীরা যখন এলটিও মোডে অবজেক্ট ফাইলগুলি প্রসেস করছে (এর মাধ্যমে -ফ্লো).
ডিফল্ট দ্বারা অক্ষম
-ফ্লো-রিপোর্ট-ডব্লিউপিএ
মত -ফ্লো-রিপোর্ট, কিন্তু শুধুমাত্র লিঙ্ক টাইম অপ্টিমাইজেশানের WPA পর্বের জন্য প্রিন্ট করুন৷
-ফিউজ-লিঙ্কার-প্লাগইন
লিঙ্ক-টাইম অপ্টিমাইজেশানের সময় একটি লিঙ্কার প্লাগইন ব্যবহার সক্ষম করে। এই বিকল্পটি নির্ভর করে
লিঙ্কারে প্লাগইন সাপোর্টে, যা সোনায় পাওয়া যায় বা GNU ld 2.21 বা
নতুন
এই বিকল্পটি লাইব্রেরির বাইরে GIMPLE বাইটকোড সহ অবজেক্ট ফাইল নিষ্কাশন সক্ষম করে
সংরক্ষণাগার এটি লিঙ্কে আরও কোড প্রকাশ করে অপ্টিমাইজেশনের গুণমান উন্নত করে-
সময় অপ্টিমাইজার। এই তথ্যটি নির্দিষ্ট করে যে কোন চিহ্নগুলি বাহ্যিকভাবে অ্যাক্সেস করা যেতে পারে
(নন-এলটিও অবজেক্ট দ্বারা বা ডায়নামিক লিঙ্কিংয়ের সময়)। ফলাফল কোড মান উন্নতি চালু
বাইনারি (এবং ভাগ করা লাইব্রেরি যা লুকানো দৃশ্যমানতা ব্যবহার করে) অনুরূপ
-পুরো-প্রোগ্রাম। দেখ -ফ্লো এই পতাকার প্রভাব এবং কিভাবে তা বর্ণনার জন্য
এটা ব্যবহার করো.
এই বিকল্পটি ডিফল্টরূপে সক্রিয় থাকে যখন GCC-এ LTO সমর্থন সক্রিয় থাকে এবং GCC ছিল৷
একটি লিঙ্কার সমর্থনকারী প্লাগইনগুলির সাথে ব্যবহারের জন্য কনফিগার করা হয়েছে (GNU ld 2.21 বা নতুন বা সোনার)।
-ffat-lto-বস্তু
ফ্যাট এলটিও অবজেক্ট হল অবজেক্ট ফাইল যাতে মধ্যবর্তী ভাষা এবং উভয়ই থাকে
অবজেক্ট কোড। এটি তাদের LTO লিঙ্কিং এবং স্বাভাবিক লিঙ্কিং উভয়ের জন্য ব্যবহারযোগ্য করে তোলে। এই
এর সাথে কম্পাইল করার সময় বিকল্পটি কার্যকর -ফ্লো এবং লিঙ্কের সময় উপেক্ষা করা হয়।
-fno-fat-lto-বস্তু প্লেইন LTO এর উপর সংকলন সময় উন্নত করে, কিন্তু এর প্রয়োজন হয়
LTO সম্পর্কে সচেতন হতে সম্পূর্ণ টুলচেইন। এটি লিঙ্কার প্লাগইন সমর্থন সহ একটি লিঙ্কার প্রয়োজন
মৌলিক কার্যকারিতার জন্য। উপরন্তু, nm, ar এবং রানলিব লিঙ্কার সমর্থন করতে হবে
প্লাগইনগুলি একটি সম্পূর্ণ বৈশিষ্ট্যযুক্ত বিল্ড এনভায়রনমেন্টের অনুমতি দেয় (স্ট্যাটিক তৈরি করতে সক্ষম
গ্রন্থাগার ইত্যাদি)। GCC প্রদান করে জিসিসি-এআর, জিসিসি-এনএম, gcc-ranlib পাস করার জন্য wrappers
এই সরঞ্জামগুলির জন্য সঠিক বিকল্পগুলি। নন ফ্যাট এলটিও মেকফাইল ব্যবহার করার জন্য পরিবর্তন করতে হবে
তাদের.
ডিফল্ট হয় -fno-fat-lto-বস্তু লিঙ্কার প্লাগইন সমর্থন সহ লক্ষ্যে।
-FCOMPARE-LIM
রেজিস্টার বরাদ্দ এবং পোস্ট-রেজিস্টার বরাদ্দ নির্দেশ বিভাজনের পরে, চিহ্নিত করুন
গাণিতিক নির্দেশাবলী যা একটি তুলনা অপারেশনের অনুরূপ প্রসেসরের পতাকা গণনা করে
সেই পাটিগণিতের উপর ভিত্তি করে। যদি সম্ভব হয়, সুস্পষ্ট তুলনা অপারেশন বাদ দিন।
এই পাসটি শুধুমাত্র নির্দিষ্ট লক্ষ্যগুলির জন্য প্রযোজ্য যা স্পষ্টভাবে প্রতিনিধিত্ব করতে পারে না
রেজিস্টার বরাদ্দ সম্পূর্ণ হওয়ার আগে তুলনা অপারেশন।
স্তরে সক্রিয় -O, -ও2, -ও3, -ওএস.
-fcprop-রেজিস্টার
রেজিস্টার বরাদ্দ এবং পোস্ট-রেজিস্টার বরাদ্দ নির্দেশ বিভাজনের পরে, সম্পাদন করুন
সময়সূচী নির্ভরতা হ্রাস করার চেষ্টা করার জন্য একটি অনুলিপি-প্রচার পাস এবং মাঝে মাঝে
অনুলিপি মুছে ফেলুন।
স্তরে সক্রিয় -O, -ও2, -ও3, -ওএস.
-প্রোফাইল-সংশোধন
মাল্টি-থ্রেডেড প্রোগ্রামের জন্য একটি যন্ত্রযুক্ত বাইনারি ব্যবহার করে সংগ্রহ করা প্রোফাইল হতে পারে
মিস কাউন্টার আপডেটের কারণে অসামঞ্জস্যপূর্ণ। যখন এই বিকল্পটি নির্দিষ্ট করা হয়, GCC ব্যবহার করে
এই ধরনের অসঙ্গতিগুলিকে সংশোধন বা মসৃণ করার জন্য হিউরিস্টিকস। ডিফল্টরূপে, GCC একটি নির্গত করে
একটি অসামঞ্জস্যপূর্ণ প্রোফাইল সনাক্ত করা হলে ত্রুটি বার্তা।
-ফপ্রোফাইল-ডির =পথ
প্রোফাইল ডেটা ফাইলের জন্য অনুসন্ধান করার জন্য ডিরেক্টরি সেট করুন পথ। এই বিকল্প
শুধুমাত্র দ্বারা উত্পন্ন প্রোফাইল ডেটা প্রভাবিত করে -প্রোফাইল-জেনারেট করুন, -সবচেয়ে কভারেজ,
-এফপ্রোফাইল-আর্কস এবং দ্বারা ব্যবহৃত -প্রোফাইল-ব্যবহার এবং -fbranch-সম্ভাবনা এবং এর সাথে সম্পর্কিত
বিকল্প পরম এবং আপেক্ষিক উভয় পাথ ব্যবহার করা যেতে পারে। ডিফল্টরূপে, GCC ব্যবহার করে
বর্তমান ডিরেক্টরি হিসাবে পথ, এইভাবে প্রোফাইল ডেটা ফাইলটি একই ডিরেক্টরিতে প্রদর্শিত হয়
অবজেক্ট ফাইল।
-প্রোফাইল-জেনারেট করুন
-ফপ্রোফাইল-জেনারেট =পথ
প্রোফাইল উপযোগী উত্পাদন করতে সাধারণত যন্ত্র প্রয়োগের জন্য ব্যবহৃত বিকল্পগুলি সক্ষম করুন৷
প্রোফাইল ফিডব্যাক ভিত্তিক অপ্টিমাইজেশান সহ পরবর্তী পুনঃসংকলনের জন্য। আপনাকে অবশ্যই ব্যবহার করতে হবে
-প্রোফাইল-জেনারেট করুন কম্পাইল করার সময় এবং আপনার প্রোগ্রাম লিঙ্ক করার সময় উভয়ই।
নিম্নলিখিত বিকল্পগুলি সক্রিয় করা হয়েছে: -এফপ্রোফাইল-আর্কস, -প্রোফাইল-মান, -fvpt.
If পথ উল্লেখ করা হয়েছে, GCC এর দিকে তাকায় পথ প্রোফাইল ফিডব্যাক ডেটা ফাইল খুঁজে পেতে।
দেখ -প্রোফাইল-ডির.
-প্রোফাইল-ব্যবহার
-ফপ্রোফাইল-ব্যবহার =পথ
প্রোফাইল ফিডব্যাক-নির্দেশিত অপ্টিমাইজেশানগুলি এবং নিম্নলিখিত অপ্টিমাইজেশানগুলি সক্ষম করুন যা৷
শুধুমাত্র প্রোফাইল ফিডব্যাক উপলব্ধ থাকলে সাধারণত লাভজনক হয়: -fbranch-সম্ভাবনা,
-fvpt, -ফানরোল-লুপস, -ফপিল-লুপস, -ফট্রেসার, -ফ্রি-ভেক্টরাইজ, এবং ফ্রী-লুপ-
বিতরণ-নিদর্শন.
ডিফল্টরূপে, GCC একটি ত্রুটি বার্তা নির্গত করে যদি প্রতিক্রিয়া প্রোফাইলগুলি এর সাথে মেলে না
সোর্স কোড. এই ত্রুটিটি ব্যবহার করে একটি সতর্কতায় পরিণত করা যেতে পারে -Wcoverage-অমিল.
মনে রাখবেন এর ফলে খারাপভাবে অপ্টিমাইজ করা কোড হতে পারে।
If পথ উল্লেখ করা হয়েছে, GCC এর দিকে তাকায় পথ প্রোফাইল ফিডব্যাক ডেটা ফাইল খুঁজে পেতে।
দেখ -প্রোফাইল-ডির.
-ফটো-প্রোফাইল
-ফটো-প্রোফাইল=পথ
স্যাম্পলিং-ভিত্তিক প্রতিক্রিয়া-নির্দেশিত অপ্টিমাইজেশানগুলি এবং নিম্নলিখিত অপ্টিমাইজেশানগুলি সক্ষম করুন৷
যেগুলি সাধারণত শুধুমাত্র প্রোফাইল ফিডব্যাক উপলব্ধ থাকলে লাভজনক হয়:
-fbranch-সম্ভাবনা, -fvpt, -ফানরোল-লুপস, -ফপিল-লুপস, -ফট্রেসার,
-ফ্রি-ভেক্টরাইজ, -ফিনলাইন-ফাংশন, -ফিপা-সিপি, -ফিপা-সিপি-ক্লোন,
-ফপ্রেডিকটিভ-কমনিং, -ফানসুইচ-লুপস, -fgcse-আফটার-রিলোড, এবং
-এফট্রি-লুপ-ডিস্ট্রিবিউট-প্যাটার্ন.
পথ AutoFDO প্রোফাইল তথ্য ধারণকারী একটি ফাইলের নাম। যদি বাদ দেওয়া হয়, এটা
ডিফল্ট থেকে fbdata.afdo বর্তমান ডিরেক্টরিতে।
একটি AutoFDO প্রোফাইল ডেটা ফাইল তৈরি করার জন্য আপনার প্রোগ্রামটি এর সাথে চালানো প্রয়োজন পারফ
একটি সমর্থিত GNU/Linux টার্গেট সিস্টেমে ইউটিলিটি। আরও তথ্যের জন্য, দেখুন
<https://perf.wiki.kernel.org/>.
যেমন
perf রেকর্ড -e br_inst_retired:near_taken -b -o perf.data \
--আপনার_প্রোগ্রাম
তারপরে ব্যবহার করুন create_gcov কাঁচা প্রোফাইল ডেটাকে একটি ফরম্যাটে রূপান্তর করার টুল যা হতে পারে
GCC দ্বারা ব্যবহৃত। আপনাকে অবশ্যই এটিতে আপনার প্রোগ্রামের জন্য আনস্ট্রিপড বাইনারি সরবরাহ করতে হবে
টুল. দেখাhttps://github.com/google/autofdo>.
যেমন
create_gcov --binary=your_program.unstripped --profile=perf.data \
--gcov=profile.afdo
নিম্নোক্ত বিকল্পগুলি ফ্লোটিং-পয়েন্ট গাণিতিক সংক্রান্ত কম্পাইলার আচরণ নিয়ন্ত্রণ করে।
এই বিকল্পগুলি গতি এবং শুদ্ধতার মধ্যে বাণিজ্য বন্ধ করে। সব বিশেষভাবে সক্রিয় করা আবশ্যক.
-ফ্লোট-স্টোর
রেজিস্টারে ফ্লোটিং-পয়েন্ট ভেরিয়েবল সংরক্ষণ করবেন না এবং অন্যান্য বিকল্পগুলিকে বাধা দেবেন না
একটি ফ্লোটিং-পয়েন্ট মান একটি রেজিস্টার বা মেমরি থেকে নেওয়া হয়েছে কিনা তা পরিবর্তন করতে পারে।
এই বিকল্পটি 68000 যেখানে মেশিনে অবাঞ্ছিত অতিরিক্ত নির্ভুলতা প্রতিরোধ করে
ভাসমান রেজিস্টারগুলি (68881-এর) একটি "ডবল" এর চেয়ে বেশি নির্ভুলতা রাখে
আছে একইভাবে x86 আর্কিটেকচারের জন্য। বেশিরভাগ প্রোগ্রামের জন্য, অতিরিক্ত নির্ভুলতা
শুধুমাত্র ভাল, কিন্তু কিছু প্রোগ্রাম IEEE ভাসমান সুনির্দিষ্ট সংজ্ঞার উপর নির্ভর করে
বিন্দু ব্যবহার করুন -ফ্লোট-স্টোর এই জাতীয় প্রোগ্রামগুলির জন্য, তাদের সমস্ত সংরক্ষণ করার জন্য পরিবর্তন করার পরে
ভেরিয়েবলে প্রাসঙ্গিক মধ্যবর্তী গণনা।
-ফেক্সেস-নির্ভুলতা=শৈলী
এই বিকল্পটি মেশিনে অতিরিক্ত নির্ভুলতার উপর আরও নিয়ন্ত্রণের অনুমতি দেয় যেখানে ভাসমান-
পয়েন্ট রেজিস্টারে IEEE "ফ্লোট" এবং "ডাবল" প্রকারের চেয়ে বেশি নির্ভুলতা রয়েছে এবং
প্রসেসর এই ধরনের অপারেশনগুলিকে সমর্থন করে না। গতানুগতিক,
-ফেক্সেস-নির্ভুলতা = দ্রুত কার্যকর হয়; এর মানে হল যে অপারেশন করা হয়
রেজিস্টারের নির্ভুলতা এবং প্রকারের সাথে রাউন্ডিং করার সময় এটি অপ্রত্যাশিত
সোর্স কোডে নির্দিষ্ট করা হয়। সি কম্পাইল করার সময়, যদি
-ফেক্সেস-নির্ভুলতা=মান নির্দিষ্ট করা হয় তারপর অতিরিক্ত নির্ভুলতা নিয়ম অনুসরণ করে
ISO C99 এ নির্দিষ্ট করা হয়েছে; বিশেষ করে, কাস্ট এবং অ্যাসাইনমেন্ট উভয়ই মান হতে পারে
তাদের শব্দার্থিক প্রকারে বৃত্তাকার (যদিও -ফ্লোট-স্টোর শুধুমাত্র অ্যাসাইনমেন্টকে প্রভাবিত করে)।
এই বিকল্পটি ডিফল্টরূপে C এর জন্য সক্রিয় করা হয় যদি একটি কঠোর মানসম্পন্ন বিকল্প যেমন
-std=c99 ব্যবহৃত হয়.
-ফেক্সেস-নির্ভুলতা=মান C ব্যতীত অন্য ভাষার জন্য প্রয়োগ করা হয় না, এবং নেই
প্রভাব যদি -ফানসেফ-গণিত-অপ্টিমাইজেশন or ফাস্ট-গণিত উল্লিখিত আছে. x86 এ, এটা
এছাড়াও কোন প্রভাব আছে যদি -mfpmath = sse or -mfpmath = sse+387 উল্লিখিত আছে; সাবেক এ
ক্ষেত্রে, IEEE শব্দার্থবিদ্যা অতিরিক্ত নির্ভুলতা ছাড়াই প্রযোজ্য, এবং পরবর্তীতে, রাউন্ডিং হয়
অপ্রত্যাশিত
ফাস্ট-গণিত
অপশন সেট করে -fno-math-erno, -ফানসেফ-গণিত-অপ্টিমাইজেশন, শুধুমাত্র সীমাবদ্ধ-গণিত,
-fno-rounding-math, -fno-সিগন্যালিং-ন্যান্স এবং -fcx-সীমিত-পরিসর.
এই বিকল্পটি প্রিপ্রসেসর ম্যাক্রো "__FAST_MATH__" সংজ্ঞায়িত করে।
এই বিকল্প কোন দ্বারা চালু করা হয় না -O বিকল্প ছাড়াও -অফাস্ট যেহেতু এটা হতে পারে
IEEE বা ISO-এর সঠিক বাস্তবায়নের উপর নির্ভর করে এমন প্রোগ্রামগুলির জন্য ভুল আউটপুট
গণিত ফাংশনের জন্য নিয়ম/নির্দিষ্ট বিবরণ। এটি, তবে, এর জন্য দ্রুত কোড প্রদান করতে পারে
এই স্পেসিফিকেশনের গ্যারান্টি প্রয়োজন হয় না যে প্রোগ্রাম.
-fno-math-erno
গণিত ফাংশন কল করার পরে "ভ্রান্তি" সেট করবেন না যা একটি একক দ্বারা কার্যকর করা হয়
নির্দেশ, যেমন, "sqrt"। একটি প্রোগ্রাম যা গণিত ত্রুটির জন্য IEEE ব্যতিক্রমের উপর নির্ভর করে
হ্যান্ডলিং IEEE পাটিগণিত বজায় রাখার সময় গতির জন্য এই পতাকা ব্যবহার করতে চাইতে পারে
সামঞ্জস্য।
এই বিকল্প কোন দ্বারা চালু করা হয় না -O বিকল্প যেহেতু এটি ভুল আউটপুট হতে পারে
IEEE বা ISO-এর সঠিক বাস্তবায়নের উপর নির্ভর করে এমন প্রোগ্রামগুলির জন্য
গণিত ফাংশনের জন্য নিয়ম/নির্দিষ্ট বিবরণ। এটি, তবে, এর জন্য দ্রুত কোড প্রদান করতে পারে
এই স্পেসিফিকেশনের গ্যারান্টি প্রয়োজন হয় না যে প্রোগ্রাম.
ডিফল্ট হয় -fmath-erno.
ডারউইন সিস্টেমে, গণিত গ্রন্থাগার কখনই "ভ্রান্তি" সেট করে না। তাই কোনো কারণ নেই
কম্পাইলার সম্ভাব্যতা বিবেচনা করার জন্য যে এটি হতে পারে, এবং -fno-math-erno হয়
ডিফল্ট.
-ফানসেফ-গণিত-অপ্টিমাইজেশন
ফ্লোটিং-পয়েন্ট গাণিতিকের জন্য অপ্টিমাইজেশনের অনুমতি দিন যা (ক) অনুমান করে আর্গুমেন্ট এবং
ফলাফল বৈধ এবং (b) IEEE বা ANSI মান লঙ্ঘন করতে পারে। যখন লিঙ্ক-টাইমে ব্যবহার করা হয়,
এটি লাইব্রেরি বা স্টার্টআপ ফাইলগুলি অন্তর্ভুক্ত করতে পারে যা ডিফল্ট FPU নিয়ন্ত্রণ শব্দ বা পরিবর্তন করে
অন্যান্য অনুরূপ অপ্টিমাইজেশান।
এই বিকল্প কোন দ্বারা চালু করা হয় না -O বিকল্প যেহেতু এটি ভুল আউটপুট হতে পারে
IEEE বা ISO-এর সঠিক বাস্তবায়নের উপর নির্ভর করে এমন প্রোগ্রামগুলির জন্য
গণিত ফাংশনের জন্য নিয়ম/নির্দিষ্ট বিবরণ। এটি, তবে, এর জন্য দ্রুত কোড প্রদান করতে পারে
এই স্পেসিফিকেশনের গ্যারান্টি প্রয়োজন হয় না যে প্রোগ্রাম. সক্ষম করে
-fno-স্বাক্ষরিত-শূন্য, -fno-ট্র্যাপিং-গণিত, -fasociative-গণিত এবং -ফ্রেসিপ্রোকাল-গণিত.
ডিফল্ট হয় -fno-অনিরাপদ-গণিত-অপ্টিমাইজেশান.
-fasociative-গণিত
ফ্লোটিং-পয়েন্ট অপারেশনের সিরিজে অপারেন্ডের পুনঃসংযোগের অনুমতি দিন। এই
সম্ভবত গণনার ফলাফল পরিবর্তন করে ISO C এবং C++ ভাষার মান লঙ্ঘন করে।
দ্রষ্টব্য: পুনঃক্রম শূন্যের চিহ্ন পরিবর্তন করার পাশাপাশি NaNs উপেক্ষা করতে পারে এবং বাধা দিতে পারে বা
আন্ডারফ্লো বা ওভারফ্লো তৈরি করুন (এবং এইভাবে রাউন্ডিংয়ের উপর নির্ভর করে এমন কোডে ব্যবহার করা যাবে না
আচরণ যেমন "(x + 2**52) - 2**52"। এছাড়াও ফ্লোটিং-পয়েন্ট তুলনা পুনরায় সাজাতে পারে এবং
অর্ডার করা তুলনার প্রয়োজন হলে এইভাবে ব্যবহার করা যাবে না। এই বিকল্পটি যে প্রয়োজন
উভয় -fno-স্বাক্ষরিত-শূন্য এবং -fno-ট্র্যাপিং-গণিত কার্যকর হতে তাছাড়া, এটা তোলে না
সঙ্গে অনেক জ্ঞান -প্রাথমিক-গণিত. Fortran বিকল্পটি স্বয়ংক্রিয়ভাবে সক্রিয় হয় যখন
উভয় -fno-স্বাক্ষরিত-শূন্য এবং -fno-ট্র্যাপিং-গণিত কার্যকর হয়
ডিফল্ট হয় -fno-সহযোগী-গণিত.
-ফ্রেসিপ্রোকাল-গণিত
যদি এটি মান দ্বারা ভাগ করার পরিবর্তে একটি মানের পারস্পরিক ব্যবহার করার অনুমতি দেয়
অপ্টিমাইজেশান সক্ষম করে। উদাহরণস্বরূপ "x / y" কে "x * (1/y)" দিয়ে প্রতিস্থাপিত করা যেতে পারে, যা
উপযোগী যদি "(1/y)" সাধারণ সাব এক্সপ্রেশন নির্মূল সাপেক্ষে হয়। উল্লেখ্য যে এই
নির্ভুলতা হারায় এবং মানের উপর অপারেটিং ফ্লপের সংখ্যা বৃদ্ধি করে।
ডিফল্ট হয় -fno-পারস্পরিক-গণিত.
শুধুমাত্র সীমাবদ্ধ-গণিত
ফ্লোটিং-পয়েন্ট পাটিগণিতের জন্য অপ্টিমাইজেশানের অনুমতি দিন যা অনুমান করে আর্গুমেন্ট এবং
ফলাফল NaNs বা +-Infs নয়।
এই বিকল্প কোন দ্বারা চালু করা হয় না -O বিকল্প যেহেতু এটি ভুল আউটপুট হতে পারে
IEEE বা ISO-এর সঠিক বাস্তবায়নের উপর নির্ভর করে এমন প্রোগ্রামগুলির জন্য
গণিত ফাংশনের জন্য নিয়ম/নির্দিষ্ট বিবরণ। এটি, তবে, এর জন্য দ্রুত কোড প্রদান করতে পারে
এই স্পেসিফিকেশনের গ্যারান্টি প্রয়োজন হয় না যে প্রোগ্রাম.
ডিফল্ট হয় -fno-finite-math-শুধুমাত্র.
-fno-স্বাক্ষরিত-শূন্য
ফ্লোটিং-পয়েন্ট পাটিগণিতের জন্য অপ্টিমাইজেশনের অনুমতি দিন যা শূন্যের স্বাক্ষরকে উপেক্ষা করে।
IEEE পাটিগণিত স্বতন্ত্র +0.0 এবং -0.0 মানের আচরণ নির্দিষ্ট করে, যা তখন
এক্সপ্রেশনের সরলীকরণ নিষিদ্ধ করে যেমন x+0.0 বা 0.0*x (এমনকি সহ
শুধুমাত্র সীমাবদ্ধ-গণিত) এই বিকল্পটি বোঝায় যে শূন্য ফলাফলের চিহ্ন নয়
উল্লেখযোগ্য
ডিফল্ট হয় -ফসাইনড-জিরো.
-fno-ট্র্যাপিং-গণিত
কম্পাইল কোড অনুমান করে যে ফ্লোটিং-পয়েন্ট অপারেশন ব্যবহারকারী-দৃশ্যমান তৈরি করতে পারে না
ফাঁদ এই ফাঁদের মধ্যে রয়েছে শূন্য দ্বারা বিভাজন, ওভারফ্লো, আন্ডারফ্লো, সঠিক ফলাফল এবং
অবৈধ অপারেশন। এই বিকল্পটি যে প্রয়োজন -fno-সিগন্যালিং-ন্যান্স কার্যকর হতে
যদি কেউ "নন-স্টপ" IEEE পাটিগণিতের উপর নির্ভর করে তবে এই বিকল্পটি সেট করা দ্রুত কোডের অনুমতি দিতে পারে,
উদাহরণ স্বরূপ.
এই বিকল্পটি কোনভাবেই চালু করা উচিত নয় -O বিকল্প যেহেতু এটি ফলাফল হতে পারে
IEEE বা ISO-এর সঠিক বাস্তবায়নের উপর নির্ভর করে এমন প্রোগ্রামগুলির জন্য ভুল আউটপুট
গণিত ফাংশনের জন্য নিয়ম/নির্দিষ্ট বিবরণ।
ডিফল্ট হয় -ফট্রপিং-গণিত.
-প্রাথমিক-গণিত
রূপান্তর এবং অপ্টিমাইজেশানগুলি অক্ষম করুন যা ডিফল্ট ফ্লোটিং-পয়েন্ট রাউন্ডিং ধরে নেয়৷
আচরণ এটি সমস্ত ফ্লোটিং পয়েন্ট থেকে পূর্ণসংখ্যা রূপান্তরের জন্য রাউন্ড-টু-জিরো, এবং
অন্যান্য সমস্ত গাণিতিক ছাঁটাইয়ের জন্য বৃত্তাকার থেকে নিকটতম। এই বিকল্প হওয়া উচিত
যে প্রোগ্রামগুলি গতিশীলভাবে FP রাউন্ডিং মোড পরিবর্তন করে, বা হতে পারে তার জন্য নির্দিষ্ট করা হয়েছে৷
একটি নন-ডিফল্ট রাউন্ডিং মোড দিয়ে কার্যকর করা হয়েছে। এই বিকল্পটি এর ধ্রুবক ভাঁজ অক্ষম করে
কম্পাইলের সময় ফ্লোটিং-পয়েন্ট এক্সপ্রেশন (যা রাউন্ডিং মোড দ্বারা প্রভাবিত হতে পারে)
এবং গাণিতিক রূপান্তর যা চিহ্ন-নির্ভর উপস্থিতিতে অনিরাপদ
রাউন্ডিং মোড
ডিফল্ট হয় -fno-rounding-math.
এই বিকল্পটি পরীক্ষামূলক এবং বর্তমানে সমস্ত GCC অক্ষম করার নিশ্চয়তা দেয় না৷
রাউন্ডিং মোড দ্বারা প্রভাবিত অপ্টিমাইজেশান। GCC এর ভবিষ্যত সংস্করণ প্রদান করতে পারে
C99 এর "FENV_ACCESS" pragma ব্যবহার করে এই সেটিংটির সূক্ষ্ম নিয়ন্ত্রণ৷ এই কমান্ড লাইন
"FENV_ACCESS"-এর জন্য ডিফল্ট অবস্থা নির্দিষ্ট করতে বিকল্প ব্যবহার করা হবে।
-ফসিগনালিং-ন্যানস
কোড কম্পাইল করুন অনুমান করে যে IEEE সিগন্যালিং NaNs সময় ব্যবহারকারী-দৃশ্যমান ফাঁদ তৈরি করতে পারে
ফ্লোটিং-পয়েন্ট অপারেশন। এই বিকল্পটি সেট করা অপ্টিমাইজেশানগুলিকে অক্ষম করে যা পরিবর্তন হতে পারে৷
সিগন্যালিং NaN এর সাথে দৃশ্যমান ব্যতিক্রমের সংখ্যা। এই বিকল্পটি বোঝায়
-ফট্রপিং-গণিত.
এই বিকল্পটি প্রিপ্রসেসর ম্যাক্রো "__SUPPORT_SNAN__" সংজ্ঞায়িত করে।
ডিফল্ট হয় -fno-সিগন্যালিং-ন্যান্স.
এই বিকল্পটি পরীক্ষামূলক এবং বর্তমানে সমস্ত GCC অক্ষম করার নিশ্চয়তা দেয় না৷
অপ্টিমাইজেশান যা সংকেত NaN আচরণকে প্রভাবিত করে।
-fsingle-নির্ভুলতা-ধ্রুবক
ফ্লোটিং-পয়েন্ট ধ্রুবকগুলিকে অন্তর্নিহিতভাবে রূপান্তর করার পরিবর্তে একক নির্ভুলতা হিসাবে বিবেচনা করুন
তাদের দ্বিগুণ নির্ভুল ধ্রুবক।
-fcx-সীমিত-পরিসর
যখন সক্রিয় থাকে, এই বিকল্পটি বলে যে একটি পরিসর হ্রাস পদক্ষেপের প্রয়োজন নেই যখন
জটিল বিভাগ সম্পাদন করা। এছাড়াও, কোন পরীক্ষা নেই যে একটি ফলাফল
জটিল গুণ বা ভাগ হল "NaN + I*NaN", যা উদ্ধার করার চেষ্টা করে
সেই ক্ষেত্রে পরিস্থিতি। ডিফল্ট হয় -fno-cx-সীমিত-পরিসর, কিন্তু দ্বারা সক্রিয় করা হয়েছে
ফাস্ট-গণিত.
এই বিকল্পটি ISO C99 "CX_LIMITED_RANGE" প্রাগমার ডিফল্ট সেটিং নিয়ন্ত্রণ করে।
তবুও, বিকল্পটি সমস্ত ভাষার জন্য প্রযোজ্য।
-fcx-ফরট্রান-নিয়ম
জটিল গুণ ও ভাগ ফোর্টরান নিয়ম অনুসরণ করে। পরিসীমা হ্রাস হিসাবে সম্পন্ন করা হয়
জটিল বিভাগের অংশ, কিন্তু একটি জটিল ফলাফল কিনা তা পরীক্ষা নেই
গুণ বা ভাগ হল "NaN + I*NaN", পরিস্থিতি উদ্ধারের প্রয়াস
এই ক্ষেত্রে.
ডিফল্ট হয় -fno-cx-ফোরট্রান-বিধি.
নিম্নলিখিত বিকল্পগুলি অপ্টিমাইজেশানগুলি নিয়ন্ত্রণ করে যা কর্মক্ষমতা উন্নত করতে পারে, কিন্তু তা নয়৷
যে কোনো দ্বারা সক্রিয় -O বিকল্প এই বিভাগে পরীক্ষামূলক বিকল্প রয়েছে যা উত্পাদন করতে পারে
ভাঙা কোড।
-fbranch-সম্ভাবনা
সঙ্গে সংকলিত একটি প্রোগ্রাম চালানোর পরে -এফপ্রোফাইল-আর্কস, আপনি এটি দ্বিতীয়বার কম্পাইল করতে পারেন
ব্যবহার -fbranch-সম্ভাবনা, সময়ের সংখ্যার উপর ভিত্তি করে অপ্টিমাইজেশন উন্নত করতে
প্রতিটি শাখা নেওয়া হয়েছিল। যখন একটি প্রোগ্রাম সঙ্গে কম্পাইল -এফপ্রোফাইল-আর্কস প্রস্থান করে, এটি সংরক্ষণ করে
arc এক্সিকিউশন নামক ফাইলে গণনা করা হয় সোর্সনেম.জিসিডিএ প্রতিটি উৎস ফাইলের জন্য। দ্য
এই ডেটা ফাইলের তথ্য উত্পন্ন কাঠামোর উপর খুব নির্ভরশীল
কোড, তাই আপনাকে অবশ্যই একই সোর্স কোড এবং উভয়ের জন্য একই অপ্টিমাইজেশন বিকল্প ব্যবহার করতে হবে
সংকলন
সঙ্গে -fbranch-সম্ভাবনা, GCC একটি রাখে Reg_br_prob প্রতিটির উপর নোট করুন জাম্প_আইএনএসএন এবং
কল_আইএনএসএন. এই অপ্টিমাইজেশান উন্নত করতে ব্যবহার করা যেতে পারে. বর্তমানে, তারা শুধুমাত্র ব্যবহার করা হয়
এক জায়গায়: মধ্যে reorg.c, অনুমান করার পরিবর্তে একটি শাখার কোন পথটি সবচেয়ে বেশি সম্ভব
নিতে, the Reg_br_prob কোন পথ বেশি নেওয়া হয়েছে তা ঠিক নির্ধারণ করতে মানগুলি ব্যবহার করা হয়
প্রায়ই।
-প্রোফাইল-মান
সাথে মিলিত হলে -এফপ্রোফাইল-আর্কস, এটি কোড যোগ করে যাতে এর মান সম্পর্কে কিছু ডেটা
প্রোগ্রামে অভিব্যক্তি সংগ্রহ করা হয়.
সঙ্গে -fbranch-সম্ভাবনা, এটি এর প্রোফাইলিং মান থেকে সংগৃহীত ডেটা ফিরে পড়ে
অপ্টিমাইজেশানে ব্যবহারের জন্য অভিব্যক্তি।
সঙ্গে সক্রিয় -প্রোফাইল-জেনারেট করুন এবং -প্রোফাইল-ব্যবহার.
-প্রোফাইল-পুনঃক্রম-ফাংশন
প্রোফাইল ইন্সট্রুমেন্টেশনের উপর ভিত্তি করে ফাংশন পুনর্বিন্যাস প্রথমবার কার্যকর করার সময় সংগ্রহ করে
একটি ফাংশনের এবং এই ফাংশনগুলিকে আরোহী ক্রমে অর্ডার করে।
সঙ্গে সক্রিয় -প্রোফাইল-ব্যবহার.
-fvpt
সাথে মিলিত হলে -এফপ্রোফাইল-আর্কস, এই বিকল্পটি কম্পাইলারকে কোড যোগ করার নির্দেশ দেয়
অভিব্যক্তির মান সম্পর্কে তথ্য সংগ্রহ করুন।
সঙ্গে -fbranch-সম্ভাবনা, এটি সংগৃহীত ডেটা পড়ে এবং প্রকৃতপক্ষে সম্পাদন করে
তাদের উপর ভিত্তি করে অপ্টিমাইজেশান। বর্তমানে অপ্টিমাইজেশান এর বিশেষীকরণ অন্তর্ভুক্ত
হর এর মান সম্পর্কে জ্ঞান ব্যবহার করে বিভাজন ক্রিয়াকলাপ।
-ফ্রেনাম-রেজিস্টার
বাম রেজিস্টার ব্যবহার করে নির্ধারিত কোডে মিথ্যা নির্ভরতা এড়াতে চেষ্টা করুন
নিবন্ধন বরাদ্দের পরে। এই অপ্টিমাইজেশানটি প্রচুর পরিমাণে প্রসেসরকে উপকৃত করে
রেজিস্টারের। লক্ষ্য দ্বারা গৃহীত ডিবাগ তথ্য বিন্যাসের উপর নির্ভর করে,
যাইহোক, এটি ডিবাগিংকে অসম্ভব করে তুলতে পারে, যেহেতু ভেরিয়েবলগুলি আর "হোম"-এ থাকে না
নিবন্ধন".
এর সাথে ডিফল্টরূপে সক্রিয় -ফানরোল-লুপস এবং -ফপিল-লুপস.
-fschedule-ফিউশন
নির্দেশাবলীর সময়সূচী করার জন্য নির্দেশ স্ট্রীমের উপর একটি লক্ষ্য নির্ভর পাস সম্পাদন করে
একই ধরণের একসাথে কারণ টার্গেট মেশিন তাদের যদি আরও দক্ষতার সাথে চালাতে পারে
নির্দেশ প্রবাহে একে অপরের সংলগ্ন হয়।
স্তরে সক্রিয় -ও2, -ও3, -ওএস.
-ফট্রেসার
সুপারব্লকের আকার বড় করতে লেজের অনুলিপি সম্পাদন করুন। এই রূপান্তর সহজতর
ফাংশনের নিয়ন্ত্রণ প্রবাহ অন্যান্য অপ্টিমাইজেশানগুলিকে আরও ভাল কাজ করার অনুমতি দেয়।
সঙ্গে সক্রিয় -প্রোফাইল-ব্যবহার.
-ফানরোল-লুপস
আনরোল লুপ যার পুনরাবৃত্তির সংখ্যা কম্পাইলের সময় বা উপর নির্ধারণ করা যেতে পারে
লুপে প্রবেশ। -ফানরোল-লুপস বোঝা -frerun-cse-আফটার-লুপ, -ফওয়েব এবং
-ফ্রেনাম-রেজিস্টার. এটি সম্পূর্ণ লুপ পিলিং চালু করে (অর্থাৎ সম্পূর্ণ অপসারণ
একটি ছোট ধ্রুবক সংখ্যক পুনরাবৃত্তি সহ loops)। এই বিকল্পটি কোড বড় করে তোলে, এবং
এটি দ্রুত চালানো হতে পারে বা নাও পারে।
সঙ্গে সক্রিয় -প্রোফাইল-ব্যবহার.
ফানরোল-অল-লুপস
সমস্ত লুপ আনরোল করুন, এমনকি লুপটি কখন তাদের পুনরাবৃত্তির সংখ্যা অনিশ্চিত হয়
প্রবেশ এটি সাধারণত প্রোগ্রামগুলিকে আরও ধীরে ধীরে চালায়। ফানরোল-অল-লুপস বোঝায়
হিসাবে একই অপশন -ফানরোল-লুপস.
-ফপিল-লুপস
পিলস লুপ যার জন্য পর্যাপ্ত তথ্য রয়েছে যে তারা বেশি রোল করে না (থেকে
প্রোফাইল প্রতিক্রিয়া)। এটি সম্পূর্ণ লুপ পিলিং চালু করে (অর্থাৎ সম্পূর্ণ অপসারণ
ছোট ধ্রুবক সংখ্যক পুনরাবৃত্তি সহ loops)।
সঙ্গে সক্রিয় -প্রোফাইল-ব্যবহার.
-ফমভ-লুপ-আক্রমণকারীরা
RTL লুপ অপটিমাইজারে লুপ ইনভেরিয়েন্ট মোশন পাস সক্ষম করে৷ স্তরে সক্রিয়
-ও1
-ফানসুইচ-লুপস
লুপ অপরিবর্তনীয় অবস্থা সহ শাখাগুলিকে লুপের সদৃশ সহ লুপের বাইরে সরান৷
উভয় শাখায় লুপ (শর্তের ফলাফল অনুযায়ী পরিবর্তিত)।
-ফাংশন-বিভাগ
-fdata-বিভাগ
প্রতিটি ফাংশন বা ডেটা আইটেমকে আউটপুট ফাইলের নিজস্ব বিভাগে রাখুন যদি লক্ষ্য থাকে
নির্বিচারে বিভাগ সমর্থন করে। ফাংশনের নাম বা ডেটা আইটেমের নাম
আউটপুট ফাইলে বিভাগের নাম নির্ধারণ করে।
সিস্টেমে এই বিকল্পগুলি ব্যবহার করুন যেখানে লিঙ্কার উন্নত করার জন্য অপ্টিমাইজেশন করতে পারে
নির্দেশের জায়গায় রেফারেন্সের স্থানীয়তা। বেশিরভাগ সিস্টেম ইএলএফ অবজেক্ট ব্যবহার করে
সোলারিস 2 চালিত ফরম্যাট এবং SPARC প্রসেসরগুলিতে এই ধরনের অপ্টিমাইজেশনের সাথে লিঙ্কার রয়েছে।
AIX ভবিষ্যতে এই অপ্টিমাইজেশন থাকতে পারে।
শুধুমাত্র এই বিকল্পগুলি ব্যবহার করুন যখন এটি করার উল্লেখযোগ্য সুবিধা রয়েছে। যখন তুমি
এই বিকল্পগুলি নির্দিষ্ট করুন, অ্যাসেম্বলার এবং লিঙ্কার বৃহত্তর অবজেক্ট এবং এক্সিকিউটেবল তৈরি করে
ফাইল এবং ধীর হয়. আপনি ব্যবহার করতে পারবেন না জিপিআরএফ আপনি যদি এটি নির্দিষ্ট করেন তবে সমস্ত সিস্টেমে
বিকল্প, এবং আপনি যদি এই বিকল্প এবং উভয়ই নির্দিষ্ট করেন তবে ডিবাগিং নিয়ে আপনার সমস্যা হতে পারে
-g.
-fbranch-টার্গেট-লোড-অপ্টিমাইজ
প্রলোগ / এপিলগ থ্রেডিংয়ের আগে শাখা টার্গেট রেজিস্টার লোড অপ্টিমাইজেশান সম্পাদন করুন।
টার্গেট রেজিস্টারের ব্যবহার সাধারণত শুধুমাত্র পুনরায় লোড করার সময় উন্মোচিত হতে পারে, এইভাবে উত্তোলন
লুপ থেকে লোড হয় এবং আন্তঃ-ব্লক সময়সূচী করার জন্য একটি পৃথক অপ্টিমাইজেশন প্রয়োজন
পাস।
-fbranch-টার্গেট-লোড-অপ্টিমাইজ২
প্রলোগ / এপিলগ থ্রেডিংয়ের পরে শাখা টার্গেট রেজিস্টার লোড অপ্টিমাইজেশান সম্পাদন করুন।
-fbtr-bb-এক্সক্লুসিভ
শাখা টার্গেট রেজিস্টার লোড অপ্টিমাইজেশান সম্পাদন করার সময়, শাখা লক্ষ্য পুনঃব্যবহার করবেন না
যেকোনো মৌলিক ব্লকের মধ্যে নিবন্ধন করে।
-ফস্ট্যাক-রক্ষক
বাফার ওভারফ্লো পরীক্ষা করার জন্য অতিরিক্ত কোড নির্গত করুন, যেমন স্ট্যাক স্ম্যাশিং আক্রমণ। এই
দুর্বল বস্তুর সাথে ফাংশনে একটি গার্ড ভেরিয়েবল যোগ করে করা হয়। এই
যে ফাংশনগুলিকে "অ্যালোকা" বলা হয় এবং 8 বাইটের চেয়ে বড় বাফার সহ ফাংশনগুলি অন্তর্ভুক্ত করে৷
যখন একটি ফাংশন প্রবেশ করা হয় তখন গার্ডগুলি শুরু করা হয় এবং তারপর চেক করা হয় যখন
ফাংশন প্রস্থান করে। যদি একটি গার্ড চেক ব্যর্থ হয়, একটি ত্রুটি বার্তা মুদ্রিত হয় এবং প্রোগ্রাম
প্রস্থান
-fstack-রক্ষক-সমস্ত
মত -ফস্ট্যাক-রক্ষক সব ফাংশন সুরক্ষিত যে ছাড়া.
-fstack-রক্ষক-শক্তিশালী
মত -ফস্ট্যাক-রক্ষক কিন্তু সুরক্ষিত করার জন্য অতিরিক্ত ফাংশন অন্তর্ভুক্ত করে --- সেগুলি
যেগুলির স্থানীয় অ্যারে সংজ্ঞা আছে, বা স্থানীয় ফ্রেম ঠিকানাগুলির উল্লেখ রয়েছে৷
-fstack-রক্ষক-স্পষ্ট
মত -ফস্ট্যাক-রক্ষক কিন্তু শুধুমাত্র সেই ফাংশনগুলিকে রক্ষা করে যা আছে
"stack_protect" বৈশিষ্ট্য
-fstdarg-অপ্ট
সেগুলির ব্যবহারের ক্ষেত্রে বৈচিত্র্যময় আর্গুমেন্ট ফাংশনগুলির প্রস্তাবনাকে অপ্টিমাইজ করুন
আর্গুমেন্ট।
দ্রষ্টব্য: উবুন্টু 14.10 এবং পরবর্তী সংস্করণগুলিতে, -fstack-রক্ষক-শক্তিশালী দ্বারা সক্রিয় করা হয়
C, C++, ObjC, ObjC++ এর জন্য ডিফল্ট, যদি কোনটি না হয় -fno-স্ট্যাক-রক্ষক, -নোস্টডিলিবনা
-ফ্রিস্ট্যান্ডিং পাওয়া যায়.
-সেকশন-অ্যাঙ্কর
ভাগ করা "অ্যাঙ্কর" ব্যবহার করে প্রতীকী ঠিকানা গণনার সংখ্যা কমানোর চেষ্টা করুন
কাছাকাছি বস্তু সম্বোধনের জন্য প্রতীক। এই রূপান্তর সংখ্যা কমাতে সাহায্য করতে পারে
কিছু লক্ষ্যে GOT এন্ট্রি এবং GOT অ্যাক্সেস।
উদাহরণস্বরূপ, নিম্নলিখিত ফাংশন "foo" বাস্তবায়ন:
স্ট্যাটিক int a, b, c;
int foo (void) { রিটার্ন a + b + c; }
সাধারণত তিনটি ভেরিয়েবলের ঠিকানা গণনা করে, কিন্তু যদি আপনি এটি দিয়ে কম্পাইল করেন
-সেকশন-অ্যাঙ্কর, এটি পরিবর্তে একটি সাধারণ অ্যাঙ্কর পয়েন্ট থেকে ভেরিয়েবল অ্যাক্সেস করে। দ্য
প্রভাব নিম্নলিখিত pseudocode অনুরূপ (যা বৈধ C নয়):
int foo (অকার্যকর)
{
রেজিস্টার int *xr = &x;
রিটার্ন xr[&a - &x] + xr[&b - &x] + xr[&c - &x];
}
সব লক্ষ্য এই বিকল্প সমর্থন করে না.
--পরম নাম=মূল্য
কিছু জায়গায়, GCC অপ্টিমাইজেশনের পরিমাণ নিয়ন্ত্রণ করতে বিভিন্ন ধ্রুবক ব্যবহার করে
সমাপ্ত. উদাহরণ স্বরূপ, GCC ইনলাইন ফাংশন করে না যাতে নির্দিষ্ট কিছুর বেশি থাকে
নির্দেশাবলীর সংখ্যা। আপনি কমান্ড লাইনে এই ধ্রুবকগুলির কিছু নিয়ন্ত্রণ করতে পারেন
ব্যবহার করে --পরম বিকল্প।
নির্দিষ্ট প্যারামিটারের নাম, এবং মানগুলির অর্থ, এর সাথে আবদ্ধ
কম্পাইলারের অভ্যন্তরীণ, এবং ভবিষ্যতে বিজ্ঞপ্তি ছাড়াই পরিবর্তন সাপেক্ষে
রিলিজ।
প্রতিটি ক্ষেত্রে, মূল্য একটি পূর্ণসংখ্যা। জন্য অনুমোদিত পছন্দ নাম হয়:
অনুমানযোগ্য-শাখা-ফলাফল
এই থ্রেশহোল্ড থেকে কম সম্ভাব্যতা সহ যখন শাখা নেওয়া হবে বলে পূর্বাভাস দেওয়া হয়
(শতাংশে), তারপর এটি ভাল অনুমানযোগ্য বলে মনে করা হয়। ডিফল্ট হল 10।
সর্বোচ্চ-ক্রসজাম্প-প্রান্ত
ক্রস-জাম্পিংয়ের জন্য বিবেচনা করার জন্য আগত প্রান্তগুলির সর্বাধিক সংখ্যা৷ অ্যালগরিদম
দ্বারা ব্যবহৃত -ফক্রসজাম্পিং প্রতিটি ব্লকে আগত প্রান্তের সংখ্যায় O(N^2)।
ক্রমবর্ধমান মান মানে আরো আক্রমনাত্মক অপ্টিমাইজেশান, সংকলনের সময় তৈরি করে৷
এক্সিকিউটেবল আকারে সম্ভবত ছোট উন্নতির সাথে বৃদ্ধি।
মিন-ক্রসজাম্প-ইনস
নির্দেশাবলীর ন্যূনতম সংখ্যা যা অবশ্যই দুটি ব্লকের শেষে মিলতে হবে
ক্রস-জাম্পিং তাদের উপর সঞ্চালিত হয় আগে. এই মান ক্ষেত্রে উপেক্ষা করা হয়
যেখান থেকে ক্রস-জাম্প করা ব্লকের সমস্ত নির্দেশ মিলছে। দ্য
ডিফল্ট মান 5।
সর্বোচ্চ-বৃদ্ধি-অনুলিপি-বিবি-ইনস
এর পরিবর্তে মৌলিক ব্লক কপি করার সময় সর্বাধিক কোড আকার সম্প্রসারণ ফ্যাক্টর
জাম্পিং সম্প্রসারণ একটি লাফ নির্দেশ আপেক্ষিক. ডিফল্ট মান হল
8.
সর্বোচ্চ-গোটো-ডুপ্লিকেশন-ইনস
একটি ব্লকের নকল করার জন্য সর্বাধিক সংখ্যক নির্দেশাবলী যা a-তে যায়৷
গণনা করা হয়েছে। বেশ কয়েকটি পাসে O(N^2) আচরণ এড়াতে, GCC ফ্যাক্টর
সংকলন প্রক্রিয়ার প্রথম দিকে গণনা করা গোটোস, এবং দেরীতে সেগুলিকে আনফ্যাক্টর করে
সম্ভব. বেসিক ব্লকের শেষে শুধুমাত্র গণনা করা লাফগুলি সর্বাধিক-এর বেশি নয়
goto-duplication-insns unfactored. ডিফল্ট মান 8।
max-delay-slot-insn-অনুসন্ধান
নির্দেশাবলী খুঁজছেন যখন বিবেচনা করতে নির্দেশাবলী সর্বোচ্চ সংখ্যা
একটি বিলম্ব স্লট পূরণ করুন. এর চেয়ে বেশি হলে নির্বিচারে নির্দেশ দেওয়া হয়
অনুসন্ধান করা হয়েছে, বিলম্ব স্লট পূরণ থেকে সময় সঞ্চয় ন্যূনতম, তাই থামুন
অনুসন্ধান ক্রমবর্ধমান মান মানে আরো আক্রমনাত্মক অপ্টিমাইজেশান, তৈরীর
সঙ্কলন সময় বৃদ্ধি সম্ভবত কার্যকর সময়ে ছোট উন্নতির সাথে।
সর্বোচ্চ-বিলম্ব-স্লট-লাইভ-সার্চ
বিলম্বের স্লটগুলি পূরণ করার চেষ্টা করার সময়, সর্বাধিক সংখ্যক নির্দেশাবলী বিবেচনা করতে হবে
বৈধ লাইভ রেজিস্টার তথ্য সহ একটি ব্লক অনুসন্ধান করার সময়। এই বৃদ্ধি
নির্বিচারে নির্বাচিত মান মানে আরও আক্রমণাত্মক অপ্টিমাইজেশান, বৃদ্ধি
সংকলন সময়। বিলম্ব স্লট কোড যখন এই পরামিতি অপসারণ করা উচিত
নিয়ন্ত্রণ-প্রবাহ গ্রাফ বজায় রাখার জন্য পুনরায় লেখা।
max-gcse-মেমরি
আনুমানিক সর্বাধিক পরিমাণ মেমরি যা সম্পাদন করার জন্য বরাদ্দ করা যেতে পারে৷
গ্লোবাল কমন সাব এক্সপ্রেশন নির্মূল অপ্টিমাইজেশান। এর চেয়ে বেশি স্মৃতি থাকলে
নির্দিষ্ট করা প্রয়োজন, অপ্টিমাইজেশান করা হয় না।
max-gcse-প্রবেশ-অনুপাত
যদি এক্সপ্রেশন সন্নিবেশ এবং মুছে ফেলার অনুপাত এই মানের থেকে বড় হয়
যেকোনো এক্সপ্রেশন, তারপর RTL PRE এক্সপ্রেশনটি সন্নিবেশিত করে বা সরিয়ে দেয় এবং এভাবে চলে যায়
নির্দেশ প্রবাহে আংশিকভাবে অপ্রয়োজনীয় গণনা। ডিফল্ট মান হল
20.
সর্বাধিক-মুলতুবি-তালিকা-দৈর্ঘ্য
ফ্লাশ করার আগে সর্বাধিক সংখ্যক মুলতুবি থাকা নির্ভরতা নির্ধারণের অনুমতি দেয়
বর্তমান অবস্থা এবং আবার শুরু। কয়েকটি শাখা বা কল সহ বড় ফাংশন করতে পারেন
অপ্রয়োজনীয়ভাবে মেমরি এবং সম্পদ গ্রাস করে অত্যধিক বড় তালিকা তৈরি করুন।
max-modulo-backtrack-প্রয়াস
মডিউল করার সময় শিডিউলারের সর্বাধিক সংখ্যক ব্যাকট্র্যাক প্রচেষ্টা করা উচিত
একটি লুপ নির্ধারণ. বৃহত্তর মান দ্রুত সংকলনের সময় বৃদ্ধি করতে পারে।
সর্বোচ্চ-ইনলাইন-ইনস-সিঙ্গেল
বেশ কিছু প্যারামিটার GCC-তে ব্যবহৃত ট্রি ইনলাইনার নিয়ন্ত্রণ করে। এই সংখ্যা সেট করে
সর্বাধিক সংখ্যক নির্দেশাবলী (GCC এর অভ্যন্তরীণ উপস্থাপনায় গণনা করা হয়েছে) a
একক ফাংশন যা ট্রি ইনলাইনার ইনলাইনিংয়ের জন্য বিবেচনা করে। এটি শুধুমাত্র প্রভাবিত করে
ইনলাইন ঘোষিত ফাংশন এবং একটি ক্লাস ডিক্লারেশন (C++) এ প্রয়োগ করা পদ্ধতি।
ডিফল্ট মান 400।
সর্বোচ্চ-ইনলাইন-ইনস-অটো
যখন আপনি ব্যবহার -ফিনলাইন-ফাংশন (অন্তর্ভুক্ত -ও3), ফাংশন অনেক যে হবে
অন্যথায় কম্পাইলার দ্বারা ইনলাইন করার জন্য বিবেচনা করা হবে না তদন্ত করা হয়. প্রতি
এই ফাংশনগুলি, ফাংশনের তুলনায় একটি ভিন্ন (আরো সীমাবদ্ধ) সীমা
ঘোষিত ইনলাইনে আবেদন করা যাবে। ডিফল্ট মান 40।
ইনলাইন-মিন-স্পিডআপ
যখন কলারের আনুমানিক কর্মক্ষমতা উন্নতি + কলির রানটাইম এর চেয়ে বেশি হয়
থ্রেশহোল্ড (প্রেসেন্টে), ফাংশনটি সীমা নির্বিশেষে ইনলাইন করা যেতে পারে
--পরম সর্বোচ্চ-ইনলাইন-ইনস-সিঙ্গেল এবং --পরম সর্বোচ্চ-ইনলাইন-ইনস-অটো.
বড়-ফাংশন-ইনস
সত্যিই বড় ফাংশন নির্দিষ্ট সীমা. এই সীমার চেয়ে বড় ফাংশনের জন্য
ইনলাইন করার পরে, ইনলাইনিং দ্বারা সীমাবদ্ধ --পরম বড়-ফাংশন-বৃদ্ধি. এই
পরামিতি প্রাথমিকভাবে অ-এর কারণে সৃষ্ট চরম সংকলন সময় এড়াতে কার্যকর
ব্যাক এন্ড দ্বারা ব্যবহৃত রৈখিক অ্যালগরিদম। ডিফল্ট মান 2700।
বড়-ফাংশন-বৃদ্ধি
শতাংশে ইনলাইন করার কারণে বৃহৎ ফাংশনের সর্বাধিক বৃদ্ধি নির্দিষ্ট করে। দ্য
ডিফল্ট মান হল 100 যা বড় ফাংশন বৃদ্ধিকে মূলের 2.0 গুণে সীমাবদ্ধ করে
আকার.
বড়-ইউনিট-ইনসান
বড় অনুবাদ ইউনিট নির্দিষ্ট করে সীমা। ইউনিটের ইনলাইনিংয়ের কারণে বৃদ্ধি
এই সীমার চেয়ে বড় দ্বারা সীমাবদ্ধ --পরম ইনলাইন-ইউনিট-বৃদ্ধি. ছোট ইউনিটের জন্য
এই খুব টাইট হতে পারে. উদাহরণস্বরূপ, ফাংশন A সমন্বিত একটি ইউনিট বিবেচনা করুন
যেটি ইনলাইন এবং B যেটি কেবল A কে তিনবার কল করে। খ যদি ক এর তুলনায় ছোট হয়,
ইউনিটের বৃদ্ধি 300% এবং তবুও এই ধরনের ইনলাইনিং খুবই বুদ্ধিমান। খুব বড় জন্য
ছোট ইনলাইনেবল ফাংশন নিয়ে গঠিত ইউনিট, যাইহোক, সামগ্রিক ইউনিট বৃদ্ধি
কোড আকারের সূচকীয় বিস্ফোরণ এড়াতে সীমা প্রয়োজন। এইভাবে ছোট জন্য
ইউনিট, আকার বৃদ্ধি করা হয় --পরম বড়-ইউনিট-ইনসান আবেদন করার আগে --পরম
ইনলাইন-ইউনিট-বৃদ্ধি. ডিফল্ট 10000.
ইনলাইন-ইউনিট-বৃদ্ধি
ইনলাইনিংয়ের কারণে সংকলন ইউনিটের সর্বাধিক সামগ্রিক বৃদ্ধি নির্দিষ্ট করে। দ্য
ডিফল্ট মান হল 20 যা ইউনিট বৃদ্ধিকে 1.2 গুণ মূল আকারে সীমাবদ্ধ করে। ঠান্ডা
ফাংশনগুলি (হয় একটি বৈশিষ্ট্যের মাধ্যমে বা প্রোফাইল প্রতিক্রিয়া দ্বারা ঠান্ডা চিহ্নিত) নয়৷
ইউনিট আকারে হিসাব করা হয়।
ipcp-ইউনিট-বৃদ্ধি
আন্তঃপ্রক্রিয়াগত কারণে সৃষ্ট সংকলন ইউনিটের সর্বাধিক সামগ্রিক বৃদ্ধি নির্দিষ্ট করে
অবিরাম প্রচার। ডিফল্ট মান হল 10 যা ইউনিট বৃদ্ধি 1.1 এ সীমাবদ্ধ করে
মূল আকারের বার।
বড়-স্ট্যাক-ফ্রেম
বড় স্ট্যাক ফ্রেম নির্দিষ্ট করে সীমা। ইনলাইন করার সময় অ্যালগরিদম চেষ্টা করছে
খুব বেশি এই সীমা অতিক্রম না করতে. ডিফল্ট মান হল 256 বাইট।
বড়-স্ট্যাক-ফ্রেম-বৃদ্ধি
শতাংশে ইনলাইন করার কারণে বড় স্ট্যাক ফ্রেমের সর্বাধিক বৃদ্ধি নির্দিষ্ট করে।
ডিফল্ট মান হল 1000 যা বড় স্ট্যাক ফ্রেমের বৃদ্ধিকে 11 গুণে সীমাবদ্ধ করে
মূল আকার.
সর্বোচ্চ-ইনলাইন-ইনসেনস-বিরোধী
সর্বোচ্চ-ইনলাইন-ইনসেনস-রিসারসিভ-অটো
এ