الانجليزيةالفرنسيةالألمانيّةالإيطاليةالبرتغاليّةالروسيةإسباني

OnWorks فافيكون

mips-linux-gnu-gcc-5 - متصل بالإنترنت في السحابة

قم بتشغيل mips-linux-gnu-gcc-5 في مزود استضافة OnWorks المجاني عبر Ubuntu Online أو Fedora Online أو محاكي Windows عبر الإنترنت أو محاكي MAC OS عبر الإنترنت

هذا هو الأمر mips-linux-gnu-gcc-5 الذي يمكن تشغيله في مزود الاستضافة المجاني OnWorks باستخدام إحدى محطات العمل المجانية المتعددة على الإنترنت مثل Ubuntu Online أو Fedora Online أو Windows عبر الإنترنت أو محاكي MAC OS عبر الإنترنت

برنامج:

اسم


مترجم gcc - GNU project C and C ++ compiler

موجز


مجلس التعاون الخليجي [-c|-S|-E] [-std =معيار]
[-g] [-pg] [-Oمستوى]
[-Wحذر...] [-بيدانتيك]
[-Iدير...] [-Lدير...]
[-Dالماكرو[=defn] ...] [-Uالماكرو]
[-fخيار...] [-mآلة الخيار...]
[-o ملف] [@ملف] شرير...

يتم سرد الخيارات الأكثر فائدة فقط هنا ؛ انظر أدناه للباقي. ز ++ يقبل
في الغالب نفس الخيارات مثل دول مجلس التعاون الخليجي.

وصف


عند استدعاء GCC ، فإنه عادةً ما يقوم بالمعالجة المسبقة والتجميع والتجميع والربط.
تسمح لك "الخيارات العامة" بإيقاف هذه العملية في مرحلة وسيطة. ل
مثال -c الخيار يقول عدم تشغيل الرابط. ثم يتكون الناتج من الكائن
إخراج الملفات بواسطة المجمع.

يتم تمرير الخيارات الأخرى إلى مرحلة واحدة من المعالجة. تتحكم بعض الخيارات في
المعالج المسبق والآخرين المترجم نفسه. ومع ذلك ، هناك خيارات أخرى تتحكم في المجمع و
رابط. لم يتم توثيق معظمها هنا ، نظرًا لأنك نادرًا ما تحتاج إلى استخدام أي منها.

معظم خيارات سطر الأوامر التي يمكنك استخدامها مع GCC مفيدة لبرامج C ؛ متي
الخيار مفيد فقط مع لغة أخرى (عادةً C ++) ، كما يقول الشرح
صراحة. إذا كان وصف خيار معين لا يذكر المصدر
اللغة ، يمكنك استخدام هذا الخيار مع جميع اللغات المدعومة.

أفضل دول مجلس التعاون الخليجي يقبل البرنامج الخيارات وأسماء الملفات كمعامل. العديد من الخيارات متعددة
أسماء الحروف لذلك قد خيارات متعددة من حرف واحد ليس يتم تجميعها: -dv جدا
مختلفة من -d -v.

يمكنك مزج الخيارات والحجج الأخرى. بالنسبة للجزء الأكبر ، الترتيب الذي تستخدمه لا يفعل ذلك
شيء. لا يهم الأمر عند استخدام عدة خيارات من نفس النوع ؛ على سبيل المثال ، إذا
تحدده -L أكثر من مرة ، يتم البحث في الدلائل بالترتيب المحدد. أيضا،
وضع -l الخيار مهم.

العديد من الخيارات لها أسماء طويلة تبدأ بـ -f أو مع -W---على سبيل المثال،
-ثوابت حلقة -fmove, -Wformat وما إلى ذلك وهلم جرا. معظم هؤلاء لديهم كلا من الإيجابية والسلبية
نماذج؛ الشكل السلبي لـ -ffoo is -فنو-فو. يوثق هذا الدليل واحدًا فقط من هؤلاء
شكلين ، أيهما ليس هو الافتراضي.

OPTIONS


خيار الملخص
فيما يلي ملخص لجميع الخيارات ، مجمعة حسب النوع. التفسيرات في ما يلي
أقسام.

شامل الخيارات
-c -S -E -o ملف - لا - البادئات المتعارف عليها -يضخ -مرور-خروج-رموز -x لغة -v
- ### --مساعدة[=فئة[، ...]] --تهدف المساعدة --الإصدار -غلاف @ملف -فلوجين =ملف
-fplugin- أرج-الاسم=الأرجنتين -fdump-ada-spec[-معتدل البنيه] - فادا - المواصفات - الأصل =وحدة
-fdump-go-spec =ملف

C اللغة الخيارات
-انسى -std =معيار -fgnu89- مضمنة -معلومات اسم الملف
-السقط- الدوال- المتغيرة- المتغيرة -fno- asm -fno- بنيت -fno- المدمج-وظيفة
استضافت -تقرير -fopenacc -fopenmp -فوبينب سيمد -fms- ملحقات
-fplan9- ملحقات -الخط -تقليدي -التقليدية- CPP - سقوط واحد - الدقة
- عدم تطابق -بلاكس-ناقل-التحويلات -موقع-bitfields توقيع شار
-ممتاز-bitfields -ممتعة-شار

C + + اللغة الخيارات
-fabi- النسخة =n -fno- التحكم في الوصول -fcheck- جديد -fconstexpr- العمق =n
-حقن صديق -fno- elide- صانعي -fno- فرض- إيه- المواصفات -تقديم النطاق
-fno- للنطاق كلمات مفتاحية -fno-gnu - قوالب - ضمنية
-fno- ضمني-المضمنة-القوالب -fno- تنفيذ- المضمنة -fms- ملحقات
-fno- nonansi- مبني -fnothrow-opt - أسماء المشغلين -fno- اختياري- diags
-فاشية -fno- قوالب-جميلة -frepo -فنو- ​​rtti -إلغاء تخصيص -fstats
-ftemplate-backtrace-limit =n - عمق القالب =n -fno-Threadafe-statics
-الفتيل- cxa-atexit - ضعيف -نوستدينك ++ -رؤية-مضمنة-مخفية
-fvtable- تحقق =[الأمراض المنقولة جنسيا|بريينت|لا شيء] التهم -fvtv -fvtv- التصحيح -الرؤية- ms- التوافق
-صيغة-رقمية-حرفية -وابي =n -Wabi- الوسم -Wconversion- لاغية -الطبيب- dtor- الخصوصية
-Wdelete-non-virtual-dtor لاحقة حرفيّة -مقلق -لا استثناء -غير-افتراضية- dtor
-تسجيل -Weffc ++ -قضاء-باطل-الحارس -Wno- غير- قالب- صديق -Wold-style-cast
-Woverloaded- الظاهري -Wno-pmf- التحويلات -Wsign- الترويجي

الهدف-C و الهدف- C ++ اللغة الخيارات
-fconstant-string-class =اسم الطبقة -fgnu- وقت التشغيل -وقت التشغيل التالي -fno- لا شيء- المستقبلات
-fobjc-abi-version =n -fobjc-call-cxx-cdtors -fobjc- إرسال مباشر استثناءات fobjc
-fobjc-gc -fobjc-nilcheck -fobjc-std = objc1 -fno-local-ivars
-fivar- الرؤية =[جمهور|محمي|خاص|صفقة] فصول- freeplace-objc
-fzero-link -جن- decls - تعيين - اعتراض -لا بروتوكول -Wselector
-Wstrict-selector-match -Wundeclared- محدد

اللغة مستقل الخيارات
-طول الرسالة =n -تشخيص-موقع-عرض =[مرة|كل سطر]
-التشخيص-اللون =[السيارات|أبدا|دائما] -fno-التشخيص-تظهر-الخيار
-التشخيص-تظهر-الإقحام

تحذير الخيارات
-فس الجملة فقط -fmax-errors =n -بيدانتيك - أخطاء متداخلة -w اكسترا الجدار شاحن
-العنوان -إجمالي-العائد -تحسينات الحلقة الخاطفة - حدود المحارب
حدود المحارب =n -Wbool- قارن -لا-سمات إعادة تعريف -Wno- المدمج- الماكرو
-Wc90-c99-متوافق -Wc99-c11-متوافق -Wc ++ - متوافق -Wc ++ 11-متوافق -Wc ++ 14-متوافق
-محاذاة البث -Wcast-Qual -وشار- المشتركين -Wclobbered - تعليق
- المدعومة بشروط -Wconversion -التغطية-عدم تطابق -تاريخ الوقت
-حذف-غير مكتمل -Wno- CPP -Wno- مهملة - إقرارات - مهملة
-Wno- المعينة- init -Wdisabled- التحسين - مؤهلات Wno-مهملة
-Wno-مهملة-مجموعة- المؤهلات -لا-div-by-صفر - ترقية مزدوجة -جسم فارغ
-وينوم-قارن -لا-نهاية-تسميات -خطأ -خطأ = * - أخطاء فادحة -تعويم-يساوي
-Wformat - التنسيق = 2 -لا-شكل-يحتوي-نول -لا تنسيق- إضافي- أرجس
- صيغة غير حرفية -Wformat- الأمن - التنسيق - التوقيع -Wformat-y2k
-Wframe أكبر من =ليون -لا خالية- nonheap- كائن -القفز-يخطئ-الحرف الأول
- التصفيات المؤهلة - أنواع المؤشرات - Wincomp Compatible - ضبابي
- إعلان ضعيف عن الوظيفة -Wimplicit- كثافة العمليات -نفس الذات -وينلاين
-Wno- Int- التحويل -Wno-int-to-pointer-cast -Wno- غير صالح- offsetof -Winvalid-pch
- أكبر من =ليون - تحسينات حلقة غير آمنة -Wlogical- المرجع -الأقواس المنطقية
-طويلة الأمد -ماين - ربما - غير مهيأ -Wmemset-transposed-args -فاقد-الأقواس
-ضياع-الحقل-التهيئة -مفقود-يشمل-dirs -ونو- multichar -غير مجهولة
غير طبيعي =[لا شيء|id|NFC|نفكك]
-ورد -لا تجاوز -Wopenmp-simd -الطول-الاوتار -Wpacked
-Wpacked-bitfield- متوافق - مبطن أقواس -Wpanticantic-ms-format
-Wno- المتحذلق- ms- شكل -Wpointer- أريث -لا مؤشر إلى int-cast - زائدة - decls
-لا عودة-المحلية-addr - نوع الإرجاع نقطة العواقب -ظلال -لا-ظل-ايفار
-Wshift- العد سلبي -Wshift-count-overflow -Wsign- قارن -Wsign- التحويل
-الطفو- التحويل -حجم المؤشر-memaccess -Wsizeof- مصفوفة-وسيطة
- حامي Wstack -Wstack- استخدام =ليون -Wstrict- التعرج -Wstrict-aliasing = n
-Wstrict- تجاوز -Wstrict- تجاوز =n -Wsuggest-سمة =[نقي|CONST|لا رجوع|شكل]
-Wsuggest- أنواع نهائية طرق -Wsuggest-final -Wsuggest- تجاوز
السمة-تنسيق-مفقود -سويتش - مفتاح التبديل الافتراضي -سويتش-تعداد -سويتش- منطقية
-Wsync- ناند -Wsystem- رؤوس -وترامبولين -Wtrigraphs حدود نوع - وندف
غير مهيأ -Wunknown-pragmas -لا-براغماس - الثوابت غير الثابتة
-مذهل وظيفة غير مألوفة -تسمية غير مألوفة -غير المستخدمة-المحلية-typedefs -غير مألوف- المعلمة
-لا-نتائج-غير مستخدمة -قيمة غير مألوفة - متغير غير مألوف -غير مستغلة-لكن-ضبط-المعلمة
- غير مألوف - ولكن - مجموعة - متغير يلقي بلا فائدة -Wvariadic- وحدات الماكرو
-Wvector-عملية-الأداء -فلا -تقلب- تسجيل- فار -الكتابة-السلاسل
-Wzero-as-null-pointer-ثابت

C و الهدف- C فقط تحذير الخيارات
-باد-وظيفة-يلقي - الإقرارات الناقصة -Wmissing- نوع المعلمة
-النماذج الأولية المفقودة -الخارج الغربية - إعلان على الطراز القديم - تعريف الطراز القديم
-نماذج Wstrict -تقليدي - تحويل تقليدي
- إعلان بعد بيان -Wpointer- تسجيل

التصحيح الخيارات
-dحروف -مكبات آلة التفريغ - تفريغ - التفسير =نمط -التسريح-التعافي
- التعافي - التعافي =نمط -حسن-الظل-الإزاحة =عدد
-تحقق-غير معرف-فخ-على-خطأ -تحقق-مؤشر-حدود -fchkp-check -غير-type
-fchkp- الحقل الأول- له حدود خاصة -fchkp- الضيق الحدود
-fchkp- الضيق إلى الأعمق- المصفوفة -fchkp- الأمثل -fchkp-use-fast-string-المهام
-fchkp-use-nochk-string-function -fchkp- استخدام-ثابت-حدود
-fchkp-use-static-const-bounds -fchkp-علاج-صفري-ديناميكي-حجم-لانهائي
-fchkp- تحقق- قراءة -fchkp- تحقق- قراءة -fchkp- الاختيار-الكتابة -fchkp-store-bounds
-fchkp- صك- مكالمات -fchkp- صك- ملحوظ فقط أغلفة -fchkp-use-use
-fdbg-cnt- قائمة -fdbg-cnt =قائمة القيمة المضادة -fdisable- ipa-اسم_مرور
-fdisable- rtl-اسم_مرور -fdisable- rtl-اسم المرور=قائمة النطاق -fdisable- شجرة-اسم_مرور
-fdisable- شجرة-اسم المرور=قائمة النطاق -fdump-noaddr -fdump-غير مرقمة
-fdump-unnumbered-links - تفريغ - وحدة الترجمة[-n] -fdump- فئة- التسلسل الهرمي[-n]
-fdump-ipa- الكل -fdump-ipa-cgraph -fdump- ipa- مضمنة -fdump- يمر -fdump-Statistics
-fdump-tree-all -fdump-tree-original[-n] -fdump- شجرة الأمثل[-n] -fdump- شجرة- cfg
-fdump-tree-alias -fdump-الشجرة الفصل -fdump-tree-ssa[-n] -fdump-tree-pre[-n]
-fdump- شجرة- ccp[-n] -fdump-tree-dce[-n] -fdump-tree-gimple[-الخام] تفريغ شجرة دوم[-n]
-fdump-tree-dse[-n] - تفريغ - شجرة - بيبروب[-n] -fdump- شجرة- phiopt[-n]
-fdump- شجرة- forwprop[-n] -fdump-tree-copyrename[-n] -fdump- شجرة- nrv -fdump- شجرة- vect
-مغسلة-تفريغ-شجرة-بالوعة -fdump-tree-sra[-n] -fdump- شجرة- forwprop[-n] - تفريغ - شجرة - فري[-n]
-fdump- شجرة- vtable- تحقق -fdump- شجرة- vrp[-n] -fdump-tree-storeccp[-n]
-fdump-final-insns =ملف -fcompare-debug[=الأراضي الفلسطينية المحتلة] -fcompare-debug-second
-تقزم-قزم 2-دوبس - أنواع - إزالة - غير المستخدمة - التصحيح
-تصحيح-غير مستخدمة-رموز تصحيح -نسبه-فئة-التصحيح-دائما -يمكن-نوع-pass
-يمكن-نوع-pass =قائمة النطاق - قسم أنواع الشوائب -fmem- تقرير- wpa تقرير fmem
-fpre-ipa-mem-report -fpost-ipa-mem-report -fprofile- أقواس -fopt- معلومات
-fopt- معلومات-الخيارات[=ملف] -بذور عشوائية =عدد -fsched- مطول =n -الجدولة- مطوّل
-الجدولة- التفريغ- CFG -الجدولة- الانابيب- مطوّل -fstack-الاستخدام -تغطية -ftest
-تقرير الوقت -fvar- تتبع -fvar- تتبع- التخصيصات
-fvar- تتبع- تعيينات- تبديل -g -gمستوى -gtoggle -gcoff -قزم-الإصدار -ggdb
-جريكورد- مفاتيح دول مجلس التعاون الخليجي -Gno- سجل- مفاتيح دول مجلس التعاون الخليجي -جستابس -غستابس + -القزم الصارم
- صارم - قزم -gvms -gxcoff -gxcoff + -gz[=نوع] سلاسل -fno-merge-debug-strings
-fno-dwarf2-cfi-asm -fdebug- بادئة خريطة =قديم=جديد -نسبه-هيكل-تصحيح-أساس فقط
-نسبه-بناء-التصحيح-المخفّضة -نسبه- هيكل- تصحيح- مفصل[=قائمة المواصفات] -p -pg
-طباعة-اسم الملف =مكتبة -طباعة- libgcc- اسم الملف -طباعة- دليل متعدد
-طباعة-متعدد-ليب -طباعة-متعدد-دليل-نظام التشغيل -طباعة-اسم البرنامج =برنامج
-طباعة-البحث-dirs -Q -طباعة- sysroot -طباعة- sysroot- رؤوس- لاحقة حفظ مؤقت
-حفظ- temps = cwd -حفظ- temps = obj -زمن[=ملف]

التحسين الخيارات
- تحسينات الحلقة الخاطئة وظائف المحاذاة [=n] - يقفز المحاذاة [=n]
-ملصقات-المحاذاة [=n] حلقات المحاذاة [=n] -الرياضيات -فاوتو الملف الشخصي
-فاوتو-الملف الشخصي [=مسار] -فاوتو- المؤتمر الوطني العراقي -احتمالات-فرع
-متفروع- الهدف- تحميل- الأمثل -fbranch-target-load-optimize2 -fbtr- ب ب- خاص
-fcaller- يحفظ -فحص-البيانات-الدوائر -مجمع-المكدس-التعديلات -الحفاظ-المكدس
-مقارنة-القضاء سجلات fcprop -القفز المتقاطع القفزات -fcse- متابعة كتل -fcse- تخطي
قواعد فورتران FCX -fcx- محدود المدى أقسام البيانات -fdce - فرع متأخر
-fdelete-null-pointer-check-pointer (تحقق من -fdelete-null-pointer-pointer) - افترض - تخميني - تخميني
-fdevirtualize-at-ltrans -fdse -مضمنة -فيبا-سرا - تحسينات غير مكلفة
-فتات-ليتو الأشياء -فاست-الرياضيات - غير محدد - الرياضيات فقط -متجر طائر
- الدقة الزائدة =نمط - تكاثر -فب-عقد =نمط - أقسام الوظائف
-fgcse -fgcse- بعد إعادة التحميل -fgcse- لاس -fgcse-lm -fgraphite- الهوية -fgcse- sm
- الحمولات المجاورة -fif- التحويل -fif- التحويل 2 - مضمنة غير مباشرة
وظائف الخطوط الدقيقة - وظائف الخط - تسمى مرة واحدة -finline-Limit =n
وظائف صغيرة الحجم -فيبا- CP -فيبا- cp- استنساخ محاذاة -fipa-cp -فيبا- pta
-فيبا الشخصي -فيبا-نقي-كونست -فيبا المرجع -فيبا- ICF خوارزمية فيرا =خوارزمية
منطقة فيرا =منطقة -الرافعة-الضغط - ضغط حلقة فيرا -fno- آيرا- حصة- حفظ- فتحات
فتحات انسكاب الفتحات -فيرا- مطوّل =n عزل المسارات الخاطئة
السمة العزلة-المسارات الخاطئة -خمسة وظائف مضمنة الصيانة
-حفظ-ثابت-ثابته انكماش مدى الحياة - كتلة طيارة - التبادل الطائر
-قريب-شريط-الألغام -تقلب-فتح-والمربى -قلب-عش- الأمثل -قلب-موازاة الكل
-فلرا-ريمات -فلتو - مستوى الضغط - التقسيم - فلو =ALG -التقرير
-Flto-report-wpa - جميع الثوابت الثوابت -fmodulo- جدولة
-fmodulo-Sched-allow-regmoves -ثوابت حلقة -fmove -fno- فرع- عد- ريج
-fno- تأجيل البوب -fno-function-cse احتمالية عدم وجود فرع تخمين -fno- مضمنة
-fno-Math-Errno -fno-peephole -fno-peephole2 -fno- جدولة- interblock -fno- جدولة المواصفات
-fno- موقعة- الأصفار -fno-toplevel-reorder - الرياضيات
-fno-صفر-تهيئة-في-bss - مؤشر الإطار -تحسين- مكالمات الأخوة
-تضمين جزئيًا حلقات تقشير - المشتركة التنبؤية -fprefetch- حلقة- صفائف
-fprofile- تقرير -fprofile- تصحيح -fprofile- دير =مسار -fprofile- توليد
-fprofile- تولد =مسار -fprofile- استخدام -fprofile- استخدام =مسار -fprofile- القيم
-fprofile-reorder-وظائف الرياضيات المتبادلة -حر -frename- تسجيلات
كتل -freorder كتل-فريدر-والتقسيم وظائف -freorder
-frerun-cse-after-loop حلقات مجدولة مجدولة -الرياضيات
-fsched2-use-superblocks ضغط ضغط تحميل المواصفات
-fsched- المواصفات-تحميل خطير -fsched-stalled-insns-dep [=n] -fsched-stalled-insns [=n]
-fsched-group-heuristic -fsched- المسار الحرج- الكشف عن مجريات الأمور -fsched-spec-insn- ارشادي
-fsched- رتبة- إرشادية -fsched-last-insn-heuristic -fsched-dep-count-heuristic
-fschedule-الانصهار -fschedule- insns -fschedule-insns2 -fsection- المراسي
- جدولة انتقائية - جدولة انتقائية 2 -الجدولة- الأنابيب
-الجدولة- الأنابيب- الخارجية- الحلقات - التوسط الدلالي -لف شرينك
-إشارة- nans - ثابت واحد - الدقة -fsplit-ivs-in-unroller
- أنواع الانقسام العريض -فسا- phiopt -حامي-فسك -حامي-فستيك-الكل
- حامي - قوي -فستاك-حامي-صريح -fstdarg- اختيار -تعرج صارم
- تجاوز الحد -الخيط القفزات -ftracer -ftree-bit-ccp -ftree- بنيت- نداء- DCE
-فتري- ccp -فتري- الفصل -ftree-coalesce-inline-vars -ftree-coalesce-vars -ftree- نسخة- الدعامة
-ftree- نسخة -فتري- dce -فتري-المسيطر-الخيارات -فتري- dse -ftree- forwprop
-ftree- فري -ftree- حلقة- إذا- تحويل -ftree- حلقة- إذا- تحويل- مخازن -ftree- حلقة- الدردشة
-فتري-بيبروب -توزيع-حلقة-شجرة -توزيع-حلقة-توزيع-أنماط
-فتري-حلقة- ايفكنون -فتري-حلقة-خطية -ftree- حلقة- الأمثل -ftree- حلقة- vectorize
- الشجرة - موازاة الحلقات =n -ftree- قبل -ftree- جزئية- قبل -فتري- pta -ftree-reassoc
-فتري-بالوعة -فتري- slsr -فتري-سرا -تبديل الشجرة التحويل -ftree- ذيل- دمج
-فتري-تير -ftree-vectorize -ftree-vrp -الوحدة في وقت واحد -funroll- جميع الحلقات
حلقات -funroll -تحسينات غير آمنة- حلقة -ممتعة-الرياضيات-التحسينات
حلقات-funswitch -فيبا را متغير التوسع في unroller -تأثير- نموذج التكلفة -fvpt
-ويب -كل-البرنامج -fwpa -fuse-linker-plugin - معلمة الاسم=القيمة -O -O0 -O1 -O2
-O3 -أوس -سريع -عوج

قبل المعالج الخيارات
-Aسؤال=إجابة -ا-سؤال[=إجابة] -C -دي -dM -dN -Dالماكرو[=defn] -E -H
- بعد دير -تضمن ملف -يماكروس ملف -iprefix ملف -iwithprefix دير
-iwithprefix قبل ذلك دير -نظام دير -متعدد دير -ايسروت دير -M -MM -مف -مغ
-MP -MQ -MT -نوستدينك -P -fdebug-cpp التوسع الكلي -العمل-الدليل
-Remap -الخط - صندوق -Uالماكرو -Wp ،خيار -Xpreprocessor خيار -لا- متكامل- CPP

المجمع خيار
-وا ،خيار -Xassembler خيار

الروابط الخيارات
اسم ملف الكائن - الصمامات- ld =وصلات -lمكتبة -نوستارتفيليس -Nodefaultlibs -نوستدليب
-فطيرة -ديناميكي -s -ثابتة -static-libgcc -static-libstdc ++ -استاتيك-ليباسان
-استاتيك-ليبتسان -استاتيك- liblsan -ستاتيك-ليبوبسان -الثابت- libmpx -static-libmpxwrappers
-مشاركة -shared-libgcc -رمزي -T سيناريو -Wl ،خيار -Xlinker خيار -u رمز -z
الكلمة

دليل الخيارات
-Bبادئة -Iدير -بلوجيندير =دير -انا اقتبسدير -Lدير -النوع =ملف -أنا- - sysroot =دير
--لا sysroot- لاحقة

تشمل تابع الخيارات
AArch64 الخيارات -مابي =الاسم -mbig-endian -ملل-endian عام-regs-only
-mcmodel = صغير -mcmodel = صغير -mcmodel = كبير -mstrict- محاذاة -موميت-أوراق-إطار-مؤشر
-رقم-حذف-أوراق-إطار-مؤشر -mtls- لهجة = تنازلي -mtls- اللهجة = التقليدية
-مفيكس قشرة- a53-835769 -منو-فيكس-القشرة-a53-835769 -مفيكس قشرة- a53-843419
-منو-فيكس-القشرة-a53-843419 - مسيرة =الاسم -mcpu =الاسم -mtune =الاسم

Adapteva عيد الغطاس الخيارات -نصف- ريج- ملف -مبرفر-قصير-insn-regs - تكلفة الامتياز =NUM
-Mcmove -منوبس =NUM -msoft- cmpsf -msplit- لوهي -موقع- المؤتمر الوطني العراقي -تعديل-الشباك
-mstack-offset =NUM -طائرة-أقرب - مكالمات طويلة - مكالمات قصيرة - صغير 16 -mfp- الوضع =طريقة
-مفيكت- مزدوج ماكس- vect- محاذاة =NUM -mplit-vecmove-early -m1reg-ريج

ARC الخيارات -برميل-شيفتر -mcpu =وحدة المعالجة المركزية -mA6 مارك 600 -mA7 مارك 700 -mdpfp
-mdpfp- المضغوط -mdpfp- سريع -mno-dpfp-lrsr -مي -منو- mpy -ممول -ممول 64 -غير طبيعي
-mspfp -mspfp- المضغوط -mspfp- سريع -مسمد -مسنة- تعويم -mswap -mcrc -mdsp-packa -مدفبف
-لوك -mmac-d16 -مماك -24 -Mrtsc -مسواب -الهاتف -مكسي -حجم -منومة-محاذاة
-مارلينكس - marclinux_prof -مبيلوغ- cfi - مكالمات طويلة -المكالمات-المتوسطة -msdata
-Mucb-mcount -متطاير- مخبأ -معاينة-النداء تعديل تلقائي ريج -مبيت-ثقب الباب -منو- brcc
-حقيبة- ناقل- pcrel -حالات مضغوطة -منو كوند-إكسيك -مبكرا- cbranchsi - توسيع - adddi
الأحمال المفكرة -ملرا -mlra- الأولوية- بلا -ملرا- الأولوية- المضغوط mlra الأولوية-
غير مضغوط -mno- ملي كود رمز مختلط فئة-mq -مركق -mRcw -مستوى الحجم =مستوى
-mtune =وحدة المعالجة المركزية -mmultcost =NUM -munalign-prob-threshold =الاحتمالات

ARM الخيارات - خرائط - الإطار -منو- apcs- الإطار -مابي =الاسم -mapcs- مكدس الاختيار
-mno-apcs- كومة الاختيار - خرائط - تعويم -منو- apcs- تعويم - خرائط - إعادة الدخول
-منو- apcs-reentrant -مسيد-برولوج -منو-جدولة-برولوج -ملل-endian -mbig-endian
-mfloat-abi =الاسم -نسق mfp16 =الاسم - الإبهام - البيني -mno-الإبهام البيني -mcpu =الاسم
- مسيرة =الاسم -mfpu =الاسم -mtune =الاسم -طباعة- ضبط المعلومات -حجم الهيكل =n
مابورت أون نورترن - مكالمات طويلة - مكالمات طويلة -مفردة الموافقة المسبقة عن علم- قاعدة
-رقم-واحد-قاعدة الموافقة المسبقة عن علم تسجيل -mpic =ريج -منوب-متعة- dllimport -موقع-وظيفة-اسم
الإبهام -الذرة -mtpcs- الإطار -mtpcs- ورقة الإطار -mcaller-super-interworking
- العمل البيني الفائق -mtp =الاسم -mtls- اللهجة =لهجة - نقل الكلمات
-مفيكس-القشرة- m3-ldrd -موافق-الوصول النيون مقابل 64 بت بيانات فلاش بطيئة
-الصيغة الموحدة مقيد عليه

AVR الخيارات -mmcu =MCU -تراكم-أرجس - تكلفة الامتياز =كلف - مقدمات المكالمات النعناع 8
-mn_flash =الحجم -منو المقاطعات -استراحة -مرمو -مستريك- X كومة صغيرة -nodevicelib
-Waddr- مساحة- تحويل

Blackfin الخيارات -mcpu =وحدة المعالجة المركزية[-sirevision] -مسيم -موميت-أوراق-إطار-مؤشر
-رقم-حذف-أوراق-إطار-مؤشر -mspecld- شذوذ -منو- specld- شذوذ -مزامنة-شذوذ
-منو-سينك-شذوذ -mlow-64 كيلو -منو منخفضة 64 كيلو - مكدس الاختيار L1 -متوسط-المكتبة المشتركة
-رقم-معرف-مكتبة مشتركة -مكتبة-مشاريد =n -mleaf-id-shared-library
-منو ليف- معرف- مكتبة مشتركة -مسبب-البيانات -رقم-سبتمبر-البيانات - مكالمات طويلة - مكالمات طويلة
-سريع- fp مينلاين- PLT -متعدد النواة -مكوريا -موقع ب -msdram -micplb

C6X الخيارات -mbig-endian -ملل-endian - مسيرة =وحدة المعالجة المركزية -مسيم -msdata =نوع sdata

CRIS الخيارات -mcpu =وحدة المعالجة المركزية - مسيرة =وحدة المعالجة المركزية -mtune =وحدة المعالجة المركزية -mmax-stack-frame =n
-melinux-stacksize =n -متراكس 4 -متراكس 100 -mpdebug -mcc- الحرف الأول - عدم الآثار الجانبية
-مكدس- محاذاة محاذاة البيانات -mconst- محاذاة -m32 بت -m16 بت -m8 بت
-من-مقدمة-الخاتمة -منو-جوتبلت -نفس -ماوت -ميلينوكس -ملينكس -سم -سم 2
-mmul علة الحل -mno-mul-bug-workaround

CR16 الخيارات -مماك -mcr16cplus -مكر 16 ج -مسيم النعناع 32 -مبيت العمليات - نموذج البيانات =نموذج

داروين الخيارات -جميع_حمولة -العميل المسموح به -قوس - أخطاء_ميتة -أرشيف فقط
-ربط_at_load -حزمة -محمل_حزمة -اسم العميل - التوافق_الإصدار
-النسخة الحالية -تفصل_الخط - ملف الاعتماد -dylib_file -dylinker_install_name
-ديناميكي -ديناميكليب -قائمة_الرموز_المصدرة -قائمة الملفات -flat_namespace
-فرض_cpusubtype_ALL -Force_flat_namespace -headerpad_max_install_names -الإطار
-صورة_قاعدة -فيه -اسم_التثبيت -صيانة_خاصة_الخارج -متعدد الوحدات
-تضاعف_تعرّف -تضاعف_تعرف_غير مستخدمة - noall_load
-لا_قطع_خط_الخطوات_المصطلحات -Nofixprebinding -nomultidefs -نوبريبيند
-noseglink تصحيح -pagezero_size -الخلاصة -prebind_all_twolevel_modules -حزمة_خاصة
- قراءة_ فقط_المحرر -المستقيم -رموز الكائنات -لماذا -seg1addr - الطائفة
-رموز الكائنات -قطاعية -سجادر -segs_read_only_addr -segs_read_write_addr
-seg_addr_table -seg_addr_table_filename -الرابط -درس -segs_read_only_addr
-segs_read_write_addr -وحدة_وحدة -ثابتة -المكتبة الفرعية -مظلة فرعية
-wolevel_namespace -مظلة -غير معرف -قائمة_الرموز_غير المُصدرة
- ضعف_المرجعية_التطابقات - ما تم تحميله -F -تناول -gfull -mmacosx-version-min =الإصدار
-مكرنيل -عوني-بايت- منطقي

ديسمبر ألفا الخيارات -منو- fp- ريجس -مسنة- تعويم -مييي -مي-مع-غير دقيق
-mieee- المطابقة -mfp-trap-mode =طريقة -وضع التقريب mfp =طريقة الدقة - mtrap =طريقة
- بناء الثوابت -mcpu =نوع وحدة المعالجة المركزية -mtune =نوع وحدة المعالجة المركزية -mbwx -ماكس -إصلاح -mcix
- طفو - vax -طوف- ieee -صريحة-ريوكس بيانات صغيرة - بيانات كبيرة نص صغير
-تكبير النص -الذاكرة-الكمون =الوقت

FR30 الخيارات نموذج صغير -منو-لسيم

FRV الخيارات -mgpr-32 -mgpr-64 -mfpr-32 -mfpr-64 -مشدد-تعويم -مسنة- تعويم
-مولوك- سم مكعب -مثبت- سم مكعب -مدوورد -منو- dword - مزدوج -منو-ضعف الوسائط - وسائل الإعلام
-مولد -منو مولاد -mfdpic مينلاين- PLT -mgprel- رو -متعدد-مكتبة-الموافقة المسبقة عن علم
-مربوطة- fp - مكالمات طويلة -مؤشرات- تسميات -مكتبة- الموافقة المسبقة عن علم -ماك -4 -ماك -8 -حزمة
-لا حزمة -منو- eflags -mcond- الخطوة -منو-كوند-موف - تحسين الغشاء
-من-أمثل-غشاء -mscc -منو- مجلس التعاون الجمركي -mcond-exec -منو كوند-إكسيك -مفلو-فرع
-منو-فليو-فرع -متعدد الشروط التنفيذية -منو متعدد-كوند-إكسيك -مختلط- cond-exec
-رقم-متداخل- cond-exec -mtomcat- احصائيات -mTLS -mtls -mcpu =وحدة المعالجة المركزية

جنو / لينكس الخيارات -مجليبك -موكليبك -مبيونيك -مندرويد -tno- الروبوت- سم مكعب -tno-android-ld

H8 / 300 الخيارات -استراحة -mh -الآنسة مين -mexr -منو exr النعناع 32 -ملاجن -300

HPPA الخيارات - مسيرة =نوع العمارة -تعطيل- fpregs -تعطيل-الفهرسة
- مكالمات سريعة - غير مباشرة -مغاس -مجنو- لد -mhp-ld - المدى الثابت =نطاق التسجيل
- القفز في التأخير -mlinker-opt - مكالمات طويلة -متجر تحميل طويل -رقم-تعطيل- fpregs
-رقم تعطيل الفهرسة - مكالمات - سريعة - غير مباشرة -منو-غاز -لا القفز في تأخير
-متجر تحميل طويل وقت التشغيل -من-لينة-تعويم -منو-الفضاء-ريجس
-مسنة- تعويم -mpa-risc-1-0 -mpa-risc-1-1 -mpa-risc-2-0 وقت التشغيل
-جدولة =نوع وحدة المعالجة المركزية -mspace- ريجس -msio -موسيو -مونكس =يونكس- الأمراض المنقولة جنسيا -نوليبد -ثابتة
-الخيوط

IA-64 الخيارات -mbig-endian -ملل-endian -مجنو- as -مجنو- لد -منو الموافقة المسبقة عن علم
-متطاير- asm- توقف -أسماء-تسجيل -msdata -منو- sdata -مستمر- GP -تلقائي الموافقة المسبقة عن علم
-مفوس-ماد -minline-float-divide-min-latency -minline-float-divide-max-الإنتاجية
-mno-inline-float-divide -minline-int-divide-min-latency
-minline-int-divide-max-الإنتاجية -mno-inline-int-divide -minline-sqrt-min-latency
-minline-sqrt-max-الإنتاجية -mno- مضمنة- sqrt -mdwarf2-asm -مبكرا-توقف-بت
- المدى الثابت =نطاق التسجيل -mtls-size =حجم tls -mtune =نوع وحدة المعالجة المركزية -milp32 -mlp64
-msched-br-data-spec -msched-ar-data-spec -مشروع-التحكم-المواصفات -msched-br-in-data-spec
-msched-ar-in-data-spec -مشروع-في-السيطرة-المواصفات -msched- المواصفات- ldc
-msched- المواصفات- السيطرة- ldc -msched-prefer-non-data-spec-insns
-msched-prefer-non-control-spec-insns -msched-stop-bits- بعد-كل-دورة
-msched-count-spec-in -itical-path -msel-Sched-dont-check-control-spec
-msched-fp-mem-deps-zero-cost -msched-max-memory-insns-hard-limit
-msched-max-memory-insns =ماكس إنس

LM32 الخيارات -يمكن تحويل برميل تمكين -mdivide -ممكن مضاعفة
-تمكين التمديد - تمكين المستخدم

M32R / د الخيارات -m32r2 -m32rx -m32r -mdebug الحلقات الخبيثة حلقات -mno- محاذاة
-معدل المشكلة =عدد - تكلفة الامتياز =عدد -mmodel =حجم الكود نوع النموذج -msdata =سداتا-
نوع -منو-دافق- func -mflush- func =الاسم -منو-دافق- فخ -mflush-trap =عدد -G NUM

M32C الخيارات -mcpu =وحدة المعالجة المركزية -مسيم ميمريغس =عدد

M680x0 الخيارات - مسيرة =قوس -mcpu =وحدة المعالجة المركزية -mtune =لحن م 68000 م 68020 -m68020-40
-m68020-60 م 68030 م 68040 م 68060 - وحدة المعالجة المركزية 32 م 5200 -m5206e -m528x م 5307 م 5407
-mcfv4e -مبيتفيلد -منو بيتفيلد -مك 68000 -مك 68020 -منوبيتفيلد -مرتد -منو- rtd
-mdiv -منو- div -قصير -منو- باختصار -مشدد-تعويم م 68881 -مسنة- تعويم -مبكرل
-ملاين-كثافة العمليات -mstrict- محاذاة -مسبب-البيانات -رقم-سبتمبر-البيانات -مكتبة-مشارد- id = n
-متوسط-المكتبة المشتركة -رقم-معرف-مكتبة مشتركة -mxgot -منو- xgot

مكور الخيارات -مهاردليت -منو-هارديليت -mdiv -منو- div -استرخاء- فوري
-من-الاسترخاء-الفوري على نطاق واسع bitfields -mno-wide-bitfields وظائف -m4 بايت
وظائف -mno-4 بايت - بيانات الخط - بيانات الخط -مبطء بايت
-mno- بطيئة-بايت -منو-لسيم -ملل-endian -mbig-endian م 210 م 340
زيادة مكدس

MeP الخيارات -معبسديف - خيارات صغيرة - متوسط -مستند =n -مبيتوبس -مك =n -مقطع
-mconfig =الاسم -مكوب -مكوب 32 -مكوب 64 -Mivc2 -mdc -mdiv -meb -ميل -ميو- متقلبة -مل
-مليدز مم -مينماكس -خلمة -لا خيارات - كرر -الآنسة -مساتور -msdram -مسيم -مسيمنوفيك
-متف - صغير =n

MicroBlaze الخيارات -مسنة- تعويم -مشدد-تعويم -msmall- يقسم -mcpu =وحدة المعالجة المركزية -ممبي
-mxl- لينة مول -mxl-soft-div -mxl- برميل-التحول -mxl- مقارنة النمط -mxl- مكدس الاختيار
-mxl-gp-opt -mno-clearbss -mxl- الضرب العالي -mxl- تعويم- تحويل -mxl- تعويم الجذر التربيعي
-mbig-endian -ملل-endian -mxl- إعادة ترتيب -mxl- وضع-نموذج التطبيق

MIPS الخيارات -EL -EB - مسيرة =قوس -mtune =قوس -الرسمات 1 -الرسمات 2 -الرسمات 3 -الرسمات 4
-الرسمات 32 -mips32r2 -mips32r3 -mips32r5 -mips32r6 -الرسمات 64 -mips64r2 -mips64r3
-mips64r5 -mips64r6 -الرسمات 16 -منو- mips16 -مفليب- mips16 -minterlink- مضغوط
-mno-interlink- مضغوط -مينترلينك- mips16 -mno- الربط- mips16 -مابي =أبي
-مبيكلز -منو- abicalls -مشاركة -منو- مشترك -مبلت -منو- PLT -mxgot -منو- xgot
-mgp32 -mgp64 -mfp32 -mfpxx -mfp64 -مشدد-تعويم -مسنة- تعويم -منو-تعويم
- تعويم واحد - تعويم مزدوج -مود-سبريج -منو- غريب- spreg -مابس =طريقة -منان =ترميز
-mdsp -منو- dsp -mdspr2 -منو- dspr2 -ممكو -mmno- mcu ميفا -منو-إيفا -mvirt -منو-الفضيلة
-mxpa -منو- إكسبأ ميكروميبس -mno- ميكروميبس -mfpu =نوع fpu -msmartmips -منو-سمارتميبس
-عجز واحد - زوج واحد -mdmx -منو- mdmx -mips3d -منو- mips3d -ممت
-mno- طن متري -مللسك -منو- ذ -mlong64 -mlong32 -msym32 -منو sym32 -GNUM
-ملل- sdata -mno-local-sdata -الخارج- sdata -mno-extern-sdata -Mgpopt -منو- gopt
- البيانات المدمجة -رقم-مضمنة-البيانات - moninit-const-in-rodata
-mno-uninit-const-in-rodata -الرمز المقروء =ضبط -مقسمة-العناوين
-من-تقسيم العناوين -صريحة-ريوكس -منو-صريح-ريلوكس -مراجعة-صفر-القسمة
- رقم الاختيار - صفر - القسمة - الفخاخ -مقسمة-فواصل -ممبي -منو- memcpy
- مكالمات طويلة - مكالمات طويلة -حمد -منو-جنون ميماد -منو-عماد -مفوس-ماد
-منو-تنصهر-ماد -nocpp - إصلاح - 24 كيلو - رقم الإصلاح - 24 كيلو - الإصلاح- r4000 -منو الإصلاح- r4000
- الإصلاح- r4400 -منو الإصلاح- r4400 - الإصلاح- r10000 -منو الإصلاح- r10000 -مفيكس- rm7000 -منو فيكس- rm7000
- الإصلاح- vr4120 -منو الإصلاح- vr4120 - الإصلاح- vr4130 -منو الإصلاح- vr4130 -إصلاح- sb1 -منو الإصلاح- sb1
-mflush- func =ظائفها -منو-دافق- func - تكلفة الامتياز =NUM -من المحتمل
-من-فرع-مرجح -mfp- استثناءات -mno-fp- الاستثناءات -mvr4130- محاذاة -mno- vr4130- محاذاة
-مسينسي -منو- synci - مكالمات -mrelax-pic -منو-الاسترخاء- مكالمات الموافقة المسبقة عن علم -mmcount- را- العنوان

MMIX الخيارات - مليبفونكس -منو-ليبفونكس -مبسيلون -منو إبسيلون -مابي = جنو
-مابي = mmixware - تمديد صفري -مكنوتديف رموز -mtoplevel -نفس -متشروع- توقع
-منو- فرع- توقع -عناوين القاعدة -رقم-قاعدة-عناوين -مخرج واحد
-من-خروج واحد

MN10300 الخيارات -ممت-علة -من-متعدد-علة -منو- am33 -مام 33 -مام 33-2 -مام 34 -mtune =وحدة المعالجة المركزية-
نوع -الرجوع-المؤشر- على- d0 -منو- crt0 -استراحة -مليو -مستلب

موشي الخيارات -meb -ميل -mmul.x -منو- crt0

MSP430 الخيارات -مسيم -الصم-عرافة -mmcu = -mcpu = -كبير صغير -استراحة -mhwmult = مينرت

NDS32 الخيارات -mbig-endian -ملل-endian -نقص-ريجس -mfull-regs -مكموف -منو سموف
-mperf تحويلة -mno-perf-ext -mv3push -منو- v3push -m16 بت -mno-16 بت حجم متجه مصرNUM
-حجم كتلة-ذاكرة التخزين المؤقت =NUM - مسيرة =قوس -mcmodel =نموذج رمز -ماكتور- dtor -استراحة

NIOS II الخيارات -G NUM -Mgpopt =خيار -Mgpopt -mno- gpopt -ميل -meb -رقم-تجاوز-مخبأ
-mbypass- ذاكرة التخزين المؤقت -منو- مخبأ- متقلبة - مخبأة متقلبة -منو سريع- sw-div - سريع- sw-div
-mhw- مول -منو- hw- مول -mhw- مولكس -منو- hw- مولكس -منو- hw-div -mhw-div -مخصص-insn=N
-منو- مخصص-insn -مخصص- fpu-cfg =الاسم -مهال -مصغر -msys-crt0 =الاسم -msys-lib =الاسم

NVIDIA PTX الخيارات م 32 م 64 -منكيرنيل

PDP-11 الخيارات -مفبو -مسنة- تعويم -ماك0 -منو- ac0 م 40 م 45 م 10 -mbcopy
-mbcopy- المدمج النعناع 32 -mno- int16 النعناع 16 -mno- int32 - طفو 32 -منو-فلوت 64
- طفو 64 -منو-فلوت 32 -مبشي -منو-أبشي - باهظة الثمن -رخيصة-فرانش
-مونيكس- asm -Mdec- asm

بيكو تشيب الخيارات -ماي =ae_type -mvliw-lookahead =N -msymbol- كعنوان
- تحذيرات غير فعالة

باور الخيارات انظر RS / 6000 وخيارات PowerPC.

RL78 الخيارات -مسيم -mmul = لا شيء -mmul = g13 -mmul = rl78 -m64bit- يتضاعف -m32bit- يتضاعف

RS / 6000 و باور الخيارات -mcpu =نوع وحدة المعالجة المركزية -mtune =نوع وحدة المعالجة المركزية -mcmodel =نموذج رمز
-محطة -مالتيفيك -منو-التيفيك -مباويربك- gpopt -mno-powerpc-gpopt
-مباويربك- gfxopt -mno-powerpc-gfxopt -مفكرف -منو- مفكرف -mpopcntb -منو- popcntb
-mpopcntd -mno-popcntd -مفبرند -منو- فبرند -مكمب -منو- cmpb -mmfpgpr -منو- mfpgpr
-محارد- dfp -من الصعب-dfp -mfull-toc - الحد الأدنى - توك -mno-fp-in-toc -من-مجموع-في-توك
م 64 م 32 -mxl- التوافق -mno-xl- متوافق -Mpe -القوة الحميدة -خفيفة-طبيعية
-مسنة- تعويم -مشدد-تعويم - متعدد - متعددة - تعويم واحد - تعويم مزدوج
-بسيط- fpu - الخيط -منو- سلسلة -حديث -رقم التحديث -عناوين مفهرسة
-رقم-تجنب-عناوين مفهرسة -مفوس-ماد -منو-تنصهر-ماد -mbit- محاذاة
-لا بت محاذاة -mstrict- محاذاة -لا صارمة- محاذاة -نقل -منو-ريموكاتابل
-مرحل-ليب -منو-ريلوكاتابل-ليب -mtoc -منو توك -ملي قليلا -ملل-endian
-مكبر -mbig-endian -mdynamic-no-pic -مالتيفيك -مسوديف -مفردة الموافقة المسبقة عن علم- قاعدة
-إعطاء الأولوية- مقيد- insns =الأولوية -msched-cost-dep =نوع_التبعية
-minsert-Sched-nops =مخطط -mcall-sysv -mcall- netbsd -maix- بناء- العودة
-msvr4- هيكلة العودة -مابي =نوع أبي -msecure- PLT -mbss- PLT
-mblock-move-inline-limit =NUM -مزيل -منو-ايزيل -misel = نعم -مزيل = لا -مسب -منو- spe
-mspe = نعم -mspe = لا - معطلة -mgen- الخلية- الرمز الصغير -الرمز الصغير للخلية المحذرة -mvrsave
-منو- فرسافي -ممولهو -منو-مولهو -مدلمذب -منو-دلمزب -mfloat-gprs = نعم -mfloat-gprs = لا
-mfloat-gprs = مفرد -mfloat-gprs = ضعف -مبروتوب -النموذج الأولي -مسيم -mmvme
سادة -ميالنايف -مب -msdata -msdata =اختار -mvxworks -G NUM -الخطأ - رثاء
-mrecip =اختار -منو- المتلقي - الدقة -منو- المتلقي الدقة -mveclibabi =نوع -mfriz
-منو-فريز -مؤشرات- إلى-وظائف متداخلة -رقم-مؤشرات-إلى-دالات متداخلة
-msave-toc- غير مباشر -من-حفظ-توك-غير مباشر -8-الانصهار -mno-mpower8- الانصهار
-قوة 8-ناقلات -mno-power8- ناقلات -مشفرة -رقم التشفير - التحرك المباشر -لا تحرك مباشر
- ذاكرة رباعية -لا ذاكرة رباعية -كواد-ذاكرة-ذرية -رقم-رباعي-ذاكرة-ذرية
-مكومبات-محاذاة-بارم -منو-التوافق- محاذاة- parm -الجمعية- regs-df -منو العلوي- ريجس- مدافع
-الجمعية- regs-sf -من-العلوي-ريجس- سادس -مابر-ريجس -من-العلوي-ريجس

RX الخيارات -m64bit- يتضاعف -m32bit- يتضاعف -fpu -نوفبو -mcpu = -mbig-endian-data
-مليلا-endian- البيانات بيانات صغيرة -مسيم -منو سيم -الماس 100- بناء الجملة -mno-as100- بناء الجملة
-استراحة -ماكس-ثابت-الحجم = -تسجيل النعناع = -موقع - عدة مقاطعات سريعة
-msave-acc-in- المقاطعات

S / 390 و zSeries الخيارات -mtune =نوع وحدة المعالجة المركزية - مسيرة =نوع وحدة المعالجة المركزية -مشدد-تعويم -مسنة- تعويم
-محارد- dfp -من الصعب-dfp -لونغ-ضعف -64 -لونغ-ضعف -128 سلسلة الظهر
-mno- backchain مكدسة مكدسة -mno-معبأة-المكدس -msmall- إكسيك -mno- صغير- exec
-ملفكل -منو- mvcle م 64 م 31 -mdebug -منو التصحيح ميسا -مزارخ -mtpf- تتبع
-mno-tpf- تتبع -مفوس-ماد -منو-تنصهر-ماد -حجم الإطارات - ديناميكي حذر
-حجم الكومة -مكدس-حارس -mhotpatch =نصفي,نصفي

العلامة الخيارات -meb -ميل -منهوروب -مولس -مماك -مسكور 5 -مسكور 5 يو -مسكور 7 -مسكور 7 د

SH الخيارات م 1 م 2 -m2e -m2a- nofpu -m2a- مفرد فقط -m2a- واحد -m2a م 3 -m3e
-m4-nofpu -m4- مفرد فقط - م 4 واحد م 4 -m4a- nofpu -m4a- مفرد فقط -m4a- واحد
-m4a -m4al -m5-64media -m5-64media- nofpu -m5-32media -m5-32media- nofpu -m5- المدمجة
-m5- المدمجة- nofpu -مب -مل -Mdalign -استراحة -mbigtable -مفموفد -ميتاتشي -مرينا
-منو-رينيساس -منوماكسيف -مييي -منو-اييي -مبيتوبس -حجم -minline- ic_invalidate
-مباديم -مساحة -مبريفيرجوت -موسمود -Multcost =عدد -mdiv =إستراتيجية
-mdivsi3_libfunc =الاسم - المدى الثابت =نطاق التسجيل -مخاطبة-مخاطبة
-mgettrcost =عدد -مبت- ثابت -تراكم-أرغس الصادرة -الرموز غير الصالحة
-النموذج الذري =النموذج الذري - تكلفة الامتياز =NUM -مزدكبرانش -mno-zdcbranch
-mcbranch- قوة- تأخير- فتحة -مفوس-ماد -منو-تنصهر-ماد -مفسكا -منو- fsca -مفسرا
-منو فسرا - ترجمة - سموف -متاس

سولاريس 2 الخيارات -Mclear-hwcap -منو-واضح-hwcap -طبخ-النص -منو- نجس- النص
- الصفحات -الخطأ

SPARC الخيارات -mcpu =نوع وحدة المعالجة المركزية -mtune =نوع وحدة المعالجة المركزية -mcmodel =نموذج رمز نموذج الذاكرة =ذاكرة-
نموذج م 32 م 64 -mapp-regs -mno-app-regs -أسرع الهياكل - أسرع - الهياكل
-مسطحة -منو- شقة -مفبو -منو- fpu -مشدد-تعويم -مسنة- تعويم -محدد-رباعي-تعويم
-يمنة-رباعية-تعويم - التحيز المكدس -لا-كومة-التحيز -متلائم-الزوجي
زوجي غير محاذي - وضع المستخدم -لا-وضع المستخدم -mv8plus -منو- v8plus -مفيس
-منو-فيس -mvis2 -منو- vis2 -mvis3 -منو- vis3 -مكوند -منو- cbcond -مفماف -منو فماف
-mpopc -منو-بوبك - إصلاح- at697f -مفيكس- UT699

SPU الخيارات -موارن-ريلوك -الخطأ-نقل -المأمون- dma -Munsafe- دما - تلميحات فرع
-msmall-mem -كبير-ميم -مستدمين - المدى الثابت =نطاق التسجيل -ميا 32 -ميا 64
- العنوان - تحويل الفضاء -رقم-عنوان-فضاء-تحويل -حجم المخبأ =حجم ذاكرة التخزين المؤقت
-التيارات-التحديثات تحديثات -mno- الذرية

نظام V الخيارات -Qy -Qn -YP ،مسارات نعم ،دير

بلاط Gx الخيارات -mcpu = وحدة المعالجة المركزية م 32 م 64 -mbig-endian -ملل-endian -mcmodel =نموذج رمز

تيليبرو الخيارات -mcpu =وحدة المعالجة المركزية م 32

V850 الخيارات - مكالمات طويلة - مكالمات طويلة -ميب -منو- الجيش الشعبي وظيفة -mprolog
- وظيفة برولوج -مساحة -متدى =n -مسدا =n -مزدا =n -mapp-regs -mno-app-regs
-تعطيل- callt -رقم- تعطيل- callt -mv850e2v3 -mv850e2 -mv850e1 -mv850es -mv850e
-mv850 -mv850e3v5 -ملوب -استراحة القفزات الطويلة -مسنة- تعويم -مشدد-تعويم -mgcc- أبي
-mrh850-أبي -مفتاح كبير

VAX الخيارات -مغ -مجنو -مونيكس

Visium الخيارات -mdebug -مسيم -مفبو -منو- fpu -مشدد-تعويم -مسنة- تعويم -mcpu =نوع وحدة المعالجة المركزية
-mtune =نوع وحدة المعالجة المركزية وضع msv - وضع المستخدم

VMS الخيارات رموز العودة mvms -mdebug-main =بادئة -مملوك 64 -مؤشر-حجم =الحجم

VxWorks الخيارات -Mrtp -غير ثابت - ثابت -ديناميكية -Xbind-كسول -Xbind- الآن

x86 الخيارات -mtune =نوع وحدة المعالجة المركزية - مسيرة =نوع وحدة المعالجة المركزية -mtune- السيطرة =قائمة الميزات
-mdump-tune-features -لا-الافتراضي -mfpmath =وحدة -الماس =لهجة -منو-يتوهم-رياضيات -387
-منو- fp- ret-in-387 -مسنة- تعويم -mno- على نطاق واسع- ضرب -مرتد -مزاوجة مزدوجة
-حدود المكدس المُفضَّلة =NUM حدود المكدس الوشيكة =NUM -mcld -مك x16 -مصاحف
-مموفبي -mcrc32 - رثاء -mrecip =اختار -mvzeroupper -مبرفر- avx128 -mmmx مس - msse2
- msse3 -مسة 3 - msse4.1 - msse4.2 - msse4 -مافكس -Mavx2 -mavx512f -mavx512pf -mavx512er
-mavx512cd -مشا -مايس -mpclmul -mfsgsbase -مرردند -mf16c -مفما -mprefetchwt1
-mclflushopt -mxsavec -mxsaves - msse4a -m3dnow -mpopcnt -مبم -mbmi -mtbm -mfma4 -mxop
-mlzcnt -mbmi2 -mfxsr -mxsave -mxsaveopt -مرتم -mlwp -مبكسل -ممويتكس -ميثريدس
-منو-محاذاة-الأوتار -minline-all-stringops -minline- سترينجوبس-ديناميكي
-استراتيجية -mstringop =ALG -mmemcpy- استراتيجية =إستراتيجية -استراتيجية-mmemset =إستراتيجية
-فرج-أرجس -تراكم-أرغس الصادرة -م 128 بت- طويل- مزدوج -م 96 بت- طويل- مزدوج
-لونغ-ضعف -64 -لونغ-ضعف -80 -لونغ-ضعف -128 -mregparm =NUM -مسرقبارم
-mveclibabi =نوع -mvect8-ret-in-mem -mpc32 -mpc64 -mpc80 -Mstackrealign
-موميت-أوراق-إطار-مؤشر -من-المنطقة الحمراء -رقم- TLS- المباشر- SEG- المراجع -mcmodel =نموذج رمز
-مابي =الاسم -وضع العنوان =طريقة م 32 م 64 -mx32 م 16 - عتبة البيانات الكبيرة =NUM
-msse2avx -بنتري -mrecord-mcount -منوب-ماكونت -m8bit- idiv
-mavx256- تحميل الانقسام غير المحاذاة -mavx256-Split-unal -igned-store البيانات الخبيثة =نوع
- الكومة - واقي - الحرس =الحرس

x86 Windows الخيارات - وحدة التحكم -مسيجوين -منو-سيغوين -mdll -منوب-متعة- dllimport - الخيط
-مونيكود موين 32 -النوافذ -fno- مجموعة- مكدس قابل للتنفيذ

اكس ستورمي 16 الخيارات -مسيم

إكستينسا الخيارات -مكونست 16 -منو- const16 -مفوس-ماد -منو-تنصهر-ماد -قوة-لا-الموافقة المسبقة عن علم
- متسلسلة - متقلبة -رقم متسلسل- متقلب - نص - قسم - حرفية
-mno-text-section-literals -mtarget- محاذاة -mno- الهدف- محاذاة - مكالمات
-منو- مكالمات طويلة

zSeries الخيارات راجع خيارات S / 390 و zSeries.

رمز جيل الخيارات
-حفظ المكالمة-ريج -fcall- المستخدمة-ريج -مثبت-ريج - الاستثناءات - عدم الاستثناءات
-fdelete-dead-الاستثناءات طاولات ممتعة -غير متزامن-الاسترخاء-الجداول -fno-gnu- فريد من نوعه
-حجم منع التوجيه - وظائف الصك
-الصك-الدوال-استبعاد-وظيفة-قائمة =SYM,SYM، ...
- وظائف الصك - استبعاد - قائمة الملفات =ملف,ملف، ... -fno- مشترك -fno-id
-fpcc-Struct-return -fpic -fPIC -fpie -fPIE -fno- القفز-الجداول - مفاتيح دول مجلس التعاون الخليجي
-freg- هيكل- العودة - تعداد قصير -مضاعفة قصيرة -قصير- wchar -فطر- asm
-fpack- هيكل [=n] -fstack- الاختيار -fstack-Limit- التسجيل =ريج -fstack-Limit- رمز =SYM
-fno- كومة الحد -fsplit- المكدس - تسطير - عابرة -ftls- نموذج =نموذج
-fstack-reuse =reuse_level -ftrapv -فرابف - التحقق من القيود
- الرؤية =[الافتراضي|داخلي|مخفي|محمي] - bitfields شديدة التقلب
-fsync-libcalls

الخيارات السيطرة ال نوع of الناتج
يمكن أن يشمل التجميع ما يصل إلى أربع مراحل: المعالجة المسبقة ، والتجميع المناسب ، والتجميع ، و
ربط ، دائمًا بهذا الترتيب. دول مجلس التعاون الخليجي قادرة على المعالجة المسبقة وتجميع العديد
الملفات إما في عدة ملفات إدخال للمجمع ، أو في ملف إدخال مجمع واحد ؛ من ثم
ينتج كل ملف إدخال للمجمع ملف كائن ، ويجمع الارتباط كل الكائنات
الملفات (تلك التي تم تجميعها حديثًا ، وتلك المحددة كمدخلات) في ملف قابل للتنفيذ.

لأي ملف إدخال محدد ، تحدد لاحقة اسم الملف نوع التجميع
به:

ملف.c
شفرة المصدر C التي يجب معالجتها مسبقًا.

ملف.i
شفرة المصدر C التي لا ينبغي معالجتها مسبقًا.

ملف.ii
كود المصدر C ++ الذي لا ينبغي معالجته مسبقًا.

ملف.m
كود المصدر Objective-C. لاحظ أنه يجب عليك الارتباط بامتداد libobjc مكتبة لجعل
عمل برنامج Objective-C.

ملف.mi
كود مصدر Objective-C لا ينبغي معالجته مسبقًا.

ملف.mm
ملف.M
كود المصدر Objective-C ++. لاحظ أنه يجب عليك الارتباط بامتداد libobjc مكتبة لجعل
عمل برنامج Objective-C ++. لاحظ أن .M يشير إلى حرف كبير م.

ملف.mii
كود المصدر Objective-C ++ الذي لا ينبغي معالجته مسبقًا.

ملف.h
ملف رأس C أو C ++ أو Objective-C أو Objective-C ++ ليتم تحويله إلى ملف مترجم مسبقًا
header (افتراضي) أو ملف رأس C أو C ++ ليتم تحويله إلى مواصفات Ada (عبر امتداد
-fdump-ada-spec تحول).

ملف. سم مكعب
ملف.cp
ملف.cxx
ملف.CPP
ملف.CPP
ملف.c ++
ملف.C
كود مصدر C ++ يجب معالجته مسبقًا. لاحظ أنه في .cxx، آخر حرفين
يجب أن يكون كلاهما حرفيا x. بطريقة مماثلة، .C يشير إلى حرف كبير C.

ملف.mm
ملف.M
كود مصدر Objective-C ++ يجب معالجته مسبقًا.

ملف.mii
كود المصدر Objective-C ++ الذي لا ينبغي معالجته مسبقًا.

ملف.ح ح
ملف.H
ملف.hp
ملف.hxx
ملف.hpp
ملف.HPP
ملف.h ++
ملف.tcc
ملف رأس C ++ ليتم تحويله إلى رأس مترجم مسبقًا أو مواصفات Ada.

ملف.f
ملف
ملف.ftn
نموذج ثابت لشفرة مصدر فورتران التي لا ينبغي معالجتها مسبقًا.

ملف.F
ملف
ملف.fpp
ملف.FPP
ملف.FTN
كود مصدر فورتران ثابت الشكل الذي يجب معالجته مسبقًا (مع ملف
المعالج).

ملف.f90
ملف.f95
ملف.f03
ملف.f08
كود مصدر فورتران مجاني لا ينبغي معالجته مسبقًا.

ملف.F90
ملف.F95
ملف.F03
ملف.F08
كود مصدر فورتران مجاني يجب معالجته مسبقًا (مع ملفات
المعالج).

ملف.يذهب
اذهب كود المصدر.

ملف.إعلانات
ملف كود مصدر Ada الذي يحتوي على إعلان وحدة مكتبة (إعلان عن ملف
حزمة أو برنامج فرعي أو عام أو مثيل عام) أو وحدة مكتبة
إعلان إعادة التسمية (إعلان إعادة تسمية حزمة أو عام أو برنامج فرعي). مثل
تسمى الملفات أيضًا المواصفات.

ملف.adb
ملف كود مصدر Ada يحتوي على نص وحدة مكتبة (برنامج فرعي أو نص حزمة).
تسمى هذه الملفات أيضًا الهيئات.

ملف.s
كود المجمع.

ملف.S
ملف.sx
رمز المجمع الذي يجب معالجته مسبقًا.

آخر
ملف كائن ليتم تغذيته مباشرة في الارتباط. أي اسم ملف بدون التعرف عليه
يتم التعامل مع اللاحقة بهذه الطريقة.

يمكنك تحديد لغة الإدخال بشكل صريح باستخدام امتداد -x الخيار:

-x لغة
حدد بشكل صريح ملف لغة لملفات الإدخال التالية (بدلاً من السماح بامتداد
يختار المترجم افتراضيًا بناءً على لاحقة اسم الملف). هذا الخيار ينطبق على الجميع
ملفات الإدخال التالية حتى اليوم التالي -x اختيار. القيم الممكنة لـ لغة هي:

c- رأس cpp-الإخراج
c ++ c ++ - رأس c ++ - cpp-output
الهدف- ج الهدف- ج- العنوان الهدف- ج- CPP- الإخراج
الهدف-c ++ الهدف-c ++ - الهدف العنوان- c ++ - cpp-الإخراج
المجمع مع cpp
آدا
f77 f77-cpp-input f95 f95-cpp-input
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 ملف
ضع الإخراج في ملف ملف. ينطبق هذا على أي نوع من المخرجات يتم إنتاجها ،
سواء كان ملفًا قابلاً للتنفيذ ، أو ملف كائن ، أو ملف مجمع أو معالج مسبقًا C
رمز.

If -o لم يتم تحديده ، فالافتراضي هو وضع ملف قابل للتنفيذ في أ، الكائن
ملف ل المصدر in المصدر، ملف المجمع الخاص به بتنسيق مصادر، مترجم مسبقًا
ملف الرأس بتنسيق source.suffix.gch، وجميع مصادر C المجهزة مسبقًا على الإخراج القياسي.

-v اطبع (عند إخراج الخطأ القياسي) الأوامر المنفذة لتشغيل مراحل
التحويل البرمجي. قم أيضًا بطباعة رقم إصدار برنامج تشغيل المترجم والملف
المعالج والمترجم المناسب.

- ###
اعجاب -v باستثناء الأوامر لا يتم تنفيذها ويتم اقتباس الوسائط ما لم يتم ذلك
تحتوي فقط على أحرف أبجدية رقمية أو "./-_". هذا مفيد لبرامج shell النصية لـ
التقاط أسطر الأوامر التي يولدها السائق.

-يضخ
استخدم الأنابيب بدلاً من الملفات المؤقتة للاتصال بين مختلف مراحل
التحويل البرمجي. هذا فشل في العمل على بعض الأنظمة حيث المجمّع غير قادر على القراءة
من أنبوب لكن مُجمّع جنو ليس لديه مشكلة.

--مساعدة
اطبع (على الإخراج القياسي) وصفًا لخيارات سطر الأوامر التي يفهمها
دول مجلس التعاون الخليجي. إذا كان -v يتم تحديد الخيار أيضًا بعد ذلك --مساعدة يتم أيضًا نقله إلى المتنوع
العمليات التي استند إليها دول مجلس التعاون الخليجي، حتى يتمكنوا من عرض خيارات سطر الأوامر هم
قبول. إذا كان اكسترا تم أيضًا تحديد الخيار (قبل --مساعدة اختيار)،
ثم خيارات سطر الأوامر التي ليس لها وثائق مرتبطة بها هي أيضًا
عرض.

--تهدف المساعدة
اطبع (على الإخراج القياسي) وصفًا لخيارات سطر الأوامر الخاصة بالهدف
لكل أداة. بالنسبة لبعض الأهداف ، قد تكون المعلومات الإضافية الخاصة بالهدف أيضًا
المطبوعة.

--مساعدة = {فئة|[^]مؤهل}[، ...]
اطبع (على الإخراج القياسي) وصفًا لخيارات سطر الأوامر التي يفهمها
المترجم الذي يلائم جميع الفئات والمؤهلات المحددة. هذه هي
الفئات المدعومة:

محسنون
اعرض جميع خيارات التحسين التي يدعمها المترجم.

تحذيرات
اعرض كل الخيارات التي تتحكم في رسائل التحذير التي ينتجها المترجم.

الهدف
عرض خيارات محددة الهدف. على عكس --تهدف المساعدة الخيار ومع ذلك ، الهدف-
لا يتم عرض خيارات محددة من الرابط والمجمع. هذا بسبب
هذه الأدوات لا تدعم حاليا الموسعة - مساعدة = بناء الجملة.

params
اعرض القيم التي يتعرف عليها ملف - معلمة الخيار.

لغة
اعرض الخيارات المدعومة لـ لغة، حيث لغة هو اسم واحد من
اللغات المدعومة في هذا الإصدار من GCC.

مشترك
اعرض الخيارات العامة لجميع اللغات.

هذه هي المؤهلات المدعومة:

غير موثقة
اعرض فقط الخيارات غير الموثقة.

انضم
عرض الخيارات أخذ وسيطة تظهر بعد علامة التساوي في نفسه
جزء مستمر من النص ، مثل: - التعليمات = الهدف.

مستقل
عرض الخيارات بأخذ وسيطة تظهر ككلمة منفصلة بعد
الخيار الأصلي ، مثل: -o ملف إلاخراج.

وبالتالي ، على سبيل المثال ، لعرض جميع المفاتيح الخاصة بالهدف غير الموثقة التي يدعمها
المترجم ، استخدم:

- help = الهدف ، غير موثق

يمكن عكس الإحساس بالمؤهل عن طريق تسبقه بامتداد ^ الطابع ، لذلك
مثال لعرض جميع خيارات التحذير الثنائية (أي تلك التي تكون إما مفعّلة أو متوقفة عن التشغيل
والتي لا تأخذ حجة) التي لها وصف ، استخدم:

--help = تحذيرات ، ^ انضم ، ^ غير موثق

حجة - مساعدة = لا ينبغي أن تتكون فقط من المؤهلات المقلوبة.

من الممكن الجمع بين عدة فئات ، على الرغم من أن هذا عادة ما يقيد الناتج
لدرجة أنه لا يوجد شيء لعرضه. ومع ذلك ، فإن إحدى الحالات التي تعمل فيها هي متى
أحد الفصول هو الهدف. على سبيل المثال ، لعرض كل الهدف المحدد
خيارات التحسين ، استخدم:

- help = الهدف ، المحسنون

أفضل - مساعدة = يمكن تكرار الخيار في سطر الأوامر. يعرض كل استخدام متتالي
فئة الخيارات المطلوبة ، مع تخطي تلك التي تم عرضها بالفعل.

إذا كان -Q يظهر الخيار في سطر الأوامر قبل ملف - مساعدة = الخيار ، ثم
نص وصفي معروض بواسطة - مساعدة = تغير. بدلا من وصف المعروض
الخيارات ، يتم توضيح ما إذا كان الخيار ممكّنًا أو معطلاً أو مضبوطًا
إلى قيمة محددة (على افتراض أن المترجم يعرف ذلك عند النقطة التي يكون فيها
- مساعدة = يستخدم الخيار).

هنا مثال مبتور من منفذ ARM دول مجلس التعاون الخليجي:

٪ gcc -Q -mabi = 2 --help = target -c
الخيارات التالية محددة الهدف:
-مابي = 2
-mabort-on-noreturn [معطل]
-خرائط [معطل]

الإخراج حساس لتأثيرات خيارات سطر الأوامر السابقة ، لذلك
على سبيل المثال ، من الممكن معرفة التحسينات التي تم تمكينها في -O2 باستخدام:

-Q -O2 - Help = محسنون

بدلاً من ذلك ، يمكنك اكتشاف التحسينات الثنائية التي تم تمكينها بواسطة -O3 باستخدام:

gcc -c -Q -O3 --help = Optizers> / tmp / O3-opts
gcc -c -Q -O2 --help = Optizers> / tmp / O2-opts
فرق / tmp / O2-opts / tmp / O3-OPts | تمكين grep

- لا - البادئات المتعارف عليها
لا تقم بتوسيع أي روابط رمزية ، وحل المراجع إلى /../ or /./، أو اصنع المسار
مطلق عند إنشاء بادئة نسبية.

--الإصدار
اعرض رقم الإصدار وحقوق النشر الخاصة بـ GCC الذي تم استدعاؤه.

-غلاف
استدعاء كافة الأوامر الفرعية ضمن برنامج مُجمّع. اسم برنامج التضمين و
يتم تمرير معلماته كقائمة مفصولة بفواصل.

gcc -c tc -wrapper gdb، - args

هذا يستدعي كافة البرامج الفرعية لـ دول مجلس التعاون الخليجي تحت جدب --args، وبالتالي فإن الاحتجاج cc1 is
جدب --args cc1 ....

-فلوجين =الاسم.وبالتالي
قم بتحميل كود البرنامج المساعد في الملف الاسم. لذلك ، من المفترض أنه كائن مشترك ليتم dlopen'd به
المترجم. يتم استخدام الاسم الأساسي لملف الكائن المشترك لتحديد المكون الإضافي
لأغراض تحليل الحجة (انظر -fplugin- أرج-الاسم-مفتاح=القيمة أدناه). كل
يجب أن يحدد المكون الإضافي وظائف رد الاتصال المحددة في Plugins API.

-fplugin- أرج-الاسم-مفتاح=القيمة
تحديد حجة تسمى مفتاح بقيمة القيمة للمكوِّن الإضافي المسمى الاسم.

-fdump-ada-spec[-معتدل البنيه]
بالنسبة لمصدر C و C ++ وتضمين الملفات ، قم بإنشاء مواصفات Ada المقابلة.

- فادا - المواصفات - الأصل =وحدة
بالتزامن مع -fdump-ada-spec[-معتدل البنيه] أعلاه ، أنشئ مواصفات Ada كوحدات فرعية من
أصل وحدة.

-fdump-go-spec =ملف
بالنسبة لملفات الإدخال بأي لغة ، أنشئ إعلانات Go المقابلة بتنسيق ملف. هذا
يولد إعلانات Go "const" و "type" و "var" و "func" والتي قد تكون طريقة مفيدة
لبدء كتابة واجهة Go للرمز المكتوب بلغة أخرى.

@ملف
قراءة خيارات سطر الأوامر من ملف. يتم إدراج الخيارات المقروءة بدلاً من ملف
أصلي @ملف اختيار. إذا ملف غير موجود ، أو لا يمكن قراءته ، ثم الخيار
سيتم التعامل معها حرفيا ، ولن تتم إزالتها.

خيارات في ملف مفصولة بمسافة بيضاء. قد يتم تضمين حرف مسافة بيضاء
في خيار من خلال إحاطة الخيار بالكامل بعلامات اقتباس مفردة أو مزدوجة. أي
قد يتم تضمين الحرف (بما في ذلك الشرطة المائلة للخلف) عن طريق بادئة الحرف المراد أن يكون
مشمول بشرطة مائلة للخلف. ال ملف قد تحتوي نفسها على @ إضافيةملف والخيارات؛ أي
ستتم معالجة هذه الخيارات بشكل متكرر.

تجميع C + + البرامج
تستخدم ملفات المصدر C ++ بشكل تقليدي إحدى اللواحق .C, . سم مكعب, .CPP, .CPP, .c ++, .cp، أو
.cxx؛ غالبًا ما تستخدم ملفات رأس C ++ .ح ح, .hpp, .H، أو (لرمز القالب المشترك) .tcc، و
تستخدم ملفات C ++ المجهزة مسبقًا اللاحقة .ii. يتعرف GCC على الملفات التي تحمل هذه الأسماء و
يجمعها كبرامج C ++ حتى لو اتصلت بالمترجم بنفس طريقة الترجمة
برامج C (عادةً ما تكون بالاسم دول مجلس التعاون الخليجي).

ومع ذلك ، فإن استخدام دول مجلس التعاون الخليجي لا يضيف مكتبة C ++. ز ++ هو برنامج يستدعي GCC و
يحدد تلقائيًا الارتباط بمكتبة C ++. يعامل .c, .h و .i الملفات بتنسيق
ملفات المصدر C ++ بدلاً من ملفات المصدر C إلا إذا كان -x يستخدم. هذا البرنامج مفيد ايضا
عند التحويل البرمجي المسبق لملف رأس C بامتداد .h التمديد للاستخدام في مصنفات C ++. تشغيل
العديد من الأنظمة ، ز ++ يتم أيضًا تثبيت الاسم ج ++.

عندما تقوم بترجمة برامج C ++ ، يمكنك تحديد العديد من نفس خيارات سطر الأوامر التي
تستخدمه لتجميع البرامج بأي لغة ؛ أو خيارات سطر الأوامر ذات المعنى لـ C
واللغات ذات الصلة ؛ أو الخيارات ذات المعنى فقط لبرامج C ++.

الخيارات السيطرة C لهجة
تتحكم الخيارات التالية في لهجة C (أو اللغات المشتقة من C ، مثل C ++ ،
Objective-C و Objective-C ++) يقبلها المترجم:

-انسى
في الوضع C ، هذا يعادل -std = c90. في وضع C ++ ، يكون مكافئًا لـ
-std = c ++ 98.

يؤدي هذا إلى إيقاف تشغيل بعض ميزات GCC التي لا تتوافق مع ISO C90 (عندما
ترجمة كود C) ، أو من C ++ القياسي (عند ترجمة كود C ++) ، مثل "asm" و
الكلمات الأساسية "typeof" ووحدات الماكرو المحددة مسبقًا مثل "unix" و "vax" التي تحدد ملف
نوع النظام الذي تستخدمه. كما أنه يمكّن ISO غير المرغوب فيه ونادرًا ما يستخدم
ميزة الرسم البياني. بالنسبة لمترجم C ، فإنه يعطل التعرف على نمط C ++ //
التعليقات وكذلك الكلمة الأساسية "المضمنة".

الكلمات الرئيسية البديلة "__asm__" و "__مدد__" و "__inline__" و "__typeof__"
مواصلة العمل على الرغم من -انسى. لن ترغب في استخدامها في برنامج ISO C ،
بالطبع ، ولكن من المفيد وضعها في ملفات رأس قد يتم تضمينها في
مصنفات باستخدام -انسى. وحدات ماكرو بديلة محددة مسبقًا مثل "__unix__" و
تتوفر أيضًا "__vax__" ، مع أو بدون -انسى.

أفضل -انسى لا يتسبب الخيار في رفض البرامج التي لا تتبع ISO بدون مبرر. ل
أن، -بيدانتيك مطلوب بالإضافة إلى -انسى.

يتم تحديد الماكرو "__STRICT_ANSI__" مسبقًا عندما يكون ملف -انسى يستخدم الخيار. بعض الرأس
قد تلاحظ الملفات هذا الماكرو وتمتنع عن التصريح عن وظائف معينة أو تحديد
بعض وحدات الماكرو التي لا يتطلبها معيار ISO ؛ هذا لتجنب التدخل
مع أي برامج قد تستخدم هذه الأسماء لأشياء أخرى.

الوظائف التي يتم تضمينها عادةً ولكن لا تحتوي على دلالات محددة بواسطة ISO C (مثل
كـ "customa" و "ffs") ليست وظائف مضمنة عندما -انسى .

-std =
حدد معيار اللغة. هذا الخيار مدعوم حاليًا فقط عندما
ترجمة C أو C ++.

يمكن للمترجم أن يقبل عدة معايير أساسية ، مثل c90 or سي ++ 98، ولهجات جنو
من تلك المعايير ، مثل غنو 90 or gnu ++ 98. عندما يتم تحديد معيار أساسي ، فإن
يقبل المترجم كل البرامج التي تتبع هذا المعيار بالإضافة إلى تلك التي تستخدم امتدادات جنو
التي لا تتعارض معها. على سبيل المثال، -std = c90 إيقاف بعض ميزات دول مجلس التعاون الخليجي
غير المتوافقة مع ISO C90 ، مثل الكلمتين الأساسيتين "asm" و "typeof" ، ولكنها ليست كذلك
امتدادات GNU الأخرى التي ليس لها معنى في ISO C90 ، مثل حذف ملف
مصطلح متوسط ​​من تعبير "؟:". من ناحية أخرى ، عندما تكون لهجة جنو قياسية
محددًا ، يتم تمكين جميع الميزات التي يدعمها المترجم ، حتى عندما تكون
الميزات تغير معنى المعيار الأساسي. نتيجة لذلك ، بعض المطابقة الصارمة
قد يتم رفض البرامج. المعيار المعين يستخدم من قبل -بيدانتيك لتحديد
أي الميزات هي امتدادات جنو بالنظر إلى هذا الإصدار من المعيار. على سبيل المثال
-std = gnu90 -بيدانتيك يحذر من أسلوب C ++ // من التعليقات ، بينما -std = gnu99 -بيدانتيك
لا.

يجب توفير قيمة لهذا الخيار ؛ القيم الممكنة

c90
c89
iso9899: 1990
دعم جميع برامج ISO C90 (بعض امتدادات GNU التي تتعارض مع ISO C90
يتم تعطيل). مثل -انسى لرمز C.

iso9899: 199409
ISO C90 بصيغته المعدلة في التعديل 1.

c99
c9x
iso9899: 1999
iso9899: 199x
ISO C99. هذا المعيار مدعوم بشكل كامل ، وأخطاء modulo و
مشكلات النقطة العائمة (بشكل أساسي ولكن ليس بالكامل تتعلق بميزات C99 الاختيارية
من الملحق F و G). ارىhttp://gcc.gnu.org/c99status.html> للمزيد
معلومة. الأسماء c9x و iso9899: 199x مهملة.

c11
c1x
iso9899: 2011
ISO C11 ، مراجعة 2011 لمعيار ISO C. هذا المعيار هو إلى حد كبير
مدعوم بالكامل ، أخطاء modulo ، مشكلات النقطة العائمة (بشكل أساسي ولكن ليس بالكامل
المتعلقة بالميزات الاختيارية C11 من الملحقين F و G) والمرفقات الاختيارية K.
(واجهات فحص الحدود) و L (قابلية التحليل). الاسم c1x مهمل.

غنو 90
غنو 89
لهجة GNU الخاصة بـ ISO C90 (بما في ذلك بعض ميزات C99).

غنو 99
gnu9x
لهجة جنو ISO C99. الاسم gnu9x مهمل.

غنو 11
gnu1x
لهجة جنو ISO C11. هذا هو الإعداد الافتراضي لرمز C. الاسم gnu1x is
إهمال.

سي ++ 98
سي ++ 03
معيار ISO C ++ لعام 1998 بالإضافة إلى التصويب الفني لعام 2003 وبعض الإضافات
تقارير الخلل. مثل -انسى لرمز C ++.

gnu ++ 98
gnu ++ 03
لهجة جنو -std = c ++ 98. هذا هو الإعداد الافتراضي لرمز C ++.

سي ++ 11
سي ++ 0x
معيار ISO C ++ لعام 2011 بالإضافة إلى التعديلات. الاسم سي ++ 0x مهمل.

gnu ++ 11
gnu ++ 0x
لهجة جنو -std = c ++ 11. الاسم gnu ++ 0x مهمل.

سي ++ 14
c ++ 1y
معيار ISO C ++ لعام 2014 بالإضافة إلى التعديلات. الاسم c ++ 1y مهمل.

gnu ++ 14
gnu ++ 1y
لهجة جنو -std = c ++ 14. الاسم gnu ++ 1y مهمل.

سي ++ 1z
المراجعة التالية لمعيار ISO C ++ ، مخطط لها مبدئيًا لعام 2017. الدعم
تجريبية للغاية ، ومن المؤكد تقريبًا أنها ستتغير بطرق غير متوافقة في
الإصدارات المستقبلية.

gnu ++ 1z
لهجة جنو -std = c ++ 1z. الدعم تجريبي للغاية ، وسوف يكاد يكون
بالتأكيد تتغير بطرق غير متوافقة في الإصدارات المستقبلية.

-fgnu89- مضمنة
الخيار -fgnu89- مضمنة يطلب من مجلس التعاون الخليجي استخدام دلالات غنو التقليدية لكلمة "مضمنة"
يعمل عندما يكون في وضع C99.

يكافئ استخدام هذا الخيار تقريبًا إضافة سمة دالة "gnu_inline"
لجميع الوظائف المضمنة.

الخيار -fno- gnu89- مضمنة يخبر مجلس التعاون الخليجي صراحةً باستخدام دلالات C99 لـ
"مضمنة" عندما تكون في وضع C99 أو gnu99 (أي أنها تحدد السلوك الافتراضي). هذه
الخيار غير مدعوم في -std = c90 or -std = gnu90 واسطة.

يمكن استخدام وحدات الماكرو "__GNUC_GNU_INLINE__" و "__GNUC_STDC_INLINE__"
للتحقق من الدلالات السارية للوظائف "المضمنة".

-معلومات اسم الملف
الإخراج إلى التصريحات النموذجية لاسم الملف المحدد لجميع الوظائف المعلنة و / أو
المحددة في وحدة الترجمة ، بما في ذلك تلك الموجودة في ملفات الرأس. هذا الخيار هو
تم تجاهله بصمت في أي لغة أخرى غير C.

بالإضافة إلى الإعلانات ، يشير الملف ، في التعليقات ، إلى أصل كل إعلان
(ملف وسطر مصدر) ، سواء كان الإعلان ضمنيًا أم نموذجيًا أم
غير نمطي (I, N للجديد أو O لكبار السن ، على التوالي ، في الحرف الأول بعد
رقم السطر والنقطتين) ، وما إذا كان جاء من إعلان أو تعريف
(C or F، على التوالي ، في الحرف التالي). في حالة الوظيفة
التعاريف ، قائمة الحجج على غرار K & R متبوعة بإعلاناتهم هي أيضًا
المقدمة ، داخل التعليقات ، بعد الإعلان.

-السقط- الدوال- المتغيرة- المتغيرة
قبول الدوال المتغيرة بدون معلمات مسماة.

على الرغم من أنه من الممكن تحديد مثل هذه الوظيفة ، إلا أنها ليست مفيدة للغاية كما هي
لا يمكن قراءة الحجج. هذا مدعوم فقط لـ C لأن هذا البناء هو
يسمح بها C ++.

-fno- asm
لا تتعرف على "asm" أو "inline" أو "typeof" ككلمة رئيسية ، بحيث يمكن لهذا الرمز استخدامها
الكلمات كمعرفات. يمكنك استخدام الكلمات الرئيسية "__asm__" و "__inline__" و
"__typeof__" بدلاً من ذلك. -انسى يدل -fno- asm.

في C ++ ، يؤثر رمز التبديل هذا فقط على الكلمة الأساسية "typeof" ، نظرًا لأن "asm" و "inline" هما
الكلمات الرئيسية القياسية. قد ترغب في استخدام كلمات مفتاحية -fno-gnu بدلاً من ذلك ، والذي يحتوي على
نفس التأثير. في وضع C99 (-std = c99 or -std = gnu99) ، فإن هذا التبديل يؤثر فقط على
الكلمات الرئيسية "asm" و "typeof" ، نظرًا لأن "inline" هي كلمة رئيسية قياسية في ISO C99.

-fno- بنيت
-fno- المدمج-وظيفة
لا تتعرف على الوظائف المضمنة التي لا تبدأ بها __مدمج_ كبادئة.

عادةً ما يُنشئ مجلس التعاون الخليجي رمزًا خاصًا للتعامل مع وظائف مضمنة معينة بشكل أكبر
بكفاءة على سبيل المثال ، قد تصبح استدعاءات "التخصيص" تعليمات فردية
ضبط المكدس مباشرة ، وقد تصبح المكالمات إلى "memcpy" حلقات نسخ مضمنة. ال
غالبًا ما يكون الرمز الناتج أصغر وأسرع ، ولكن نظرًا لأن الوظيفة لا تستدعي
لفترة أطول على هذا النحو ، لا يمكنك تعيين نقطة توقف على تلك المكالمات ، ولا يمكنك تغييرها
سلوك الوظائف من خلال الارتباط بمكتبة مختلفة. بالإضافة إلى ذلك ، متى
يتم التعرف على وظيفة كدالة مضمنة ، قد يستخدم GCC معلومات حول ذلك
تعمل على التحذير من المشكلات المتعلقة باستدعاءات تلك الوظيفة ، أو لتوليد المزيد
رمز فعال ، حتى لو كان الرمز الناتج لا يزال يحتوي على استدعاءات لهذه الوظيفة. ل
على سبيل المثال ، يتم إعطاء التحذيرات باستخدام -Wformat للمكالمات السيئة إلى "printf" عندما تكون "printf"
المدمج في ومن المعروف أن "strlen" لا يعدل الذاكرة العالمية.

مع ال -fno- المدمج-وظيفة خيار فقط وظيفة مدمجة وظيفة معطل.
وظيفة يجب ألا تبدأ بـ __مدمج_. إذا تم تسمية وظيفة غير مضمنة
في هذا الإصدار من GCC ، تم تجاهل هذا الخيار. لا يوجد مقابل
-بويلتين-وظيفة اختيار؛ إذا كنت ترغب في تمكين الوظائف المدمجة بشكل انتقائي عندما
استخدام -fno- بنيت or -تقرير، يمكنك تحديد وحدات الماكرو مثل:

#define abs (n) __builtin_abs ((n))
#define strcpy (d، s) __builtin_strcpy ((d)، (s))

استضافت
أكد أن التجميع يستهدف بيئة مستضافة. هذا يعني -بولينتين. A
البيئة المستضافة هي البيئة التي تتوفر فيها المكتبة القياسية بأكملها ، وفي
التي "main" لها نوع إرجاع "int". الأمثلة هي كل شيء تقريبًا باستثناء ملف
نواة. هذا يعادل - قائمة بذاتها.

-تقرير
أكد أن التجميع يستهدف بيئة قائمة بذاتها. هذا يعني
-fno- بنيت. البيئة القائمة بذاتها هي البيئة التي لا يجوز للمكتبة القياسية فيها
موجودة ، وقد لا يكون بدء تشغيل البرنامج بالضرورة في "main". المثال الأكثر وضوحا
هو نواة نظام التشغيل. هذا يعادل -fno- استضافت.

-fopenacc
تفعيل معالجة توجيهات OpenACC "#pragma acc" في C / C ++ و "! $ acc" في Fortran.
متى -fopenacc إذا تم تحديده ، يقوم المترجم بإنشاء تعليمات برمجية متسارعة وفقًا لـ
واجهة برمجة تطبيقات OpenACC v2.0http://www.openacc.org/>. هذا الخيار
يدل -الخطأ، وبالتالي فهو مدعوم فقط على الأهداف التي تحظى بدعم
-الخطأ.

لاحظ أن هذه ميزة تجريبية وغير مكتملة وقابلة للتغيير في المستقبل
إصدارات دول مجلس التعاون الخليجي. ارىhttps://gcc.gnu.org/wiki/OpenACC> لمزيد من المعلومات.

-fopenmp
تفعيل معالجة توجيهات OpenMP "#pragma omp" في C / C ++ و "! $ omp" في Fortran.
متى -fopenmp إذا تم تحديده ، يقوم المترجم بإنشاء رمز موازي وفقًا لـ
واجهة برنامج تطبيق OpenMP v4.0http://www.openmp.org/>. هذا الخيار
يدل -الخطأ، وبالتالي فهو مدعوم فقط على الأهداف التي تحظى بدعم
-الخطأ. -fopenmp يدل -فوبينب سيمد.

-فوبينب سيمد
تفعيل معالجة توجيهات SIMD الخاصة بـ OpenMP باستخدام "#pragma omp" في C / C ++ و "! $ omp" في
فورتران. يتم تجاهل توجيهات OpenMP الأخرى.

-فسيلك بلس
تفعيل استخدام ميزات ملحق لغة Cilk Plus لـ C / C ++. عندما يكون الخيار
-فسيلك بلس تم تحديده ، قم بتمكين استخدام ميزات ملحق لغة Cilk Plus
لـ C / C ++. يتبع التطبيق الحالي الإصدار 1.2 من ABI. هذا
ميزة تجريبية مكتملة جزئيًا فقط ، وقد تتغير واجهتها
في الإصدارات المستقبلية من دول مجلس التعاون الخليجي مع تغير المواصفات الرسمية. حاليا ، كل شيء
الميزات ولكن تم تنفيذ "_Cilk_for".

-فنو- ​​tm
عندما يكون الخيار -فنو- ​​tm إذا تم تحديده ، يقوم المترجم بإنشاء تعليمات برمجية لنظام التشغيل Linux
متغير من مستند مواصفات ABI لذاكرة المعاملات الحالية من Intel (مراجعة
1.1 ، 6 مايو 2009). هذه ميزة تجريبية قد تتغير واجهتها في
الإصدارات المستقبلية من دول مجلس التعاون الخليجي ، مع تغير المواصفات الرسمية. يرجى ملاحظة أن لا
يتم دعم جميع البنيات لهذه الميزة.

لمزيد من المعلومات حول دعم دول مجلس التعاون الخليجي لذاكرة المعاملات ،

لاحظ أن ميزة ذاكرة المعاملات غير مدعومة مع استثناءات عدم الاتصال
(- عدم الاستثناءات).

-fms- ملحقات
اقبل بعض التركيبات غير القياسية المستخدمة في ملفات رأس Microsoft.

في كود C ++ ، يسمح هذا لأسماء الأعضاء في الهياكل بأن تكون مشابهة للأنواع السابقة
إعلانات.

typedef int UOW ؛
بناء ABC {
UOW UOW
};

يتم قبول بعض حالات الحقول غير المسماة في الهياكل والنقابات فقط مع هذا
الخيار.

لاحظ أن هذا الخيار مغلق لجميع الأهداف باستثناء أهداف x86 باستخدام ms-abi.

-fplan9- ملحقات
اقبل بعض التركيبات غير القياسية المستخدمة في كود الخطة 9.

وهذا يتيح -fms- ملحقات، يسمح بتمرير المؤشرات إلى الهياكل مع مجهول
الحقول للوظائف التي تتوقع مؤشرات لعناصر من نوع الحقل ، و
تصاريح تشير إلى الحقول المجهولة المعلنة باستخدام محرف. هذا فقط
مدعوم لـ C وليس C ++.

-الخط
دعم الرسوم البيانية ISO C. ال -انسى الخيار (و -std خيارات صارمة ISO C
المطابقة) يعني -الخط.

-تقليدي
-التقليدية- CPP
في السابق ، تسببت هذه الخيارات في محاولة GCC لمحاكاة مترجم C المعياري مسبقًا.
هم الآن مدعومون فقط بامتداد -E تحول. يستمر المعالج المسبق في تقديم الدعم
وضع قياسي مسبق. راجع دليل GNU CPP للحصول على التفاصيل.

- عدم تطابق
اسمح بالتعبيرات الشرطية بأنواع غير متطابقة في الوسيطتين الثانية والثالثة.
قيمة مثل هذا التعبير باطلة. هذا الخيار غير مدعوم لـ C ++.

-بلاكس-ناقل-التحويلات
السماح بالتحويلات الضمنية بين المتجهات مع اختلاف أعداد العناصر و / أو
أنواع العناصر غير المتوافقة. لا ينبغي استخدام هذا الخيار للرمز الجديد.

-ممتعة-شار
اسمح للنوع "char" أن يكون بدون إشارة ، مثل "char غير الموقعة".

كل نوع من الأجهزة لديه الافتراضي لما يجب أن يكون "حرف". إما أنها مثل
"حرف غير موقّع" بشكل افتراضي أو مثل "حرف موقّع" بشكل افتراضي.

من الناحية المثالية ، يجب أن يستخدم البرنامج المحمول "حرف موقّع" أو "حرف غير موقّع" عند استخدامه
يعتمد على توقيع الكائن. لكن تمت كتابة العديد من البرامج للاستخدام
"char" عادي وتوقع أن يتم التوقيع عليه ، أو توقع أن يكون بدون توقيع ، اعتمادًا على
الآلات التي كتبوا من أجلها. يتيح لك هذا الخيار وعكسه إنشاء ملف
برنامج العمل مع الافتراضي المعاكس.

دائمًا ما يكون النوع "char" نوعًا مميزًا عن كل من "الأحرف الموقعة" أو "غير الموقعة
char "، على الرغم من أن سلوكه يشبه دائمًا أحد هذين السلوكين.

توقيع شار
اسمح للنوع "char" بالتوقيع ، مثل "char".

لاحظ أن هذا يعادل -fno- بدون توقيع- شار، وهو الشكل السلبي لـ
-ممتعة-شار. وبالمثل ، فإن الخيار -fno- موقعة- شار ما يعادل
-ممتعة-شار.

-موقع-bitfields
-ممتاز-bitfields
-fno- موقعة- bitfields
-fno- غير موقعة- bitfields
تتحكم هذه الخيارات في ما إذا كان حقل البت موقعًا أم غير موقع ، عند الإعلان
لا تستخدم كلمة "موقَّعة" أو "غير موقعة". بشكل افتراضي ، يتم توقيع حقل البت هذا ،
لأن هذا متسق: أنواع الأعداد الصحيحة الأساسية مثل "int" هي أنواع موقعة.

الخيارات السيطرة C + + لهجة
يصف هذا القسم خيارات سطر الأوامر ذات المعنى فقط لبرامج C ++.
يمكنك أيضًا استخدام معظم خيارات مترجم جنو بغض النظر عن لغة برنامجك
في. على سبيل المثال ، يمكنك تجميع ملف firstClass.C مثله:

g ++ -g -frepo -O -c firstClass.C

في هذا المثال فقط -frepo هو خيار مخصص فقط لبرامج C ++ ؛ يمكنك استعمال ال
خيارات أخرى بأي لغة يدعمها مجلس التعاون الخليجي.

فيما يلي قائمة بالخيارات المتوفرة فقط لترجمة برامج C ++:

-fabi- النسخة =n
استخدم الإصدار n من C ++ ABI. الافتراضي هو الإصدار 0.

يشير الإصدار 0 إلى الإصدار الأكثر توافقًا مع مواصفات C ++ ABI.
لذلك ، سيتغير ABI الذي تم الحصول عليه باستخدام الإصدار 0 في إصدارات مختلفة من 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 / متقلبة في أنواع مؤشرات الوظائف ، ونوع الانحراف العادي ، واستخدام a
وظيفة المعلمة في إعلان معلمة أخرى.

الإصدار 6 ، الذي ظهر لأول مرة في G ++ 4.7 ، يصحح سلوك الترويج لـ C ++ 11
تعدادات النطاق وتعديل حزم وسائط النموذج ، const / static_cast ، بادئة ++
و - ، ودالة نطاق الفئة المستخدمة كوسيطة قالب.

الإصدار 7 ، الذي ظهر لأول مرة في G ++ 4.8 ، يتعامل مع nullptr_t كنوع مضمن
ويصحح تشويه lambdas في نطاق الوسيطة الافتراضي.

الإصدار 8 ، الذي ظهر لأول مرة في G ++ 4.9 ، يصحح سلوك الاستبدال لـ
أنواع الوظائف مع مؤهلات الوظيفة السيرة الذاتية.

انظر أيضا -وابي.

-fabi- التوافق- الإصدار =n
بالنسبة للأهداف التي تدعم الأسماء المستعارة القوية ، يعمل G ++ حول تغيير التغييرات من خلال إنشاء ملفات
اسم مستعار مع اسم مشوه صحيح عند تحديد رمز غير صحيح
اسم مشوه. يحدد رمز التبديل هذا إصدار ABI الذي سيتم استخدامه للاسم المستعار.

مع -fabi- النسخة = 0 (الافتراضي) ، هذا الإعداد الافتراضي هو 2. إذا كان إصدار ABI آخر هو
تم تحديده بشكل صريح ، ويتم تعيين هذا الإعداد الافتراضي على 0.

تم تعيين إصدار التوافق أيضًا بواسطة -وابي =n.

-fno- التحكم في الوصول
قم بإيقاف تشغيل جميع عمليات فحص الوصول. يعد هذا المفتاح مفيدًا بشكل أساسي للعمل على حل الأخطاء في ملفات
رمز التحكم في الوصول.

-fcheck- جديد
تحقق من أن المؤشر الذي تم إرجاعه بواسطة "عامل التشغيل الجديد" ليس فارغًا قبل محاولة ذلك
تعديل التخزين المخصص. عادة ما يكون هذا الفحص غير ضروري لأن لغة C ++
المعيار يحدد أن "عامل التشغيل الجديد" لا يعرض سوى 0 إذا تم الإعلان عنه "رمي ()" ، في
في هذه الحالة ، يتحقق المترجم دائمًا من القيمة المعادة حتى بدون هذا الخيار. في
جميع الحالات الأخرى ، عندما يكون لـ "عامل التشغيل الجديد" مواصفات استثناء غير فارغة ، الذاكرة
تتم الإشارة إلى الإرهاق بإلقاء "الأمراض المنقولة جنسياً :: bad_alloc". أنظر أيضا جديد (nothrow).

-fconstexpr- العمق =n
عيّن الحد الأقصى لعمق التقييم المتداخل لوظائف constexpr C ++ 11 إلى n. حد
هناك حاجة لاكتشاف العودية التي لا نهاية لها أثناء تقييم التعبير المستمر. ال
الحد الأدنى المحدد بالمعيار هو 512.

-fduce-init-list
تمكين خصم معلمة نوع القالب مثل "std :: initializer_list" من قوس-
قائمة المُهيئ المرفقة ، أي

نموذج إعادة توجيه تلقائي (T t) -> رفض النوع (realfn (t))
{
عودة realfn (t) ؛
}

باطل و ()
{
إلى الأمام ({1,2،XNUMX}) ؛ // دعوة إلى الأمام >
}

تم تنفيذ هذا الخصم كامتداد محتمل للاقتراح الأصلي
دلالات لمعيار C ++ 11 ، لكنها لم تكن جزءًا من المعيار النهائي ، لذلك فهي كذلك
معطل بشكل افتراضي. تم إهمال هذا الخيار ، وقد تتم إزالته في المستقبل
نسخة من G ++.

-حقن صديق
قم بإدخال وظائف الصديق في مساحة الاسم المرفقة ، بحيث تكون مرئية في الخارج
نطاق الفئة التي تم الإعلان عنها فيها. تم توثيق وظائف الأصدقاء
للعمل بهذه الطريقة في الدليل المرجعي القديم C ++ المشروح. ومع ذلك ، في ISO C ++ a
لا يمكن العثور على وظيفة الصديق التي لم يتم التصريح عنها في نطاق مرفق إلا باستخدام
البحث المعتمد على الحجة. دول مجلس التعاون الخليجي الافتراضية للسلوك القياسي.

هذا الخيار مخصص للتوافق ، ويمكن إزالته في إصدار مستقبلي من G ++.

-fno- elide- صانعي
يسمح معيار C ++ للتنفيذ بحذف إنشاء مؤقت فقط
تستخدم لتهيئة كائن آخر من نفس النوع. تحديد هذا الخيار تعطيل
هذا التحسين ، ويجبر G ++ على استدعاء مُنشئ النسخ في جميع الحالات.

-fno- فرض- إيه- المواصفات
لا تقم بإنشاء تعليمات برمجية للتحقق من عدم وجود انتهاك لمواصفات الاستثناءات في وقت التشغيل.
ينتهك هذا الخيار معيار C ++ ، ولكنه قد يكون مفيدًا لتقليل حجم الكود بتنسيق
يبني الإنتاج ، مثل تعريف "NDEBUG". هذا لا يعطي رمز المستخدم
الإذن بطرح استثناءات مخالفة لمواصفات الاستثناء ؛ ال
لا يزال برنامج التحويل البرمجي يحسن بناءً على المواصفات ، لذا فإن طرح ملف
ينتج عن الاستثناء سلوك غير محدد في وقت التشغيل.

-fextern-tls-init
-fno-extern-tls-init
تسمح معايير C ++ 11 و OpenMP للمتغيرات "thread_local" و "threadprivate" بـ
لديك تهيئة ديناميكية (وقت التشغيل). لدعم هذا ، أي استخدام لمثل هذا المتغير
يمر عبر وظيفة المجمع التي تقوم بأي تهيئة ضرورية. عندما
استخدام وتعريف المتغير في نفس وحدة الترجمة ، يمكن لهذا الحمل
يتم تحسينها بعيدًا ، ولكن عندما يكون الاستخدام في وحدة ترجمة مختلفة ، فهناك
حمل كبير حتى لو كان المتغير لا يحتاج فعليًا إلى ديناميكية
التهيئة. إذا تمكن المبرمج من التأكد من عدم استخدام المتغير في
يحتاج تعريف TU إلى بدء التهيئة الديناميكية (إما لأن المتغير هو
مهيأ بشكل ثابت ، أو سيتم تنفيذ استخدام المتغير في تعريف TU
قبل أي استخدامات في TU آخر) ، يمكنهم تجنب هذا الحمل الزائد بامتداد
-fno-extern-tls-init الخيار.

بالنسبة للأهداف التي تدعم الأسماء المستعارة للرموز ، يكون الإعداد الافتراضي هو -fextern-tls-init. على الأهداف
التي لا تدعم الأسماء المستعارة للرموز ، الافتراضي هو -fno-extern-tls-init.

-تقديم النطاق
-fno- للنطاق
If -تقديم النطاق يتم تحديد نطاق المتغيرات المعلنة في أ لبيان الحرف الأول
يقتصر على حلقة "for" نفسها ، كما هو محدد بواسطة معيار C ++. لو
-fno- للنطاق يتم تحديد نطاق المتغيرات المعلنة في أ لبيان الحرف الأول
يمتد إلى نهاية النطاق المرفق ، كما كان الحال في الإصدارات القديمة من G ++ و
تطبيقات أخرى (تقليدية) لـ C ++.

إذا لم يتم إعطاء أي علم ، فإن الافتراضي هو اتباع المعيار ، ولكن للسماح والعطاء
تحذير من التعليمات البرمجية ذات النمط القديم التي قد تكون غير صالحة أو مختلفة
السلوك.

كلمات مفتاحية -fno-gnu
لا تتعرف على "typeof" ككلمة رئيسية ، بحيث يمكن لهذا الرمز استخدام هذه الكلمة كملف
المعرف. يمكنك استخدام الكلمة الأساسية "__typeof__" بدلاً من ذلك. -انسى يدل
كلمات مفتاحية -fno-gnu.

- قوالب - ضمنية
لا ترسل أبدًا تعليمات برمجية للقوالب غير المضمنة التي يتم إنشاء مثيل لها ضمنيًا (على سبيل المثال بواسطة
استعمال)؛ ينبعث رمز فقط من أجل إنشاء مثيل صريح.

-fno- ضمني-المضمنة-القوالب
لا ترسل تعليمات برمجية للتشكيلات الضمنية للقوالب المضمنة أيضًا. الافتراضي
هو التعامل مع الأسطر بشكل مختلف بحيث يتم تجميعها مع وبدون الحاجة إلى التحسين
نفس مجموعة عمليات إنشاء مثيل صريحة.

-fno- تنفيذ- المضمنة
لتوفير مساحة ، لا ترسل نسخًا خارج الخط للوظائف المضمنة التي يتحكم فيها
"تطبيق #pragma". هذا يسبب أخطاء رابط إذا لم تكن هذه الوظائف
مضمنة في كل مكان يتم استدعاؤها.

-fms- ملحقات
قم بتعطيل تحذيرات Wpedantic حول التركيبات المستخدمة في MFC ، مثل int الضمني و
الحصول على مؤشر لوظيفة العضو عبر بناء جملة غير قياسي.

-fno- nonansi- مبني
قم بتعطيل الإعلانات المضمنة للوظائف التي لم يتم تفويضها بواسطة ANSI / ISO C. هذه
تشمل "ffs" و "customa" و "_exit" و "index" و "bzero" و "conjf" وغير ذلك من
الوظائف.

-fnothrow-opt
تعامل مع مواصفة استثناء "رمي ()" كما لو كانت مواصفة "noexcept" لـ
تقليل أو إزالة حجم النص الزائد بالنسبة إلى وظيفة دون استثناء
تخصيص. إذا كانت الوظيفة تحتوي على متغيرات محلية من الأنواع غير التافهة
المدمرات ، فإن مواصفات الاستثناء تجعل الوظيفة أصغر حجمًا لأن
يمكن تحسين عمليات تنظيف EH لتلك المتغيرات بعيدًا. التأثير الدلالي
أن استثناء تم طرحه من دالة ذات مواصفات استثناء كهذه
يؤدي إلى استدعاء "إنهاء" بدلاً من "غير متوقع".

- أسماء المشغلين
لا تتعامل مع الكلمات الأساسية لاسم عامل التشغيل "و" أو "bitand" أو "bitor" أو "compl" أو "not" أو "
و "xor" كمرادفات ككلمات رئيسية.

-fno- اختياري- diags
قم بتعطيل التشخيصات التي يقول المعيار أن المترجم لا يحتاج إلى إصدارها.
حاليًا ، التشخيص الوحيد الذي أصدرته G ++ هو التشخيص الذي يحمل الاسم
معاني متعددة داخل الفصل.

-فاشية
قم بالرجوع إلى إصدار أقدم من بعض التشخيصات حول التعليمات البرمجية غير المتوافقة من الأخطاء إلى التحذيرات. هكذا،
استخدام -فاشية يسمح بترجمة بعض التعليمات البرمجية غير المطابقة.

-fno- قوالب-جميلة
عندما تشير رسالة خطأ إلى تخصص قالب دالة ، المترجم
يطبع عادةً توقيع النموذج متبوعًا بوسائط النموذج و
أي نوع من أنواع الحروف أو أسماء الأنواع في التوقيع (على سبيل المثال ، "void f (T) [with T = int]" بدلاً من ذلك
من "void f (int)") بحيث يكون من الواضح أي نموذج متضمن. عندما يكون هناك خطأ
تشير الرسالة إلى تخصص في قالب فئة ، يحذف المترجم أيًا منها
وسيطات النموذج التي تتطابق مع وسيطات القالب الافتراضية لهذا القالب. لو
يؤدي أي من هذه السلوكيات إلى صعوبة فهم رسالة الخطأ بدلاً من فهمها
أسهل ، يمكنك استخدامها -fno- قوالب-جميلة لتعطيلها.

-frepo
تفعيل إنشاء مثيل تلقائي للقالب في وقت الارتباط. هذا الخيار يعني أيضا
- قوالب - ضمنية.

-فنو- ​​rtti
تعطيل توليد المعلومات حول كل فئة مع وظائف افتراضية للاستخدام من قبل
ميزات تحديد نوع وقت التشغيل C ++ ("dynamic_cast" و "typeid"). اذا أنت
لا تستخدم تلك الأجزاء من اللغة ، يمكنك توفير بعض المساحة باستخدام هذه العلامة.
لاحظ أن معالجة الاستثناءات تستخدم نفس المعلومات ، لكن G ++ تنشئها كـ
بحاجة. لا يزال من الممكن استخدام عامل التشغيل "dynamic_cast" للطبقات التي لا تتطلب ذلك
معلومات نوع وقت التشغيل ، أي يلقي إلى "باطل *" أو إلى فئات أساسية لا لبس فيها.

-إلغاء تخصيص
تمكين الإعلانات العمومية المضمنة

حذف عامل باطل (void *، std :: size_t) noexcept؛
عامل باطل حذف [] (void *، std :: size_t) noexcept؛

كما تم تقديمه في C ++ 14. هذا مفيد لإلغاء تخصيص الاستبدال المحدد من قبل المستخدم
الوظائف التي ، على سبيل المثال ، تستخدم حجم الكائن لجعل إلغاء التخصيص أسرع.
تم التمكين افتراضيًا ضمن -std = c ++ 14 و ما فوق. العلم -مقاس-إلغاء التخصيص يحذر
حول الأماكن التي قد ترغب في إضافة تعريف.

-fstats
انبعث إحصاءات حول معالجة الواجهة الأمامية في نهاية التجميع. هذه
المعلومات مفيدة بشكل عام فقط لفريق تطوير G ++.

- التعدادات الصارمة
السماح للمترجم بالتحسين باستخدام افتراض أن قيمة من النوع المعدود
يمكن أن تكون واحدة فقط من قيم التعداد (كما هو محدد في معيار C ++ ؛
بشكل أساسي ، قيمة يمكن تمثيلها بالحد الأدنى من وحدات البت المطلوبة
تمثل جميع العدادين). قد لا يكون هذا الافتراض صحيحًا إذا كان البرنامج يستخدم
cast لتحويل قيمة عدد صحيح عشوائي إلى النوع الذي تم تعداده.

-ftemplate-backtrace-limit =n
قم بتعيين الحد الأقصى لعدد ملاحظات إنشاء النموذج لتحذير أو خطأ واحد
إلى n. القيمة الافتراضية هي 10.

- عمق القالب =n
قم بتعيين الحد الأقصى لعمق إنشاء مثيل لفئات القوالب إلى n. حد على
هناك حاجة إلى عمق إنشاء مثيل للقالب لاكتشاف التكرار اللانهائي أثناء النموذج
فئة مثيل. يجب ألا تعتمد البرامج المتوافقة مع ANSI / ISO C ++ على حد أقصى
عمق أكبر من 17 (تم تغييره إلى 1024 في C ++ 11). القيمة الافتراضية هي 900 ، مثل
يمكن أن ينفد المترجم من مساحة المكدس قبل أن يصل إلى 1024 في بعض المواقف.

-fno-Threadafe-statics
لا تصدر الكود الإضافي لاستخدام الإجراءات المحددة في C ++ ABI للخيط-
التهيئة الآمنة للإحصاءات المحلية. يمكنك استخدام هذا الخيار لتقليل حجم الكود
قليلاً في الكود الذي لا يحتاج إلى أن يكون آمنًا.

-الفتيل- cxa-atexit
تسجيل المدمرات للكائنات ذات مدة التخزين الثابتة باستخدام "__cxa_atexit"
تعمل بدلاً من وظيفة "atexit". هذا الخيار مطلوب بالكامل
التعامل مع المعايير المتوافقة مع المدمرات الساكنة ، ولكن لا يعمل إلا إذا كانت مكتبة C.
يدعم "__cxa_atexit".

-fno-use-cxa- الحصول على استثناء- ptr
لا تستخدم روتين وقت التشغيل "__cxa_get_exception_ptr". هذه تسبب
"std :: uncaught_exception" غير صحيح ، لكنه ضروري إذا كان روتين وقت التشغيل
غير متاح.

-رؤية-مضمنة-مخفية
يعلن رمز التبديل هذا أن المستخدم لا يحاول مقارنة المؤشرات بمضمنة
وظائف أو طرق يتم فيها أخذ عناوين الوظيفتين بشكل مختلف
الأشياء المشتركة.

تأثير ذلك هو أن دول مجلس التعاون الخليجي قد ، بشكل فعال ، علامة على الأساليب المضمنة مع
"__ سمة__ ((رؤية (" مخفية ")))" بحيث لا تظهر في التصدير
جدول DSO ولا تتطلب مراوغ PLT عند استخدامها داخل DSO.
تمكين هذا الخيار يمكن أن يكون له تأثير كبير على أوقات التحميل والربط لـ DSO كما هو
يقلل بشكل كبير من حجم جدول التصدير الديناميكي عندما تصبح المكتبة ثقيلة
استخدام القوالب.

سلوك رمز التبديل هذا ليس تمامًا مثل تعليم الطرق على أنها مخفية
بشكل مباشر ، لأنه لا يؤثر على المتغيرات الثابتة المحلية للدالة أو السبب
المترجم لاستنتاج أن الوظيفة معرّفة في كائن مشترك واحد فقط.

يمكنك وضع علامة على طريقة على أنها تتمتع برؤية واضحة لإلغاء تأثير
التبديل لتلك الطريقة. على سبيل المثال ، إذا كنت تريد مقارنة المؤشرات بملف
طريقة مضمنة معينة ، يمكنك وضع علامة عليها على أنها ذات رؤية افتراضية. بمناسبة ال
إن إحاطة الفصل برؤية واضحة ليس له أي تأثير.

الأساليب المضمنة التي تم إنشاء مثيل لها بشكل صريح لا تتأثر بهذا الخيار كربطها
وإلا عبر حدود مكتبة مشتركة.

-الرؤية- ms- التوافق
تحاول هذه العلامة استخدام إعدادات الرؤية لإنشاء نموذج ارتباط C ++ الخاص بـ GCC
متوافق مع Microsoft Visual Studio.

يقوم العلم بإجراء هذه التغييرات على نموذج الربط لدول مجلس التعاون الخليجي:

1. يقوم بتعيين الرؤية الافتراضية على "مخفي" ، مثل -رؤية = مخفي.

2. لا يتم إخفاء الأنواع ، ولكن ليس أعضائها ، بشكل افتراضي.

3. تم تخفيف قاعدة التعريف الواحد للأنواع بدون رؤية واضحة
المواصفات التي تم تحديدها في أكثر من كائن مشترك: تلك التعريفات
مسموح بها إذا كان مسموحًا بها في حالة عدم استخدام هذا الخيار.

في الكود الجديد من الأفضل استخدام -رؤية = مخفي وتصدير تلك الفئات التي
يُقصد به أن يكون مرئيًا من الخارج. لسوء الحظ ، من الممكن أن تعتمد التعليمات البرمجية ،
ربما عن طريق الخطأ ، على سلوك Visual Studio.

من بين عواقب هذه التغييرات أن أعضاء البيانات الثابتة من نفس النوع
بنفس الاسم ولكن يتم تعريفها في كائنات مشتركة مختلفة مختلفة ، لذا فهي متغيرة
واحد لا يغير الآخر. وهذه المؤشرات لأعضاء الوظيفة المحددين في
قد لا تقارن الكائنات المشتركة المختلفة بالتساوي. عندما يتم إعطاء هذه الراية ، فإنها تكون أ
انتهاك ODR لتعريف الأنواع التي تحمل الاسم نفسه بشكل مختلف.

-fvtable- تحقق =[الأمراض المنقولة جنسيا|بريينت|لا شيء]
قم بتشغيل (أو إيقاف تشغيله ، إذا كنت تستخدم -fvtable-check = لا شيء) ميزة الأمان التي تتحقق في
وقت التشغيل ، لكل مكالمة افتراضية ، أن مؤشر vtable الذي يتم من خلاله المكالمة
إجراء صالح لنوع الكائن ، ولم يتم إتلافه أو الكتابة فوقه.
إذا تم اكتشاف مؤشر vtable غير صالح في وقت التشغيل ، فسيتم الإبلاغ عن خطأ و
توقف تنفيذ البرنامج على الفور.

يؤدي هذا الخيار إلى إنشاء هياكل بيانات وقت التشغيل عند بدء تشغيل البرنامج ، وهي
تستخدم للتحقق من مؤشرات vtable. الخيارات الأمراض المنقولة جنسيا و بريينت سيطر ال
توقيت بناء هياكل البيانات هذه. في كلتا الحالتين تكون هياكل البيانات
بنيت قبل أن يصل التنفيذ إلى "الرئيسي". استخدام -fvtable- تحقق = الأمراض المنقولة جنسياً يسبب البيانات
الهياكل التي سيتم بناؤها بعد تحميل المكتبات المشتركة وتهيئتها.
-fvtable-check = preinit يتسبب في بنائها قبل إنشاء المكتبات المشتركة
تحميلها وتهيئتها.

إذا ظهر هذا الخيار عدة مرات في سطر الأوامر بقيم مختلفة
محدد، لا شيء يأخذ أولوية قصوى على كليهما الأمراض المنقولة جنسيا و بريينت; بريينت يأخذ
الأولوية على الأمراض المنقولة جنسيا.

-fvtv- التصحيح
عندما تستخدم بالتزامن مع -fvtable- تحقق = الأمراض المنقولة جنسياً or -fvtable-check = preinitاسباب
إصدارات تصحيح وظائف وقت التشغيل لميزة التحقق vtable لتكون
مسمى. تؤدي هذه العلامة أيضًا إلى قيام المحول البرمجي بتسجيل معلومات حول أي جدول
المؤشرات التي يعثر عليها لكل فئة. هذه المعلومات مكتوبة في ملف اسمه
vtv_set_ptr_data.log في الدليل المسمى بمتغير البيئة VTV_LOGS_DIR
إذا تم تحديد ذلك أو دليل العمل الحالي خلاف ذلك.

ملاحظة: هذه الميزة يلحق البيانات إلى ملف السجل. إذا كنت تريد ملف سجل جديد ، كن
تأكد من حذف أي واحد موجود.

التهم -fvtv
هذه علامة تصحيح. عندما تستخدم بالتزامن مع -fvtable- تحقق = الأمراض المنقولة جنسياً or
-fvtable-check = preinit، يؤدي هذا إلى قيام المترجم بتتبع العدد الإجمالي لـ
المكالمات الافتراضية التي تواجهها وعدد عمليات التحقق التي تُدخلها. كذلك
تحسب عدد الاستدعاءات لوظائف مكتبة وقت تشغيل معينة تُدرجها و
يسجل هذه المعلومات لكل وحدة ترجمة. المترجم يكتب هذه المعلومات
إلى ملف اسمه vtv_count_data.log في الدليل المسمى بمتغير البيئة
VTV_LOGS_DIR إذا تم تحديد ذلك أو دليل العمل الحالي خلاف ذلك. كذلك
يحسب حجم مجموعات المؤشر vtable لكل فئة ، ويكتب هذه المعلومات
إلى vtv_class_set_sizes.log في نفس الدليل.

ملاحظة: هذه الميزة يلحق البيانات إلى ملفات السجل. للحصول على ملفات سجل حديثة ، تأكد من ذلك
احذف أي منها موجودة.

- ضعيف
لا تستخدم دعم الرمز الضعيف ، حتى لو تم توفيره بواسطة الرابط. بشكل افتراضي ، G ++
يستخدم رموزًا ضعيفة إذا كانت متوفرة. هذا الخيار موجود فقط للاختبار و
لا ينبغي استخدامها من قبل المستخدمين النهائيين ؛ ينتج عنه رمز رديء وليس له أي فوائد.
يمكن إزالة هذا الخيار في إصدار مستقبلي من G ++.

-نوستدينك ++
لا تبحث عن ملفات الرأس في الدلائل القياسية الخاصة بـ C ++ ، ولكن قم بذلك
لا يزال البحث في الدلائل القياسية الأخرى. (يُستخدم هذا الخيار عند إنشاء ملف
مكتبة C ++.)

بالإضافة إلى ذلك ، فإن خيارات إنشاء التحسين والتحذير والتشفير هذه لها معاني فقط
لبرامج C ++:

-وابي (C و Objective-C و C ++ و Objective-C ++ فقط)
عندما صريح -fabi- النسخة =n الخيار المستخدم ، يتسبب في تحذير G ++ عند إنشائه
رمز ربما يكون غير متوافق مع البائع المحايد C ++ ABI. منذ G ++ الآن
التخلف عن -fabi- النسخة = 0, -وابي ليس له أي تأثير إلا إذا كان إصدار ABI أقدم
المختار (مع -fabi- النسخة =n) أو إصدار توافق أقدم (مع
-وابي =n or -fabi- التوافق- الإصدار =n).

على الرغم من الجهود المبذولة للتحذير من جميع هذه الحالات ، فمن المحتمل أن يكون هناك بعض
الحالات التي لم يتم التحذير بشأنها ، على الرغم من أن G ++ تُنشئ رمزًا غير متوافق.
قد تكون هناك أيضًا حالات يتم فيها إرسال التحذيرات على الرغم من وجود الكود
ولدت متوافق.

يجب عليك إعادة كتابة التعليمات البرمجية الخاصة بك لتجنب هذه التحذيرات إذا كنت قلقًا بشأن
حقيقة أن الكود الذي تم إنشاؤه بواسطة G ++ قد لا يكون متوافقًا مع الكود الذي تم إنشاؤه بواسطة
المترجمون الآخرون.

-وابي يمكن أيضًا استخدامها مع رقم إصدار صريح للتحذير من التوافق
مع خاص -fabi- النسخة المستوى ، على سبيل المثال -وابي = 2 للتحذير من التغييرات المتعلقة بـ
-fabi- النسخة = 2. يتم تعيين رقم الإصدار أيضًا -fabi- التوافق- الإصدار =n.

حالات عدم التوافق المعروفة في -fabi- النسخة = 2 (وهو الإعداد الافتراضي من GCC 3.4 إلى
4.9) تشمل:

* تم إفساد قالب مع معلمة قالب غير من النوع لنوع المرجع
بشكل غير صحيح:

خارجي int N ؛
نموذج هيكل S {} ؛
باطل ) {2}

تم إصلاح هذا في -fabi- النسخة = 3.

* أنواع ناقلات SIMD المعلنة باستخدام "__ السمة ((vector_size))" كانت مشوهة في
طريقة غير قياسية لا تسمح بالحمل الزائد على الوظائف التي تأخذ المتجهات
بأحجام مختلفة.

تم تغيير التشويه في -fabi- النسخة = 4.

* تم تشويه "__attribute ((const))" و "noreturn" كمعرفات النوع ، و
تم طي "نوع" التصريح البسيط.

تم إصلاح مشكلات التشويش هذه في -fabi- النسخة = 5.

* يتم ترقية العدادين المقيدين بالنطاق كوسيطات لوظيفة متغيرة مثل
العدادين غير الخاضعين للنطاق ، مما يتسبب في تقديم "va_arg" للشكوى. في معظم الأهداف هذا لا
تؤثر في الواقع على المعامل الذي يمر عبر ABI ، حيث لا توجد طريقة لتمرير الوسيطة
أصغر من "كثافة العمليات".

أيضًا ، قام ABI بتغيير تشويه حزم وسيطات القوالب ، "const_cast" ،
"static_cast" ، زيادة / إنقاص البادئة ، ووظيفة نطاق الفئة المستخدمة كملف
حجة القالب.

تم تصحيح هذه القضايا في -fabi- النسخة = 6.

* تم تشويه Lambdas في نطاق الوسيطة الافتراضي بشكل غير صحيح ، وتغير ABI
تشويه "nullptr_t".

تم تصحيح هذه القضايا في -fabi- النسخة = 7.

* عند تعديل نوع دالة مع مؤهلات وظيفة السيرة الذاتية ، فإن غير مؤهل
تم التعامل مع نوع الوظيفة بشكل غير صحيح على أنه مرشح بديل.

تم إصلاح هذا في -fabi- النسخة = 8.

كما يحذر من التغييرات المتعلقة بـ psABI. يتغير psABI المعروف في هذه المرحلة
تتضمن:

* بالنسبة لـ SysV / x86-64 ، يتم تمرير النقابات ذات الأعضاء "المزدوجة الطويلة" في الذاكرة كـ
المحدد في psABI. على سبيل المثال:

الاتحاد يو {
طويل مزدوج لد ؛
أنا
};

يتم دائمًا تمرير "union U" في الذاكرة.

-Wabi- الوسم (C ++ و Objective-C ++ فقط)
تحذير عند استخدام نوع بعلامة ABI في سياق لا يحتوي على علامة ABI هذه.
يرى C + + السمات لمزيد من المعلومات حول علامات ABI.

-الطبيب- dtor- الخصوصية (C ++ و Objective-C ++ فقط)
تحذير عندما يبدو الفصل غير قابل للاستخدام لأن جميع المنشئين أو المدمرين في ذلك
فئة خاصة ، وليس لديها أصدقاء ولا وظائف عامة ثابتة للأعضاء.
تحذير أيضًا إذا لم تكن هناك طرق غير خاصة ، وكان هناك عضو خاص واحد على الأقل
دالة ليست منشئًا أو مدمرًا.

-Wdelete-non-virtual-dtor (C ++ و Objective-C ++ فقط)
تحذير عند استخدام "حذف" لتدمير مثيل لفئة بها افتراضية
الوظائف والمدمِّر غير الظاهري. من غير الآمن حذف مثيل لمشتق
فئة من خلال مؤشر إلى فئة أساسية إذا كانت الفئة الأساسية لا تحتوي على فئة افتراضية
المدمر. تم تمكين هذا التحذير من قبل الجدار شاحن.

لاحقة حرفيّة (C ++ و Objective-C ++ فقط)
تحذير عندما تتبع سلسلة أو حرف حرفي لاحقة ud لا تفعل ذلك
تبدأ بشرطة سفلية. كامتداد مطابق ، يتعامل مجلس التعاون الخليجي مع هذه اللواحق على أنها
منفصلة عن الرموز المميزة للمعالجة المسبقة من أجل الحفاظ على التوافق العكسي مع الكود
يستخدم تنسيق وحدات الماكرو من " ". على سبيل المثال:

#define __STDC_FORMAT_MACROS
#يشمل
#يشمل

انت مين() {
int64_t i64 = 123 ؛
printf ("My int64:٪" PRId64 "\ n"، i64)؛
}

في هذه الحالة ، يتم التعامل مع "PRId64" كرمز منفصل للمعالجة المسبقة.

يتم تمكين هذا التحذير بشكل افتراضي.

-مقلق (C ++ و Objective-C ++ فقط)
تحذير عند حدوث تحويل تضييق محظور بواسطة C ++ 11 داخل { }، على سبيل المثال

int i = {2.2} ؛ // خطأ: التضييق من ضعف إلى كثافة العمليات

يتم تضمين هذا العلم في الجدار شاحن و -Wc ++ 11-متوافق.

مع -std = c ++ 11, -لا تضيق يمنع التشخيص المطلوب وفقًا للمعيار.
لاحظ أن هذا لا يؤثر على معنى الكود المشكل جيدًا ؛ تضييق التحويلات
لا تزال تعتبر سيئة التشكيل في سياق SFINAE.

-لا استثناء (C ++ و Objective-C ++ فقط)
تحذير عندما يتم تقييم تعبير noexcept إلى false بسبب استدعاء دالة
الذي لا يحتوي على مواصفات استثناء غير رمي (مثل "رمي ()" أو
"noexcept") ولكن من المعروف من قبل المترجم أنه لا يطرح استثناءً أبدًا.

-غير-افتراضية- dtor (C ++ و Objective-C ++ فقط)
تحذير عندما يكون للفصل وظائف افتراضية ومدمر غير افتراضي يمكن الوصول إليه
نفسها أو في فئة أساسية متعددة الأشكال يمكن الوصول إليها ، وفي هذه الحالة يكون ذلك ممكنًا ولكن
غير آمن لحذف مثيل لفئة مشتقة من خلال مؤشر إلى الفئة نفسها
أو الفئة الأساسية. يتم تمكين هذا التحذير تلقائيًا إذا -Weffc ++ محدد.

-تسجيل (C ++ و Objective-C ++ فقط)
تحذير عندما لا يتطابق ترتيب المُهيئين للعضو الوارد في الكود مع الترتيب
التي يجب أن يتم إعدامهم فيها. على سبيل المثال:

هيكل أ {
أنا
الباحث ي
أ (): ي (0) ، أنا (1) {}
};

يقوم المترجم بإعادة ترتيب مُهيِّئات العضو لـ "i" و "j" لمطابقة
أمر إعلان للأعضاء ، مع إصدار تحذير بهذا المعنى. هذا التحذير
مكن من قبل الجدار شاحن.

-صيغة-رقمية-حرفية (C ++ و Objective-C ++ فقط)
اقبل لواحق الأرقام التخيلية أو الثابتة أو المحددة آليًا على أنها GNU
ملحقات. عند إيقاف تشغيل هذا الخيار ، يتم التعامل مع هذه اللواحق على أنها مستخدم C ++ 11-
اللواحق الرقمية المحددة. يتم تشغيل هذا بشكل افتراضي لجميع لهجات ما قبل C ++ 11
وجميع لهجات جنو: -std = c ++ 98, -std = gnu ++ 98, -std = gnu ++ 11, -std = gnu ++ 14. هذا
يكون الخيار معطلاً افتراضيًا بالنسبة لـ ISO C ++ 11 وما بعده (-std = c ++ 11، ...).

ما يلي -W ... الخيارات لا تتأثر الجدار شاحن.

-Weffc ++ (C ++ و Objective-C ++ فقط)
تحذير من انتهاكات إرشادات الأسلوب التالية من Scott Meyers ' فعال
C + + سلسلة كتب:

* تحديد مُنشئ نسخة وعامل تخصيص للفئات ذات-
الذاكرة المخصصة.

* تفضيل التهيئة للتعيين في المنشئات.

* اجعل "عامل التشغيل =" إرجاع مرجع إلى * هذا.

* لا تحاول إرجاع مرجع عندما يجب عليك إرجاع كائن.

* يميز بين أشكال البادئة و postfix لمشغلي الزيادة والإنقاص.

* لا تفرط في تحميل "&&" أو "||" أو "،".

يتيح هذا الخيار أيضًا -غير-افتراضية- dtor، والتي تعد أيضًا واحدة من C ++ الفعالة
التوصيات. ومع ذلك ، تم تمديد الفحص للتحذير من عدم وجود افتراضية
المدمر في فئات قواعد غير متعددة الأشكال يمكن الوصول إليها أيضًا.

عند تحديد هذا الخيار ، يجب أن تدرك أن رؤوس المكتبة القياسية لا تخضع للجميع
من هذه المبادئ التوجيهية ؛ استعمال البقرى -v لتصفية تلك التحذيرات.

-قضاء-باطل-الحارس (C ++ و Objective-C ++ فقط)
تحذير من استخدام "NULL" غير مسبوق كحارس. عند التجميع فقط مع GCC
هذا حارس صالح ، حيث يتم تعريف "NULL" بـ "__null". على الرغم من أنها لاغية
ثابت المؤشر بدلاً من المؤشر الفارغ ، فمن المضمون أن يكون من نفس الحجم
كمؤشر. لكن هذا الاستخدام غير قابل للنقل عبر المجمعين المختلفين.

-Wno- غير- قالب- صديق (C ++ و Objective-C ++ فقط)
قم بتعطيل التحذيرات عندما يتم التصريح عن وظائف صديق غير مقولبة داخل قالب.
منذ ظهور دعم مواصفات القالب الصريح في G ++ ، إذا كان اسم ملف
الصديق هو معرف غير مؤهل (على سبيل المثال ، صديق فو (دولي)) ، مواصفات لغة C ++
يطلب من الصديق أن يعلن أو يحدد وظيفة عادية غير نموذجية. (الجزء
14.5.3). قبل تطبيق G ++ لمواصفات صريحة ، يمكن أن تكون المعرفات غير المؤهلة
تُفسر على أنها تخصص معين لوظيفة مقولبة. لأن هذا
لم يعد السلوك غير المطابق هو السلوك الافتراضي لـ G ++ ،
-غير-قالب-صديق يسمح للمترجم بالتحقق من الكود الموجود بحثًا عن مشكلة محتملة
البقع وهو قيد التشغيل بشكل افتراضي. يمكن إيقاف سلوك المترجم الجديد هذا باستخدام
-Wno- غير- قالب- صديق، والذي يحافظ على كود المترجم المطابق لكنه يعطل
تحذير مفيد.

-Wold-style-cast (C ++ و Objective-C ++ فقط)
تحذير إذا تم استخدام النمط القديم (النمط C) المصبوب إلى نوع غير باطل في برنامج C ++.
يلقي النمط الجديد ("dynamic_cast" و "static_cast" و "reinterpret_cast" و
"const_cast") أقل عرضة للتأثيرات غير المقصودة وأسهل بكثير في البحث عنها.

-Woverloaded- الظاهري (C ++ و Objective-C ++ فقط)
تحذير عندما يخفي إعلان دالة وظائف افتراضية من فئة أساسية. ل
على سبيل المثال ، في:

هيكل أ {
الفراغ الظاهري f () ؛
};

هيكل ب: عام أ {
باطل f (int) ؛
};

نسخة الفئة "أ" من "f" مخفية في "ب" ، والرمز مثل:

ب * ب ؛
ب-> و () ؛

فشل في ترجمة.

-Wno-pmf- التحويلات (C ++ و Objective-C ++ فقط)
قم بتعطيل التشخيص لتحويل مؤشر منضم إلى دالة عضو إلى عادي
المؤشر.

-Wsign- الترويجي (C ++ و Objective-C ++ فقط)
تحذير عندما يختار دقة التحميل الزائد ترقية من نوع غير موقعة أو معدود إلى
نوع موقّع ، فوق تحويل إلى نوع غير موقع من نفس الحجم. سابق
حاولت إصدارات G ++ الحفاظ على اللامبالاة ، لكن المعيار الحالي يفرض
السلوك.

الخيارات السيطرة الهدف-C و الهدف- C ++ اللهجات
(ملاحظة: لا يصف هذا الدليل لغتي Objective-C و Objective-C ++
أنفسهم.

يصف هذا القسم خيارات سطر الأوامر ذات المعنى فقط لـ Objective-C
وبرامج Objective-C ++. يمكنك أيضًا استخدام معظم لغة جنو المستقلة
خيارات المترجم. على سبيل المثال ، يمكنك تجميع ملف some_class.m مثله:

دول مجلس التعاون الخليجي -g -fgnu-runtime -O -c some_class.m

في هذا المثال، -fgnu- وقت التشغيل هو خيار مخصص فقط لـ Objective-C و Objective-C ++
برامج؛ يمكنك استخدام الخيارات الأخرى مع أي لغة تدعمها GCC.

لاحظ أنه نظرًا لأن Objective-C هو امتداد للغة C ، فإن مجموعات Objective-C
قد تستخدم أيضًا خيارات خاصة بالواجهة الأمامية لـ C (على سبيل المثال ، -تقليدي). وبالمثل،
قد تستخدم تصنيفات Objective-C ++ خيارات محددة لـ C ++ (على سبيل المثال ، -وابي).

فيما يلي قائمة بالخيارات المتوفرة فقط لتجميع Objective-C و Objective-C ++
برامج:

-fconstant-string-class =اسم الطبقة
استعمل اسم الطبقة كاسم للفئة المطلوب إنشاء مثيل لها لكل سلسلة حرفية
المحدد بالصيغة "@" ... "". اسم الفئة الافتراضي هو "NXConstantString" إذا
يتم استخدام وقت تشغيل GNU و "NSConstantString" إذا كان وقت تشغيل NeXT
مستخدمة (انظر أدناه). ال -الثابت- cfstrings الخيار ، إذا كان موجودًا أيضًا ، يلغي
-الثبات- سلسلة- فئة وضع وسبب وضع "@" ... "" حرفيًا ثابتًا
سلاسل CoreFoundation.

-fgnu- وقت التشغيل
قم بإنشاء رمز كائن متوافق مع وقت تشغيل GNU Objective-C القياسي. هذا هو
الافتراضي لمعظم أنواع الأنظمة.

-وقت التشغيل التالي
توليد الإخراج المتوافق مع وقت تشغيل NeXT. هذا هو الإعداد الافتراضي للمستندة إلى NeXT
الأنظمة ، بما في ذلك Darwin و Mac OS X. يتم تحديد الماكرو "__NEXT_RUNTIME__" مسبقًا إذا
(وفقط إذا) تم استخدام هذا الخيار.

-fno- لا شيء- المستقبلات
افترض أن جميع رسائل Objective-C ترسل ("[Receiver message: arg]") في هذا
تضمن وحدة الترجمة أن جهاز الاستقبال ليس "لا شيء". هذا يسمح للمزيد
نقاط دخول فعالة في وقت التشغيل لاستخدامها. هذا الخيار متاح فقط في
بالتزامن مع وقت تشغيل NeXT وإصدار ABI 0 أو 1.

-fobjc-abi-version =n
استخدم الإصدار n من Objective-C ABI لوقت التشغيل المحدد. هذا الخيار هو
مدعوم حاليًا فقط لوقت تشغيل NeXT. في هذه الحالة ، الإصدار 0 هو ملف
التقليدية (32 بت) ABI بدون دعم للخصائص وغيرها من Objective-C 2.0
الاضافات. الإصدار 1 هو ABI التقليدي (32 بت) مع دعم للخصائص و
إضافات أخرى من Objective-C 2.0. الإصدار 2 هو ABI الحديث (64 بت). إذا لم يكن هناك شيء
المحدد ، الافتراضي هو الإصدار 0 على الأجهزة المستهدفة 32 بت ، والإصدار 2 على 64 بت
الآلات المستهدفة.

-fobjc-call-cxx-cdtors
لكل فئة Objective-C ، تحقق مما إذا كان أي من متغيرات مثيلها هو كائن C ++
باستخدام مُنشئ افتراضي غير تافه. إذا كان الأمر كذلك ، فجمع "- (معرف) خاص"
.cxx_construct "أسلوب مثيل يقوم بتشغيل أدوات إنشاء افتراضية غير تافهة على أي
مثل متغيرات الحالة بالترتيب ، ثم ترجع "self". وبالمثل ، تحقق من وجود أي
متغير المثيل هو كائن C ++ به مدمر غير تافه ، وإذا كان الأمر كذلك ، فقم بتوليفه
طريقة خاصة "- (باطلة) .cxx_destruct" تعمل على تشغيل جميع أدوات التدمير الافتراضية هذه ، بتنسيق
ترتيب عكسي.

وبالتالي تم إنشاء الطرق "- (id) .cxx_construct" و "- (void) .cxx_destruct" فقط
تعمل على متغيرات الحالة المعلنة في فئة Objective-C الحالية ، وليس تلك
موروثة من superclasses. إنها مسؤولية وقت تشغيل Objective-C لـ
استدعاء كل هذه الأساليب في التسلسل الهرمي لميراث الكائن. تحقيق الشخصية)
يتم استدعاء أساليب .cxx_construct "بواسطة وقت التشغيل مباشرة بعد كائن جديد
يتم تخصيص المثيل ؛ يتم استدعاء الطرق "- (باطل) .cxx_destruct" على الفور
قبل أن يلغي وقت التشغيل تخصيص مثيل كائن.

حتى كتابة هذه السطور ، فقط وقت تشغيل NeXT على نظام التشغيل Mac OS X 10.4 والإصدارات الأحدث لديه دعم لـ
استدعاء أساليب "- (id) .cxx_construct" و "- (void) .cxx_destruct".

-fobjc- إرسال مباشر
السماح بالقفزات السريعة إلى مرسل الرسالة. في داروين يتم تحقيق ذلك عبر
صفحة الاتصالات.

استثناءات fobjc
تمكين الدعم النحوي لمعالجة الاستثناءات المنظمة في Objective-C ، على غرار
ما تقدمه C ++ و Java. هذا الخيار مطلوب لاستخدام Objective-C
الكلمات الأساسيةtry وthrow وcatch و @ أخيرًا وsynchronized. هذا الخيار متاح
مع كل من وقت تشغيل GNU ووقت تشغيل NeXT (ولكن غير متاح بالتزامن مع
وقت تشغيل NeXT في نظام التشغيل Mac OS X 10.2 والإصدارات الأقدم).

-fobjc-gc
تفعيل جمع البيانات المهملة (GC) في برامج Objective-C و Objective-C ++. هذا الخيار
متاح فقط مع وقت تشغيل NeXT ؛ وقت تشغيل جنو يحتوي على نوع مختلف من القمامة
تطبيق مجموعة لا يتطلب إشارات خاصة للمترجم.

-fobjc-nilcheck
لوقت تشغيل NeXT مع الإصدار 2 من ABI ، تحقق من عدم وجود جهاز استقبال في الطريقة
الدعوات قبل إجراء استدعاء الطريقة الفعلية. هذا هو الافتراضي ويمكن أن يكون
باستخدام المعوقين -fno-objc-nilcheck. لا يتم فحص طرق الفصل والمكالمات الفائقة أبدًا
لصفر بهذه الطريقة بغض النظر عن الغرض من هذا العلم. حاليا هذا العلم يفعل
لا شيء عند استخدام وقت تشغيل جنو أو إصدار أقدم من وقت تشغيل NeXT ABI.

-fobjc-std = objc1
تتوافق مع بناء جملة لغة Objective-C 1.0 ، اللغة المعترف بها من قبل GCC 4.0.
يؤثر هذا فقط على إضافات Objective-C إلى لغة C / C ++؛ لا يؤثر
المطابقة لمعايير C / C ++ ، والتي يتم التحكم فيها بواسطة لهجة C / C ++ المنفصلة
أعلام الخيار. عند استخدام هذا الخيار مع Objective-C أو Objective-C ++
المترجم ، يتم رفض أي بناء جملة Objective-C لم يتم التعرف عليه بواسطة GCC 4.0. هذه
مفيد إذا كنت بحاجة إلى التأكد من أنه يمكن تجميع كود Objective-C الخاص بك باستخدام
الإصدارات الأقدم من دول مجلس التعاون الخليجي.

فصول- freeplace-objc
تنبعث تعليمات علامة خاصة ld1 لا لربط ثابت في الكائن الناتج
ملف والسماح دولد1 لتحميله في وقت التشغيل بدلاً من ذلك. يستخدم هذا في
بالتزامن مع وضع تصحيح الأخطاء Fix-and-Continue ، حيث يكون ملف الكائن بتنسيق
يمكن إعادة تجميع السؤال وإعادة تحميله ديناميكيًا في سياق البرنامج
التنفيذ ، دون الحاجة إلى إعادة تشغيل البرنامج نفسه. حاليًا ، Fix-and-
لا تتوفر وظيفة المتابعة إلا بالتزامن مع وقت تشغيل NeXT على جهاز Mac
OS X 10.3 والإصدارات الأحدث.

-fzero-link
عند التحويل البرمجي لوقت تشغيل NeXT ، يستبدل المترجم عادةً المكالمات إلى
"objc_getClass (" ... ")" (عندما يكون اسم الفصل معروفًا في وقت الترجمة) باستخدام
مراجع الفئة الثابتة التي تتم تهيئتها في وقت التحميل ، مما يؤدي إلى تحسين وقت التشغيل
أداء. تحديد -fzero-link العلم يمنع هذا السلوك وأسبابه
استدعاء "objc_getClass (" ... ")" ليتم الاحتفاظ بها. هذا مفيد في Zero-Link
وضع التصحيح ، لأنه يسمح بتعديل تطبيقات الفئة الفردية
أثناء تنفيذ البرنامج. وقت تشغيل GNU حاليًا يحتفظ دائمًا بالمكالمات إلى
"objc_get_class (" ... ")" بغض النظر عن خيارات سطر الأوامر.

-fno-local-ivars
يمكن الوصول إلى متغيرات الحالة الافتراضية في Objective-C كما لو كانت محلية
المتغيرات من داخل طرق الفئة التي تم الإعلان عنها فيها. يمكن أن يؤدي ذلك إلى
التظليل بين متغيرات الحالة والمتغيرات الأخرى المعلنة إما محليًا
داخل طريقة فئة أو عالميًا بنفس الاسم. تحديد -fno-local-ivars
تعمل العلامة على تعطيل هذا السلوك وبالتالي تجنب مشكلات التظليل المتغيرة.

-fivar- الرؤية =[جمهور|محمي|خاص|صفقة]
اضبط رؤية متغير المثيل الافتراضي على الخيار المحدد لذلك هذا المثال
تم الإعلان عن المتغيرات خارج نطاق أي توجيهات لمعدِّل الوصول بشكل افتراضي إلى
الرؤية المحددة.

-جن- decls
تفريغ إعلانات واجهة لجميع الفئات التي تظهر في الملف المصدر إلى ملف مسمى
sourcename.decl.

- تعيين - اعتراض (Objective-C و Objective-C ++ فقط)
تحذير عندما يتم اعتراض مهمة Objective-C بواسطة جامع البيانات المهملة.

-لا بروتوكول (Objective-C و Objective-C ++ فقط)
إذا تم الإعلان عن فئة لتنفيذ بروتوكول ، فسيتم إصدار تحذير لكل طريقة
في البروتوكول الذي لم يتم تنفيذه بواسطة الفئة. السلوك الافتراضي هو
إصدار تحذير لكل أسلوب لم يتم تطبيقه صراحة في الفصل ، حتى لو كان
تطبيق الطريقة موروث من الطبقة الفائقة. إذا كنت تستخدم ملف -لا بروتوكول
الخيار ، ثم يتم اعتبار الطرق الموروثة من الطبقة الفائقة مطبقة ،
ولم يصدر تحذير لهم.

-Wselector (Objective-C و Objective-C ++ فقط)
تحذير إذا تم العثور على طرق متعددة لأنواع مختلفة لنفس المحدد أثناء
التحويل البرمجي. يتم إجراء الفحص على قائمة الطرق في المرحلة النهائية من
التحويل البرمجي. بالإضافة إلى ذلك ، يتم إجراء فحص لكل محدد يظهر في ملف
تعبير "selector (...)" ، والطريقة المقابلة لذلك المحدد كانت
وجدت أثناء التجميع. لأن هذه الفحوصات تفحص جدول الطريقة فقط في النهاية
من التجميع ، لا يتم إصدار هذه التحذيرات إذا كانت المرحلة الأخيرة من التجميع
لم يتم الوصول إليه ، على سبيل المثال بسبب اكتشاف خطأ أثناء التجميع ، أو بسبب
-فس الجملة فقط يتم استخدام الخيار.

-Wstrict-selector-match (Objective-C و Objective-C ++ فقط)
تحذير إذا تم العثور على طرق متعددة ذات وسيطة مختلفة و / أو أنواع إرجاع لـ a
محدد معين عند محاولة إرسال رسالة باستخدام هذا المحدد إلى مستقبل
اكتب "id" أو "Class". عندما يتم إيقاف تشغيل هذه العلامة (وهو السلوك الافتراضي) ، فإن ملف
يتجاهل المترجم هذه التحذيرات إذا كانت الاختلافات الموجودة تقتصر على الأنواع التي تشارك
نفس الحجم والمحاذاة.

-Wundeclared- محدد (Objective-C و Objective-C ++ فقط)
تحذير إذا تم العثور على تعبير "selector (...)" يشير إلى محدد غير معرّف. أ
يعتبر المحدد غير معرّف إذا لم يتم التصريح عن طريقة بهذا الاسم من قبل
التعبير "selector (...)" ، إما بشكل صريح فيinterface أوprotocol
إعلان ، أو ضمنيًا في قسمimplementation. يعمل هذا الخيار دائمًا
يتحقق منه بمجرد العثور على تعبير "selector (...)" ، بينما -Wselector فقط
يقوم بفحصه في المرحلة النهائية من التجميع. هذا أيضا يفرض الترميز
اصطلاح النمط أنه يجب التصريح عن الأساليب والمحددات قبل استخدامها.

-طباعة- objc-runtime-info
قم بإنشاء رأس C الذي يصف أكبر بنية تم تمريرها بالقيمة ، إن وجدت.

الخيارات إلى مراقبة تشخيصي الرسائل التنسيق
تقليديا ، تم تنسيق رسائل التشخيص بغض النظر عن جهاز الإخراج
الجانب (على سبيل المثال عرضه ، ...). يمكنك استخدام الخيارات الموضحة أدناه للتحكم في
خوارزمية تنسيق لرسائل التشخيص ، على سبيل المثال عدد الأحرف في كل سطر وكم مرة
يجب الإبلاغ عن معلومات موقع المصدر. لاحظ أن بعض الواجهات الأمامية للغة قد تكون
لا تحترم هذه الخيارات.

-طول الرسالة =n
حاول تنسيق رسائل الخطأ بحيث تناسب سطور حوالي n الشخصيات. لو n is
صفر ، ثم لا يتم التفاف الخط ؛ تظهر كل رسالة خطأ في سطر واحد.
هذا هو الإعداد الافتراضي لجميع الواجهات الأمامية.

-fdiagnostics-show-location = مرة واحدة
ذات مغزى فقط في وضع التفاف الخط. يوجه مراسل رسائل التشخيص إلى
تنبعث منها معلومات موقع المصدر مرة؛ أي في حال كانت الرسالة طويلة جدًا بحيث لا تتناسب مع ذلك
على سطر مادي واحد ويجب تغليفه ، فلن يتم إرسال موقع المصدر
(كبادئة) مرارًا وتكرارًا في سطور المتابعة اللاحقة. هذا ال
السلوك الافتراضي.

-fdiagnostics-show-location = كل سطر
ذات مغزى فقط في وضع التفاف الخط. يوجه مراسل رسائل التشخيص إلى
تصدر معلومات موقع المصدر نفسها (كبادئة) للأسطر المادية الناتجة
من عملية فصل رسالة طويلة جدًا بحيث لا يمكن وضعها في سطر واحد.

-التشخيص-اللون [=متى]
-التشخيص-اللون
استخدم اللون في التشخيص. متى is أبدا, دائما، أو السيارات. الافتراضي يعتمد على كيف
تم تكوين المترجم ، يمكن أن يكون أيًا مما سبق متى خيارات أو أيضا
أبدا if GCC_COLORS متغير البيئة غير موجود في البيئة ، و السيارات
غير ذلك. السيارات يعني استخدام اللون فقط عندما يكون الخطأ القياسي عبارة عن محطة. ال
أشكال -التشخيص-اللون و -التشخيص-اللون هي أسماء مستعارة لـ
-تشخيص-اللون = دائمًا و -تشخيص-اللون = أبدا، على التوالي.

يتم تحديد الألوان بواسطة متغير البيئة GCC_COLORS. قيمته نقطتان-
قائمة منفصلة للإمكانيات وحدد سلاسل فرعية للتسليم الرسومي (SGR). SGR
يتم تفسير الأوامر بواسطة المحطة الطرفية أو المحاكي الطرفي. (انظر القسم في
توثيق محطة النص الخاصة بك للقيم المسموح بها ومعانيها كـ
سمات الأحرف.) قيم السلسلة الفرعية هذه عبارة عن أعداد صحيحة في التمثيل العشري
ويمكن ربطها بفواصل منقوطة. تشمل القيم المشتركة لسلسلة 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_COLORS 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_COLORS إلى سلسلة فارغة يعطل الألوان.
القدرات المدعومة هي كما يلي.

"خطأ ="
سلسلة فرعية SGR للخطأ: العلامات.

"تحذير ="
سلسلة فرعية SGR للتحذير: العلامات.

"ملاحظة ="
سلسلة فرعية SGR للملاحظة: علامات.

علامة الإقحام = "
سلسلة فرعية SGR لخط الإقحام.

"locus ="
سلسلة فرعية SGR لمعلومات الموقع ، ملف: line or ملف: سطر: عمود وما إلى ذلك.

"اقتباس ="
سلسلة فرعية SGR للمعلومات المطبوعة ضمن علامات الاقتباس.

-fno-التشخيص-تظهر-الخيار
بشكل افتراضي ، يتضمن كل تشخيص يصدر نصًا يشير إلى خيار سطر الأوامر
يتحكم بشكل مباشر في التشخيص (إذا كان هذا الخيار معروفًا للتشخيص
الات). تحديد -fno-التشخيص-تظهر-الخيار العلم يقمع ذلك
السلوك.

-التشخيص-تظهر-الإقحام
بشكل افتراضي ، يتضمن كل تشخيص يصدر خط المصدر الأصلي وعلامة الإقحام "^"
مشيرا إلى العمود. هذا الخيار يمنع هذه المعلومات. خط المصدر هو
مقطوع إلى n الأحرف ، إذا كان -طول الرسالة = n يتم إعطاء الخيار. عندما يكون الإخراج
يتم إجراؤه على المحطة ، ويقتصر العرض على العرض المعطى بواسطة الأعمدة
متغير البيئة أو ، إذا لم يتم ضبطه ، على عرض المحطة.

الخيارات إلى أطلب or كبح تحذيرات
التحذيرات هي رسائل تشخيصية تُبلغ عن الإنشاءات غير المتأصلة
خاطئة ولكنها محفوفة بالمخاطر أو تشير إلى أنه قد يكون هناك خطأ.

لا تعمل الخيارات المستقلة التالية عن اللغة على تمكين تحذيرات معينة ولكنها تتحكم في
أنواع التشخيص التي تنتجها دول مجلس التعاون الخليجي.

-فس الجملة فقط
تحقق من الشفرة بحثًا عن أخطاء في بناء الجملة ، ولكن لا تفعل أي شيء يتجاوز ذلك.

-fmax-errors =n
يحدد الحد الأقصى لعدد رسائل الخطأ بـ n، عند هذه النقطة تنقذ دول مجلس التعاون الخليجي بدلاً من ذلك
من محاولة متابعة معالجة شفرة المصدر. لو n هو 0 (الافتراضي) ،
لا يوجد حد لعدد رسائل الخطأ المنتجة. لو - أخطاء فادحة هو أيضا
المحدد ، إذن - أخطاء فادحة له الأسبقية على هذا الخيار.

-w منع كافة رسائل التحذير.

-خطأ
تحويل جميع التحذيرات إلى أخطاء.

-خطأ =
جعل التحذير المحدد في خطأ. تم إلحاق محدد التحذير ؛
مثلا -الخطأ = التبديل يتحول التحذيرات التي يتحكم فيها -سويتش في الأخطاء.
يتخذ رمز التبديل هذا شكلاً سالبًا ، ليتم استخدامه للرفض -خطأ لتحذيرات محددة ؛
مثلا -Wno-error = التبديل يجعل -سويتش تحذيرات لا تكون أخطاء ، حتى عندما -خطأ
ساري المفعول.

تتضمن رسالة التحذير لكل تحذير يمكن التحكم فيه الخيار الذي يتحكم
التحذير. يمكن بعد ذلك استخدام هذا الخيار مع -خطأ = و -لا خطأ = كما وصفت
فوق. (يمكن تعطيل طباعة الخيار في رسالة التحذير باستخدام ملف
-fno-التشخيص-تظهر-الخيار علم.)

لاحظ أن تحديد -خطأ =فو يعني تلقائيا -Wفو. ومع ذلك، -لا خطأ =فو
لا يعني أي شيء.

- أخطاء فادحة
يؤدي هذا الخيار إلى قيام المترجم بإيقاف التحويل البرمجي عند حدوث الخطأ الأول
بدلاً من محاولة الاستمرار وطباعة المزيد من رسائل الخطأ.

يمكنك طلب العديد من التحذيرات المحددة بخيارات تبدأ بـ -W، على سبيل المثال
- ضبابي لطلب تحذيرات بشأن الإعلانات الضمنية. كل من هذه التحذيرات المحددة
الخيارات لها أيضًا شكل بداية سلبي -لا- لإيقاف التحذيرات ؛ على سبيل المثال،
-لا-ضمني. يسرد هذا الدليل واحدًا فقط من النموذجين ، أيهما ليس الافتراضي.
لمزيد من الخيارات الخاصة باللغة راجع أيضًا C + + لهجة الخيارات و الهدف-C
و الهدف- C ++ لهجة الخيارات.

بعض الخيارات ، مثل الجدار شاحن و اكسترا، قم بتشغيل الخيارات الأخرى ، مثل -مذهل، التي
قد يقوم بتشغيل المزيد من الخيارات ، مثل -قيمة غير مألوفة. التأثير المشترك للإيجابية و
الأشكال السلبية هي أن الخيارات الأكثر تحديدًا لها الأولوية على الخيارات الأقل تحديدًا ،
بصرف النظر عن موقعهم في سطر الأوامر. للحصول على خيارات من نفس الخصوصية ،
آخر واحد ساري المفعول. تصبح الخيارات التي تم تمكينها أو تعطيلها عبر البرامج سارية المفعول كما لو كانت
ظهر في نهاية سطر الأوامر.

عند طلب خيار تحذير غير معروف (على سبيل المثال ، -تحذير غير معروف) ، دول مجلس التعاون الخليجي ينبعث منها
يشير التشخيص إلى عدم التعرف على الخيار. ومع ذلك ، إذا كان -لا- يستخدم النموذج ،
يختلف السلوك اختلافًا طفيفًا: لا يتم إنتاج تشخيص لـ -لا-غير معروف-تحذير
ما لم يتم إنتاج تشخيصات أخرى. هذا يسمح باستخدام الجديد -لا- الخيارات
مع المترجمين القدامى ، ولكن إذا حدث خطأ ما ، فإن المترجم يحذر من أن ملف
الخيار موجود.

-بيدانتيك
-متحذلق
إصدار جميع التحذيرات التي تتطلبها معايير ISO C و ISO C ++ الصارمة ؛ رفض جميع البرامج التي
استخدام الامتدادات المحظورة ، وبعض البرامج الأخرى التي لا تتبع ISO C و ISO
سي ++. بالنسبة إلى ISO C ، يتبع إصدار معيار ISO C المحدد من قبل أي -std
الخيار المستخدم.

يجب ترجمة برامج ISO C و ISO C ++ الصالحة بشكل صحيح باستخدام هذا الخيار أو بدونه
(على الرغم من أن قلة نادرة تتطلب -انسى أو -std خيار تحديد الإصدار المطلوب من
ISO ج). ومع ذلك ، بدون هذا الخيار ، بعض امتدادات جنو و C و
يتم دعم ميزات C ++ أيضًا. مع هذا الخيار ، يتم رفضهم.

-بيدانتيك لا يتسبب في رسائل تحذير لاستخدام الكلمات الرئيسية البديلة التي
تبدأ الأسماء وتنتهي بـ __. التحذيرات المتحذلق معطلة أيضا في التعبير
الذي يلي "__التمديد__". ومع ذلك ، يجب أن تستخدم ملفات رأس النظام فقط هذه
طرق الهروب؛ يجب على برامج التطبيق تجنبها.

يحاول بعض المستخدمين استخدام -بيدانتيك للتحقق من البرامج الخاصة بمطابقة ISO C الصارمة. أنهم
سرعان ما اكتشف أنه لا يفعل ما يريدونه تمامًا: فقد اكتشف بعض الممارسات غير التابعة لـ ISO ،
ولكن ليس كل شيء - فقط تلك التي تستخدم ISO C يتطلب للتشخيص ، والبعض الآخر ل
التشخيصات التي تمت إضافتها.

قد تكون ميزة الإبلاغ عن أي فشل في التوافق مع ISO C مفيدة في بعض الحالات ،
ولكنه سيتطلب عملاً إضافيًا كبيرًا وسيكون مختلفًا تمامًا عن
-بيدانتيك. ليس لدينا خطط لدعم مثل هذه الميزة في المستقبل القريب.

حيث المعيار المحدد ب -std يمثل لهجة جنو الموسعة للغة C ، مثل
غنو 90 or غنو 99، هناك مقابل قاعدة معيار، إصدار ISO C الذي
لهجة جنو الموسعة قائمة. تحذيرات من -بيدانتيك يتم إعطاؤهم مكان وجودهم
مطلوب من قبل المعيار الأساسي. (ليس من المنطقي إعطاء مثل هذه التحذيرات
فقط للخصائص التي ليست في لهجة جنو سي المحددة ، بما أن جنو بحكم التعريف
تشمل لهجات C جميع الميزات التي يدعمها المترجم مع الخيار المحدد ، و
لن يكون هناك ما يحذر منه.)

- أخطاء متداخلة
تعطي خطأ كلما قاعدة معيار (انظر -بيدانتيك) يتطلب التشخيص ، في
في بعض الحالات حيث يوجد سلوك غير محدد في وقت الترجمة وفي بعض الحالات الأخرى
لا تمنع تجميع البرامج الصالحة وفقًا للمعيار.
هذا لا يعادل -الخطأ = متحذلق، حيث توجد أخطاء تم تمكينها بواسطة هذا
الخيار ولم يتم تمكينه بواسطة الأخير والعكس صحيح.

الجدار شاحن
يتيح ذلك كافة التحذيرات حول الإنشاءات التي يعتبرها بعض المستخدمين
مشكوك فيه ، ويسهل تجنبه (أو تعديله لمنع التحذير) ، حتى في
بالتزامن مع وحدات الماكرو. يتيح هذا أيضًا بعض التحذيرات الخاصة باللغة الموضحة
in C + + لهجة الخيارات و الهدف-C و الهدف- C ++ لهجة الخيارات.

الجدار شاحن يقوم بتشغيل أعلام التحذير التالية:

-العنوان حدود المحارب = 1 (فقط مع -O2) -Wc ++ 11-متوافق -Wc ++ 14-متوافق
-وشار- المشتركين -وينوم-قارن (في C / ObjC ؛ يتم تشغيل هذا افتراضيًا في C ++)
-Wimplicit- كثافة العمليات (C و Objective-C فقط) - إعلان ضعيف عن الوظيفة (ج و
الهدف- C فقط) - تعليق -Wformat -ماين (فقط لـ C / ObjC وما لم يكن
-تقرير) - ربما - غير مهيأ -فاقد-الأقواس (فقط لـ C / ObjC) -غير مجهولة
-Wopenmp-simd أقواس -Wpointer- تسجيل -تسجيل - نوع الإرجاع نقطة العواقب
-Wsign- قارن (فقط في C ++) -Wstrict- التعرج - تجاوز الحد = 1 -سويتش
-Wtrigraphs غير مهيأ -Wunknown-pragmas وظيفة غير مألوفة -تسمية غير مألوفة
-قيمة غير مألوفة - متغير غير مألوف -تقلب- تسجيل- فار

لاحظ أن بعض علامات التحذير لم يتم تضمينها بواسطة الجدار شاحن. يحذر البعض منهم
التركيبات التي لا يعتبرها المستخدمون مشكوك فيها بشكل عام ، ولكن أي منها
من حين لآخر قد ترغب في التحقق من ؛ يحذر الآخرون من الإنشاءات الموجودة
ضروري أو يصعب تجنبه في بعض الحالات ، ولا توجد طريقة بسيطة لتعديل
رمز لقمع التحذير. يتم تمكين البعض منهم من قبل اكسترا لكن الكثير منهم
يجب تمكينه بشكل فردي.

اكسترا
يتيح ذلك بعض علامات التحذير الإضافية التي لم يتم تمكينها بواسطة الجدار شاحن. (هذا الخيار مستخدم
ليتم استدعاؤها -W. لا يزال الاسم الأقدم مدعومًا ، لكن الاسم الأحدث أكثر
وصفي.)

-Wclobbered -جسم فارغ - التصفيات المؤهلة -ضياع-الحقل-التهيئة
-Wmissing- نوع المعلمة (ج فقط) - إعلان على الطراز القديم (ج فقط) -Woverride-init
-Wsign- قارن حدود نوع غير مهيأ -غير مألوف- المعلمة (فقط مع -مذهل or
الجدار شاحن) -غير مستغلة-لكن-ضبط-المعلمة (فقط مع -مذهل or الجدار شاحن)

الخيار اكسترا كما يطبع رسائل تحذير للحالات التالية:

* تتم مقارنة المؤشر بعدد صحيح صفر بـ "<" أو "<=" أو ">" أو "> =".

* (C ++ فقط) يظهر كل من العداد وغير العداد في شرط
التعبير.

* (C ++ فقط) قواعد افتراضية غامضة.

* (C ++ فقط) تسجيل مصفوفة تم التصريح عنها بأنها "تسجيل".

* (C ++ فقط) أخذ عنوان متغير تم التصريح عنه "تسجيل".

* (C ++ فقط) لم تتم تهيئة الفئة الأساسية في مُنشئ نسخة للفئة المشتقة.

-وشار- المشتركين
تحذير إذا كان نص الصفيف منخفضًا من نوع "char". هذا هو سبب شائع للخطأ ، مثل
غالبًا ما ينسى المبرمجون أن هذا النوع موقّع على بعض الأجهزة. هذا التحذير
مكن من قبل الجدار شاحن.

- تعليق
تحذير عند تسلسل بدء تعليق /* يظهر في /* التعليق ، أو كلما أ
تظهر الشرطة المائلة للخلف - سطر جديد بتنسيق // تعليق. تم تمكين هذا التحذير من قبل الجدار شاحن.

-لا-تغطية-عدم تطابق
تحذير إذا لم تتطابق ملفات تعريف التعليقات عند استخدام ملف -fprofile- استخدام اختيار. اذا كان
يتم تغيير ملف المصدر بين التحويل البرمجي باستخدام -fprofile- الجنرال ومع -fprofile- استخدام,
يمكن أن تفشل الملفات التي تحتوي على ملاحظات ملف التعريف في مطابقة الملف المصدر ولا يمكن لـ GCC
استخدام معلومات ملاحظات الملف الشخصي. بشكل افتراضي ، يتم تمكين هذا التحذير وهو
تعامل على أنها خطأ. -لا-تغطية-عدم تطابق يمكن استخدامها لتعطيل التحذير أو
-Wno-error = التغطية-عدم التطابق يمكن استخدامها لتعطيل الخطأ. تعطيل الخطأ
لهذا التحذير يمكن أن يؤدي إلى رمز محسن بشكل سيئ ويكون مفيدًا فقط في حالة
تغييرات طفيفة جدًا مثل إصلاحات الأخطاء في قاعدة التعليمات البرمجية الحالية. تماما تعطيل
لا ينصح التحذير.

-Wno- CPP
(C و Objective-C و C ++ و Objective-C ++ و Fortran فقط)

قم بإيقاف رسائل التحذير الصادرة عن توجيهات "# warning".

- ترقية مزدوجة (C و C ++ و Objective-C و Objective-C ++ فقط)
قم بإعطاء تحذير عندما يتم ترقية قيمة من النوع "float" ضمنيًا إلى "double". وحدات المعالجة المركزية
باستخدام وحدة فاصلة عائمة "أحادية الدقة" 32 بت تنفذ "تعويم" في الأجهزة ،
ولكن محاكاة "مزدوج" في البرنامج. على مثل هذا الجهاز ، يتم إجراء الحسابات باستخدام
القيم "المزدوجة" أغلى بكثير بسبب الحمل المطلوب للبرامج
محاكاة.

من السهل إجراء عمليات حسابية عن طريق الخطأ باستخدام "double" لأن النقطة العائمة
تكون القيم الحرفية ضمنيًا من النوع "double". على سبيل المثال ، في:

منطقة تعويم (نصف قطر عائم)
{
إرجاع 3.14159 * نصف قطر * نصف قطر ؛
}

يقوم المترجم بإجراء الحساب بالكامل باستخدام "double" لأن النقطة العائمة
الحرفي هو "مزدوج".

-Wformat
-Wformat =n
تحقق من المكالمات إلى "printf" و "scanf" ، وما إلى ذلك ، للتأكد من توفر الوسائط
لها أنواع مناسبة لسلسلة التنسيق المحددة ، وأن التحويلات
المحدد في سلسلة التنسيق منطقي. وهذا يشمل الوظائف القياسية ، و
أخرى محددة بسمات التنسيق ، في "printf" و "scanf" و "strftime" و
عائلات "strfmon" (امتداد X / Open ، وليس في معيار C) (أو هدف آخر-
عائلات معينة). ما هي الوظائف التي تم فحصها بدون سمات التنسيق
المحدد يعتمد على الإصدار القياسي المحدد ، وعمليات التحقق من الوظائف هذه
بدون السمة المحددة معطلة بواسطة -تقرير or -fno- بنيت.

يتم فحص التنسيقات مقابل ميزات التنسيق التي يدعمها الإصدار 2.2 من GNU libc.
يتضمن ذلك جميع ميزات ISO C90 و C99 ، بالإضافة إلى ميزات من Single Unix
المواصفات وبعض امتدادات BSD و GNU. تطبيقات المكتبة الأخرى قد لا
دعم كل هذه الميزات ؛ مجلس التعاون الخليجي لا يدعم التحذير من الميزات التي تتجاوز
قيود مكتبة معينة. ومع ذلك، إذا -بيدانتيك يستخدم مع -Wformat,
يتم إعطاء تحذيرات حول ميزات التنسيق غير الموجودة في الإصدار القياسي المحدد (ولكن ليس
لتنسيقات "strfmon" ، لأن هذه ليست في أي نسخة من معيار C).

- التنسيق = 1
-Wformat
خيار -Wformat ما يعادل - التنسيق = 1و -لا تنسيق ما يعادل
- التنسيق = 0. منذ -Wformat يتحقق أيضًا من وجود وسيطات تنسيق فارغة لعدة
وظائف، -Wformat يعني أيضا -غير مجهولة. بعض جوانب هذا المستوى من التنسيق
يمكن تعطيل التحقق من خلال الخيارات: -لا-شكل-يحتوي-نول,
-لا تنسيق- إضافي- أرجسو -لا تنسيق-صفر-الطول. -Wformat تم تمكينه بواسطة
الجدار شاحن.

-لا-شكل-يحتوي-نول
If -Wformat محددًا ، لا تحذر من سلاسل التنسيق التي تحتوي على وحدات بايت NUL.

-لا تنسيق- إضافي- أرجس
If -Wformat محددًا ، فلا تحذر من الحجج الزائدة إلى "printf" أو
وظيفة تنسيق "scanf". يحدد المعيار C أن هذه الحجج هي
تجاهلها.

حيث تكمن الوسائط غير المستخدمة بين الوسائط المستخدمة المحددة بـ $
مواصفات رقم المعامل ، وعادة ما يتم إعطاء التحذيرات ، منذ
التنفيذ لا يمكنه معرفة نوع تمريره إلى "va_arg" لتخطي غير المستخدم
الحجج. ومع ذلك ، في حالة تنسيقات "scanf" ، يلغي هذا الخيار تنسيق
تحذير إذا كانت الوسائط غير المستخدمة كلها مؤشرات ، منذ يونكس واحد
تقول المواصفات أن مثل هذه الحجج غير المستخدمة مسموح بها.

-لا تنسيق-صفر-الطول
If -Wformat محددًا ، لا تحذر من التنسيقات ذات الطول الصفري. المعيار C.
يحدد أن التنسيقات ذات الطول الصفري مسموح بها.

- التنسيق = 2
تفعيل -Wformat بالإضافة إلى فحوصات التنسيق الإضافية. يعادل حاليا -Wformat
- صيغة غير حرفية -Wformat- الأمن -Wformat-y2k.

- صيغة غير حرفية
If -Wformat محددًا ، حذر أيضًا إذا كانت سلسلة التنسيق ليست سلسلة حرفية
وهكذا لا يمكن التحقق منها ، ما لم تأخذ دالة التنسيق وسيطات التنسيق الخاصة بها على أنها
"va_list".

-Wformat- الأمن
If -Wformat ، حذر أيضًا من استخدامات وظائف التنسيق التي تمثل
مشاكل أمنية محتملة. في الوقت الحالي ، يحذر هذا من المكالمات إلى "printf" و
وظائف "scanf" حيث لا تكون سلسلة التنسيق سلسلة حرفية وليس هناك
وسيطات التنسيق ، مثل "printf (foo) ؛". قد يكون هذا ثغرة أمنية إذا كان
جاءت سلسلة التنسيق من إدخال غير موثوق به وتحتوي على %n. (هذا حاليًا ملف
مجموعة فرعية من ماذا - صيغة غير حرفية يحذر ، ولكن في المستقبل قد تكون التحذيرات
وأضاف لل -Wformat- الأمن التي لم يتم تضمينها في - صيغة غير حرفية.)

- التنسيق - التوقيع
If -Wformat محددًا ، حذر أيضًا إذا كانت سلسلة التنسيق تتطلب عدم توقيع
الحجة والحجة موقعة والعكس صحيح.

ملاحظة: في Ubuntu 8.10 والإصدارات الأحدث ، يتم تمكين هذا الخيار افتراضيًا لـ C ،
C ++ ، ObjC ، ObjC ++. للتعطيل ، استخدم -لا تنسيق- الأمنأو قم بتعطيل كل التنسيقات
مع التحذيرات - التنسيق = 0. لجعل تحذيرات أمان التنسيق فادحة ، حدد
-الخطأ = تنسيق-الأمن.

-Wformat-y2k
If -Wformat ، حذر أيضًا من تنسيقات "strftime" التي قد تنتج فقط ملف
عام من رقمين.

-غير مجهولة
تحذير من تمرير مؤشر فارغ للوسيطات التي تم وضع علامة عليها على أنها تتطلب قيمة غير فارغة
بواسطة سمة دالة "nonnull".

-غير مجهولة تم تضمينه في الجدار شاحن و -Wformat. يمكن تعطيله باستخدام -لا-نونول
الخيار.

-نفس الذات (C و C ++ و Objective-C و Objective-C ++ فقط)
تحذير بشأن المتغيرات غير المهيأة التي تمت تهيئتها مع نفسها. لاحظ هذا
يمكن استخدام الخيار فقط مع غير مهيأ الخيار.

على سبيل المثال ، يحذر GCC من عدم تهيئة حرف "i" في المقتطف التالي فقط
متى -نفس الذات تم تحديده:

int و ()
{
int أنا = أنا ؛
العودة أنا ؛
}

تم تمكين هذا التحذير بواسطة الجدار شاحن في C ++.

-Wimplicit- كثافة العمليات (C و Objective-C فقط)
تحذير عندما لا يحدد التصريح نوعًا ما. تم تمكين هذا التحذير من قبل الجدار شاحن.

- إعلان ضعيف عن الوظيفة (C و Objective-C فقط)
أعط تحذيرًا عند استخدام وظيفة قبل الإعلان عنها. في وضع C99
(-std = c99 or -std = gnu99) ، يتم تمكين هذا التحذير افتراضيًا ويتم تحويله إلى ملف
خطأ - أخطاء متداخلة. يتم تمكين هذا التحذير أيضًا بواسطة الجدار شاحن.

- ضبابي (C و Objective-C فقط)
مثل -Wimplicit- كثافة العمليات و - إعلان ضعيف عن الوظيفة. تم تمكين هذا التحذير
by الجدار شاحن.

- التصفيات المؤهلة (C و C ++ فقط)
تحذير إذا كان نوع الإرجاع للدالة يحتوي على مؤهل نوع مثل "const". بالنسبة إلى ISO C
هذا النوع من المؤهل ليس له أي تأثير ، لأن القيمة التي ترجعها الدالة ليست
لفالو. بالنسبة لـ C ++ ، يتم إصدار التحذير فقط للأنواع العددية أو "الفراغ". ISO ج
يحظر أنواع الإرجاع "الباطلة" المؤهلة في تعريفات الوظائف ، لذلك مثل هذه الأنواع من الإرجاع
تلقي تحذيرًا دائمًا حتى بدون هذا الخيار.

يتم تمكين هذا التحذير أيضًا بواسطة اكسترا.

-ماين
تحذير إذا كان نوع "رئيسي" مريبًا. يجب أن تكون "main" دالة مع خارجية
linkage ، وإرجاع int ، وأخذ أي من الحجج الصفرية ، أو اثنتين أو ثلاث حجج من
الأنواع المناسبة. يتم تمكين هذا التحذير افتراضيًا في C ++ ويتم تمكينه بواسطة أي منهما
الجدار شاحن or -بيدانتيك.

-فاقد-الأقواس
تحذير إذا لم يتم وضع مُهيئ التجميع أو الاتحاد بشكل كامل بين قوسين. في التالي
على سبيل المثال ، لم يتم وضع مُهيئ "a" بين قوسين بشكل كامل ، ولكن مُهيئ "b" يكون بشكل كامل
بين قوسين. تم تمكين هذا التحذير من قبل الجدار شاحن في C.

int a [2] [2] = {0، 1، 2، 3} ؛
int b [2] [2] = {{0، 1}، {2، 3}} ؛

تم تمكين هذا التحذير بواسطة الجدار شاحن.

-مفقود-يشمل-dirs (C و C ++ و Objective-C و Objective-C ++ فقط)
تحذير إذا كان دليل التضمين الذي يوفره المستخدم غير موجود.

أقواس
تحذير إذا تم حذف الأقواس في سياقات معينة ، مثل عندما يكون هناك امتداد
التخصيص في سياق حيث من المتوقع وجود قيمة حقيقة ، أو عندما تكون العوامل متداخلة
التي غالبًا ما يتم الخلط بين الناس حول أسبقيتها.

تحذير أيضًا إذا ظهرت مقارنة مثل "x <= y <= z" ؛ هذا يعادل "(x <= y؟ 1:
0) <= z "، وهو تفسير مختلف عن تفسير الرياضيات العادية
الرموز.

حذر أيضًا من الإنشاءات حيث قد يكون هناك التباس في عبارة "if"
فرع "آخر" ينتمي. فيما يلي مثال على مثل هذه الحالة:

{
اذا كان)
إذا (ب)
فو () ؛
آخر
شريط ()؛
}

في C / C ++ ، ينتمي كل فرع "آخر" إلى عبارة "if" الأعمق الممكنة ، والتي
في هذا المثال هو "إذا (ب)". غالبًا ما لا يكون هذا ما توقعه المبرمج ، مثل
يتضح في المثال أعلاه من خلال المسافة البادئة التي اختارها المبرمج. عندما يكون هناك
احتمالية حدوث هذا الالتباس ، يصدر GCC تحذيرًا عند تحديد هذه العلامة.
لإزالة التحذير ، قم بإضافة أقواس صريحة حول العبارة الداخلية "if" كذلك
لا توجد طريقة يمكن أن تنتمي "أخرى" إلى الضميمة "if". الكود الناتج يبدو
مثله:

{
اذا كان)
{
إذا (ب)
فو () ؛
آخر
شريط ()؛
}
}

حذر أيضًا من الاستخدامات الخطيرة لامتداد GNU لـ "؟:" مع حذف المعامل الأوسط.
عندما يكون الشرط في "؟": عامل التشغيل تعبيرًا منطقيًا ، تكون القيمة المحذوفة
دائمًا 1. غالبًا ما يتوقع المبرمجون أن تكون قيمة محسوبة داخل الشرط
التعبير بدلا من ذلك.

تم تمكين هذا التحذير بواسطة الجدار شاحن.

نقطة العواقب
تحذير من التعليمات البرمجية التي قد تحتوي على دلالات غير محددة بسبب انتهاكات التسلسل
قواعد النقاط في معايير C و C ++.

تحدد معايير C و C ++ الترتيب الذي تكون به التعبيرات في برنامج C / C ++
تقييمها من حيث تسلسل نقاط، والتي تمثل ترتيبًا جزئيًا بين
تنفيذ أجزاء من البرنامج: تلك التي نفذت قبل نقطة التسلسل ، وتلك
أعدم بعد ذلك. تحدث هذه بعد تقييم التعبير الكامل (واحد الذي
ليس جزءًا من تعبير أكبر) ، بعد تقييم المعامل الأول لـ
عامل التشغيل "&&"، "||"، "؟:" أو "،" (فاصلة) ، قبل استدعاء الوظيفة (ولكن بعد
تقييم الحجج الخاصة بها والتعبير الذي يشير إلى الوظيفة المطلوبة) ، وفي
أماكن أخرى معينة. بخلاف ما يتم التعبير عنه بواسطة قواعد نقطة التسلسل ، الترتيب
لم يتم تحديد تقييم التعبيرات الفرعية للتعبير. كل هذه القواعد
وصف طلبًا جزئيًا فقط وليس طلبًا إجماليًا ، لأنه ، على سبيل المثال ، إذا كان اثنان
يتم استدعاء الدوال ضمن تعبير واحد مع عدم وجود نقطة تسلسل بينهما ، فإن
الترتيب الذي يتم استدعاء الوظائف به غير محدد. ومع ذلك ، فإن المعايير
قررت اللجنة أن استدعاءات الوظائف لا تتداخل.

لم يتم تحديده عند إجراء تعديلات بين نقاط التسلسل على قيم
سارية المفعول. البرامج التي يعتمد سلوكها على ذلك لها سلوك غير محدد ؛
تحدد معايير C و C ++ أن "بين نقطة التسلسل السابقة والتالية أ
الكائن يجب أن يتم تعديل قيمته المخزنة مرة واحدة على الأكثر من خلال تقييم
التعبير. علاوة على ذلك ، يجب قراءة القيمة السابقة فقط لتحديد القيمة
يتم تخزينها ". إذا خالف أحد البرامج هذه القواعد ، فإن النتائج على أي منها
التنفيذ لا يمكن التنبؤ به تمامًا.

أمثلة التعليمات البرمجية ذات السلوك غير المحدد هي "a = a ++؛" و "a [n] = b [n ++]" و "a [i ++] =
ط ؛ ". لا يتم تشخيص بعض الحالات الأكثر تعقيدًا من خلال هذا الخيار ، وقد يؤدي ذلك إلى ظهور
نتيجة إيجابية خاطئة من حين لآخر ، ولكن بشكل عام وجد أنها فعالة إلى حد ما في
الكشف عن هذا النوع من المشاكل في البرامج.

تمت صياغة المعيار بشكل مربك ، لذلك هناك بعض الجدل حول الدقة
معنى قواعد نقطة التسلسل في الحالات الدقيقة. روابط لمناقشات
المشكلة ، بما في ذلك التعريفات الرسمية المقترحة ، يمكن العثور عليها في صفحة قراءات دول مجلس التعاون الخليجي ،
فيhttp://gcc.gnu.org/readings.html>.

تم تمكين هذا التحذير بواسطة الجدار شاحن لـ C و C ++.

-لا عودة-المحلية-addr
لا تحذر من إرجاع مؤشر (أو في C ++ ، مرجع) إلى متغير يذهب
خارج النطاق بعد عودة الوظيفة.

- نوع الإرجاع
تحذير عندما يتم تعريف دالة بنوع إرجاع يكون افتراضيًا على "int". أيضا
التحذير من أي عبارة "إرجاع" بدون قيمة إرجاع في دالة من نوع إرجاعها
ليس "باطلاً" (السقوط من نهاية الوظيفة يعتبر الجسم عائداً
بدون قيمة) ، وحول تعليمة "إرجاع" مع تعبير في دالة
الذي يكون نوع الإرجاع "باطل".

بالنسبة لـ C ++ ، فإن الوظيفة التي لا تحتوي على نوع إرجاع تنتج دائمًا رسالة تشخيص ، حتى
متى - نوع العودة محدد. الاستثناءات الوحيدة هي الوظائف "الرئيسية"
المحددة في رؤوس النظام.

تم تمكين هذا التحذير بواسطة الجدار شاحن.

-Wshift- العد سلبي
تحذير إذا كان عدد المناوبات سالبًا. يتم تمكين هذا التحذير بشكل افتراضي.

-Wshift-count-overflow
تحذير إذا كان عدد الإزاحة> = عرض النوع. يتم تمكين هذا التحذير بشكل افتراضي.

-سويتش
تحذير عندما تحتوي عبارة "switch" على فهرس من النوع الذي تم تعداده ويفتقر إلى "case"
لواحد أو أكثر من الرموز المسماة لهذا التعداد. (وجود علامة "افتراضي"
تمنع التسمية هذا التحذير.) تسميات "الحالة" خارج نطاق التعداد أيضًا
إثارة تحذيرات عند استخدام هذا الخيار (حتى إذا كان هناك تسمية "افتراضية"). هذه
تم تمكين التحذير بواسطة الجدار شاحن.

- مفتاح التبديل الافتراضي
تحذير عندما لا تحتوي عبارة "switch" على حالة "افتراضية".

-سويتش-تعداد
تحذير عندما تحتوي عبارة "switch" على فهرس من النوع الذي تم تعداده ويفتقر إلى "case"
لواحد أو أكثر من الرموز المسماة لهذا التعداد. تسميات "الحالة" خارج
نطاق التعداد يثير أيضًا تحذيرات عند استخدام هذا الخيار. والفرق الوحيد
ما بين -سويتش وهذا الخيار هو أن هذا الخيار يعطي تحذيرًا بشأن حذف
رمز التعداد حتى إذا كان هناك تسمية "افتراضية".

-سويتش- منطقية
تحذير عندما تحتوي عبارة "switch" على فهرس من النوع المنطقي. من الممكن
قم بإيقاف هذا التحذير عن طريق تحويل التعبير المسيطر إلى نوع آخر بخلاف
"منطقي". على سبيل المثال:

التبديل ((int) (أ == 4))
{
...
}

يتم تمكين هذا التحذير افتراضيًا لبرامج C و C ++.

-Wsync- ناند (C و C ++ فقط)
تحذير عندما تكون الدالات المضمنة "__sync_fetch_and_nand" و "__sync_nand_and_fetch"
تستخدم. غيرت هذه الوظائف الدلالات في دول مجلس التعاون الخليجي 4.4.

-Wtrigraphs
تحذير في حالة مواجهة أي رسومات ثلاثية الأبعاد قد تغير معنى البرنامج
(لا يتم تحذير الأشكال الثلاثية في التعليقات). تم تمكين هذا التحذير من قبل الجدار شاحن.

-غير مستغلة-لكن-ضبط-المعلمة
تحذير عندما يتم تعيين معلمة دالة إلى ، ولكن بخلاف ذلك غير مستخدمة (بخلاف
إعلانها).

لمنع هذا التحذير استخدم السمة "غير المستخدمة".

يتم تمكين هذا التحذير أيضًا بواسطة -مذهل مع اكسترا.

- غير مألوف - ولكن - مجموعة - متغير
تحذير عندما يتم تعيين متغير محلي لـ ، ولكنه غير مستخدم بخلاف ذلك (بصرف النظر عن
إعلان). تم تمكين هذا التحذير من قبل الجدار شاحن.

لمنع هذا التحذير استخدم السمة "غير المستخدمة".

يتم تمكين هذا التحذير أيضًا بواسطة -مذهل، والذي يتم تمكينه بواسطة الجدار شاحن.

وظيفة غير مألوفة
تحذير عند الإعلان عن وظيفة ثابتة ولكن لم يتم تعريفها أو عند كونها ثابتة غير مضمنة
الوظيفة غير مستخدمة. تم تمكين هذا التحذير من قبل الجدار شاحن.

-تسمية غير مألوفة
تحذير كلما تم الإعلان عن ملصق ولكن لم يتم استخدامه. تم تمكين هذا التحذير من قبل الجدار شاحن.

لمنع هذا التحذير استخدم السمة "غير المستخدمة".

-غير المستخدمة-المحلية-typedefs (C و Objective-C و C ++ و Objective-C ++ فقط)
تحذير عند عدم استخدام محرف معرف محليًا في دالة. هذا التحذير
مكن من قبل الجدار شاحن.

-غير مألوف- المعلمة
تحذير عند عدم استخدام معلمة دالة بصرف النظر عن إعلانها.

لمنع هذا التحذير استخدم السمة "غير المستخدمة".

-لا-نتائج-غير مستخدمة
لا تحذر إذا قام متصل دالة مميزة بالسمة "warn_unused_result" بذلك
لا تستخدم قيمته المرجعة. الافتراضي هو نتيجة غير مرغوب فيها.

- متغير غير مألوف
تحذير عند عدم استخدام متغير محلي أو متغير ثابت غير ثابت بخلاف
إعلانها. تم تمكين هذا التحذير من قبل الجدار شاحن.

لمنع هذا التحذير استخدم السمة "غير المستخدمة".

-قيمة غير مألوفة
تحذير عندما تقوم عبارة بحساب نتيجة لم يتم استخدامها صراحةً. يقمع
يلقي هذا التحذير التعبير غير المستخدم إلى "باطل". يتضمن هذا تعبير-
العبارة أو الجانب الأيسر من تعبير فاصلة لا يحتوي على أي آثار جانبية.
على سبيل المثال ، يتسبب تعبير مثل "x [i، j]" في تحذير ، بينما "x [(void) i، j]"
لا.

تم تمكين هذا التحذير بواسطة الجدار شاحن.

-مذهل
كل ما سبق -مذهل الخيارات مجتمعة.

للحصول على تحذير بشأن معلمة دالة غير مستخدمة ، يجب عليك إما تحديد
اكسترا -مذهل (لاحظ أن الجدار شاحن يدل -مذهل) ، أو حدد بشكل منفصل
-غير مألوف- المعلمة.

غير مهيأ
تحذير إذا تم استخدام متغير تلقائي دون التهيئة أولاً أو إذا كان متغيرًا
قد يتم ضربه بمكالمة "setjmp". في C ++ ، تحذير إذا كان المرجع غير ثابت أو غير
يظهر العضو "const" الثابت في فئة بدون منشئات.

إذا كنت تريد التحذير من التعليمات البرمجية التي تستخدم القيمة غير المهيأة للمتغير في
المُهيئ الخاص به ، استخدم -نفس الذات الخيار.

تحدث هذه التحذيرات للعناصر الفردية غير المهيأة أو المضطربة للهيكل ،
متغيرات الاتحاد أو المصفوفة وكذلك للمتغيرات غير المهيأة أو المتضخمة
ككل. لا تحدث للمتغيرات أو العناصر التي تم الإعلان عنها بأنها "متقلبة". لأن
تعتمد هذه التحذيرات على التحسين والمتغيرات الدقيقة أو العناصر التي توجد لها
هي تحذيرات تعتمد على خيارات التحسين الدقيقة وإصدار GCC المستخدم.

لاحظ أنه قد لا يكون هناك تحذير بشأن متغير يستخدم فقط لحساب
القيمة التي لا يتم استخدامها في حد ذاتها أبدًا ، لأن مثل هذه الحسابات يمكن حذفها من خلال تدفق البيانات
قبل طباعة التحذيرات.

- ربما - غير مهيأ
بالنسبة للمتغير التلقائي ، إذا كان هناك مسار من إدخال الوظيفة إلى استخدام
المتغير الذي تمت تهيئته ، ولكن توجد بعض المسارات الأخرى التي يمكن لـ
المتغير غير مهيأ ، يرسل المترجم تحذيرًا إذا لم يتمكن من إثبات
لا يتم تنفيذ المسارات غير المهيأة في وقت التشغيل. هذه التحذيرات اختيارية
لأن GCC ليس ذكيًا بما يكفي لمعرفة جميع الأسباب التي قد تجعل الرمز صحيحًا
على الرغم من ظهور خطأ ما. فيما يلي مثال على كيفية حدوث ذلك:

{
int x ؛
التبديل (ص)
{
الحالة 1: س = 1 ؛
كسر؛
الحالة 2: س = 4 ؛
كسر؛
الحالة 3: س = 5 ؛
}
foo (x) ؛
}

إذا كانت قيمة "y" دائمًا 1 أو 2 أو 3 ، فسيتم تهيئة "x" دائمًا ، ولكن GCC
لا يعرف هذا. لإيقاف التحذير ، تحتاج إلى تقديم حالة افتراضية مع
يجزم(0) أو رمز مشابه.

يحذر هذا الخيار أيضًا عندما يمكن تغيير متغير تلقائي غير متغير بواسطة a
استدعاء "longjmp". هذه التحذيرات أيضًا ممكنة فقط في التحسين
التحويل البرمجي.

يرى المترجم فقط المكالمات إلى "setjmp". لا يمكن أن تعرف أين ستكون "longjmp"
مسمى؛ في الواقع ، يمكن لمعالج الإشارة الاتصال بها في أي نقطة في الكود. ك
نتيجة لذلك ، قد تتلقى تحذيرًا حتى في حالة عدم وجود مشكلة في الواقع لأن "longjmp"
في الواقع لا يمكن استدعاؤها في المكان الذي من شأنه أن يسبب مشكلة.

يمكن تجنب بعض التحذيرات الزائفة إذا أعلنت عن جميع الوظائف التي تستخدمها
لا تعود أبدا باسم "نورترن".

تم تمكين هذا التحذير بواسطة الجدار شاحن or اكسترا.

-Wunknown-pragmas
تحذير عند مواجهة أمر "#pragma" لا يفهمه مجلس التعاون الخليجي. لو هذا
يتم استخدام خيار سطر الأوامر ، حتى يتم إصدار تحذيرات لبرامج غير معروفة في النظام
ملفات الرأس. ليس هذا هو الحال إذا تم تمكين التحذيرات فقط بواسطة الجدار شاحن
خيار سطر الأوامر.

-لا-براغماس
لا تحذر من إساءة استخدام البراغمات ، مثل المعامِلات غير الصحيحة أو الصياغة غير الصحيحة أو
الصراعات بين البراغمات. أنظر أيضا -Wunknown-pragmas.

-Wstrict- التعرج
يكون هذا الخيار نشطًا فقط عندما -تعرج صارم نشط. إنه يحذر من أن التعليمات البرمجية
قد يكسر قواعد التعرج الصارمة التي يستخدمها المترجم للتحسين.
لا يشير التحذير إلى جميع الحالات ، ولكنه يحاول التعرف على الحالات الأكثر شيوعًا
المزالق. تم تضمينه في الجدار شاحن. إنه يعادل -Wstrict-Aliasing = 3

-Wstrict-aliasing = n
يكون هذا الخيار نشطًا فقط عندما -تعرج صارم نشط. إنه يحذر من أن التعليمات البرمجية
قد يكسر قواعد التعرج الصارمة التي يستخدمها المترجم للتحسين.
المستويات الأعلى تتوافق مع دقة أعلى (عدد أقل من الإيجابيات الخاطئة). مستويات أعلى
تتوافق أيضًا مع المزيد من الجهد ، على غرار الطريقة -O الأشغال. -Wstrict- التعرج is
أي ما يعادل -Wstrict-Aliasing = 3.

المستوى 1: الأكثر عدوانية ، والأسرع ، والأقل دقة. ربما تكون مفيدة عندما تكون المستويات الأعلى
لا تحذر ولكن -تعرج صارم لا يزال يكسر الكود ، لأنه يحتوي على عدد قليل جدًا من الأخطاء
السلبيات. ومع ذلك ، فإنه يحتوي على العديد من الإيجابيات الخاطئة. يحذر من جميع تحويلات المؤشر
بين الأنواع غير المتوافقة التي قد تكون غير متوافقة ، حتى لو لم يتم الغاء الإشارة إليها. يمتد في المقدمة
النهاية فقط.

المستوى 2: عدواني ، سريع ، غير دقيق للغاية. قد لا يزال لديه العديد من الإيجابيات الخاطئة (لا
ما يصل إلى المستوى 1 مع ذلك) ، وعدد قليل من السلبيات الخاطئة (ولكن ربما أكثر من المستوى 1).
على عكس المستوى 1 ، فإنه يحذر فقط عند أخذ العنوان. يحذر من الأنواع غير المكتملة.
يعمل في الواجهة الأمامية فقط.

المستوى 3 (افتراضي لـ -Wstrict- التعرج): يجب أن يحتوي على عدد قليل جدًا من الإيجابيات الخاطئة وقليلًا
السلبيات الكاذبة. أبطأ قليلاً من المستويات 1 أو 2 عند تمكين التحسين.
يعتني بنمط التورية المشترك + الإسناد في الواجهة الأمامية:
"* (int *) & some_float". إذا تم تمكين التحسين ، فإنه يعمل أيضًا في النهاية الخلفية ، حيث
يتعامل مع حالات بيان متعددة باستخدام نقاط إلى المعلومات الحساسة للتدفق.
يحذر فقط عند إلغاء الإشارة إلى المؤشر المحول. لا تحذر من عدم اكتمال
أنواع.

-Wstrict- تجاوز
-Wstrict- تجاوز =n
يكون هذا الخيار نشطًا فقط عندما - تجاوز الحد نشط. يحذر من القضايا
حيث يقوم المترجم بالتحسين على أساس الافتراض بأن التدفق الموقعة لا يفعل ذلك
تحدث. لاحظ أنه لا يحذر من جميع الحالات التي قد يتجاوز فيها الرمز: إنه
يحذر فقط من الحالات التي يقوم فيها المترجم بتنفيذ بعض التحسين. وهكذا هذا
تحذير يعتمد على مستوى التحسين.

يعد التحسين الذي يفترض عدم حدوث تجاوز الموقع آمنًا تمامًا إذا
قيم المتغيرات المعنية هي أن الفائض لا يحدث أبدًا ، في الواقع ،
تحدث. لذلك يمكن أن يعطي هذا التحذير بسهولة إيجابية خاطئة: تحذير حول الكود
هذه ليست مشكلة في الواقع. للمساعدة في التركيز على القضايا الهامة ، عدة تحذيرات
يتم تحديد المستويات. لم يتم إصدار تحذيرات لاستخدام تجاوز موقعة غير محدد
عند تقدير عدد التكرارات التي تتطلبها الحلقة ، لا سيما عند التحديد
ما إذا كان سيتم تنفيذ حلقة على الإطلاق.

- تجاوز الحد = 1
حذر من الحالات المشكوك فيها والتي يسهل تجنبها. على سبيل المثال ، مع
- تجاوز الحد، يبسط المترجم "x + 1> x" إلى 1. هذا المستوى من
-Wstrict- تجاوز تم تمكينه بواسطة الجدار شاحن؛ المستويات الأعلى ليست كذلك ، ويجب أن تكون كذلك
طلبت صراحة.

- تجاوز الحد = 2
تحذير أيضًا من الحالات الأخرى التي يتم فيها تبسيط المقارنة إلى ثابت. ل
مثال: "abs (x)> = 0". يمكن تبسيط هذا فقط عندما - تجاوز الحد في
التأثير ، لأن "abs (INT_MIN)" يتجاوز إلى "INT_MIN" ، وهو أقل من الصفر.
-Wstrict- تجاوز (بدون مستوى) هو نفسه - تجاوز الحد = 2.

- تجاوز الحد = 3
تحذير أيضًا من الحالات الأخرى التي يتم فيها تبسيط المقارنة. على سبيل المثال: "x + 1
> 1 "تم تبسيطه إلى" x> 0 ".

- تجاوز الحد = 4
حذر أيضًا من التبسيطات الأخرى التي لا تغطيها الحالات المذكورة أعلاه. ل
مثال: تم تبسيط "(x * 10) / 5" إلى "x * 2".

- تجاوز الحد = 5
تحذير أيضًا من الحالات التي يقوم فيها المترجم بتقليل مقدار الثابت
تشارك في المقارنة. على سبيل المثال: تم تبسيط "x + 2> y" إلى "x + 1> = y".
يتم الإبلاغ عن هذا فقط عند أعلى مستوى تحذير بسبب هذا التبسيط
ينطبق على العديد من المقارنات ، لذا فإن مستوى التحذير هذا يعطي عددًا كبيرًا جدًا من
ايجابيات كاذبة.

-Wsuggest-سمة =[نقي|CONST|لا رجوع|شكل]
تحذير من الحالات التي قد تكون فيها إضافة سمة مفيدة. السمات حاليا
المدعومة مذكورة أدناه.

-Wsuggest-attribute = نقي
-Wsuggest-attribute = const
-Wsuggest-attribute = نورتورن
تحذير بشأن الوظائف التي قد تكون مرشحة للسمات "نقية" أو "ثابتة" أو
"لا رجوع". المترجم يحذر فقط من الوظائف المرئية في التجميعات الأخرى
وحدات أو (في حالة "خالص" و "ثابت") إذا كان لا يمكن إثبات أن الوظيفة
يعود بشكل طبيعي. ترجع الدالة بشكل طبيعي إذا لم تحتوي على عدد لانهائي
التكرار أو العودة بشكل غير طبيعي عن طريق الرمي أو استدعاء "إجهاض" أو محاصرة. هذا التحليل
يتطلب الخيار -فيبا-نقي-كونست، والذي يتم تمكينه افتراضيًا في -O وأعلى.
تعمل مستويات التحسين الأعلى على تحسين دقة التحليل.

-Wsuggest-attribute = التنسيق
السمة-تنسيق-مفقود
تحذير حول مؤشرات الوظائف التي قد تكون مرشحة لسمات "التنسيق".
لاحظ أن هؤلاء ليسوا سوى المرشحين المحتملين ، وليسوا المرشحين المطلقين. دول مجلس التعاون الخليجي تخمن ذلك
مؤشرات الوظائف ذات سمات "التنسيق" المستخدمة في التخصيص ،
يجب أن يكون لبيانات التهيئة أو تمرير المعلمة أو الإرجاع المقابل
سمة "format" في النوع الناتج. أي الجانب الأيسر من
التخصيص أو التهيئة ، نوع متغير المعلمة ، أو العائد
يجب أن يكون لنوع الدالة المحتوية على التوالي سمة "format"
لتجنب التحذير.

يحذر مجلس التعاون الخليجي أيضًا من تعريفات الوظائف التي قد تكون مرشحة لـ "التنسيق"
صفات. مرة أخرى ، هؤلاء هم المرشحون المحتملون فقط. يعتقد مجلس التعاون الخليجي أن "التنسيق"
قد تكون السمات مناسبة لأي دالة تستدعي وظيفة مثل
"vprintf" أو "vscanf" ، ولكن قد لا يكون هذا هو الحال دائمًا ، وبعض الوظائف
التي تكون سمات "التنسيق" مناسبة لها قد لا يتم الكشف عنها.

-Wsuggest- أنواع نهائية
تحذير بشأن الأنواع ذات الأساليب الافتراضية حيث يمكن تحسين جودة الكود إذا كان النوع
تم التصريح عنها باستخدام محدد C ++ 11 "نهائي" ، أو ، إن أمكن ، تم الإعلان عنها في ملف
مجهول. وهذا يسمح لدول مجلس التعاون الخليجي بإخراج الصورة المتعددة الأشكال بقوة أكبر
المكالمات. يكون هذا التحذير أكثر فاعلية مع تحسين وقت الارتباط ، حيث يكون ملف
المعلومات حول الرسم البياني للتسلسل الهرمي للفئة أكثر اكتمالا.

طرق -Wsuggest-final
حذر من الأساليب الافتراضية التي يمكن أن تتحسن فيها جودة الكود إذا كانت الطريقة كذلك
تم التصريح عنه باستخدام محدد C ++ 11 "النهائي" ، أو إذا أمكن ، تم التصريح عن نوعه في
مساحة اسم مجهول أو مع محدد "نهائي". هذا التحذير أكثر فعالية
مع تحسين وقت الارتباط ، حيث توجد المعلومات حول الرسم البياني للتسلسل الهرمي للفئة
أكثر اكتمالا. من المستحسن النظر في اقتراحات أولا
-Wsuggest- أنواع نهائية ثم إعادة البناء باستخدام التعليقات التوضيحية الجديدة.

-Wsuggest- تجاوز
تحذير من تجاوز الوظائف الافتراضية التي لم يتم تمييزها بكلمة تجاوز الكلمة الأساسية.

- حدود المحارب
حدود المحارب =n
يكون هذا الخيار نشطًا فقط عندما -ftree-vrp نشط (افتراضي لـ -O2 و ما فوق). هو - هي
يحذر من رموز المصفوفات التي تكون دائمًا خارج الحدود. هذا التحذير
مكن من قبل الجدار شاحن.

حدود المحارب = 1
هذا هو مستوى التحذير من - حدود المحارب ويتم تمكينه بواسطة الجدار شاحن؛ مستويات أعلى
ليست كذلك ، ويجب طلبها صراحةً.

حدود المحارب = 2
يحذر مستوى التحذير هذا أيضًا من الوصول خارج الحدود للمصفوفات في نهاية
بنية وللمصفوفات التي يتم الوصول إليها من خلال المؤشرات. قد يعطي مستوى التحذير هذا قيمة
عدد أكبر من الإيجابيات الكاذبة ويتم إلغاء تنشيطه افتراضيًا.

-Wbool- قارن
تحذير من التعبير المنطقي مقارنة بقيمة عدد صحيح مختلفة عن
"خطأ صحيح". على سبيل المثال ، المقارنة التالية خاطئة دائمًا:

كثافة العمليات ن = 5 ؛
...
إذا ((ن> 1) == 2) {...}

تم تمكين هذا التحذير بواسطة الجدار شاحن.

- مؤهلات Wno-مهملة (C و Objective-C فقط)
لا تحذر إذا تم تجاهل مؤهلات الكتابة على المؤشرات. عادةً ما يكون ملف
يحذر المترجم إذا تم تمرير متغير "const char *" إلى وظيفة تأخذ الحرف "char
* ". يمكن استخدام هذا الخيار لمنع مثل هذا التحذير.

-Wno-مهملة-مجموعة- المؤهلات (C و Objective-C فقط)
لا تحذر إذا تم تعيين مؤهلات الكتابة على المصفوفات التي تمثل أهدافًا للمؤشر
مهملة. عادةً ما يحذر المترجم إذا تم تمرير متغير "const int (*) []" إلى
دالة تأخذ معلمة "int (*) []". يمكن استخدام هذا الخيار لقمع
مثل هذا التحذير.

- أنواع المؤشر غير المتوافقة (C و Objective-C فقط)
لا تحذر عند وجود تحويل بين المؤشرات التي لها أنواع غير متوافقة.
هذا التحذير للحالات التي لا يغطيها -لا-مؤشر- تسجيل، الذي يحذر من المؤشر
اجتياز الحجة أو التنازل مع توقيع مختلف.

-Wno- Int- التحويل (C و Objective-C فقط)
لا تحذر من عدم توافق عدد صحيح مع المؤشر والمؤشر لتحويلات عدد صحيح.
يتعلق هذا التحذير بالتحويلات الضمنية ؛ للتحويلات الصريحة التحذيرات
-Wno-int-to-pointer-cast و -لا مؤشر إلى int-cast يمكن استخدامها.

-لا-div-by-صفر
لا تحذر من قسمة الأعداد الصحيحة في وقت الترجمة على صفر. قسمة الفاصلة العائمة على
لا يتم التحذير بشأن الصفر ، حيث يمكن أن يكون طريقة مشروعة للحصول على ما لا نهاية و
نانس.

-Wsystem- رؤوس
طباعة رسائل تحذير للإنشاءات الموجودة في ملفات رأس النظام. تحذيرات من
عادةً ما يتم منع رؤوس النظام ، على افتراض أنها لا تفعل ذلك عادةً
يشير إلى مشاكل حقيقية وسيؤدي فقط إلى زيادة صعوبة قراءة إخراج المترجم. استخدام
يطلب خيار سطر الأوامر هذا من GCC إرسال تحذيرات من رؤوس النظام كما لو كانت
حدثت في رمز المستخدم. ومع ذلك ، لاحظ أن استخدام الجدار شاحن بالتزامن مع هذا الخيار
هل ليس تحذير من البرامج العملية غير المعروفة في رؤوس النظام --- لذلك ، -Wunknown-pragmas
يجب أيضًا استخدامها.

-وترامبولين
تحذير بشأن الترامبولين الذي تم إنشاؤه للمؤشرات للوظائف المتداخلة. الترامبولين هو أ
قطعة صغيرة من البيانات أو التعليمات البرمجية التي تم إنشاؤها في وقت التشغيل على المكدس عند العنوان
من وظيفة متداخلة ، ويتم استخدامها لاستدعاء الوظيفة المتداخلة بشكل غير مباشر.
بالنسبة لبعض الأهداف ، تتكون من بيانات فقط وبالتالي لا تتطلب معالجة خاصة.
ولكن ، بالنسبة لمعظم الأهداف ، يتكون من رمز وبالتالي يتطلب إنشاء المكدس
قابل للتنفيذ حتى يعمل البرنامج بشكل صحيح.

-تعويم-يساوي
تحذير إذا تم استخدام قيم الفاصلة العائمة في مقارنات المساواة.

الفكرة من وراء ذلك هي أنه في بعض الأحيان يكون مناسبًا (للمبرمج)
اعتبر قيم الفاصلة العائمة تقريبية لأرقام حقيقية دقيقة بشكل لا نهائي.
إذا كنت تفعل هذا ، فأنت بحاجة إلى الحساب (عن طريق تحليل الكود ، أو في بعض
بطريقة أخرى) الحد الأقصى أو الحد الأقصى المحتمل للخطأ الذي يقدمه الحساب ، و
السماح بذلك عند إجراء المقارنات (وعند إنتاج المخرجات ، ولكن هذا هو
مشكلة مختلفة). على وجه الخصوص ، بدلاً من اختبار المساواة ، يجب عليك التحقق
لمعرفة ما إذا كانت القيمتان لهما نطاقات متداخلة ؛ ويتم ذلك باستخدام
العوامل العلائقية ، لذلك من المحتمل أن تكون مقارنات المساواة خاطئة.

-تقليدي (C و Objective-C فقط)
تحذير من بعض التركيبات التي تتصرف بشكل مختلف في المعيار التقليدي و ISO C. أيضًا
تحذير بشأن تركيبات ISO C التي ليس لها مكافئ C تقليدي و / أو إشكالية
بنيات يجب تجنبها.

* معلمات الماكرو التي تظهر داخل سلسلة حرفية في نص الماكرو. في
يحدث الاستبدال الكلي التقليدي للغة C ضمن القيم الحرفية للسلسلة ، ولكن في ISO C
لم يحدث ذلك.

* في لغة C التقليدية ، لم تكن بعض توجيهات المعالج المسبق موجودة. تقليدي
اعتبرت المعالجات المسبقة أن السطر هو توجيه فقط إذا كان # ظهر في العمود
1 على الخط. وبالتالي -تقليدي يحذر من التوجيهات التقليدية C
يفهم لكنه يتجاهل لأن # لا يظهر كأول حرف في
الخط. كما يقترح عليك إخفاء توجيهات مثل "#pragma" غير مفهومة
التقليدية C عن طريق وضع مسافة بادئة لهم. بعض التطبيقات التقليدية لا تفعل ذلك
التعرف على "#elif" ، لذا فإن هذا الخيار يقترح تجنبه تمامًا.

* ماكرو يشبه الوظيفة يظهر بدون وسيطات.

* عامل التشغيل أحادي زائد.

* و U عدد صحيح ثابت لاحقة ، أو F or L اللواحق الثابتة للفاصلة العائمة.
(يدعم C التقليدي تنسيق L لاحقة على ثوابت عدد صحيح.) لاحظ ، هذه
تظهر اللواحق في وحدات الماكرو المحددة في رؤوس النظام لمعظم الأنظمة الحديثة ،
على سبيل المثال ال _MIN/_الأعلى وحدات الماكرو في " ". قد يؤدي استخدام وحدات الماكرو هذه في رمز المستخدم
عادة ما تؤدي إلى تحذيرات كاذبة ، ولكن المعالج المسبق في دول مجلس التعاون الخليجي قد فعل ذلك
السياق الكافي لتجنب التحذير في هذه الحالات.

* تم الإعلان عن وظيفة خارجية في كتلة واحدة ثم استخدامها بعد نهاية ملف
منع.

* عبارة "switch" لها معامل من النوع "long".

* إعلان وظيفة غير "ثابت" يتبع واحدًا "ثابتًا". هذا البناء ليس كذلك
مقبولة من قبل بعض مترجمي لغة سي التقليديين.

* نوع ISO لثابت عدد صحيح له عرض أو توقيع مختلف عن نوعه
النوع التقليدي. يتم إصدار هذا التحذير فقط إذا كان أساس الثابت عشرة.
أي القيم السداسية العشرية أو الثماني ، التي تمثل أنماط البت عادة ، ليست كذلك
محذر بشأن.

* تم اكتشاف استخدام تسلسل سلسلة ISO.

* تهيئة المجاميع التلقائية.

* المعرف يتعارض مع التسميات. تفتقر لغة C التقليدية إلى مساحة اسم منفصلة لـ
تسميات.

* بدء النقابات. إذا كانت المُهيئ تساوي صفرًا ، فسيتم حذف التحذير.
يتم ذلك على افتراض ظهور مُهيئ الصفر في كود المستخدم
مشروطة على سبيل المثال "__STDC__" لتجنب فقد تحذيرات المُهيئ والاعتماد عليها
التهيئة الافتراضية إلى الصفر في حالة C التقليدية.

* التحويلات عن طريق النماذج الأولية بين قيم النقطة الثابتة / العائمة والعكس صحيح. ال
عدم وجود هذه النماذج عند التجميع باستخدام لغة C التقليدية يؤدي إلى أسباب خطيرة
مشاكل. هذه مجموعة فرعية من تحذيرات التحويل المحتملة ؛ للمجموعة الكاملة
استعمال - تحويل تقليدي.

* استخدام تعريفات وظائف نمط ISO C. هذا التحذير عن قصد ليس نشر
للإعلانات النموذجية أو الوظائف المتنوعة لأن ميزات ISO C هذه
تظهر في التعليمات البرمجية الخاصة بك عند استخدام وحدات ماكرو libiberty التقليدية لتوافق C ،
"بارامز" و "فبارامز". يتم أيضًا تجاوز هذا التحذير للوظائف المتداخلة
لأن هذه الميزة هي بالفعل امتداد GCC وبالتالي فهي ليست ذات صلة بـ
التوافق C التقليدي.

- تحويل تقليدي (C و Objective-C فقط)
تحذير إذا تسبب النموذج الأولي في تحويل نوع مختلف عما سيحدث
لنفس الحجة في حالة عدم وجود نموذج أولي. وهذا يشمل تحويلات
النقطة الثابتة إلى العائمة والعكس صحيح ، وتغيير العرض أو التحويل
توقيع وسيطة النقطة الثابتة إلا عندما تكون مماثلة للترقية الافتراضية.

- إعلان بعد بيان (C و Objective-C فقط)
تحذير عند العثور على تصريح بعد بيان في كتلة. هذا البناء معروف
من C ++ ، تم تقديمه مع ISO C99 وهو مسموح به افتراضيًا في دول مجلس التعاون الخليجي. ليس
بدعم من ISO C90.

- وندف
تحذير إذا تم تقييم معرف غير معرف في توجيه "#if".

-لا-نهاية-تسميات
لا تحذر عندما يتبع "# آخر" أو "#endif" بنص.

-ظلال
تحذير عندما يلقي متغير محلي أو إعلان بالظلال على متغير آخر ،
معلمة أو نوع أو فئة عضو (في C ++) أو متغير مثيل (في Objective-C) أو
كلما تم تظليل وظيفة مضمنة. لاحظ أنه في لغة C ++ ، يحذر المترجم من وجود ملف
يقوم المتغير المحلي بتظليل محرف صريح ، ولكن ليس إذا ظلل بنية / فئة / تعدادًا.

-لا-ظل-ايفار (الهدف- C فقط)
لا تحذر عندما يقوم متغير محلي بظلال متغير حالة في Objective-C
الأسلوب.

- أكبر من =ليون
تحذير كلما كان جسم أكبر من ليون يتم تعريف بايت.

-Wframe أكبر من =ليون
تحذير إذا كان حجم إطار الوظيفة أكبر من ليون بايت. تم الحساب
لتحديد حجم إطار المكدس تقريبي وليس متحفظًا. الفعلية
قد تكون المتطلبات أكبر إلى حد ما من ليون حتى لو لم تحصل على تحذير. في
بالإضافة إلى ذلك ، أي مساحة مخصصة عبر "تخصيص" أو مصفوفات متغيرة الطول أو ذات صلة
لا يتم تضمين التركيبات من قبل المترجم عند تحديد ما إذا كان سيصدر أم لا
تحذير.

-لا خالية- nonheap- كائن
لا تحذر عند محاولة تحرير كائن لم يتم تخصيصه في الكومة.

-Wstack- استخدام =ليون
تحذير إذا كان استخدام المكدس لوظيفة ما قد يكون أكبر من ليون بايت. الحساب
تم القيام به لتحديد استخدام المكدس بشكل متحفظ. أي مساحة مخصصة عبر "تخصيص" ،
يتم تضمين المصفوفات متغيرة الطول ، أو التركيبات ذات الصلة من قبل المترجم عندما
تحديد إصدار تحذير أم لا.

الرسالة تتماشى مع إخراج -fstack-الاستخدام.

* إذا كان استخدام المكدس ثابتًا تمامًا ولكنه يتجاوز المقدار المحدد ، فسيكون:

تحذير: استخدام المكدس 1120 بايت

* إذا كان استخدام المكدس ديناميكيًا (جزئيًا) ولكنه محدود ، فهو:

تحذير: قد يكون استخدام المكدس 1648 بايت

* إذا كان استخدام المكدس ديناميكيًا (جزئيًا) وليس مقيدًا ، فهو:

تحذير: قد يكون استخدام المكدس غير مقيد

- تحسينات حلقة غير آمنة
تحذير إذا كانت الحلقة لا يمكن تحسينها لأن المترجم لا يمكنه تحمل أي شيء
حدود مؤشرات الحلقة. مع -تحسينات غير آمنة- حلقة تحذير إذا كان المترجم
يجعل مثل هذه الافتراضات.

-Wno- المتحذلق- ms- شكل (أهداف MinGW فقط)
عندما تستخدم في تركيبة مع -Wformat و -متحذلق بدون امتدادات جنو ، هذا
الخيار لتعطيل التحذيرات حول محددات عرض تنسيق "printf" / "scanf" غير ISO
يتم استخدام "I32" و "I64" و "I" على أهداف Windows ، والتي تعتمد على وقت تشغيل MS.

-Wpointer- أريث
تحذير بشأن أي شيء يعتمد على "حجم" نوع الوظيفة أو "الفراغ". جنو سي
يخصص لهذه الأنواع حجمًا 1 ، للملاءمة في العمليات الحسابية مع "باطل *"
المؤشرات والمؤشرات إلى الوظائف. في C ++ ، حذر أيضًا عند إجراء عملية حسابية
يتضمن "NULL". يتم تمكين هذا التحذير أيضًا بواسطة -بيدانتيك.

حدود نوع
تحذير إذا كانت المقارنة صحيحة دائمًا أو خاطئة دائمًا بسبب النطاق المحدود لـ
نوع البيانات ، لكن لا تحذر من التعبيرات الثابتة. على سبيل المثال ، تحذير إذا كان غير موقع
متغير مقابل صفر مع "<" أو "> =". يتم تمكين هذا التحذير أيضًا بواسطة
اكسترا.

-باد-وظيفة-يلقي (C و Objective-C فقط)
تحذير عند توجيه استدعاء دالة إلى نوع غير مطابق. على سبيل المثال ، تحذير عند وجود مكالمة
إلى دالة تعيد نوع عدد صحيح يتم توجيهها إلى نوع المؤشر.

-Wc90-c99-متوافق (C و Objective-C فقط)
تحذير بشأن الميزات غير الموجودة في ISO C90 ، ولكنها موجودة في ISO C99. على سبيل المثال،
تحذير من استخدام المصفوفات ذات الطول المتغير ، النوع "الطويل" ، النوع "المنطقي" ، المركب
الحرفية والمُبدِلات المعينة وما إلى ذلك. هذا الخيار مستقل عن
الوضع القياسي. التحذيرات معطلة في التعبير الذي يلي "__التمديد__".

-Wc99-c11-متوافق (C و Objective-C فقط)
تحذير بشأن الميزات غير الموجودة في ISO C99 ، ولكنها موجودة في ISO C11. على سبيل المثال،
التحذير من استخدام الهياكل والنقابات المجهولة ، مؤهل النوع "_Atomic" ،
محدد فئة التخزين "_Thread_local" ، محدد "_Alignas" ، عامل تشغيل "Alignof" ،
الكلمة الأساسية "_Generic" ، وما إلى ذلك. هذا الخيار مستقل عن الوضع القياسي.
التحذيرات معطلة في التعبير الذي يلي "__التمديد__".

-Wc ++ - متوافق (C و Objective-C فقط)
تحذير بشأن تركيبات ISO C الموجودة خارج المجموعة الفرعية المشتركة لـ ISO C و ISO
C ++ ، على سبيل المثال طلب التحويل الضمني من "void *" إلى مؤشر إلى غير "void"
اكتب.

-Wc ++ 11-متوافق (C ++ و Objective-C ++ فقط)
تحذير بشأن تركيبات C ++ التي يختلف معناها بين ISO C ++ 1998 و ISO C ++ 2011 ،
على سبيل المثال ، المعرفات في ISO C ++ 1998 التي تعتبر كلمات رئيسية في ISO C ++ 2011. هذا التحذير
يشغل -مقلق ويتم تمكينه بواسطة الجدار شاحن.

-Wc ++ 14-متوافق (C ++ و Objective-C ++ فقط)
تحذير بشأن تركيبات C ++ التي يختلف معناها بين ISO C ++ 2011 و ISO C ++ 2014.
تم تمكين هذا التحذير بواسطة الجدار شاحن.

-Wcast-Qual
تحذير كلما تم إلقاء المؤشر لإزالة مؤهل النوع من النوع الهدف.
على سبيل المثال ، حذر من إرسال "const char *" إلى "char *" عادي.

تحذير أيضًا عند عمل فريق عمل يقدم مؤهلًا للنوع بطريقة غير آمنة. ل
على سبيل المثال ، تحويل "char **" إلى "const char **" غير آمن ، كما في هذا المثال:

/ * p هي قيمة char **. * /
const char ** q = (const char **) p ؛
/ * لا بأس من تعيين سلسلة للقراءة فقط إلى حرف ثابت. * /
* q = "سلسلة" ؛
/ * يشير المؤشر الآن char ** إلى ذاكرة القراءة فقط. * /
** ع = 'ب' ؛

-محاذاة البث
تحذير عند إلقاء مؤشر بحيث تكون المحاذاة المطلوبة للهدف
زيادة. على سبيل المثال ، تحذير إذا تم إرسال "char *" إلى "int *" على الأجهزة حيث
يمكن الوصول إلى الأعداد الصحيحة فقط في حدود ثنائية أو أربعة بايت.

-الكتابة-السلاسل
عند ترجمة C ، أعطِ ثوابت السلسلة من النوع "const char [الطول]" بحيث يتم النسخ
عنوان واحد في مؤشر غير "const" "char *" ينتج تحذيرا. هؤلاء
تساعدك التحذيرات في العثور على رمز وقت التجميع الذي يمكنه محاولة الكتابة في سلسلة
ثابت ، ولكن فقط إذا كنت حريصًا جدًا على استخدام "const" في التصريحات
والنماذج. خلاف ذلك ، فهو مجرد مصدر إزعاج. هذا هو السبب في أننا لم نصنع الجدار شاحن
اطلب هذه التحذيرات.

عند تجميع C ++ ، حذر من التحويل المهمل من سلسلة حرفية إلى "char
* ". يتم تمكين هذا التحذير افتراضيًا لبرامج C ++.

-Wclobbered
تحذير من المتغيرات التي يمكن تغييرها بواسطة "longjmp" أو "vfork". هذا التحذير
تم تمكينه أيضًا بواسطة اكسترا.

- المدعومة بشروط (C ++ و Objective-C ++ فقط)
تحذير من التركيبات المدعومة شرطيًا (C ++ 11 [intro.defs]).

-Wconversion
تحذير من التحويلات الضمنية التي قد تغير القيمة. وهذا يشمل التحويلات
بين حقيقي وعدد صحيح ، مثل "abs (x)" عندما تكون "x" هي "double" ؛ بين التحويلات
موقعة وغير موقعة ، مثل "واجهة مستخدم غير موقعة = -1" ؛ والتحويلات إلى أنواع أصغر ، مثل
"sqrtf (M_PI)". لا تحذر من القوالب الصريحة مثل "abs ((int) x)" و "ui =
(بدون علامة) -1 "، أو إذا لم تتغير القيمة بالتحويل كما في" abs (2.0) ".
يمكن تعطيل التحذيرات المتعلقة بالتحويلات بين الأعداد الصحيحة الموقعة وغير الموقعة بواسطة
استخدام -Wno- تسجيل- التحويل.

بالنسبة لـ C ++ ، حذر أيضًا من الخلط بين دقة التحميل الزائد للتحويلات التي يحددها المستخدم ؛ و
التحويلات التي لا تستخدم أبدًا عامل تحويل نوع: التحويلات إلى "باطل" ، نفس الشيء
اكتب أو فئة أساسية أو إشارة إليها. تحذيرات حول التحويلات بين الموقع
ويتم تعطيل الأعداد الصحيحة بدون إشارة افتراضيًا في C ++ ما لم يكن -Wsign- التحويل is
صراحة تمكين.

-Wno- تحويل- خالية (C ++ و Objective-C ++ فقط)
لا تحذر من التحويلات بين أنواع "NULL" وغير المؤشر. -Wconversion- لاغية is
ممكّن افتراضيًا.

-Wzero-as-null-pointer-ثابت (C ++ و Objective-C ++ فقط)
تحذير عند استخدام "0" حرفيًا باعتباره ثابت مؤشر فارغ. يمكن أن يكون هذا مفيدًا لـ
تسهيل التحويل إلى "nullptr" في C ++ 11.

-تاريخ الوقت
تحذير عند مواجهة وحدات الماكرو "__TIME__" أو "__DATE__" أو "__TIMESTAMP__" لأنها
قد يمنع التجميعات القابلة للاستنساخ متطابقة البت.

-حذف-غير مكتمل (C ++ و Objective-C ++ فقط)
تحذير عند حذف مؤشر إلى نوع غير مكتمل ، مما قد يتسبب في سلوك غير محدد في
مدة العرض. يتم تمكين هذا التحذير بشكل افتراضي.

يلقي بلا فائدة (C ++ و Objective-C ++ فقط)
تحذير عند تحويل التعبير إلى نوعه الخاص.

-جسم فارغ
تحذير إذا ظهر نص فارغ في عبارة "if" أو "else" أو "do while". هذا التحذير
يتم تمكينه أيضًا بواسطة اكسترا.

-وينوم-قارن
تحذير من المقارنة بين قيم الأنواع المعدودة المختلفة. في تعداد C ++
يتم أيضًا تشخيص حالات عدم التطابق في التعبيرات الشرطية ويتم تمكين التحذير بواسطة
إفتراضي. في C ، يتم تمكين هذا التحذير بواسطة الجدار شاحن.

-القفز-يخطئ-الحرف الأول (C ، Objective-C فقط)
تحذير إذا قفزت عبارة "goto" أو عبارة "switch" إلى الأمام عبر
تهيئة متغير ، أو يقفز للخلف إلى التسمية بعد أن يكون المتغير
مهيأ. هذا يحذر فقط من المتغيرات التي تمت تهيئتها عندما تكون كذلك
أعلن. هذا التحذير مدعوم فقط لـ C و Objective-C ؛ في C ++ هذا النوع من
فرع هو خطأ في أي حال.

-القفز-يخطئ-الحرف الأول تم تضمينه في -Wc ++ - متوافق. يمكن تعطيله باستخدام
-لا-قفزة-يخطئ-الحرف الأول الخيار.

-Wsign- قارن
تحذير عندما تؤدي المقارنة بين القيم الموقعة وغير الموقعة إلى ظهور خطأ
ينتج عندما يتم تحويل القيمة الموقعة إلى قيمة غير موقعة. هذا التحذير ممكّن أيضًا
by اكسترا؛ للحصول على التحذيرات الأخرى من اكسترا بدون هذا التحذير ، استخدم اكسترا
-لا تسجيل- مقارنة.

-Wsign- التحويل
تحذير من التحويلات الضمنية التي قد تغير علامة قيمة عدد صحيح ، مثل
تخصيص تعبير عدد صحيح بعلامة لمتغير عدد صحيح بدون إشارة. صريح
يلقي الصمت التحذير. في C ، يتم تمكين هذا الخيار أيضًا من خلال -Wconversion.

-الطفو- التحويل
تحذير من التحويلات الضمنية التي تقلل من دقة القيمة الحقيقية. هذه
يتضمن تحويلات من حقيقي إلى عدد صحيح ، ومن دقة أعلى حقيقية إلى أقل
القيم الحقيقية الدقيقة. يتم تمكين هذا الخيار أيضًا بواسطة -Wconversion.

-مقاس-إلغاء التخصيص (C ++ و Objective-C ++ فقط)
تحذير بشأن تعريف وظيفة إلغاء التخصيص غير الحجم

عامل باطل حذف (باطل *) لا استثناء ؛
عامل باطل حذف [] (باطل *) noexcept؛

بدون تعريف دالة إلغاء تخصيص الحجم المقابل

حذف عامل باطل (void *، std :: size_t) noexcept؛
عامل باطل حذف [] (void *، std :: size_t) noexcept؛

أو العكس. تم التمكين بواسطة اكسترا الرائعة بالإضافة إلى -إلغاء تخصيص.

-حجم المؤشر-memaccess
التحذير من معلمات الطول المشبوهة لبعض الوظائف المضمنة في السلاسل والذاكرة
إذا كانت الحجة تستخدم "sizeof". يحذر هذا التحذير على سبيل المثال من "memset (ptr، 0، sizeof
(ptr)) ؛ "إذا لم يكن" ptr "مصفوفة ، ولكنه مؤشر ، ويقترح إصلاحًا محتملاً ، أو
حول "memcpy (& foo، ptr، sizeof (& foo))؛". تم تمكين هذا التحذير من قبل الجدار شاحن.

-Wsizeof- مصفوفة-وسيطة
تحذير عند تطبيق عامل التشغيل "sizeof" على معلمة تم إعلانها كمصفوفة
في تعريف الوظيفة. يتم تمكين هذا التحذير افتراضيًا لبرامج C و C ++.

-Wmemset-transposed-args
تحذير للمكالمات المشبوهة لوظيفة "memset" المضمنة ، إذا كانت الوسيطة الثانية كذلك
ليس صفرًا والوسيطة الثالثة هي صفر. هذا يحذر على سبيل المثال @ من "memset (buf، sizeof
buf، 0) "حيث يُرجح أن" memset (buf، 0، sizeof buf) "كان يُقصد به بدلاً من ذلك.
يتم إصدار التشخيص فقط إذا كانت الوسيطة الثالثة هي صفر حرفي. إذا كان هو بعض
التعبير المطوي إلى الصفر ، أو المصبوب من الصفر إلى نوع ما ، وما إلى ذلك ، فهو أقل بكثير
من المحتمل أن يكون المستخدم قد تبادل الحجج عن طريق الخطأ ولا يتم إصدار أي تحذير.
تم تمكين هذا التحذير بواسطة الجدار شاحن.

-العنوان
تحذير من الاستخدامات المشبوهة لعناوين الذاكرة. وتشمل هذه استخدام عنوان
تعمل في تعبير شرطي ، مثل "void func (void) ؛ if (func)" ، و
مقارنات بعنوان الذاكرة لسلسلة حرفية ، مثل "if (x ==" abc ")".
تشير هذه الاستخدامات عادةً إلى خطأ مبرمج: عنوان الوظيفة دائمًا
بتقييم صحيح ، لذا فإن استخدامها في الشرط عادة ما يشير إلى أن المبرمج
نسيت الأقواس في استدعاء الوظيفة ؛ والمقارنات مع القيم الحرفية
تؤدي إلى سلوك غير محدد وليست محمولة في لغة C ، لذا فهي تشير عادةً
أن المبرمج كان ينوي استخدام "strcmp". تم تمكين هذا التحذير من قبل الجدار شاحن.

-Wlogical- المرجع
تحذير من الاستخدامات المشبوهة للعوامل المنطقية في التعبيرات. وهذا يشمل استخدام ملفات
عوامل التشغيل المنطقية في السياقات التي من المحتمل أن يتوقع فيها وجود عامل قليل الحكمة.

-الأقواس المنطقية
تحذير من عدم استخدام المنطق في معامل الجانب الأيسر للمقارنة. هذه
الخيار لا يحذر إذا كان المعامل RHS من النوع المنطقي. الغرض منه هو
كشف الشفرة المشبوهة مثل ما يلي:

كثافة العمليات
...
إذا (! a> 1) {...}

من الممكن قمع التحذير بلف LHS بين أقواس:

إذا ((! a)> 1) {...}

تم تمكين هذا التحذير بواسطة الجدار شاحن.

-إجمالي-العائد
تحذير إذا تم تحديد أو استدعاء أي وظائف تعيد الهياكل أو النقابات. (في
اللغات التي يمكنك من خلالها إرجاع مصفوفة ، يؤدي هذا أيضًا إلى تحذير.)

-لا-عدوانية-حلقة-أمثلية
تحذير إذا كان المترجم في حلقة مع عدد ثابت من التكرارات يكتشفها غير معرف
السلوك في بعض العبارات أثناء تكرار واحد أو أكثر.

-لا-سمات
لا تحذر إذا تم استخدام "__ سمة__" غير متوقعة ، مثل السمات غير المعروفة ،
سمات الوظيفة المطبقة على المتغيرات ، إلخ. هذا لا يوقف الأخطاء لـ
استخدام غير صحيح للسمات المدعومة.

إعادة تعريف -Wno- المدمج- الماكرو
لا تحذر إذا تم إعادة تعريف بعض وحدات الماكرو المضمنة. يؤدي هذا إلى منع التحذيرات الخاصة بـ
إعادة تعريف "__TIMESTAMP__" و "__TIME__" و "__DATE__" و "__FILE__" و
"__BASE_FILE__".

-نماذج Wstrict (C و Objective-C فقط)
تحذير إذا تم التصريح عن دالة أو تعريفها بدون تحديد أنواع الوسيطات. (ان
يُسمح بتعريف دالة النمط القديم دون سابق إنذار إذا كان مسبوقًا ب
التصريح الذي يحدد أنواع الوسيطات.)

- إعلان على الطراز القديم (C و Objective-C فقط)
تحذير من الاستخدامات القديمة ، وفقًا لمعيار C ، في إعلان. ل
على سبيل المثال ، حذر من أن محددات فئة التخزين مثل "ثابت" ليست هي الأشياء الأولى في ملف
إعلان. يتم تمكين هذا التحذير أيضًا بواسطة اكسترا.

- تعريف الطراز القديم (C و Objective-C فقط)
تحذير إذا تم استخدام تعريف دالة ذات نمط قديم. يتم إعطاء تحذير حتى لو كان هناك
نموذج أولي سابق.

-Wmissing- نوع المعلمة (C و Objective-C فقط)
يتم الإعلان عن معلمة الوظيفة بدون محدد النوع في وظائف نمط K & R:

فو (شريط) باطل {}

يتم تمكين هذا التحذير أيضًا بواسطة اكسترا.

-النماذج الأولية المفقودة (C و Objective-C فقط)
تحذير إذا تم تعريف دالة عالمية بدون إعلان نموذج أولي سابق. هذه
يتم إصدار تحذير حتى لو كان التعريف نفسه يوفر نموذجًا أوليًا. استخدم هذا الخيار
لاكتشاف الوظائف العامة التي لا تحتوي على إعلان نموذج أولي مطابق في ملف
الملف الاساسي. هذا الخيار غير صالح لـ C ++ لأن كافة تعريفات الوظائف
تقديم نماذج أولية وإعلان عدم المطابقة يعلن وجود حمل زائد بدلاً من
يتعارض مع إعلان سابق. يستخدم - الإقرارات الناقصة للكشف عن المفقودين
الإعلانات في C ++.

- الإقرارات الناقصة
تحذير إذا تم تعريف دالة عالمية بدون تصريح سابق. افعل ذلك حتى لو
يوفر التعريف نفسه نموذجًا أوليًا. استخدم هذا الخيار لاكتشاف العالمية
الوظائف التي لم يتم التصريح عنها في ملفات الرأس. في C ، لم يتم إصدار أي تحذيرات بشأن
الدوال مع الإعلانات السابقة غير النموذجية ؛ استعمال -النماذج الأولية المفقودة للكشف عن
نماذج مفقودة. في C ++ ، لا يتم إصدار تحذيرات لقوالب الوظائف أو من أجل
وظائف مضمنة ، أو وظائف في مساحات أسماء مجهولة.

-ضياع-الحقل-التهيئة
تحذير إذا كانت هناك بعض الحقول المفقودة في مُهيئ البنية. على سبيل المثال ، ما يلي
تسبب الشفرة في مثل هذا التحذير ، لأن "xh" هي صفر ضمنيًا:

هيكل s {int f ، g ، h ؛ } ؛
هيكل sx = {3، 4} ؛

هذا الخيار لا يحذر من التهيئة المعينة ، لذلك التعديل التالي
لا يطلق تحذير:

هيكل s {int f ، g ، h ؛ } ؛
هيكل sx = {.f = 3، .g = 4} ؛

في لغة C ++ ، لا يحذر هذا الخيار من المُهيئ {} الفارغ ، على سبيل المثال:

هيكل s {int f ، g ، h ؛ } ؛
sx = {} ؛

تم تضمين هذا التحذير في اكسترا. للحصول على الآخرين اكسترا تحذيرات بدون هذا ،
استعمال اكسترا -لا-مفقودة-الحقل-التهيئة.

-ونو- multichar
لا تحذر إذا كان ثابت متعدد الأحرف ('FOOF') يستخدم. عادة ما يشيرون إلى أ
خطأ مطبعي في كود المستخدم ، لأن لديهم قيم محددة من قبل التنفيذ ، ويجب ألا تكون كذلك
المستخدمة في التعليمات البرمجية المحمولة.

- غير طبيعي[=<لا شيء|id|NFC|نفكك>]
في ISO C و ISO C ++ ، يختلف معرفان إذا كانا متتابعين مختلفين من
الشخصيات. ومع ذلك ، في بعض الأحيان عندما تكون الأحرف خارج مجموعة أحرف ASCII الأساسية
تستخدم ، يمكن أن يكون لديك تسلسلين مختلفين للأحرف يبدوان متشابهين. لتجنب
الارتباك ، يحدد معيار ISO 10646 بعضًا التطبيع القواعد والتي عند تطبيقها
تأكد من تحويل تسلسلين متشابهين إلى نفس التسلسل. مجلس التعاون الخليجي
يمكنه تحذيرك إذا كنت تستخدم معرفات لم يتم تطبيعها ؛ هذا الخيار
يتحكم في هذا التحذير.

هناك أربعة مستويات من التحذير مدعومة من قبل دول مجلس التعاون الخليجي. الافتراضي هو غير طبيعي = nfc,
الذي يحذر من أي معرف غير موجود في النموذج القياسي ISO 10646 "C" ،
NFC. NFC هو الشكل الموصى به لمعظم الاستخدامات. إنه يعادل - غير طبيعي.

لسوء الحظ ، هناك بعض الأحرف المسموح بها في المعرفات بواسطة ISO C و ISO C ++
هذا ، عند تحويله إلى NFC ، غير مسموح به في المعرفات. هذا هو ، لا توجد طريقة
لاستخدام هذه الرموز في ISO C أو C ++ المحمولة والحصول على جميع معرفاتك في NFC.
- غير طبيعي = معرف يمنع التحذير لهذه الشخصيات. ومن المؤمل أن المستقبل
إصدارات المعايير المعنية ستصحح هذا ، وهذا هو السبب في أن هذا الخيار ليس كذلك
الافتراضي.

يمكنك إيقاف تشغيل التحذير لجميع الأحرف عن طريق الكتابة - غير طبيعي = لا شيء or
-لا تطبيع. يجب أن تفعل هذا فقط إذا كنت تستخدم بعض التسوية الأخرى
مخطط (مثل "D") ، لأنه بخلاف ذلك يمكنك بسهولة إنشاء أخطاء موجودة حرفيًا
من المستحيل رؤيته.

بعض الأحرف في ISO 10646 لها معاني مميزة ولكنها تبدو متطابقة في بعض الخطوط
أو منهجيات العرض ، خاصة بعد تطبيق التنسيق. على سبيل المثال
يتم عرض "\ u207F" ، "SUPERSCRIPT LATIN SMALL LETTER N" ، تمامًا مثل حرف "n" العادي
تم وضعه في نص مرتفع. تحدد ISO 10646 ملف نفكك مخطط التطبيع ل
قم بتحويل كل هذه إلى نموذج قياسي أيضًا ، ويحذر GCC إذا لم يكن الرمز الخاص بك موجودًا
إذا كنت تستخدم NFKC غير طبيعي = nfkc. هذا التحذير يمكن مقارنته بالتحذير من كل شيء
المعرف الذي يحتوي على الحرف O لأنه قد يتم الخلط بينه وبين الرقم 0 ،
وهكذا ليس الإعداد الافتراضي ، ولكنه قد يكون مفيدًا باعتباره اصطلاحًا ترميزًا محليًا إذا كان
لا يمكن إصلاح بيئة البرمجة لعرض هذه الأحرف بشكل واضح.

-Wno- مهملة
لا تحذر من استخدام الميزات المهملة.

- إقرارات - مهملة
لا تحذر من استخدامات الوظائف ، والمتغيرات ، والأنواع التي تم وضع علامة مهملة بواسطة
باستخدام السمة "مهملة".

-لا تجاوز
لا تحذر من تجاوز وقت الترجمة في التعبيرات الثابتة.

-لا-أودر
تحذير من انتهاكات One Definition Rule أثناء تحسين وقت الارتباط. يتطلب
دمج نوع flto-odr ليتم تمكينها. ممكن بشكل افتراضي.

-Wopenmp-simd
تحذير إذا تجاوز نموذج تكلفة Vectorizer OpenMP أو توجيه Cilk Plus simd
حددها المستخدم. ال -fsimd-cost-model = غير محدود يمكن استخدام الخيار لتخفيف التكلفة
نموذج.

-Woverride-init (C و Objective-C فقط)
تحذير إذا تم تجاوز حقل مهيأ بدون آثار جانبية عند استخدام معين
المبدئ.

تم تضمين هذا التحذير في اكسترا. للحصول على الآخرين اكسترا تحذيرات بدون هذا ،
استعمال اكسترا -Wno-override-init.

-Wpacked
تحذير إذا تم منح البنية السمة المحزمة ، لكن السمة المحزومة لا تحتوي على
تأثير على تخطيط أو حجم الهيكل. قد تكون هذه الهياكل خاطئة ل
فائدة قليلة. على سبيل المثال ، في هذا الرمز ، المتغير "fx" في "شريط البنية" هو
محاذاة بشكل غير صحيح على الرغم من أن "شريط الهيكل" لا يحتوي في حد ذاته على السمة المجمعة:

هيكل فو {
int x ؛
شار أ ، ب ، ج ، د ؛
} __attribute __ ((معبأة)) ؛
شريط البناء {
شار ض ؛
هيكل فو و ؛
};

-Wpacked-bitfield- متوافق
تتجاهل السلاسل 4.1 و 4.2 و 4.3 من GCC السمة "المعبأة" في حقول بت من النوع
"شار". تم إصلاح ذلك في GCC 4.4 ولكن التغيير يمكن أن يؤدي إلى اختلافات في
تخطيط الهيكل. يُعلمك GCC عندما يتم تغيير إزاحة مثل هذا الحقل في GCC
4.4 على سبيل المثال ، لم تعد هناك مساحة 4 بت بين الحقل "أ" و "ب" في هذا
بناء:

هيكل فو
{
شار أ: 4 ؛
شار ب: 8 ؛
} __attribute__ ((معبأة)) ؛

يتم تمكين هذا التحذير بشكل افتراضي. يستخدم -Wno-معبأة-bitfield- متوافق لتعطيل هذا
تحذير.

- مبطن
تحذير إذا تم تضمين الحشو في بنية ، إما لمحاذاة عنصر من
هيكل أو لمحاذاة الهيكل بأكمله. في بعض الأحيان عندما يحدث هذا فمن الممكن
لإعادة ترتيب مجالات الهيكل لتقليل الحشو ، وبالتالي جعل
هيكل أصغر.

- زائدة - decls
تحذير إذا تم الإعلان عن أي شيء أكثر من مرة في نفس النطاق ، حتى في الحالات التي يكون فيها
التصريح المتعدد صالح ولا يغير شيئًا.

-الخارج الغربية (C و Objective-C فقط)
تحذير إذا تمت مصادفة تصريح "خارجي" داخل دالة.

-لا وراثة-varadic-ctor
قم بإلغاء التحذيرات حول استخدام المُنشئات الوراثة لـ C ++ 11 عند الفئة الأساسية
موروث من لديه مُنشئ متغير C ؛ التحذير قيد التشغيل افتراضيًا لأن
علامات الحذف ليست وراثية.

-وينلاين
تحذير إذا كان لا يمكن تضمين دالة تم إعلانها على أنها مضمنة. حتى مع هذا
الخيار ، المترجم لا يحذر من الفشل في الوظائف المضمنة المعلنة في
رؤوس النظام.

يستخدم المترجم مجموعة متنوعة من الأساليب البحثية لتحديد ما إذا كان سيتم تضمين ملف
وظيفة. على سبيل المثال ، يأخذ المترجم في الاعتبار حجم الوظيفة
مضمنة ومقدار التضمين الذي تم إجراؤه بالفعل في الوظيفة الحالية.
لذلك ، يمكن أن تتسبب التغييرات التي تبدو غير مهمة في البرنامج المصدر في حدوث
التحذيرات التي تنتجها -وينلاين لتظهر أو تختفي.

-Wno- غير صالح- offsetof (C ++ و Objective-C ++ فقط)
منع التحذيرات من تطبيق الماكرو "offsetof" على نوع غير POD. وفق
معيار ISO C ++ 2014 ، تطبيق "offsetof" على نوع تخطيط غير قياسي هو
غير معرف. ومع ذلك ، في تطبيقات C ++ الحالية ، يعطي "offsetof" عادةً
نتائج ذات مغزى. هذه العلامة مخصصة للمستخدمين الذين يدركون أنهم يكتبون
رمز غير قابل للنقل والذين اختاروا عمدًا تجاهل التحذير المتعلق به.

قد يتم تخفيف القيود المفروضة على "offsetof" في إصدار مستقبلي من معيار C ++.

-Wno-int-to-pointer-cast
قم بإلغاء التحذيرات من عمليات التحويل إلى نوع المؤشر لعدد صحيح بحجم مختلف. في
C ++ ، يعد الإرسال إلى نوع مؤشر أصغر حجمًا خطأ. وينت إلى-مؤشر يلقي is
ممكّن افتراضيًا.

-لا مؤشر إلى int-cast (C و Objective-C فقط)
قم بإلغاء التحذيرات من عمليات التحويل من مؤشر إلى نوع عدد صحيح بحجم مختلف.

-Winvalid-pch
تحذير إذا تم العثور على رأس مترجم مسبقًا في مسار البحث ولكن لا يمكن استخدامه.

-طويلة الأمد
تحذير في حالة استخدام النوع "الطويل". يتم تمكين هذا من قبل أي منهما -بيدانتيك or
-تقليدي في وضعي ISO C90 و C ++ 98. لمنع رسائل التحذير ، استخدم
- لم يدم طويلا.

-Wvariadic- وحدات الماكرو
تحذير إذا تم استخدام وحدات ماكرو متغيرة في وضع ISO C90 ، أو إذا كانت صيغة GNU البديلة هي
تستخدم في وضع ISO C99. يتم تمكين هذا من قبل أي منهما -بيدانتيك or -تقليدي. إلى
منع رسائل التحذير ، استخدم -لا-varadic- وحدات الماكرو.

-فارجس
تحذير من الاستخدام المشكوك فيه لوحدات الماكرو المستخدمة للتعامل مع الوسائط المتغيرة مثل
"va_start". هذا هو الافتراضي. لمنع رسائل التحذير ، استخدم -لا-فارارجس.

-Wvector-عملية-الأداء
تحذير إذا لم يتم تنفيذ عملية المتجه عبر إمكانيات SIMD للبنية.
مفيد بشكل رئيسي لضبط الأداء. يمكن تنفيذ عملية المتجهات
"متعدد التعريف" ، مما يعني أن العملية العددية يتم تنفيذها على كل متجه
عنصر؛ "بالتوازي" ، مما يعني أن عملية المتجه يتم تنفيذها باستخدام
الحجميات من النوع الأوسع ، والتي عادةً ما تكون أكثر كفاءة في الأداء ؛ و "كفرد واحد
سلمي "، مما يعني أن المتجه يلائم نوعًا عدديًا.

-لا-افتراضية-نقل-تعيين
قم بإلغاء التحذيرات المتعلقة بالوراثة من قاعدة افتراضية بحركة C ++ 11 غير بسيطة
مهمة تشغيل. هذا أمر خطير لأنه إذا كان من الممكن الوصول إلى القاعدة الافتراضية
أكثر من مسار ، يتم تحريكه عدة مرات ، مما قد يعني أن كلا الكائنين ينتهي بهما الأمر
انتقل من الدولة. إذا تمت كتابة عامل تعيين النقل لتجنب الانتقال من
كائن تم نقله من ، يمكن تعطيل هذا التحذير.

-فلا
تحذير إذا تم استخدام مصفوفة متغيرة الطول في الكود. -نو- vla يمنع -بيدانتيك
تحذير من صفيف متغير الطول.

-تقلب- تسجيل- فار
تحذير إذا تم الإعلان عن متغير تسجيل متغير. المعدل المتطاير لا
تمنع كافة التحسينات التي قد تزيل عمليات القراءة و / أو الكتابة للتسجيل
المتغيرات. تم تمكين هذا التحذير من قبل الجدار شاحن.

-Wdisabled- التحسين
تحذير إذا تم تعطيل تصريح التحسين المطلوب. هذا التحذير لا بشكل عام
الإشارة إلى وجود أي خطأ في التعليمات البرمجية الخاصة بك ؛ إنه يشير فقط إلى أن دول مجلس التعاون الخليجي
المحسنون غير قادرين على التعامل مع الكود بشكل فعال. في كثير من الأحيان ، المشكلة هي أن
الكود كبير جدًا أو معقد جدًا ؛ دول مجلس التعاون الخليجي ترفض تحسين البرامج عند التحسين
من المحتمل أن تستغرق وقتًا طويلاً للغاية.

-Wpointer- تسجيل (C و Objective-C فقط)
التحذير من اجتياز حجة المؤشر أو التعيين بمواقع مختلفة. هذه
الخيار مدعوم فقط لـ C و Objective-C. هو ضمني من قبل الجدار شاحن وحسب
-بيدانتيك، والتي يمكن تعطيلها باستخدام -لا-مؤشر- تسجيل.

- حامي Wstack
يكون هذا الخيار نشطًا فقط عندما -حامي-فسك نشط. يحذر من الوظائف
غير محمية ضد تحطيم المكدس.

-الطول-الاوتار
تحذير من ثوابت السلسلة التي تكون أطول من "الحد الأدنى للطول"
المحدد في المعيار C. يسمح المترجمون الحديثون عمومًا بثوابت السلسلة
أطول بكثير من الحد الأدنى للمعيار ، ولكن يجب أن تكون البرامج المحمولة جدًا
تجنب استخدام سلاسل أطول.

ينطبق الحد بعد سلسلة ثابتة ، ولا تحسب الزائدة
نول. في C90 ، كان الحد الأقصى هو 509 حرفًا ؛ في C99 ، تم رفعه إلى 4095. C ++ 98 يفعل
لا تحدد حدًا أدنى معياريًا للحد الأقصى ، لذلك لا نشخص السلاسل ذات الطول المتراكب في
C ++.

هذا الخيار متضمن بواسطة -بيدانتيك، ويمكن تعطيله باستخدام
-لا-طول- سلاسل.

- الثوابت غير الثابتة (C و Objective-C فقط)
إصدار تحذير لأي ثابت عائم لا يحتوي على لاحقة. عند استخدامها
مع -Wsystem- رؤوس يحذر من مثل هذه الثوابت في ملفات رأس النظام.
يمكن أن يكون هذا مفيدًا عند إعداد كود لاستخدامه مع "FLOAT_CONST_DECIMAL64" pragma
من امتداد الفاصلة العشرية العشرية إلى C99.

-Wno- المعينة- init (C و Objective-C فقط)
قم بإلغاء التحذيرات عند استخدام مُهيئ موضعي لتهيئة بنية
تم تمييزه بالسمة "المعينة_المنتهية".

الخيارات لل التصحيح الورك - يجب أولاً الوقوف مع ضم الكعبين معًا، ثم قياس محيط المنطقة الأكثر امتلاءً من الورك، مع المحافظة على شريط القياس موازيًا للأرض. برنامج or مجلس التعاون الخليجي
يوجد في GCC العديد من الخيارات الخاصة التي تُستخدم لتصحيح أخطاء برنامجك أو GCC:

-g إنتاج معلومات تصحيح الأخطاء بالتنسيق الأصلي لنظام التشغيل (الطعنات ، COFF ،
XCOFF أو DWARF 2). يمكن أن يعمل GDB مع معلومات التصحيح هذه.

في معظم الأنظمة التي تستخدم تنسيق Stabs ، -g يتيح استخدام معلومات تصحيح الأخطاء الإضافية
لا يمكن استخدامه إلا GDB ؛ هذه المعلومات الإضافية تجعل تصحيح الأخطاء يعمل بشكل أفضل في GDB ولكن
ربما يجعل مصححات الأخطاء الأخرى تتعطل أو ترفض قراءة البرنامج. إذا أردت أن
السيطرة على وجه التحديد ما إذا كان سيتم إنشاء معلومات إضافية أم لا -غستابس +, -جستابس,
-gxcoff +, -gxcoff، أو -gvms (انظر أدناه).

يسمح لك مجلس التعاون الخليجي باستخدام ملفات -g مع -O. قد الاختصارات المأخوذة عن طريق الكود الأمثل
ينتج أحيانًا نتائج مفاجئة: بعض المتغيرات التي أعلنت عنها قد لا تكون موجودة في
الكل؛ قد يتحرك تدفق السيطرة لفترة وجيزة حيث لم تكن تتوقعه ؛ بعض العبارات قد
لا يتم تنفيذها لأنها تحسب نتائج ثابتة أو أن قيمها موجودة بالفعل
كف؛ قد يتم تنفيذ بعض العبارات في أماكن مختلفة لأنه تم نقلها
من الحلقات.

ومع ذلك ، فإنه يثبت أنه من الممكن تصحيح أخطاء الإخراج المحسن. هذا يجعلها معقولة
لاستخدام المحسن للبرامج التي قد تحتوي على أخطاء.

تكون الخيارات التالية مفيدة عندما يتم إنشاء GCC مع القدرة على المزيد
من تنسيق تصحيح واحد.

-gsplit-قزم
افصل أكبر قدر ممكن من معلومات التصحيح القزم في ملف إخراج منفصل
بالملحق .dwo. يسمح هذا الخيار لنظام الإنشاء بتجنب ربط الملفات
مع معلومات التصحيح. لكي يكون هذا الخيار مفيدًا ، يتطلب مصحح أخطاء قادرًا على
قراءة ملفات .dwo.

-ggdb
إنتاج معلومات تصحيح الأخطاء لاستخدامها بواسطة GDB. هذا يعني استخدام أكثرها تعبيرا
التنسيق المتاح (DWARF 2 ، أو الطعنات ، أو التنسيق الأصلي إذا لم يكن أي منهما متاحًا
مدعوم) ، بما في ذلك امتدادات GDB إذا كان ذلك ممكنًا.

-gpubnames
إنشاء أقسام dwarf .debug_pubnames و .debug_pubtypes.

-ggnu-pubnames
قم بإنشاء أقسام .debug_pubnames و .debug_pubtypes بتنسيق مناسب لـ
التحويل إلى فهرس GDB. هذا الخيار مفيد فقط مع رابط يمكنه
إنتاج إصدار فهرس GDB 7.

-جستابس
قم بإنتاج معلومات تصحيح الأخطاء بتنسيق stabs (إذا كان ذلك مدعومًا) ، بدون GDB
ملحقات. هذا هو التنسيق الذي تستخدمه DBX في معظم أنظمة BSD. في MIPS و Alpha و
أنظمة الإصدار 4 من النظام الخامس ينتج هذا الخيار إخراج طعنات لتصحيح الأخطاء غير الموجودة
يفهمها DBX أو SDB. يتطلب هذا الخيار في أنظمة الإصدار 4 من النظام الخامس GNU
المجمع.

-تصحيح-غير مستخدمة-رموز تصحيح
قم بإنتاج معلومات تصحيح الأخطاء بتنسيق stabs (إذا كان ذلك مدعومًا) ، للرموز فقط
التي يتم استخدامها بالفعل.

-نسبه-فئة-التصحيح-دائما
بدلاً من إرسال معلومات تصحيح الأخطاء لفئة C ++ في ملف كائن واحد فقط ،
إرساله في جميع ملفات الكائنات باستخدام الفئة. يجب استخدام هذا الخيار فقط مع
مصححات الأخطاء غير القادرة على التعامل مع الطريقة التي تُصدر بها دول مجلس التعاون الخليجي عادةً معلومات تصحيح الأخطاء
للفئات لأن استخدام هذا الخيار يزيد من حجم معلومات التصحيح بمقدار
بقدر عامل اثنين.

- قسم أنواع الشوائب
عند استخدام DWARF الإصدار 4 أو أعلى ، يمكن وضع أنواع DIE بمفردها
قسم ".debug_types" بدلاً من جعلها جزءًا من قسم ".debug_info". هو - هي
هو أكثر فاعلية لوضعها في أقسام منفصلة من comdat منذ ذلك الحين يمكن للرابط
إزالة التكرارات. ولكن ليس كل مستهلكي DWARF يدعمون أقسام ".debug_types" حتى الآن
وفي بعض الكائنات ، ينتج ".debug_types" حجم أكبر بدلاً من تصحيح الأخطاء الأصغر
معلومات.

-غستابس +
قم بإنتاج معلومات تصحيح الأخطاء بتنسيق stabs (إذا كان ذلك مدعومًا) ، باستخدام GNU
الامتدادات لا يفهمها إلا مصحح أخطاء جنو (GDB). استخدام هذه الامتدادات
من المحتمل أن تتسبب في تحطم مصححات الأخطاء الأخرى أو ترفض قراءة البرنامج.

-gcoff
قم بإنتاج معلومات التصحيح بتنسيق COFF (إذا كان ذلك مدعومًا). هذا ال
التنسيق المستخدم بواسطة SDB في معظم أنظمة System V قبل الإصدار 4 من النظام الخامس.

-gxcoff
قم بإنشاء معلومات تصحيح الأخطاء بتنسيق XCOFF (إذا كان ذلك مدعومًا). هذا ال
التنسيق المستخدم بواسطة مصحح أخطاء DBX على أنظمة IBM RS / 6000.

-gxcoff +
قم بإنتاج معلومات تصحيح الأخطاء بتنسيق XCOFF (إذا كان ذلك مدعومًا) ، باستخدام GNU
الامتدادات لا يفهمها إلا مصحح أخطاء جنو (GDB). استخدام هذه الامتدادات
من المحتمل أن تتسبب في تعطل مصححات الأخطاء الأخرى أو ترفض قراءة البرنامج ، وقد يتسبب ذلك
المجمعات الأخرى غير مُجمِّع جنو (GAS) تفشل بسبب خطأ.

-قزم-الإصدار
قم بإنشاء معلومات تصحيح الأخطاء بتنسيق DWARF (إذا كان ذلك مدعومًا). قيمة ال
الإصدار قد يكون إما 2 أو 3 أو 4 أو 5 ؛ الإصدار الافتراضي لمعظم الأهداف هو 4. DWARF
الإصدار 5 تجريبي فقط.

لاحظ أنه مع DWARF الإصدار 2 ، تتطلب بعض المنافذ وتستخدم دائمًا بعض المنافذ غير المتضاربة
ملحقات DWARF 3 في جداول التصفية.

الإصدار 4 قد يتطلب GDB 7.0 و -fvar- تتبع- التخصيصات لتحقيق أقصى فائدة.

-جريكورد- مفاتيح دول مجلس التعاون الخليجي
يؤدي رمز التبديل هذا إلى استخدام خيارات سطر الأوامر لاستدعاء المترجم الذي قد يكون
تؤثر على إنشاء الكود ليتم إلحاقه بسمة DW_AT_producer في DWARF
معلومات التصحيح. الخيارات متسلسلة بمسافات تفصل بينها
بعضها البعض ومن إصدار المترجم. أنظر أيضا - مفاتيح دول مجلس التعاون الخليجي لآخر
طريقة لتخزين خيارات المترجم في ملف الكائن. هذا هو الافتراضي.

-Gno- سجل- مفاتيح دول مجلس التعاون الخليجي
عدم السماح بإلحاق خيارات سطر الأوامر بسمة DW_AT_producer في DWARF
معلومات التصحيح.

-القزم الصارم
عدم السماح باستخدام امتدادات لإصدار DWARF القياسي الأحدث من المحدد مع
-قزم-الإصدار. على معظم الأهداف باستخدام امتدادات DWARF غير المتضاربة من وقت لاحق
الإصدارات القياسية مسموح بها.

- صارم - قزم
السماح باستخدام امتدادات لإصدار DWARF القياسي الأحدث من المحدد مع
-قزم-الإصدار.

-gz[=نوع]
قم بإنشاء أقسام تصحيح أخطاء مضغوطة بتنسيق DWARF ، إذا كان ذلك مدعومًا. لو نوع is
لم يتم إعطاء النوع الافتراضي يعتمد على قدرات المجمّع والرابط
مستخدم. نوع قد تكون واحدة من لا شيء (لا تضغط أقسام التصحيح) ، زليب (استخدم zlib
ضغط بتنسيق ELF gABI) ، أو زليب-جنو (استخدم ضغط zlib في GNU التقليدي
صيغة). إذا كان الرابط لا يدعم كتابة أقسام تصحيح الأخطاء المضغوطة ، فإن الخيار
مرفوض. خلاف ذلك ، إذا كان المجمع لا يدعمهم ، -gz بصمت
تجاهله عند إنتاج ملفات الكائن.

-gvms
قم بإنشاء معلومات تصحيح الأخطاء بتنسيق تصحيح أخطاء Alpha / VMS (إذا كان ذلك مدعومًا). هذه
هو التنسيق الذي تستخدمه DEBUG في أنظمة Alpha / VMS.

-gمستوى
-ggdbمستوى
-جستابسمستوى
-gcoffمستوى
-gxcoffمستوى
-gvmsمستوى
اطلب معلومات التصحيح واستخدمها أيضًا مستوى لتحديد مقدار المعلومات. ال
المستوى الافتراضي هو 2.

لا ينتج المستوى 0 أي معلومات تصحيح على الإطلاق. هكذا، -G0 ينفي -g.

ينتج المستوى 1 الحد الأدنى من المعلومات ، وهو ما يكفي لعمل مسارات خلفية في أجزاء من
البرنامج الذي لا تخطط لتصحيحه. هذا يتضمن أوصاف وظائف و
المتغيرات الخارجية وجداول رقم السطر ، ولكن لا توجد معلومات حول المتغيرات المحلية.

يتضمن المستوى 3 معلومات إضافية ، مثل كافة تعريفات الماكرو الموجودة في ملف
برنامج. تدعم بعض أدوات تصحيح الأخطاء توسيع الماكرو عند استخدام ملفات -G3.

-جدوارف -2 لا يقبل مستوى تصحيح أخطاء متسلسل ، لأن GCC يستخدم لدعم ملف
خيار -جدوارف هذا يعني إنشاء معلومات التصحيح في الإصدار 1 من DWARF
(وهو مختلف تمامًا عن الإصدار 2) ، وكان من الممكن أن يكون مربكًا للغاية.
يعد تنسيق التصحيح هذا قديمًا منذ فترة طويلة ، ولكن لا يمكن تغيير الخيار الآن. بدلا من ذلك استخدم
بالإضافة -gمستوى خيار لتغيير مستوى التصحيح لـ DWARF.

-gtoggle
قم بإيقاف تشغيل إنشاء معلومات التصحيح ، إذا ترك هذا الخيار يؤدي إلى إنشائه ، أو تشغيله
في المستوى 2 وإلا. موقف هذه الحجة في سطر الأوامر لا
شيء؛ يصبح ساري المفعول بعد معالجة جميع الخيارات الأخرى ، وهو يفعل ذلك فقط
مرة واحدة ، بغض النظر عن عدد مرات تقديمها. الغرض الأساسي من هذا هو استخدامه مع ملفات
-fcompare-debug.

-fsanitize = العنوان
تمكين AddressSanitizer ، وهو كاشف سريع لأخطاء الذاكرة. تعليمات الوصول إلى الذاكرة هي
مُصمم لاكتشاف الأخطاء الخارجة عن الحدود والاستخدام بعد الحر. ارى
<https://github.com/google/sanitizers/wiki/AddressSanitizer> لمزيد من التفاصيل. ال
يمكن أن يتأثر سلوك وقت التشغيل باستخدام ASAN_OPTIONS متغيرات البيئة. متي
مضبوطًا على "help = 1" ، تظهر الخيارات المتاحة عند بدء تشغيل الأداة
برنامج. ارى
<https://github.com/google/sanitizers/wiki/AddressSanitizerFlags#run-time-flags> ل
قائمة الخيارات المدعومة.

-fsanitize = عنوان النواة
تفعيل AddressSanitizer لـ Linux kernel. ارىhttps://github.com/google/kasan/wiki>
لمزيد من التفاصيل.

-فسانيتيز = خيط
تفعيل ThreadSanitizer ، كاشف سريع لسباق البيانات. تعليمات الوصول إلى الذاكرة هي
تم تصميمه لاكتشاف أخطاء سباق البيانات. ارى
<https://github.com/google/sanitizers/wiki#threadsanitizer> لمزيد من التفاصيل. الركض-
يمكن أن يتأثر سلوك الوقت باستخدام TSAN_OPTIONS متغيرات البيئة؛ ارى
<https://github.com/google/sanitizers/wiki/ThreadSanitizerFlags> للحصول على قائمة
الخيارات المدعومة.

-فسانيتيز = تسرب
تفعيل LeakSanitizer ، كاشف تسرب الذاكرة. هذا الخيار مهم فقط لربط
الملفات التنفيذية وإذا لم يكن أي منهما -fsanitize = العنوان ولا -فسانيتيز = خيط يستخدم. في هذا
حالة ارتباط الملف التنفيذي بمكتبة تتجاوز "malloc" وغيرها
وظائف المخصص. ارى
<https://github.com/google/sanitizers/wiki/AddressSanitizerLeakSanitizer> للمزيد
تفاصيل. يمكن أن يتأثر سلوك وقت التشغيل باستخدام LSAN_OPTIONS بيئة
المتغير.

-fsanitize = غير محدد
قم بتمكين UndefinedBehaviorSanitizer ، وهو جهاز كشف سلوك غير محدد سريع. متنوع
تم تجهيز الحسابات لاكتشاف السلوك غير المحدد في وقت التشغيل. تيار
الخيارات الفرعية هي:

-fsanitize = التحول
يتيح هذا الخيار التحقق من أن نتيجة عملية النقل ليست كذلك
غير معرف. لاحظ أن ما يعتبر بالضبط غير محدد يختلف قليلاً
بين C و C ++ ، وكذلك بين ISO C90 و C99 ، إلخ.

-fsanitize = عدد صحيح قسمة على صفر
كشف قسمة عدد صحيح على الصفر وكذلك قسمة "INT_MIN / -1".

-fsanitize = غير قابل للوصول
باستخدام هذا الخيار ، يحول المترجم استدعاء "__builtin_unreachable" إلى ملف
استدعاء رسالة التشخيص بدلا من ذلك. عند الوصول إلى مكالمة "__builtin_unreachable" ،
السلوك غير محدد.

-fsanitize = ملزمة vla
يوجه هذا الخيار المترجم للتحقق من أن الحجم متغير الطول
مجموعة موجبة.

-fsanitize = لاغ
يتيح هذا الخيار فحص المؤشر. على وجه الخصوص ، تم إنشاء التطبيق باستخدام
سيؤدي تشغيل هذا الخيار إلى إصدار رسالة خطأ عندما يحاول إلغاء إشارة
مؤشر NULL ، أو إذا كان مرجع (من المحتمل أن يكون مرجع rvalue) مرتبطًا بـ NULL
المؤشر ، أو إذا تم استدعاء أسلوب على كائن مشار إليه بمؤشر NULL.

-fsanitize = عودة
يتيح هذا الخيار التحقق من بيان الإرجاع. برامج مبنية بهذا الخيار
قيد التشغيل سيصدر رسالة خطأ عندما تكون نهاية دالة غير باطلة
تم الوصول إليه دون إرجاع قيمة فعلية. يعمل هذا الخيار في C ++ فقط.

-fsanitize = تجاوز عدد صحيح مُوقَّع
يتيح هذا الخيار إمكانية فحص تجاوز عدد صحيح موقعة. نتحقق من أن نتيجة
لا تتجاوز "+" و "*" وكلاهما أحادي وثنائي "-" في التوقيع
علم الحساب. ملاحظة ، يجب أن تؤخذ قواعد تعزيز عدد صحيح في الاعتبار. هذا هو،
ما يلي ليس تجاوزًا:

توقيع char a = SCHAR_MAX ؛
++

-الحالة = الحدود
يتيح هذا الخيار أدوات حدود المصفوفة. مختلف خارج الحدود
تم الكشف عن الوصول. أعضاء المصفوفات المرنة ، المصفوفات المرنة التي تشبه أعضاء المصفوفات ،
ومُبدِّلات المتغيرات ذات التخزين الثابت غير معدة.

-fsanitize = محاذاة
يتيح هذا الخيار التحقق من محاذاة المؤشرات عند إلغاء الإشارة إليها ،
أو عندما يكون المرجع مرتبطًا بالهدف المحاذي بشكل غير كافٍ ، أو عندما يكون أسلوب أو
تم استدعاء المُنشئ على كائن تمت محاذاته بشكل غير كافٍ.

-fsanitize = حجم الكائن
يتيح هذا الخيار إمكانية استخدام أدوات مراجع الذاكرة باستخدام
وظيفة "__builtin_object_size". مختلف مداخل المؤشر خارج الحدود هي
الكشف.

-fsanitize = تعويم قسمة على صفر
اكتشف قسمة الفاصلة العائمة على الصفر. على عكس الخيارات الأخرى المماثلة ،
-fsanitize = تعويم قسمة على صفر لم يتم تمكينه بواسطة -fsanitize = غير محدد، منذ
يمكن أن تكون قسمة الفاصلة العائمة على الصفر طريقة مشروعة للحصول على ما لا نهاية
و NaNs.

-fsanitize = تعويم-صب-تجاوز
يتيح هذا الخيار فحص تحويل نوع الفاصلة العائمة إلى عدد صحيح. نحن نفحص
أن نتيجة التحويل لا تفيض. على عكس أخرى مماثلة
الخيارات، -fsanitize = تعويم-صب-تجاوز لم يتم تمكينه بواسطة -fsanitize = غير محدد.
لا يعمل هذا الخيار بشكل جيد مع تمكين استثناءات "FE_INVALID".

-fsanitize = خاصية nonnull
يتيح هذا الخيار إمكانية إجراء المكالمات ، والتحقق مما إذا كانت القيم الخالية ليست كذلك
تم تمريرها إلى وسيطات تم تمييزها على أنها تتطلب قيمة غير فارغة بواسطة الدالة "nonnull"
السمة.

-fsanitize = إرجاع-nonnull-سمة
يتيح هذا الخيار أدوات بيانات الإرجاع في الوظائف المميزة بعلامة
سمة دالة "return_nonnull" ، لاكتشاف إرجاع القيم الخالية من هذا
الوظائف.

-fsanitize = منطقي
يتيح هذا الخيار قياس الأحمال من منطقي. إذا كانت قيمة أخرى غير 0/1
تم تحميله ، وصدر خطأ وقت التشغيل.

-fsanitize = تعداد
يتيح هذا الخيار قياس الأحمال من نوع التعداد. إذا كانت قيمة
خارج نطاق القيم لنوع التعداد ، يتم تحميل خطأ وقت التشغيل
نشر.

-fsanitize = vptr
يتيح هذا الخيار إمكانية إجراء مكالمات وظائف أعضاء C ++ ، ووصول الأعضاء
وبعض التحويلات بين المؤشرات إلى الفئات الأساسية والمشتقة للتحقق من
الكائن المشار إليه له النوع الديناميكي الصحيح.

ليس -ftrapv يتسبب في إطلاق مصائد لفيضانات موقعة ، -fsanitize = غير محدد
يعطي رسالة تشخيصية. هذا يعمل حاليًا فقط لعائلة اللغات C.

-fno- تطهير = الكل
يقوم هذا الخيار بتعطيل كافة المطهرات التي تم تمكينها مسبقًا. -fsanitize = الكل ليس
مسموح به ، حيث لا يمكن استخدام بعض المطهرات معًا.

-حسن-الظل-الإزاحة =عدد
يفرض هذا الخيار على GCC استخدام إزاحة الظل المخصصة في عمليات التحقق من AddressSanitizer. إنها
مفيد في تجربة تخطيطات ذاكرة الظل المختلفة في Kernel
العنوان

-التسريح-التعافي[=الأراضي الفلسطينية المحتلة]
- التعافي - التعافي = يتحكم في وضع استرداد الأخطاء للمطهرات المذكورة في الفاصلة-
قائمة منفصلة من الأراضي الفلسطينية المحتلة. يؤدي تمكين هذا الخيار لمكون المطهر إلى حدوث ذلك
محاولة متابعة تشغيل البرنامج كما لو لم يحدث خطأ. هذا يعني متعددة
يمكن الإبلاغ عن أخطاء وقت التشغيل في تشغيل برنامج واحد ، وكود الخروج من
قد يشير البرنامج إلى النجاح حتى عند الإبلاغ عن الأخطاء. ال
-fno- التعقيم-الاسترداد = يمكن استخدام الخيار لتغيير هذا السلوك: فقط الأول
تم الإبلاغ عن الخطأ المكتشف ثم يخرج البرنامج برمز إنهاء غير صفري.

تعمل هذه الميزة حاليًا مع -fsanitize = غير محدد (وخياراته الفرعية باستثناء
لل -fsanitize = غير قابل للوصول و -fsanitize = عودة), -fsanitize = تعويم-صب-تجاوز,
-fsanitize = تعويم قسمة على صفر و -fsanitize = عنوان النواة. لهذه المطهرات
يتم تشغيل استعادة الأخطاء بشكل افتراضي. - التعافي - التعافي = الكل و
-fno- تطهير- استرداد = الكل من المقبول أيضًا ، فالأول يتيح التعافي للجميع
المطهرات التي تدعمها ، وهذا الأخير يعطل الشفاء لجميع المطهرات التي
ادعمه.

بناء الجملة بدون صريح الأراضي الفلسطينية المحتلة تم إهمال المعلمة. إنه يعادل

-fsanitize-recovery = غير محدد ، تدفق طفو-cast-overflow ، تعويم-قسمة على صفر

وبالمثل -fno- التعقيم-الاسترداد ما يعادل

-fno-sanitize-Recovery = غير محدد ، تعويم ، تدفق زائد ، تعويم قسمة على صفر

-تحقق-غير معرف-فخ-على-خطأ
أفضل -تحقق-غير معرف-فخ-على-خطأ الخيار يوجه المترجم لتقديم تقرير
سلوك غير محدد باستخدام "__builtin_trap" بدلاً من روتين مكتبة "libubsan".
وميزة ذلك أن مكتبة "libubsan" غير ضرورية وغير مرتبطة
في ، لذلك هذا قابل للاستخدام حتى في البيئات القائمة بذاتها.

-تحقق-مؤشر-حدود
تفعيل أدوات مدقق حدود المؤشر. يتم تجهيز كل مرجع ذاكرة
مع فحوصات المؤشر المستخدمة للوصول إلى الذاكرة مقابل الحدود المرتبطة بذلك
المؤشر.

لا يوجد حاليًا سوى تطبيق متاح لـ Intel MPX ، وبالتالي هدف x86 و
-مبكسل مطلوبة لتمكين هذه الميزة. تتطلب الأجهزة المستندة إلى MPX أ
مكتبة وقت التشغيل لتمكين MPX في الأجهزة والتعامل مع إشارات انتهاك الحدود. بواسطة
الافتراضي عندما -تحقق-مؤشر-حدود و -مبكسل الخيارات المستخدمة لربط برنامج ، و
روابط سائق مجلس التعاون الخليجي مقابل libmpx مكتبة وقت التشغيل و libmpxwrappers مكتبة. هو - هي
يقوم أيضًا بتمرير "-z bndplt" إلى رابط في حالة دعمه لهذا الخيار (الذي يتم تحديده
على تكوين libmpx). لاحظ أن الإصدارات القديمة من رابط قد تتجاهل الخيار. ذهب
رابط لا يدعم خيار "-z bndplt". مع عدم وجود دعم "-z bndplt" في رابط الكل
تفقد المكالمات إلى المكتبات الديناميكية الحدود التي تم تجاوزها مما يقلل مستوى الحماية الإجمالي. إنه
يوصى بشدة باستخدام رابط مع دعم "-z bndplt". في حال لم يكن هذا الرابط
متوفر ينصح باستخدامه دائمًا -static-libmpxwrappers لحماية أفضل
المستوى أو الاستخدام -ثابتة لتجنب المكالمات الخارجية للمكتبات الديناميكية تمامًا. MPX-
يمكن استخدام الأجهزة المستندة إلى التصحيح ويمكن أيضًا تضمينها في الإنتاج
كود لزيادة أمان البرنامج. اعتمادًا على الاستخدام ، قد يكون لديك اختلاف
متطلبات مكتبة وقت التشغيل. الإصدار الحالي من مكتبة وقت تشغيل MPX
هو أكثر توجهاً لاستخدامه كأداة لتصحيح الأخطاء. يشير استخدام مكتبة وقت تشغيل MPX
-lpthread. انظر أيضا -الثابت- 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-check -غير-type
إنشاء فحوصات حدود المؤشر للمتغيرات ذات النوع غير الكامل. تم التمكين بواسطة
افتراضي.

-fchkp- الضيق الحدود
حدود عناصر التحكم المستخدمة بواسطة Pointer Bounds Checker لمؤشرات حقول الكائن. لو
تم تمكين التضييق ثم يتم استخدام حدود المجال. وإلا يتم استخدام حدود الكائن.
انظر أيضا -fchkp- الضيق إلى الأعمق- المصفوفة و -fchkp- الحقل الأول- له حدود خاصة.
يتم التمكين افتراضيًا.

-fchkp- الحقل الأول- له حدود خاصة
يفرض على "مدقق حدود المؤشر" استخدام حدود ضيقة لعنوان الأول
مجال في الهيكل. بشكل افتراضي ، يكون لمؤشر الحقل الأول نفس الحدود
كمؤشر على الهيكل بأكمله.

-fchkp- الضيق إلى الأعمق- المصفوفة
يفرض مدقق حدود المؤشر على استخدام حدود المصفوفات الداخلية في حالة التداخل
الوصول إلى مجموعة ثابتة. يتم تعطيل هذا الخيار افتراضيًا وتكون الحدود الخارجية
يتم استخدام مجموعة.

-fchkp- الأمثل
لتمكين تحسينات مدقق حدود المؤشر. ممكّن افتراضيًا عند التحسين
ومستوياتها -O, -O2, -O3.

-fchkp-use-fast-string-المهام
لتمكين استخدام إصدارات * _nobnd لوظائف السلسلة (وليس حدود النسخ) بواسطة Pointer
مدقق الحدود. معطل بشكل افتراضي.

-fchkp-use-nochk-string-function
يتيح استخدام إصدارات * _nochk لوظائف السلسلة (وليس التحقق من الحدود) بواسطة Pointer
مدقق الحدود. معطل بشكل افتراضي.

-fchkp- استخدام-ثابت-حدود
السماح لمدقق حدود المؤشر بإنشاء حدود ثابتة تحتوي على حدود ثابتة
المتغيرات. ممكن بشكل افتراضي.

-fchkp-use-static-const-bounds
استخدم الحدود ذات التهيئة الثابتة للحدود الثابتة بدلاً من إنشاء كل منها
الوقت المطلوب. بشكل افتراضي عند تمكين -fchkp- استخدام-ثابت-حدود .

-fchkp-علاج-صفري-ديناميكي-حجم-لانهائي
باستخدام هذا الخيار ، الكائنات ذات النوع غير الكامل والتي يكون حجمها الذي تم الحصول عليه ديناميكيًا صفرًا
يتم التعامل معها على أنها ذات حجم لانهائي بدلاً من ذلك بواسطة Pointer Bounds Checker. هذا الخيار
قد يكون مفيدًا إذا كان البرنامج مرتبطًا بمكتبة تفتقد إلى معلومات الحجم بالنسبة للبعض
حرف او رمز. معطل بشكل افتراضي.

-fchkp- تحقق- قراءة
يوجه Pointer Bounds Checker لإنشاء عمليات تحقق لجميع عمليات الوصول إلى الذاكرة.
يتم التمكين افتراضيًا.

-fchkp- الاختيار-الكتابة
يوجه Pointer Bounds Checker لإنشاء عمليات تحقق لجميع عمليات الوصول للكتابة إلى الذاكرة.
يتم التمكين افتراضيًا.

-fchkp-store-bounds
يوجه Pointer Bounds Checker لإنشاء مخازن حدود لكتابات المؤشر.
يتم التمكين افتراضيًا.

-fchkp- صك- مكالمات
يوجه "مدقق حدود المؤشر" لتمرير حدود المؤشر إلى المكالمات. ممكن بشكل افتراضي.

-fchkp- صك- ملحوظ فقط
يوجه Pointer Bounds Checker إلى وظائف الأداة المميزة فقط بامتداد
سمة "bnd_instrument". معطل بشكل افتراضي.

أغلفة -fchkp-use-use
يسمح لـ Pointer Bounds Checker باستبدال المكالمات إلى الوظائف المضمنة بالمكالمات إلى
وظائف المجمع. متي أغلفة -fchkp-use-use يستخدم لربط برنامج السائق دول مجلس التعاون الخليجي
الروابط تلقائيا ضد libmpxwrappers. انظر أيضا -static-libmpxwrappers. ممكن
بشكل افتراضي.

-fdump-final-insns[=ملف]
تفريغ التمثيل الداخلي النهائي (RTL) إلى ملف. إذا كانت الوسيطة الاختيارية هي
محذوف (أو إذا ملف هو ".") ، يتم تحديد اسم ملف التفريغ عن طريق الحاق
".gkd" إلى اسم ملف إخراج الترجمة.

-fcompare-debug[=الأراضي الفلسطينية المحتلة]
إذا لم يحدث خطأ أثناء التحويل البرمجي ، قم بتشغيل المترجم مرة ثانية ، مع إضافة الأراضي الفلسطينية المحتلة و
-fcompare-debug-second إلى الحجج التي تم تمريرها إلى التجميع الثاني. تفريغ
التمثيل الداخلي النهائي في كلا التجميعين ، وطباعة خطأ إذا كانا مختلفين.

إذا تم حذف علامة المساواة ، فإن الافتراضي -gtoggle .

متغير البيئة GCC_COMPARE_DEBUG، إذا تم تعريفه ، فهو غير فارغ وغير صفري ،
تمكن ضمنيًا -fcompare-debug. إذا GCC_COMPARE_DEBUG يتم تعريفه إلى سلسلة
تبدأ بشرطة ، ثم يتم استخدامها ل الأراضي الفلسطينية المحتلة، وإلا الافتراضي -gtoggle is
مستخدم.

-fcompare-debug =، بعلامة المساواة ولكن بدون الأراضي الفلسطينية المحتلةتعادل
-fno- مقارنة- التصحيحمما يعطل الاغراق النهائي للتمثيل و
التجميع الثاني ، منع حتى GCC_COMPARE_DEBUG من حيز التنفيذ.

للتحقق من التغطية الكاملة أثناء -fcompare-debug الاختبار ، مجموعة GCC_COMPARE_DEBUG ليقول
-fcompare-debug-not- تجاوز، والتي ترفضها دول مجلس التعاون الخليجي كخيار غير صالح في أي فعل
التجميع (بدلاً من المعالجة المسبقة أو التجميع أو الربط). للحصول على مجرد تحذير ،
ضبط GCC_COMPARE_DEBUG إلى -w٪ n-fcompare-debug ليس تم تجاوزه سوف تفعل.

-fcompare-debug-second
يتم تمرير هذا الخيار ضمنيًا إلى المترجم للترجمة الثانية المطلوبة
by -fcompare-debug، إلى جانب خيارات إسكات التحذيرات وحذف الخيارات الأخرى
من شأنه أن يتسبب في إخراج برنامج التحويل البرمجي للأعراض الجانبية إلى الملفات أو إلى الإخراج القياسي.
يتم إعادة تسمية ملفات التفريغ والملفات المؤقتة المحفوظة بحيث تحتوي على ".gk"
تمديد إضافي أثناء التجميع الثاني ، لتجنب الكتابة فوق تلك
تم إنشاؤها بواسطة أول.

عندما يتم تمرير هذا الخيار إلى برنامج تشغيل المترجم ، فإنه يتسبب في أول تجميع ل
يمكن تخطيها ، مما يجعلها مفيدة للقليل بخلاف تصحيح أخطاء المترجم الصحيح.

-تقزم-قزم 2-دوبس
ضغط معلومات تصحيح أخطاء DWARF 2 عن طريق إزالة المعلومات المكررة حول
كل رمز. يكون هذا الخيار منطقيًا فقط عند إنشاء تصحيح أخطاء DWARF 2
المعلومات مع -جدوارف -2.

-نسبه-هيكل-تصحيح-أساس فقط
إرسال معلومات تصحيح الأخطاء للأنواع الشبيهة بالبنية فقط عندما يكون الاسم الأساسي لملف
يتطابق ملف مصدر الترجمة مع الاسم الأساسي للملف الذي يتم فيه تعريف البنية.

هذا الخيار يقلل بشكل كبير من حجم معلومات التصحيح ، ولكن في
خسارة محتملة كبيرة في نوع المعلومات لمصحح الأخطاء. ارى
-نسبه-بناء-التصحيح-المخفّضة لخيار أقل عدوانية. ارى
-نسبه- هيكل- تصحيح- مفصل لمزيد من التحكم المفصل.

يعمل هذا الخيار فقط مع DWARF 2.

-نسبه-بناء-التصحيح-المخفّضة
إرسال معلومات تصحيح الأخطاء للأنواع الشبيهة بالبنية فقط عندما يكون الاسم الأساسي لملف
يتطابق ملف مصدر الترجمة مع الاسم الأساسي للملف الذي يتم فيه تعريف النوع ،
ما لم يكن الهيكل عبارة عن قالب أو معرف في رأس النظام.

هذا الخيار يقلل بشكل كبير من حجم معلومات التصحيح ، مع بعض
الخسارة المحتملة في نوع المعلومات إلى مصحح الأخطاء. ارى -نسبه-هيكل-تصحيح-أساس فقط
لخيار أكثر عدوانية. ارى -نسبه- هيكل- تصحيح- مفصل لمزيد من التفاصيل
السيطرة عليها.

يعمل هذا الخيار فقط مع DWARF 2.

-نسبه- هيكل- تصحيح- مفصل[=قائمة المواصفات]
حدد الأنواع الشبيهة بالبنية التي يقوم المترجم بإنشاء معلومات تصحيح الأخطاء لها. ال
الهدف هو تقليل معلومات تصحيح الأخطاء الهيكلية المكررة بين ملفات الكائنات المختلفة
ضمن نفس البرنامج.

هذا الخيار هو نسخة مفصلة من -نسبه-بناء-التصحيح-المخفّضة و
-نسبه-هيكل-تصحيح-أساس فقط، والتي تخدم معظم الاحتياجات.

المواصفات لها الصيغة [دير:|ind:][أمر:|النوع:](أي|SYS|قاعدة|لا شيء)

تحدد الكلمة الأولى الاختيارية المواصفات للبنى التي يتم استخدامها مباشرة
(دير:) أو تستخدم بشكل غير مباشر (ind:). يتم استخدام نوع الهيكل مباشرة عندما يكون هو النوع
متغير عضو. تنشأ الاستخدامات غير المباشرة من خلال مؤشرات البنى. هذا هو،
عندما يكون استخدام بنية غير مكتملة صالحًا ، يكون الاستخدام غير مباشر. مثال البنية
صورة واحدة؟ مباشرة؛ البنية اثنان * غير مباشر؛.

تحدد الكلمة الثانية الاختيارية المواصفات للبنى العادية (أمر:) أو
الهياكل العامة (النوع:). الهياكل العامة معقدة بعض الشيء في الشرح. بالنسبة لـ C ++ ،
هذه تخصصات غير صريحة لفئات القوالب أو الفئات غير القوالب
ضمن ما سبق. لغات البرمجة الأخرى لها أدوية جنيسة ، ولكن
-نسبه- هيكل- تصحيح- مفصل لم تنفذها بعد.

تحدد الكلمة الثالثة ملفات المصدر لتلك الهياكل التي يستخدمها المترجم
يجب أن ترسل معلومات التصحيح. القيم لا شيء و أي لها المعنى الطبيعي. ال
القيمة قاعدة يعني أن أساس اسم الملف فيه نوع التصريح
يجب أن يتطابق ظهوره مع قاعدة اسم ملف الترجمة الرئيسي. في التمرين،
هذا يعني أنه عند التجميع foo.c، يتم إنشاء معلومات التصحيح للأنواع
أعلن في هذا الملف و foo.h، ولكن ليس ملفات الرأس الأخرى. القيمة SYS يعني
تلك الأنواع مرضية قاعدة أو أعلن في رؤوس النظام أو المترجم.

قد تحتاج إلى التجربة لتحديد أفضل الإعدادات لتطبيقك.

الافتراضي هو -نموذج-تصحيح-مفصل = الكل.

يعمل هذا الخيار فقط مع DWARF 2.

سلاسل -fno-merge-debug-strings
قم بتوجيه الرابط إلى عدم دمج السلاسل معًا في معلومات التصحيح الموجودة
متطابقة في ملفات كائن مختلفة. الدمج غير مدعوم من قبل كافة المجمعات أو
الروابط. يؤدي الدمج إلى تقليل حجم معلومات التصحيح في ملف الإخراج عند
تكلفة زيادة وقت معالجة الارتباط. يتم تمكين الدمج افتراضيًا.

-fdebug- بادئة خريطة =قديم=جديد
عند تجميع الملفات في الدليل قديم، سجل معلومات تصحيح الأخطاء واصفاً إياها بـ
in جديد بدلا من ذلك.

-fno-dwarf2-cfi-asm
أرسل معلومات استرخاء DWARF 2 كما تم إنشاء قسم ".eh_frame" للمترجم بدلاً من استخدام
توجيهات ".cfi_ *" GAS.

-p قم بإنشاء كود إضافي لكتابة معلومات الملف الشخصي المناسبة لبرنامج التحليل
بروفيسور. يجب استخدام هذا الخيار عند تجميع ملفات المصدر التي تريد بيانات عنها ،
ويجب عليك أيضًا استخدامه عند الربط.

-pg قم بإنشاء كود إضافي لكتابة معلومات الملف الشخصي المناسبة لبرنامج التحليل
gprof. يجب استخدام هذا الخيار عند تجميع ملفات المصدر التي تريد بيانات عنها ،
ويجب عليك أيضًا استخدامه عند الربط.

-Q يجعل المترجم يطبع اسم كل وظيفة كما يتم تجميعه ويطبع البعض
إحصائيات حول كل تمريرة عند الانتهاء.

-تقرير الوقت
يجعل المترجم يطبع بعض الإحصائيات حول الوقت الذي تستغرقه كل عملية مرور عندها
التشطيبات.

تقرير fmem
يجعل المترجم يطبع بعض الإحصائيات حول التخصيص الدائم للذاكرة عند ذلك
التشطيبات.

-fmem- تقرير- wpa
يجعل المترجم يطبع بعض الإحصائيات حول تخصيص الذاكرة الدائم لـ WPA
المرحلة فقط.

-fpre-ipa-mem-report
-fpost-ipa-mem-report
يجعل المترجم يطبع بعض الإحصائيات حول التخصيص الدائم للذاكرة قبل أو
بعد التحسين بين الإجراءات.

-fprofile- تقرير
يجعل المترجم يطبع بعض الإحصائيات حول تناسق ملف التعريف (المقدر)
وتأثير التمريرات الفردية.

-fstack-الاستخدام
يجعل مخرجات المترجم معلومات استخدام مكدس للبرنامج ، على كل وظيفة
أساس. يتم إجراء اسم ملف التفريغ عن طريق الحاق .su الى auxname. auxname is
تم إنشاؤه من اسم ملف الإخراج ، إذا تم تحديده بشكل صريح وليس ملف
قابل للتنفيذ ، وإلا فسيكون هو الاسم الأساسي للملف المصدر. الدخول يتكون من
ثلاثة مجالات:

* اسم الوظيفة.

* عدد البايتات.

* مؤهل واحد أو أكثر: "ثابت" ، "ديناميكي" ، "محدود".

المصنف "ثابت" يعني أن الوظيفة تعالج المكدس بشكل ثابت: أ
يتم تخصيص عدد ثابت من البايت للإطار عند إدخال الوظيفة وتحريرها في
وظيفة الخروج لا يتم إجراء أي تعديلات على المكدس في الوظيفة. الثاني
الحقل هو هذا العدد الثابت من البايت.

المؤهل "ديناميكي" يعني أن الوظيفة تعالج المكدس ديناميكيًا: in
بالإضافة إلى التخصيص الثابت الموضح أعلاه ، يتم إجراء تعديلات المكدس في
جسم الوظيفة ، على سبيل المثال لدفع / فرقعة الوسائط حول استدعاءات الوظيفة. إذا كان
المؤهل "مقيد" موجود أيضًا ، ومقدار هذه التعديلات مقيد
وقت الترجمة والحقل الثاني هو الحد الأعلى للمقدار الإجمالي للمكدس المستخدم
من خلال الوظيفة. إذا لم يكن موجودًا ، فلن يتم تقييد مقدار هذه التعديلات
في وقت الترجمة ويمثل الحقل الثاني الجزء المقيد فقط.

-fprofile- أقواس
أضف التعليمات البرمجية بحيث يتدفق البرنامج أقواس تم تجهيزها. أثناء تنفيذ البرنامج
يسجل عدد المرات التي يتم فيها تنفيذ كل فرع ومكالمة وكم مرة يتم إجراؤها
أو العودة. عندما يخرج البرنامج المترجم فإنه يحفظ هذه البيانات في ملف يسمى
auxname.gcda لكل ملف مصدر. يمكن استخدام البيانات للملف الشخصي الموجه
تحسينات (-احتمالات-فرع) ، أو لتحليل تغطية الاختبار
(-تغطية -ftest). كل ملف كائن auxname تم إنشاؤه من اسم
ملف الإخراج ، إذا تم تحديده صراحةً ولم يكن الملف القابل للتنفيذ النهائي ، وإلا فإنه
هو الاسم الأساسي للملف المصدر. في كلتا الحالتين يتم إزالة أي لاحقة (على سبيل المثال
foo.gcda لملف الإدخال دير / foo.c، أو دير / foo.gcda لملف الإخراج المحدد على أنه -o
دير / foo.o).

--تغطية
يستخدم هذا الخيار لتجميع وربط التعليمات البرمجية المعدة لتحليل التغطية. ال
الخيار هو مرادف ل -fprofile- أقواس -تغطية -ftest (عند التجميع) و -لجكوف
(عند الربط). راجع وثائق هذه الخيارات لمزيد من التفاصيل.

* تجميع ملفات المصدر بامتداد -fprofile- أقواس بالإضافة إلى التحسين وإنشاء الكود
والخيارات. لتحليل تغطية الاختبار ، استخدم الإضافي -تغطية -ftest الخيار.
لا تحتاج إلى ملف تعريف كل ملف مصدر في البرنامج.

* ربط ملفات الكائن مع -لجكوف or -fprofile- أقواس (هذا الأخير يعني
سابق).

* قم بتشغيل البرنامج على حمل عمل تمثيلي لإنشاء ملف تعريف القوس
معلومة. قد يتكرر هذا أي عدد من المرات. يمكنك تشغيل متزامن
مثيلات البرنامج الخاص بك ، وبشرط أن يدعم نظام الملفات القفل ، فإن ملف
سيتم تحديث ملفات البيانات بشكل صحيح. كما تم الكشف عن مكالمات "شوكة" و
تم التعامل معها بشكل صحيح (لن يحدث العد المزدوج).

* من أجل التحسينات الموجهة للملف الشخصي ، قم بتجميع الملفات المصدر مرة أخرى بنفس الشيء
التحسين وخيارات إنشاء الكود بالإضافة إلى -احتمالات-فرع.

* لتحليل تغطية الاختبار ، استخدم gcov لإنتاج معلومات يمكن قراءتها من قِبل الإنسان
ال .gcno و .gcda الملفات. الرجوع إلى gcov المزيد من الوثائق
معلومات.

مع -fprofile- أقواس، لكل وظيفة من وظائف برنامج GCC الخاص بك يخلق تدفق البرنامج
ثم يعثر على شجرة ممتدة للرسم البياني. فقط الأقواس التي ليست على
يجب تجهيز الشجرة الممتدة: يضيف المترجم كودًا لحساب عدد
مرات أن يتم تنفيذ هذه الأقواس. عندما يكون القوس هو المخرج الوحيد أو المدخل الوحيد لـ
كتلة ، يمكن إضافة رمز الأجهزة إلى الكتلة ؛ خلاف ذلك ، أساسي جديد
يجب إنشاء كتلة للاحتفاظ برمز الجهاز.

-تغطية -ftest
قم بإنشاء ملف ملاحظات يكون ملف gcov يمكن استخدام الأداة المساعدة للتغطية البرمجية لإظهار البرنامج
تغطية. يتم استدعاء ملف ملاحظة كل ملف مصدر auxname.gcno. الرجوع إلى
-fprofile- أقواس الخيار أعلاه للحصول على وصف auxname وإرشادات حول كيفية القيام بذلك
توليد بيانات تغطية الاختبار. تتطابق بيانات التغطية مع الملفات المصدر بشكل وثيق إذا
لم تقم بالتحسين.

-fdbg-cnt- قائمة
اطبع الاسم والحد الأعلى للعداد لكافة عدادات التصحيح.

-fdbg-cnt =قائمة القيمة المضادة
تعيين الحد الأعلى لعداد التصحيح الداخلي. قائمة القيمة المضادة مفصولة بفاصلة
قائمة الاسم:القيمة الأزواج التي تحدد الحد الأعلى لكل عداد تصحيح الاسم إلى
القيمة. جميع عدادات التصحيح لها الحد الأعلى الأولي لـ "UINT_MAX" ؛ وبالتالي "dbg_cnt"
يعود صحيحًا دائمًا ما لم يتم تعيين الحد الأعلى بواسطة هذا الخيار. على سبيل المثال ، مع
-fdbg-cnt = dce: 10 ، tail_call: 0، "dbg_cnt (dce)" ترجع صحيحًا لأول 10 فقط
الدعاء.

-يمكن-نوع-pass
-تعطيل-نوع-pass =قائمة النطاق
هذه مجموعة من الخيارات تُستخدم لتعطيل / تمكين التحسين بشكل صريح
يمر، يمرر، اجتاز بنجاح. هذه الخيارات مخصصة للاستخدام في تصحيح أخطاء GCC. يجب على مستخدمي المترجم
استخدم الخيارات العادية لتمكين / تعطيل التمريرات بدلاً من ذلك.

-fdisable- ipa-pass
تعطيل تمرير IPA pass . pass هو اسم المرور. إذا كان نفس التمريرة ثابتًا
تم استدعاؤه في المترجم عدة مرات ، يجب إلحاق اسم المرور بامتداد
رقم تسلسلي يبدأ من 1.

-fdisable- rtl-pass
-fdisable- rtl-pass =قائمة النطاق
تعطيل تمرير RTL pass . pass هو اسم المرور. إذا كان نفس التمريرة ثابتًا
تم استدعاؤه في المترجم عدة مرات ، يجب إلحاق اسم المرور بامتداد
رقم تسلسلي يبدأ من 1. قائمة النطاق هي قائمة مفصولة بفواصل من
نطاقات الوظائف أو أسماء المجمّع. كل نطاق عبارة عن زوج أرقام مفصولة بامتداد
القولون. النطاق شامل في كلا الطرفين. إذا كان النطاق تافهاً ، الرقم
يمكن تبسيط الزوج كرقم واحد. إذا كانت وظيفة الرسم البياني استدعاء العقدة
رقم تعريف الوحدة يقع ضمن أحد النطاقات المحددة ، pass تم تعطيل لذلك
وظيفة. ال رقم تعريف الوحدة يظهر في عنوان الوظيفة لملف التفريغ ، والممر
يمكن إغراق الأسماء باستخدام الخيار -fdump- يمر.

-fdisable- شجرة-pass
-fdisable- شجرة-pass =قائمة النطاق
تعطيل تمرير الشجرة pass . شاهد -fdisable-rtl لوصف الخيار
الحجج.

-يمكن- ipa-pass
تمكين تمرير IPA pass . pass هو اسم المرور. إذا كان نفس التمريرة ثابتًا
تم استدعاؤه في المترجم عدة مرات ، يجب إلحاق اسم المرور بامتداد
رقم تسلسلي يبدأ من 1.

-فينابل- rtl-pass
-فينابل- rtl-pass =قائمة النطاق
تفعيل تمرير RTL pass . شاهد -fdisable-rtl لوصف حجة الخيار و
أمثلة.

-شجرة قابلة للتمديد-pass
-شجرة قابلة للتمديد-pass =قائمة النطاق
تفعيل تمرير الشجرة pass . شاهد -fdisable-rtl لوصف وسيطات الخيار.

فيما يلي بعض الأمثلة التي توضح استخدامات هذه الخيارات.

# تعطيل ccp1 لجميع الوظائف
-fdisable- شجرة- ccp1
# Disable unroll unroll for الوظيفة التي يكون معرف عقدة cgraph الخاص بها هو 1
-يمكن-الشجرة- cunroll = 1
# تعطيل gcse2 للوظائف في النطاقات التالية [1,1،XNUMX] ،
# [300,400] و [400,1000]
# تعطيل gcse2 للوظائف foo و foo2
-fdisable-rtl-gcse2 = foo، foo2
# تعطيل التضمين المبكر
-fdisable- شجرة- einline
# تعطيل تضمين ipa
-fdisable- ipa- مضمنة
# تمكين الشجرة كاملة فتح
-fenable-شجرة-انفتل

-dحروف
-fdump- rtl-pass
-fdump- rtl-pass =اسم الملف
يقول لجعل عمليات تفريغ التصحيح أثناء التجميع في الأوقات التي يحددها حروف. هذا
يستخدم لتصحيح أخطاء الممرات المعتمدة على RTL للمترجم. أسماء الملفات لمعظم
من عمليات التفريغ عن طريق إلحاق رقم مرور وكلمة في تفريغ، و ال
يتم إنشاء الملفات في دليل ملف الإخراج. في حالة =اسم الملف اختيار،
يتم إخراج التفريغ في الملف المحدد بدلاً من ملفات التفريغ المرقمة. ملحوظة
أن رقم المرور يتم حسابه بشكل ثابت حيث يتم تسجيل التصاريح في البطاقة
إدارة. وبالتالي لا يرتبط الترقيم بالترتيب الديناميكي للتنفيذ
يمر، يمرر، اجتاز بنجاح. على وجه الخصوص ، يمكن أن يكون للممر المثبت بواسطة مكون إضافي رقم يزيد عن 200 زوج
إذا تم تنفيذها مبكرًا جدًا. تفريغ يتم إنشاؤه من اسم ملف الإخراج ،
إذا تم تحديده صراحةً ولم يكن قابلاً للتنفيذ ، وإلا فهو الاسم الأساسي لـ
الملف المصدر. قد يكون لهذه المفاتيح تأثيرات مختلفة عندما -E يستخدم في
المعالجة.

يمكن تمكين عمليات تفريغ التصحيح باستخدام ملف -fdump-rtl التبديل أو بعض -d خيار حروف. هنا
هي الأحرف التي يمكن استخدامها في pass و حروفومعانيها:

-fdump-rtl- محاذاة
تم حساب التفريغ بعد محاذاة الفروع.

-fdump-rtl-asmcons
تفريغ بعد إصلاح عبارات rtl التي لا تفي بقيود الإدخال / الإخراج.

-fdump-rtl-auto_inc_dec
تفريغ بعد اكتشاف auto-inc-dec. يتم تشغيل هذا الممر فقط على معماريات ذلك
لديك تعليمات شركة auto أو auto dec.

-fdump-rtl- حواجز
تفريغ بعد تنظيف الحاجز تعليمات.

-fdump-rtl-bbpart
تفريغ بعد تقسيم الكتل الأساسية الساخنة والباردة.

-fdump-rtl-bbro
تفريغ بعد إعادة ترتيب الكتلة.

-fdump-rtl-btl1
-fdump-rtl-btl2
-fdump-rtl-btl1 و -fdump-rtl-btl2 تمكين الإغراق بعد هدف فرعين
يمر تحسين الحمل.

-fdump-rtl- الالتفافية
تفريغ بعد تجاوز القفز والتحكم في تحسينات التدفق.

-fdump-rtl- الجمع
تفريغ بعد تمرير مجموعة تعليمات RTL.

-fdump-rtl-compgotos
تفريغ بعد نسخ ملفات gotos المحسوبة.

-fdump-rtl-ce1
-fdump-rtl-ce2
-fdump-rtl-ce3
-fdump-rtl-ce1, -fdump-rtl-ce2و -fdump-rtl-ce3 تمكن من الإغراق بعد الثلاثة
إذا نجح التحويل.

-fdump-rtl-cprop_hardreg
تفريغ بعد نشر نسخة السجل الورقي.

-fdump-rtl-csa
تفريغ بعد دمج تعديلات المكدس.

-fdump-rtl-cse1
-fdump-rtl-cse2
-fdump-rtl-cse1 و -fdump-rtl-cse2 تمكين الإغراق بعد الاثنين المشترك
يمر القضاء على التعابير الفرعية.

-fdump-rtl-dce
تفريغ بعد مرور القضاء على رمز ميت مستقل.

-fdump-rtl-dbr
تفريغ بعد تأخر جدول الفرع.

-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 تمكين الإغراق بعد العالمية المشتركة
القضاء على subexpression.

-fdump-rtl-init-regs
تفريغ بعد تهيئة السجلات.

-fdump-rtl-initvals
تفريغ بعد حساب مجموعات القيمة الأولية.

-fdump-rtl-to_cfglayout
تفريغ بعد التحويل إلى وضع cfglayout.

-fdump-rtl- إيرا
تفريغ بعد تخصيص السجل المتكرر.

-fdump-rtl- القفز
تفريغ بعد التحسين القفزة الثانية.

-fdump-rtl-loop2
-fdump-rtl-loop2 تمكن الإغراق بعد مرور تحسين حلقة rtl.

-fdump- rtl- ماخ
تفريغ بعد إجراء تصريح إعادة التنظيم المعتمد على الجهاز ، إذا كان ذلك يمر
موجودا.

-fdump-rtl-mode_sw
تفريغ بعد إزالة مفاتيح الوضع الزائد.

-fdump-rtl-rnreg
تفريغ بعد إعادة ترقيم السجل.

-fdump-rtl-outof_cfglayout
تفريغ بعد التحويل من وضع cfglayout.

-fdump-rtl-peephole2
تفريغ بعد مرور ثقب الباب.

-fdump-rtl-postreload
تفريغ بعد تحسينات إعادة التحميل.

-fdump-rtl-pro_and_epilogue
تفريغ بعد إنشاء مقدمة وخاتمة الوظيفة.

-fdump-rtl-جدولة 1
-fdump-rtl-جدولة 2
-fdump-rtl-جدولة 1 و -fdump-rtl-جدولة 2 تمكين الإغراق بعد الكتلة الأساسية
جدولة يمر.

-fdump-rtl-ree
تفريغ بعد تسجيل / إلغاء التمديد الصفري.

-fdump-rtl-seqabstr
تفريغ بعد اكتشاف التسلسل المشترك.

-fdump-rtl-shorten
تفريغ بعد تقصير الفروع.

-fdump-rtl- الأخ
تفريغ بعد تحسينات استدعاء الأشقاء.

-fdump-rtl-split1
-fdump-rtl-split2
-fdump-rtl-split3
-fdump-rtl-split4
-fdump-rtl-split5
تتيح هذه الخيارات الإغراق بعد خمس جولات من تقسيم التعليمات.

-fdump-rtl-sms
تفريغ بعد جدولة modulo. يتم تشغيل هذا الممر فقط على بعض البنى.

-fdump-rtl- مكدس
تفريغ بعد التحويل من سجلات "ملف التسجيل الثابت" لدول مجلس التعاون الخليجي إلى x87's
سجلات تشبه المكدس. يتم تشغيل هذا المرور فقط على متغيرات x86.

-fdump-rtl-sub1
-fdump-rtl-sub2
-fdump-rtl-sub1 و -fdump-rtl-sub2 تمكين الإغراق بعد المنطقتين الفرعيتين
تمريرات التوسع.

-fdump-rtl-عدم المشاركة
تفريغ بعد كل rtl تم إلغاء مشاركته.

-fdump-rtl-vartrack
تفريغ بعد تتبع متغير.

-fdump-rtl-vregs
تفريغ بعد تحويل السجلات الافتراضية إلى سجلات ثابتة.

-fdump-rtl-web
تفريغ بعد تقسيم النطاق المباشر.

-fdump-rtl-regclass
-fdump-rtl-subs_of_mode_init
-fdump-rtl-subs_of_mode_finish
-fdump-rtl-dfinit
-fdump-rtl-dfinish
يتم تعريف عمليات التفريغ هذه ولكنها تنتج دائمًا ملفات فارغة.

-da
-fdump-rtl- الكل
أنتج كل المكبات المذكورة أعلاه.

-dA علق على إخراج المجمع بمعلومات تصحيح الأخطاء المتنوعة.

تفريغ كافة تعريفات الماكرو ، في نهاية المعالجة المسبقة ، بالإضافة إلى العادي
الناتج.

-dH قم بإنشاء تفريغ أساسي عند حدوث خطأ.

-dp علق على إخراج المجمّع بتعليق يشير إلى النمط و
يستخدم البديل. يتم أيضًا طباعة طول كل تعليمات.

-dP تفريغ RTL في إخراج المجمّع كتعليق قبل كل إرشاد. أيضا
يشغل -dp حاشية. ملاحظة.

-dx ما عليك سوى إنشاء RTL لوظيفة بدلاً من تجميعها. عادة ما تستخدم مع
-fdump-rtl- توسيع.

-fdump-noaddr
عند إجراء عمليات تفريغ التصحيح ، قم بإيقاف إخراج العنوان. هذا يجعله أكثر جدوى
استخدم فرق في تصحيح أخطاء تفريغ استدعاءات المترجم باستخدام ثنائيات مترجم مختلفة
و / أو مواقع بدء نصية / bss / data / heap / stack / dso مختلفة.

-تقرير-علة
تجميع وتفريغ معلومات التصحيح في ملف مؤقت إذا كان ICE في مترجم C / C ++
حدث.

-fdump-غير مرقمة
عند إجراء عمليات تفريغ التصحيح ، قم بإلغاء أرقام التعليمات وإخراج العنوان. هذه
يجعل استخدام الاختلافات في تصحيح أخطاء استدعاءات المترجم باستخدام
خيارات مختلفة ، ولا سيما مع وبدون -g.

-fdump-unnumbered-links
عند القيام بتفريغ الأخطاء (انظر -d الخيار أعلاه) ، قم بإلغاء أرقام التعليمات الخاصة بـ
روابط للتعليمات السابقة والتالية في تسلسل.

- تفريغ - وحدة الترجمة (C ++ فقط)
-fdump-الترجمة-وحدة-الخيارات (C ++ فقط)
تفريغ تمثيل هيكل الشجرة لوحدة الترجمة بأكملها في ملف.
يتم إنشاء اسم الملف عن طريق الحاق .tu إلى اسم الملف المصدر ، والملف هو
تم إنشاؤه في نفس الدليل كملف الإخراج. إذا كان -الخيارات يستخدم النموذج ،
الخيارات يتحكم في تفاصيل التفريغ كما هو موضح في -فب-شجرة خيارات.

-fdump- فئة- التسلسل الهرمي (C ++ فقط)
-fdump- فئة- التسلسل الهرمي-الخيارات (C ++ فقط)
تفريغ تمثيل كل من التسلسل الهرمي لكل فئة وتخطيط جدول الوظيفة الظاهرية إلى ملف
ملف. يتم إنشاء اسم الملف عن طريق الحاق .صف دراسي إلى اسم الملف المصدر والملف
تم إنشاؤه في نفس الدليل كملف الإخراج. إذا كان -الخيارات يستخدم النموذج ،
الخيارات يتحكم في تفاصيل التفريغ كما هو موضح في -فب-شجرة خيارات.

-fdump- ipa-تحول
السيطرة على الإغراق في مراحل مختلفة من شجرة لغة التحليل بين الإجراءات إلى أ
ملف. يتم إنشاء اسم الملف من خلال إلحاق لاحقة خاصة بالمحول بالمصدر
file name ، ويتم إنشاء الملف في نفس الدليل مثل ملف الإخراج. ال
المكبات التالية ممكنة:

من جميع تمكن جميع عمليات تفريغ التحليل بين الإجراءات.

cgraph
لتفريغ المعلومات حول تحسين الرسم البياني للمكالمات وإزالة الوظائف غير المستخدمة و
مضمنة القرارات.

مضمنة
تفريغ بعد وظيفة التضمين.

-fdump- يمر
تفريغ قائمة ممرات التحسين التي يتم تشغيلها وإيقاف تشغيلها بواسطة التيار
خيارات سطر الأوامر.

-fdump-Statistics-خيار
تمكين والتحكم في إغراق إحصائيات المرور في ملف منفصل. اسم الملف هو
تم إنشاؤها عن طريق إلحاق لاحقة تنتهي بـ .الإحصاء إلى اسم الملف المصدر ، و
يتم إنشاء الملف في نفس الدليل كملف الإخراج. إذا كان -خيار النموذج
مستخدم، -الحالات يتسبب في تلخيص العدادات على وحدة الترجمة بأكملها أثناء
-تفاصيل تفريغ كل حدث لأن التمريرات تولدها. الافتراضي مع عدم وجود خيار هو
لجمع عدادات لكل وظيفة تم تجميعها.

-شجرة التفريغ-تحول
-شجرة التفريغ-تحول-الخيارات
-شجرة التفريغ-تحول-الخيارات=اسم الملف
السيطرة على الإغراق في مراحل مختلفة من معالجة شجرة اللغة الوسيطة ل
ملف. يتم إنشاء اسم الملف من خلال إلحاق لاحقة خاصة بالمحول بامتداد
مصدر اسم الملف ، ويتم إنشاء الملف في نفس الدليل مثل ملف الإخراج. في
حالة =اسم الملف الخيار ، يتم إخراج التفريغ في الملف المحدد بدلاً من الملف التلقائي
اسمه ملفات التفريغ. إذا كان -الخيارات يستخدم النموذج ، الخيارات هي قائمة - منفصل
الخيارات التي تتحكم في تفاصيل التفريغ. ليست كل الخيارات قابلة للتطبيق على الجميع
مقالب. يتم تجاهل تلك التي ليس لها معنى. الخيارات التالية متاحة

العنوان
اطبع عنوان كل عقدة. عادة هذا ليس له معنى لأنه يتغير
وفقًا للبيئة وملف المصدر. استخدامه الأساسي هو ربط أ
ملف تفريغ مع بيئة التصحيح.

asmname
إذا تم تعيين "DECL_ASSEMBLER_NAME" لرفض معين ، فاستخدم ذلك في التفريغ
بدلاً من "DECL_NAME". استخدامه الأساسي هو سهولة استخدام العمل للخلف من
أسماء مشوهة في ملف التجميع.

نحيل
عند إغراق التمثيلات الوسيطة الأمامية ، تمنع إغراق أعضاء
نطاق أو جسم وظيفة لمجرد الوصول إلى هذا النطاق. فقط
تفريغ مثل هذه العناصر عندما يمكن الوصول إليها مباشرة من خلال مسار آخر.

عند التخلص من الأشجار المطبوعة بشكل جميل ، يمنع هذا الخيار إلقاء جثث
جمل التحكم.

عند تفريغ RTL ، اطبع RTL بشكل رفيع (مكثف) بدلاً من الافتراضي
تمثيل يشبه LISP.

الخام اطبع تمثيلًا خامًا للشجرة. بشكل افتراضي ، تتم طباعة الأشجار بشكل جميل في تنسيق
تمثيل سي شبيه.

تفاصيل
تمكين عمليات تفريغ أكثر تفصيلاً (لا يتم الالتزام بها بواسطة كل خيار تفريغ). وتشمل أيضا
المعلومات من ممرات التحسين.

الإحصائيات
قم بتمكين إغراق الإحصائيات المختلفة حول البطاقة (لا يتم تكريمها من قبل كل تفريغ
اختيار).

كتل
تفعيل إظهار حدود الكتلة الأساسية (معطل في عمليات التفريغ الأولية).

رسم بياني
لكل من ملفات التفريغ الأخرى المشار إليها (-fdump- rtl-pass ) ، تفريغ أ
تمثيل مخطط تدفق التحكم المناسب للعرض باستخدام GraphViz إلى
file.passid.pass.dot. تتم طباعة كل وظيفة في الملف بشكل جميل كرسم فرعي ،
حتى تتمكن GraphViz من عرضها جميعًا في قطعة أرض واحدة.

يعمل هذا الخيار حاليًا مع عمليات تفريغ RTL فقط ، ودائمًا ما يتم التخلص من RTL
شكل نحيف.

vops
تمكين إظهار المعاملات الافتراضية لكل عبارة.

لينينو
تمكين إظهار أرقام الأسطر للبيانات.

رقم تعريف الوحدة تفعيل إظهار المعرف الفريد ("DECL_UID") لكل متغير.

مطنب
تفعيل إظهار تفريغ الشجرة لكل عبارة.

eh تفعيل إظهار رقم منطقة EH الذي يحمل كل عبارة.

سكيف
تفعيل إظهار تفاصيل تحليل التطور القياسي.

الأمثل
تمكين إظهار معلومات التحسين (متاح فقط في ممرات معينة).

افتقد
تمكين عرض معلومات التحسين الفائتة (متاح فقط في ممرات معينة).

لاحظ
قم بتمكين معلومات التحسين التفصيلية الأخرى (متوفرة فقط في ممرات معينة).

=اسم الملف
بدلاً من ملف التفريغ المسمى تلقائيًا ، قم بإخراج اسم الملف المحدد. الملف
أسماء المعياري و ستدير يتم التعامل معها بشكل خاص وتعتبر مفتوحة بالفعل
تدفقات قياسية. على سبيل المثال،

gcc -O2 -ftree-vectorize -fdump-tree-vect-block = foo.dump
-fdump-tree-pre = ملف stderr.c

نواتج vectorizer تفريغ في foo.dump، بينما يتم إخراج تفريغ PRE إلى ستدير.
إذا تم إعطاء اسمي ملف تفريغ متضاربين لنفس المرور ، فسيكون الأخير
يتجاوز الخيار الخيار السابق.

من جميع قم بتشغيل جميع الخيارات ، باستثناء الخام, نحيل, مطنب و لينينو.

optall
قم بتشغيل جميع خيارات التحسين ، على سبيل المثال ، الأمثل, افتقدو لاحظ.

مكبات الأشجار التالية ممكنة:

أصلي
تفريغ قبل أي تحسين على أساس الشجرة ، إلى ملف.

الأمثل
تفريغ بعد كل التحسين القائم على الشجرة ، إلى ملف. الأمثل.

قرحة
تفريغ كل وظيفة قبل وبعد تمرير gimplification إلى ملف. الملف
الاسم مصنوع بإلحاق .gimple إلى اسم الملف المصدر.

CFG تفريغ الرسم البياني لتدفق التحكم لكل دالة في ملف. اسم الملف من صنع
إلحاق .cfg إلى اسم الملف المصدر.

ch تفريغ كل وظيفة بعد نسخ رؤوس الحلقة. يتم إنشاء اسم الملف عن طريق الحاق
.ch إلى اسم الملف المصدر.

منطقة أفريقيا جنوب الصحراء تفريغ المعلومات ذات الصلة بـ SSA إلى ملف. يتم إنشاء اسم الملف عن طريق الحاق .ssa
إلى اسم الملف المصدر.

الاسم المستعار
تفريغ معلومات الاسم المستعار لكل دالة. يتم إنشاء اسم الملف عن طريق الحاق
.alias إلى اسم الملف المصدر.

CCP تفريغ كل وظيفة بعد CCP. يتم إنشاء اسم الملف عن طريق الحاق .ccp الى
اسم الملف المصدر.

ستوريككب
تفريغ كل وظيفة بعد STORE-CCP. يتم إنشاء اسم الملف عن طريق الحاق .storeccp
إلى اسم الملف المصدر.

قبل تفريغ الأشجار بعد القضاء على التكرار الجزئي. اسم الملف من صنع
إلحاق .pre إلى اسم الملف المصدر.

الصحائف تفريغ الأشجار بعد القضاء التام على التكرار. يتم إنشاء اسم الملف عن طريق الحاق
.fre إلى اسم الملف المصدر.

نسخة
تفريغ الأشجار بعد نشر النسخ. يتم إنشاء اسم الملف عن طريق الحاق .copyprop
إلى اسم الملف المصدر.

store_copyprop
تفريغ الأشجار بعد تخزين النسخ. يتم إنشاء اسم الملف عن طريق الحاق
.store_copyprop إلى اسم الملف المصدر.

DCE تفريغ كل وظيفة بعد حذف الرمز الميت. اسم الملف من صنع
إلحاق .dce إلى اسم الملف المصدر.

حساب الاحتياطي الخاص تفريغ كل دالة بعد إجراء الاستبدال القياسي للتجمعات. الملف
الاسم مصنوع بإلحاق .sra إلى اسم الملف المصدر.

بالوعة
تفريغ كل وظيفة بعد تنفيذ غرق الكود. اسم الملف من صنع
إلحاق .حوض إلى اسم الملف المصدر.

دوم تفريغ كل وظيفة بعد تطبيق تحسينات شجرة المسيطر. اسم الملف هو
بواسطة الحاق .dom إلى اسم الملف المصدر.

قل تفريغ كل وظيفة بعد تطبيق إزالة المخزن الميت. اسم الملف مصنوع
عن طريق الحاق .dse إلى اسم الملف المصدر.

phiopt
تفريغ كل وظيفة بعد تحسين عقد PHI في كود مستقيم. الملف
الاسم مصنوع بإلحاق .phiopt إلى اسم الملف المصدر.

forwprop
تفريغ كل دالة بعد نشر متغيرات الاستخدام الفردي للأمام. اسم الملف
يتم عن طريق الحاق .forwprop إلى اسم الملف المصدر.

نسخة
تفريغ كل وظيفة بعد تطبيق تحسين إعادة تسمية النسخة. اسم الملف هو
بواسطة الحاق .copyrename إلى اسم الملف المصدر.

nrv تفريغ كل وظيفة بعد تطبيق تحسين قيمة الإرجاع المسماة على عام
الأشجار. يتم إنشاء اسم الملف عن طريق الحاق .nrv إلى اسم الملف المصدر.

vect
تفريغ كل وظيفة بعد تطبيق توجيه الحلقات. اسم الملف مصنوع
عن طريق الحاق .vect إلى اسم الملف المصدر.

SLP تفريغ كل وظيفة بعد تطبيق التوجيه من الكتل الأساسية. اسم الملف هو
بواسطة الحاق .slp إلى اسم الملف المصدر.

vrp تفريغ كل دالة بعد انتشار نطاق القيمة (VRP). اسم الملف من صنع
إلحاق .vrp إلى اسم الملف المصدر.

من جميع قم بتمكين كل عمليات تفريغ الشجرة المتوفرة مع العلامات المتوفرة في هذا الخيار.

-fopt- معلومات
-fopt- معلومات-الخيارات
-fopt- معلومات-الخيارات=اسم الملف
عناصر التحكم في عمليات تفريغ التحسين من تمريرات التحسين المختلفة. إذا كان -الخيارات النموذج
مستخدم، الخيارات هي قائمة - الكلمات الرئيسية خيار منفصل لتحديد تفاصيل التفريغ و
تحسينات.

أفضل الخيارات يمكن تقسيمها إلى مجموعتين: خيارات تصف الإسهاب في
Dump ، وخيارات تصف التحسينات التي يجب تضمينها. الخيارات من
يمكن خلط كلتا المجموعتين بحرية لأنهما غير متداخلين. ومع ذلك ، في حالة
أي تعارضات ، فإن الخيارات اللاحقة تتجاوز الخيارات السابقة في سطر الأوامر.

تتحكم الخيارات التالية في الإسهاب في التفريغ:

الأمثل
اطبع المعلومات عند تطبيق التحسين بنجاح. الأمر متروك لتمرير
لتحديد المعلومات ذات الصلة. على سبيل المثال ، يقوم ناقل الحركة بتمرير الطباعة
الموقع المصدر للحلقات التي تم توجيهها بنجاح.

افتقد
طباعة المعلومات حول التحسينات الفائتة. يمر الفرد الذي يتحكم فيه
المعلومات المراد تضمينها في الإخراج.

لاحظ
طباعة معلومات مطولة حول التحسينات ، مثل بعض التحويلات ،
رسائل أكثر تفصيلاً حول القرارات وما إلى ذلك.

من جميع طباعة معلومات التحسين التفصيلية. هذا يشمل الأمثل, افتقدو
لاحظ.

يمكن استخدام واحد أو أكثر من الكلمات الأساسية للخيارات التالية لوصف مجموعة من
أمثل:

معهد الإدارة العامة تمكين عمليات التفريغ من جميع التحسينات بين الإجراءات.

حلقة
تفعيل عمليات التفريغ من جميع تحسينات الحلقة.

مضمنة
تمكين التفريغ من جميع التحسينات المضمنة.

مركزنا تمكين التفريغ من جميع تحسينات التحسين الاتجاهي.

optall
تفعيل عمليات التفريغ من جميع التحسينات. هذه مجموعة شاملة من مجموعات التحسين
المذكورة أعلاه.

If الخيارات تم حذفه ، يتم تعيينه افتراضيًا الأمثل- optall، مما يعني تفريغ جميع المعلومات
حول التحسينات الناجحة من جميع التمريرات.

إذا كان اسم الملف يتم توفير ، ثم مقالب من جميع التحسينات القابلة للتطبيق هي
متسلسلة في اسم الملف. خلاف ذلك يتم إخراج التفريغ على ستدير. رغم أن
متعدد -fopt- معلومات يتم قبول الخيارات ، يمكن أن يشتمل أحدها فقط على أ اسم الملف. إذا
يتم توفير أسماء ملفات أخرى ثم يتم تجاهلها جميعًا باستثناء الخيار الأول من هذا القبيل.

لاحظ أن الإخراج اسم الملف يتم الكتابة فوقه في حالة وجود وحدات ترجمة متعددة. لو
مطلوب ناتج مشترك من وحدات ترجمة متعددة ، ستدير يجب أن تستخدم
بدلا من ذلك.

في المثال التالي ، يتم إخراج معلومات التحسين إلى ستدير:

دول مجلس التعاون الخليجي -O3 -fopt-info

هذا المثال:

مجلس التعاون الخليجي -O3 -fopt-info-missed = missed.all

نواتج غاب عن تقرير التحسين من جميع التمريرات إلى غاب. الكل، و هذه:

دول مجلس التعاون الخليجي -O2 -ftree-vectorize -fopt-info-vec-missed

يطبع معلومات حول فرص التحسين الفائتة من ممرات التحويل
on ستدير. لاحظ أن -fopt- معلومات- VEC- غاب ما يعادل -fopt-info-missed-vec.

كمثال آخر ،

gcc -O3 -fopt-info-inline-optimized-missed = inline.txt

ينتج معلومات حول التحسينات الفائتة بالإضافة إلى المواقع المحسّنة من الجميع
المضمنة يمر إلى inline.txt.

أخيرًا ، ضع في اعتبارك:

gcc -fopt-info-vec-missed = vec.miss -fopt-info-loop-optimized = loop.opt

هنا اسمي الإخراج اثنين vec.miss و loop.opt هم في صراع منذ واحد فقط
ملف الإخراج مسموح به. في هذه الحالة ، يتم تفعيل الخيار الأول فقط ويتم تنفيذ
يتم تجاهل الخيارات اللاحقة. هكذا فقط vec.miss يتم إنتاجه الذي يحتوي على مقالب
من vectorizer حول الفرص الضائعة.

-بذور عشوائية =عدد
يوفر هذا الخيار أساسًا يستخدمه مجلس التعاون الخليجي بدلاً من الأرقام العشوائية في التوليد
أسماء رموز معينة يجب أن تكون مختلفة في كل ملف مترجم. بل هو أيضا
تُستخدم لوضع أختام فريدة في ملفات بيانات التغطية وملفات الكائنات التي تنتجها
معهم. يمكنك استعمال ال -بذور عشوائية خيار لإنتاج كائن متماثل استنساخه
الملفات.

أفضل عدد يجب أن يكون مختلفًا لكل ملف تقوم بتجميعه.

-fsched- مطول =n
في الأهداف التي تستخدم جدولة التعليمات ، يتحكم هذا الخيار في مقدار
إخراج التصحيح يطبع المجدول. هذه المعلومات مكتوبة على خطأ معياري ،
ما لم -fdump-rtl-جدولة 1 or -fdump-rtl-جدولة 2 محدد ، وفي هذه الحالة يكون الإخراج
إلى ملف قائمة التفريغ المعتاد ، .sched1 or .sched2 على التوالى. ومع ذلك n
أكبر من تسعة ، تتم طباعة الإخراج دائمًا وفقًا للخطأ القياسي.

ل n أكبر من الصفر ، -fsched- مطوّل إخراج نفس المعلومات مثل
-fdump-rtl-جدولة 1 و -fdump-rtl-جدولة 2. إلى n أكبر من واحد ، فإنه ينتج أيضًا أساسيًا
كتلة الاحتمالات ، معلومات مفصلة جاهزة قائمة ومعلومات الوحدة / insn. ل n
أكبر من اثنين ، وهي تتضمن RTL عند نقطة الإحباط ، وتدفق التحكم ومعلومات المناطق. و
لل n أكثر من أربعة ، -fsched- مطوّل يتضمن أيضًا معلومات التبعية.

حفظ مؤقت
-حفظ- temps = cwd
تخزين الملفات الوسيطة المعتادة "المؤقتة" بشكل دائم ؛ ضعهم في التيار
الدليل وتسميتها بناءً على الملف المصدر. وهكذا ، تجميع foo.c مع -c
حفظ مؤقت تنتج الملفات foo.i و foo.s، طالما foo.o. هذا يخلق ملف
المجهزة foo.i على الرغم من أن المترجم يستخدم الآن عادةً امتداد الملف
معالج مسبق متكامل.

عند استخدامه مع -x خيار سطر الأوامر حفظ مؤقت معقول
بما يكفي لتجنب الإفراط في كتابة ملف مصدر إدخال بنفس امتداد ملف
ملف وسيط. يمكن الحصول على الملف الوسيط المقابل عن طريق إعادة التسمية
الملف المصدر قبل استخدامه حفظ مؤقت.

إذا قمت باستدعاء GCC بالتوازي ، فسيتم تجميع عدة ملفات مصدر مختلفة تشترك في ملف
الاسم الأساسي الشائع في الدلائل الفرعية المختلفة أو نفس الملف المصدر المترجم من أجل
وجهات إخراج متعددة ، فمن المحتمل أن يقوم المجمعين المتوازيين المختلفين بذلك
تتداخل مع بعضها البعض ، والكتابة فوق الملفات المؤقتة. على سبيل المثال:

دول مجلس التعاون الخليجي -save-temps -o outdir1 / foo.o indir1 / foo.c &
دول مجلس التعاون الخليجي -save-temps -o outdir2 / foo.o indir2 / foo.c &

قد ينتج عنه foo.i و foo.o يتم كتابتها في وقت واحد من قبل كلا المجمعين.

-حفظ- temps = obj
تخزين الملفات الوسيطة المعتادة "المؤقتة" بشكل دائم. إذا كان -o يستخدم الخيار ،
تستند الملفات المؤقتة إلى ملف الكائن. إذا كان -o لم يتم استخدام الخيار
-حفظ- temps = obj التبديل يتصرف مثل حفظ مؤقت.

فمثلا:

gcc -save-temps = obj -c foo.c
gcc -save-temps = obj -c bar.c -o dir / xbar.o
gcc -save-temps = obj foobar.c -o dir2 / yfoobar

يخلق foo.i, foo.s, دير / xbar.i, دير / xbar.s, dir2 / yfoobar.i, dir2 / yfoobar.sو
dir2 / yfoobar.o.

-زمن[=ملف]
قم بالإبلاغ عن وقت وحدة المعالجة المركزية الذي تستغرقه كل عملية فرعية في تسلسل التجميع. بالنسبة لـ C
ملفات المصدر ، هذا هو المترجم المناسب والمجمع (بالإضافة إلى الرابط إذا كان الارتباط
انتهى).

بدون مواصفات ملف الإخراج ، يبدو الإخراج كما يلي:

# cc1 0.12 0.01
# كـ 0.00 0.01

الرقم الأول في كل سطر هو "وقت المستخدم" ، أي الوقت المستغرق في تنفيذ
البرنامج نفسه. الرقم الثاني هو "وقت النظام" ، الوقت المستغرق في تنفيذ التشغيل
إجراءات النظام نيابة عن البرنامج. كلا الرقمين بالثواني.

مع مواصفات ملف الإخراج ، يتم إلحاق الإخراج بالملف المحدد ،
وهي تبدو كالتالي:

0.12 0.01 سم مكعب 1
0.00 0.01 مثل

يتم نقل "وقت المستخدم" و "وقت النظام" قبل اسم البرنامج و
يتم عرض الخيارات التي تم تمريرها إلى البرنامج ، بحيث يمكن للمرء أن يعرف لاحقًا ما هو الملف
يتم تجميعها ، ومع أي خيارات.

-fvar- تتبع
قم بتشغيل ممر التتبع المتغير. يحسب حيث يتم تخزين المتغيرات في كل موضع
في الكود. ثم يتم إنشاء معلومات تصحيح أخطاء أفضل (إذا كانت معلومات التصحيح
يدعم تنسيق هذه المعلومات).

يتم تمكينه افتراضيًا عند التحويل البرمجي باستخدام التحسين (-أوس, -O, -O2، ...)،
معلومات التصحيح (-g) ويدعمها تنسيق معلومات التصحيح.

-fvar- تتبع- التخصيصات
علق على التخصيصات لمتغيرات المستخدم في وقت مبكر من التجميع وحاول القيام بذلك
التعليقات التوضيحية طوال التجميع حتى النهاية ، في محاولة
لتحسين معلومات التصحيح أثناء التحسين. استخدام -جدوارف -4 ينصح على طول
معها.

يمكن تمكينه حتى إذا تم تعطيل var-tracking ، وفي هذه الحالة يتم تعطيل التعليقات التوضيحية
تم إنشاؤها وصيانتها ، ولكن يتم التخلص منها في النهاية. بشكل افتراضي ، يتم تمكين هذه العلامة
مع -fvar- تتبع، إلا عندما يتم تمكين الجدولة الانتقائية.

-fvar- تتبع- تعيينات- تبديل
تبديل -fvar- تتبع- التخصيصاتبنفس الطريقة -gtoggle المسامير -g.

-طباعة-اسم الملف =مكتبة
اطبع الاسم المطلق الكامل لملف المكتبة مكتبة من شأنها أن تستخدم عندما
ربط --- ولا تفعل أي شيء آخر. باستخدام هذا الخيار ، لا يقوم GCC بالتجميع أو الارتباط
اى شئ؛ يقوم فقط بطباعة اسم الملف.

-طباعة- دليل متعدد
اطبع اسم الدليل المطابق لـ multilib المحدد بواسطة أي مفاتيح أخرى
موجودة في سطر الأوامر. من المفترض أن يوجد هذا الدليل في GCC_EXEC_PREFIX.

-طباعة-متعدد-ليب
اطبع التعيين من أسماء الدلائل متعددة الملفات إلى رموز تبديل المترجم التي تمكنهم.
يتم فصل اسم الدليل عن المفاتيح بواسطة ;، ويبدأ كل مفتاح بـ
@ بدلا من ال -، دون مسافات بين مفاتيح متعددة. هذا من المفترض أن
سهولة معالجة القشرة.

-طباعة-متعدد-دليل-نظام التشغيل
اطبع المسار إلى مكتبات نظام التشغيل للمكتبة المتعددة المختارة ، نسبة إلى البعض ليب
دليل فرعي. إذا كانت مكتبات نظام التشغيل موجودة في ملف ليب دليل فرعي وليس multilibs
يتم استخدامها ، وعادة ما يكون هذا فقط .، إذا كانت مكتبات نظام التشغيل موجودة في libsuffix نسيب
الدلائل هذه تطبع على سبيل المثال ../ lib64, ../ ليب or ../ lib32، أو إذا كانت مكتبات نظام التشغيل
حاضر في ليب / سوبدير الدلائل الفرعية التي تطبعها على سبيل المثال amd64, sparcv9 or ev6.

-طباعة-متعدد
اطبع المسار إلى مكتبات نظام التشغيل للأرشيف المتعدد المحدد ، بالنسبة إلى البعض ليب
دليل فرعي.

-طباعة-اسم البرنامج =برنامج
اعجاب -طباعة-اسم الملف، لكنه يبحث عن برنامج مثل حزب الشعب الكمبودي.

-طباعة- libgcc- اسم الملف
مثل -طباعة-اسم الملف = libgcc.a.

هذا مفيد عند استخدام -نوستدليب or -Nodefaultlibs لكنك تريد الارتباط مع
libgcc.a. يمكنك ان تفعل:

دول مجلس التعاون الخليجي -نوستدليب ... `gcc -print-libgcc-file-name`

-طباعة-البحث-dirs
اطبع اسم دليل التثبيت الذي تم تكوينه وقائمة بالبرامج وملفات
دلائل المكتبة دول مجلس التعاون الخليجي عمليات البحث --- ولا تفعل أي شيء آخر.

هذا مفيد عندما دول مجلس التعاون الخليجي يطبع رسالة الخطأ تركيب مشكلة، لا تستطيع EXEC
cpp0: لا هذه ملف or دليل. لحل هذا عليك إما أن تضع CPP0 و
مكونات المترجم الأخرى حيث دول مجلس التعاون الخليجي تتوقع العثور عليها ، أو يمكنك تعيين
متغيرات البيئة GCC_EXEC_PREFIX إلى الدليل حيث قمت بتثبيتها. لا تفعل
ننسى زائدة /.

-طباعة- sysroot
اطبع دليل sysroot الهدف الذي يتم استخدامه أثناء التجميع. هذا ال
الهدف sysroot المحدد إما في وقت التكوين أو باستخدام - الجذور اختيار،
ربما مع لاحقة إضافية تعتمد على خيارات الترجمة. إذا لم يكن هناك هدف
تم تحديد sysroot ، والخيار لا يطبع شيئًا.

-طباعة- sysroot- رؤوس- لاحقة
اطبع اللاحقة المضافة إلى sysroot الهدف عند البحث عن الرؤوس ، أو أعطِ ملف
خطأ إذا لم يتم تكوين المترجم باستخدام هذه اللاحقة --- ولا تفعل أي شيء
آخر.

آلة التفريغ
اطبع آلة المترجم المستهدفة (على سبيل المثال ، i686-الكمبيوتر- لينكس-جنو) --- ولا تفعل
أي شيء آخر.

- تفريغ
اطبع نسخة المترجم (على سبيل المثال ، 3.0) --- ولا تفعل أي شيء آخر.

-مكبات
اطبع المواصفات المضمنة في المترجم - ولا تفعل أي شيء آخر. (يستخدم هذا عندما
يتم بناء دول مجلس التعاون الخليجي نفسها.)

- أنواع - إزالة - غير المستخدمة - التصحيح
عادةً ، عند إنتاج مخرجات DWARF 2 ، يتجنب مجلس التعاون الخليجي إنتاج إخراج رمز التصحيح لـ
الأنواع التي لم يتم استخدامها في أي مكان في الملف المصدر الذي يتم تجميعه. في بعض الأحيان يكون مفيدا
لجعل دول مجلس التعاون الخليجي تصدر معلومات تصحيح الأخطاء لجميع الأنواع المعلنة في وحدة تجميع ،
بغض النظر عما إذا كانت تُستخدم بالفعل في وحدة التجميع هذه أم لا ، من أجل
على سبيل المثال ، إذا كنت تريد ، في مصحح الأخطاء ، تحويل قيمة إلى نوع ليس كذلك في الواقع
مستخدمة في برنامجك (ولكن تم الإعلان عنها). في كثير من الأحيان ، مع ذلك ، ينتج عن هذا ملف
كمية كبيرة من المساحة الضائعة.

الخيارات أن مراقبة التحسين
تتحكم هذه الخيارات في أنواع مختلفة من التحسينات.

بدون أي خيار تحسين ، هدف المترجم هو تقليل تكلفة التجميع
ولجعل التصحيح ينتج عنه النتائج المتوقعة. تصريحات مستقلة: إذا كنت
قم بإيقاف البرنامج بنقطة توقف بين العبارات ، يمكنك بعد ذلك تعيين قيمة جديدة لـ
أي متغير أو تغيير برنامج العداد إلى أي عبارة أخرى في الدالة و get
بالضبط النتائج التي تتوقعها من شفرة المصدر.

يؤدي تشغيل علامات التحسين إلى جعل المحول البرمجي يحاول تحسين الأداء و / أو
حجم الكود على حساب وقت التجميع وربما القدرة على تصحيح أخطاء
برنامج.

يقوم المترجم بالتحسين بناءً على المعرفة التي يمتلكها بالبرنامج.
يسمح تجميع ملفات متعددة في وقت واحد إلى وضع ملف الإخراج الفردي للمترجم باستخدامها
تم الحصول على المعلومات من جميع الملفات عند تجميع كل منها.

لا يتم التحكم في جميع التحسينات بشكل مباشر بواسطة علامة. فقط التحسينات التي تحتوي على ملف
يتم سرد العلم في هذا القسم.

يتم تمكين معظم التحسينات فقط في حالة وجود ملف -O يتم تعيين المستوى في سطر الأوامر. خلاف ذلك
يتم تعطيلها ، حتى لو تم تحديد علامات التحسين الفردية.

اعتمادًا على الهدف وكيفية تكوين GCC ، هناك مجموعة مختلفة قليلاً من
قد يتم تمكين التحسينات في كل -O مستوى من تلك المذكورة هنا. يمكنك استدعاء GCC
مع -Q --help = محسِّنون لمعرفة المجموعة الدقيقة من التحسينات التي تم تمكينها في
كل مستوى.

-O
-O1 تحسين. يستغرق تحسين التجميع وقتًا أطول إلى حد ما ، وذاكرة أكبر بكثير من أجله
وظيفة كبيرة.

مع -Oيحاول المترجم تقليل حجم الكود ووقت التنفيذ دون أداء
أي تحسينات تستغرق وقتًا طويلاً في التجميع.

-O يقوم بتشغيل علامات التحسين التالية:

-فاوتو- المؤتمر الوطني العراقي -فرع-عد-ريج -مجمع-المكدس-التعديلات -مقارنة-القضاء
سجلات fcprop -fdce -fdefer-pop - فرع متأخر -fdse - تكاثر
-fguess- فرع- احتمال -fif- التحويل 2 -fif- التحويل
- وظائف الخط - تسمى مرة واحدة -فيبا-نقي-كونست -فيبا الشخصي -فيبا المرجع
الثوابت -ثوابت حلقة -fmove -لف شرينك - أنواع الانقسام العريض
-ftree-bit-ccp -فتري- ccp -فسا- phiopt -فتري- الفصل -ftree- نسخة- الدعامة -ftree- نسخة
-فتري- dce -فتري-المسيطر-الخيارات -فتري- dse -ftree- forwprop -ftree- فري -فتري-بيبروب
-فتري-بالوعة -فتري- slsr -فتري-سرا -فتري- pta -فتري-تير -الوحدة في وقت واحد

-O يتحول أيضا على - مؤشر الإطار على الأجهزة التي لا يتدخل فيها ذلك
مع التصحيح.

-O2 تحسين أكثر. ينفذ مجلس التعاون الخليجي تقريبًا جميع التحسينات المدعومة التي لا تفعل ذلك
تنطوي على مقايضة سرعة الفضاء. مقارنة ب -O، يزيد هذا الخيار كليهما
وقت التجميع وأداء الكود الذي تم إنشاؤه.

-O2 يقوم بتشغيل جميع علامات التحسين المحددة بواسطة -O. كما يتحول إلى ما يلي
أعلام التحسين: -الخيط القفزات وظائف المحاذاة -محاذي-يقفز حلقات محاذاة
-ملصقات المحاذاة -fcaller- يحفظ -القفز المتقاطع القفزات -fcse- متابعة كتل -fcse- تخطي
-fdelete-null-pointer-check-pointer (تحقق من -fdelete-null-pointer-pointer) - افترض - تخميني - تخميني
- تحسينات غير مكلفة -fgcse -fgcse-lm - الحمولات المجاورة
وظائف صغيرة الحجم - مضمنة غير مباشرة -فيبا- CP محاذاة -fipa-cp -فيبا-سرا
-فيبا- ICF عزل المسارات الخاطئة -فلرا-ريمات -تحسين- مكالمات الأخوة
-تحسين- strlen -تضمين جزئيًا -fpeephole2 كتل -freorder
كتل-فريدر-والتقسيم وظائف -freorder -frerun-cse-after-loop
-fsched-interblock -fsched- المواصفات -fschedule- insns -fschedule-insns2 -تعرج صارم
- تجاوز الحد -ftree- بنيت- نداء- DCE -تبديل الشجرة التحويل -ftree- ذيل- دمج
-ftree- قبل -ftree-vrp -فيبا را

يرجى ملاحظة التحذير الموجود أسفل -fgcse حول الاستدعاء -O2 على البرامج التي تستخدم المحوسبة
اذهب الى س.

ملاحظة: في Ubuntu 8.10 والإصدارات الأحدث ، -D_FORTIFY_SOURCE = 2 يتم تعيينه افتراضيًا ، وهو
عندما تنشط -O مضبوطة على 2 أو أعلى. يتيح ذلك وقت الترجمة الإضافي و
يتحقق وقت التشغيل من عدة وظائف libc. للتعطيل ، حدد إما
-U_FORTIFY_SOURCE or -D_FORTIFY_SOURCE = 0.

-O3 التحسين أكثر. -O3 يقوم بتشغيل جميع التحسينات المحددة بواسطة -O2 ويتحول أيضا
ال وظائف الخطوط الدقيقة, حلقات-funswitch, - المشتركة التنبؤية, -fgcse- بعد إعادة التحميل,
-ftree- حلقة- vectorize, -توزيع-حلقة-توزيع-أنماط, -ftree-slp-vectorize,
-تأثير- نموذج التكلفة, -ftree- جزئية- قبل و -فيبا- cp- استنساخ خيارات.

-O0 قلل وقت الترجمة واجعل التصحيح ينتج عنه النتائج المتوقعة. هذا ال
افتراضي.

-أوس تحسين الحجم. -أوس تمكن الجميع -O2 التحسينات التي لا تزيد عادة
حجم الكود. كما يقوم بإجراء تحسينات إضافية مصممة لتقليل حجم الكود.

-أوس تعطيل علامات التحسين التالية: وظائف المحاذاة -محاذي-يقفز
حلقات محاذاة -ملصقات المحاذاة كتل -freorder كتل-فريدر-والتقسيم
-fprefetch- حلقة- صفائف

-سريع
تجاهل الامتثال الصارم للمعايير. -سريع تمكن الجميع -O3 تحسينات. كذلك
يمكّن التحسينات غير الصالحة لكافة البرامج المتوافقة مع المعايير. هو - هي
يشغل -فاست-الرياضيات وفورتران الخاصة -fno- حماية-أقواس و -fstack- المصفوفات.

-عوج تحسين تجربة التصحيح. -عوج تمكن التحسينات التي لا تتداخل معها
التصحيح. يجب أن يكون مستوى التحسين المفضل للتحرير القياسي-
دورة ترجمة وتصحيح أخطاء تقدم مستوى معقولاً من التحسين مع المحافظة عليها
تجميع سريع وتجربة تصحيح أخطاء جيدة.

إذا كنت تستخدم ملفات -O خيارات ، مع أرقام المستوى أو بدونها ، فإن الخيار الأخير هو
الذي هو فعال.

خيارات النموذج -fعلم تحديد الأعلام المستقلة عن الآلة. تحتوي معظم الأعلام على كليهما
أشكال إيجابية وسلبية. الشكل السلبي لـ -ffoo is -فنو-فو. في الجدول أدناه ،
تم إدراج نموذج واحد فقط - النموذج الذي تستخدمه عادةً. يمكنك معرفة الآخر
شكل إما عن طريق الإزالة الجوى أو إضافته.

تتحكم الخيارات التالية في تحسينات محددة. إما أنها مفعلة بواسطة -O
خيارات أو تتعلق بتلك الموجودة. يمكنك استخدام العلامات التالية في حالات نادرة
الحالات التي يكون فيها المطلوب "صقل" التحسينات المطلوب إجراؤها.

-fno- تأجيل البوب
قم دائمًا بإخراج الوسيطات إلى كل استدعاء دالة بمجرد عودة هذه الوظيفة. ل
الآلات التي يجب أن تفرقع الوسائط بعد استدعاء دالة ، يسمح المترجم عادة
تتراكم الوسائط على المكدس لعدة استدعاءات للوظائف وتنبثق عنها جميعًا
ذات مرة.

معاق على المستويات -O, -O2, -O3, -أوس.

- تكاثر
قم بإجراء تمريرة انتشار أمامية على RTL. يحاول التمرير الجمع بين أمرين
ويتحقق مما إذا كان يمكن تبسيط النتيجة. إذا كان فتح الحلقة نشطًا ، يتم تمرير مرتين
يتم تنفيذ والثاني مجدول بعد فتح الحلقة.

يتم تمكين هذا الخيار افتراضيًا عند مستويات التحسين -O, -O2, -O3, -أوس.

-فب-عقد =نمط
-ffp- عقد = إيقاف تعطيل انكماش تعبير الفاصلة العائمة. -ffp-Contract = سريع
تمكن من تقلص تعبير النقطة العائمة مثل تشكيل الجمع المضاعف المدمج
العمليات إذا كان الهدف لديه دعم محلي لها. -ffp- عقد = تشغيل تمكن
تقلص تعبير الفاصلة العائمة إذا كان مسموحًا به بواسطة معيار اللغة. هذا هو
لم يتم تنفيذه حاليًا ومعاملته على قدم المساواة -ffp- عقد = إيقاف.

الافتراضي هو -ffp-Contract = سريع.

- مؤشر الإطار
لا تحتفظ بمؤشر الإطار في سجل للوظائف التي لا تحتاج إلى واحد. هذه
يتجنب التعليمات الخاصة بحفظ مؤشرات الإطار وإعدادها واستعادتها ؛ كما أنه يجعل
يتوفر سجل إضافي في العديد من الوظائف. It أيضا يجعل التصحيح مستحيل on
بعض آلات.

في بعض الأجهزة ، مثل VAX ، ليس لهذه العلامة أي تأثير ، لأن المعيار
يتعامل تسلسل الاستدعاء تلقائيًا مع مؤشر الإطار ولا يتم حفظ أي شيء بواسطة
التظاهر غير موجود. ماكرو وصف الجهاز "FRAME_POINTER_REQUIRED"
يتحكم في ما إذا كان الجهاز المستهدف يدعم هذه العلامة.

الإعداد الافتراضي (عند عدم التحسين للحجم) لـ 32 بت GNU / Linux x86 و 32 بت
أهداف داروين إلى x86 هي - مؤشر الإطار. يمكنك تكوين GCC مع
- مؤشر الإطار التمكين تكوين الخيار لتغيير الافتراضي.

ممكن على المستويات -O, -O2, -O3, -أوس.

-تحسين- مكالمات الأخوة
تحسين المكالمات المتكررة للأخوة والذيل.

ممكن على المستويات -O2, -O3, -أوس.

-تحسين- strlen
تحسين وظائف سلسلة C القياسية المختلفة (مثل "strlen" أو "strchr" أو "strcpy") و
نظرائهم "_FORTIFY_SOURCE" في بدائل أسرع.

ممكن على المستويات -O2, -O3.

-fno- مضمنة
لا تقم بتوسيع أي وظائف مضمنة بخلاف تلك المميزة بعلامة "always_inline"
ينسب. هذا هو الإعداد الافتراضي عند عدم التحسين.

يمكن استثناء الوظائف الفردية من التضمين عن طريق تمييزها بـ "noinline"
السمة.

وظائف صغيرة الحجم
دمج الوظائف في من يتصل بهم عندما يكون جسمهم أصغر من المتوقع
رمز استدعاء الوظيفة (لذا يصبح الحجم الإجمالي للبرنامج أصغر). المترجم
يقرر بشكل إرشادي أي الوظائف بسيطة بما يكفي لتكون جديرة بالاندماج فيها
من هنا. ينطبق هذا التضمين على جميع الوظائف ، حتى تلك التي لم يتم التصريح عنها مضمنة.

ممكن على المستوى -O2.

- مضمنة غير مباشرة
مضمنة أيضًا المكالمات غير المباشرة التي تم اكتشاف أنها معروفة في وقت الترجمة بفضل
المضمنة السابقة. هذا الخيار له أي تأثير فقط عند تشغيل التضمين نفسه
عن طريق وظائف الخطوط الدقيقة or وظائف صغيرة الحجم خيارات.

ممكن على المستوى -O2.

وظائف الخطوط الدقيقة
ضع في اعتبارك جميع الوظائف للتضمين ، حتى لو لم يتم الإعلان عنها مضمنة. ال
يقرر المترجم بشكل استرشادي الوظائف التي تستحق التكامل بهذه الطريقة.

إذا تم دمج جميع الاستدعاءات لوظيفة معينة ، وتم الإعلان عن الوظيفة
"ثابت" ، إذًا لا يتم إخراج الوظيفة عادةً كرمز مجمّع في حد ذاتها.

ممكن على المستوى -O3.

- وظائف الخط - تسمى مرة واحدة
ضع في اعتبارك جميع الوظائف "الثابتة" التي يتم استدعاؤها مرة واحدة لتضمينها في المتصل حتى لو
لم يتم وضع علامة "مضمنة". إذا تم دمج استدعاء لوظيفة معينة ، فسيتم حينئذٍ
لا يتم إخراج الوظيفة كرمز للمجمع في حد ذاتها.

ممكن على المستويات -O1, -O2, -O3 و -أوس.

-مضمنة
الوظائف المضمنة المميزة بعبارة "always_inline" والوظائف التي يبدو جسمها أصغر من
وظيفة استدعاء النفقات العامة في وقت مبكر قبل القيام به -fprofile- توليد الأجهزة و
تمريرة مضمنة حقيقية. القيام بذلك يجعل عملية التنميط أرخص بكثير وعادة
تضمين بشكل أسرع في البرامج التي تحتوي على سلاسل كبيرة من وظائف الغلاف المتداخلة.

يتم التمكين افتراضيًا.

-فيبا-سرا
إجراء الاستبدال القياسي بين الجراثيم للركام ، وإزالة المعلمات غير المستخدمة
واستبدال المعلمات التي تم تمريرها من خلال المرجع بواسطة المعلمات التي تم تمريرها حسب القيمة.

ممكن على المستويات -O2, -O3 و -أوس.

-finline-Limit =n
بشكل افتراضي ، يحدد GCC حجم الوظائف التي يمكن أن تكون مضمنة. هذا العلم يسمح
خشن السيطرة على هذا الحد. n هو حجم الوظائف التي يمكن تضمينها
عدد التعليمات الزائفة.

يتم التحكم في التضمين فعليًا بواسطة عدد من المعلمات ، والتي يمكن تحديدها
بشكل فردي عن طريق استخدام - معلمة الاسم=القيمة. -finline-Limit =n مجموعات الخيار بعض من
هذه المعلمات على النحو التالي:

max-inline-insns- واحد
ومن المقرر أن n/ 2.

max-inline-insns- السيارات
ومن المقرر أن n/ 2.

انظر أدناه للحصول على توثيق للمعلمات الفردية التي تتحكم في تضمين و
عن الإعدادات الافتراضية لهذه المعلمات.

ملاحظة: قد لا تكون هناك قيمة ل -finline- الحد يؤدي إلى السلوك الافتراضي.

ملاحظة: تمثل التعليمات الزائفة ، في هذا السياق بالذات ، ملخصًا
قياس حجم الوظيفة. لا يمثل بأي حال من الأحوال عددًا من التجميع
التعليمات وعلى هذا النحو قد يتغير معناها الدقيق من إصدار واحد إلى
آخر.

-fno- الاحتفاظ- مضمنة- dllexport
هذه نسخة أكثر دقة من وظائف مضمنة الصيانة، والذي ينطبق فقط على
الوظائف التي تم التصريح عنها باستخدام سمة "dllexport" أو "إلغاء التحديد"

وظائف مضمنة الصيانة
في لغة C ، قم بإصدار الدالات "الثابتة" التي تم التصريح بأنها "مضمنة" في ملف الكائن ، حتى لو كان
تم تضمين الوظيفة في جميع من يتصل بها. هذا التبديل لا يؤثر
الوظائف باستخدام الامتداد "الداخلي الخارجي" في GNU C90. في C ++ ، انبعث أي شيء وكل شيء
وظائف مضمنة في ملف الكائن.

-حفظ-ثابت-ثابته
تم الإعلان عن متغيرات الإنبعاث "ثابت ثابت" عند عدم تشغيل التحسين ، حتى إذا كان ملف
لا يشار إلى المتغيرات.

يقوم GCC بتمكين هذا الخيار افتراضيًا. إذا كنت ترغب في إجبار المترجم على التحقق مما إذا كان ملف
المتغير المشار إليه ، بغض النظر عما إذا كان التحسين قيد التشغيل أم لا ، استخدم
ال -fno-keep-static-consts الخيار.

الثوابت
محاولة دمج ثوابت متطابقة (ثوابت السلسلة وثوابت الفاصلة العائمة)
عبر وحدات الترجمة.

هذا الخيار هو الخيار الافتراضي للترجمة المحسنة إذا كان المجمع والرابط
ادعمه. يستخدم ثوابت عدم الدمج لمنع هذا السلوك.

ممكن على المستويات -O, -O2, -O3, -أوس.

- جميع الثوابت
محاولة دمج ثوابت متطابقة ومتغيرات متطابقة.

هذا الخيار يعني الثوابت. بالإضافة إلى الثوابت
تعتبر ، على سبيل المثال ، المصفوفات المبدئية الثابتة أو المتغيرات الثابتة المُهيأة مع
أنواع النقطة العائمة أو التكاملية. تتطلب لغات مثل C أو C ++ كل متغير ،
بما في ذلك مثيلات متعددة من نفس المتغير في الاستدعاءات العودية ، لتمييزها
المواقع ، لذا فإن استخدام هذا الخيار يؤدي إلى سلوك غير مطابق.

-fmodulo- جدولة
قم بإجراء جدولة نمط التأرجح مباشرة قبل مرور الجدولة الأول. هذه
ينظر pass إلى الحلقات الأعمق ويعيد ترتيب تعليماتها من خلال تداخل مختلف
التكرارات.

-fmodulo-Sched-allow-regmoves
قم بإجراء جدولة نمطية قائمة على الرسائل النصية القصيرة أكثر قوة مع السماح بنقل السجل. بواسطة
تعيين هذا العلم يتم حذف حواف معينة لمكافحة التبعية ، مما يؤدي إلى تشغيل ملف
توليد حركات ريج على أساس تحليل مدى الحياة. هذا الخيار فعال
فقط مع -fmodulo- جدولة تمكين.

-fno- فرع- عد- ريج
لا تستخدم تعليمات "الإنقاص والفرع" في سجل الجرد ، ولكن بدلاً من ذلك
إنشاء سلسلة من التعليمات التي تقلل من السجل ، ومقارنتها مع
صفر ، ثم يتفرع بناءً على النتيجة. هذا الخيار له معنى فقط في
البنى التي تدعم مثل هذه التعليمات ، والتي تشمل x86 و PowerPC و IA-64 و
ق / 390.

يتم التمكين افتراضيًا في -O1 وأعلى.

الافتراضي هو -فرع-عد-ريج.

-fno-function-cse
لا تضع عناوين الوظائف في السجلات ؛ اجعل كل تعليمات تستدعي أ
وظيفة ثابتة تحتوي على عنوان الوظيفة صراحة.

ينتج عن هذا الخيار كود أقل كفاءة ، ولكن بعض الاختراقات الغريبة التي تغير امتداد
قد يتم الخلط بين إخراج المجمّع من خلال التحسينات التي يتم إجراؤها عندما يكون هذا الخيار
غير مستعمل.

الافتراضي هو -وظيفة- CSE

-fno-صفر-تهيئة-في-bss
إذا كان الهدف يدعم قسم BSS ، فإن GCC بشكل افتراضي يضع المتغيرات التي هي
تهيئته إلى الصفر في BSS. هذا يمكن أن يوفر مساحة في الكود الناتج.

يقوم هذا الخيار بإيقاف تشغيل هذا السلوك لأن بعض البرامج تعتمد بشكل صريح على المتغيرات
الانتقال إلى قسم البيانات - على سبيل المثال ، حتى يتمكن الملف التنفيذي الناتج من العثور على ملف
بداية هذا القسم و / أو وضع افتراضات بناءً على ذلك.

الافتراضي هو -fzero- تهيئة- في- bss.

-الخيط القفزات
قم بإجراء التحسينات التي تتحقق لمعرفة ما إذا كانت قفزة تتفرع إلى موقع آخر
تم العثور على المقارنة المدرجة في الأول. إذا كان الأمر كذلك ، يتم إعادة توجيه الفرع الأول إلى
إما وجهة الفرع الثاني أو النقطة التي تليها مباشرة ،
اعتمادًا على ما إذا كان الشرط معروفًا بصحته أم خطأ.

ممكن على المستويات -O2, -O3, -أوس.

- أنواع الانقسام العريض
عند استخدام نوع يشغل عدة سجلات ، مثل "long long" على 32 بت
النظام ، وتقسيم السجلات عن بعضها البعض وتخصيصها بشكل مستقل. هذا عادة
يولد كودًا أفضل لتلك الأنواع ، لكنه قد يجعل تصحيح الأخطاء أكثر صعوبة.

ممكن على المستويات -O, -O2, -O3, -أوس.

القفزات -fcse- متابعة
في التخلص من التعبير الجزئي الشائع (CSE) ، قم بفحص تعليمات القفز عندما يكون ملف
لم يتم الوصول إلى هدف القفزة بواسطة أي مسار آخر. على سبيل المثال ، عند مواجهة محرك البحث المخصص
عبارة "if" مع عبارة "else" ، تتبع CSE الانتقال عند الشرط
اختبار خاطئ.

ممكن على المستويات -O2, -O3, -أوس.

كتل -fcse- تخطي
هذا هو مماثل ل القفزات -fcse- متابعة، ولكن يتسبب في أن يتبع محرك البحث المخصص (CSE) قفزات في ذلك
تخطي مشروطًا فوق الكتل. عندما يصادف محرك البحث المخصص عبارة "if" البسيطة بدون
شرط آخر ، كتل -fcse- تخطي يتسبب في أن يتبع CSE القفزة حول جسم
"لو".

ممكن على المستويات -O2, -O3, -أوس.

-frerun-cse-after-loop
أعد تشغيل إزالة التعبيرات الفرعية الشائعة بعد إجراء تحسينات الحلقة.

ممكن على المستويات -O2, -O3, -أوس.

-fgcse
قم بإجراء تمريرة عامة للتخلص من التعبيرات الفرعية الشائعة. يؤدي هذا التمرير أيضًا
ثابت عالمي وانتشار النسخ.

ملاحظة: عند تجميع برنامج باستخدام gotos المحسوبة ، امتداد GCC ، قد تحصل على
أداء أفضل لوقت التشغيل إذا قمت بتعطيل حذف التعبير الفرعي المشترك العام
تمر عن طريق الإضافة -fno-gcse إلى سطر الأوامر.

ممكن على المستويات -O2, -O3, -أوس.

-fgcse-lm
متى -fgcse-lm تم تمكينه ، يحاول القضاء على التعبير الداخلي المشترك التحرك
الأحمال التي تقتلها المتاجر في نفسها فقط. هذا يسمح بحلقة تحتوي على ملف
تسلسل تحميل / تخزين ليتم تغييره إلى حمل خارج الحلقة ، ونسخة / مخزن بداخله
الحلقة.

يتم التمكين افتراضيًا عندما -fgcse .

-fgcse- sm
متى -fgcse- sm تم تمكينه ، يتم تشغيل بطاقة حركة المتجر بعد المشتركة العالمية
القضاء على subexpression. يحاول هذا التمرير إخراج المخازن من الحلقات. عند استخدامها
بالتزامن مع -fgcse-lm، يمكن تغيير الحلقات التي تحتوي على تسلسل تحميل / تخزين
لتحميل قبل الحلقة ومخزن بعد الحلقة.

لم يتم تمكين في أي مستوى التحسين.

-fgcse- لاس
متى -fgcse- لاس ممكّن ، تمرير القضاء على التعبيرات الفرعية المشتركة العالمية
يزيل الأحمال الزائدة التي تأتي بعد التخزين في نفس موقع الذاكرة (كلاهما
تسريح جزئي وكامل).

لم يتم تمكين في أي مستوى التحسين.

-fgcse- بعد إعادة التحميل
متى -fgcse- بعد إعادة التحميل تم تمكينه ، يتم إجراء تمريرة للتخلص من الحمولة الزائدة
بعد إعادة التحميل. الغرض من هذا التمرير هو تنظيف الانسكاب الزائد.

- تحسينات الحلقة الخاطئة
يخبر هذا الخيار مُحسِّن الحلقة باستخدام قيود اللغة لاشتقاق حدود لـ
عدد مرات تكرار الحلقة. هذا يفترض أن رمز الحلقة لا يستدعي
سلوك غير محدد عن طريق التسبب على سبيل المثال في حدوث تجاوزات في عدد صحيح بعلامة أو خارج الحدود
وصول مجموعة. يتم استخدام حدود عدد التكرارات للحلقة للإرشاد
حلقة تفريغ وتقشير وحلقة تحسينات اختبار الخروج. تم تمكين هذا الخيار
بشكل افتراضي.

-تحسينات غير آمنة- حلقة
يخبر هذا الخيار مُحسِّن الحلقة بأن يفترض أن فهارس الحلقة لا تتجاوز الفائض ، و
أن الحلقات مع شرط خروج غير بديهي ليست لانهائية. هذا يتيح نطاق أوسع
مجموعة من تحسينات الحلقة حتى لو لم يتمكن مُحسِّن الحلقة نفسه من إثبات ذلك
الافتراضات صحيحة. كما ترى - تحسينات حلقة غير آمنة، يحذرك المترجم
إذا وجدت هذا النوع من الحلقات.

-القفز المتقاطع
قم بإجراء تحويل القفز المتقاطع. هذا التحول يوحد رمز مكافئ و
يحفظ حجم الكود. قد يكون أداء الكود الناتج أفضل أو لا يعمل بشكل أفضل من بدون
القفز.

ممكن على المستويات -O2, -O3, -أوس.

-فاوتو- المؤتمر الوطني العراقي
اجمع بين الزيادات أو التناقصات في العناوين مع عمليات الوصول إلى الذاكرة. هذا المرور
يتم تخطيها دائمًا على البنى التي لا تحتوي على تعليمات لدعم ذلك.
يتم التمكين افتراضيًا في -O وأعلى في البنى التي تدعم هذا.

-fdce
أداء حذف الكود الميت (DCE) على RTL. يتم التمكين افتراضيًا في -O وأعلى.

-fdse
قم بإزالة المخزن الميت (DSE) على RTL. يتم التمكين افتراضيًا في -O وأعلى.

-fif- التحويل
محاولة تحويل القفزات الشرطية إلى مكافئات بدون فرع. هذا يشمل
استخدام الحركات الشرطية ، min ، max ، تعيين الأعلام وتعليمات القيمة المطلقة ، وبعض الحيل
يمكن القيام به عن طريق الحساب القياسي. استخدام التنفيذ المشروط على الرقائق أينما كانت
متاح يتحكم فيه -fif- التحويل 2.

ممكن على المستويات -O, -O2, -O3, -أوس.

-fif- التحويل 2
استخدم التنفيذ الشرطي (عند توفره) لتحويل القفزات الشرطية إلى
معادلات دون فرع.

ممكن على المستويات -O, -O2, -O3, -أوس.

-fdeclone-ctor-dtor
يتطلب C ++ ABI نقاط دخول متعددة للمُنشئين والمدمرين: واحدة لملف
كائن فرعي أساسي ، واحد لكائن كامل ، والآخر لمدمِّر افتراضي يستدعي
عامل حذف بعد ذلك. للحصول على تسلسل هرمي مع قواعد افتراضية ، القاعدة وكاملة
المتغيرات هي نسخ ، مما يعني نسختين من الوظيفة. مع هذا الخيار ، فإن ملف
يتم تغيير المتغيرات الأساسية والكاملة لتكون ثانك التي تستدعي تنفيذًا مشتركًا.

تم التمكين بواسطة -أوس.

-fdelete-null-pointer-check-pointer (تحقق من -fdelete-null-pointer-pointer)
افترض أن البرامج لا يمكنها أن ترجع بأمان المؤشرات الفارغة ، وأنه لا يوجد كود أو بيانات
العنصر موجود هناك. يتيح ذلك تحسينات طي ثابتة بسيطة على الإطلاق
مستويات التحسين. بالإضافة إلى ذلك ، تستخدم ممرات التحسين الأخرى في GCC هذه العلامة لـ
التحكم في تحليلات تدفق البيانات العالمية التي تقضي على عمليات التحقق عديمة الفائدة للمؤشرات الفارغة ؛
يفترض هؤلاء أنه إذا تم فحص المؤشر بعد إلغاء الإشارة إليه بالفعل ، فإنه
لا يمكن أن تكون لاغية.

لاحظ مع ذلك أن هذا الافتراض غير صحيح في بعض البيئات. يستخدم
-fno-delete-null-pointer-check-check (التحقق من المؤشر -fno-delete-null-pointer-check لتعطيل هذا التحسين للبرامج التي تعتمد
على هذا السلوك.

تقوم بعض الأهداف ، وخاصة المضمنة منها ، بتعطيل هذا الخيار على جميع المستويات. خلاف ذلك
يتم تمكينه على جميع المستويات: -O0, -O1, -O2, -O3, -أوس. الممرات التي تستخدم المعلومات
يتم تمكينها بشكل مستقل عند مستويات تحسين مختلفة.

- افترض
محاولة تحويل المكالمات إلى وظائف افتراضية إلى مكالمات مباشرة. يتم ذلك على حد سواء
ضمن إجراء و interprocurally كجزء من التطعيم غير المباشر
(- مضمنة غير مباشرة) والتكاثر المستمر بين الإجراءات (-فيبا- CP). ممكن في
ومستوياتها -O2, -O3, -أوس.

- تخميني - تخميني
محاولة تحويل الاستدعاءات إلى وظائف افتراضية إلى استدعاءات مباشرة تخمينية. مرتكز على
تحليل الرسم البياني للميراث من النوع ، وتحديد مجموعة استدعاء معينة من
أهداف محتملة. إذا كانت المجموعة صغيرة ، ويفضل أن تكون بحجم 1 ، فغيّر المكالمة إلى
الاختيار المشروط بين المكالمات المباشرة وغير المباشرة. دعوات المضاربة تمكن
المزيد من التحسينات ، مثل التضمين. عندما تبدو عديمة الفائدة بعد المزيد
التحسين ، يتم تحويلها مرة أخرى إلى الشكل الأصلي.

-fdevirtualize-at-ltrans
دفق المعلومات الإضافية اللازمة للتشغيل العدواني عند تشغيل الرابط-
مُحسِّن الوقت في وضع التحويل المحلي. يتيح هذا الخيار المزيد
devirtualization ولكنه يزيد بشكل كبير من حجم البيانات المتدفقة. من أجل هذا
سبب تعطيله افتراضيًا.

- تحسينات غير مكلفة
قم بإجراء عدد من التحسينات الثانوية باهظة الثمن نسبيًا.

ممكن على المستويات -O2, -O3, -أوس.

-حر
حاول إزالة تعليمات التمديد الزائدة. هذا مفيد بشكل خاص ل
بنية x86-64 ، والتي تمتد ضمنيًا إلى الصفر في سجلات 64 بت بعد
الكتابة إلى النصف السفلي 32 بت.

ممكّن لـ Alpha و AArch64 و x86 على المستويات -O2, -O3, -أوس.

-fno- عمر- DSE
في لغة ++ C ، تتأثر قيمة الكائن فقط بالتغييرات التي تحدث خلال حياته: when
يبدأ المُنشئ ، ويكون للكائن قيمة غير محددة وأي تغييرات أثناء ذلك
مات عمر الكائن عندما يتم تدميره. عادة متجر ميت
القضاء سيستفيد من هذا ؛ إذا كانت التعليمات البرمجية الخاصة بك تعتمد على قيمة
يستمر تخزين الكائن إلى ما بعد عمر الكائن ، يمكنك استخدام هذه العلامة لـ
تعطيل هذا التحسين.

انكماش مدى الحياة
محاولة تقليل ضغط التسجيل من خلال تسجيل انكماش النطاق المباشر. هذا هو
مفيد للمعالجات السريعة مع مجموعات تسجيل صغيرة أو متوسطة الحجم.

خوارزمية فيرا =خوارزمية
استخدم خوارزمية التلوين المحددة لمخصص التسجيل المتكامل. ال
خوارزمية يمكن أن تكون الحجة الأولوية، والتي تحدد أولوية تلوين Chow ، أو CB,
الذي يحدد تلوين Chaitin-Briggs. لم يتم تنفيذ تلوين Chaitin-Briggs
لجميع البنى ، ولكن بالنسبة لتلك الأهداف التي تدعمها ، فهذا هو الإعداد الافتراضي
لأنه يولد شفرة أفضل.

منطقة فيرا =منطقة
استخدم مناطق محددة لمخصص السجل المتكامل. ال منطقة حجة
يجب أن يكون أحد العناصر التالية:

من جميع استخدم كل الحلقات كمناطق تخصيص التسجيل. هذا يمكن أن يعطي أفضل النتائج لـ
آلات ذات مجموعة تسجيل صغيرة و / أو غير منتظمة.

مختلط
استخدم جميع الحلقات باستثناء الحلقات ذات الضغط المسجل الصغير كمناطق. هذه
تعطي القيمة عادةً أفضل النتائج في معظم الحالات ومعظم الهياكل ، و
يتم تمكينه افتراضيًا عند التجميع باستخدام تحسين السرعة (-O, -O2، ...).

صورة واحدة؟ استخدم جميع الوظائف كمنطقة واحدة. ينتج عن هذا عادةً أصغر رمز
الحجم ، ويتم تمكينه افتراضيًا من أجل -أوس or -O0.

-الرافعة-الضغط
استخدم IRA لتقييم ضغط التسجيل في ممر رفع الكود لاتخاذ قرارات الرفع
التعبيرات. عادةً ما ينتج عن هذا الخيار رمز أصغر ، ولكن يمكن أن يبطئ
مترجم أسفل.

يتم تمكين هذا الخيار على المستوى -أوس لجميع الأهداف.

- ضغط حلقة فيرا
استخدم IRA لتقييم ضغط التسجيل في الحلقات لاتخاذ قرارات تحريك ثوابت الحلقة.
ينتج عن هذا الخيار عادةً إنشاء رمز أسرع وأصغر على الأجهزة ذات
ملفات التسجيل الكبيرة (> = 32 تسجيلات) ، لكنها يمكن أن تبطئ المترجم.

يتم تمكين هذا الخيار على المستوى -O3 لبعض الأهداف.

-fno- آيرا- حصة- حفظ- فتحات
قم بتعطيل مشاركة فتحات المكدس المستخدمة لحفظ السجلات الثابتة المستخدمة في المكالمة التي تعيش من خلالها
مكالمة. يحصل كل سجل صلب على فتحة مكدس منفصلة ، ونتيجة لذلك يتم تكديس الوظائف
الإطارات أكبر.

فتحات انسكاب الفتحات
تعطيل مشاركة فتحات المكدس المخصصة للسجلات الزائفة. كل سجل زائف
التي لا تحصل على سجل ثابت تحصل على فتحة مكدس منفصلة ، ونتيجة لذلك وظيفة
إطارات المكدس أكبر.

-فيرا- مطوّل =n
التحكم في الإسهاب في ملف التفريغ لمخصص السجل المتكامل. ال
القيمة الافتراضية هي 5. إذا كانت القيمة n أكبر أو يساوي 10 ، يتم إرسال إخراج التفريغ
إلى stderr باستخدام نفس تنسيق n ناقص 10.

-فلرا-ريمات
تمكين إعادة استخدام المواد الحساسة لـ CFG في جيش الرب للمقاومة. بدلا من تحميل القيم المنسكبة
الزائفة ، يحاول LRA إعادة إضفاء الطابع المادي (إعادة حساب) القيم إذا كانت مربحة.

ممكن على المستويات -O2, -O3, -أوس.

- فرع متأخر
إذا كانت مدعومة للجهاز الهدف ، فحاول إعادة ترتيب التعليمات لاستغلالها
فتحات التعليمات متاحة بعد تعليمات الفرع المتأخرة.

ممكن على المستويات -O, -O2, -O3, -أوس.

-fschedule- insns
إذا كانت مدعومة للجهاز الهدف ، فحاول إعادة ترتيب التعليمات للتخلص منها
أكشاك التنفيذ بسبب عدم توفر البيانات المطلوبة. هذا يساعد الآلات
لديك نقطة عائمة بطيئة أو تعليمات تحميل ذاكرة من خلال السماح بإرشادات أخرى
تصدر حتى نتيجة الحمل أو تعليمات النقطة العائمة مطلوبة.

ممكن على المستويات -O2, -O3.

-fschedule-insns2
على غرار -fschedule- insns، لكنه يطلب تمريرًا إضافيًا لجدولة التعليمات
بعد الانتهاء من تخصيص السجل. هذا مفيد بشكل خاص مع الأجهزة ذات الامتداد
عدد صغير نسبيًا من السجلات وحيث تستغرق تعليمات تحميل الذاكرة أكثر من
دورة واحدة.

ممكن على المستويات -O2, -O3, -أوس.

-fno- جدولة- interblock
لا تقم بجدولة التعليمات عبر الكتل الأساسية. عادة ما يتم تمكين هذا بشكل افتراضي
عند الجدولة قبل تخصيص التسجيل ، أي مع -fschedule- insns أو في -O2 or
أعلى.

-fno- جدولة المواصفات
لا تسمح بالحركة التخمينية لتعليمات عدم التحميل. يتم تمكين هذا عادة بواسطة
الافتراضي عند الجدولة قبل تخصيص التسجيل ، أي مع -fschedule- insns أو في
-O2 أو ما يفوقها.

ضغط ضغط
قم بتمكين جدولة التسجيل الحساسة للضغط قبل تخصيص التسجيل. هذه
يكون منطقيًا فقط عند الجدولة قبل تمكين تخصيص التسجيل ، أي مع
-fschedule- insns أو في -O2 أو أعلى. يمكن أن يؤدي استخدام هذا الخيار إلى تحسين ما تم إنشاؤه
كود وتقليل حجمه عن طريق منع زيادة ضغط التسجيل فوق الرقم
من السجلات الصلبة المتاحة والانسكابات اللاحقة في تخصيص السجل.

تحميل المواصفات
السماح بالحركة التخمينية لبعض تعليمات التحميل. هذا منطقي فقط عندما
الجدولة قبل تخصيص التسجيل ، أي مع -fschedule- insns أو في -O2 أو ما يفوقها.

-fsched- المواصفات-تحميل خطير
السماح بالحركة التخمينية لمزيد من تعليمات التحميل. هذا منطقي فقط عندما
الجدولة قبل تخصيص التسجيل ، أي مع -fschedule- insns أو في -O2 أو ما يفوقها.

-fsched-stalled-insns
-fsched-stalled-insns =n
حدد عدد الإدخالات (إن وجدت) التي يمكن نقلها قبل الأوان من قائمة الانتظار المتوقفة
يدرج في القائمة الجاهزة أثناء تمرير الجدولة الثاني. -fno- الجدولة- المتوقفة- insns
يعني أنه لا يتم نقل أي إدخال داخلي قبل الأوان ، -fsched-stalled-insns = 0 يعني لا يوجد
تحديد عدد الإدخالات في قائمة الانتظار التي يمكن نقلها قبل الأوان. -fsched-stalled-insns
بدون قيمة يساوي -fsched-stalled-insns = 1.

-fsched-stalled-insns-dep
-fsched-stalled-insns-dep =n
حدد عدد مجموعات insn (الدورات) التي يتم فحصها من أجل التبعية على ins المتوقفة
هذا مرشح للإزالة المبكرة من قائمة انتظار الأسماء المتوقفة. هذا لديه
تأثير فقط خلال تمرير الجدولة الثانية ، وفقط إذا -fsched-stalled-insns is
مستخدم. -fno-Sched-stalled-insns-dep ما يعادل -fsched-stalled-insns-dep = 0.
-fsched-stalled-insns-dep بدون قيمة يساوي
-fsched-stalled-insns-dep = 1.

-fsched2-use-superblocks
عند الجدولة بعد تخصيص التسجيل ، استخدم جدولة superblock. هذا يسمح
الحركة عبر حدود الكتلة الأساسية ، مما يؤدي إلى جداول زمنية أسرع. هذا الخيار هو
تجريبية ، حيث لم يتم استخدام جميع الأوصاف الآلية بواسطة نموذج دول مجلس التعاون الخليجي لوحدة المعالجة المركزية بشكل كافٍ
لتجنب النتائج غير الموثوقة من الخوارزمية.

هذا منطقي فقط عند الجدولة بعد تخصيص السجل ، أي مع
-fschedule-insns2 أو في -O2 أو ما يفوقها.

-fsched-group-heuristic
تمكين الكشف عن مجريات الأمور للمجموعة في المجدول. هذا ارشادي يفضل التعليمات
التي تنتمي إلى مجموعة الجدول الزمني. يتم تمكين هذا افتراضيًا عند الجدولة
تمكين ، أي مع -fschedule- insns or -fschedule-insns2 أو في -O2 أو ما يفوقها.

-fsched- المسار الحرج- الكشف عن مجريات الأمور
تمكين الكشف عن المسار الحرج في المجدول. هذا فضل إرشادي
تعليمات على المسار الحرج. يتم تمكين هذا افتراضيًا عند الجدولة
تمكين ، أي مع -fschedule- insns or -fschedule-insns2 أو في -O2 أو ما يفوقها.

-fsched-spec-insn- ارشادي
تمكين توجيه التعليمات التخمينية في المجدول. هذا فضل إرشادي
تعليمات المضاربة مع زيادة ضعف التبعية. يتم تمكين هذا افتراضيا
عند تمكين الجدولة ، أي مع -fschedule- insns or -fschedule-insns2 أو في -O2
أو ما يفوقها.

-fsched- رتبة- إرشادية
تمكين الكشف عن مجريات الأمور في الرتبة في المجدول. هذا ارشادي يفضل التعليمات
تنتمي إلى كتلة أساسية ذات حجم أو تردد أكبر. يتم تمكين هذا افتراضيا
عند تمكين الجدولة ، أي مع -fschedule- insns or -fschedule-insns2 أو في -O2
أو ما يفوقها.

-fsched-last-insn-heuristic
قم بتمكين آخر تعليمات إرشادية في المجدول. هذا الاستدلال يفضل
تعليمة أقل اعتمادًا على التعليمات الأخيرة المجدولة. تم تمكين هذا
بشكل افتراضي عند تمكين الجدولة ، أي مع -fschedule- insns or -fschedule-insns2
أو في -O2 أو ما يفوقها.

-fsched-dep-count-heuristic
تمكين الاستدلال على العدد التابع في المجدول. هذا الاستدلال يفضل
التعليمات التي تحتوي على مزيد من التعليمات حسب ذلك. يتم تمكين هذا افتراضيا
عند تمكين الجدولة ، أي مع -fschedule- insns or -fschedule-insns2 أو في -O2
أو ما يفوقها.

حلقات مجدولة مجدولة
يتم تنفيذ جدولة Modulo قبل الجدولة التقليدية. إذا كانت الحلقة هي modulo
مجدولة ، قد تغير تصاريح الجدولة اللاحقة جدولها. استخدم هذا الخيار لـ
السيطرة على هذا السلوك.

- جدولة انتقائية
تعليمات الجدول باستخدام خوارزمية الجدولة الانتقائية. يعمل الجدولة الانتقائية
بدلا من تمرير المجدول الأول.

- جدولة انتقائية 2
تعليمات الجدول باستخدام خوارزمية الجدولة الانتقائية. يعمل الجدولة الانتقائية
بدلا من تمرير المجدول الثاني.

-الجدولة- الأنابيب
تمكين تسلسل البرامج من الحلقات الداخلية أثناء الجدولة الانتقائية. هذه
الخيار ليس له أي تأثير ما لم يكن أحد - جدولة انتقائية or - جدولة انتقائية 2
قيد التشغيل.

-الجدولة- الأنابيب- الخارجية- الحلقات
عندما حلقات الأنابيب أثناء الجدولة الانتقائية ، وكذلك الحلقات الخارجية لخط الأنابيب. هذه
الخيار ليس له أي تأثير ما لم -الجدولة- الأنابيب قيد التشغيل.

- التوسط الدلالي
تسمح بعض تنسيقات الكائنات ، مثل ELF ، بالتداخل بين الرموز بواسطة الرابط الديناميكي.
هذا يعني أنه بالنسبة للرموز التي تم تصديرها من DSO ، لا يمكن للمترجم أن يعمل
التكاثر بين الإجراءات والتضمين والتحسينات الأخرى في توقع أن
وظيفة أو متغير في السؤال قد يتغير. بينما هذه الميزة مفيدة ، ل
على سبيل المثال ، لإعادة كتابة وظائف تخصيص الذاكرة عن طريق تطبيق تصحيح الأخطاء ، فهو كذلك
باهظة الثمن من حيث جودة الكود. مع - المداخلة - الدلالي - المترجم
يفترض أنه في حالة حدوث تداخل للوظائف ، فستكون وظيفة الكتابة فوقها
بالضبط نفس الدلالات (والآثار الجانبية). وبالمثل إذا حدث التدخل
بالنسبة للمتغيرات ، سيكون منشئ المتغير هو نفسه. العلم لا يوجد لديه
تأثير الوظائف المعلنة صراحةً في السطر (حيث لا يُسمح به مطلقًا
مداخلة لتغيير الدلالات) وللرموز التي أعلن صراحة أنها ضعيفة.

-لف شرينك
تنبعث مقدمات الوظيفة فقط قبل أجزاء من الوظيفة التي تحتاج إليها ، وليس عند
الجزء العلوي من الوظيفة. يتم تمكين هذه العلامة بشكل افتراضي في -O وأعلى.

-fcaller- يحفظ
تمكين تخصيص القيم للسجلات التي يتم ضربها بواسطة استدعاءات الوظائف ، بواسطة
إصدار تعليمات إضافية لحفظ واستعادة السجلات حول هذه المكالمات. مثل
يتم التخصيص فقط عندما يبدو أنه يؤدي إلى رمز أفضل.

يتم تمكين هذا الخيار دائمًا افتراضيًا على أجهزة معينة ، عادةً تلك التي تحتوي على
لا توجد سجلات محفوظة عند الاتصال لاستخدامها بدلاً من ذلك.

ممكن على المستويات -O2, -O3, -أوس.

-مجمع-المكدس-التعديلات
يتتبع تعديلات المكدس (الدفعات والملوثات العضوية الثابتة) ويكدس مراجع الذاكرة ثم يحاول
للعثور على طرق لدمجها.

يتم التمكين افتراضيًا في -O1 وأعلى.

-فيبا را
استخدم سجلات حفظ المتصل للتخصيص إذا لم يتم استخدام هذه السجلات من قبل أي شخص يسمى
وظيفة. في هذه الحالة ، ليس من الضروري حفظها واستعادتها حول المكالمات.
هذا ممكن فقط إذا كانت الوظائف المسماة جزءًا من نفس وحدة الترجمة مثل التيار
وظيفة ويتم تجميعها قبل ذلك.

ممكن على المستويات -O2, -O3, -أوس.

-الحفاظ-المكدس
محاولة تقليل استخدام المكدس. يحاول المترجم استخدام مساحة مكدس أقل ، حتى
إذا كان ذلك يجعل البرنامج أبطأ. هذا الخيار يعني تعيين إطار مكدس كبير
المعلمة 100 و نمو إطار مكدس كبير المعلمة إلى 400.

-ftree-reassoc
قم بإعادة التجميع على الأشجار. يتم تمكين هذه العلامة بشكل افتراضي في -O وأعلى.

-ftree- قبل
قم بإزالة التكرار الجزئي (PRE) على الأشجار. يتم تمكين هذه العلم من قبل
الافتراضي في -O2 و -O3.

-ftree- جزئية- قبل
اجعل التخلص الجزئي من التكرار (PRE) أكثر عدوانية. يتم تمكين هذه العلم من قبل
الافتراضي في -O3.

-ftree- forwprop
نفذ التكاثر الأمامي على الأشجار. يتم تمكين هذه العلامة بشكل افتراضي في -O و
أعلى.

-ftree- فري
قم بإزالة التكرار الكامل (FRE) على الأشجار. الفرق بين FRE و
PRE هو أن FRE لا تراعي سوى التعبيرات المحسوبة على جميع المسارات المؤدية إلى
الحساب الزائد. هذا التحليل أسرع من PRE ، على الرغم من أنه يعرض عددًا أقل
الزوائد. يتم تمكين هذه العلامة بشكل افتراضي في -O وأعلى.

-فتري-بيبروب
قم برفع الأحمال من المؤشرات الشرطية على الأشجار. تم تمكين هذا المرور من قبل
الافتراضي في -O وأعلى.

- الحمولات المجاورة
أحمال الرفع المضاربة من فرعي if-then-else إذا كانت الأحمال من
المواقع المجاورة في نفس الهيكل والبنية الهدف لها شرط
تعليمات التحرك. يتم تمكين هذه العلامة بشكل افتراضي في -O2 وأعلى.

-ftree- نسخة- الدعامة
قم بتنفيذ عملية نشر النسخ على الأشجار. يزيل هذا التمرير عمليات النسخ غير الضرورية.
يتم تمكين هذه العلامة بشكل افتراضي في -O وأعلى.

-فيبا-نقي-كونست
اكتشف الوظائف النقية أو الثابتة. يتم التمكين افتراضيًا في -O وأعلى.

-فيبا المرجع
اكتشف المتغيرات الثابتة التي لا تفلت من وحدة الترجمة. تم التمكين بواسطة
الافتراضي في -O وأعلى.

-فيبا- pta
إجراء تحليل المؤشر بين الإجراءات والتعديل بين الإجراءات و
التحليل المرجعي. يمكن أن يتسبب هذا الخيار في زيادة الذاكرة واستخدام وقت الترجمة
وحدات ترجمة كبيرة. لا يتم تمكينه افتراضيًا على أي مستوى تحسين.

-فيبا الشخصي
تنفيذ انتشار ملف التعريف بين الإجراءات. وظائف تسمى فقط من البرد
يتم تمييز الوظائف على أنها باردة. يتم أيضًا تنفيذ الوظائف مرة واحدة (مثل "بارد" ،
"noreturn" ، المنشئات الثابتة أو المدمرة). وظائف باردة و
حلقة أقل من أجزاء من الوظائف التي يتم تنفيذها مرة واحدة يتم تحسينها من أجل الحجم. تم التمكين بواسطة
الافتراضي في -O وأعلى.

-فيبا- CP
أداء التكاثر المستمر بين الإجراءات. هذا التحسين يحلل البرنامج
لتحديد متى تكون القيم التي يتم تمريرها إلى الوظائف ثوابت ثم يتم تحسينها
وفقا لذلك. يمكن أن يؤدي هذا التحسين إلى زيادة الأداء بشكل كبير إذا كان
يحتوي التطبيق على ثوابت تم تمريرها إلى الوظائف. يتم تمكين هذه العلامة بشكل افتراضي في
-O2, -أوس و -O3.

-فيبا- cp- استنساخ
أداء وظيفة الاستنساخ لجعل التكاثر المستمر بين الإجراءات أقوى. متي
ممكّنًا ، يؤدي التكاثر الثابت بين الإجرائيات إلى الاستنساخ الوظيفي عندما
يمكن استدعاء الوظيفة المرئية خارجيًا باستخدام وسيطات ثابتة. لأن هذا
يمكن أن يؤدي التحسين إلى إنشاء نسخ متعددة من الوظائف ، وقد يزيد ذلك بشكل ملحوظ
حجم الكود (انظر - معلمة ipcp- وحدة النمو =القيمة). يتم تمكين هذه العلامة بشكل افتراضي في
-O3.

محاذاة -fipa-cp
عند التمكين ، يقوم هذا التحسين بنشر محاذاة معلمات الوظيفة لدعمها
عمليات توجيهية وسلسلة أفضل.

يتم تمكين هذه العلامة بشكل افتراضي في -O2 و -أوس. يتطلب ذلك -فيبا- CP .

-فيبا- ICF
قم بإجراء طي الكود المتطابق للوظائف ومتغيرات القراءة فقط. ال
يؤدي التحسين إلى تقليل حجم الكود وقد يزعج مجموعات التهدئة عن طريق استبدال وظيفة
من خلال ما يعادله باسم مختلف. يعمل التحسين بشكل أكثر فعالية مع
تم تمكين تحسين وقت الارتباط.

ومع ذلك ، فإن السلوك مشابه لتحسين Gold Linker ICF الذي يعمل عليه GCC ICF
مستويات مختلفة وبالتالي التحسينات ليست هي نفسها - هناك معادلات ذلك
تم العثور عليها فقط من قبل دول مجلس التعاون الخليجي والمكافئات وجدت فقط من قبل الذهب.

يتم تمكين هذه العلامة بشكل افتراضي في -O2 و -أوس.

عزل المسارات الخاطئة
اكتشاف المسارات التي تؤدي إلى سلوك خاطئ أو غير معرف بسبب إلغاء مرجعية قيمة خالية
المؤشر. افصل تلك المسارات عن تدفق التحكم الرئيسي وأدر البيان باستخدام
سلوك خاطئ أو غير محدد في الفخ. يتم تمكين هذه العلامة بشكل افتراضي في -O2
وأعلى.

السمة العزلة-المسارات الخاطئة
اكتشف المسارات التي تؤدي إلى سلوك خاطئ أو غير محدد بسبب استخدام قيمة فارغة
بطريقة ممنوعة بواسطة سمة "return_nonnull" أو "nonnull". اعزل تلك المسارات
من تدفق التحكم الرئيسي وقلب البيان بسلوك خاطئ أو غير محدد
في فخ. لم يتم تمكين هذا حاليًا ، ولكن قد يتم تمكينه بواسطة -O2 فى المستقبل.

-فتري-بالوعة
أداء حركة المتجر إلى الأمام على الأشجار. يتم تمكين هذه العلامة بشكل افتراضي في -O و
أعلى.

-ftree-bit-ccp
قم بتنفيذ انتشار ثابت للبت الشرطي المتناثر على الأشجار ومؤشر الانتشار
معلومات المحاذاة. يعمل هذا التمرير فقط على المتغيرات العددية المحلية وهو
ممكّن افتراضيًا في -O وأعلى. يتطلب ذلك -فتري- ccp .

-فتري- ccp
قم بإجراء انتشار ثابت شرطي متناثر (CCP) على الأشجار. هذا يمر فقط
يعمل على المتغيرات العددية المحلية ويتم تمكينه افتراضيًا في -O وأعلى.

-فسا- phiopt
نفذ مطابقة النمط على عقد SSA PHI لتحسين الكود الشرطي. هذا المرور
ممكّن افتراضيًا في -O وأعلى.

-تبديل الشجرة التحويل
قم بإجراء تحويل عمليات التهيئة البسيطة في التبديل إلى التهيئة من a
مجموعة عددي. يتم تمكين هذه العلامة بشكل افتراضي في -O2 وأعلى.

-ftree- ذيل- دمج
ابحث عن تسلسلات رمز متطابقة. عند العثور عليها ، استبدل إحداها بالقفزة إلى الأخرى.
يُعرف هذا التحسين بدمج الذيل أو القفز المتقاطع. يتم تمكين هذه العلم من قبل
الافتراضي في -O2 وأعلى. يمكن أن يكون وقت التجميع في هذا المرور محدودًا باستخدام
مقارنات max-tail-merge المعلمة و ماكس الذيل دمج التكرارات المعلمة.

-فتري- dce
قم بإزالة الرمز الميت (DCE) على الأشجار. يتم تمكين هذه العلامة بشكل افتراضي في -O
وأعلى.

-ftree- بنيت- نداء- DCE
قم بإجراء حذف مشروط للشفرة الميتة (DCE) للمكالمات للوظائف المضمنة التي
قد تحدد "errno" ولكن بخلاف ذلك تكون خالية من الآثار الجانبية. يتم تمكين هذه العلامة بشكل افتراضي
at -O2 وأعلى إذا -أوس لم يتم تحديده أيضًا.

-فتري-المسيطر-الخيارات
قم بإجراء مجموعة متنوعة من عمليات التنظيف العددية البسيطة (الانتشار الثابت / النسخ ، التكرار
القضاء وانتشار النطاق وتبسيط التعبير) على أساس المسيطر
اجتياز الشجرة. يؤدي هذا أيضًا إلى تنفيذ خيوط الانتقال (لتقليل القفزات إلى القفزات). هذه
يتم تمكين العلم افتراضيًا في -O وأعلى.

-فتري- dse
قم بإزالة المخزن الميت (DSE) على الأشجار. المتجر الميت هو مخزن في الذاكرة
الموقع الذي تم استبداله لاحقًا بواسطة متجر آخر دون أي أحمال متداخلة. في
هذه الحالة يمكن حذف المتجر السابق. يتم تمكين هذه العلامة بشكل افتراضي في -O و
أعلى.

-فتري- الفصل
إجراء نسخ رأس حلقة على الأشجار. هذا مفيد لأنه يزيد
فعالية تحسينات حركة الكود. كما أنه يوفر قفزة واحدة. هذا العلم
ممكّن افتراضيًا في -O وأعلى. لم يتم تمكينه لـ -أوس، لأنه عادة
يزيد من حجم الشفرة.

-ftree- حلقة- الأمثل
أداء تحسينات حلقة على الأشجار. يتم تمكين هذه العلامة بشكل افتراضي في -O و
أعلى.

-فتري-حلقة-خطية
إجراء تحويلات تبادل الحلقة على الشجرة. مثل - التبادل الطائر. ليستخدم
هذا التحول في الكود ، يجب تكوين GCC مع - مع ISL لتمكين
البنية التحتية لتحويل حلقة الجرافيت.

- التبادل الطائر
قم بإجراء تحويلات تبادل الحلقة على الحلقات. تبديل حلقتين متداخلتين
يبدل الحلقات الداخلية والخارجية. على سبيل المثال ، إعطاء حلقة مثل:

هل ي = 1 ، م
هل أنا = 1 ، ن
أ (ي ، أنا) = أ (ي ، أنا) * ج
ENDDO
ENDDO

تبادل الحلقة يحول الحلقة كما لو كانت مكتوبة:

هل أنا = 1 ، ن
هل ي = 1 ، م
أ (ي ، أنا) = أ (ي ، أنا) * ج
ENDDO
ENDDO

والتي يمكن أن تكون مفيدة عندما تكون "N" أكبر من ذاكرات التخزين المؤقت ، لأنه في Fortran ،
يتم تخزين عناصر المصفوفة في الذاكرة بشكل متجاور حسب العمود ، والأصل
تتكرر الحلقة عبر الصفوف ، مما قد يؤدي إلى فقدان ذاكرة التخزين المؤقت عند كل وصول. هذه
ينطبق التحسين على جميع اللغات التي تدعمها GCC ولا يقتصر على
فورتران. لاستخدام تحويل الكود هذا ، يجب تكوين GCC مع - مع ISL إلى
تمكين البنية التحتية لتحويل حلقة الجرافيت.

-قريب-شريط-الألغام
قم بإجراء تحويلات تعدين الشريط الحلقي على الحلقات. قطاع التعدين يقسم حلقة إلى
حلقتان متداخلتان. الحلقة الخارجية لها خطوات مساوية لحجم الشريط والداخلي
تحتوي الحلقة على خطوات واسعة من الحلقة الأصلية داخل الشريط. يمكن تغيير طول الشريط
يستخدم ال حلقة-كتلة-حجم البلاط معامل. على سبيل المثال ، إعطاء حلقة مثل:

هل أنا = 1 ، ن
أ (أنا) = أ (أنا) + ج
ENDDO

يعمل تعدين الشريط الحلقي على تحويل الحلقة كما لو كانت مكتوبة:

هل II = 1 ، N ، 51
DO I = II، min (II + 50، N)
أ (أنا) = أ (أنا) + ج
ENDDO
ENDDO

ينطبق هذا التحسين على جميع اللغات التي تدعمها GCC ولا يقتصر على
فورتران. لاستخدام تحويل الكود هذا ، يجب تكوين GCC مع - مع ISL إلى
تمكين البنية التحتية لتحويل حلقة الجرافيت.

- كتلة طيارة
قم بإجراء تحويلات منع الحلقة على الحلقات. حظر مناجم الشريط كل حلقة في
عش الحلقة بحيث تتلاءم الذاكرة التي تصل إلى حلقات العنصر داخل ذاكرات التخزين المؤقت. ال
يمكن تغيير طول الشريط باستخدام حلقة-كتلة-حجم البلاط معامل. على سبيل المثال،
معطى حلقة مثل:

هل أنا = 1 ، ن
هل ي = 1 ، م
أ (ي ، أنا) = ب (أنا) + ج (ي)
ENDDO
ENDDO

يحول حظر الحلقة الحلقة كما لو كانت مكتوبة:

هل II = 1 ، N ، 51
DO JJ = 1، M، 51
DO I = II، min (II + 50، N)
DO J = JJ، min (JJ + 50، M)
أ (ي ، أنا) = ب (أنا) + ج (ي)
ENDDO
ENDDO
ENDDO
ENDDO

والتي يمكن أن تكون مفيدة عندما يكون "M" أكبر من ذاكرات التخزين المؤقت ، لأن الحلقة الداخلية
يتكرر على كمية أصغر من البيانات التي يمكن الاحتفاظ بها في ذاكرات التخزين المؤقت. هذه
ينطبق التحسين على جميع اللغات التي تدعمها GCC ولا يقتصر على
فورتران. لاستخدام تحويل الكود هذا ، يجب تكوين GCC مع - مع ISL إلى
تمكين البنية التحتية لتحويل حلقة الجرافيت.

-fgraphite- الهوية
تمكين تحويل الهوية للجرافيت. لكل SCoP نقوم بإنشاء ملف
تمثيل متعدد السطوح وتحويله مرة أخرى إلى شكل. استخدام -fgraphite- الهوية
يمكننا التحقق من تكاليف أو فوائد GIMPLE -> GRAPHITE -> GIMPLE التحول.
يتم أيضًا تنفيذ بعض التحسينات الدنيا بواسطة منشئ الكود ISL ، مثل الفهرس
تقسيم وإلغاء رمز الميت في الحلقات.

-قلب-عش- الأمثل
تفعيل مُحسِّن عش التكرار المستند إلى ISL. هذا هو مُحسِّن عش التكرار الحلقي العام
على خوارزميات بلوتو الأمثل. يقوم بحساب بنية حلقة محسّنة لـ
موقع البيانات والتوازي. هذا الخيار تجريبي.

-تقلب-فتح-والمربى
قم بتمكين unroll and jam لمُحسِّن عش التكرار المستند إلى ISL. يمكن أن يكون عامل فتح
تغيرت باستخدام حلقة-فتح-حجم المربى معامل. البعد غير المرتبط (العد
من الأكثر داخلية) باستخدام امتداد حلقة-فتح-جام-عمق المعلمة.
.

-قلب-موازاة الكل
استخدم تحليل اعتماد بيانات الجرافيت لتحديد الحلقات التي يمكن موازنتها.
قم بموازنة جميع الحلقات التي يمكن تحليلها بحيث لا تحتوي على تبعيات تحمل الحلقة
دون التحقق من أنه من المربح موازنة الحلقات.

-فحص-البيانات-الدوائر
قارن نتائج العديد من أدوات تحليل الاعتماد على البيانات. يستخدم هذا الخيار ل
تصحيح أخطاء محللي اعتماد البيانات.

-ftree- حلقة- إذا- تحويل
حاول تحويل القفزات الشرطية في الحلقات الأعمق إلى التفرعات الأقل
مرادف. القصد من ذلك هو إزالة التحكم في التدفق من الحلقات الداخلية بالترتيب
لتحسين قدرة تمرير الاتجاه للتعامل مع هذه الحلقات. هذا هو
يتم تمكينه افتراضيًا إذا تم تمكين Vectorization.

-ftree- حلقة- إذا- تحويل- مخازن
حاول أيضًا تحويل القفزات الشرطية التي تحتوي على ذاكرة الكتابة. هذه
يمكن أن يكون التحويل غير آمن للبرامج متعددة الخيوط لأنه يحول الشرطي
يكتب الذاكرة في ذاكرة غير مشروطة يكتب. على سبيل المثال،

لـ (i = 0 ؛ i <N ؛ i ++)
إذا (شرطي)
A [i] = expr ؛

يتحول إلى

لـ (i = 0 ؛ i <N ؛ i ++)
A [i] = cond؟ expr: A [i] ؛

يحتمل أن تنتج سباقات البيانات.

-توزيع-حلقة-شجرة
نفذ توزيع الحلقة. يمكن لهذه العلامة تحسين أداء ذاكرة التخزين المؤقت على أجسام الحلقة الكبيرة
والسماح بمزيد من تحسينات الحلقة ، مثل الموازاة أو التوجيه ، لأخذها
مكان. على سبيل المثال ، الحلقة

هل أنا = 1 ، ن
أ (أنا) = ب (أنا) + ج
D (I) = E (I) * F
ENDDO

يتحول إلى

هل أنا = 1 ، ن
أ (أنا) = ب (أنا) + ج
ENDDO
هل أنا = 1 ، ن
D (I) = E (I) * F
ENDDO

-توزيع-حلقة-توزيع-أنماط
نفذ توزيع الحلقات للأنماط التي يمكن تكوينها بواسطة استدعاءات ملف
مكتبة. يتم تمكين هذه العلامة بشكل افتراضي في -O3.

يوزع هذا المرور حلقات التهيئة ويولد استدعاءًا لـ memset صفر.
على سبيل المثال ، الحلقة

هل أنا = 1 ، ن
أ (أنا) = 0
ب (أنا) = أ (أنا) + أنا
ENDDO

يتحول إلى

هل أنا = 1 ، ن
أ (أنا) = 0
ENDDO
هل أنا = 1 ، ن
ب (أنا) = أ (أنا) + أنا
ENDDO

وتتحول حلقة التهيئة إلى استدعاء لـ memset صفر.

-ftree- حلقة- الدردشة
أداء حركة حلقة ثابتة على الأشجار. هذا التمرير يتحرك فقط الثوابت الصعبة
للتعامل على مستوى RTL (استدعاءات الوظائف ، والعمليات التي تتوسع إلى تسلسلات غير بديهية
من insns). مع حلقات-funswitch كما أنه ينقل معاملات الشروط التي هي
ثابت خارج الحلقة ، حتى نتمكن من استخدام تحليل الثبات البسيط في
حلقة unswitching. يتضمن التمرير أيضًا حركة المتجر.

-فتري-حلقة- ايفكنون
أنشئ عدادًا أساسيًا لعدد التكرارات في الحلقات التي يتم تحديدها
يتطلب عدد التكرارات تحليلاً معقدًا. ثم قد التحسينات في وقت لاحق
تحديد الرقم بسهولة. مفيد خاصة فيما يتعلق بفتح.

-خمسة
أداء التحسينات المتغيرة للحث (تقليل القوة ، متغير الحث
الدمج والاستقراء الحذف المتغير) على الأشجار.

-ftree- موازاة الحلقات = n
حلقات متوازية ، أي تقسيم مساحة التكرار الخاصة بهم للتشغيل في n خيوط. هذا هو
ممكن فقط للحلقات التي تكون تكراراتها مستقلة ويمكن أن تكون عشوائية
إعادة ترتيب. التحسين مربح فقط على الأجهزة متعددة المعالجات ، للحلقات
التي تستخدم وحدة المعالجة المركزية بشكل مكثف ، بدلاً من تقييدها على سبيل المثال من خلال عرض النطاق الترددي للذاكرة. هذا الخيار
يدل -الخطأ، وبالتالي فهو مدعوم فقط على الأهداف التي تحظى بدعم
-الخطأ.

-فتري- pta
قم بإجراء تحليل نقاط دالة محلية على الأشجار. يتم تمكين هذه العلامة بشكل افتراضي
at -O وأعلى.

-فتري-سرا
إجراء الاستبدال القياسي للركام. هذا التمرير يحل محل مراجع الهيكل
مع الحجميات لمنع ارتكاب الهياكل في الذاكرة في وقت مبكر جدًا. هذا العلم
ممكّن افتراضيًا في -O وأعلى.

-ftree- نسخة
إجراء إعادة تسمية النسخ على الأشجار. يحاول هذا التمرير إعادة تسمية المؤقتين للمترجم إلى
المتغيرات الأخرى في مواقع النسخ ، وعادة ما ينتج عنها أسماء متغيرات أكثر
تشبه إلى حد كبير المتغيرات الأصلية. يتم تمكين هذه العلامة بشكل افتراضي في -O و
أعلى.

-ftree-coalesce- مضمنة- vars
أخبر بطاقة اسم النسخة (انظر -ftree- نسخة) لمحاولة الجمع بين مستخدم صغير-
متغيرات محددة أيضًا ، ولكن فقط إذا كانت مضمنة من وظائف أخرى. إنها
شكل أكثر محدودية -ftree-coalesce-vars. قد يضر هذا بمعلومات التصحيح من هذا القبيل
المتغيرات المضمنة ، ولكنها تحافظ على متغيرات الوظيفة المضمنة بعيدًا عن كل منها
أخرى ، بحيث من المرجح أن تحتوي على القيم المتوقعة في تصحيح الأخطاء
جلسة.

-ftree-coalesce-vars
أخبر بطاقة اسم النسخة (انظر -ftree- نسخة) لمحاولة الجمع بين مستخدم صغير-
المتغيرات المعرفة أيضا ، بدلا من مجرد مؤقت المترجم. هذا قد يحد بشدة
القدرة على تصحيح أخطاء برنامج محسن تم تجميعه مع -fno-var- تتبع-التخصيصات.
في النموذج المنفي ، تمنع هذه العلامة اندماج SSA لمتغيرات المستخدم ، بما في ذلك
مضمنة منها. يتم تمكين هذا الخيار افتراضيًا.

-فتري-تير
إجراء استبدال مؤقت للتعبير أثناء SSA-> المرحلة العادية. غير مرتبطة
يتم استبدال المؤقتات استخدام / تعريف مفرد في موقع استخدامها مع تعريفها
التعبير. ينتج عن هذا رمز غير GIMPLE ، ولكنه يعطي الموسعات أكثر من ذلك بكثير
أشجار معقدة للعمل عليها تؤدي إلى جيل أفضل من RTL. يتم تمكين هذا بواسطة
الافتراضي في -O وأعلى.

-فتري- slsr
قم بإجراء تخفيض في قوة الخط المستقيم على الأشجار. هذا يعترف ذات الصلة
التعبيرات التي تنطوي على عمليات الضرب واستبدالها بحسابات أقل تكلفة
عندما يكون ذلك ممكنا. يتم تمكين هذا افتراضيًا في -O وأعلى.

-ftree-vectorize
أداء التوجيه على الأشجار. هذه العلامة تمكن -ftree- حلقة- vectorize و
-ftree-slp-vectorize إذا لم يتم تحديدها صراحة.

-ftree- حلقة- vectorize
أداء توجيه حلقة على الأشجار. يتم تمكين هذه العلامة بشكل افتراضي في -O3 وعندما
-ftree-vectorize .

-ftree-slp-vectorize
إجراء توجيه الكتلة الأساسي على الأشجار. يتم تمكين هذه العلامة بشكل افتراضي في -O3 و
متى -ftree-vectorize .

-تأثير- نموذج التكلفة =نموذج
قم بتعديل نموذج التكلفة المستخدم للتوجيه. ال نموذج يجب أن تكون الحجة واحدة من
غير محدود, ديناميكي or رخيص. مع ال غير محدود نموذج مسار الكود المتجه هو
يفترض أن يكون مربحًا أثناء استخدام ديناميكي نموذج لحراسة وقت التشغيل
مسار الكود المتجه لتمكينه فقط من أجل عمليات التكرار التي من المحتمل أن يتم تنفيذها
أسرع مما كانت عليه عند تنفيذ الحلقة العددية الأصلية. ال رخيص نموذج تعطيل
توجيه الحلقات حيث يكون القيام بذلك باهظ التكلفة على سبيل المثال بسبب
يتحقق وقت التشغيل المطلوب من اعتماد البيانات أو المحاذاة ولكن بخلاف ذلك يساوي
ديناميكي نموذج. يعتمد نموذج التكلفة الافتراضي على إشارات التحسين الأخرى وهو
إما ديناميكي or رخيص.

-نموذج التكلفة fsimd =نموذج
قم بتغيير نموذج التكلفة المستخدم لتوجيه الحلقات المميزة ببرنامج OpenMP أو Cilk
بالإضافة إلى التوجيه simd. ال نموذج يجب أن تكون الحجة واحدة من غير محدود, ديناميكي, رخيص.
جميع قيم نموذج لها نفس المعنى كما هو موضح في -تأثير- نموذج التكلفة وحسب
نموذج التكلفة الافتراضي المحدد بـ -تأثير- نموذج التكلفة .

-ftree-vrp
قم بتنفيذ نشر نطاق القيمة على الأشجار. هذا مشابه للانتشار المستمر
تمرير ، ولكن بدلاً من القيم ، يتم نشر نطاقات القيم. هذا يسمح لـ
أمثلية لإزالة عمليات تدقيق النطاق غير الضرورية مثل عمليات التحقق من الصفيف المقيدة والمؤشر الفارغ
الفحوصات. يتم تمكين هذا افتراضيًا في -O2 وأعلى. مؤشر فارغ تحقق من الحذف
يتم فقط إذا -fdelete-null-pointer-check-pointer (تحقق من -fdelete-null-pointer-pointer) .

-fsplit-ivs-in-unroller
يتيح التعبير عن قيم متغيرات الاستقراء في التكرارات اللاحقة لـ
حلقة غير منكرة باستخدام القيمة في التكرار الأول. هذا يكسر التبعية الطويلة
السلاسل ، وبالتالي تحسين كفاءة تمريرات الجدولة.

مزيج من -ويب وغالبًا ما تكون CSE كافية للحصول على نفس التأثير.
ومع ذلك ، لا يمكن الاعتماد عليها في الحالات التي يكون فيها جسم الحلقة أكثر تعقيدًا من a
كتلة أساسية واحدة. كما أنه لا يعمل على الإطلاق في بعض البنى بسبب
القيود في بطاقة CSE.

يتم تمكين هذا التحسين بشكل افتراضي.

متغير التوسع في unroller
باستخدام هذا الخيار ، يقوم المترجم بإنشاء نسخ متعددة من بعض المتغيرات المحلية عندما
فتح حلقة ، والتي يمكن أن تؤدي إلى رمز متفوق.

-تضمين جزئيًا
أجزاء مضمنة من الوظائف. هذا الخيار له أي تأثير فقط عندما يتم تضمين نفسه
تشغيل بواسطة وظائف الخطوط الدقيقة or وظائف صغيرة الحجم خيارات.

ممكن على المستوى -O2.

- المشتركة التنبؤية
قم بإجراء تحسين تنبؤي مشترك ، أي إعادة استخدام الحسابات (على وجه الخصوص
أحمال الذاكرة والمخازن) التي أجريت في التكرارات السابقة للحلقات.

يتم تمكين هذا الخيار على المستوى -O3.

-fprefetch- حلقة- صفائف
إذا كان الجهاز المستهدف مدعومًا ، فقم بإنشاء تعليمات لجلب الذاكرة مسبقًا إلى
تحسين أداء الحلقات التي تصل إلى المصفوفات الكبيرة.

قد ينتج عن هذا الخيار رمز أفضل أو أسوأ ؛ النتائج تعتمد بشكل كبير على
بنية الحلقات داخل الكود المصدري.

معاق على المستوى -أوس.

-fno-peephole
-fno-peephole2
تعطيل أي تحسينات ثقب الباب الخاصة بالجهاز. الفرق بين
-fno-peephole و -fno-peephole2 في كيفية تنفيذها في المترجم ؛ بعض
تستخدم الأهداف أحدهما ، والبعض الآخر يستخدم الآخر ، والبعض الآخر يستخدم كلاهما.

-fpeephole يتم تمكينه افتراضيًا. -fpeephole2 ممكن على المستويات -O2, -O3, -أوس.

احتمالية عدم وجود فرع تخمين
لا تخمن احتمالات الفرع باستخدام الاستدلال.

يستخدم GCC الاستدلال لتخمين احتمالات الفرع إذا لم يتم توفيرها بواسطة
ملاحظات التنميط (-fprofile- أقواس). تستند هذه الاستدلالات على تدفق التحكم
رسم بياني. إذا تم تحديد بعض احتمالات الفروع بواسطة "__builtin_expect" ، فسيتم تحديد
يتم استخدام الاستدلال لتخمين احتمالات الفروع لبقية تدفق التحكم
الرسم البياني ، مع مراعاة معلومات "__builtin_expect". التفاعلات بين
يمكن أن يكون الاستدلال و "توقع_بناء_بناء" معقدًا ، وفي بعض الحالات ، قد يكون مفيدًا
لتعطيل الاستدلال بحيث تكون تأثيرات "__builtin_expect" أسهل
تفهم.

الافتراضي هو -fguess- فرع- احتمال على المستويات -O, -O2, -O3, -أوس.

كتل -freorder
أعد ترتيب الكتل الأساسية في الوظيفة المترجمة لتقليل عدد ما تم التقاطه
الفروع وتحسين منطقة الكود.

ممكن على المستويات -O2, -O3.

كتل-فريدر-والتقسيم
بالإضافة إلى إعادة ترتيب الكتل الأساسية في الوظيفة المترجمة ، من أجل تقليل
عدد الفروع والأقسام المأخوذة من الكتل الأساسية الساخنة والباردة إلى أقسام منفصلة
من ملفات التجميع و. o لتحسين أداء موقع الترحيل والتخزين المؤقت.

يتم إيقاف تشغيل هذا التحسين تلقائيًا في وجود معالجة الاستثناء ،
لأقسام linkonce ، وللوظائف التي لها سمة قسم محددة بواسطة المستخدم وعلى أي منها
العمارة التي لا تدعم الأقسام المسماة.

ممكّن لـ x86 على المستويات -O2, -O3.

وظائف -freorder
أعد ترتيب الوظائف في ملف الكائن من أجل تحسين موقع الكود. هذا هو
يتم تنفيذه باستخدام أقسام فرعية خاصة ".text.hot" لمعظم عمليات التنفيذ
وظائف و ".text.unlikely" للوظائف المنفذة غير المحتملة. إعادة الترتيب تتم بواسطة
الرابط لذا يجب أن يدعم تنسيق ملف الكائن الأقسام المسماة ويجب أن يضع الرابط
بطريقة معقولة.

يجب أيضًا أن تكون تعليقات الملف الشخصي متاحة لجعل هذا الخيار فعالاً. ارى
-fprofile- أقواس للتفاصيل.

ممكن على المستويات -O2, -O3, -أوس.

-تعرج صارم
اسمح للمترجم بافتراض قواعد التسمية الأكثر صرامة المطبقة على اللغة
يجري تجميعها. بالنسبة لـ C (و C ++) ، يؤدي ذلك إلى تنشيط التحسينات بناءً على نوع
التعبيرات. على وجه الخصوص ، يُفترض أن كائنًا من نوع واحد لا يقيم أبدًا في
نفس العنوان ككائن من نوع مختلف ، ما لم تكن الأنواع متشابهة تقريبًا.
على سبيل المثال ، يمكن أن يطلق على "int غير موقعة" الاسم المستعار "int" ، ولكن ليس "void *" أو "double". أ
قد يكون نوع الحرف مستعارًا لأي نوع آخر.

انتبه بشكل خاص إلى الكود مثل هذا:

الاتحاد a_union {
أنا
مزدوج د ؛
};

int f () {
الاتحاد a_union t ؛
الدفتيريا = 3.0 ؛
عودة تي
}

ممارسة القراءة من عضو نقابي مختلف عن آخر عضو نقابي
الكتابة إلى (تسمى "نوع العقاب") أمر شائع. حتى مع -تعرج صارم، نوع-
يُسمح بالتعاقب ، بشرط الوصول إلى الذاكرة من خلال نوع الاتحاد. لذلك
كود أعلاه يعمل كما هو متوقع. ومع ذلك ، قد لا يكون هذا الرمز:

int f () {
الاتحاد a_union t ؛
int * ip ؛
الدفتيريا = 3.0 ؛
ip = & t.i ؛
عودة * ip ؛
}

وبالمثل ، يمكنك الوصول عن طريق أخذ العنوان ، وإلقاء المؤشر الناتج و
إلغاء الإشارة إلى النتيجة له ​​سلوك غير محدد ، حتى إذا كان المصبوب يستخدم نوعًا موحدًا ،
على سبيل المثال:

int f () {
مزدوج د = 3.0 ؛
العودة ((الاتحاد a_union *) & د) -> أنا ؛
}

أفضل -تعرج صارم يتم تمكين الخيار على المستويات -O2, -O3, -أوس.

- تجاوز الحد
اسمح للمترجم بافتراض قواعد تجاوز موقعة صارمة ، اعتمادًا على اللغة
يجري تجميعها. بالنسبة لـ C (و C ++) ، فهذا يعني أن الفائض عند إجراء العمليات الحسابية باستخدام
الأرقام الموقعة غير محددة ، مما يعني أن المترجم قد يفترض أنه لا يفعل ذلك
يحدث. هذا يسمح بالعديد من التحسينات. على سبيل المثال ، يفترض المترجم ذلك
تعبير مثل "i + 10> i" يكون دائمًا صحيحًا بالنسبة إلى "i" الموقعة. هذا الافتراض
صالح فقط إذا كان تجاوز السعة الموقع غير محدد ، حيث يكون التعبير خطأ إذا كان "i + 10"
فيضان عند استخدام حسابين مكملين. عندما يكون هذا الخيار ساري المفعول أي
محاولة تحديد ما إذا كان يجب كتابة عملية على فائض الأرقام الموقعة
بعناية حتى لا تنطوي في الواقع على تجاوز.

يسمح هذا الخيار أيضًا للمترجم بافتراض دلالات المؤشر الصارمة: معطى أ
مؤشر إلى كائن ، إذا كانت إضافة إزاحة إلى ذلك المؤشر لا ينتج عنها مؤشر
إلى نفس الكائن ، فإن الإضافة غير محددة. هذا يسمح للمترجم أن يستنتج
أن "p + u> p" يكون دائمًا صحيحًا للمؤشر "p" وعدد صحيح بدون إشارة "u". هذه
الافتراض صالح فقط لأن التفاف المؤشر غير معرف ، كما هو التعبير
خطأ إذا فاضت "p + u" باستخدام حسابين متمملين.

انظر أيضا -فرابف اختيار. استخدام -فرابف يعني أن تجاوز عدد صحيح وقع هو
محدد بالكامل: يلتف. متي -فرابف يستخدم ، لا فرق بين
- تجاوز الحد و -fno- صارم- تجاوز للأعداد الصحيحة. مع -فرابف أنواع معينة
من تجاوز مسموح به. على سبيل المثال ، إذا حصل المترجم على تجاوز عند القيام بذلك
حسابية على الثوابت ، لا يزال من الممكن استخدام القيمة الفائضة مع -فرابف، ولكن ليس
غير ذلك.

أفضل - تجاوز الحد يتم تمكين الخيار على المستويات -O2, -O3, -أوس.

وظائف المحاذاة
وظائف المحاذاة =n
قم بمحاذاة بداية الوظائف مع القوة التالية التي تكون أكبر من n، يتخطى ما يصل إلى n
بايت. على سبيل المثال، - وظائف المحاذاة = 32 يقوم بمحاذاة الوظائف إلى 32 بايت التالية
الحدود ، ولكن - وظائف المحاذاة = 24 يتماشى مع حد 32 بايت التالي فقط إذا كان هذا
يمكن أن يتم ذلك عن طريق تخطي 23 بايت أو أقل.

-fno- محاذاة وظائف و - وظائف المحاذاة = 1 متكافئة وتعني أن الوظائف
لا تتماشى.

بعض المجمعات تدعم فقط هذه العلامة عندما n هي قوة اثنين في هذه الحالة ، هو
تقريبًا.

If n لم يتم تحديده أو أنه صفر ، استخدم الإعداد الافتراضي المعتمد على الجهاز.

ممكن على المستويات -O2, -O3.

-ملصقات المحاذاة
-ملصقات المحاذاة =n
قم بمحاذاة جميع أهداف الفروع مع حد أس اثنين ، والتخطي إلى الأعلى n بايت مثل
وظائف المحاذاة. هذا الخيار يمكن أن يجعل الكود أبطأ بسهولة ، لأنه يجب أن يُدرج
عمليات وهمية عندما يتم الوصول إلى هدف الفرع في التدفق المعتاد للشفرة.

-fno- محاذاة-تسميات و -ملصقات المحاذاة = 1 متكافئة وتعني أن التسميات ليست كذلك
محاذاة.

If حلقات محاذاة or -محاذي-يقفز قابلة للتطبيق وأكبر من هذه القيمة ، إذن
يتم استخدام قيمهم بدلاً من ذلك.

If n لم يتم تحديده أو أنه صفر ، استخدم قيمة افتراضية تعتمد على الآلة وهو أمر محتمل جدًا
أن تكون 1، مما يعني عدم وجود محاذاة.

ممكن على المستويات -O2, -O3.

حلقات محاذاة
حلقات محاذاة =n
قم بمحاذاة الحلقات إلى حد أس اثنين ، مع تخطي ما يصل إلى n بايت مثل وظائف المحاذاة.
إذا تم تنفيذ الحلقات عدة مرات ، فهذا يعوض عن أي إعدام للدمية
العمليات.

-fno- محاذاة الحلقات و حلقات محاذاة = 1 متكافئة وتعني أن الحلقات ليست كذلك
محاذاة.

If n لم يتم تحديده أو أنه صفر ، استخدم الإعداد الافتراضي المعتمد على الجهاز.

ممكن على المستويات -O2, -O3.

-محاذي-يقفز
- يقفز محاذاة =n
قم بمحاذاة أهداف الفرع إلى حد قوة اثنين ، لأهداف الفرع حيث الأهداف
لا يمكن الوصول إليه إلا بالقفز والتخطي لأعلى n بايت مثل وظائف المحاذاة. في
في هذه الحالة ، لا يلزم تنفيذ أي عمليات وهمية.

-fno- محاذاة يقفز و - يقفز محاذاة = 1 متكافئة وتعني أن الحلقات ليست كذلك
محاذاة.

If n لم يتم تحديده أو أنه صفر ، استخدم الإعداد الافتراضي المعتمد على الجهاز.

ممكن على المستويات -O2, -O3.

-الوحدة في وقت واحد
تم ترك هذا الخيار لأسباب التوافق. -الوحدة في وقت واحد ليس له تأثير ، بينما
-fno-وحدة في وقت يدل -fno-toplevel-reorder و - قسم المراسي.

يتم التمكين افتراضيًا.

-fno-toplevel-reorder
لا تعيد ترتيب وظائف المستوى الأعلى والمتغيرات وعبارات "ASM". إخراجها في
بنفس الترتيب الذي تظهر به في ملف الإدخال. عند استخدام هذا الخيار ،
لا يتم إزالة المتغيرات الثابتة غير المشار إليها. هذا الخيار مخصص لدعم
الكود الحالي الذي يعتمد على ترتيب معين. للحصول على رمز جديد ، من الأفضل استخدامه
السمات عندما يكون ذلك ممكنًا.

ممكن على المستوى -O0. عند تعطيله بشكل صريح ، فإنه يعني أيضًا - قسم المراسي,
والذي يتم تمكينه بطريقة أخرى في -O0 على بعض الأهداف.

-ويب
يُنشئ شبكات على النحو الشائع الاستخدام لأغراض تخصيص التسجيل وتعيين كل موقع ويب
سجل زائف فردي. هذا يسمح لتمرير تخصيص السجل بالعمل
الصور الزائفة بشكل مباشر ، ولكنها تقوي أيضًا العديد من ممرات التحسين الأخرى ، مثل محرك البحث المخصص ،
حلقة محسن ومزيل رمز ميت تافه. ومع ذلك ، يمكنه إجراء تصحيح الأخطاء
مستحيل ، لأن المتغيرات لم تعد تبقى في "سجل المنزل".

ممكن بشكل افتراضي مع حلقات -funroll.

-كل-البرنامج
افترض أن وحدة الترجمة الحالية تمثل البرنامج الذي يتم تجميعه بالكامل.
جميع الوظائف والمتغيرات العامة باستثناء "main" وتلك المدمجة بواسطة
السمة "externally_visible" تصبح وظائف ثابتة ويتم تحسينها في الواقع
بشكل أكثر عدوانية من قبل محسنو الطب البديل.

لا ينبغي استخدام هذا الخيار مع -فلتو. بدلا من الاعتماد على رابط
يجب أن يوفر المكون الإضافي معلومات أكثر أمانًا ودقة.

-فلتو [=n]
يقوم هذا الخيار بتشغيل مُحسِّن وقت الارتباط القياسي. عندما يتم استدعاؤه مع شفرة المصدر ، فإنه
يولد GIMPLE (أحد التمثيلات الداخلية لدول مجلس التعاون الخليجي) ويكتبها إلى ELF خاص
أقسام في ملف الكائن. عندما يتم ربط ملفات الكائن معًا ، فإن كل ملفات
تتم قراءة الهيئات الوظيفية من أقسام ELF هذه ويتم إنشاء مثيل لها كما لو كانت كذلك
جزء من نفس وحدة الترجمة.

لاستخدام مُحسِّن وقت الارتباط ، -فلتو ويجب تحديد خيارات التحسين في
تجميع الوقت وأثناء الارتباط النهائي. على سبيل المثال:

دول مجلس التعاون الخليجي -c -O2 -flto foo.c
دول مجلس التعاون الخليجي -c -O2-flto bar.c
دول مجلس التعاون الخليجي -o myprog -flto -O2 foo.o bar.o

يحفظ أول استدعائين لمجلس التعاون الخليجي تمثيل الرمز الثانوي لـ GIMPLE في خاص
أقسام ELF بالداخل foo.o و بار. يقرأ الاستدعاء الأخير رمز GIMPLE الثانوي
تبدأ من foo.o و بار، يدمج الملفين في صورة داخلية واحدة ، ويجمع
النتيجة كالمعتاد. منذ كلاهما foo.o و بار يتم دمجها في صورة واحدة ، هذا
يتسبب في عمل جميع التحليلات والتحسينات ما بين الإجراءات في دول مجلس التعاون الخليجي عبر
ملفين كما لو كانا واحد. هذا يعني ، على سبيل المثال ، أن الخط الداخلي هو
قادرة على مضمنة الوظائف في بار في وظائف في foo.o والعكس صحيح.

هناك طريقة أخرى (أبسط) لتمكين تحسين وقت الارتباط وهي:

دول مجلس التعاون الخليجي -o myprog -flto -O2 foo.c bar.c

ما سبق يولد رمز بايت لـ foo.c و بار ج، يدمجهم معًا في ملف واحد
تمثيل GIMPLE وتحسينها كالمعتاد لإنتاجها myprog.

الشيء الوحيد المهم الذي يجب مراعاته هو تمكين تحسينات وقت الارتباط
بحاجة إلى استخدام برنامج التشغيل GCC لأداء خطوة الارتباط. ثم يؤدي GCC تلقائيًا
تحسين وقت الارتباط إذا تم تجميع أي من الكائنات المعنية باستخدام -فلتو
خيار سطر الأوامر. يجب عليك بشكل عام تحديد خيارات التحسين التي سيتم استخدامها
لتحسين وقت الارتباط على الرغم من أن دول مجلس التعاون الخليجي تحاول أن تكون ذكية في تخمين التحسين
مستوى لاستخدامه من الخيارات المستخدمة في وقت الترجمة إذا فشلت في تحديد واحد على الرابط-
زمن. يمكنك دائمًا تجاوز القرار التلقائي لإجراء تحسين وقت الارتباط على
ربط الوقت بالمرور -fno- لتو لأمر الارتباط.

لجعل تحسين البرنامج بأكمله فعالا ، من الضروري جعل بعض الشيء كله
افتراضات البرنامج. يحتاج المترجم إلى معرفة الوظائف والمتغيرات التي يمكن أن تكون
يتم الوصول إليها بواسطة المكتبات ووقت التشغيل خارج الوحدة المُحسَّنة لوقت الارتباط. متي
بدعم من الرابط ، البرنامج المساعد للرابط (انظر -fuse-linker-plugin) يمر، يمرر، اجتاز بنجاح
معلومات للمترجم عن الرموز المستخدمة والمرئية خارجيًا. عندما
المكوِّن الإضافي للرابط غير متوفر ، -كل-البرنامج يجب استخدامها للسماح للمترجم
لإجراء هذه الافتراضات ، مما يؤدي إلى اتخاذ قرارات تحسين أكثر صرامة.

متى -fuse-linker-plugin لم يتم تمكينه بعد ذلك ، عندما يتم تجميع ملف بامتداد -فلتوأطلقت حملة
ملف الكائن الذي تم إنشاؤه أكبر من ملف الكائن العادي لأنه يحتوي على GIMPLE
أكواد بايت والرمز النهائي المعتاد (انظر -فتات-ليتو الأشياء. هذا يعني هذا الكائن
يمكن ربط الملفات التي تحتوي على معلومات LTO كملفات كائن عادية ؛ لو -fno- لتو تم تمريره
إلى الرابط ، لا يتم تطبيق تحسينات interprocedural. لاحظ أن متى
- الدهون - ليتو الأجسام تم تمكين مرحلة الترجمة أسرع ولكن لا يمكنك تنفيذ
رابط عادي وغير LTO عليها.

بالإضافة إلى ذلك ، فإن علامات التحسين المستخدمة في تجميع الملفات الفردية ليست كذلك
تتعلق بالضرورة بتلك المستخدمة في وقت الارتباط. على سبيل المثال،

دول مجلس التعاون الخليجي -c -O0 -ffat-lto-object -flto foo.c
دول مجلس التعاون الخليجي -c -O0 -ffat-lto-object -flto bar.c
مجلس التعاون الخليجي -o myprog -O3 foo.o bar.o

ينتج عن هذا ملفات كائنات فردية برمز مجمّع غير محسّن ، ولكن ملف
الناتج الثنائي myprog هو الأمثل في -O3. إذا ، بدلاً من ذلك ، فإن الثنائي النهائي هو
ولدت مع -fno- لتو، ثم myprog لم يتم تحسينه.

عند إنتاج الثنائي النهائي ، يطبق GCC فقط تحسينات وقت الارتباط لتلك
الملفات التي تحتوي على كود بايت. لذلك ، يمكنك مزج ومطابقة ملفات الكائنات وملفات
مكتبات مع رموز بايت GIMPLE وكود كائن نهائي. مجلس التعاون الخليجي يختار تلقائيا
الملفات التي سيتم تحسينها في وضع LTO وأي الملفات سيتم ربطها بدون المزيد
معالجة.

هناك بعض إشارات إنشاء الكود التي يحتفظ بها مجلس التعاون الخليجي عند إنشاء رموز بايت ، مثل
يجب استخدامها أثناء مرحلة الارتباط النهائي. بشكل عام الخيارات المحددة في
تجاوز وقت الارتباط تلك المحددة في وقت الترجمة.

إذا لم تحدد خيار مستوى التحسين -O في وقت الارتباط ثم يحسب GCC
واحد يعتمد على مستويات التحسين المستخدمة عند تجميع ملفات الكائن. ال
أعلى مستوى من التحسين يفوز هنا.

حاليًا ، يتم أخذ الخيارات التالية وإعداداتها من ملف الكائن الأول
التي حددتها بوضوح: -fPIC, -fpic, -fpie, -مألوف, - الاستثناءات,
- عدم الاستثناءات, -فنو- ​​tm وجميع -m أعلام الهدف.

يلزم وجود أعلام معينة لتغيير ABI للتوافق في جميع وحدات الترجمة والمحاولة
لتجاوز هذا في وقت الارتباط بقيمة متضاربة يتم تجاهلها. هذا يشمل
خيارات مثل -freg- هيكل- العودة و -fpcc-Struct-return.

خيارات أخرى مثل - عقد, -fno- صارم- تجاوز, -فرابف, -فنو- ​​trapv or
-fno- صارم- التعرج يتم تمريرها إلى مرحلة الارتباط ودمجها بشكل متحفظ
لوحدات الترجمة المتضاربة. خاصة -fno- صارم- تجاوز, -فرابف و
-فنو- ​​trapv تأخذ الأسبقية وعلى سبيل المثال -ffp- عقد = إيقاف له الأسبقية
-ffp-Contract = سريع. يمكنك تجاوزها في linke-time.

من المستحسن أن تقوم بتجميع كافة الملفات المشاركة في نفس الارتباط باستخدام
نفس الخيارات وكذلك تحديد تلك الخيارات في وقت الارتباط.

إذا واجهت LTO كائنات ذات ارتباط C تم إعلانه بأنواع غير متوافقة بشكل منفصل
يتم ربط وحدات الترجمة معًا (سلوك غير محدد وفقًا لمعيار ISO C99
6.2.7) ، قد يتم إصدار تشخيص غير مميت. السلوك لا يزال غير محدد في المدى
زمن. قد يتم رفع تشخيصات مماثلة للغات أخرى.

ميزة أخرى لـ LTO هي أنه من الممكن تطبيق تحسينات ما بين الإجراءات
على ملفات مكتوبة بلغات مختلفة:

دول مجلس التعاون الخليجي -c -flto foo.c
g ++ -c -flto bar.cc
غفورتران -c -flto baz.f90
g ++ -o myprog -flto -O3 foo.o bar.o baz.o -lgfortran

لاحظ أن الارتباط النهائي قد تم باستخدام ز ++ للحصول على مكتبات وقت تشغيل C ++ وملفات
-لغفورتران تمت إضافته للحصول على مكتبات وقت تشغيل Fortran. بشكل عام عند الخلط
اللغات في وضع LTO ، يجب استخدام نفس خيارات أوامر الارتباط كما هو الحال عند المزج
اللغات في تجميع منتظم (غير LTO).

إذا تم تخزين ملفات الكائنات التي تحتوي على رمز GIMPLE bytecode في أرشيف مكتبة ، على سبيل المثال
libfoo.a، فمن الممكن استخراجها واستخدامها في ارتباط LTO إذا كنت تستخدم ملف
رابط مع دعم البرنامج المساعد. لإنشاء مكتبات ثابتة مناسبة لـ LTO ، استخدم دول مجلس التعاون الخليجي-ع
و رانليب مجلس التعاون الخليجي بدلا من ar و رانليب؛ لإظهار رموز ملفات الكائن بامتداد
GIMPLE bytecode ، استخدم دول مجلس التعاون الخليجي - نانومتر. تلك الأوامر تتطلب ذلك ar, رانليب و nm وكانت
تم تجميعها مع دعم البرنامج المساعد. في وقت الارتباط ، استخدم العلم -fuse-linker-plugin إلى
تأكد من أن المكتبة تشارك في عملية تحسين LTO:

دول مجلس التعاون الخليجي -o myprog -O2 -flto -fuse-linker-plugin ao bo -lfoo

مع تمكين المكون الإضافي للرابط ، يستخرج الرابط ملفات GIMPLE المطلوبة من
libfoo.a ويمررها إلى دول مجلس التعاون الخليجي الجارية لجعلها جزءًا من المجموع
سيتم تحسين صورة GIMPLE.

إذا كنت لا تستخدم رابطًا مع دعم البرنامج المساعد و / أو لا تقم بتمكين الرابط
البرنامج المساعد ، ثم العناصر الموجودة بداخله libfoo.a يتم استخراجها وربطها كالعادة ، لكنهم
لا تشارك في عملية تحسين LTO. من أجل إنشاء مكتبة ثابتة
مناسب لكل من تحسين LTO والربط المعتاد ، قم بتجميع ملفات الكائنات باستخدام
-فلتو -فتات-ليتو الأشياء.

لا تتطلب تحسينات وقت الارتباط وجود البرنامج بأكمله للعمل.
إذا كان البرنامج لا يتطلب أي رموز ليتم تصديرها ، فمن الممكن دمجها
-فلتو و -كل-البرنامج للسماح للمحسّنين متعددي الإجراءات باستخدام المزيد
افتراضات صارمة قد تؤدي إلى تحسين فرص التحسين. استخدام
-كل-البرنامج ليست هناك حاجة عندما يكون البرنامج المساعد رابط نشط (انظر -fuse-linker-plugin).

لا يقوم التنفيذ الحالي لـ LTO بأي محاولة لإنشاء رمز ثانوي
محمول بين أنواع مختلفة من المضيفين. يتم إصدار ملفات بايت كود وهناك
يعد فحصًا صارمًا للإصدار ، لذا فإن ملفات الرمز البايت التي تم إنشاؤها في إصدار واحد من GCC لا تفعل ذلك
العمل مع إصدار أقدم أو أحدث من GCC.

لا يعمل تحسين وقت الارتباط بشكل جيد مع إنشاء معلومات تصحيح الأخطاء.
الجمع بين -فلتو مع -g قيد التجربة حاليًا ومن المتوقع أن ينتج عنه نتائج غير متوقعة
النتائج.

إذا قمت بتحديد الاختيارية n، يتم إجراء التحسين وإنشاء الكود في وقت الارتباط
يتم تنفيذه بالتوازي باستخدام n وظائف موازية من خلال استخدام مثبت جعل برنامج.
متغير البيئة جعل يمكن استخدامها لتجاوز البرنامج المستخدم. الافتراضي
قيمة ل n هو 1.

يمكنك أيضا تحديد -flto = خادم العمل لاستخدام وضع خادم عمل GNU make لتحديد
عدد الوظائف الموازية. هذا مفيد عندما يكون Makefile استدعاء GCC بالفعل
تنفيذ بالتوازي. يجب عليك مقدمًا أ + إلى وصفة الأمر في الوالد
Makefile لهذا العمل. من المحتمل أن يعمل هذا الخيار فقط إذا جعل هو صنع غنو.

- التقسيم - فلو =ALG
حدد خوارزمية التقسيم المستخدمة بواسطة مُحسِّن وقت الارتباط. القيمة
إما 1to1 لتحديد تقسيم يعكس ملفات المصدر الأصلية أو متوازن
لتحديد التقسيم إلى أجزاء متساوية الحجم (كلما أمكن ذلك) أو ماكس لخلق
قسم جديد لكل رمز حيثما أمكن ذلك. التحديد لا شيء كخوارزمية
يعطل التقسيم والتدفق تمامًا. النظام الأساسي متوازن. في حين
1to1 يمكن استخدامها كحل بديل للعديد من مشكلات طلب التعليمات البرمجية ، مثل ماكس
التقسيم مخصص للاختبار الداخلي فقط. القيمة صورة واحدة؟ يحدد ذلك
يجب استخدام قسم واحد بالضبط أثناء القيمة لا شيء يتجاوز التقسيم و
ينفذ خطوة تحسين وقت الارتباط مباشرة من مرحلة WPA.

دمج نوع flto-odr
تفعيل دفق أسماء الأنواع المشوهة لأنواع C ++ وتوحيدها في
لينك تايم. يؤدي هذا إلى زيادة حجم ملفات كائن LTO ، ولكن مع تمكين تشخيص واحد
تعريف مخالفات القاعدة.

-فلتو-مستوى الضغط =n
يحدد هذا الخيار مستوى الضغط المستخدم للغة الوسيطة المكتوبة
إلى ملفات كائن LTO ، ويكون مفيدًا فقط مع وضع LTO (-فلتو).
القيم الصالحة هي 0 (بدون ضغط) إلى 9 (أقصى ضغط). قيم خارج هذا
يتم تثبيت النطاق على إما 0 أو 9. إذا لم يتم توفير الخيار ، فسيتم توازن افتراضي
يتم استخدام إعداد الضغط.

-التقرير
طباعة تقرير بتفاصيل داخلية عن طريقة عمل مُحسِّن وقت الارتباط. ال
محتويات هذا التقرير تختلف من إصدار إلى آخر. من المفترض أن تكون مفيدة لدول مجلس التعاون الخليجي
للمطورين عند معالجة ملفات الكائنات في وضع LTO (عبر -فلتو).

معطل افتراضيًا.

-Flto-report-wpa
اعجاب -التقرير، ولكن اطبع فقط لمرحلة WPA من Link Time Optimization.

-fuse-linker-plugin
لتمكين استخدام المكون الإضافي للرابط أثناء تحسين وقت الارتباط. هذا الخيار يعتمد
على دعم البرنامج المساعد في الرابط ، والمتوفر باللون الذهبي أو في GNU ld 2.21 أو
أحدث.

يتيح هذا الخيار استخراج ملفات الكائنات باستخدام رمز بايت GIMPLE خارج المكتبة
أرشيف. يؤدي ذلك إلى تحسين جودة التحسين من خلال عرض المزيد من التعليمات البرمجية على الرابط-
مُحسِّن الوقت. تحدد هذه المعلومات الرموز التي يمكن الوصول إليها خارجيًا
(بواسطة كائن غير LTO أو أثناء الارتباط الديناميكي). نتيجة تحسين جودة التعليمات البرمجية على
الثنائيات (والمكتبات المشتركة التي تستخدم الرؤية المخفية) تشبه
-كل-البرنامج. شاهد -فلتو للحصول على وصف لتأثير هذا العلم وكيفية
استخدامها.

يتم تمكين هذا الخيار افتراضيًا عند تمكين دعم LTO في GCC وتمكين GCC
مهيأ للاستخدام مع المكونات الإضافية الداعمة للرابط (GNU ld 2.21 أو الأحدث أو الذهبي).

-فتات-ليتو الأشياء
كائنات Fat LTO هي ملفات كائن تحتوي على كل من اللغة الوسيطة و
رمز التعليمة. هذا يجعلها قابلة للاستخدام لكل من ربط LTO والربط العادي. هذه
الخيار فعال فقط عند التحويل البرمجي باستخدام -فلتو ويتم تجاهله في وقت الارتباط.

- الدهون - ليتو الأجسام يعمل على تحسين وقت الترجمة مقارنةً بـ LTO العادي ، ولكنه يتطلب
سلسلة أدوات كاملة لتكون على دراية بـ LTO. يتطلب رابط مع دعم البرنامج المساعد رابط
للوظائف الأساسية. بالإضافة إلى، nm, ar و رانليب بحاجة لدعم رابط
المكونات الإضافية للسماح ببيئة بناء كاملة الميزات (قادرة على إنشاء ملفات ثابتة
المكتبات ، إلخ). يوفر دول مجلس التعاون الخليجي دول مجلس التعاون الخليجي-ع, دول مجلس التعاون الخليجي - نانومتر, رانليب مجلس التعاون الخليجي مغلفة لتمرير
الخيارات الصحيحة لهذه الأدوات. مع makefiles الخالي من الدهون تحتاج إلى تعديل لاستخدامها
لهم.

الافتراضي هو - الدهون - ليتو الأجسام على الأهداف مع دعم البرنامج المساعد رابط.

-مقارنة-القضاء
بعد تخصيص السجل وتقسيم تعليمات التخصيص بعد التسجيل ، حدد
التعليمات الحسابية التي تحسب أعلام المعالج المشابهة لعملية المقارنة
بناء على هذا الحساب. إذا أمكن ، قم بإزالة عملية المقارنة الصريحة.

ينطبق هذا التمرير فقط على أهداف معينة لا يمكنها تمثيل
عملية المقارنة قبل اكتمال تخصيص التسجيل.

ممكن على المستويات -O, -O2, -O3, -أوس.

سجلات fcprop
بعد تخصيص السجل وتقسيم تعليمات التخصيص بعد التسجيل ، نفذ
تصريح نشر نسخة لمحاولة تقليل تبعيات الجدولة وأحيانًا
القضاء على النسخة.

ممكن على المستويات -O, -O2, -O3, -أوس.

-fprofile- تصحيح
قد تكون الملفات الشخصية التي تم جمعها باستخدام ثنائي مُجهز للبرامج متعددة الخيوط
غير متسق بسبب عدم وجود تحديثات عداد. عند تحديد هذا الخيار ، يستخدم GCC
الاستدلال لتصحيح أو تسوية مثل هذه التناقضات. بشكل افتراضي ، يصدر GCC ملف
رسالة خطأ عند اكتشاف ملف تعريف غير متناسق.

-fprofile- دير =مسار
قم بتعيين الدليل للبحث عن ملفات بيانات ملف التعريف في مسار. هذا الخيار
يؤثر فقط على بيانات الملف الشخصي التي تم إنشاؤها بواسطة -fprofile- توليد, -تغطية -ftest,
-fprofile- أقواس وتستخدم من قبل -fprofile- استخدام و -احتمالات-فرع وما يتصل بها
والخيارات. يمكن استخدام كل من المسارات المطلقة والنسبية. بشكل افتراضي ، يستخدم GCC امتداد الملف
الدليل الحالي باسم مسار، وبالتالي يظهر ملف بيانات الملف الشخصي في نفس الدليل مثل
ملف الكائن.

-fprofile- توليد
-fprofile- تولد =مسار
تمكين الخيارات المستخدمة عادة لتطبيق الأدوات لإنتاج ملف تعريف مفيد
لإعادة التجميع لاحقًا مع التحسين المستند إلى ملاحظات الملف الشخصي. عليك أن تستعمل
-fprofile- توليد سواء عند التجميع أو عند ربط البرنامج الخاص بك.

تم تمكين الخيارات التالية: -fprofile- أقواس, -fprofile- القيم, -fvpt.

If مسار محدد ، دول مجلس التعاون الخليجي تبحث في مسار للعثور على ملفات بيانات ملاحظات الملف الشخصي.
يرى -fprofile- دير.

-fprofile- استخدام
-fprofile- استخدام =مسار
قم بتمكين التحسينات الموجهة للتعليقات والموجهة للملف الشخصي ، والتحسينات التالية التي
مربحة بشكل عام فقط مع توفر ملاحظات الملف الشخصي: -احتمالات-فرع,
-fvpt, حلقات -funroll, حلقات تقشير, -ftracer, -ftree-vectorizeو حلقة ftree-
توزيع الأنماط.

بشكل افتراضي ، يرسل GCC رسالة خطأ إذا لم تتطابق ملفات تعريف الملاحظات مع ملف
مصدر الرمز. يمكن تحويل هذا الخطأ إلى تحذير باستخدام -التغطية-عدم تطابق.
لاحظ أن هذا قد يؤدي إلى رمز محسن بشكل سيئ.

If مسار محدد ، دول مجلس التعاون الخليجي تبحث في مسار للعثور على ملفات بيانات ملاحظات الملف الشخصي.
يرى -fprofile- دير.

-فاوتو الملف الشخصي
-فاوتو- الملف الشخصي =مسار
تمكين التحسينات المستندة إلى العينات والموجهة بالتعليقات والتحسينات التالية
والتي تعتبر مربحة بشكل عام فقط مع توفر ملاحظات الملف الشخصي:
-احتمالات-فرع, -fvpt, حلقات -funroll, حلقات تقشير, -ftracer,
-ftree-vectorize, وظائف الخطوط الدقيقة, -فيبا- CP, -فيبا- cp- استنساخ,
- المشتركة التنبؤية, حلقات-funswitch, -fgcse- بعد إعادة التحميلو
-توزيع-حلقة-توزيع-أنماط.

مسار هو اسم الملف الذي يحتوي على معلومات ملف تعريف AutoFDO. إذا تم حذفه
التخلف عن fbdata.afdo في الدليل الحالي.

يتطلب إنشاء ملف بيانات ملف تعريف AutoFDO تشغيل البرنامج بامتداد الأداء الإقتصادي الأداء
على نظام هدف GNU / Linux مدعوم. لمزيد من المعلومات، راجع
<https://perf.wiki.kernel.org/>.

على سبيل المثال

سجل الأداء - br_inst_retired: near_taken -b -o perf.data \
- your_program

ثم استخدم ملف create_gcov أداة لتحويل بيانات الملف الشخصي الأولية إلى تنسيق يمكن أن يكون
تستخدم من قبل دول مجلس التعاون الخليجي. يجب عليك أيضًا توفير الملف الثنائي غير المقيد لبرنامجك لهذا الغرض
أداة. ارىhttps://github.com/google/autofdo>.

على سبيل المثال

create_gcov --binary = your_program.unstripped --profile = perf.data \
--gcov = profile.afdo

تتحكم الخيارات التالية في سلوك المترجم فيما يتعلق بحساب الفاصلة العائمة.
هذه الخيارات تقايض بين السرعة والصواب. يجب تمكين كل شيء على وجه التحديد.

-متجر طائر
لا تقم بتخزين متغيرات الفاصلة العائمة في السجلات ، وقم بمنع الخيارات الأخرى التي
قد يتغير ما إذا كانت قيمة الفاصلة العائمة مأخوذة من سجل أو من الذاكرة.

يمنع هذا الخيار الدقة الزائدة غير المرغوب فيها على آلات مثل 68000 حيث
السجلات العائمة (68881) تحافظ على دقة أكثر مما يفترض أن تكون "مضاعفة"
امتلاك. وبالمثل بالنسبة لعمارة x86. بالنسبة لمعظم البرامج ، فإن الدقة الزائدة
جيد فقط ، لكن بعض البرامج تعتمد على التعريف الدقيق لـ IEEE floating
نقطة. يستخدم -متجر طائر لمثل هذه البرامج بعد تعديلها لتخزين كل شيء
الحسابات الوسيطة ذات الصلة في المتغيرات.

- الدقة الزائدة =نمط
يتيح هذا الخيار مزيدًا من التحكم في الدقة الزائدة في الآلات التي -
تحتوي سجلات النقاط على دقة أكثر من أنواع IEEE "float" و "double" و
المعالج لا يدعم عمليات التقريب لتلك الأنواع. بشكل افتراضي،
- الدقة الزائدة = سريع ساري المفعول هذا يعني أن العمليات تنفذ في
دقة السجلات وأنه لا يمكن التنبؤ بها عند التقريب إلى الأنواع
المحدد في التعليمات البرمجية المصدر. عند تجميع C ، إذا
- الدقة الزائدة = المعيار يتم تحديد ثم تتبع الدقة الزائدة القواعد
المحدد في ISO C99 ؛ على وجه الخصوص ، يتسبب كل من الممثلين والتخصيصات في أن تكون القيم كذلك
تقريبًا إلى أنواعها الدلالية (بينما -متجر طائر يؤثر فقط على المهام).
يتم تمكين هذا الخيار افتراضيًا لـ C إذا كان خيار توافق صارم مثل
-std = c99 .

- الدقة الزائدة = المعيار لم يتم تطبيقه للغات أخرى غير C ، ولا يحتوي على
تأثير إذا -ممتعة-الرياضيات-التحسينات or -فاست-الرياضيات محدد. على x86 ، فإنه
أيضا ليس له تأثير إذا -mfpmath = sse or -mfpmath = sse + 387 محدد؛ في السابق
الحالة ، تنطبق دلالات IEEE دون دقة زائدة ، وفي الحالة الأخيرة ، يكون التقريب
لا يمكن التنبؤ به.

-فاست-الرياضيات
يضبط الخيارات -fno-Math-Errno, -ممتعة-الرياضيات-التحسينات, - غير محدد - الرياضيات فقط,
-لا تقريب-الرياضيات, -fno-الإشارات- nans و -fcx- محدود المدى.

يؤدي هذا الخيار إلى تعريف ماكرو المعالج المسبق "__FAST_MATH__".

لم يتم تشغيل هذا الخيار من قبل أي -O بجانب الخيار -سريع لأنه يمكن أن يؤدي إلى
مخرجات غير صحيحة للبرامج التي تعتمد على التنفيذ الدقيق لـ IEEE أو ISO
قواعد / مواصفات وظائف الرياضيات. ومع ذلك ، قد ينتج عنه رمز أسرع لـ
البرامج التي لا تتطلب ضمانات هذه المواصفات.

-fno-Math-Errno
لا تقم بتعيين "errno" بعد استدعاء وظائف الرياضيات التي يتم تنفيذها باستخدام واحد
التعليمات ، على سبيل المثال ، "sqrt". برنامج يعتمد على استثناءات IEEE للخطأ الرياضي
قد ترغب المعالجة في استخدام هذه العلامة للسرعة مع الحفاظ على حساب IEEE
التوافق.

لم يتم تشغيل هذا الخيار من قبل أي -O الخيار لأنه يمكن أن يؤدي إلى إخراج غير صحيح
للبرامج التي تعتمد على التنفيذ الدقيق لـ IEEE أو ISO
قواعد / مواصفات وظائف الرياضيات. ومع ذلك ، قد ينتج عنه رمز أسرع لـ
البرامج التي لا تتطلب ضمانات هذه المواصفات.

الافتراضي هو -فماث- يورنو.

في أنظمة داروين ، لم تقم مكتبة الرياضيات بتعيين "errno" أبدًا. لذلك لا يوجد سبب
للمترجم للنظر في إمكانية ذلك ، و -fno-Math-Errno هل
افتراضي.

-ممتعة-الرياضيات-التحسينات
السماح بالتحسينات لحساب الفاصلة العائمة التي (أ) تفترض أن الوسيطات و
النتائج صحيحة و (ب) قد تنتهك معايير IEEE أو ANSI. عند استخدامها في وقت الارتباط ،
قد يتضمن مكتبات أو ملفات بدء التشغيل التي تغير كلمة التحكم الافتراضية FPU أو
تحسينات أخرى مماثلة.

لم يتم تشغيل هذا الخيار من قبل أي -O الخيار لأنه يمكن أن يؤدي إلى إخراج غير صحيح
للبرامج التي تعتمد على التنفيذ الدقيق لـ IEEE أو ISO
قواعد / مواصفات وظائف الرياضيات. ومع ذلك ، قد ينتج عنه رمز أسرع لـ
البرامج التي لا تتطلب ضمانات هذه المواصفات. تمكن
-fno- موقعة- الأصفار, - الرياضيات, -الرياضيات و الرياضيات المتبادلة.

الافتراضي هو -fno- غير آمنة- الرياضيات- التحسينات.

-الرياضيات
السماح بإعادة اقتران المعاملات في سلسلة من عمليات الفاصلة العائمة. هذه
ينتهك معيار لغة ISO C و C ++ من خلال احتمال تغيير نتيجة الحساب.
ملاحظة: إعادة الطلب قد يغير علامة الصفر وكذلك تجاهل NaNs ويمنع أو
إنشاء تدفق أو تجاوز (وبالتالي لا يمكن استخدامه في الكود الذي يعتمد على التقريب
سلوك مثل "(x + 2 ** 52) - 2 ** 52". قد يعيد ترتيب مقارنات الفاصلة العائمة و
وبالتالي لا يجوز استخدامها عندما تكون المقارنات المطلوبة مطلوبة. هذا الخيار يتطلب ذلك
على حد سواء -fno- موقعة- الأصفار و - الرياضيات تكون سارية المفعول. علاوة على ذلك ، فهو لا يصنع
مع الكثير من المعنى -الرياضيات. بالنسبة لـ Fortran ، يتم تمكين الخيار تلقائيًا عندما
على حد سواء -fno- موقعة- الأصفار و - الرياضيات سارية المفعول.

الافتراضي هو - الرياضيات الترابطية.

الرياضيات المتبادلة
السماح باستخدام مقلوب القيمة بدلاً من القسمة على القيمة إذا كان هذا
تمكن من التحسينات. على سبيل المثال ، يمكن استبدال "x / y" بـ "x * (1 / y)" ، وهو
مفيد إذا كان "(1 / y)" خاضعًا للتخلص من التعابير الفرعية الشائعة. لاحظ أن هذا
يفقد الدقة ويزيد من عدد التخبطات التي تعمل على القيمة.

الافتراضي هو - الرياضيات المتبادلة.

- غير محدد - الرياضيات فقط
السماح بالتحسينات لحساب الفاصلة العائمة التي تفترض أن الوسيطات و
النتائج ليست NaNs أو + -Infs.

لم يتم تشغيل هذا الخيار من قبل أي -O الخيار لأنه يمكن أن يؤدي إلى إخراج غير صحيح
للبرامج التي تعتمد على التنفيذ الدقيق لـ IEEE أو ISO
قواعد / مواصفات وظائف الرياضيات. ومع ذلك ، قد ينتج عنه رمز أسرع لـ
البرامج التي لا تتطلب ضمانات هذه المواصفات.

الافتراضي هو -لا-الرياضيات-محدودة فقط.

-fno- موقعة- الأصفار
السماح بالتحسينات لحساب الفاصلة العائمة التي تتجاهل توقيع الصفر.
يحدد IEEE الحسابي سلوك قيم +0.0 و -0.0 المميزة ، والتي بعد ذلك
يحظر تبسيط التعبيرات مثل x + 0.0 أو 0.0 * x (حتى مع
- غير محدد - الرياضيات فقط). يشير هذا الخيار إلى أن علامة النتيجة الصفرية ليست كذلك
كبير.

الافتراضي هو -موقع-الأصفار.

- الرياضيات
تجميع التعليمات البرمجية على افتراض أن عمليات الفاصلة العائمة لا يمكن أن تولد مرئيًا للمستخدم
الفخاخ. تتضمن هذه المصائد القسمة على الصفر ، والفيضان ، والنتيجة غير الدقيقة و
عملية غير صالحة. هذا الخيار يتطلب ذلك -fno-الإشارات- nans تكون سارية المفعول.
قد يسمح تعيين هذا الخيار بتعليمة برمجية أسرع إذا اعتمد المرء على حساب IEEE "بدون توقف" ،
على سبيل المثال.

هذا الخيار لا ينبغي أبدا أن يتم تشغيله من قبل أي -O الخيار لأنه يمكن أن يؤدي إلى
مخرجات غير صحيحة للبرامج التي تعتمد على التنفيذ الدقيق لـ IEEE أو ISO
قواعد / مواصفات وظائف الرياضيات.

الافتراضي هو -ftrapping-Math.

-الرياضيات
قم بتعطيل عمليات التحويل والتحسينات التي تفترض التقريب الافتراضي للفاصلة العائمة
سلوك. هذا هو تقريب إلى الصفر لجميع تحويلات الفاصلة العائمة إلى عدد صحيح ، و
تقريب إلى أقرب لجميع الاقتطاعات الحسابية الأخرى. يجب أن يكون هذا الخيار
محدد للبرامج التي تغير وضع تقريب FP ديناميكيًا ، أو قد يكون كذلك
يتم تنفيذها باستخدام وضع التقريب غير الافتراضي. يقوم هذا الخيار بتعطيل الطي الثابت لـ
تعبيرات الفاصلة العائمة في وقت الترجمة (والتي قد تتأثر بوضع التقريب)
والتحولات الحسابية غير الآمنة في وجود إشارة معتمدة
أوضاع التقريب.

الافتراضي هو -لا تقريب-الرياضيات.

هذا الخيار تجريبي ولا يضمن حاليًا تعطيل جميع GCC
التحسينات التي تتأثر بوضع التقريب. قد توفر الإصدارات المستقبلية من دول مجلس التعاون الخليجي
تحكم أفضل في هذا الإعداد باستخدام براغما "FENV_ACCESS" في C99. هذا سطر الأوامر
سيتم استخدام الخيار لتحديد الحالة الافتراضية لـ "FENV_ACCESS".

-إشارة- nans
قم بتجميع الكود على افتراض أن إشارات IEEE قد تولد مصائد مرئية للمستخدم أثناءها
عمليات الفاصلة العائمة. يؤدي تعيين هذا الخيار إلى تعطيل التحسينات التي قد تتغير
عدد الاستثناءات المرئية مع إشارات NaNs. هذا الخيار يعني
-ftrapping-Math.

يؤدي هذا الخيار إلى تعريف ماكرو المعالج المسبق "__SUPPORT_SNAN__".

الافتراضي هو -fno-الإشارات- nans.

هذا الخيار تجريبي ولا يضمن حاليًا تعطيل جميع GCC
التحسينات التي تؤثر على سلوك الإشارة NaN.

- ثابت واحد - الدقة
تعامل مع ثوابت الفاصلة العائمة كدقة مفردة بدلاً من التحويل الضمني
لهم لمضاعفة الدقة الثوابت.

-fcx- محدود المدى
عند التمكين ، يشير هذا الخيار إلى أن خطوة تقليل النطاق ليست ضرورية عند
أداء تقسيم معقد. أيضًا ، لا يوجد فحص ما إذا كانت نتيجة ملف
الضرب أو القسمة المعقدة هي "NaN + I * NaN" ، في محاولة لإنقاذ
الوضع في هذه الحالة. الافتراضي هو -fno-cx- نطاق محدود، ولكن تم تمكينه بواسطة
-فاست-الرياضيات.

يتحكم هذا الخيار في الإعداد الافتراضي لبرنامج ISO C99 "CX_LIMITED_RANGE".
ومع ذلك ، فإن الخيار ينطبق على جميع اللغات.

قواعد فورتران FCX
يتبع الضرب والقسمة المعقدة قواعد فورتران. يتم تقليل النطاق كما
جزء من القسمة المعقدة ، ولكن لا يوجد فحص ما إذا كانت نتيجة معقدة
الضرب أو القسمة هو "NaN + I * NaN" ، في محاولة لإنقاذ الموقف
في هذه الحالة.

الافتراضي هو قواعد -fno-cx-fortran.

تتحكم الخيارات التالية في التحسينات التي قد تعمل على تحسين الأداء ، ولكنها ليست كذلك
تم تمكينه من قبل أي -O والخيارات. يتضمن هذا القسم الخيارات التجريبية التي قد تنتج
كود معطل.

-احتمالات-فرع
بعد تشغيل برنامج المترجمة مع -fprofile- أقواس، يمكنك تجميعها مرة ثانية
استخدام -احتمالات-فرع، لتحسين عمليات التحسين بناءً على عدد المرات
تم أخذ كل فرع. عندما يتم تجميع البرنامج باستخدام -fprofile- أقواس مخارج ، فإنه يحفظ
يحسب تنفيذ القوس إلى ملف يسمى sourcename.gcda لكل ملف مصدر. ال
المعلومات في ملف البيانات هذا تعتمد بشكل كبير على بنية الملف الذي تم إنشاؤه
لذلك يجب عليك استخدام نفس شفرة المصدر ونفس خيارات التحسين لكليهما
مصنفات.

مع -احتمالات-فرع، دول مجلس التعاون الخليجي يضع أ REG_BR_PROB ملاحظة على كل منها JUMP_INSN و
CALL_INSN. يمكن استخدام هذه لتحسين التحسين. حاليًا ، يتم استخدامها فقط
في مكان واحد: في reorg.c، بدلاً من تخمين المسار الذي من المرجح أن يقوم به الفرع
خذ REG_BR_PROB يتم استخدام القيم لتحديد المسار الذي يتم اتخاذه أكثر
في كثير من الأحيان.

-fprofile- القيم
إذا تم دمجها مع -fprofile- أقواس، فإنه يضيف التعليمات البرمجية بحيث تكون بعض البيانات حول قيم
يتم جمع التعبيرات في البرنامج.

مع -احتمالات-فرع، يقوم بقراءة البيانات التي تم جمعها من قيم التنميط
تعابير للاستخدام في التحسينات.

ممكن مع -fprofile- توليد و -fprofile- استخدام.

-fprofile-reorder-وظائف
تقوم إعادة ترتيب الوظائف على أساس أدوات الملف الشخصي بجمع أول مرة يتم تنفيذها
للدالة وترتيب هذه الوظائف بترتيب تصاعدي.

ممكن مع -fprofile- استخدام.

-fvpt
إذا تم دمجها مع -fprofile- أقواس، هذا الخيار يوجه المترجم لإضافة رمز إلى
جمع معلومات حول قيم التعبيرات.

مع -احتمالات-فرع، يقوم بقراءة البيانات التي تم جمعها ويقوم بالفعل بتنفيذ
التحسينات على أساسها. تشمل التحسينات حاليًا تخصص
عمليات القسمة باستخدام المعرفة حول قيمة المقام.

-frename- تسجيلات
حاول تجنب التبعيات الخاطئة في التعليمات البرمجية المجدولة من خلال الاستفادة من السجلات المتبقية
أكثر بعد تخصيص التسجيل. هذا التحسين يفيد معظم المعالجات التي لديها الكثير
من السجلات. اعتمادًا على تنسيق معلومات التصحيح الذي يعتمده الهدف ،
ومع ذلك ، يمكن أن يجعل التصحيح مستحيلاً ، لأن المتغيرات لم تعد تبقى في "المنزل
تسجيل".

ممكن بشكل افتراضي مع حلقات -funroll و حلقات تقشير.

-fschedule-الانصهار
يقوم بتمرير يعتمد على الهدف عبر تدفق التعليمات لجدولة التعليمات
من نفس النوع معًا لأن الآلة المستهدفة يمكنها تنفيذها بكفاءة أكبر إذا كانت كذلك
متاخمة لبعضها البعض في تدفق التعليمات.

ممكن على المستويات -O2, -O3, -أوس.

-ftracer
إجراء تكرار الذيل لتكبير حجم الكتلة الفائقة. يبسط هذا التحول
تدفق التحكم في الوظيفة مما يسمح بالتحسينات الأخرى للقيام بعمل أفضل.

ممكن مع -fprofile- استخدام.

حلقات -funroll
قم بفك الحلقات التي يمكن تحديد عدد تكراراتها في وقت الترجمة أو بناءً عليها
الدخول إلى الحلقة. حلقات -funroll يدل -frerun-cse-after-loop, -ويب و
-frename- تسجيلات. يقوم أيضًا بتشغيل تقشير الحلقة الكامل (أي الإزالة الكاملة لـ
حلقات مع عدد صغير ثابت من التكرارات). هذا الخيار يجعل التعليمات البرمجية أكبر ، و
قد تجعلها تعمل بشكل أسرع أو لا.

ممكن مع -fprofile- استخدام.

-funroll- جميع الحلقات
قم بفك جميع الحلقات ، حتى إذا كان عدد التكرارات فيها غير مؤكد عندما تكون الحلقة
دخلت. هذا عادة ما يجعل البرامج تعمل بشكل أبطأ. -funroll- جميع الحلقات يعني أن
نفس الخيارات مثل حلقات -funroll.

حلقات تقشير
حلقات التقشير التي يوجد عنها معلومات كافية لا تتدحرج كثيرًا (من
ملاحظات الملف الشخصي). يقوم أيضًا بتشغيل تقشير الحلقة الكامل (أي الإزالة الكاملة لـ
حلقات مع عدد صغير ثابت من التكرارات).

ممكن مع -fprofile- استخدام.

-ثوابت حلقة -fmove
يُمكّن تمرير الحركة غير المتغيرة للحلقة في مُحسِّن حلقة RTL. ممكن على المستوى
-O1

حلقات-funswitch
انقل الفروع بشروط حلقة ثابتة خارج الحلقة ، مع نسخ مكررة من
حلقة على كلا الفرعين (معدلة حسب نتيجة الشرط).

- أقسام الوظائف
أقسام البيانات
ضع كل وظيفة أو عنصر بيانات في القسم الخاص به في ملف الإخراج إذا كان الهدف
يدعم الأقسام التعسفية. اسم الوظيفة أو اسم عنصر البيانات
يحدد اسم القسم في ملف الإخراج.

استخدم هذه الخيارات على الأنظمة حيث يمكن للرابط إجراء تحسينات لتحسينها
موقع المرجع في مساحة التعليمات. تستخدم معظم الأنظمة كائن ELF
تحتوي معالجات SPARC التي تعمل بنظام Solaris 2 على روابط بمثل هذه التحسينات.
قد يكون لدى AIX هذه التحسينات في المستقبل.

استخدم هذه الخيارات فقط عندما تكون هناك فوائد كبيرة من القيام بذلك. عندما انت
حدد هذه الخيارات ، يقوم المجمّع والرابط بإنشاء كائن أكبر وقابل للتنفيذ
الملفات وأيضا أبطأ. لا يمكنك استخدام gprof على جميع الأنظمة إذا حددت هذا
الخيار ، وقد تواجهك مشكلات في تصحيح الأخطاء إذا حددت كلاً من هذا الخيار و
-g.

-متفروع- الهدف- تحميل- الأمثل
قم بإجراء تحسين تحميل سجل الهدف الفرعي قبل خيوط التمهيد / الخاتمة.
يمكن عادةً الكشف عن استخدام سجلات الهدف فقط أثناء إعادة التحميل ، وبالتالي الرفع
الأحمال من الحلقات والقيام بالجدولة بين الكتل يحتاج إلى تحسين منفصل
البشري.

-fbranch-target-load-optimize2
قم بإجراء تحسين تحميل سجل الهدف الفرعي بعد خيوط التمهيد / الخاتمة.

-fbtr- ب ب- خاص
عند إجراء تحسين تحميل سجل هدف الفرع ، لا تعيد استخدام هدف الفرع
يسجل داخل أي كتلة أساسية.

-حامي-فسك
قم بإصدار تعليمات برمجية إضافية للتحقق من وجود فائض في المخزن المؤقت ، مثل هجمات تحطيم المكدس. هذه
يتم عن طريق إضافة متغير guard إلى وظائف ذات كائنات ضعيفة. هذه
يتضمن الوظائف التي تستدعي "التخصيص" ، والوظائف ذات المخازن المؤقتة الأكبر من 8 بايت.
تتم تهيئة الواقيات عند إدخال وظيفة ثم فحصها عند ملف
وظيفة المخارج. إذا فشل فحص الحارس ، فستتم طباعة رسالة خطأ والبرنامج
المخارج.

-حامي-فستيك-الكل
اعجاب -حامي-فسك فيما عدا أن جميع الوظائف محمية.

- حامي - قوي
اعجاب -حامي-فسك ولكنها تتضمن وظائف إضافية يجب حمايتها --- هؤلاء
التي لها تعريفات مصفوفة محلية ، أو لها مراجع لعناوين الإطارات المحلية.

-فستاك-حامي-صريح
اعجاب -حامي-فسك ولكنه يحمي فقط تلك الوظائف التي لها الامتداد
سمة "stack_protect"

-fstdarg- اختيار
تحسين مقدمة وظائف الوسيطة المتغيرة فيما يتعلق باستخدام هؤلاء
الحجج.

ملاحظة: في Ubuntu 14.10 والإصدارات الأحدث ، - حامي - قوي تم تمكينه بواسطة
الافتراضي لـ C ، C ++ ، ObjC ، ObjC ++ ، إذا لم يكن أي من -fno-كومة-حامي, -نوستدليبولا
-تقرير تم العثور على.

-fsection- المراسي
حاول تقليل عدد حسابات العنوان الرمزي باستخدام "المرساة" المشتركة
الرموز لمعالجة الأشياء القريبة. يمكن أن يساعد هذا التحول في تقليل العدد
من إدخالات GOT وحصلت على وصول على بعض الأهداف.

على سبيل المثال ، تنفيذ الوظيفة التالية "foo":

ثابت الباحث أ ، ب ، ج ؛
int foo (void) {return a + b + c؛ }

عادةً ما تحسب عناوين المتغيرات الثلاثة ، ولكن إذا جمعتها باستخدام
-fsection- المراسي، فإنه يصل إلى المتغيرات من نقطة ربط مشتركة بدلاً من ذلك. ال
التأثير مشابه للرمز الكاذب التالي (وهو غير صالح C):

إنت فو (باطل)
{
تسجيل int * xr = & x ؛
إرجاع xr [& a - & x] + xr [& b - & x] + xr [& c - & x] ؛
}

لا تدعم جميع الأهداف هذا الخيار.

- معلمة الاسم=القيمة
في بعض الأماكن ، يستخدم GCC ثوابت مختلفة للتحكم في مقدار التحسين
تم. على سبيل المثال ، لا يتضمن GCC وظائف مضمنة تحتوي على أكثر من معين
عدد التعليمات. يمكنك التحكم في بعض هذه الثوابت في سطر الأوامر
يستخدم ال - معلمة الخيار.

ترتبط أسماء المعلمات المحددة ومعنى القيم بـ
الداخلية للمترجم ، وخاضعة للتغيير دون إشعار في المستقبل
إطلاق.

في كل حالة ، فإن القيمة هو عدد صحيح. الاختيارات المسموح بها ل الاسم هي:

نتيجة فرع متوقعة
عندما يُتوقع أن يتم أخذ الفرع باحتمالية أقل من هذه العتبة
(بالنسبة المئوية) ، إذًا يمكن التنبؤ بها جيدًا. الافتراضي هو 10.

أقصى حواف القفزة المتقاطعة
الحد الأقصى لعدد الحواف الواردة التي يجب مراعاتها في القفز المتقاطع. الخوارزمية
استعمل من قبل -القفز المتقاطع هو O (N ^ 2) في عدد الحواف الواردة لكل كتلة.
زيادة القيم تعني تحسينًا أكثر قوة ، مما يجعل وقت التجميع
زيادة مع تحسن طفيف على الأرجح في حجم الملف القابل للتنفيذ.

min-crossjump-insns
الحد الأدنى لعدد التعليمات التي يجب مطابقتها في نهاية كتلتين
قبل أداء القفز المتقاطع عليهم. يتم تجاهل هذه القيمة في الحالة
حيث يتم مطابقة جميع التعليمات الموجودة في الكتلة التي يتم القفز المتقاطع منها. ال
القيمة الافتراضية هي 5.

max-Grow-Copy-bb-insns
عامل توسيع حجم الكود الأقصى عند نسخ الكتل الأساسية بدلاً من
القفز. التوسع متعلق بتعليمات القفز. النظام الأساسي
8.

max-goto-الازدواجية الداخلية
الحد الأقصى لعدد التعليمات المراد نسخها إلى كتلة تنتقل إلى ملف
الانتقال المحسوب. لتجنب سلوك O (N ^ 2) في عدد من التمريرات ، عوامل دول مجلس التعاون الخليجي
تم حسابها في وقت مبكر من عملية التجميع ، وإلغاء عواملها حتى وقت متأخر
المستطاع. القفزات المحسوبة فقط في نهاية الكتل الأساسية بما لا يزيد عن الحد الأقصى-
إدخال التكرار غير محسوب. القيمة الافتراضية هي 8.

ماكس تأخير فتحة بحث insn
أقصى عدد من التعليمات التي يجب مراعاتها عند البحث عن تعليمات
املأ خانة التأخير. إذا كان أكثر من هذا العدد التعسفي من التعليمات
تم البحث عنها ، فإن توفير الوقت من ملء خانة التأخير ضئيل للغاية ، لذا توقف
يبحث. زيادة القيم تعني تحسينًا أكثر قوة ، مما يجعل
زيادة وقت التجميع مع تحسن طفيف ربما في وقت التنفيذ.

ماكس تأخير فتحة البحث المباشر
عند محاولة ملء فترات التأخير ، يجب مراعاة أقصى عدد من التعليمات
عند البحث عن كتلة بها معلومات تسجيل حية صالحة. زيادة هذا
القيمة المختارة بشكل تعسفي تعني تحسينًا أكثر قوة ، وزيادة
وقت التجميع. يجب إزالة هذه المعلمة عندما تكون شفرة فتحة التأخير
أعيد كتابتها للحفاظ على الرسم البياني للتحكم في التدفق.

ذاكرة max-gcse
الحد الأقصى التقريبي لمقدار الذاكرة الذي يمكن تخصيصه لأداء
التحسين الشامل للقضاء على التعبيرات الفرعية الشائعة. إذا كانت الذاكرة أكثر من
المحدد مطلوب ، لم يتم التحسين.

نسبة إدخال max-gcse
إذا كانت نسبة إدراجات التعبير إلى عمليات الحذف أكبر من هذه القيمة لـ
أي تعبير ، ثم يقوم RTL PRE بإدراج التعبير أو إزالته وبالتالي يترك
عمليات حسابية زائدة عن الحاجة جزئيًا في مسار التعليمات. النظام الأساسي
20.

الحد الأقصى لطول القائمة المعلقة
يسمح العدد الأقصى لجدولة التبعيات المعلقة قبل مسح ملف
الوضع الحالي والبدء من جديد. يمكن وظائف كبيرة مع عدد قليل من الفروع أو المكالمات
إنشاء قوائم كبيرة بشكل مفرط تستهلك الذاكرة والموارد دون داع.

max-modulo-backtrack- محاولات
الحد الأقصى لعدد محاولات التراجع التي يجب أن يقوم بها المجدول عند الوضع
جدولة حلقة. يمكن أن تزيد القيم الأكبر وقت الترجمة بشكل كبير.

max-inline-insns- واحد
تتحكم العديد من المعلمات في بطانة الشجرة المستخدمة في دول مجلس التعاون الخليجي. هذا الرقم يحدد ال
الحد الأقصى لعدد التعليمات (المحسوبة في التمثيل الداخلي لدول مجلس التعاون الخليجي) في أ
وظيفة واحدة يعتبرها بطانة الشجرة للتضمين. هذا يؤثر فقط
تم الإعلان عن الدالات المضمنة والأساليب المطبقة في إعلان الفئة (C ++).
القيمة الافتراضية هي 400.

max-inline-insns- السيارات
عند استخدام وظائف الخطوط الدقيقة (متضمن في -O3) ، والكثير من الوظائف التي من شأنها
خلاف ذلك لا يتم النظر في تضمينها من قبل المترجم. إلى
هذه الوظائف ، حد مختلف (أكثر تقييدًا) مقارنة بالوظائف
يمكن تطبيق مضمن المعلن. القيمة الافتراضية هي 40.

سرعة مضمنة دقيقة
عندما يتجاوز تحسين الأداء المقدر للمتصل + وقت تشغيل المستدعى هذا
عتبة (في سابقة) ، يمكن أن تكون الوظيفة مضمنة بغض النظر عن الحد
- معلمة max-inline-insns- واحد و - معلمة max-inline-insns- السيارات.

الوظائف الكبيرة
الحد الذي يحدد وظائف كبيرة حقًا. للوظائف الأكبر من هذا الحد
بعد التضمين ، يتم تقييد التضمين بواسطة - معلمة وظيفة كبيرة النمو. هذا
المعلمة مفيدة في المقام الأول لتجنب وقت التجميع الشديد الناتج عن عدم
الخوارزميات الخطية المستخدمة من قبل النهاية الخلفية. القيمة الافتراضية هي 2700.

وظيفة كبيرة النمو
يحدد أقصى نمو للوظيفة الكبيرة الناتجة عن التضمين في النسب المئوية. ال
القيمة الافتراضية هي 100 والتي تحد من نمو الدالة الكبير إلى 2.0 مرة من الأصل
حجم.

وحدات كبيرة
الحد الذي يحدد وحدة الترجمة الكبيرة. النمو الناجم عن تطعيم الوحدات
أكبر من هذا الحد مقيد بـ - معلمة نمو وحدة مضمنة. للوحدات الصغيرة
قد يكون هذا ضيقًا جدًا. على سبيل المثال ، ضع في اعتبارك وحدة تتكون من الوظيفة أ
هذا مضمن و B الذي يستدعي A ثلاث مرات فقط. إذا كانت B صغيرة بالنسبة إلى A ،
نمو الوحدة هو 300 \٪ ومع ذلك فإن هذا التضمين عاقل جدا. لكبير جدا
تتكون من وظائف صغيرة غير مبطنة ، ومع ذلك ، فإن النمو الكلي للوحدة
الحد مطلوب لتجنب الانفجار الأسي لحجم الكود. وهكذا لأصغر
وحدة ، يتم زيادة الحجم إلى - معلمة وحدات كبيرة قبل التقديم - معلمة
نمو وحدة مضمنة. الافتراضي هو 10000.

نمو وحدة مضمنة
يحدد أقصى نمو إجمالي لوحدة الترجمة الناتجة عن التضمين. ال
القيمة الافتراضية هي 20 مما يحد من نمو الوحدة إلى 1.2 مرة من الحجم الأصلي. البرد
الوظائف (سواء تم تمييزها بأنها باردة عبر سمة أو من خلال ملاحظات الملف الشخصي) ليست كذلك
تحتسب في حجم الوحدة.

ipcp- وحدة النمو
يحدد أقصى نمو إجمالي لوحدة الترجمة الناتجة عن interprocedural
التكاثر المستمر. القيمة الافتراضية هي 10 مما يحد من نمو الوحدة إلى 1.1
أضعاف الحجم الأصلي.

إطار مكدس كبير
الحد الذي يحدد إطارات مكدس كبيرة. بينما تحاول تضمين الخوارزمية
لعدم تجاوز هذا الحد كثيرا. القيمة الافتراضية هي 256 بايت.

نمو إطار مكدس كبير
يحدد أقصى نمو لإطارات المكدس الكبيرة الناتجة عن التضمين في النسب المئوية.
القيمة الافتراضية هي 1000 مما يحد من نمو إطار المكدس الكبير إلى 11 ضعفًا
الحجم الأصلي.

max-inline-insns- العودية
max-inline-insns- متكرر-تلقائي
يحدد الحد الأقصى لعدد التعليمات نسخة خارج الخط من self-
يمكن أن تنمو الدالة المضمنة العودية إلى عن طريق إجراء التبطين العودي.

- معلمة max-inline-insns- العودية ينطبق على الوظائف المعلنة مضمنة. ل
الدوال التي لم يتم التصريح عنها مضمنة ، يحدث التكرار المتكرر فقط عندما
وظائف الخطوط الدقيقة (متضمن في -O3) ممكّن ؛ - معلمة ماكس مضمنة insNS-
العودية التلقائي ينطبق بدلا من ذلك. القيمة الافتراضية هي 450.

أقصى عمق متكرر
ماكس مضمنة العودية العمق التلقائي
يحدد الحد الأقصى لعمق العودية المستخدم للتضمين العودي.

- معلمة أقصى عمق متكرر ينطبق على الوظائف المعلنة مضمنة. ل
الدوال التي لم يتم التصريح عنها مضمنة ، يحدث التكرار المتكرر فقط عندما
وظائف الخطوط الدقيقة (متضمن في -O3) ممكّن ؛ - معلمة ماكس-مضمنة- العودية-
العمق التلقائي ينطبق بدلا من ذلك. القيمة الافتراضية هي 8.

مين-مضمنة-العودية-الاحتمال
يعتبر التضمين العودي مربحًا فقط للوظيفة التي لها تكرار عميق في
متوسط ​​ويمكن أن يضر لوظيفة ذات عمق عودي قليل عن طريق زيادة
حجم مقدمة أو مدى تعقيد جسم الوظيفة لمحسّنات أخرى.

عندما تتوفر ملاحظات الملف الشخصي (انظر -fprofile- توليد) العودية الفعلية
يمكن تخمين العمق من خلال احتمال تكرار الوظيفة عبر مكالمة معينة
التعبير. تحدد هذه المعلمة التضمين فقط لتعبيرات الاستدعاء التي
يتجاوز الاحتمال الحد المعطى (بالنسب المئوية). القيمة الافتراضية هي 10.

التطعيم المبكر
حدد النمو الذي يمكن أن يحققه البطانة المبكرة. في الواقع يزيد من المبلغ
للتضمين في الكود مع وجود عقوبة تجريدية كبيرة. القيمة الافتراضية هي 14.

ماكس في وقت مبكر inliner التكرارات
حد التكرارات للخط الداخلي المبكر. هذا يحد بشكل أساسي عدد
استدعاءات غير مباشرة متداخلة يمكن للخط الداخلي المبكر حلها. لا تزال سلاسل أعمق
تم التعامل معها عن طريق التطعيم المتأخر.

كومدات-تقاسم-احتمال
الاحتمال (بالنسبة المئوية) أن دالة C ++ المضمنة مع رؤية comdat هي
مشتركة عبر وحدات تجميع متعددة. القيمة الافتراضية هي 20.

الملف الشخصي- func- معرف داخلي
معلمة للتحكم في استخدام المعرف الداخلي للوظيفة في قاعدة بيانات ملف التعريف
ابحث عن. إذا كانت القيمة 0 ، يستخدم المترجم معرفًا يعتمد على الوظيفة
اسم المجمع واسم الملف ، مما يجعل بيانات الملف الشخصي القديمة أكثر تسامحًا مع المصدر
التغييرات مثل إعادة ترتيب الوظيفة وما إلى ذلك القيمة الافتراضية هي 0.

min-vect-loop-ملزمة
الحد الأدنى لعدد التكرارات التي لا يتم توجيه الحلقات في ظلها
-ftree-vectorize يستخدم. عدد التكرارات بعد التوجيه يحتاج إلى
تكون أكبر من القيمة المحددة بواسطة هذا الخيار للسماح بالاتجاه. ال
القيمة الافتراضية هي 0.

نسبة التكلفة والمسافة
عامل القياس في حساب المسافة القصوى يمكن تحريك التعبير بواسطتها
تحسينات GCSE. هذا مدعوم حاليًا فقط في ممر رفع الكود.
كلما كانت النسبة أكبر ، كلما كان رفع الشفرة أكثر عدوانية بسهولة
التعبيرات ، أي التعبيرات التي تكلف أقل من gcse- غير مقيد-
كلف. يؤدي تحديد 0 إلى تعطيل رفع التعبيرات البسيطة. النظام الأساسي
10.

gcse-unrestricted-cost
التكلفة ، مُقاسة تقريبًا كتكلفة تعليمات آلة نموذجية واحدة ، عند
التي تحسينات GCSE لا تقيد المسافة التي يمكن أن يقطعها التعبير.
هذا مدعوم حاليًا فقط في ممر رفع الكود. كلما قلت التكلفة ،
الأكثر عدوانية هو رفع التعليمات البرمجية. تحديد 0 يسمح لجميع التعبيرات بـ
السفر مسافات غير مقيدة. القيمة الافتراضية هي 3.

أقصى عمق للرافعة
عمق البحث في شجرة المسيطر عن التعبيرات التي يجب رفعها. هذا مستخدم
لتجنب السلوك التربيعي في خوارزمية الرفع. قيمة 0 لا تحد
في البحث ، ولكن قد يبطئ تجميع وظائف ضخمة. القيمة الافتراضية
هو 30.

مقارنات max-tail-merge
أقصى قدر من bbs مماثلة لمقارنة bb مع. يستخدم هذا لتجنب
السلوك التربيعي في دمج ذيل الشجرة. القيمة الافتراضية هي 10.

ماكس الذيل دمج التكرارات
الحد الأقصى لمقدار تكرارات التمرير فوق الوظيفة. هذا معتاد على
الحد من وقت التجميع في دمج ذيل الشجرة. القيمة الافتراضية هي 2.

max-unrolled-insns
الحد الأقصى من التعليمات التي قد يلزم فصلها عن حلقة. إذا كان هناك حلقة
غير مرتبط ، تحدد هذه المعلمة أيضًا عدد مرات رمز الحلقة
غير مقيد.

max-average-unrolled-insns. الحد الأقصى لمتوسط ​​الإدخال
أقصى عدد من التعليمات منحازة باحتمالات تنفيذها
قد تضطر الحلقة إلى أن تكون غير منضبطة. إذا كانت حلقة غير منتهية ، فإن هذا المعامل أيضًا
يحدد عدد المرات التي يتم فيها إلغاء تسجيل رمز الحلقة.

ماكس-فتح مرات
الحد الأقصى لعدد عمليات فتح حلقة واحدة.

ماكس مقشر
الحد الأقصى من التعليمات التي قد يلزم تقشير الحلقة. إذا كان هناك حلقة
مقشر ، تحدد هذه المعلمة أيضًا عدد مرات تقشير رمز الحلقة.

مرات التقشير القصوى
الحد الأقصى لعدد التقشير في حلقة واحدة.

فروع ماكس قشر
أقصى عدد من الفروع على المسار الساخن خلال تسلسل التقشير.

ماكس مقشر تماما
الحد الأقصى لعدد الدعامات لحلقة مقشرة تمامًا.

مرات التقشير القصوى
الحد الأقصى لعدد التكرارات للحلقة لتكون مناسبة للتقشير الكامل.

max-full-peel-loop-nest-عمق
أقصى عمق لعش حلقي مناسب للتقشير الكامل.

max-unswitch-insns
الحد الأقصى لعدد إدخالات الحلقة غير المحولة.

ماكس أون سويتش المستوى
الحد الأقصى لعدد الفروع غير المحولة في حلقة واحدة.

ليم باهظة الثمن
التكلفة الدنيا لتعبير باهظ الثمن في حركة الحلقة الثابتة.

رابعا - مراعاة - جميع المرشحين ملزمة
ملزمة بعدد المرشحين لمتغيرات الاستقراء ، والتي تحتها جميع المرشحين
تعتبر لكل استخدام في تحسينات متغيرة الاستقراء. اذا كان هناك
مرشحين أكثر من هذا ، فقط المرشحون الأكثر صلة هم من يجب تجنبهم
تعقيد الوقت التربيعي.

رابعا - ماكس - الاستخدامات المدروسة
تتخلى التحسينات المتغيرة الاستقرائية عن الحلقات التي تحتوي على مزيد من الاستقراء
استخدامات متغيرة.

رابعًا - دائمًا - خوخ - مرتبط بالشموع
إذا كان عدد المرشحين في المجموعة أقل من هذه القيمة ، فحاول دائمًا ذلك
قم بإزالة ivs غير الضرورية من المجموعة عند إضافة واحدة جديدة.

scev-max-expr-size
ملزم بحجم التعبيرات المستخدمة في محلل التطورات العددية. كبير
التعبيرات تبطئ المحلل.

تعقيد scev-max-expr
مقيد بتعقيد التعبيرات في محلل التطور القياسي.
التعبيرات المعقدة تبطئ المحلل.

أوميغا ماكس فارز
أقصى عدد من المتغيرات في نظام قيود أوميغا. القيمة الافتراضية
هو 128.

أوميغا ماكس geqs
العدد الأقصى من التفاوتات في نظام قيود أوميغا. الافتراضي
القيمة 256.

أوميغا ماكس مكافئ
أقصى عدد من المساواة في نظام قيود أوميغا. القيمة الافتراضية
هو 128.

أوميغا ماكس وايلد بطاقات
الحد الأقصى لعدد متغيرات أحرف البدل التي يمكن لبرنامج أوميغا إدراجها.
القيمة الافتراضية هي 18.

أوميغا حجم الجدول
حجم جدول التجزئة في أداة حل أوميغا. القيمة الافتراضية هي 550.

مفاتيح أوميغا ماكس
العدد الأقصى للمفاتيح المستخدمة بواسطة أداة حل أوميغا. القيمة الافتراضية هي 500.

أوميغا القضاء على القيود الزائدة عن الحاجة
عند الضبط على 1 ، استخدم طرقًا باهظة الثمن لإزالة جميع القيود الزائدة عن الحاجة. ال
القيمة الافتراضية هي 0.

vect-max-version-for-alignment-check. فحص المحاذاة
الحد الأقصى لعدد فحوصات وقت التشغيل التي يمكن إجراؤها عند إجراء التكرار
إصدار للمحاذاة في vectorizer.

اختبارات vect-max-version-for-alias-check
الحد الأقصى لعدد فحوصات وقت التشغيل التي يمكن إجراؤها عند إجراء التكرار
تعيين الإصدار للاسم المستعار في Vectorizer.

vect-max-peeling-for-alignment
العدد الأقصى من التقشير الحلقي لتحسين محاذاة الوصول لـ vectorizer. قيمة
-1 يعني "بلا حدود".

الحد الأقصى لتكرار المسار
الحد الأقصى لعدد التكرارات لحلقة خوارزمية القوة الغاشمة للتحليل
من عدد مرات تكرار الحلقة التي تحاول تقييمها.

hot-bb-count-ws-permille
يعتبر تعداد ملف تعريف الكتلة الأساسي ساخنًا إذا كان يساهم في المعطى
النفاذية (أي 0 ... 1000) للتنفيذ الكامل.

حار-ب-تردد-جزء
حدد جزءًا من تكرار كتلة الإدخال لعمليات تنفيذ الكتلة الأساسية في
الوظيفة التي تعطى الكتلة الأساسية يجب أن تعتبر ساخنة.

التكرارات القصوى المتوقعة
الحد الأقصى لعدد تكرارات الحلقة التي نتوقعها بشكل ثابت. هذا مفيد في
الحالات التي تحتوي فيها الوظيفة على حلقة مفردة ذات حدود معروفة وحلقة أخرى
مع حدود غير معروفة. يتم توقع العدد المعروف من التكرارات بشكل صحيح ، بينما
متوسط ​​عدد التكرارات غير المعروف إلى ما يقرب من 10. وهذا يعني أن الحلقة
بدون حدود يبدو باردًا بشكل مصطنع بالنسبة إلى الآخر.

احتمالية متوقعة مضمنة
التحكم في احتمالية امتلاك التعبير للقيمة المحددة. هذه
تأخذ المعلمة نسبة مئوية (أي 0 ... 100) كمدخلات. الاحتمال الافتراضي
90 تم الحصول عليها تجريبيا.

عتبة المحاذاة
حدد جزءًا من الحد الأقصى لتكرار عمليات الإعدام لكتلة أساسية في ملف
وظيفة لمحاذاة الكتلة الأساسية.

محاذاة حلقة التكرارات
حلقة من المتوقع أن تتكرر على الأقل تتم محاذاة العدد المحدد من التكرارات.

تغطية التتبع الديناميكي
التتبع الديناميكي للتغطية-التغذية الراجعة
تُستخدم هذه القيمة للحد من تكوين الكتلة الفائقة بمجرد النسبة المئوية المعطاة لـ
يتم تغطية التعليمات المنفذة. هذا يحد من توسيع حجم الكود غير الضروري.

أفضل التتبع الديناميكي للتغطية-التغذية الراجعة يتم استخدام المعلمة فقط عند ملاحظات الملف الشخصي
متاح. الملفات الشخصية الحقيقية (على عكس تلك المقدرة بشكل ثابت) هي
أقل توازناً مما يسمح للعتبة بأن تكون ذات قيمة أكبر.

تتبع- ماكس- كود- النمو
أوقف ازدواجية الذيل بمجرد أن يصل نمو الكود إلى نسبة معينة. هذا ال
حد مصطنع إلى حد ما ، حيث يتم حذف معظم التكرارات لاحقًا في العرض
القفز ، لذلك قد يتم تعيينه على قيم أعلى بكثير من نمو الكود المطلوب.

نسبة تتبع دقيقة فرع
أوقف النمو العكسي عندما يكون الاحتمال العكسي لأفضل حافة أقل من ذلك
عتبة (بالنسبة المئوية).

نسبة تتبع دقيقة فرع
تتبع دقيقة دقيقة نسبة الفرع ردود الفعل
أوقف النمو إلى الأمام إذا كان احتمال أفضل ميزة أقل من هذه العتبة.

مشابه ل تغطية التتبع الديناميكي توجد قيمتان ، واحدة للتجميع
لتعليقات الملف الشخصي وواحد للتجميع بدون. قيمة الترجمة
مع ملاحظات الملف الشخصي يجب أن تكون أكثر تحفظًا (أعلى) من أجل القيام بذلك
التتبع فعال.

أقصى طول مسار cse
أقصى عدد من الكتل الأساسية على المسار الذي يعتبره محرك البحث المخصص. الافتراضي هو 10.

max-cse-insns
أقصى عدد من التعليمات التي يعالجها محرك البحث المخصص قبل التنظيف. الافتراضي هو
1000.

ggc- min- توسيع
يستخدم GCC جامع البيانات المهملة لإدارة تخصيص الذاكرة الخاصة به. هذه المعلمة
يحدد الحد الأدنى للنسبة المئوية التي يجب أن تكون بها كومة أداة تجميع البيانات المهملة
يسمح بالتوسع بين المجموعات. قد يؤدي ضبط هذا إلى تحسين سرعة الترجمة ؛
ليس له أي تأثير على إنشاء الكود.

الافتراضي هو 30٪ + 70٪ * (RAM / 1 جيجا بايت) بحد أعلى 100٪ عندما تكون ذاكرة الوصول العشوائي> = ​​1 جيجا بايت.
إذا كان "getrlimit" متاحًا ، فإن فكرة "RAM" هي أصغر ذاكرة RAM فعلية و
"RLIMIT_DATA" أو "RLIMIT_AS". إذا كان GCC غير قادر على حساب ذاكرة الوصول العشوائي على معين
النظام الأساسي ، يتم استخدام الحد الأدنى بنسبة 30٪. تعيين هذه المعلمة و ggc- مين-
حجم كومة إلى الصفر يؤدي إلى حدوث مجموعة كاملة في كل فرصة. هذا هو
بطيء للغاية ، ولكن يمكن أن يكون مفيدًا في التصحيح.

ggc-min-heapsize
الحد الأدنى لحجم كومة أداة تجميع القمامة قبل أن تبدأ في عناء التجميع
قمامة. تحدث المجموعة الأولى بعد توسيع الكومة بمقدار ggc- min- توسيع%
وراء ggc-min-heapsize. مرة أخرى ، قد يؤدي ضبط هذا إلى تحسين سرعة الترجمة و
ليس له تأثير على إنشاء الكود.

الافتراضي هو أصغر RAM / 8 ، RLIMIT_RSS ، أو الحد الذي يحاول التأكد
لا يتم تجاوز RLIMIT_DATA أو RLIMIT_AS ، ولكن بحد أدنى يبلغ 4096
(أربعة ميغا بايت) وحد أعلى 131072 (128 ميغا بايت). إذا كان مجلس التعاون الخليجي غير قادر
لحساب ذاكرة الوصول العشوائي على منصة معينة ، يتم استخدام الحد الأدنى. تحديد هذا
المعلمة كبيرة جدًا بشكل فعال لتعطيل جمع القمامة. تحديد هذا
المعلمة و ggc- min- توسيع إلى الصفر يؤدي إلى حدوث مجموعة كاملة في كل مرة
الفرصة.

max-reoad-search-insns
يجب أن ينظر الحد الأقصى لعدد إعادة تحميل التعليمات إلى الخلف للحصول على ما يعادله
تسجيل. زيادة القيم تعني تحسينًا أكثر قوة ، مما يجعل
زيادة وقت الترجمة مع أداء أفضل قليلاً على الأرجح. الافتراضي
القيمة 100.

مواقع ذاكرة- max-cselib
يجب أن يأخذ الحد الأقصى لعدد مواقع الذاكرة cselib في الاعتبار.
زيادة القيم تعني تحسينًا أكثر قوة ، مما يجعل وقت التجميع
زيادة مع ربما أداء أفضل قليلا. القيمة الافتراضية هي 500.

إعادة ترتيب الكتل مكررة
إعادة ترتيب الكتل ردود الفعل المكررة
مستخدم بواسطة التمريرة الأساسية لإعادة ترتيب الكتلة لتقرير ما إذا كان سيتم استخدام غير مشروط
فرع أو تكرار الرمز في وجهته. يتم تكرار الرمز عندما يكون
الحجم المقدر أصغر من هذه القيمة مضروبًا في الحجم المقدر لـ
قفزة غير مشروطة في النقاط الساخنة في البرنامج.

أفضل إعادة ترتيب ردود الفعل كتلة مكررة يتم استخدام المعلمة فقط عند ملاحظات الملف الشخصي
متاح. قد يتم تعيينه على قيم أعلى من إعادة ترتيب كتلة مكررة منذ
المعلومات حول النقاط الساخنة أكثر دقة.

ماكس جدولة ادسنسس
يجب أن يتم إصدار الحد الأقصى من التعليمات الجاهزة لإصدار المجدول
ضع في اعتبارك في أي وقت خلال تمريرة الجدولة الأولى. زيادة القيم
يعني المزيد من عمليات البحث الشاملة ، مما يزيد من وقت التجميع مع احتمال
فائدة قليلة. القيمة الافتراضية هي 100.

ماكس جدولة منطقة الكتل
الحد الأقصى لعدد الكتل في المنطقة التي يجب أخذها في الاعتبار للكتل المتداخل
الجدولة. القيمة الافتراضية هي 10.

ماكس-خط الأنابيب-المنطقة-كتل
الحد الأقصى لعدد الكتل في المنطقة التي يجب مراعاتها لتخطيط الأنابيب في
جدولة انتقائية. القيمة الافتراضية هي 15.

ماكس جدولة المنطقة الداخلية
الحد الأقصى لعدد الإدخالات في المنطقة التي يجب مراعاتها للتداخل
الجدولة. القيمة الافتراضية هي 100.

ماكس-خطوط الأنابيب-insns
الحد الأقصى لعدد الأجزاء الداخلية في المنطقة التي يجب مراعاتها في خطوط الأنابيب في
جدولة انتقائية. القيمة الافتراضية هي 200.

دقيقة المواصفات- prob
الحد الأدنى لاحتمال (بالنسب المئوية) للوصول إلى كتلة مصدر للكتلة الداخلية
جدولة المضاربة. القيمة الافتراضية هي 40.

ماكس جدولة توسيع مناطق التكرار
أقصى عدد من التكرارات من خلال CFG لتوسيع المناطق. قيمة 0 (
افتراضي) تعطيل ملحقات المنطقة.

max-Sched-insn- تعارض-تأخير
الحد الأقصى لتأخير التعارض لـ insn يجب أن يؤخذ في الاعتبار للحركة التخمينية.
القيمة الافتراضية هي 3.

جدولة المواصفات- مشكلة- قطع
الحد الأدنى من احتمال نجاح المضاربة (بالنسب المئوية) ، بحيث تكون المضاربة
يتم جدولة insns. القيمة الافتراضية هي 40.

جدولة المواصفات-الحالة-حافة- مشكلة- قطع
الحد الأدنى من الاحتمال الذي يجب أن تتوفر به الحافة حتى يتمكن المجدول من حفظ حالته
عبرها. القيمة الافتراضية هي 10.

جدولة-mem-true-dep-cost
الحد الأدنى للمسافة (في دورات وحدة المعالجة المركزية) بين المتجر والحمل الذي يستهدف نفس الذاكرة
المواقع. القيمة الافتراضية هي 1.

selsched-max-lookahead
الحجم الأقصى لنافذة lookahead للجدولة الانتقائية. إنه عمق
من البحث عن التعليمات المتاحة. القيمة الافتراضية هي 50.

selsched-max-Sched-times
الحد الأقصى لعدد مرات جدولة التعليمات أثناء التحديد
الجدولة. هذا هو الحد الأقصى لعدد التكرارات التي يتم من خلالها
قد تكون التعليمات مخططة بالأنابيب. القيمة الافتراضية هي 2.

selsched-max-insns-to-rename
أقصى عدد من أفضل الإرشادات في القائمة الجاهزة التي يتم أخذها في الاعتبار
إعادة التسمية في المجدول الانتقائي. القيمة الافتراضية هي 2.

sms-min-sc
الحد الأدنى لقيمة عدد المرحلة التي يولدها برنامج جدولة نمط التأرجح. ال
القيمة الافتراضية هي 2.

max-last-value-rtl
الحجم الأقصى المُقاس بعدد RTLs التي يمكن تسجيلها في تعبير
في موحد لسجل زائف كآخر قيمة معروفة لهذا السجل. ال
الافتراضي هو 10000.

ماكس-الجمع بين insns
أقصى عدد من التعليمات التي يحاول المجمع من اليمين إلى اليسار أن يجمعها. الافتراضي
القيمة 2 في -عوج و 4 خلاف ذلك.

عدد صحيح حصة حد
يمكن أن تستخدم ثوابت الأعداد الصحيحة الصغيرة بنية بيانات مشتركة ، مما يقلل من المترجم
استخدام الذاكرة وزيادة سرعتها. هذا يحدد الحد الأقصى لقيمة ملف
ثابت عدد صحيح. القيمة الافتراضية هي 256.

ssp- حجم المخزن المؤقت
الحد الأدنى لحجم المخازن المؤقتة (أي المصفوفات) التي تتلقى الحماية من تحطيم المكدس
متى -حماية التكديس .

هذا الإعداد الافتراضي قبل Ubuntu 10.10 كان "8". حاليا هو "4" ، لزيادة
عدد الوظائف التي يحميها واقي المكدس.

الحجم الأدنى لتقاسم المكدس
الحد الأدنى لحجم المتغيرات المشاركة في مشاركة فتحة المكدس عندما لا تكون كذلك
التحسين. القيمة الافتراضية هي 32.

ماكس القفز موضوع الازدواجية stmts
الحد الأقصى من العبارات المسموح بها في الكتلة التي تحتاج إلى تكرار عندما
خيوط يقفز.

max-Fields للحقول الحساسة
الحد الأقصى لعدد الحقول في هيكل تمت معالجته بطريقة حساسة للمجال أثناء
تحليل المؤشر. الافتراضي هو صفر من أجل -O0 و -O1و 100 من أجل -أوس, -O2و
-O3.

الجلب المسبق الكمون
تقدير متوسط ​​عدد التعليمات التي يتم تنفيذها قبل الجلب المسبق
التشطيبات. المسافة المحددة مسبقًا متناسبة مع هذا الثابت.
قد تؤدي زيادة هذا العدد أيضًا إلى تقليل الجلب المسبق للتدفقات (انظر
عمليات تمهيدية متزامنة).

عمليات تمهيدية متزامنة
أقصى عدد من عمليات الإعداد المسبق التي يمكن تشغيلها في نفس الوقت.

l1 حجم خط ذاكرة التخزين المؤقت
حجم سطر ذاكرة التخزين المؤقت في ذاكرة التخزين المؤقت L1 بالبايت.

l1-حجم ذاكرة التخزين المؤقت
حجم ذاكرة التخزين المؤقت L1 بالكيلو بايت.

l2-حجم ذاكرة التخزين المؤقت
حجم ذاكرة التخزين المؤقت L2 بالكيلو بايت.

min-insn-to-pre -etch-ratio
الحد الأدنى للنسبة بين عدد التعليمات وعدد عمليات الإعداد المسبق
لتمكين الجلب المسبق في حلقة.

نسبة الجلب المسبق دقيقة إلى الذاكرة
الحد الأدنى للنسبة بين عدد التعليمات وعدد الذاكرة
مراجع لتمكين الجلب المسبق في حلقة.

استخدام الأنواع المتعارف عليها
ما إذا كان يجب على المترجم استخدام نظام النوع "المتعارف عليه". افتراضيا ، هذا
يجب أن تكون دائمًا 1 ، والتي تستخدم آلية داخلية أكثر كفاءة للمقارنة
الأنواع في C ++ و Objective-C ++. ومع ذلك ، إذا كانت الأخطاء في نظام النوع المتعارف عليه هي
تسبب في فشل الترجمة ، اضبط هذه القيمة على 0 لتعطيل الأنواع الأساسية.

تحويل التحويل الأقصى نسبة الفرع
تحويل تهيئة التبديل يرفض إنشاء مصفوفات أكبر من
تحويل التحويل الأقصى نسبة الفرع أضعاف عدد الفروع في التبديل.

الحد الأقصى للطول الجزئي المضاد
الحد الأقصى لطول مجموعة antic الجزئية المحسوبة أثناء الشجرة الجزئية
تحسين القضاء على التكرار (-ftree- قبل) عند التحسين في -O3 و ما فوق.
بالنسبة لبعض أنواع الكود المصدري ، يتم حذف التكرار الجزئي المحسن
يمكن أن يهرب التحسين ، مستهلكًا كل الذاكرة المتوفرة على المضيف
آلة. تضع هذه المعلمة حدًا لطول المجموعات المحسوبة ،
مما يمنع السلوك الجامح. تحديد قيمة 0 لهذه المعلمة
يسمح بمجموعة غير محدودة من الطول.

sccvn-max-scc-size
الحجم الأقصى لمكون متصل بقوة (SCC) أثناء معالجة SCCVN. لو
تم الوصول إلى هذا الحد ، ولم تتم معالجة SCCVN للوظيفة بأكملها و
يتم تعطيل التحسينات بناءً على ذلك. الحد الأقصى الافتراضي لحجم SCC هو
10000.

استعلامات sccvn-max-alias-per-access
أقصى عدد من استعلامات Alias-oracle التي نجريها عند البحث عن التكرار
للأحمال والمخازن. إذا تم الوصول إلى هذا الحد ، يتم إلغاء البحث ويتم تحميل أو
لا يعتبر المتجر زائدا عن الحاجة. عدد الاستعلامات خوارزميًا
يقتصر على عدد المخازن على جميع المسارات من التحميل إلى إدخال الوظيفة.
الحد الأقصى الافتراضي لعدد الاستعلامات هو 1000.

إيرا ماكس حلقات الأسطوانات
يستخدم IRA تخصيص السجل الإقليمي افتراضيًا. إذا كانت الوظيفة تحتوي على المزيد
حلقات من الرقم المعطى بواسطة هذه المعلمة ، فقط على الأكثر عدد معين من
تشكل الحلقات الأكثر تنفيذًا مناطق لتخصيص السجل الإقليمي.
القيمة الافتراضية للمعلمة هي 100.

حجم طاولة الصراع
على الرغم من أن IRA يستخدم خوارزمية معقدة لضغط جدول التعارض ، فإن ملف
الجدول لا يزال يتطلب كميات زائدة من الذاكرة لوظائف ضخمة. إذا كان
يمكن أن يكون جدول التعارض لوظيفة أكبر من الحجم بالميغابايت المعطى بواسطة هذا
المعلمة ، يستخدم مخصص السجل بدلاً من ذلك أسرع وأبسط وأقل-
خوارزمية الجودة التي لا تتطلب بناء جدول تعارض السجل الزائف.
القيمة الافتراضية للمعلمة هي 2000.

إيرا حلقة محجوزة
يمكن استخدام IRA لتقييم ضغط التسجيل الأكثر دقة في الحلقات لاتخاذ القرارات
لتحريك ثوابت الحلقة (انظر -O3). عدد السجلات المتاحة المحجوزة لـ
يتم إعطاء بعض الأغراض الأخرى بواسطة هذه المعلمة. القيمة الافتراضية لملف
المعلمة هي 2 ، وهو الحد الأدنى من عدد السجلات التي يحتاجها النموذج
تعليمات. هذه القيمة هي أفضل ما تم العثور عليه من تجارب عديدة.

lra- الميراث- المد- احتمالية- قطع
يحاول LRA إعادة استخدام القيم المعاد تحميلها في السجلات في الإدخالات اللاحقة. هذه
التحسين يسمى الوراثة. يستخدم EBB كمنطقة للقيام بذلك
الاقوي. تحدد المعلمة الحد الأدنى من احتمال حافة السقوط في
النسبة المئوية المستخدمة لإضافة BB إلى الميراث EBB في LRA. القيمة الافتراضية لملف
المعلمة هي 40. تم اختيار القيمة من عدة عمليات تشغيل لـ SPEC2000 على x86-64.

حلقة-ثابت- max-bbs-in-loop
يمكن أن تكون حركة الحلقة الثابتة باهظة الثمن ، سواء في وقت التجميع أو في
مقدار ذاكرة وقت الترجمة المطلوبة ، مع حلقات كبيرة جدًا. حلقات مع المزيد
لن تحتوي الكتل الأساسية من هذه المعلمة على تحسين حركة ثابتة للحلقة
يؤدى عليهم. القيمة الافتراضية للمعلمة هي 1000 لـ -O1 و 10000
لل -O2 و ما فوق.

loop-max-datarefs-for-datadeps
يعد بناء البيانات المتراصة مكلفًا للحلقات الكبيرة جدًا. هذه المعلمة
يحد من عدد مراجع البيانات في الحلقات التي يتم أخذها في الاعتبار للبيانات
تحليل الاعتماد. لا يتم التعامل مع هذه الحلقات الكبيرة عن طريق التحسينات باستخدام
تبعيات البيانات حلقة. القيمة الافتراضية هي 1000.

ماكس-حجم vartrack
يعيّن الحد الأقصى لعدد فتحات جدول التجزئة لاستخدامها أثناء تدفق بيانات التعقب المتغير
تحليل أي وظيفة. إذا تم تجاوز هذا الحد مع تتبع متغير في
تم تمكين التعيينات ، تتم إعادة محاولة تحليل هذه الوظيفة بدونها ، بعد ذلك
إزالة كافة إدخالات التصحيح من الوظيفة. إذا تم تجاوز الحد حتى بدون
debug insns ، تم تعطيل تحليل تتبع var تمامًا للوظيفة.
تعيين المعلمة على الصفر يجعلها غير محدودة.

max-vartrack-expr-عمق
يضبط الحد الأقصى لعدد مستويات العودية عند محاولة تعيين أسماء المتغيرات أو
تصحيح الموقتات لقيمة التعبيرات. هذا مقايضة وقت التجميع لأكثر من ذلك
معلومات التصحيح الكاملة. إذا تم تعيين هذا على قيمة منخفضة جدًا ، فقم بتعبيرات القيمة
متوفر ويمكن تمثيله في معلومات التصحيح قد ينتهي به الأمر إلى عدم استخدامه ؛
قد يؤدي تعيين هذا الإعداد إلى أعلى إلى تمكين المترجم من العثور على تصحيح أخطاء أكثر تعقيدًا
التعبيرات ، ولكن قد ينمو استخدام الوقت والذاكرة في الترجمة. الافتراضي هو 12.

min-nondebug-insn-uid
استخدم uids بدءًا من هذه المعلمة لـ nondebug insns. النطاق أدناه
المعلمة محجوزة حصريًا لإدخالات التصحيح التي تم إنشاؤها بواسطة
-fvar- تتبع- التخصيصات، ولكن قد تحصل عناصر تصحيح الأخطاء على مستخدِمات (غير متداخلة) أعلاه
إذا تم استنفاد النطاق المحجوز.

عامل النمو ipa-sra-ptr
يستبدل IPA-SRA مؤشرًا بمجموع واحد أو أكثر من المعلمات الجديدة فقط
عندما يكون حجمها التراكمي أقل أو يساوي عامل النمو ipa-sra-ptr أضعاف
حجم معلمة المؤشر الأصلية.

sra-max-Scalarization-size-Ospeed
sra-max-scalarization-size-Osize
يهدف التخفيض القياسي للركام (SRA و IPA-SRA) إلى استبدالهما
الأجزاء العددية من الركام باستخدام المتغيرات العددية المستقلة. هؤلاء
تتحكم المعلمات في الحجم الأقصى ، في وحدات التخزين ، للركام وهو
يعتبر للاستبدال عند التجميع من أجل السرعة (sra-max-scalarization-size-
السرعة) أو الحجم (sra-max-scalarization-size-Osize) على التوالي.

الحجم الكلي tm max
عند عمل نسخ من المتغيرات المحلية الخيطية في معاملة ، هذه المعلمة
يحدد الحجم بالبايت وبعد ذلك يتم حفظ المتغيرات مع التسجيل
وظائف بدلاً من حفظ / استعادة أزواج تسلسل التعليمات البرمجية. هذا الخيار فقط
ينطبق عند استخدام -فنو- ​​tm.

الجرافيت-max-nb-scop-params
لتجنب التأثيرات الأسية في تحويلات حلقة الجرافيت ، فإن عدد
المعلمات في جزء التحكم الثابت (SCoP) محدودة. القيمة الافتراضية هي 10
العوامل. متغير قيمته غير معروفة في وقت التجميع ومحددة
خارج SCoP معلمة من SCoP.

الجرافيت- max-bbs- لكل وظيفة
لتجنب التأثيرات الأسية في اكتشاف SCoPs ، حجم الوظائف
تحليلها بواسطة الجرافيت يحدها. القيمة الافتراضية هي 100 كتلة أساسية.

حلقة-كتلة-حجم البلاط
يتم تمكين حجب الحلقة أو تحويلات التعدين الشريطية مع - كتلة طيارة or
-قريب-شريط-الألغام، قم بتجريد كل حلقة في عش الحلقة بعدد معين من
التكرارات. يمكن تغيير طول الشريط باستخدام حلقة-كتلة-حجم البلاط
معامل. القيمة الافتراضية هي 51 تكرارا.

حلقة-فتح-حجم المربى
حدد عامل فتح الملف -تقلب-فتح-والمربى اختيار. القيمة الافتراضية
هو 4.

حلقة-فتح-جام-عمق
حدد البعد المراد إلغاء تسجيله (العد من أكثر حلقة داخلية) لـ
-تقلب-فتح-والمربى. القيمة الافتراضية هي 2.

ipa-cp-value-list-size
يحاول IPA-CP تتبع جميع القيم والأنواع الممكنة التي تم تمريرها إلى الوظيفة
المعلمة من أجل تكاثرها وتنفيذ devirtualization. قيمة ipa-cp-
حجم القائمة هو الحد الأقصى لعدد القيم والأنواع التي يخزنها لكل رسمية
معلمة وظيفة.

عتبة ipa-cp-Eval-threshold
تحسب IPA-CP درجاتها الخاصة في الاستدلال على استدلال الربحية وأدائها
فرص الاستنساخ التي تتجاوز الدرجات عتبة ipa-cp-Eval-threshold.

عقوبة ipa-cp- العودية
النسبة المئوية للعقوبة التي ستتلقاها الوظائف العودية عند تقييمها
للاستنساخ.

عقوبة المكالمة الفردية ipa-cp
وظائف عقوبة النسبة المئوية التي تحتوي على مكالمة واحدة إلى وظيفة أخرى سوف
يتلقونها عندما يتم تقييمهم للاستنساخ.

ipa-max-agg-items
IPA-CP قادر أيضًا على نشر عدد من القيم العددية التي يتم تمريرها في نطاق
مجموع. ipa-max-agg-items يتحكم في الحد الأقصى لعدد هذه القيم لكل واحد
المعلمة.

ipa-cp- حلقة-تلميح-مكافأة
عندما يقرر IPA-CP أن مرشح الاستنساخ سيحقق عدد
تكرار حلقة معروفة ، فإنه يضيف مكافأة ipa-cp- حلقة-تلميح-مكافأة الى
درجة ربحية المرشح.

ipa-cp-array-index-hint-bonus
عندما يقرر IPA-CP أن مرشح الاستنساخ سوف يصنع فهرس المصفوفة
الوصول المعروف ، يضيف مكافأة ipa-cp-array-index-hint-bonus الى
درجة ربحية المرشح.

ipa-max-aa- الخطوات
أثناء تحليل الهيئات الوظيفية ، يستخدم IPA-CP تحليل الاسم المستعار من أجل
تشير قيم المسار إلى معلمات الوظيفة. لكي لا تضيع الكثير من الوقت
بتحليل وظائف ضخمة ، فإنه يستسلم ويأخذ في الاعتبار كل الذاكرة المضطربة بعد ذلك
دراسة ipa-max-aa- الخطوات بيانات تعديل الذاكرة.

أقسام lto
حدد العدد المطلوب من الأقسام التي تم إنتاجها أثناء تجميع WHOPR. ال
يجب أن يتجاوز عدد الأقسام عدد وحدات المعالجة المركزية المستخدمة في التجميع. ال
القيمة الافتراضية هي 32.

lto-minpartition
حجم الحد الأدنى من التقسيم لـ WHOPR (في التعليمات المقدرة). هذا يمنع
نفقات تقسيم البرامج الصغيرة جدًا إلى أقسام كثيرة جدًا.

مساحات الأسماء cxx-max-for-التشخيص-التعليمات
الحد الأقصى لعدد مساحات الأسماء التي يمكن الرجوع إليها للحصول على اقتراحات عند البحث عن اسم C ++
فشل للحصول على معرّف. الافتراضي هو 1000.

عتبة التردد بالوعة
الحد الأقصى لتكرار التنفيذ النسبي (بالنسب المئوية) للكتلة المستهدفة
بالنسبة إلى الكتلة الأصلية للبيان للسماح بغرق العبارة لـ
بيان. تؤدي الأرقام الكبيرة إلى المزيد من الغرق العدواني في العبارات. ال
القيمة الافتراضية هي 75. يتم تطبيق تعديل إيجابي صغير على البيانات ذات
معاملات الذاكرة لأنها أكثر ربحية لذا تغرق.

ماكس-مخازن للحوض
أقصى عدد من أزواج المتاجر الشرطية التي يمكن غرقها. اضبط على 0 إذا
إما vectorization (-ftree-vectorize) أو إذا-التحويل (-ftree- حلقة- إذا- تحويل)
معطل. الافتراضي هو 2.

سماح-تخزين-بيانات-سباقات
السماح للمحسّنين بتقديم سباقات بيانات جديدة في المتاجر. اضبط على 1 للسماح ،
بخلاف ذلك إلى 0. يتم تمكين هذا الخيار افتراضيًا على مستوى التحسين -سريع.

عتبة قيم الحالة
أصغر عدد من القيم المختلفة من الأفضل استخدام جدول انتقال
بدلا من شجرة الفروع الشرطية. إذا كانت القيمة 0 ، فاستخدم الإعداد الافتراضي لـ
الآلة. الافتراضي هو 0.

عرض الشجرة reassoc
قم بتعيين الحد الأقصى لعدد التعليمات التي يتم تنفيذها بالتوازي في الشجرة المعاد إقرانها.
تتجاوز هذه المعلمة الأساليب البحثية التابعة للهدف المستخدمة افتراضيًا إذا لم يكن بها
قيمة صفرية.

جدول-ضغط-خوارزمية
اختر من بين التطبيقين المتاحين لـ ضغط ضغط. الخوارزمية 1
هو التنفيذ الأصلي ويزيد احتمال منع التعليمات من
يتم إعادة ترتيبها. تم تصميم الخوارزمية 2 لتكون بمثابة حل وسط بين
نهج متحفظ نسبيًا تتبعه الخوارزمية 1 والعدوانية نوعًا ما
النهج الذي يتبعه المجدول الافتراضي. إنه يعتمد بشكل أكبر على وجود ملف
ملف تسجيل منتظم ودقيق تسجيل فئات الضغط. ارى حيفا جدولة ج
في مصادر دول مجلس التعاون الخليجي لمزيد من التفاصيل.

يعتمد الاختيار الافتراضي على الهدف.

max-slsr-cand-scan
قم بتعيين الحد الأقصى لعدد المرشحين الحاليين الذين يتم أخذهم في الاعتبار عند البحث عن ملف
أساس لمرشح جديد لتخفيض قوة الخط المستقيم.

اسان جلوبالس
تفعيل الكشف عن تجاوز سعة المخزن المؤقت للكائنات العامة. هذا النوع من الحماية
ممكّنًا بشكل افتراضي إذا كنت تستخدم -fsanitize = العنوان اختيار. لتعطيل العالمية
استخدام حماية الكائنات - معلمة أسان-غلوبالس = 0.

أسان كومة
تمكين الكشف عن تجاوز سعة المخزن المؤقت لكائنات المكدس. هذا النوع من الحماية
ممكّنًا افتراضيًا عند استخدام-fsanitize = العنوان. لتعطيل استخدام حماية المكدس
- معلمة كومة أسان = 0 الخيار.

يقرأ اسان الصك
تفعيل الكشف عن تجاوز سعة المخزن المؤقت لقراءات الذاكرة. هذا النوع من الحماية
ممكّنًا افتراضيًا عند استخدام -fsanitize = العنوان. لتعطيل الذاكرة يقرأ
استخدام الحماية - معلمة يقرأ asan-Instrument- يقرأ = 0.

أسان-صك-يكتب
تفعيل اكتشاف تجاوز سعة المخزن المؤقت لعمليات الكتابة في الذاكرة. هذا النوع من الحماية
ممكّنًا افتراضيًا عند استخدام -fsanitize = العنوان. لتعطيل ذاكرة يكتب
استخدام الحماية - معلمة asan-Instrument-writes = 0 الخيار.

أسان ميمينترين
تمكين الكشف عن الوظائف المضمنة. يتم تمكين هذا النوع من الحماية بواسطة
الافتراضي عند استخدام -fsanitize = العنوان. لتعطيل حماية الوظائف المدمجة
استعمال - معلمة أسان ميمينترين = 0.

أسان-استخدام-بعد العودة
تمكين الكشف عن الاستخدام بعد العودة. يتم تمكين هذا النوع من الحماية بواسطة
الافتراضي عند استخدام -fsanitize = العنوان اختيار. لتعطيل الاستخدام بعد الإرجاع
استخدام الكشف - معلمة asan-use-after-return = 0.

asan-Instrumation-with-call-threshold
إذا كان عدد مرات الوصول إلى الذاكرة في الوظيفة التي يتم تشغيلها أكبر أو يساوي
هذا الرقم ، استخدم عمليات الاسترجاعات بدلاً من عمليات التحقق المضمنة. على سبيل المثال لتعطيل التعليمات البرمجية المضمنة
استعمال - معلمة asan-Instrumation-with-call-threshold = 0.

chkp-max-ctor-size
قد تصبح المنشئات الثابتة التي تم إنشاؤها بواسطة Pointer Bounds Checker كبيرة جدًا و
زيادة وقت الترجمة بشكل كبير على مستوى التحسين -O1 وأعلى. هذه
المعلمة هي الحد الأقصى من العبارات في مُنشئ واحد تم إنشاؤه.
القيمة الافتراضية هي 5000.

max-fsm-thread-path-insns
العدد الأقصى من التعليمات المراد نسخها عند نسخ الكتل في حالة محدودة
مسار موضوع القفز الآلي. الافتراضي هو 100.

max-fsm- طول الخيط
أقصى عدد من الكتل الأساسية على مسار خيط انتقال آلي ذي حالة محدودة. ال
الافتراضي هو 10.

مسارات خيط max-fsm
الحد الأقصى لعدد مسارات خيط الانتقال الجديدة التي يتم إنشاؤها لحالة آلية محدودة.
الافتراضي هو 50.

الخيارات السيطرة ال قبل المعالج
تتحكم هذه الخيارات في معالج C ، والذي يتم تشغيله على كل ملف مصدر C قبل الفعلي
التحويل البرمجي.

إذا كنت تستخدم -E الخيار ، لا شيء يتم القيام به باستثناء المعالجة المسبقة. بعض هذه الخيارات
منطقي فقط مع -E لأنهم يتسببون في إخراج المعالج المسبق
غير مناسب للترجمة الفعلية.

-Wp ،خيار
يمكنك استخدام -Wp ،خيار لتجاوز سائق المترجم وتمرير خيار مباشرة من خلال
إلى المعالج. لو خيار يحتوي على فواصل ، يتم تقسيمه إلى خيارات متعددة في
الفواصل. ومع ذلك ، يتم تعديل العديد من الخيارات أو ترجمتها أو تفسيرها بواسطة
برنامج تشغيل المترجم قبل أن يتم تمريره إلى المعالج المسبق ، و -Wp يتجاوز بالقوة
هذه المرحلة. الواجهة المباشرة للمعالج غير موثقة وتخضع لـ
التغيير ، لذا يجب تجنب استخدام -Wp ودع السائق يتعامل مع ملف
خيارات بدلا من ذلك.

-Xpreprocessor خيار
تجاوز خيار كخيار للمعالج. يمكنك استخدام هذا لتزويد النظام-
خيارات المعالجات المحددة التي لا يتعرف عليها GCC.

إذا كنت تريد تمرير خيار يأخذ حجة ، فيجب عليك استخدام -Xpreprocessor
مرتين ، مرة للخيار ومرة ​​للحجة.

-لا- متكامل- CPP
قم بإجراء المعالجة المسبقة كمرور منفصل قبل التجميع. بشكل افتراضي ، يؤدي GCC
المعالجة المسبقة كجزء لا يتجزأ من تحويل الرموز إلى المدخلات والتحليل. إذا كان هذا الخيار
يتم توفير الواجهة الأمامية باللغة المناسبة (cc1, cc1plus، أو cc1obj لـ C و C ++ ،
و Objective-C ، على التوالي) بدلاً من ذلك مرتين ، مرة واحدة للمعالجة المسبقة فقط
ومرة واحدة للتجميع الفعلي للمدخلات المجهزة مسبقًا. قد يكون هذا الخيار مفيدا
جنبا إلى جنب مع -B or -غلاف خيارات لتحديد معالج مسبق بديل أو
إجراء معالجة إضافية لمصدر البرنامج بين المعالجة المسبقة العادية و
التحويل البرمجي.

-D الاسم
محدد مسبقا الاسم كماكرو ، مع التعريف 1.

-D الاسم=تعريف
محتويات تعريف يتم ترميزها ومعالجتها كما لو ظهرت أثناء
مرحلة الترجمة الثالثة في أ # تعريف التوجيه. على وجه الخصوص ، سيكون التعريف
تم اقتطاعه بواسطة أحرف سطر جديد مضمنة.

إذا كنت تستدعي المعالج المسبق من قذيفة أو برنامج يشبه القشرة ، فقد تحتاج
لاستخدام صيغة اقتباس الصدفة لحماية الأحرف مثل المسافات التي تحتوي على
المعنى في بناء الجملة.

إذا كنت ترغب في تحديد ماكرو يشبه الوظيفة في سطر الأوامر ، فاكتب وسيطته
قائمة بالأقواس المحيطة قبل علامة التساوي (إن وجدت). الأقواس
مفيد لمعظم الأصداف ، لذلك ستحتاج إلى اقتباس الخيار. مع sh و مستشفى الدعم القتالي,
-د'الاسم(أرجس ...)=تعريف' الأشغال.

-D و -U تتم معالجة الخيارات بالترتيب الوارد في سطر الأوامر. الجميع
-يماكروس ملف و -تضمن ملف يتم معالجة الخيارات بعد كل شيء -D و -U خيارات.

-U الاسم
إلغاء أي تعريف سابق لـ الاسم، سواء مدمجة أو مزودة بامتداد -D الخيار.

- صندوق
لا تقم بإجراء تعريف مسبق لأي وحدات ماكرو خاصة بالنظام أو خاصة بمجلس التعاون الخليجي. المعيار المحدد مسبقًا
تظل وحدات الماكرو معرّفة.

-I دير
أضف الدليل دير إلى قائمة الدلائل التي سيتم البحث فيها عن ملفات الرأس.
الدلائل التي تم تسميتها بواسطة -I يتم البحث قبل تضمين النظام القياسي الدلائل.
إذا كان الدليل دير هو نظام قياسي يشمل الدليل ، يتم تجاهل الخيار إلى
تأكد من أن ترتيب البحث الافتراضي لأدلة النظام والمعالجة الخاصة
لم يتم هزيمة رؤوس النظام. لو دير يبدأ بـ "=" ، ثم "=" سيكون
استبدالها ببادئة sysroot ؛ ارى - الجذور و -ايسروت.

-o ملف
كتابة الإخراج إلى ملف. هذا هو نفس التحديد ملف باعتباره الخيار الثاني
حجة ل حزب الشعب الكمبودي. دول مجلس التعاون الخليجي له تفسير مختلف للحجة الثانية غير الخيار ،
لذلك يجب عليك استخدام -o لتحديد ملف الإخراج.

الجدار شاحن
يقوم بتشغيل جميع التحذيرات الاختيارية المرغوبة للكود العادي. في الوقت الحاضر هذا
is - تعليق, -Wtrigraphs, -مولتيشار وتحذيرًا بشأن ترقية عدد صحيح تسبب أ
تغيير تعبيرات تسجيل الدخول "#if". لاحظ أن العديد من تحذيرات المعالج
بشكل افتراضي وليس لديك خيارات للتحكم فيها.

- تعليق
-ملاحظات
تحذير عند تسلسل بدء تعليق /* يظهر في /* التعليق ، أو كلما أ
يظهر الخط المائل العكسي الجديد في ملف // تعليق. (كلا الشكلين لهما نفس التأثير.)

-Wtrigraphs
لا يمكن أن تؤثر معظم الأشكال الثلاثية في التعليقات على معنى البرنامج. ومع ذلك ، أ
خط الرسم البياني الذي من شأنه أن يشكل سطرًا جديدًا هاربًا (؟؟ / في نهاية السطر) يمكن ، بواسطة
تغيير مكان بدء التعليق أو نهايته. لذلك ، فقط الأشكال الثلاثية التي من شأنها أن تتشكل
تُصدر الأسطر الجديدة التي تم تخطيها تحذيرات داخل تعليق.

هذا الخيار متضمن بواسطة الجدار شاحن. إذا الجدار شاحن لا يزال هذا الخيار ممكّنًا
ما لم يتم تمكين أشكال الرسم البياني. للحصول على تحويل ثلاثي الأبعاد بدون تحذيرات ، ولكن احصل على
الآخر الجدار شاحن تحذيرات ، استخدم -الخط الجدار شاحن -لا-تريغرافس.

-تقليدي
تحذير من بعض التركيبات التي تتصرف بشكل مختلف في المعيار التقليدي و ISO C. أيضًا
تحذير بشأن تركيبات ISO C التي لا تحتوي على مكافئ C تقليدي ، وتشكل مشكلة
التركيبات التي يجب تجنبها.

- وندف
تحذير عند مواجهة معرّف ليس ماكروًا في ملف #إذا التوجيه،
خارج تعريف. يتم استبدال هذه المعرفات بصفر.

-فاخر-وحدات الماكرو
تحذير من وحدات الماكرو المحددة في الملف الرئيسي غير المستخدمة. الماكرو مستعمل اذا كانت
توسعت أو اختبرت من أجل الوجود مرة واحدة على الأقل. سوف يحذر المعالج المسبق أيضًا إذا
لم يتم استخدام الماكرو في وقت إعادة تعريفه أو عدم تحديده.

تضمين وحدات الماكرو المضمنة ووحدات الماكرو المحددة في سطر الأوامر ووحدات الماكرو المحددة في
لا يتم تحذير الملفات منها.

ملاحظة: إذا تم استخدام ماكرو بالفعل ، ولكن تم استخدامه فقط في الكتل الشرطية التي تم تخطيها ، إذن
ستقوم CPP بالإبلاغ عنها على أنها غير مستخدمة. لتجنب التحذير في مثل هذه الحالة ، قد تتحسن
نطاق تعريف الماكرو ، على سبيل المثال ، نقله إلى أول تم تخطيه
منع. بدلاً من ذلك ، يمكنك تقديم استخدام وهمي بشيء مثل:

# إذا حددت the_macro_causing_the_warning
#endif

-وينديف- تسميات
تحذير عندما يكون ملف #else أو #endif تليها نص. يحدث هذا عادة في
كود النموذج

#if FOO
...
# آخر FOO
...
#endif فو

يجب أن يكون "FOO" الثاني والثالث في التعليقات ، لكن غالبًا ما لا يكونا في البرامج القديمة.
يتم تشغيل هذا التحذير بشكل افتراضي.

-خطأ
تحويل جميع التحذيرات إلى أخطاء جسيمة. سيكون كود المصدر الذي يطلق التحذيرات
مرفوض.

-Wsystem- رؤوس
إصدار تحذيرات للتعليمات البرمجية في رؤوس النظام. عادة ما تكون هذه غير مفيدة في العثور عليها
الأخطاء في التعليمات البرمجية الخاصة بك ، وبالتالي قمعها. إذا كنت مسؤولاً عن النظام
مكتبة ، قد ترغب في رؤيتها.

-w قم بإلغاء جميع التحذيرات ، بما في ذلك تلك التي يصدرها GNU CPP افتراضيًا.

-متحذلق
إصدار كافة التشخيصات الإلزامية المدرجة في المعيار C. بقي بعضهم
بشكل افتراضي ، حيث يتم تشغيلها بشكل متكرر على رمز غير ضار.

- أخطاء متداخلة
قم بإصدار جميع التشخيصات الإلزامية ، وجعل جميع التشخيصات الإلزامية في أخطاء.
وهذا يشمل التشخيصات الإلزامية التي تصدر دول مجلس التعاون الخليجي بدونها -متحذلق ولكن يعامل مثل
التحذيرات.

-M بدلاً من إخراج نتيجة المعالجة المسبقة ، أخرج قاعدة مناسبة لـ جعل
يصف تبعيات الملف المصدر الرئيسي. يخرج المعالج المسبق واحد
جعل القاعدة التي تحتوي على اسم ملف الكائن لملف المصدر هذا ، ونقطتان ، والأسماء
لجميع الملفات المضمنة ، بما في ذلك تلك الواردة من -تضمن or -يماكروس أمر-
خيارات الخط.

ما لم يتم تحديد ذلك صراحة (مع -MT or -MQ) ، يتكون اسم ملف الكائن من امتداد
اسم الملف المصدر مع أي لاحقة تم استبدالها بلاحقة ملف الكائن وبأي
إزالة أجزاء الدليل الرائدة. إذا كان هناك العديد من الملفات المضمنة ، فإن القاعدة هي
تنقسم إلى عدة أسطر باستخدام \-خط جديد. القاعدة ليس لها أوامر.

لا يمنع هذا الخيار إخراج تصحيح المعالج ، مثل -dM. لتجنب
خلط إخراج التصحيح هذا مع قواعد التبعية يجب أن تحدد بشكل صريح
ملف الإخراج مع التبعية -مف، أو استخدام متغير بيئة مثل
DEPENDENCIES_OUTPUT. سيظل إخراج التصحيح يتم إرساله إلى دفق الإخراج العادي كـ
العادية.

مرور -M للسائق يعني -E، ويمنع التحذيرات بضمنة -w.

-MM اعجاب -M لكن لا تذكر ملفات الرأس الموجودة في أدلة رؤوس النظام ،
ولا ملفات الرأس التي تم تضمينها ، بشكل مباشر أو غير مباشر ، من هذا الرأس.

هذا يعني أن اختيار الأقواس الزاوية أو علامات الاقتباس المزدوجة في تتضمن #
التوجيه في حد ذاته لا يحدد ما إذا كان هذا الرأس سيظهر في -MM
ناتج التبعية. هذا هو تغيير طفيف في دلالات من الإصدارات الخليجية 3.0 و
سابقا.

-مف ملف
عند استخدامها مع -M or -MM، يحدد ملفًا لكتابة التبعيات إليه. إذا كان الجواب لا -مف
يُعطى التبديل ، يرسل المعالج المسبق القواعد إلى نفس المكان الذي كان من الممكن أن يرسله
الإخراج المجهزة.

عند استخدامها مع خيارات السائق -MD or - MMD, -مف يتجاوز التبعية الافتراضية
ملف إلاخراج.

-مغ بالتزامن مع خيار مثل -M طلب توليد التبعية ، -مغ يفترض
ملفات الرأس المفقودة هي ملفات يتم إنشاؤها وإضافتها إلى قائمة التبعية بدون
رفع خطأ. اسم ملف التبعية مأخوذ مباشرة من "#include"
التوجيه بدون مسبقة أي مسار. -مغ يمنع أيضًا الإخراج المجهز مسبقًا ، مثل ملف
ملف رأس مفقود يجعل هذا عديم الفائدة.

تُستخدم هذه الميزة في التحديث التلقائي لملفات makefiles.

-MP يوجه هذا الخيار CPP إلى إضافة هدف زائف لكل تبعية بخلاف
الملف الرئيسي ، مما يجعل كل منها يعتمد على لا شيء. تعمل هذه القواعد الوهمية على حل الأخطاء
جعل يعطي إذا قمت بإزالة ملفات الرأس دون تحديث ملف ماكيفيلي كثيرا.

هذا هو الناتج النموذجي:

test.o: test.c test.h

test.h:

-MT الهدف
قم بتغيير هدف القاعدة المنبعث من إنشاء التبعية. افتراضيا CPP يأخذ
اسم ملف الإدخال الرئيسي ، يحذف أي مكونات دليل وأي لاحقة ملف
مثل .c، وإلحاق لاحقة الكائن المعتادة للنظام الأساسي. والنتيجة هي الهدف.

An -MT الخيار سيحدد الهدف ليكون بالضبط السلسلة التي تحددها. إن أردت
أهداف متعددة ، يمكنك تحديدها كوسيطة واحدة ل -MT، أو استخدام ملفات متعددة
-MT خيارات.

على سبيل المثال، -MT "$ (objpfx) foo.o" ممكن يعطي

$ (objpfx) foo.o: foo.c

-MQ الهدف
مثل -MT، ولكنه يقتبس أي أحرف خاصة لعملها.
-MQ "$ (objpfx) foo.o" يعطي

$$ (objpfx) foo.o: foo.c

يتم اقتباس الهدف الافتراضي تلقائيًا ، كما لو تم إعطاؤه مع -MQ.

-MD -MD ما يعادل -M -مف ملف، ما عدا ذلك -E ليس ضمنيا. السائق
يحدد ملف بناءً على ما إذا كان ملف -o يتم إعطاء الخيار. إذا كان الأمر كذلك ، يستخدم السائق ملف
حجة ولكن مع لاحقة .dوإلا فإنه يأخذ اسم ملف الإدخال ،
يزيل أي مكونات الدليل واللاحقة ، ويطبق أ .d لاحقة.

If -MD يستخدم بالتزامن مع -Eاي -o من المفهوم أن التبديل لتحديد
ملف الإخراج التبعية ، ولكن إذا تم استخدامه بدون -E، كل -o من المفهوم أن تحدد أ
الهدف ملف.

منذ -E ليس ضمنيا ، -MD يمكن استخدامها لإنشاء ملف مخرجات التبعية كملف
الآثار الجانبية لعملية التجميع.

- MMD
اعجاب -MD باستثناء ذكر ملفات رأس المستخدم فقط ، وليس ملفات رأس النظام.

-fpch-deps
عند استخدام الرؤوس المترجمة مسبقًا ، ستؤدي هذه العلامة إلى ظهور إشارات التبعية-الإخراج إلى
يسرد أيضًا الملفات من تبعيات الرأس المترجمة مسبقًا. إذا لم يتم تحديده فقط
سيتم سرد الرأس المترجم مسبقًا وليس الملفات التي تم استخدامها لإنشائه
لأنه لا يتم استشارة هذه الملفات عند استخدام رأس مترجم مسبقًا.

-fpch-preprocess
يسمح هذا الخيار باستخدام رأس مترجم مسبقًا مع -E. يقوم بإدراج ملف
"#pragma"، "#pragma GCC pch_preprocess"اسم الملف"" في الإخراج لتحديد المكان
حيث تم العثور على الرأس المترجمة مسبقًا ، و اسم الملف. عندما -مجهزة في
استخدام ، يتعرف GCC على هذا "#pragma" ويقوم بتحميل PCH.

يتم إيقاف تشغيل هذا الخيار افتراضيًا ، لأن الناتج الناتج المعالج مسبقًا هو فقط
مناسب حقًا كمدخل إلى دول مجلس التعاون الخليجي. يتم تشغيله بواسطة حفظ مؤقت.

يجب ألا تكتب هذا "#pragma" في التعليمات البرمجية الخاصة بك ، ولكن يمكنك تحرير ملف
اسم الملف إذا كان ملف PCH متاحًا في موقع مختلف. قد يكون اسم الملف
مطلق أو قد يكون متعلقًا بالدليل الحالي لدول مجلس التعاون الخليجي.

-x c
-x ج ++
-x ج موضوعية
-x المجمع مع cpp
حدد لغة المصدر: C أو C ++ أو Objective-C أو التجميع. هذا لا علاقة له به
بمطابقة المعايير أو الامتدادات ؛ إنه يختار فقط بناء الجملة الأساسي
توقع. إذا لم تقدم أيًا من هذه الخيارات ، فسوف يستنتج cpp اللغة من
امتداد الملف المصدر: .c, . سم مكعب, .m، أو .S. بعض الامتدادات الشائعة الأخرى لـ
يتم التعرف أيضًا على C ++ والتجميع. إذا لم يتعرف cpp على الامتداد ، فسيتم
سيعامل الملف على أنه C ؛ هذا هو الوضع الأكثر عمومية.

ملاحظة: الإصدارات السابقة من cpp قبلت ملف -لانغ الخيار الذي حدد كلا من
اللغة ومستوى توافق المعايير. تم حذف هذا الخيار لأن
يتعارض مع -l الخيار.

-std =معيار
-انسى
حدد المعيار الذي يجب أن يتوافق معه الرمز. يعرف CPP حاليًا عن C
ومعايير C ++ ؛ يمكن إضافة الآخرين في المستقبل.

معيار قد يكون أحد:

"c90"
"c89"
"iso9899: 1990"
معيار ISO C من عام 1990. c90 هو الاختصار المعتاد لهذا الإصدار من
المعيار.

أفضل -انسى الخيار يعادل -std = c90.

"iso9899: 199409"
معيار 1990 C ، بصيغته المعدلة في 1994.

"iso9899: 1999"
"c99"
"iso9899: 199x"
"c9x"
معيار ISO C المنقح ، المنشور في ديسمبر 1999. قبل النشر ، هذا
كان يعرف باسم C9X.

"iso9899: 2011"
"c11"
"c1x"
معيار ISO C المنقح ، المنشور في ديسمبر 2011. قبل النشر ، هذا
كان يعرف باسم C1X.

"gnu90"
"gnu89"
معيار C لعام 1990 بالإضافة إلى امتدادات GNU. هذا هو الافتراضي.

"gnu99"
"gnu9x"
معيار 1999 C بالإضافة إلى امتدادات GNU.

"gnu11"
"gnu1x"
معيار 2011 C بالإضافة إلى امتدادات GNU.

"c ++ 98"
معيار ISO C ++ لعام 1998 بالإضافة إلى التعديلات.

"gnu ++ 98"
كمثل -std = c ++ 98 بالإضافة إلى امتدادات جنو. هذا هو الإعداد الافتراضي لرمز C ++.

-أنا- تقسيم مسار التضمين. أي أدلة محددة مع -I خيارات من قبل -أنا- هي
تم البحث فقط عن الرؤوس المطلوبة بـ "#include"ملف""؛ لم يتم البحث عنها
"#يشململف> ". إذا تم تحديد أدلة إضافية مع -I خيارات بعد
-أنا-، يتم البحث عن تلك الدلائل للجميع تتضمن # توجيهات.

بالإضافة إلى ذلك، -أنا- يمنع استخدام دليل دليل الملف الحالي كملف
دليل البحث الأول عن "#include"ملف"". تم إهمال هذا الخيار.

-نوستدينك
لا تبحث في دلائل النظام القياسية عن ملفات الرأس. الدلائل فقط
التي حددتها مع -I الخيارات (ودليل الملف الحالي ، إذا كان
المناسب).

-نوستدينك ++
لا تبحث عن ملفات الرأس في الدلائل المعيارية الخاصة بـ C ++ ، ولكن لا تزال تفعل ذلك
البحث في الدلائل القياسية الأخرى. (يُستخدم هذا الخيار عند إنشاء C ++
مكتبة.)

-تضمن ملف
المعالجة: ملف كما لو أن "#include" file "" ظهر على أنه السطر الأول من المصدر الأساسي
ملف. ومع ذلك ، تم البحث عن الدليل الأول ملف هو عمل المعالج
دليل بدلًا من ذلك of الدليل الذي يحتوي على ملف المصدر الرئيسي. إذا لم يتم العثور عليها
هناك ، يتم البحث عنه في باقي سلسلة البحث "# include" ... "" كـ
العادية.

إذا كانت متعددة -تضمن الخيارات معطاة ، يتم تضمين الملفات بالترتيب
تظهر في سطر الأوامر.

-يماكروس ملف
بالضبط مثل -تضمن، باستثناء أن أي ناتج ينتج عن المسح ملف هذا خطئ
بعيدا. تظل وحدات الماكرو التي تحددها محددة. هذا يسمح لك بالحصول على كافة وحدات الماكرو
من رأس بدون معالجة إعلاناتها أيضًا.

جميع الملفات المحددة بواسطة -يماكروس تتم معالجة قبل كافة الملفات المحددة بواسطة -تضمن.

- بعد دير
بحث دير لملفات الرأس ، ولكن قم بذلك بعد كل الدلائل المحددة مع -I و
تم استنفاد دلائل النظام القياسية. دير يتم التعامل معها كنظام تشمل
الدليل. لو دير يبدأ بـ "=" ، ثم سيتم استبدال "=" بـ sysroot
اختصار؛ ارى - الجذور و -ايسروت.

-iprefix بادئة
تحديد بادئة كبادئة لما يلي -iwithprefix والخيارات. إذا كانت البادئة
يمثل دليلاً ، يجب عليك تضمين الملف النهائي /.

-iwithprefix دير
-iwithprefix قبل ذلك دير
ألحق دير إلى البادئة المحددة مسبقًا بـ -iprefix، وأضف الناتج
دليل لتضمين مسار البحث. -iwithprefix قبل ذلك يضعها في نفس المكان -I
سيكون؛ -iwithprefix يضعها حيث - بعد سيكون.

-ايسروت دير
هذا الخيار مثل - الجذور الخيار ، ولكنه ينطبق فقط على ملفات الرأس (باستثناء ملفات
أهداف داروين ، حيث تنطبق على كل من ملفات الرأس والمكتبات). انظر
- الجذور خيار لمزيد من المعلومات.

-متعدد دير
استعمل دير كدليل فرعي للدليل الذي يحتوي على رؤوس C ++ الخاصة بالهدف.

-نظام دير
بحث دير لملفات الرأس ، بعد كل الدلائل المحددة بواسطة -I ولكن قبل
دلائل النظام القياسية. قم بتمييزه كدليل نظام ، بحيث يحصل على نفس الشيء
معاملة خاصة كما يتم تطبيقها على أدلة النظام القياسية. لو دير يبدأ
بـ "=" ، ثم سيتم استبدال "=" ببادئة sysroot ؛ ارى - الجذور و
-ايسروت.

-انا اقتبس دير
بحث دير فقط لملفات الرأس المطلوبة مع "#include"ملف""؛ هم ليسوا
بحثت عن "# includeملف> "، قبل كافة الدلائل المحددة بواسطة -I وقبل
دلائل النظام القياسية. لو دير تبدأ بـ "=" ، ثم سيتم استبدال "=" بـ
بادئة sysroot ؛ ارى - الجذور و -ايسروت.

- التوجيهات فقط
عند المعالجة المسبقة ، تعامل مع التوجيهات ، لكن لا تقم بتوسيع وحدات الماكرو.

يعتمد سلوك الخيار على -E و -مجهزة خيارات.

مع -E، المعالجة المسبقة تقتصر على التعامل مع التوجيهات مثل "#define" ،
"#ifdef" و "# Error". عمليات المعالجة الأولية الأخرى ، مثل توسيع الماكرو و
لا يتم تنفيذ تحويل الرسم البياني. بالإضافة إلى ذلك ، فإن الخيار ضمنيًا
تمكين.

مع -مجهزة، التحديد المسبق لسطر الأوامر ومعظم وحدات الماكرو المضمنة هو
معاق. يتم التعامل مع وحدات الماكرو مثل "__LINE__" ، والتي تعتمد على السياق
بشكل طبيعي. يتيح ذلك تجميع الملفات التي سبق معالجتها بـ "-E
-fdirectives-only ".

مع كلاهما -E و -مجهزة، قواعد ل -مجهزة حق الاولويه او حق التقدم. هذه
يتيح المعالجة المسبقة الكاملة للملفات التي سبق معالجتها بـ "-E
-fdirectives-only ".

-fdollars- في-المعرفات
قبول $ في المعرفات.

- المعرفات الموسعة
قبول أسماء الأحرف العالمية في المعرفات. يتم تمكين هذا الخيار افتراضيًا
لـ C99 (والإصدارات اللاحقة C القياسية) و C ++.

-رؤوس-نظام-متعارف عليه-
عند المعالجة المسبقة ، لا تقصر مسارات رأس النظام باستخدام تحديد العنوان المتعارف عليه.

-مجهزة
وضح للمعالج أن ملف الإدخال قد تمت معالجته مسبقًا. هذه
يمنع أشياء مثل توسيع الماكرو ، وتحويل المثلثات ، وهروب السطر الجديد ،
وتجهيز معظم التوجيهات. المعالج لا يزال يتعرف ويزيل
من التعليقات ، بحيث يمكنك تمرير ملف تمت معالجته مسبقًا -C إلى المترجم بدون
مشاكل. في هذا الوضع ، يكون المعالج الأولي المدمج أكثر بقليل من رمز مميز
للأطراف الأمامية.

-مجهزة ضمنيًا إذا كان ملف الإدخال يحتوي على أحد الامتدادات .i, .ii or .mi.
هذه هي الامتدادات التي يستخدمها GCC للملفات المعالجة مسبقًا التي تم إنشاؤها بواسطة حفظ مؤقت.

-ftabstop =عرض
اضبط المسافة بين علامات الجدولة. هذا يساعد تقرير المعالج المسبق العمود الصحيح
الأرقام في التحذيرات أو الأخطاء ، حتى إذا ظهرت علامات التبويب على السطر. إذا كانت القيمة أقل
من 1 أو أكبر من 100 ، يتم تجاهل الخيار. الافتراضي هو 8.

-fdebug-cpp
هذا الخيار مفيد فقط لتصحيح أخطاء GCC. عند استخدامها مع -E، مقالب التصحيح
معلومات حول خرائط الموقع. يسبق كل رمز مميز في الإخراج تفريغ
الخريطة التي ينتمي إليها موقعها. تفريغ الخريطة التي تحتوي على موقع الرمز المميز
سيكون:

{"P": F ؛ "F": F ؛ "L": ؛ "ج": ؛"س": ؛ "م": ؛ "ه": ، "loc": }

عند استخدامها بدون -E، هذا الخيار ليس له أي تأثير.

التوسع الكلي[=مستوى]
تتبع مواقع الرموز المميزة عبر التوسعات الكلية. هذا يسمح للمترجم بالبث
التشخيص حول مكدس توسيع الماكرو الحالي عند حدوث خطأ تجميع في
توسع ماكرو. استخدام هذا الخيار يجعل المعالج والمجمع يستهلكان
المزيد من الذاكرة. ال مستوى يمكن استخدام المعلمة لاختيار مستوى دقة الرمز المميز
تتبع الموقع وبالتالي تقليل استهلاك الذاكرة إذا لزم الأمر. قيمة 0 of
مستوى يقوم بإلغاء تنشيط هذا الخيار تمامًا كما لو كان لا التوسع الكلي كان حاضرًا في
سطر الأوامر. قيمة 1 يتتبع مواقع الرموز المميزة في الوضع المتدهور من أجل
الحد الأدنى من سعة الذاكرة. في هذا الوضع ، تكون جميع الرموز المميزة الناتجة عن توسيع ملف
حجة الماكرو الشبيه بالوظيفة لها نفس الموقع. قيمة 2 المسارات المميزة
مواقع بالكامل. هذه القيمة هي الذاكرة الأكثر جوعًا. عندما يتم إعطاء هذا الخيار
لا توجد وسيطة ، قيمة المعلمة الافتراضية هي 2.

لاحظ أنه يتم تنشيط "-ftrack-macro-extension = 2" افتراضيًا.

-fexec-charset =محارف
قم بتعيين مجموعة أحرف التنفيذ ، المستخدمة في ثوابت السلسلة والحرف. الافتراضي
هو UTF-8. محارف يمكن أن يكون أي ترميز تدعمه مكتبة "iconv" للنظام
نمط.

-fwide-exec-charset =محارف
عيّن مجموعة أحرف التنفيذ العريضة ، والمستخدمة لسلسلة واسعة وثوابت الأحرف.
الافتراضي هو UTF-32 أو UTF-16 ، أيهما يتوافق مع عرض "wchar_t". كما
مع -fexec-charset, محارف يمكن أن يكون أي ترميز يدعمه رمز "iconv" الخاص بالنظام
روتين المكتبة ومع ذلك ، ستواجه مشاكل مع الترميزات غير الملائمة
بالضبط في "wchar_t".

- إدخال - محارف =محارف
قم بتعيين مجموعة أحرف الإدخال ، المستخدمة للترجمة من مجموعة أحرف الإدخال
ملف إلى مجموعة الأحرف المصدر المستخدمة من قبل GCC. إذا لم تحدد الإعدادات المحلية ، أو GCC
لا يمكن الحصول على هذه المعلومات من الإعدادات المحلية ، الافتراضي هو UTF-8. هذا يمكن أن يكون
تم تجاوزه بواسطة الإعدادات المحلية أو خيار سطر الأوامر هذا. حاليا الأمر-
يكون لخيار الخط الأسبقية إذا كان هناك تعارض. محارف يمكن أن يكون أي ترميز
بدعم من روتين مكتبة النظام "iconv".

-العمل-الدليل
قم بتمكين إنشاء علامات خطية في إخراج المعالج المسبق التي ستسمح للمترجم
تعرف على دليل العمل الحالي في وقت المعالجة المسبقة. عندما يكون هذا الخيار
ممكّنًا ، سيصدر المعالج ، بعد علامة الخط الأولي ، علامة خطية ثانية
مع دليل العمل الحالي متبوعًا بشرطتين مائلتين. سيستخدم دول مجلس التعاون الخليجي هذا
الدليل ، عندما يكون موجودًا في المدخلات المعالجة مسبقًا ، حيث ينبعث الدليل بتنسيق
دليل العمل الحالي في بعض تنسيقات معلومات التصحيح. هذا الخيار هو
ممكّنًا ضمنيًا إذا تم تمكين معلومات تصحيح الأخطاء ، ولكن يمكن منع ذلك باستخدام
الشكل المنفي -fno- العمل- الدليل. إذا كان -P العلم موجود في الأمر
سطر ، هذا الخيار ليس له أي تأثير ، حيث لا يتم إصدار أي توجيهات "# line" على الإطلاق.

-fno-show-العمود
لا تطبع أرقام الأعمدة في التشخيص. قد يكون هذا ضروريًا إذا كانت التشخيصات
يتم فحصها بواسطة برنامج لا يفهم أرقام الأعمدة ، مثل
ديجانو.

-A فاعل=إجابة
قم بعمل تأكيد مع المسند فاعل والجواب إجابة. هذا النموذج
يفضل الشكل الأقدم -A فاعل(إجابة)، والذي لا يزال مدعومًا ، لأنه
لا يستخدم رموز شل الخاصة.

-A -فاعل=إجابة
إلغاء تأكيد مع المسند فاعل والجواب إجابة.

-دكار
الرسوم هي سلسلة من واحد أو أكثر من الأحرف التالية ، ويجب ألا تكون كذلك
مسبوقة بمسافة. يتم تفسير الأحرف الأخرى من قبل المترجم الصحيح ، أو
محفوظة للإصدارات المستقبلية من GCC ، وبالتالي يتم تجاهلها بصمت. إذا حددت
الشخصيات التي يتعارض سلوكها ، والنتيجة غير محددة.

M بدلاً من الإخراج العادي ، قم بإنشاء قائمة بـ # تعريف توجيهات لجميع
وحدات الماكرو المحددة أثناء تنفيذ المعالج المسبق ، بما في ذلك المحدد مسبقًا
وحدات الماكرو. يمنحك هذا طريقة لمعرفة ما تم تحديده مسبقًا في نسختك من
المعالج. بافتراض عدم وجود ملف لديك foo.h، الامر

لمس foo.h ؛ cpp -dM foo.h

سيعرض كافة وحدات الماكرو المحددة مسبقًا.

إذا كنت تستخدم -dM بدون ال -E اختيار، -dM يتم تفسيره على أنه مرادف لـ
-fdump- rtl- ماخ.

D اعجاب M إلا من ناحيتين: إنه كذلك ليس تضمين وحدات الماكرو المحددة مسبقًا ، و
النتائج على حد سواء ال # تعريف التوجيهات ونتيجة المعالجة المسبقة. كلا النوعين
من الإخراج انتقل إلى ملف الإخراج القياسي.

N اعجاب D، ولكن ينبعث منها أسماء الماكرو فقط ، وليس توسعاتها.

I الناتج تتضمن # التوجيهات بالإضافة إلى نتيجة المعالجة المسبقة.

U اعجاب D فيما عدا ذلك فقط وحدات الماكرو الموسعة أو التي يتم اختبار تعريفها
في توجيهات المعالج ، هي الإخراج ؛ الإخراج يتأخر حتى استخدام أو
اختبار الماكرو و # صندوق يتم أيضًا إخراج التوجيهات لوحدات الماكرو التي تم اختبارها ولكن
غير محدد في ذلك الوقت.

-P منع إنشاء علامات خطية في الإخراج من المعالج المسبق. هذا قد يكون
مفيد عند تشغيل المعالج على شيء ليس رمز C ، وسيتم إرساله
إلى برنامج قد يتم الخلط بينه وبين محددات الخطوط.

-C لا تتجاهل التعليقات. يتم تمرير جميع التعليقات إلى ملف الإخراج ، باستثناء
للتعليقات في التعليمات التي تمت معالجتها ، والتي يتم حذفها مع التوجيه.

يجب أن تكون مستعدًا للآثار الجانبية عند الاستخدام -C؛ يؤدي إلى المعالج المسبق
التعامل مع التعليقات كرموز في حد ذاتها. على سبيل المثال ، التعليقات التي تظهر في
بداية ما يمكن أن يكون سطرًا توجيهيًا لها تأثير تحويل هذا الخط إلى ملف
خط المصدر العادي ، لأن الرمز المميز الأول على السطر لم يعد ملف #.

-نسخة لا تتجاهل التعليقات ، بما في ذلك أثناء توسيع الماكرو. هذا مثل -C، إلا
يتم أيضًا تمرير تلك التعليقات المضمنة في وحدات الماكرو إلى ملف الإخراج حيث
يتم توسيع الماكرو.

بالإضافة إلى الآثار الجانبية لل -C الخيار ، و -نسخة الخيار يسبب كل نمط C ++
التعليقات داخل ماكرو ليتم تحويلها إلى تعليقات على النمط C. هذا لمنع في وقت لاحق
استخدام هذا الماكرو من التعليق بدون قصد على باقي سطر المصدر.

أفضل -نسخة يستخدم الخيار بشكل عام لدعم تعليقات الوبر.

-التقليدية- CPP
حاول تقليد سلوك معالجات C القديمة ، على عكس ISO C
المعالجات.

-الخط
تسلسل الرسم البياني. هذه تسلسلات من ثلاثة أحرف ، تبدأ جميعها بـ
??، التي يتم تحديدها بواسطة ISO C لتقف على الأحرف الفردية. على سبيل المثال، ؟؟ / المدرجات
لل \، وبالتالي '؟؟/ن' هو ثابت حرف لسطر جديد. بشكل افتراضي ، يتجاهل GCC
الأشكال الثلاثية ، ولكن في أوضاع المطابقة القياسية تقوم بتحويلها. انظر -std و -انسى
خيارات.

الأشكال التسعة وبدائلها هي

Trigraph: ؟؟ (؟؟) ؟؟ <؟؟> ؟؟ = ؟؟ / ؟؟ ' ؟؟! ؟؟ -
الاستبدال: [] {} # \ ^ | ~

-Remap
قم بتمكين رمز خاص للتغلب على أنظمة الملفات التي تسمح فقط بالملفات القصيرة جدًا
أسماء ، مثل MS-DOS.

--مساعدة
--تهدف المساعدة
اطبع نصًا يصف جميع خيارات سطر الأوامر بدلاً من المعالجة المسبقة لأي شيء.

-v وضع مفصل. اطبع رقم إصدار GNU CPP في بداية التنفيذ ، و
تقرير الشكل النهائي لمسار التضمين.

-H اطبع اسم كل ملف رأس مستخدم ، بالإضافة إلى الأنشطة العادية الأخرى. كل
تم وضع مسافة بادئة للاسم لإظهار مدى عمق تتضمن # كومة هو عليه. رأس مترجمة مسبقًا
تتم أيضًا طباعة الملفات ، حتى لو تبين أنها غير صالحة ؛ مترجم غير صالح
تتم طباعة ملف الرأس باستخدام ... x وواحد صالح به ...! .

-الإصدار
--الإصدار
اطبع رقم إصدار GNU CPP. بشرطة واحدة ، انتقل إلى المعالجة المسبقة كالمعتاد.
بشرطتين ، اخرج فورًا.

مرور الخيارات إلى ال المجمع
يمكنك تمرير الخيارات إلى المجمّع.

-وا ،خيار
تجاوز خيار كخيار للمجمع. لو خيار يحتوي على فواصل ، وهو مقسم
في خيارات متعددة بالفواصل.

-Xassembler خيار
تجاوز خيار كخيار للمجمع. يمكنك استخدام هذا لتوفير نظام معين
خيارات المجمّع التي لا يتعرف عليها مجلس التعاون الخليجي.

إذا كنت تريد تمرير خيار يأخذ حجة ، فيجب عليك استخدام -Xassembler مرتين،
مرة واحدة للخيار ومرة ​​للحجة.

الخيارات لل ربط
تدخل هذه الخيارات حيز التنفيذ عندما يربط المترجم ملفات الكائنات في ملف تنفيذي
ملف إلاخراج. لا معنى لها إذا كان المترجم لا يقوم بخطوة الارتباط.

اسم ملف الكائن
يعتبر اسم الملف الذي لا ينتهي بلاحقة خاصة معترف بها لتسمية ملف
ملف الكائن أو المكتبة. (يتم تمييز ملفات الكائنات عن المكتبات بواسطة الرابط
وفقًا لمحتويات الملف.) في حالة إجراء الارتباط ، يتم استخدام ملفات الكائنات هذه كملف
المدخلات للرابط.

-c
-S
-E إذا تم استخدام أي من هذه الخيارات ، فلن يتم تشغيل الرابط ، وأسماء ملفات الكائن
لا ينبغي أن تستخدم الحجج.

-fuse-ld = bfd
استخدم BFD رابط بدلاً من الرابط الافتراضي.

-fuse-ld = ذهب
استخدم الذهب رابط بدلاً من الرابط الافتراضي.

-lمكتبة
-l مكتبة
ابحث في المكتبة المسماة مكتبة عند الربط. (البديل الثاني مع
مكتبة كوسيطة منفصلة فقط للامتثال POSIX ولا يوصى به.)

يحدث فرقًا حيث تكتب هذا الخيار في الأمر ؛ يبحث الرابط
ويعالج المكتبات وملفات الكائنات بالترتيب المحدد لها. هكذا، foo.o
-lz بار يبحث في المكتبة z بعد الملف foo.o لكن قبل بار. إذا بار يشير إلى
وظائف في z، قد لا يتم تحميل هذه الوظائف.

يبحث الرابط في قائمة قياسية من الدلائل للمكتبة ، وهي في الواقع
ملف اسمه liblibrary.a. ثم يستخدم الرابط هذا الملف كما لو تم تحديده
بالتحديد بالاسم.

تتضمن الدلائل التي تم البحث عنها العديد من أدلة النظام القياسية بالإضافة إلى أي منها أنت
حدد مع -L.

عادةً ما تكون الملفات التي يتم العثور عليها بهذه الطريقة هي ملفات مكتبة --- ملفات أرشيفية يكون أعضاؤها
ملفات الكائن. يتعامل الرابط مع ملف أرشيف عن طريق مسحه بحثًا عن الأعضاء
التي تحدد الرموز التي تمت الإشارة إليها حتى الآن ولكن لم يتم تعريفها. ولكن إذا كان
الملف الذي تم العثور عليه هو ملف كائن عادي ، وهو مرتبط بالطريقة المعتادة. ال
فقط الاختلاف بين استخدام -l الخيار وتحديد اسم الملف هو أن -l
يحيط مكتبة مع ليب و .a ويبحث في عدة أدلة.

-lobjc
أنت بحاجة إلى هذه الحالة الخاصة من -l الخيار لربط Objective-C أو
برنامج Objective-C ++.

-نوستارتفيليس
لا تستخدم ملفات بدء تشغيل النظام القياسية عند الربط. النظام القياسي
يتم استخدام المكتبات بشكل طبيعي ، ما لم يتم استخدام -نوستدليب or -Nodefaultlibs .

-Nodefaultlibs
لا تستخدم مكتبات النظام القياسية عند الارتباط. فقط المكتبات التي تحددها
يتم تمريرها إلى الرابط ، والخيارات التي تحدد ارتباط مكتبات النظام ، مثل
as -static-libgcc or -shared-libgcc، يتم تجاهله. يتم استخدام ملفات بدء التشغيل القياسية
بشكل طبيعي ، إلا إذا -نوستارتفيليس .

قد يقوم المترجم بإنشاء استدعاءات لـ "memcmp" و "memset" و "memcpy" و "memmove". هؤلاء
عادة ما يتم حل الإدخالات من خلال إدخالات في libc. يجب أن تكون نقاط الدخول هذه
يتم توفيره من خلال آلية أخرى عند تحديد هذا الخيار.

-نوستدليب
لا تستخدم ملفات أو مكتبات بدء تشغيل النظام القياسية عند الارتباط. لا يوجد بدء تشغيل
يتم تمرير الملفات والمكتبات التي تحددها فقط إلى الرابط والخيارات
تحديد ارتباط مكتبات النظام مثل -static-libgcc or -shared-libgcc,
يتم تجاهلها.

قد يقوم المترجم بإنشاء استدعاءات لـ "memcmp" و "memset" و "memcpy" و "memmove". هؤلاء
عادة ما يتم حل الإدخالات من خلال إدخالات في libc. يجب أن تكون نقاط الدخول هذه
يتم توفيره من خلال آلية أخرى عند تحديد هذا الخيار.

واحدة من المكتبات القياسية التي تم تجاوزها -نوستدليب و -Nodefaultlibs is libgcc.a و / أو
مكتبة من الإجراءات الفرعية الداخلية التي تستخدمها دول مجلس التعاون الخليجي للتغلب على أوجه القصور الخاصة
آلات أو احتياجات خاصة لبعض اللغات.

في معظم الحالات ، أنت بحاجة libgcc.a حتى عندما تريد تجنب المكتبات القياسية الأخرى.
بمعنى آخر ، عندما تحدد -نوستدليب or -Nodefaultlibs يجب عليك عادة
تحديد -lgcc أيضا. هذا يضمن عدم وجود مراجع لم يتم حلها إلى
إجراءات فرعية داخلية للمكتبات الخليجية. (مثال على مثل هذا الروتين الفرعي الداخلي
"__main" ، تُستخدم لضمان استدعاء مُنشئ C ++.)

-فطيرة
قم بإنتاج منصب مستقل قابل للتنفيذ على الأهداف التي تدعمه. للتنبؤ
النتائج ، يجب عليك أيضًا تحديد نفس مجموعة الخيارات المستخدمة في التجميع (-fpie,
-fPIE، أو خيارات فرعية للنموذج) عند تحديد خيار الرابط هذا.

-لا-فطيرة
لا تنتج منصب مستقل قابل للتنفيذ.

-ديناميكي
مرر العلم - ديناميكية التصدير إلى رابط ELF ، على الأهداف التي تدعمه. هذه
يوجه الرابط لإضافة جميع الرموز ، وليس الرموز المستخدمة فقط ، إلى الرمز الديناميكي
طاولة. هذا الخيار ضروري لبعض استخدامات "dlopen" أو للسماح بالحصول عليها
backtraces من داخل البرنامج.

-s قم بإزالة كل جدول الرموز ومعلومات النقل من الملف القابل للتنفيذ.

-ثابتة
في الأنظمة التي تدعم الارتباط الديناميكي ، يمنع هذا الارتباط بالملفات المشتركة
المكتبات. على الأنظمة الأخرى ، هذا الخيار ليس له أي تأثير.

-مشاركة
أنتج عنصرًا مشتركًا يمكن ربطه بعد ذلك بكائنات أخرى لتكوين ملف
تنفيذ. لا تدعم كل الأنظمة هذا الخيار. للحصول على نتائج يمكن التنبؤ بها ، يجب عليك
حدد أيضًا نفس مجموعة الخيارات المستخدمة في التجميع (-fpic, -fPICأو نموذج
suboptions) عند تحديد خيار الرابط هذا. [1]

-shared-libgcc
-static-libgcc
على الأنظمة التي تقدم libgcc كمكتبة مشتركة ، تفرض هذه الخيارات استخدام
إما النسخة المشتركة أو الثابتة ، على التوالي. إذا لم يكن هناك نسخة مشتركة من libgcc وكان
عندما تم تكوين المترجم ، فإن هذه الخيارات ليس لها أي تأثير.

هناك العديد من المواقف التي يجب أن يستخدم فيها التطبيق ملف libgcc
بدلاً من الإصدار الثابت. الأكثر شيوعًا هو عند التطبيق
يرغب في طرح الاستثناءات والتقاطها عبر مكتبات مشتركة مختلفة. في هذه الحالة،
يجب أن يستخدم كل من المكتبات وكذلك التطبيق نفسه ملفات libgcc.

لذلك ، تضيف برامج تشغيل G ++ و GCJ تلقائيًا -shared-libgcc كلما بنيت
مكتبة مشتركة أو ملف تنفيذي رئيسي ، لأن برامج C ++ و Java تستخدم عادةً
استثناءات ، لذلك هذا هو الشيء الصحيح الذي ينبغي عمله.

إذا كنت تستخدم بدلاً من ذلك برنامج التشغيل GCC لإنشاء مكتبات مشتركة ، فقد تجدها
لا ترتبط دائمًا بالمشاركة libgcc. إذا وجد GCC ، في تكوينه
الوقت ، أن لديك رابط غير جنو أو رابط جنو لا يدعم الخيار
--eh- الإطار- تقرير التنمية البشرية، فهو يربط النسخة المشتركة من libgcc في المكتبات المشتركة عن طريق
إفتراضي. وإلا فإنه يستفيد من الرابط ويحسن الارتباط
مع النسخة المشتركة من libgcc، والربط مع الإصدار الثابت من libgcc بواسطة
إفتراضي. هذا يسمح للاستثناءات بالنشر من خلال هذه المكتبات المشتركة ، بدون
تكبد تكاليف الانتقال في وقت تحميل المكتبة.

ومع ذلك ، إذا كان من المفترض أن تقوم مكتبة أو ملف تنفيذي رئيسي برمي أو التقاط استثناءات ، فأنت
يجب ربطه باستخدام برنامج التشغيل G ++ أو GCJ ، بما يتناسب مع اللغات المستخدمة في ملف
البرنامج أو باستخدام الخيار -shared-libgcc، بحيث يتم ربطها بالمشاركة
libgcc.

-استاتيك-ليباسان
عندما -fsanitize = العنوان يستخدم الخيار لربط برنامج سائق مجلس التعاون الخليجي
الروابط تلقائيا ضد ليباسان. إذا ليباسان متاح كمكتبة مشتركة ، و
ال -ثابتة الخيار غير مستخدم ، فهذه الروابط مقابل النسخة المشتركة من ليباسان.
أفضل -استاتيك-ليباسان الخيار يوجه سائق مجلس التعاون الخليجي للربط ليباسان بشكل ثابت ، بدون
بالضرورة ربط المكتبات الأخرى بشكل ثابت.

-استاتيك-ليبتسان
عندما -فسانيتيز = خيط يستخدم الخيار لربط برنامج سائق مجلس التعاون الخليجي
الروابط تلقائيا ضد libtsan. إذا libtsan متاح كمكتبة مشتركة ، و
ال -ثابتة الخيار غير مستخدم ، فهذه الروابط مقابل النسخة المشتركة من libtsan.
أفضل -استاتيك-ليبتسان الخيار يوجه سائق مجلس التعاون الخليجي للربط libtsan بشكل ثابت ، بدون
بالضرورة ربط المكتبات الأخرى بشكل ثابت.

-استاتيك- liblsan
عندما -فسانيتيز = تسرب يستخدم الخيار لربط برنامج سائق مجلس التعاون الخليجي
الروابط تلقائيا ضد liblsan. إذا liblsan متاح كمكتبة مشتركة ، و
ال -ثابتة الخيار غير مستخدم ، فهذه الروابط مقابل النسخة المشتركة من liblsan.
أفضل -استاتيك- liblsan الخيار يوجه سائق مجلس التعاون الخليجي للربط liblsan بشكل ثابت ، بدون
بالضرورة ربط المكتبات الأخرى بشكل ثابت.

-ستاتيك-ليبوبسان
عندما -fsanitize = غير محدد يستخدم الخيار لربط برنامج سائق مجلس التعاون الخليجي
الروابط تلقائيا ضد libubsan. إذا libubsan متاح كمكتبة مشتركة ،
و -ثابتة الخيار غير مستخدم ، فهذه الروابط مقابل النسخة المشتركة من
libubsan. -ستاتيك-ليبوبسان الخيار يوجه سائق مجلس التعاون الخليجي للربط libubsan
بشكل ثابت ، دون بالضرورة ربط المكتبات الأخرى بشكل ثابت.

-الثابت- libmpx
عندما - تحقق - مؤشر حدود و -مبكسل الخيارات المستخدمة لربط برنامج دول مجلس التعاون الخليجي
السائق تلقائيا الروابط ضد libmpx. إذا libmpx متاح كملف
مكتبة و -ثابتة لم يتم استخدام الخيار ، ثم هذه الروابط ضد المشتركة
نسخة من libmpx. -الثابت- libmpx الخيار يوجه سائق مجلس التعاون الخليجي للربط libmpx
بشكل ثابت ، دون بالضرورة ربط المكتبات الأخرى بشكل ثابت.

-static-libmpxwrappers
عندما - تحقق - مؤشر حدود و -مبكسل الخيارات تستخدم لربط برنامج بدون
تستخدم أيضا أغلفة -fno- chkp- استخدام، يقوم برنامج التشغيل GCC تلقائيًا بالارتباط بملفات
libmpxwrappers. إذا libmpxwrappers متاح كمكتبة مشتركة ، و -ثابتة
الخيار غير مستخدم ، فهذه الروابط مقابل النسخة المشتركة من libmpxwrappers.
-static-libmpxwrappers الخيار يوجه سائق مجلس التعاون الخليجي للربط libmpxwrappers
بشكل ثابت ، دون بالضرورة ربط المكتبات الأخرى بشكل ثابت.

-static-libstdc ++
عندما ز ++ يستخدم البرنامج لربط برنامج C ++ ، وعادة ما يتم ربطه تلقائيًا
ضد libstdc ++. إذا libstdc ++ متاح كمكتبة مشتركة ، و -ثابتة
الخيار غير مستخدم ، فهذه الروابط مقابل النسخة المشتركة من libstdc ++. هذا هو
عادة بخير. ومع ذلك ، من المفيد أحيانًا تجميد إصدار libstdc ++
يستخدمه البرنامج دون الانتقال إلى ارتباط ثابت بالكامل. ال
-static-libstdc ++ الخيار يوجه ز ++ سائق لربط libstdc ++ بشكل ثابت ، بدون
بالضرورة ربط المكتبات الأخرى بشكل ثابت.

-رمزي
ربط المراجع بالرموز العالمية عند إنشاء كائن مشترك. تحذير بشأن أي
المراجع التي لم يتم حلها (ما لم يتم تجاوزها بواسطة خيار محرر الارتباط -Xlinker -z
-Xlinker defs). فقط عدد قليل من الأنظمة تدعم هذا الخيار.

-T سيناريو
استعمل سيناريو باعتباره البرنامج النصي رابط. هذا الخيار مدعوم من قبل معظم الأنظمة التي تستخدم الامتداد
رابط جنو. في بعض الأهداف ، مثل أهداف عارية بدون نظام تشغيل ،
ال -T قد يكون الخيار مطلوبًا عند الربط لتجنب الإشارات إلى رموز غير محددة.

-Xlinker خيار
تجاوز خيار كخيار للرابط. يمكنك استخدام هذا لتوفير نظام معين
خيارات الرابط التي لا يتعرف عليها GCC.

إذا كنت تريد تمرير خيار يأخذ وسيطة منفصلة ، فيجب عليك استخدام -Xlinker
مرتين ، مرة للخيار ومرة ​​للحجة. على سبيل المثال ، لتمرير -يجزم
التعاريف، يجب أن تكتب -Xlinker -يجزم -Xlinker التعاريف. انه لا يعمل
لكتابة -Xlinker "-يجزم تعريفات"، لأن هذا يمرر السلسلة بأكملها كملف
حجة واحدة ، وهو ما لا يتوقعه الرابط.

عند استخدام رابط GNU ، يكون عادةً أكثر ملاءمة لتمرير الوسائط إلى الرابط
الخيارات باستخدام خيار=القيمة بناء الجملة من الحجج المنفصلة. علي سبيل المثال انت
يمكن أن تحدد -Xlinker -خريطة = خريطة الإخراج بدلا من -Xlinker -خريطة -Xlinker الإخراج.
قد لا تدعم الروابط الأخرى بناء الجملة هذا لخيارات سطر الأوامر.

-Wl ،خيار
تجاوز خيار كخيار للرابط. لو خيار يحتوي على فواصل ، يتم تقسيمه إلى
خيارات متعددة في الفواصل. يمكنك استخدام بناء الجملة هذا لتمرير وسيطة إلى ملف
اختيار. على سبيل المثال، -Wl ، -خريطة ، الإخراج يمر -خريطة الإخراج للرابط. متي
باستخدام رابط جنو ، يمكنك أيضًا الحصول على نفس التأثير مع -Wl، -Map = output.map.

ملاحظة: في Ubuntu 8.10 والإصدارات الأحدث ، لـ LDFLAGS ، الخيار -Wl، -z، relro .
للتعطيل ، استخدم -Wl، -z، norelro.

-u رمز
تظاهر بالرمز رمز غير محدد ، لفرض ربط وحدات المكتبة لتعريفها
هو - هي. يمكنك استخدام -u عدة مرات مع رموز مختلفة لفرض تحميل
وحدات مكتبة إضافية.

-z الكلمة
-z يتم تمريرها مباشرة إلى الرابط مع الكلمة الرئيسية الكلمة. انظر القسم
في توثيق الرابط الخاص بك عن القيم المسموح بها ومعانيها.

الخيارات لل دليل بحث
تحدد هذه الخيارات أدلة للبحث عن ملفات الرأس والمكتبات والأجزاء
من المترجم:

-Iدير
أضف الدليل دير إلى رأس قائمة الدلائل المراد البحث عنها في العنوان
الملفات. يمكن استخدام هذا لتجاوز ملف رأس النظام ، واستبدال الملف الخاص بك
الإصدار ، حيث يتم البحث في هذه الدلائل قبل ملف رأس النظام
الدلائل. ومع ذلك ، لا يجب استخدام هذا الخيار لإضافة الدلائل التي تحتوي على
ملفات رأس النظام التي يوفرها البائع (استخدام -نظام من أجل هذا). إذا كنت تستخدم أكثر من واحد
-I الخيار ، يتم فحص الدلائل بالترتيب من اليسار إلى اليمين ؛ النظام القياسي
الدلائل تأتي بعد.

إذا كان النظام القياسي يتضمن دليلًا ، أو دليلًا محددًا بـ -نظام، هل
المحدد أيضًا بـ -Iأطلقت حملة -I يتم تجاهل الخيار. الدليل لا يزال قيد البحث ولكن
كدليل نظام في موقعه الطبيعي في النظام يتضمن سلسلة. هذا هو ل
تأكد من أن إجراءات دول مجلس التعاون الخليجي لإصلاح رؤوس نظام عربات التي تجرها الدواب وطلب
لم يتم تغيير التوجيه "include_next" بدون قصد. إذا كنت حقا بحاجة للتغيير
ترتيب البحث عن دلائل النظام ، استخدم -نوستدينك و / أو -نظام خيارات.

-بلوجيندير =دير
اضبط الدليل للبحث عن المكونات الإضافية التي تم تمريرها من خلالها -فلوجين =الاسم بدلا من
-فلوجين =مسار/الاسم.وبالتالي. هذا الخيار ليس مخصصًا لاستخدامه من قبل المستخدم ، ولكن فقط
مرت من قبل السائق.

-انا اقتبسدير
أضف الدليل دير إلى رأس قائمة الدلائل المراد البحث عنها في العنوان
ملفات فقط لحالة "#include"ملف""؛ لا يتم البحث عن "# تضمين
<ملف> "، وإلا فقط مثل -I.

-Lدير
أضف الدليل دير إلى قائمة الدلائل التي سيتم البحث عنها -l.

-Bبادئة
يحدد هذا الخيار مكان العثور على الملفات التنفيذية والمكتبات وتضمين الملفات وملفات
ملفات البيانات للمترجم نفسه.

يقوم برنامج تشغيل المترجم بتشغيل واحد أو أكثر من البرامج الفرعية حزب الشعب الكمبودي, cc1, as و ld.
يحاول بادئة كبادئة لكل برنامج يحاول تشغيله ، سواء مع أو بدون
آلة/الإصدار/.

لكل برنامج فرعي ليتم تشغيله ، يحاول برنامج تشغيل المترجم أولاً -B البادئة ، إن وجدت.
إذا لم يتم العثور على هذا الاسم ، أو إذا -B لم يتم تحديد ، السائق يحاول معيارين
البادئات / usr / lib / gcc / و / usr / local / lib / gcc /. إذا لم ينتج عن أي من هذه النتائج أ
اسم الملف الذي تم العثور عليه ، يتم البحث عن اسم البرنامج غير المعدل باستخدام امتداد
الدلائل المحددة في الخاص بك PATH متغيرات البيئة.

يتحقق المترجم لمعرفة ما إذا كان المسار يوفره -B يشير إلى دليل ، وإذا كان
من الضروري إضافة حرف فاصل دليل في نهاية المسار.

-B البادئات التي تحدد أسماء الدلائل بشكل فعال تنطبق أيضًا على المكتبات في ملف
linker ، لأن المترجم يترجم هذه الخيارات إلى -L خيارات الرابط.
تنطبق أيضًا على تضمين الملفات في المعالج المسبق ، لأن المترجم يترجم
هذه الخيارات -نظام خيارات للمعالج. في هذه الحالة ، المترجم
يلحق تتضمن إلى البادئة.

ملف دعم وقت التشغيل libgcc.a يمكن أيضًا البحث عنها باستخدام ملف -B البادئة ، إذا
بحاجة. إذا لم يتم العثور عليها هناك ، تتم تجربة البادتين القياسيتين أعلاه ، وذاك
هو كل شيء. يتم ترك الملف خارج الارتباط إذا لم يتم العثور عليه بهذه الوسائل.

هناك طريقة أخرى لتحديد بادئة تشبه إلى حد كبير -B البادئة هي استخدام البيئة
متغير GCC_EXEC_PREFIX.

كوحل خاص ، إذا تم توفير المسار بواسطة -B is [دير /] stageN /، حيث N هو رقم
في النطاق من 0 إلى 9 ، ثم يتم استبداله بـ [دير /] تشمل. هذا للمساعدة في التمهيد-
ربط المترجم.

-النوع =ملف
المعالجة: ملف بعد أن يقرأ المترجم في المعيار المواصفات ملف ، من أجل تجاوز
الافتراضات التي دول مجلس التعاون الخليجي يستخدم برنامج السائق عند تحديد مفاتيح التبديل
إلى cc1, cc1plus, as, ld، إلخ. أكثر من واحد -النوع =ملف يمكن تحديدها في
سطر الأوامر ، وتتم معالجتها بالترتيب ، من اليسار إلى اليمين.

- sysroot =دير
استعمل دير كدليل جذر منطقي للعناوين والمكتبات. على سبيل المثال ، إذا كان ملف
يبحث المترجم عادةً عن رؤوس الملفات بتنسيق / البيرة / تتضمن والمكتبات في / البيرة / ليب، فإنه
بدلا من البحث دير / البيرة / تشمل و دير / البيرة / ليب.

إذا كنت تستخدم كل من هذا الخيار و -ايسروت الخيار ، ثم - الجذور خيار
ينطبق على المكتبات ، ولكن -ايسروت ينطبق الخيار على ملفات الرأس.

رابط جنو (بدءًا من الإصدار 2.16) لديه الدعم اللازم لذلك
اختيار. إذا كان الرابط الخاص بك لا يدعم هذا الخيار ، فإن جانب ملف الرأس الخاص بـ
- الجذور لا يزال يعمل ، لكن جانب المكتبة لا يعمل.

--لا sysroot- لاحقة
بالنسبة لبعض الأهداف ، يتم إضافة لاحقة إلى الدليل الجذر المحدد بـ - الجذور,
اعتمادًا على الخيارات الأخرى المستخدمة ، بحيث يمكن العثور على الرؤوس على سبيل المثال في
dir / لاحقة / usr / include بدلا من دير / البيرة / تشمل. هذا الخيار يعطل الإضافة
من هذه اللاحقة.

-أنا- تم إهمال هذا الخيار. يرجى استخدام -انا اقتبس بدلا من ذلك -I الدلائل من قبل
ال -أنا- وإزالة -أنا- اختيار. أي أدلة تحددها مع -I خيارات من قبل
ال -أنا- يتم البحث عن الخيار فقط في حالة "#include"ملف""؛ هم ليسوا
بحثت عن "# includeملف> ".

إذا تم تحديد أدلة إضافية مع -I خيارات بعد -أنا- الخيار ، هؤلاء
يتم البحث في الدلائل عن كافة توجيهات "#include". (عادة من جميع -I
يتم استخدام الدلائل بهذه الطريقة.)

بالإضافة إلى ذلك، -أنا- الخيار يمنع استخدام الدليل الحالي (حيث
جاء ملف الإدخال الحالي من) كأول دليل بحث عن "#include"ملف"".
لا توجد طريقة لتجاوز هذا التأثير -أنا-. مع من أنا. يمكنك تحديد البحث
الدليل الحالي عند استدعاء المترجم. هذا ليس بالضبط
نفس ما يفعله المعالج المسبق افتراضيًا ، ولكنه غالبًا ما يكون مرضيًا.

-أنا- لا يمنع استخدام دلائل النظام القياسية لملفات الرأس.
وهكذا، -أنا- و -نوستدينك مستقلة.

تحديد الهدف تشمل و مترجم الإصدار
الطريقة المعتادة لتشغيل GCC هي تشغيل الملف التنفيذي المسمى دول مجلس التعاون الخليجي، أو آلة-مجلس التعاون الخليجي عندما عبر-
تجميع أو آلة-مجلس التعاون الخليجي-الإصدار لتشغيل إصدار غير الإصدار الذي تم تثبيته
الاخير.

أجهزة التبخير عارضات ازياء و تكوينات
يمكن أن يكون لكل نوع من أنواع الآلات المستهدفة خياراته الخاصة ، بدءًا من -m، لإختيار
بين نماذج أو تكوينات الأجهزة المختلفة - على سبيل المثال ، 68010 مقابل 68020 ، عائم
معالج مساعد أو لا شيء. يمكن لنسخة واحدة مثبتة من المترجم أن تترجم لأي نموذج
أو التكوين ، وفقًا للخيارات المحددة.

تدعم بعض تكوينات المترجم أيضًا خيارات خاصة إضافية ، عادةً لـ
التوافق مع المجمعين الآخرين على نفس النظام الأساسي.

AArch64 الخيارات

تم تحديد هذه الخيارات لتطبيقات AArch64:

-مابي =الاسم
توليد رمز لنموذج البيانات المحدد. القيم المسموح بها هي ilp32 لـ SysV-
مثل نموذج البيانات حيث تكون int و long int والمؤشر 32 بت و lp64 لـ SysV-like
نموذج البيانات حيث يكون int 32 بت ، لكن int طويلة ومؤشر 64 بت.

يعتمد الإعداد الافتراضي على التكوين الهدف المحدد. لاحظ أن LP64 و
ILP32 ABIs غير متوافقة مع الارتباط ؛ يجب عليك تجميع البرنامج بأكمله بنفس الشيء
ABI ، وربطها بمجموعة متوافقة من المكتبات.

-mbig-endian
إنشاء رمز كبير Endian. هذا هو الإعداد الافتراضي عندما يتم تكوين GCC لـ
aarch64_be - * - * استهداف.

عام-regs-only
توليد التعليمات البرمجية التي تستخدم فقط السجلات العامة.

-ملل-endian
قم بتوليد كود صغير. هذا هو الإعداد الافتراضي عندما يتم تكوين GCC لـ
aarch64 - * - * ولكن ليس aarch64_be - * - * استهداف.

-mcmodel = صغير
قم بإنشاء رمز لنموذج الشفرة الصغير. البرنامج ورموزه المحددة بشكل ثابت
يجب أن تكون في حدود 1 غيغابايت من بعضها البعض. المؤشرات 64 بت. يمكن أن تكون البرامج ثابتة
أو مرتبطة ديناميكيًا. لم يتم تنفيذ هذا النموذج بالكامل ويتم التعامل معه في الغالب على أنه
صغير.

-mcmodel = صغير
إنشاء رمز لنموذج التعليمات البرمجية الصغيرة. البرنامج ومعرفته بشكل ثابت
يجب أن تكون الرموز في حدود 4 غيغابايت من بعضها البعض. المؤشرات 64 بت. يمكن أن تكون البرامج
مرتبطة بشكل ثابت أو ديناميكي. هذا هو نموذج الكود الافتراضي.

-mcmodel = كبير
توليد كود لنموذج الكود الكبير. هذا لا يجعل أي افتراضات حول العناوين و
أحجام الأقسام. المؤشرات 64 بت. يمكن ربط البرامج بشكل ثابت فقط.

-mstrict- محاذاة
لا تفترض أن النظام يعالج مراجع الذاكرة غير المحاذاة.

-موميت-أوراق-إطار-مؤشر
-رقم-حذف-أوراق-إطار-مؤشر
احذف أو احتفظ بمؤشر الإطار في وظائف الورقة. السلوك السابق هو
افتراضي.

-mtls- لهجة = تنازلي
استخدم واصفات TLS كآلية تخزين لمؤشر الترابط المحلي لعمليات الوصول الديناميكية لـ TLS
المتغيرات. هذا هو الافتراضي.

-mtls- اللهجة = التقليدية
استخدم TLS التقليدية كآلية تخزين خيطية محلية للوصول الديناميكي لـ TLS
المتغيرات.

-مفيكس قشرة- a53-835769
-منو-فيكس-القشرة-a53-835769
تمكين أو تعطيل الحل البديل لرقم الخطأ ARM Cortex-A53 835769. هذا
يتضمن إدخال تعليمات NOP بين تعليمات الذاكرة وعدد صحيح 64 بت
تعليمات الضرب والمراكم.

-مفيكس قشرة- a53-843419
-منو-فيكس-القشرة-a53-843419
تمكين أو تعطيل الحل البديل لرقم الخطأ ARM Cortex-A53 843419. هذا
يتم إجراء حل الخطأ الخطأ في وقت الارتباط وهذا سيؤدي فقط إلى تمرير الإشارة المقابلة
للرابط.

- مسيرة =الاسم
حدد اسم بنية الهدف ، مُلحقًا اختياريًا بواحد أو أكثر
معدِّلات الميزات. هذا الخيار له الشكل - مسيرة =قوس{+[لا]ميزة}*، أين ال
فقط القيمة المسموح بها ل قوس is armv8 أ. القيم المسموح بها ل ميزة هي
موثقة في القسم الفرعي أدناه.

عند تحديد معدِّلات الميزات المتعارضة ، يتم استخدام الميزة الموجودة في أقصى اليمين.

يستخدم GCC هذا الاسم لتحديد نوع التعليمات التي يمكنه إصدارها عند الإنشاء
كود التجميع.

أين -مارس محدد بدون أي من -mtune or - وحدة المعالجة المركزية كما يتم تحديدها ، فإن
تم ضبط الكود لأداء جيد عبر مجموعة من المعالجات المستهدفة التي تنفذ
الهدف العمارة.

-mtune =الاسم
حدد اسم المعالج الهدف الذي يجب أن يقوم GCC بضبط أداءه
الرمز. القيم المسموح بها لهذا الخيار هي: عام, القشرة- A53, القشرة- A57,
القشرة- A72, إكسينوس إم 1, الرعد, xgene1.

بالإضافة إلى ذلك ، يمكن أن يحدد هذا الخيار أنه يجب على GCC ضبط أداء الكود
لنظام LITTLE كبير. القيم المسموح بها لهذا الخيار هي:
القشرة A57.Cortex-A53, القشرة A72.Cortex-A53.

حيث لا يوجد من -mtune =, -mcpu = or - مسيرة = تم تحديد الرمز ، يتم ضبطه لأداء
بشكل جيد عبر مجموعة من المعالجات المستهدفة.

لا يمكن إلحاق هذا الخيار بمعدلات الميزات.

-mcpu =الاسم
حدد اسم المعالج الهدف ، مُلحقًا اختياريًا بميزة واحدة أو أكثر
الصفات التعريفية. هذا الخيار له الشكل -mcpu =وحدة المعالجة المركزية{+[لا]ميزة} * حيث جاز ذلك
قيم وحدة المعالجة المركزية هي نفس تلك المتوفرة لـ -mtune.

القيم المسموح بها ل ميزة موثقة في القسم الفرعي أدناه.

عند تحديد معدِّلات الميزات المتعارضة ، يتم استخدام الميزة الموجودة في أقصى اليمين.

يستخدم GCC هذا الاسم لتحديد نوع التعليمات التي يمكنه إصدارها عند الإنشاء
كود التجميع (كما لو كان بواسطة -مارس) ولتحديد المعالج المستهدف
لحن للأداء (كما لو كان -mtune). حيث يتم استخدام هذا الخيار بالاشتراك مع
-مارس or -mtune، فهذه الخيارات لها الأسبقية على الجزء المناسب من هذا
الخيار.

-مارس و - وحدة المعالجة المركزية معدِّلات الميزات

تستخدم معدِّلات الميزات مع -مارس و - وحدة المعالجة المركزية يمكن أن يكون أحد ما يلي:

اتفاقية حقوق الطفل تفعيل تمديد CRC.

التشفير
تمكين امتداد التشفير. هذا يعني أن SIMD المتقدمة ممكّنة.

fp تفعيل تعليمات النقطة العائمة.

سيمد
تفعيل تعليمات SIMD المتقدمة. هذا يعني أن تعليمات الفاصلة العائمة هي
ممكن. هذا هو الإعداد الافتراضي لجميع القيم الحالية الممكنة للخيارات -مارس و
-mcpu =.

Adapteva عيد الغطاس الخيارات

تشبه -m تم تحديد خيارات Adapteva Epiphany:

-نصف- ريج- ملف
لا تخصص أي سجل في النطاق "r32" ... "r63". يسمح بتشغيل التعليمات البرمجية
متغيرات الأجهزة التي تفتقر إلى هذه السجلات.

-مبرفر-قصير-insn-regs
يفضل تخصيص السجلات التي تسمح بإنشاء تعليمات قصيرة. هذا يمكن
يؤدي إلى زيادة عدد التعليمات ، لذلك قد يقلل هذا أو يزيد بشكل عام
حجم الكود.

- تكلفة الامتياز =NUM
اضبط تكلفة الفروع على تقريبًا NUM تعليمات "بسيطة". هذه التكلفة ليست سوى
إرشادي وليس مضمونًا لتحقيق نتائج متسقة عبر الإصدارات.

-Mcmove
تمكين توليد الحركات الشرطية.

-منوبس =NUM
ينبعث NUM NOPs قبل كل تعليمات أخرى تم إنشاؤها.

-mno- لينة- cmpsf
لمقارنات الفاصلة العائمة أحادية الدقة ، أرسل تعليمات واختبار "fsub"
الأعلام. هذا أسرع من مقارنة البرامج ، ولكن يمكن أن يحصل على نتائج غير صحيحة
في وجود NaNs ، أو عند مقارنة رقمين صغيرين مختلفين بهذا الشكل
يتم احتساب فرقهم على أنه صفر. الافتراضي هو -msoft- cmpsf، والذي يستخدم
أبطأ ، ولكن مقارنات البرامج المتوافقة مع IEEE.

-mstack-offset =NUM
عيّن الإزاحة بين أعلى المكدس ومؤشر المكدس. على سبيل المثال ، القيمة 8
يعني أنه يمكن استخدام الثمانية بايت في النطاق "sp + 0 ... sp + 7" بواسطة دوال الطرفية
بدون تخصيص مكدس. قيم بخلاف 8 or 16 لم يتم اختبارها ومن غير المرجح أن يتم اختبارها
الشغل. لاحظ أيضًا أن هذا الخيار يغير ABI ؛ تجميع برنامج بامتداد
لم يتم تجميع إزاحة المكدس المختلفة عن المكتبات التي تم تجميعها باستخدامها بشكل عام
الشغل. يمكن أن يكون هذا الخيار مفيدًا إذا كنت تريد تقييم ما إذا كانت إزاحة مكدس مختلفة
قد يمنحك رمزًا أفضل ، ولكن في الواقع لاستخدام إزاحة مكدس مختلفة للبناء
في برامج العمل ، يوصى بتكوين سلسلة الأدوات باستخدام ملف
- مع-المكدس-الإزاحة =NUM الخيار.

-منو-الجولة-الأقرب
اجعل المجدول يفترض أن وضع التقريب قد تم ضبطه على القطع. ال
الافتراضي هو -طائرة-أقرب.

- مكالمات طويلة
إذا لم يتم تحديد خلاف ذلك بواسطة إحدى السمات ، افترض أن جميع المكالمات قد تكون خارج نطاق
نطاق الإزاحة لتعليمات "b" / "bl" ، وبالتالي قم بتحميل عنوان الوظيفة
في سجل قبل إجراء مكالمة (بخلاف ذلك مباشرة). هذا هو الافتراضي.

- مكالمات قصيرة
إذا لم يتم تحديد خلاف ذلك بواسطة إحدى السمات ، افترض أن جميع المكالمات المباشرة تقع في النطاق
من تعليمات "b" / "bl" ، لذا استخدم هذه التعليمات للمكالمات المباشرة. ال
الافتراضي هو - مكالمات طويلة.

- صغير 16
افترض أنه يمكن تحميل العناوين كقيم غير موقعة ذات 16 بت. هذا لا ينطبق على
عناوين الوظائف التي - مكالمات طويلة الدلالات سارية المفعول.

-mfp- الوضع =طريقة
اضبط الوضع السائد لوحدة النقطة العائمة. هذا يحدد العائمة-
وضع النقطة الذي يتم توفيره والمتوقع عند استدعاء الوظيفة ووقت العودة. تحضير
هذا الوضع يتطابق مع الوضع الذي تحتاجه في الغالب عند بدء الوظيفة يمكن أن يجعلك
برامج أصغر وأسرع عن طريق تجنب مفاتيح الوضع غير الضرورية.

طريقة يمكن ضبطها على إحدى القيم التالية:

المتصل
أي وضع في إدخال الوظيفة صالح ، ويتم الاحتفاظ بها أو استعادتها عند الوظيفة
يعود ، وعندما يستدعي وظائف أخرى. هذا الوضع مفيد للترجمة
مكتبات أو وحدات تجميع أخرى قد ترغب في دمجها في ملفات
برامج ذات أوضاع FPU سائدة مختلفة ، وراحة القدرة على ذلك
استخدام ملف كائن واحد يفوق حجم وسرعة الحمل لأي وضع إضافي
التبديل التي قد تكون مطلوبة ، مقارنة بما هو مطلوب مع المزيد
اختيار محدد لوضع FPU السائد.

بتر
هذا هو الوضع المستخدم في حسابات الفاصلة العائمة مع الاقتطاع (على سبيل المثال ، دائري
نحو الصفر) وضع التقريب. يتضمن التحويل من النقطة العائمة إلى
عدد صحيح.

جولة أقرب
هذا هو الوضع المستخدم لحسابات الفاصلة العائمة مع تقريب لأقرب أو-
حتى وضع التقريب.

مادبا هذا هو الوضع المستخدم لإجراء حسابات الأعداد الصحيحة في FPU ، على سبيل المثال عدد صحيح
تتكاثر أو تتضاعف وتتراكم الأعداد الصحيحة.

الافتراضي هو -mfp- الوضع = المتصل

-منوسبليت- لوهي
-منو بوستينك
-لا تعديل لاحق
تعديلات إنشاء الكود التي تعطل ، على التوالي ، تقسيم أحمال 32 بت ،
إنشاء عناوين ما بعد الزيادة وإنشاء عناوين ما بعد التعديل. ال
الافتراضات msplit-lohi, -موقع- المؤتمر الوطني العراقيو -تعديل-الشباك.

-منوفكت- مزدوج
قم بتغيير وضع SIMD المفضل إلى SImode. الافتراضي هو -مفيكت- مزدوج، والذي يستخدم
DImode كوضع SIMD المفضل.

ماكس- vect- محاذاة =NUM
أقصى محاذاة لأنواع وضع متجه SIMD. NUM قد يكون 4 أو 8. الافتراضي هو
8. لاحظ أن هذا تغيير ABI ، على الرغم من وجود العديد من واجهات وظائف المكتبة
غير متأثر إذا لم يستخدموا أوضاع متجه SIMD في الأماكن التي تؤثر على الحجم و / أو
محاذاة الأنواع ذات الصلة.

-mplit-vecmove-early
ينتقل ناقل الانقسام إلى تحركات كلمة واحدة قبل إعادة التحميل. من الناحية النظرية يمكن أن يعطي هذا
تخصيص سجل أفضل ، ولكن حتى الآن يبدو أن العكس هو الحال بشكل عام.

-m1reg-ريج
حدد سجلاً للاحتفاظ بالثابت -1 ، مما يجعل التحميل صغيرًا سلبيًا
الثوابت وبعض أقنعة البت بشكل أسرع. القيم المسموح بها لـ ريج هي r43 و r63,
التي تحدد استخدام هذا السجل كسجل ثابت ، و لا شيء، مما يعني أن لا
يستخدم السجل لهذا الغرض. الافتراضي هو -m1reg- لا شيء.

ARC الخيارات

تتحكم الخيارات التالية في متغير البنية التي يتم تجميع التعليمات البرمجية من أجلها:

-برميل-شيفتر
توليد التعليمات بدعم من برميل شيفتر. هذا هو الافتراضي ما لم
-mcpu = ARC601 ساري المفعول.

-mcpu =وحدة المعالجة المركزية
قم بتعيين نوع البنية ، وتسجيل الاستخدام ، ومعلمات جدولة التعليمات لـ وحدة المعالجة المركزية.
تتوفر أيضًا خيارات الاسم المستعار المختصر للتوافق مع الإصدارات السابقة وملفات
السهولة أو الراحة. القيم المدعومة لـ وحدة المعالجة المركزية هي

ARC600
تجميع ل ARC600. اسماء مستعارة: -mA6, مارك 600.

ARC601
تجميع لـ ARC601. الاسم المستعار: مارك 601.

ARC700
تجميع ل ARC700. اسماء مستعارة: -mA7, مارك 700. هذا هو الإعداد الافتراضي عند تكوينه
مع - مع وحدة المعالجة المركزية = arc700.

-mdpfp
-mdpfp- المضغوط
FPX: قم بإنشاء تعليمات Double Precision FPX ، مضبوطة للتنفيذ المضغوط.

-mdpfp- سريع
FPX: قم بإنشاء تعليمات Double Precision FPX ، مضبوطة للتنفيذ السريع.

-mno-dpfp-lrsr
قم بتعطيل تعليمات LR و SR من استخدام سجلات Aux بامتداد FPX.

-مي
إنشاء تعليمات حسابية موسعة. حاليًا فقط "divaw" ، "يضيف" ، "subs" ،
ويتم دعم "sat16". يتم تمكين هذا دائمًا لـ -mcpu = ARC700.

-منو- mpy
لا تقم بإنشاء تعليمات mpy لـ ARC700.

-ممول
توليد 32x16 بت تعليمات الضرب وماك.

-ممول 64
إنشاء تعليمات mul64 و mulu64. صالح فقط لـ -mcpu = ARC600.

-غير طبيعي
توليد تعليمات القاعدة. هذا هو الافتراضي إذا -mcpu = ARC700 ساري المفعول.

-mspfp
-mspfp- المضغوط
FPX: قم بإنشاء تعليمات FPX أحادية الدقة ، مضبوطة للتنفيذ المضغوط.

-mspfp- سريع
FPX: قم بإنشاء تعليمات FPX أحادية الدقة ، تم ضبطها للتنفيذ السريع.

-مسمد
قم بتمكين إنشاء تعليمات ARC SIMD عبر مدمجة خاصة بالهدف. صالحة فقط
لل -mcpu = ARC700.

-مسنة- تعويم
تم تجاهل هذا الخيار ؛ تم توفيره لأغراض التوافق فقط. برمجة
يتم إصدار رمز النقطة العائمة افتراضيًا ، ويمكن تجاوز هذا الإعداد الافتراضي بواسطة FPX
خيارات؛ mspfp, mspfp- المضغوط، أو سريع mspfp لدقة واحدة ، و mdpfp, mdpfp-
اتفاق، أو mdpfp سريع لدقة مضاعفة.

-mswap
إنشاء تعليمات المبادلة.

يتم تمرير الخيارات التالية إلى المجمع ، وكذلك تحديد المعالج المسبق
رموز الماكرو.

-mdsp-packa
تم تمريره إلى المجمّع لتمكين امتدادات DSP Pack A. يعيّن أيضًا ملف
رمز المعالج المسبق "__Xdsp_packa".

-مدفبف
تم تمريره إلى المجمع لتمكين تمديد فراشة viterbi المزدوجة. أيضا
يحدد رمز المعالج المسبق "__Xdvbf".

-لوك
تم تمريره إلى المجمّع لتمكين الامتداد الشرطي للحمل / التخزين المؤمّن.
يعيّن أيضًا رمز المعالج المسبق "__Xlock".

-mmac-d16
مرت إلى المجمع. يعيّن أيضًا رمز المعالج المسبق "__Xxmac_d16".

-مماك -24
مرت إلى المجمع. يعيّن أيضًا رمز المعالج المسبق "__Xxmac_24".

-Mrtsc
تم تمريره إلى المجمّع لتمكين تمديد عداد الطوابع الزمنية 64 بت
تعليمات. يعيّن أيضًا رمز المعالج المسبق "__Xrtsc".

-مسواب
تم تمريره إلى المجمّع لتمكين تعليمات التمديد لطلب تبديل البايت.
يعيّن أيضًا رمز المعالج المسبق "__Xswape".

-الهاتف
تم تمريره إلى المجمّع لتمكين تعليمات المعامل المزدوج والمفرد لـ
المهاتفة. يعيّن أيضًا رمز المعالج المسبق "__تليفوني".

-مكسي
تم تمريره إلى المجمّع لتمكين امتداد ذاكرة XY. يعيّن أيضًا ملف
رمز المعالج المسبق "__Xxy".

تتحكم الخيارات التالية في كيفية شرح كود التجميع:

-حجم
علق تعليمات المجمع بالعناوين المقدرة.

-منومة-محاذاة
اشرح ما هي اعتبارات المحاذاة التي تؤدي إلى قرار إصدار التعليمات
قصير أو طويل.

يتم تمرير الخيارات التالية إلى الرابط:

-مارلينكس
مرت إلى الرابط ، لتحديد استخدام مضاهاة "arclinux". هذا الخيار
يتم تمكينه افتراضيًا في سلاسل الأدوات المصممة لـ "arc-linux-uclibc" و
أهداف "arceb-linux-uclibc" عندما لا يتم طلب التنميط.

- marclinux_prof
مرت إلى الرابط ، لتحديد استخدام محاكاة "arclinux_prof". هذه
يتم تمكين الخيار افتراضيًا في سلاسل الأدوات المصممة لـ "arc-linux-uclibc" و
أهداف "arceb-linux-uclibc" عند طلب التنميط.

تتحكم الخيارات التالية في دلالات الكود المُنشأ:

-مبيلوغ- cfi
قم بتمكين إنشاء معلومات إطار الاتصال للخاتمات.

-الرقم-الخاتمة- cfi
قم بتعطيل إنشاء معلومات إطار الاتصال للخاتمات.

- مكالمات طويلة
توليد إدخالات المكالمات كتسجيل المكالمات غير المباشرة ، وبالتالي توفير الوصول إلى كامل
نطاق عناوين 32 بت.

-المكالمات-المتوسطة
لا تستخدم نطاق عنونة أقل من 25 بت للمكالمات ، وهو الإزاحة المتاحة
للحصول على تعليمات فرع ورابط غير مشروط. التنفيذ المشروط للوظيفة
يتم منع المكالمات للسماح باستخدام نطاق 25 بت بدلاً من نطاق 21 بت
بفرع ورابط مشروط. هذا هو الإعداد الافتراضي لسلاسل الأدوات المصممة من أجل
أهداف "arc-linux-uclibc" و "arceb-linux-uclibc".

-منو- sdata
لا تقم بإنشاء مراجع sdata. هذا هو الإعداد الافتراضي لسلاسل الأدوات المصممة من أجل
أهداف "arc-linux-uclibc" و "arceb-linux-uclibc".

-Mucb-mcount
أداة مع مكالمات mcount كما هو مستخدم في كود UCB. أي أن العد في المستدعي ،
ليس المتصل. بشكل افتراضي ، يتم حساب أجهزة ARC في المتصل.

-متطاير- مخبأ
استخدم عادةً عمليات الوصول إلى الذاكرة المخزنة مؤقتًا للمراجع المتغيرة. هذا هو الافتراضي.

-منو- متقلبة- مخبأ
تمكين تجاوز ذاكرة التخزين المؤقت للمراجع المتغيرة.

الخيارات التالية صقل إنشاء التعليمات البرمجية:

-معاينة-النداء
قم بتحسينات المحاذاة لتعليمات الاتصال.

تعديل تلقائي ريج
تفعيل استخدام التعديل المسبق / اللاحق مع إزاحة السجل.

-مبيت-ثقب الباب
تفعيل bbit peephole2.

-منو- brcc
يقوم هذا الخيار بتعطيل تصريح دخول خاص بالهدف arc_reorg لإنشاء "BRcc"
تعليمات. ليس له أي تأثير على توليد "BRcc" المدفوع بتمريرة التجميع.

-حقيبة- ناقل- pcrel
استخدم جداول حالة التبديل النسبية للكمبيوتر - وهذا يتيح تقصير جدول الحالة. هذا ال
الافتراضي ل -أوس.

-حالات مضغوطة
تفعيل نمط الحالات المدمجة. هذا هو الإعداد الافتراضي لـ -أوس.

-منو كوند-إكسيك
قم بتعطيل تمرير ARCompact المعين لإنشاء تعليمات التنفيذ الشرطي. بسبب
لتأخير جدولة الفتحات والتفاعلات بين أرقام المعامل والأحجام الحرفية ،
أطوال التعليمات ، ودعم التنفيذ المشروط ، الهدف المستقل
تمرير لإنشاء تنفيذ مشروط غالبًا ما يكون غير موجود ، لذلك احتفظ منفذ ARC بامتداد
تمرير خاص يحاول العثور على المزيد من إنشاء التنفيذ المشروط
الفرص بعد تخصيص التسجيل وتقصير الفروع وجدولة فترات التأخير
تم القيام به. يعمل هذا التمرير بشكل عام ، ولكن ليس دائمًا ، على تحسين الأداء والرمز
الحجم ، على حساب وقت الترجمة الإضافي ، وهذا هو سبب وجود خيار للتبديل
من ذلك. إذا كانت لديك مشكلة في تعليمات الاتصال التي تتجاوز الإزاحة المسموح بها
النطاق لأنها مشروطة ، يجب أن تفكر في استخدام -المكالمات-المتوسطة
بدلا من ذلك.

-مبكرا- cbranchsi
تفعيل استخدام إعادة التحميل المسبق لنمط cbranchsi.

- توسيع - adddi
قم بتوسيع "adddi3" و "subdi3" في وقت إنشاء rtl إلى "add.f" و "adc" وما إلى ذلك.

الأحمال المفكرة
تمكين استخدام الأحمال المفهرسة. يمكن أن يكون هذا مشكلة لأن بعض المحسّنين بعد ذلك
افترض أن المتاجر المفهرسة موجودة ، وهذا ليس هو الحال.

-ملرا
تمكين تخصيص السجل المحلي. هذا لا يزال تجريبيًا لـ ARC ، لذلك بشكل افتراضي
يستخدم المترجم إعادة التحميل القياسي (أي -منو-لرا).

-mlra- الأولوية- بلا
لا تشر إلى أي أولوية لسجلات الهدف.

-ملرا- الأولوية- المضغوط
حدد أولوية تسجيل الهدف لـ r0..r3 / r12..r15.

-ملرا-أولوية-غير مضغوط
تقليل أولوية مسجل الهدف لـ r0..r3 / r12..r15.

-mno- ملي كود
عند التحسين من أجل الحجم (باستخدام -أوس) ، المقدمات والخاتمات التي يجب أن تحفظ أو
استعادة عدد كبير من السجلات غالبًا ما يتم تقصيرها باستخدام استدعاء خاص
وظيفة في libgcc ؛ يشار إلى هذا باسم أ مللي مكالمة. لأن هذه المكالمات يمكن أن تطرح
مشاكل في الأداء و / أو تسبب مشاكل في الربط عند الربط بطريقة غير قياسية ،
يتم توفير هذا الخيار لإيقاف تشغيل توليد المكالمات بالمللي كود.

رمز مختلط
قرص تخصيص التسجيل للمساعدة في إنشاء تعليمات 16 بت. هذا بشكل عام
تأثير تقليل متوسط ​​حجم التعليمات مع زيادة التعليمات
العد.

فئة-mq
تمكين بدائل التعليمات "q". هذا هو الإعداد الافتراضي لـ -أوس.

-مركق
تمكين معالجة قيد Rcq - يعتمد معظم إنشاء التعليمات البرمجية القصيرة على هذا. هذا هو
الافتراضي.

-mRcw
تمكين معالجة قيود Rcw - يعتمد ccfsm condexec في الغالب على هذا. هذا ال
افتراضي.

-مستوى الحجم =مستوى
ضبط الحجم الأمثل فيما يتعلق بأطوال التعليمات والمحاذاة. ال
القيم المعترف بها ل مستوى هي:

0 لا يوجد تحسين للحجم. يتم إهمال هذا المستوى ومعاملته مثل 1.

1 يتم استخدام التعليمات القصيرة بشكل انتهازي.

2 بالإضافة إلى ذلك ، يتم إسقاط محاذاة الحلقات والتعليمات البرمجية بعد الحواجز.

3 بالإضافة إلى ذلك ، يتم إسقاط محاذاة البيانات الاختيارية والخيار Os .

هذا افتراضيات إلى 3 متى -أوس ساري المفعول. خلاف ذلك ، فإن السلوك عندما لا يكون كذلك
مجموعة تعادل المستوى 1.

-mtune =وحدة المعالجة المركزية
تعيين معلمات جدولة التعليمات لـ وحدة المعالجة المركزية، لتجاوز أي ضمني بواسطة -mcpu =.

القيم المدعومة لـ وحدة المعالجة المركزية هي

ARC600
ضبط وحدة المعالجة المركزية ARC600.

ARC601
ضبط وحدة المعالجة المركزية ARC601.

ARC700
ضبط وحدة المعالجة المركزية ARC700 مع كتلة المضاعف القياسية.

ARC700-xmac
قم بضبط وحدة المعالجة المركزية ARC700 مع كتلة XMAC.

ARC725D
لحن وحدة المعالجة المركزية ARC725D.

ARC750D
لحن وحدة المعالجة المركزية ARC750D.

-mmultcost =NUM
تكلفة تحمل تعليمات مضاعفة بـ 4 أن تكون مساوية لتعليمات عادية.

-munalign-prob-threshold =الاحتمالات
قم بتعيين حد الاحتمال لعدم محاذاة الفروع. عند ضبط ملفات ARC700 و
لتحسين السرعة ، يفضل أن تنبعث الفروع بدون فتحة تأخير مملوءة
غير محاذاة وطويلة ، ما لم يشير التنميط إلى أن احتمالية حدوث الفرع
يؤخذ أدناه الاحتمالات. الافتراضي هو (REG_BR_PROB_BASE / 2) ، أي 5000.

يتم الاحتفاظ بالخيارات التالية من أجل التوافق مع الإصدارات السابقة ، ولكن تم إهمالها الآن
وستتم إزالته في إصدار مستقبلي:

-رائد
عفا عليها الزمن FPX.

-mbig-endian
-EB تجميع التعليمات البرمجية لأهداف endian كبيرة. تم الآن إيقاف استخدام هذه الخيارات. المستخدمون
عند الرغبة في استخدام رمز كبير الحجم ، يجب استخدام أهداف "arceb-elf32" و "arceb-linux-uclibc"
عند إنشاء سلسلة الأدوات ، والتي يعتبر الطرف الكبير هو الافتراضي لها.

-ملل-endian
-EL تجميع التعليمات البرمجية لأهداف endian صغيرة. تم الآن إيقاف استخدام هذه الخيارات.
يجب على المستخدمين الذين يريدون رمزًا صغيرًا استخدام "arc-elf32" و "arc-linux-uclibc"
الأهداف عند إنشاء سلسلة الأدوات ، والتي يكون الطرف الصغير هو الافتراضي لها.

-mbarrel_shifter
وحل محله -برميل-شيفتر.

-mdpfp_compact
وحل محله -mdpfp- المضغوط.

-mdpfp_fast
وحل محله -mdpfp- سريع.

-mdsp_packa
وحل محله -mdsp-packa.

-ميا
وحل محله -مي.

-مماك_24
وحل محله -مماك -24.

-mmac_d16
وحل محله -mmac-d16.

-mspfp_compact
وحل محله -mspfp- المضغوط.

-mspfp_fast
وحل محله -mspfp- سريع.

-mtune =وحدة المعالجة المركزية
قيمنا arc600, arc601, arc700 و arc700-xmac لل وحدة المعالجة المركزية يتم استبدالها بـ ARC600, ARC601,
ARC700 و ARC700-xmac على التوالي

-Multcost =NUM
وحل محله -ممثل.

ARM الخيارات

تشبه -m يتم تحديد الخيارات لمنفذ ARM:

-مابي =الاسم
قم بإنشاء رمز لـ ABI المحدد. القيم المسموح بها هي: أبس- جنو, atpcs, aapcs,
aapcs لينكس و iwmmxt.

- خرائط - الإطار
قم بإنشاء إطار مكدس متوافق مع معيار استدعاء إجراء ARM للجميع
الوظائف ، حتى لو لم يكن ذلك ضروريًا تمامًا للتنفيذ الصحيح للكود.
تحديد - مؤشر الإطار مع هذا الخيار يؤدي إلى عدم وجود إطارات المكدس
ولدت لوظائف طرفية. الافتراضي هو -منو- apcs- الإطار. هذا الخيار هو
إهمال.

خرائط
هذا مرادف ل - خرائط - الإطار وهو مهمل.

- الإبهام - البيني
قم بإنشاء رمز يدعم الاتصال بين مجموعات تعليمات ARM و Thumb.
بدون هذا الخيار ، في بنيات ما قبل الإصدار 5 ، لا يمكن أن تكون مجموعتي التعليمات
يستخدم بشكل موثوق داخل برنامج واحد. الافتراضي هو -mno-الإبهام البيني، منذ ذلك الحين قليلا
يتم إنشاء رمز أكبر عندما - الإبهام - البيني محدد. في تكوينات AAPCS
هذا الخيار لا معنى له.

-منو-جدولة-برولوج
منع إعادة ترتيب التعليمات في مقدمة الوظيفة ، أو دمج
تلك التعليمات مع التعليمات الموجودة في جسم الوظيفة. هذا يعني أن كل شيء
تبدأ الوظائف بمجموعة من التعليمات التي يمكن التعرف عليها (أو في الواقع واحدة من الاختيار
من مجموعة صغيرة من المقدمات الوظيفية المختلفة) ، ويمكن استخدام هذه المعلومات ل
تحديد موقع بداية الوظائف داخل جزء قابل للتنفيذ من التعليمات البرمجية. الافتراضي هو
-مسيد-برولوج.

-mfloat-abi =الاسم
تحدد النقطة العائمة ABI المطلوب استخدامها. القيم المسموح بها هي: ناعم, softfp و
الصعب.

تحديد ناعم يتسبب في قيام دول مجلس التعاون الخليجي بإنشاء مخرجات تحتوي على استدعاءات مكتبة للتعويم-
عمليات النقطة. softfp يسمح بإنشاء رمز باستخدام الفاصلة العائمة للأجهزة
التعليمات ، ولكن لا يزال يستخدم اصطلاحات الاستدعاء ذات العوامة الناعمة. الصعب يسمح
إنشاء تعليمات الفاصلة العائمة واستخدام اصطلاحات استدعاء خاصة بـ FPU.

يعتمد الإعداد الافتراضي على التكوين الهدف المحدد. لاحظ أن أداة التعويم الثابت
وأنظمة ABI ذات الطفو الناعم غير متوافقة مع الارتباط ؛ يجب عليك تجميع برنامجك بالكامل باستخدام
نفس ABI ، وربطها بمجموعة متوافقة من المكتبات.

-ملل-endian
قم بإنشاء رمز لمعالج يعمل في الوضع الصغير. هذا هو الإعداد الافتراضي لـ
جميع التكوينات القياسية.

-mbig-endian
إنشاء رمز لمعالج يعمل في الوضع الكبير ؛ الافتراضي هو ترجمة
رمز لمعالج صغير.

- مسيرة =الاسم
هذا يحدد اسم بنية ARM الهدف. يستخدم GCC هذا الاسم لـ
تحديد نوع التعليمات التي يمكن أن تصدرها عند إنشاء كود التجميع. هذه
يمكن استخدام الخيار بالاقتران مع أو بدلاً من -mcpu = اختيار. مسموح
الأسماء هي: armv2, armv2a, armv3, armv3m, armv4, armv4t, armv5, armv5t, armv5e,
armv5te, armv6, armv6j, armv6t2, armv6z, armv6zk, armv6 م, armv7, armv7 أ, armv7-r,
armv7 م, armv7e- م, armv7ve, armv8 أ, armv8-a + crc, iwmmxt, iwmmxt2, ep9312.

-مارش = armv7ve هي بنية armv7-a مع امتدادات المحاكاة الافتراضية.

-مارش = armv8-a + crc تمكن من إنشاء رمز لمعمارية ARMv8-A مع
ملحقات CRC32 الاختيارية.

-مارش = أصلي يتسبب في قيام المترجم بالكشف التلقائي عن بنية المبنى
الحاسوب. في الوقت الحالي ، هذه الميزة مدعومة فقط في GNU / Linux ، وليس كلها
البنى المعترف بها. إذا لم ينجح الاكتشاف التلقائي ، فلن يكون هناك خيار
تأثير.

-mtune =الاسم
يحدد هذا الخيار اسم معالج ARM المستهدف الذي يجب أن يقوم GCC بضبطه
أداء الكود. بالنسبة لبعض تطبيقات ARM ، يمكن أن يكون الأداء الأفضل
تم الحصول عليها باستخدام هذا الخيار. الأسماء المسموح بها هي: arm2, arm250, arm3, arm6,
arm60, arm600, arm610, arm620, arm7, arm7m, arm7d, arm7dm, arm7di, arm7dmi, arm70,
arm700, arm700i, arm710, arm710c, arm7100, arm720, arm7500, arm7500fe, arm7tdmi,
arm7tdmi- ق, arm710t, arm720t, arm740t, ذراع قوي, سترونج ارم 110, سترونج ارم 1100,
سترونج ارم 1110, arm8, arm810, arm9, arm9e, arm920, arm920t, arm922t, arm946e-s,
arm966e-s, arm968e-s, arm926ej-s, arm940t, arm9tdmi, arm10tdmi, arm1020t, arm1026ej-s,
arm10e, arm1020e, arm1022e, arm1136j- ق, arm1136jf- ق, mpcore, مبكورينوفب, arm1156t2- ثانية,
arm1156t2f-s, arm1176jz- ق, arm1176jzf- ق, القشرة- A5, القشرة- A7, القشرة- A8, القشرة- A9,
القشرة- A12, القشرة- A15, القشرة- A53, القشرة- A57, القشرة- A72, القشرة- r4, القشرة- r4f,
القشرة- r5, القشرة- r7, قشرة-m7, قشرة-m4, قشرة-m3, قشرة-m1, قشرة-m0,
القشرة- m0plus, القشرة- m1. الصغيرة- تتكاثر, القشرة- m0. الصغيرة- تتكاثر,
القشرة- m0plus.small- مضاعفة, إكسينوس إم 1, مارفيل- pj4, xscale, iwmmxt, iwmmxt2, ep9312,
fa526, fa626, fa606te, fa626te, fmp626, fa726te, xgene1.

بالإضافة إلى ذلك ، يمكن أن يحدد هذا الخيار أنه يجب على GCC ضبط أداء الكود
لنظام LITTLE كبير. الأسماء المسموح بها هي: القشرة A15.Cortex-A7,
القشرة A57.Cortex-A53, القشرة A72.Cortex-A53.

-mtune = عام-قوس يحدد أن GCC يجب أن تضبط الأداء لمزيج من
معالجات داخل العمارة قوس. الهدف هو إنشاء رمز يعمل جيدًا على
المعالجات الحالية الأكثر شيوعًا ، والموازنة بين التحسينات التي تفيد البعض
وحدات المعالجة المركزية في النطاق ، وتجنب مخاطر أداء وحدات المعالجة المركزية الأخرى. آثار ال
قد يتغير هذا الخيار في الإصدارات المستقبلية لدول مجلس التعاون الخليجي حيث تأتي نماذج وحدة المعالجة المركزية وتذهب.

-mtune = أصلي يتسبب في قيام المترجم بالكشف التلقائي عن وحدة المعالجة المركزية لجهاز الكمبيوتر. في
حاليًا ، هذه الميزة مدعومة فقط في GNU / Linux ، وليست كل البنى
معروف. إذا لم ينجح الاكتشاف التلقائي ، فلن يكون للخيار أي تأثير.

-mcpu =الاسم
هذا يحدد اسم معالج ARM الهدف. يستخدم GCC هذا الاسم لاشتقاق
اسم بنية ARM المستهدفة (كما لو تم تحديدها بواسطة -مارس) ومعالج ARM
اكتب لضبط الأداء (كما لو تم تحديده بواسطة -mtune). أين هذا الخيار
يستخدم بالتزامن مع -مارس or -mtune، فهذه الخيارات لها الأسبقية على
الجزء المناسب من هذا الخيار.

الأسماء المسموح بها لهذا الخيار هي نفسها أسماء -mtune.

-mcpu = عام-قوس هو أيضا جائز ، ويعادل - مسيرة =قوس
-mtune = عام-قوس. شاهد -mtune ، وذلك لمعرفة المزيد من المعلومات.

-mcpu = أصلي يتسبب في قيام المترجم بالكشف التلقائي عن وحدة المعالجة المركزية لجهاز الكمبيوتر. في
حاليًا ، هذه الميزة مدعومة فقط في GNU / Linux ، وليست كل البنى
معروف. إذا لم ينجح الاكتشاف التلقائي ، فلن يكون للخيار أي تأثير.

-mfpu =الاسم
هذا يحدد ما هي أجهزة الفاصلة العائمة (أو مضاهاة الأجهزة) المتوفرة على
الهدف. الأسماء المسموح بها هي: vfp, vfpv3, vfpv3- fp16, vfpv3-d16, vfpv3- d16- fp16,
vfpv3xd, vfpv3xd- fp16, نيون, النيون fp16, vfpv4, vfpv4-d16, fpv4-sp-d16, النيون vfpv4,
fpv5-d16, fpv5-sp-d16, fp- armv8, النيون fp- armv8و التشفير النيون- fp- armv8.

If -مسنة- تعويم محدد هذا يحدد تنسيق قيم الفاصلة العائمة.

إذا كانت أجهزة النقطة العائمة المحددة تشتمل على امتداد NEON (على سبيل المثال -مفبو=نيون),
لاحظ أن عمليات الفاصلة العائمة لا يتم إنشاؤها بواسطة جواز التحويل التلقائي لدول مجلس التعاون الخليجي
ما لم -ممتعة-الرياضيات-التحسينات محدد أيضا. هذا لأن أجهزة NEON
لا يطبق بشكل كامل معيار IEEE 754 لحساب الفاصلة العائمة (بتنسيق
يتم التعامل مع قيم غير طبيعية معينة على أنها صفر) ، لذلك يمكن استخدام تعليمات NEON
يؤدي إلى فقدان الدقة.

-نسق mfp16 =الاسم
حدد تنسيق نوع الفاصلة العائمة نصف الدقة "__fp16". مسموح
الأسماء لا شيء, IEEEو البديل؛ الافتراضي هو لا شيء، في هذه الحالة "__fp16"
لم يتم تعريف النوع.

-حجم الهيكل =n
يتم تقريب أحجام جميع الهياكل والنقابات إلى مضاعف عدد
بت التي حددها هذا الخيار. القيم المسموح بها هي 8 و 32 و 64. القيمة الافتراضية
يختلف باختلاف سلاسل الأدوات. بالنسبة لسلسلة أدوات COFF المستهدفة ، تكون القيمة الافتراضية هي
8. يسمح بقيمة 64 فقط إذا كان ABI الأساسي يدعمها.

يمكن أن يؤدي تحديد عدد أكبر إلى إنتاج رمز أسرع وأكثر كفاءة ، ولكن يمكن أيضًا أن ينتج عنه
زيادة حجم البرنامج. من المحتمل أن تكون القيم المختلفة غير متوافقة.
لا يمكن أن تتوقع التعليمات البرمجية المجمعة بقيمة واحدة بالضرورة أن تعمل مع التعليمات البرمجية أو المكتبات
جمعت بقيمة أخرى ، إذا تبادلوا المعلومات باستخدام الهياكل أو النقابات.

مابورت أون نورترن
إنشاء استدعاء لوظيفة "إحباط" في نهاية وظيفة "نورترن". إنها
يتم تنفيذه إذا حاولت الوظيفة العودة.

- مكالمات طويلة
- مكالمات طويلة
يطلب من المترجم إجراء استدعاءات الوظائف عن طريق تحميل عنوان ملف
وظيفة في سجل ثم إجراء مكالمة روتين فرعي على هذا السجل. هذه
التبديل مطلوب إذا كانت الوظيفة الهدف تقع خارج عنونة 64 ميغا بايت
نطاق الإصدار القائم على الإزاحة لتعليمات الإجراء الفرعي.

حتى إذا تم تمكين رمز التبديل هذا ، فلن يتم تحويل جميع مكالمات الوظائف إلى مكالمات طويلة.
الاستدلال هو أن الوظائف الثابتة ، الوظائف التي لها "مكالمة قصيرة"
السمة ، الوظائف الموجودة داخل نطاق التوجيه "#pragma no_long_calls" ،
والوظائف التي تم بالفعل تجميع تعريفاتها ضمن التيار
لم يتم تحويل وحدة الترجمة إلى مكالمات طويلة. الاستثناءات لهذه القاعدة هي أن
تعريفات الوظائف الضعيفة ، الوظائف ذات السمة "long_call" أو "section"
، والوظائف التي تقع ضمن نطاق التوجيه "#pragma long_calls"
دائمًا إلى مكالمات طويلة.

لم يتم تمكين هذه الميزة بشكل افتراضي. التحديد - مكالمات طويلة يعيد
السلوك الافتراضي ، كما هو الحال مع وضع استدعاءات الوظائف في نطاق "#pragma
long_calls_off ". لاحظ أن هذه المفاتيح ليس لها أي تأثير على كيفية عمل المترجم
يولد رمزًا للتعامل مع استدعاءات الوظائف عبر مؤشرات الوظيفة.

-مفردة الموافقة المسبقة عن علم- قاعدة
تعامل مع السجل المستخدم لعنونة الموافقة المسبقة عن علم على أنه للقراءة فقط ، بدلاً من تحميله في ملف
مقدمة لكل وظيفة. نظام وقت التشغيل مسؤول عن تهيئة هذا
التسجيل بقيمة مناسبة قبل بدء التنفيذ.

تسجيل -mpic =ريج
حدد السجل الذي سيتم استخدامه لعنونة الموافقة المسبقة عن علم. بالنسبة للعلبة الأساسية القياسية للموافقة المسبقة عن علم ، فإن مسدس
الافتراضي هو أي سجل مناسب يحدده المترجم. لحالة قاعدة PIC واحدة ،
الافتراضي هو R9 إذا كان الهدف مستندًا إلى EABI أو تم تمكين فحص المكدس ، وإلا فسيتم تمكين
الافتراضي هو RX450.

- البيانات - الصور - نسبي
افترض أن كل شرائح بيانات مرتبطة بمقطع نصي في وقت التحميل. وبالتالي،
يسمح بمعالجة البيانات باستخدام العمليات النسبية للكمبيوتر الشخصي. هذا الخيار بشكل افتراضي
لأهداف أخرى غير VxWorks RTP.

-موقع-وظيفة-اسم
اكتب اسم كل وظيفة في قسم النص ، قبل الوظيفة مباشرة
مقدمة. الكود الذي تم إنشاؤه مشابه لهذا:

t0
.ascii "arm_poke_function_name"، 0
.align
t1
.word 0xff000000 + (t1 - t0)
arm_poke_function_name
وسائل التحقق الملكية الفكرية ، س
stmfd sp !، {fp، ip، lr، pc}
sub fp ، ip ، # 4

عند تنفيذ التتبع الخلفي للمكدس ، يمكن للتعليمة البرمجية فحص قيمة "الكمبيوتر" المخزنة في "fp +
0 ". إذا كانت وظيفة التتبع تبحث في الموقع" pc - 12 "وأعلى 8 بتات
تعيين ، ثم نعلم أن هناك اسم دالة مضمنًا يسبق ذلك مباشرة
الموقع وطوله "((pc [-3]) & 0xff000000)".

الإبهام
-الذرة
اختر بين إنشاء التعليمات البرمجية التي يتم تنفيذها في حالات ARM و Thumb. الافتراضي ل
معظم التكوينات هي إنشاء رمز يتم تنفيذه في حالة ARM ، ولكن الافتراضي
يمكن تغييرها عن طريق تكوين GCC مع - مع الوضع =حالة خيار التكوين.

-mtpcs- الإطار
قم بإنشاء إطار مكدس متوافق مع معيار استدعاء إجراء الإبهام لـ
جميع الوظائف غير ذات الأوراق. (الوظيفة الورقية هي وظيفة لا تستدعي أي وظيفة أخرى
وظائف.) الافتراضي هو -mno- tpcs- الإطار.

-mtpcs- ورقة الإطار
قم بإنشاء إطار مكدس متوافق مع معيار استدعاء إجراء الإبهام لـ
جميع وظائف الأوراق. (الوظيفة الطرفية هي وظيفة لا تستدعي أي وظائف أخرى.)
الافتراضي هو -mno-apcs- ورقة الإطار.

- العمل البيني الفائق
يعطي جميع الوظائف المرئية خارجيًا في الملف الجاري تجميعه تعليمة ARM
اضبط العنوان الذي يتحول إلى وضع الإبهام قبل تنفيذ باقي الوظيفة.
هذا يسمح باستدعاء هذه الوظائف من كود غير بيني. هذا الخيار هو
غير صالح في تكوينات AAPCS لأنه يتم تمكين التشغيل البيني افتراضيًا.

-mcaller-super-interworking
يسمح للمكالمات عبر مؤشرات الوظائف (بما في ذلك الوظائف الافتراضية) بالتنفيذ بشكل صحيح
بغض النظر عما إذا كان قد تم تجميع الكود الهدف للعمل البيني أم لا.
يوجد مقدار ضئيل من النفقات العامة في تكلفة تنفيذ مؤشر دالة إذا كان هذا الخيار
ممكّن. هذا الخيار غير صالح في تكوينات AAPCS لأن التشغيل البيني هو
ممكّن افتراضيًا.

-mtp =الاسم
حدد نموذج الوصول لمؤشر التخزين المحلي لمؤشر الترابط. النماذج الصالحة هي
ناعم، مما يؤدي إلى إنشاء مكالمات إلى "__aeabi_read_tp" ، cp15الذي يجلب الخيط
مؤشر من "cp15" مباشرة (مدعوم في هندسة arm6k) ، و السيارات، التي
يستخدم أفضل طريقة متاحة للمعالج المحدد. الإعداد الافتراضي هو
السيارات.

-mtls- اللهجة =لهجة
حدد اللهجة المراد استخدامها للوصول إلى التخزين المحلي للموضوع. اثنين لهجةق هي
أيد---النو ثيتل افريقي و غنو 2. النو ثيتل افريقي تحدد اللهجة مخطط جنو الأصلي لـ
دعم نماذج TLS الديناميكية المحلية والعالمية. ال غنو 2 اللهجة تختار جنو
مخطط واصف ، والذي يوفر أداء أفضل للمكتبات المشتركة. غنو
مخطط التوصيف متوافق مع المخطط الأصلي ، لكنه يتطلب جديدًا
المجمع والرابط ودعم المكتبة. النماذج الأولية والمحلية exec TLS هي
لا تتأثر بهذا الخيار ودائمًا استخدم المخطط الأصلي.

- نقل الكلمات
قم فقط بإنشاء عمليات نقل مطلقة على قيم بحجم الكلمة (مثل R_ARM_ABS32). هذا هو
يتم تمكينه افتراضيًا على الأهداف (uClinux ، SymbianOS) حيث يفرض مُحمل وقت التشغيل
هذا القيد ومتى -fpic or -fPIC محدد.

-مفيكس-القشرة- m3-ldrd
يمكن لبعض أنوية Cortex-M3 أن تتسبب في تلف البيانات عند استخدام تعليمات "ldrd"
يتم استخدام الوجهة المتداخلة والسجلات الأساسية. يتجنب هذا الخيار توليد ملفات
هذه التعليمات. يتم تمكين هذا الخيار افتراضيًا عندما -mcpu = القشرة- m3 is
محدد.

-موافق-الوصول
- الوصول غير المحاذي
لتمكين (أو تعطيل) قراءة وكتابة قيم 16 و 32 بت من العناوين
التي لم يتم محاذاة 16 أو 32 بت. افتراضيًا ، يتم تعطيل الوصول غير المحاذي للجميع
قبل ARMv6 وجميع بنيات ARMv6-M ، وتم تمكينها لجميع البنى الأخرى. لو
لم يتم تمكين الوصول غير المحاذاة ثم يتم الوصول إلى الكلمات الموجودة في هياكل البيانات المحزومة أ
بايت في وقت واحد.

تم تعيين سمة ARM "Tag_CPU_unaligned_access" في ملف الكائن الذي تم إنشاؤه إلى
إما صواب أو خطأ ، حسب ضبط هذا الخيار. إذا كان الوصول غير محاذي
تم تمكين ثم رمز المعالج المسبق "__ARM_FEATURE_UNALIGNED" يتم تعريفه أيضًا.

النيون مقابل 64 بت
تمكن من استخدام نيون للتعامل مع عمليات 64 بت عددية. تم تعطيل هذا افتراضيا
نظرًا لأن تكلفة نقل البيانات من السجلات الأساسية إلى نيون مرتفعة.

بيانات فلاش بطيئة
افترض أن تحميل البيانات من الفلاش أبطأ من جلب التعليمات. لذلك حرفي
تم تصغير الحمل لأداء أفضل. هذا الخيار مدعوم فقط عندما
تجميع ملف تعريف ARMv7 M وإيقاف تشغيله افتراضيًا.

-الصيغة الموحدة
افترض أن المجمع المضمن يستخدم بناء جملة ASM الموحد. الافتراضي هو حاليا معطلة
مما يعني تقسيم بناء الجملة. حاليًا هذا الخيار متاح فقط لـ Thumb1 و
ليس له تأثير على حالة ARM و Thumb2. ومع ذلك ، قد يتغير هذا في الإصدارات المستقبلية من
مجلس التعاون الخليجي. يجب اعتبار بناء الجملة المقسّم مهملًا.

مقيد عليه
يقيد إنشاء كتل تكنولوجيا المعلومات لتتوافق مع قواعد ARMv8. يمكن لكتل ​​تكنولوجيا المعلومات
تحتوي فقط على تعليمات 16 بت واحدة من مجموعة مختارة من التعليمات. هذه
يكون الخيار قيد التشغيل افتراضيًا في وضع الإبهام ARMv8.

-طباعة- ضبط المعلومات
اطبع معلومات ضبط وحدة المعالجة المركزية كتعليق في ملف المجمع. هذا هو الخيار المستخدم
فقط لاختبار الانحدار للمترجم وليس مخصصًا للاستخدام العادي في
تجميع التعليمات البرمجية. هذا الخيار معطل افتراضيا.

AVR الخيارات

يتم تحديد هذه الخيارات لتطبيقات AVR:

-mmcu =MCU
حدد بنيات مجموعة تعليمات Atmel AVR (ISA) أو نوع MCU.

الإعداد الافتراضي لهذا الخيار هو @ tie {}avr2.

يدعم مجلس التعاون الخليجي أجهزة AVR و ISAs التالية:

"avr2"
الأجهزة "الكلاسيكية" بسعة تصل إلى 8 @ تعادل {} كيلوبايت من ذاكرة البرنامج. MCUtie {} = "attiny22"،
"attiny26", "at90c8534", "at90s2313", "at90s2323", "at90s2333", "at90s2343",
"at90s4414", "at90s4433", "at90s4434", "at90s8515", "at90s8535".

"avr25"
الأجهزة "Classic" بسعة تصل إلى 8 @ تعادل {} كيلوبايت من ذاكرة البرنامج ومع "MOVW"
تعليمات. MCUtie {} = "ata5272"، "ata6616c"، "attiny13"، "attiny13a"،
"attiny2313" ، "attiny2313a" ، "attiny24" ، "attiny24a" ، "attiny25" ، "attiny261" ،
"attiny261a" ، "attiny43u" ، "attiny4313" ، "attiny44" ، "attiny44a" ، "attiny441" ،
"attiny45" ، "attiny461" ، "attiny461a" ، "attiny48" ، "attiny828" ، "attiny84" ،
"attiny84a" ، "attiny841" ، "attiny85" ، "attiny861" ، "attiny861a" ، "attiny87" ،
"attiny88" ، "at86rf401".

"avr3"
الأجهزة "Classic" بسعة 16 @ tie {} KiB حتى 64 @ tie {} كيلوبايت من ذاكرة البرنامج.
MCUtie {} = "at43usb355"، "at76c711".

"avr31"
الأجهزة "Classic" بسعة 128 @ tie {} كيلوبايت من ذاكرة البرنامج. MCUtie {} = "atmega103"،
"at43usb320".

"avr35"
الأجهزة "Classic" ذات 16 @ tie {} KiB حتى 64 @ tie {} KiB من ذاكرة البرنامج ومع
تعليمات "MOVW". MCUtie {} = "ata5505"، "ata6617c"، "ata664251"،
"atmega16u2" ، "atmega32u2" ، "atmega8u2" ، "attiny1634" ، "attiny167" ، "at90usb162" ،
"at90usb82".

"avr4"
أجهزة "محسّنة" تصل سعتها إلى 8 @ تعادل {} كيلوبايت من ذاكرة البرنامج. MCUtie {} = "ata6285"،
"ata6286" ، "ata6289" ، "ata6612c" ، "atmega48" ، "atmega48a" ، "atmega48p" ،
"atmega48pa" ، "atmega8" ، "atmega8a" ، "atmega8hva" ، "atmega8515" ، "atmega8535" ،
"atmega88" ، "atmega88a" ، "atmega88p" ، "atmega88pa" ، "at90pwm1" ، "at90pwm2" ،
"at90pwm2b", "at90pwm3", "at90pwm3b", "at90pwm81".

"avr5"
الأجهزة "المحسّنة" بسعة 16 @ tie {} KiB حتى 64 @ tie {} كيلوبايت من ذاكرة البرنامج.
MCUtie {} = "ata5702m322"، "ata5782"، "ata5790"، "ata5790n"، "ata5795"، "ata5831"،
"ata6613c" ، "ata6614q" ، "atmega16" ، "atmega16a" ، "atmega16hva" ، "atmega16hva2" ،
"atmega16hvb" ، "atmega16hvbrevb" ، "atmega16m1" ، "atmega16u4" ، "atmega161" ،
"atmega162" ، "atmega163" ، "atmega164a" ، "atmega164p" ، "atmega164pa" ، "atmega165" ،
"atmega165a" ، "atmega165p" ، "atmega165pa" ، "atmega168" ، "atmega168a" ،
"atmega168p" ، "atmega168pa" ، "atmega169" ، "atmega169a" ، "atmega169p" ،
"atmega169pa" ، "atmega32" ، "atmega32a" ، "atmega32c1" ، "atmega32hvb" ،
"atmega32hvbrevb" ، "atmega32m1" ، "atmega32u4" ، "atmega32u6" ، "atmega323" ،
"atmega324a" ، "atmega324p" ، "atmega324pa" ، "atmega325" ، "atmega325a" ،
"atmega325p" ، "atmega325pa" ، "atmega3250" ، "atmega3250a" ، "atmega3250p" ،
"atmega3250pa" ، "atmega328" ، "atmega328p" ، "atmega329" ، "atmega329a" ،
"atmega329p" ، "atmega329pa" ، "atmega3290" ، "atmega3290a" ، "atmega3290p" ،
"atmega3290pa" ، "atmega406" ، "atmega64" ، "atmega64a" ، "atmega64c1" ، "atmega64hve" ،
"atmega64hve2" ، "atmega64m1" ، "atmega64rfr2" ، "atmega640" ، "atmega644" ،
"atmega644a" ، "atmega644p" ، "atmega644pa" ، "atmega644rfr2" ، "atmega645" ،
"atmega645a" ، "atmega645p" ، "atmega6450" ، "atmega6450a" ، "atmega6450p" ،
"atmega649" ، "atmega649a" ، "atmega649p" ، "atmega6490" ، "atmega6490a" ،
"atmega6490p", "at90can32", "at90can64", "at90pwm161", "at90pwm216", "at90pwm316",
"at90scr100" ، "at90usb646" ، "at90usb647" ، "at94k" ، "m3000".

"avr51"
الأجهزة "المحسّنة" بسعة 128 @ tie {} كيلوبايت من ذاكرة البرنامج. MCUtie {} = "atmega128"،
"atmega128a" ، "atmega128rfa1" ، "atmega128rfr2" ، "atmega1280" ، "atmega1281" ،
"atmega1284" ، "atmega1284p" ، "atmega1284rfr2" ، "at90can128" ، "at90usb1286" ،
"at90usb1287".

"avr6"
الأجهزة "المحسّنة" التي تحتوي على كمبيوتر ثلاثي البايت ، أي بأكثر من 3 @ تعادل {} كيلوبايت من البرنامج
ذاكرة. MCUtie {} = "atmega256rfr2"، "atmega2560"، "atmega2561"، "atmega2564rfr2".

"avrxmega2"
أجهزة "XMEGA" مع أكثر من 8 @ tie {} KiB وما يصل إلى 64 @ tie {} KiB من ذاكرة البرنامج.
MCUtie {} = "atxmega16a4"، "atxmega16a4u"، "atxmega16c4"، "atxmega16d4"،
"atxmega16e5", "atxmega32a4", "atxmega32a4u", "atxmega32c3", "atxmega32c4",
"atxmega32d3", "atxmega32d4", "atxmega32e5", "atxmega8e5".

"avrxmega4"
أجهزة "XMEGA" التي يزيد وزنها عن 64 كيلوبايت {} كيلوبايت وما يصل إلى 128 @ تعادل {} كيلوبايت من البرنامج
ذاكرة. MCUtie {} = "atxmega64a3"، "atxmega64a3u"، "atxmega64a4u"، "atxmega64b1"،
"atxmega64b3", "atxmega64c3", "atxmega64d3", "atxmega64d4".

"avrxmega5"
أجهزة "XMEGA" التي يزيد وزنها عن 64 كيلوبايت {} كيلوبايت وما يصل إلى 128 @ تعادل {} كيلوبايت من البرنامج
الذاكرة وأكثر من 64 @ التعادل {} كيلوبايت من ذاكرة الوصول العشوائي. MCUtie {} = "atxmega64a1" ،
"atxmega64a1u".

"avrxmega6"
أجهزة "XMEGA" مع أكثر من 128 @ تعادل {} كيلوبايت من ذاكرة البرنامج. MCUtie {} =
"atxmega128a3", "atxmega128a3u", "atxmega128b1", "atxmega128b3", "atxmega128c3",
"atxmega128d3", "atxmega128d4", "atxmega192a3", "atxmega192a3u", "atxmega192c3",
"atxmega192d3", "atxmega256a3", "atxmega256a3b", "atxmega256a3bu",
"atxmega256a3u", "atxmega256c3", "atxmega256d3", "atxmega384c3", "atxmega384d3".

"avrxmega7"
أجهزة "XMEGA" التي تحتوي على أكثر من 128 @ تعادل {} كيلوبايت من ذاكرة البرنامج وأكثر من
64 @ التعادل {} كيلوبايت من ذاكرة الوصول العشوائي. MCUtie {} = "atxmega128a1"، "atxmega128a1u"، "atxmega128a4u".

"avrtiny"
أجهزة صغيرة "TINY" ذات نواة صغيرة بسعة 512 @ تعادل {} B حتى 4 @ tie {} كيلوبايت من ذاكرة البرنامج.
MCUtie {} = "attiny10"، "attiny20"، "attiny4"، "attiny40"، "attiny5"، "attiny9".

"avr1"
يتم تنفيذ ISA من خلال الحد الأدنى من AVR الأساسية ودعمها للمجمع فقط.
MCUtie {} = "attiny11"، "attiny12"، "attiny15"، "attiny28"، "at90s1200".

-تراكم-أرجس
تجميع وسيطات الدالة الصادرة والحصول على / تحرير مساحة المكدس المطلوبة لـ
وسيطات الدالة الصادرة مرة واحدة في مقدمة / خاتمة. بدون هذا الخيار ،
يتم دفع الوسائط الصادرة قبل استدعاء دالة ثم تنبثق بعد ذلك.

يمكن أن يكون ظهور الوسائط بعد استدعاء الوظيفة مكلفًا على AVR لذلك
قد يؤدي تراكم مساحة المكدس إلى ملفات تنفيذية أصغر لأن الوسائط تحتاج
لا يجب إزالته من المكدس بعد استدعاء الوظيفة هذا.

يمكن أن يؤدي هذا الخيار إلى تقليل حجم الرمز للوظائف التي تقوم بإجراء العديد من المكالمات إلى
الدوال التي تحصل على وسيطاتها على المكدس مثل استدعاءات وظائف تشبه printf.

- تكلفة الامتياز =كلف
قم بتعيين تكاليف الفرع لتعليمات الفرع الشرطية إلى كلف. قيم معقولة
لل كلف هي أعداد صحيحة صغيرة غير سالبة. تكلفة الفرع الافتراضية هي 0.

- مقدمات المكالمات
يتم توسيع مقدمات الوظائف / الخاتمات كمكالمات إلى الإجراءات الفرعية المناسبة. الشفرة
الحجم أصغر.

النعناع 8
افترض أن "int" عدد صحيح 8 بت. يؤثر هذا على أحجام جميع الأنواع: "char" هو 1
البايت ، "int" هو 1 بايت ، و "long" هو 2 بايت ، و "long" 4 بايت. لو سمحت
لاحظ أن هذا الخيار لا يتوافق مع معايير C ، ولكنه ينتج عنه أصغر
حجم الكود.

-mn- فلاش =NUM
افترض أن حجم ذاكرة الفلاش NUM ضرب 64 @ التعادل {} KiB.

-منو المقاطعات
الرمز الذي تم إنشاؤه غير متوافق مع مقاطعات الأجهزة. حجم الكود أصغر.

-استراحة
حاول استبدال "CALL" resp. تعليمات "JMP" بواسطة أقصر مدة "RCALL". "RJMP"
التعليمات إن وجدت. ضبط -استراحة فقط يضيف ال - اربط-استرخاء الخيار الى
سطر أوامر المجمّع و --يستريح الخيار لسطر أوامر الرابط.

يتم تنفيذ القفز بالاسترخاء بواسطة الرابط لأنه لم يتم التعرف على إزاحات القفز من قبل
يقع الرمز. لذلك ، رمز المجمع الذي تم إنشاؤه بواسطة المترجم هو نفسه ،
لكن التعليمات الواردة في الملف القابل للتنفيذ قد تختلف عن التعليمات الواردة في المجمع
رمز.

يجب تشغيل الاسترخاء إذا كانت هناك حاجة إلى بذرة رابط ، راجع قسم "EIND" و
بذرة رابط أدناه.

-مرمو
افترض أن الجهاز يدعم إرشادات القراءة-التعديل-الكتابة "XCH" ، "LAC" ، "LAS"
و "لات".

-msp8
تعامل مع سجل مؤشر المكدس على أنه سجل 8 بتات ، أي افترض البايت العالي لـ
مؤشر المكدس هو صفر. بشكل عام ، لا تحتاج إلى ضبط هذا الخيار يدويًا.

يتم استخدام هذا الخيار داخليًا بواسطة المترجم لتحديد وبناء ملفات متعددة لـ
معماريات "avr2" و "avr25". تمزج هذه البنى الأجهزة مع وبدون
"SPH". لأي مكان آخر غير -mmcu = avr2 or -mmcu = avr25 يضيف سائق المترجم
أو يزيل هذا الخيار من سطر الأوامر الخاص بالمترجم ، لأن المترجم
ثم يعرف ما إذا كان الجهاز أو البنية بها مؤشر مكدس 8 بت وبالتالي لا يوجد "SPH"
سجل أم لا.

-مستريك- X
استخدم سجل العنوان "X" بالطريقة التي تقترحها الأجهزة. هذا يعني أن "X" هي
تستخدم فقط في عنونة غير مباشرة أو لاحقة أو قبل إنقاص.

بدون هذا الخيار ، يمكن استخدام سجل "X" بنفس طريقة استخدام "Y" أو "Z"
ثم تتم محاكاته بتعليمات إضافية. على سبيل المثال ، تحميل قيمة بـ
عنونة "X + const" باستخدام "const <64" صغيرة غير سالبة إلى سجل Rn is
يؤديها

adiw r26 ، const ؛ X + = ثابت
لد ، X ؛ = * س
sbiw r26 ، const ؛ X - = const

كومة صغيرة
قم فقط بتغيير 8 بتات @ التعادل السفلية {} من مؤشر المكدس.

-nodevicelib
لا تربط بالمكتبة الخاصة بجهاز AVR-LibC "libdev.a".

-Waddr- مساحة- تحويل
تحذير بشأن التحويلات بين مسافات العنوان في الحالة التي يكون فيها العنوان الناتج
لا يتم تضمين مساحة في مساحة العنوان الواردة.

"EIND" وأجهزة بها أكثر من 128 كيلو بايت من فلاش

يبلغ عرض المؤشرات في التنفيذ 16 @ تعادل {} بت. عنوان الوظيفة أو التسمية
يتم تمثيله كعنوان كلمة بحيث يمكن للقفزات والمكالمات غير المباشرة استهداف أي رمز
العنوان في نطاق 64 @ التعادل {} الكلمات كي.

من أجل تسهيل القفز غير المباشر على الأجهزة بأكثر من 128 @ تعادل {} كي بايت من
مساحة ذاكرة البرنامج ، هناك وظيفة تسجيل خاصة تسمى "EIND" والتي تعمل بمثابة
الجزء الأكثر أهمية من عنوان الهدف عندما تكون تعليمات "EICALL" أو "EIJMP"
مستخدم.

يتم التعامل مع القفزات والمكالمات غير المباشرة على هذه الأجهزة على النحو التالي بواسطة المترجم وهي
تخضع لبعض القيود:

* لا يقوم المترجم بتعيين "EIND" أبدًا.

* يستخدم المترجم "EIND" ضمنيًا في تعليمات "EICALL" / "EIJMP" أو قد يقرأ
"EIND" مباشرة من أجل محاكاة مكالمة / قفزة غير مباشرة عن طريق "RET"
تعليمات.

* يفترض المترجم أن "EIND" لا يتغير أبدًا أثناء رمز بدء التشغيل أو أثناء
تطبيق. على وجه الخصوص ، لا يتم حفظ / استعادة "EIND" في الوظيفة أو المقاطعة
خدمة روتينية مقدمة / خاتمة.

* بالنسبة للمكالمات غير المباشرة للوظائف و geto المحسوبة ، يقوم الرابط بإنشاء ملفات بذرة. كعب
تسمى أحيانًا منصات القفز الترامبولين. وبالتالي ، فإن الاتصال / القفز غير المباشر يقفز إلى
مثل كعب. يحتوي كعب الروتين على قفزة مباشرة إلى العنوان المطلوب.

* يجب تشغيل إرخاء الرابط بحيث يولد الرابط الأجزاء الجذرية بشكل صحيح
في جميع الأحوال. رؤية خيار المترجم -استراحة وخيار الرابط --يستريح.
هناك حالات زاوية حيث من المفترض أن يقوم الرابط بإنشاء بذرة ولكن يتم إحباطها
بدون استرخاء وبدون رسالة خطأ مفيدة.

* يتم ترتيب نص الرابط الافتراضي للرمز باستخدام "EIND = 0". إذا كان من المفترض أن يكون الرمز
للعمل من أجل إعداد مع "EIND! = 0" ، يجب استخدام نص رابط مخصص بالترتيب
لوضع المقاطع التي يبدأ اسمها بـ ".trampolines" في المقطع حيث
يشير "EIND" إلى.

* لا يقوم رمز بدء التشغيل من libgcc بتعيين "EIND" مطلقًا. لاحظ أن كود بدء التشغيل عبارة عن مزيج
من التعليمات البرمجية من libgcc و AVR-LibC. لتأثير AVR-LibC على "EIND" ، راجع AVR-
دليل مستخدم LibC ("http://nongnu.org/avr-libc/user-manual/").

* من المشروع لكود بدء التشغيل الخاص بالمستخدم إعداد "EIND" مبكرًا ، على سبيل المثال بواسطة
يعني رمز التهيئة الموجود في قسم ".init3". مثل هذا الرمز يعمل قبل
رمز بدء التشغيل العام الذي يهيئ ذاكرة الوصول العشوائي (RAM) ويستدعي المنشئات ، ولكن بعد جزء صغير من
رمز بدء التشغيل من AVR-LibC الذي يعين "EIND" إلى المقطع حيث يوجد جدول المتجه
يقع.

#يشمل

الفراغ ثابت
__ السمة __ ((القسم (". init3") ، عارية ، مستعملة ، no_in Instrument_function))
init3_set_eind (باطل)
{
__asm ​​متطاير ("ldi r24، pm_hh8 (__ trampolines_start) \ n \ t"
"out٪ i0، r24" :: "n" (& EIND): "r24"، "memory")؛
}

يتم تعريف رمز "__trampolines_start" في نص الرابط.

* يتم إنشاء Stubs تلقائيًا بواسطة الرابط في حالة الشرطين التاليين
التقى:

-
(باختصار ل توليد بذرة) مثل ذلك:

LDI r24، lo8 (gs ( ))
LDI r25، hi8 (gs ( ))

-
في الخارج الجزء حيث توجد بذرة.

* يُصدر المترجم مُعدِّلات "gs" لتسميات التعليمات البرمجية في الحالات التالية:

-
-
- - مقدمات المكالمات>
خيار سطر الأوامر.

-
الجداول يمكنك تحديد -fno- القفز-الجداول خيار سطر الأوامر.

-
-
* القفز إلى عناوين غير رمزية مثل هذا ليس المدعومة:

int main (باطل)
{
/ * وظيفة الاتصال على عنوان الكلمة 0x2 * /
العودة ((int (*) (void)) 0x2) () ؛
}

بدلاً من ذلك ، يجب إعداد كعب ، أي يجب استدعاء الوظيفة من خلال رمز
("func_4" في المثال):

int main (باطل)
{
خارجي int func_4 (باطل) ؛

/ * وظيفة الاتصال على عنوان البايت 0x4 * /
عودة func_4 () ؛
}

ويتم ربط التطبيق بـ -Wl، - defsym، func_4 = 0x4. بدلاً من ذلك ، "func_4"
يمكن تعريفها في نص الرابط.

التعامل مع سجلات الوظائف الخاصة "RAMPD" و "RAMPX" و "RAMPY" و "RAMPZ"

تدعم بعض أجهزة AVR ذكريات أكبر من 64 @ tie {} نطاق KiB الذي يمكن الوصول إليه
مع مؤشرات 16 بت. للوصول إلى مواقع الذاكرة خارج نطاق 64 @ tie {} KiB ، فإن ملف
يتم استخدام محتوى سجل "RAMP" كجزء كبير من العنوان: "X" ، "Y" ، "Z"
يتم ربط سجل العناوين بوظيفة خاصة "RAMPX" و "RAMPY" و "RAMPZ"
التسجيل ، على التوالي ، للحصول على عنوان واسع. وبالمثل ، يتم استخدام "RAMPD" مع ملفات
عنونة مباشرة.

* يقوم رمز بدء التشغيل بتهيئة سجلات الوظيفة الخاصة "RAMP" بصفر.

* اذا كان AVR عين العنوان مساحات ، مسماة العنوان الفضاء بخلاف عام أو "__flash" هو
مستخدم ، ثم يتم تعيين "RAMPZ" حسب الحاجة قبل العملية.

* إذا كان الجهاز يدعم ذاكرة RAM أكبر من 64 @ tie {} KiB ويحتاج المحول البرمجي إلى التغيير
لإنجاز عملية "RAMPZ" ، يتم إعادة تعيين "RAMPZ" إلى الصفر بعد العملية.

* إذا كان الجهاز مزودًا بسجل "RAMP" محدد ، فإن مقدمة / خاتمة ISR
يحفظ / يستعيد SFR هذا ويهيئته بصفر في حالة احتمال وجود كود ISR
(ضمنيًا) استخدمه.

* ذاكرة الوصول العشوائي الأكبر من 64 @ tie {} KiB غير مدعومة من قبل GCC لأهداف AVR. كما ترى
مُجمّع مضمن للقراءة من مواقع خارج نطاق عنوان 16 بت والتغيير
أحد سجلات "RAMP" ، يجب إعادة تعيينه إلى الصفر بعد الوصول.

AVR وحدات الماكرو المدمجة

يعرّف GCC العديد من وحدات الماكرو المضمنة بحيث يمكن لرمز المستخدم اختبار التواجد أو
غياب الميزات. يتم تقريبًا استنتاج أي من وحدات الماكرو المضمنة التالية من الجهاز
القدرات وبالتالي أثارها -mmcu = خيار سطر الأوامر.

لمزيد من وحدات الماكرو المضمنة الخاصة بـ AVR ، انظر AVR عين العنوان المساحات و AVR مدمج
وظائف.

"__AVR_ARCH__"
إنشاء الماكرو الذي يتحول إلى رقم عشري يعرّف البنية و
يعتمد على -mmcu =MCU اختيار. القيم الممكنة هي:

2، 25، 3، 31، 35، 4، 5، 51، 6

لل MCU= "avr2" ، "avr25" ، "avr3" ، "avr31" ، "avr35" ، "avr4" ، "avr5" ، "avr51" ، "avr6" ،

على التوالي و

100، 102، 104، 105، 106، 107

لل MCU= "avrtiny"، "avrxmega2"، "avrxmega4"، "avrxmega5"، "avrxmega6"، "avrxmega7"،
على التوالى. لو MCU جهازًا ، يتم تعيين هذا الماكرو المدمج وفقًا لذلك. ل
على سبيل المثال مع -mmcu = atmega8 يتم تعريف الماكرو على 4.

"__AVR_جهاز__"
الضبط -mmcu =جهاز يحدد هذا الماكرو المدمج الذي يعكس اسم الجهاز. ل
مثال، -mmcu = atmega8 يحدد الماكرو المدمج "__AVR_ATmega8__" ، -mmcu = attiny261a
يعرّف "__AVR_ATtiny261A__" ، إلخ.

تتبع أسماء وحدات الماكرو المضمنة المخطط "__AVR_جهاز__" أين جهاز هل
اسم الجهاز اعتبارًا من دليل مستخدم AVR. الفرق بين جهاز في المدمج
الماكرو و جهاز in -mmcu =جهاز هو أن الأخير دائمًا بالأحرف الصغيرة.

If جهاز ليس جهازًا ولكنه مجرد بنية أساسية مثل avr51، هذا الماكرو ليس كذلك
يعرف.

"__AVR_DEVICE_NAME__"
الضبط -mmcu =جهاز يحدد هذا الماكرو المدمج لاسم الجهاز. على سبيل المثال،
مع -mmcu = atmega8 يتم تعريف الماكرو على "atmega8".

If جهاز ليس جهازًا ولكنه مجرد بنية أساسية مثل avr51، هذا الماكرو ليس كذلك
يعرف.

"__AVR_XMEGA__"
ينتمي الجهاز / البنية إلى عائلة أجهزة XMEGA.

"__AVR_HAVE_ELPM__"
الجهاز يحتوي على تعليمات "ELPM".

"__AVR_HAVE_ELPMX__"
يحتوي الجهاز على "ELPM Rن ، ي " و "ELPM Rn ، Z + " تعليمات.

"__AVR_HAVE_MOVW__"
يحتوي الجهاز على تعليمات "MOVW" لإجراء حركات تسجيل-تسجيل 16 بت.

"__AVR_HAVE_LPMX__"
يحتوي الجهاز على "LPM Rن ، ي " و "LPM Rn ، Z + " تعليمات.

"__AVR_HAVE_MUL__"
الجهاز يحتوي على مضاعف الأجهزة.

"__AVR_HAVE_JMP_CALL__"
الجهاز يحتوي على تعليمات "JMP" و "CALL". هذا هو الحال بالنسبة للأجهزة ذات
ما لا يقل عن 16 @ التعادل {} كيلوبايت من ذاكرة البرنامج.

"__AVR_HAVE_EIJMP_EICALL__"
"__AVR_3_BYTE_PC__"
يحتوي الجهاز على تعليمات "EIJMP" و "EICALL". هذا هو الحال بالنسبة للأجهزة
مع أكثر من 128 @ التعادل {} كيلوبايت من ذاكرة البرنامج. وهذا يعني أيضًا أن البرنامج
يبلغ عرض العداد (PC) 3 @ تعادل {} بايت.

"__AVR_2_BYTE_PC__"
يبلغ عرض عداد البرامج (PC) 2 @ tie {} بايت. هذا هو الحال بالنسبة للأجهزة التي تصل إلى
128 @ التعادل {} كيلوبايت من ذاكرة البرنامج.

"__AVR_HAVE_8BIT_SP__"
"__AVR_HAVE_16BIT_SP__"
يتم التعامل مع سجل مؤشر المكدس (SP) على أنه سجل 8 بت على التوالي 16 بت بواسطة
المترجم. يتأثر تعريف وحدات الماكرو هذه بـ كومة صغيرة.

"__AVR_HAVE_SPH__"
"__AVR_SP8__"
يحتوي الجهاز على SPH (جزء مرتفع من مؤشر المكدس) أو لديه وظيفة خاصة
مؤشر مكدس 8 بت ، على التوالي. يتأثر تعريف وحدات الماكرو هذه بـ
-mmcu = وفي حالات -mmcu = avr2 و -mmcu = avr25 أيضا بواسطة -msp8.

"__AVR_HAVE_RAMPD__"
"__AVR_HAVE_RAMPX__"
"__AVR_HAVE_RAMPY__"
"__AVR_HAVE_RAMPZ__"
الجهاز به "RAMPD" ، ​​"RAMPX" ، "RAMPY" ، "RAMPZ" تسجيل الوظائف الخاصة ،
على التوالي.

"__NO_INTERRUPTS__"
يعكس هذا الماكرو -منو المقاطعات خيار سطر الأوامر.

"__AVR_ERRATA_SKIP__"
"__AVR_ERRATA_SKIP_JMP_CALL__"
يجب ألا تتخطى بعض أجهزة AVR (AT90S8515 ، ATmega103) إرشادات 32 بت بسبب
خطأ الأجهزة. تعليمات التخطي هي "SBRS" و "SBRC" و "SBIS" و "SBIC" و "CPSE".
يتم تعريف الماكرو الثاني فقط إذا تم أيضًا تعيين "__AVR_HAVE_JMP_CALL__".

"__AVR_ISA_RMW__"
يحتوي الجهاز على تعليمات القراءة-التعديل-الكتابة (XCH و LAC و LAS و LAT).

"__AVR_SFR_OFFSET __ =عوض"
التعليمات التي يمكنها معالجة سجلات الوظيفة الخاصة للإدخال / الإخراج مباشرة مثل "IN" ،
قد تستخدم "OUT" و "SBI" وما إلى ذلك عنوانًا مختلفًا كما لو تم توجيهها بواسطة تعليمات لـ
الوصول إلى ذاكرة الوصول العشوائي مثل "LD" أو "STS". هذه الإزاحة تعتمد على بنية الجهاز ولها
ليتم طرحها من عنوان RAM للحصول على عنوان I / O @ tie {}.

"__WITH_AVRLIBC__"
تم تكوين المترجم ليتم استخدامه مع AVR-Libc. انظر --مع- avrlibc
خيار التكوين.

Blackfin الخيارات

-mcpu =وحدة المعالجة المركزية[-sirevision]
يحدد اسم معالج Blackfin المستهدف. حاليا، وحدة المعالجة المركزية يمكن أن تكون واحدة من
bf512, bf514, bf516, bf518, bf522, bf523, bf524, bf525, bf526, bf527, bf531, bf532,
bf533, bf534, bf536, bf537, bf538, bf539, bf542, bf544, bf547, bf548, bf549, فرنك بلجيكي 542 م,
فرنك بلجيكي 544 م, فرنك بلجيكي 547 م, فرنك بلجيكي 548 م, فرنك بلجيكي 549 م, bf561, bf592.

اختياري sirevision يحدد مراجعة السيليكون للهدف Blackfin
المعالج. يتم تمكين أي حلول بديلة متاحة لمراجعة السيليكون المستهدفة.
If sirevision is لا شيء، لم يتم تمكين الحلول البديلة. لو sirevision is أي، كل
تم تمكين الحلول للمعالج المستهدف. الماكرو "__SILICON_REVISION__"
يتم تعريفه إلى رقمين سداسي عشري يمثلان الأرقام الرئيسية والثانوية في
مراجعة السيليكون. لو sirevision is لا شيء، لم يتم تعريف "__SILICON_REVISION__".
If sirevision is أي، تم تعريف "__SILICON_REVISION__" ليكون 0xffff. لو هذا
اختياري sirevision لم يتم استخدامه ، يفترض GCC أحدث مراجعة معروفة للسيليكون لـ
المستهدف معالج Blackfin.

يعرّف GCC ماكرو المعالج المسبق للملف المحدد وحدة المعالجة المركزية. ل bfin-elf سلسلة أدوات
يؤدي هذا الخيار إلى ربط الأجهزة التي يوفرها موقع libgloss بصفحة الدفع لتسوية الفواتير (BSP) إذا كان -مسيم is
غير معطى.

بدون هذا الخيار ، bf532 يتم استخدامه كمعالج افتراضيًا.

لاحظ أن الدعم لـ bf561 غير مكتمل. ل bf561، فقط ماكرو المعالج هو
يعرف.

-مسيم
يحدد أن البرنامج سيتم تشغيله على جهاز المحاكاة. هذا يسبب المحاكاة
يتم توفير BSP بواسطة libgloss ليتم الربط به. هذا الخيار له تأثير فقط من أجل bfin-elf
سلسلة الأدوات. بعض الخيارات الأخرى ، مثل -متوسط-المكتبة المشتركة و -mfdpic، لمح
-مسيم.

-موميت-أوراق-إطار-مؤشر
لا تحتفظ بمؤشر الإطار في سجل لوظائف طرفية. هذا يتجنب
تعليمات لحفظ مؤشرات الإطارات وإعدادها واستعادتها وإنشاء تسجيل إضافي
متوفر في وظائف الأوراق. الخيار - مؤشر الإطار يزيل الإطار
مؤشر لجميع الوظائف ، مما قد يجعل تصحيح الأخطاء أكثر صعوبة.

-mspecld- شذوذ
عند التمكين ، يضمن المترجم أن الشفرة التي تم إنشاؤها لا تحتوي على
الأحمال التخمينية بعد تعليمات القفز. إذا تم استخدام هذا الخيار ،
تم تعريف "__WORKAROUND_SPECULATIVE_LOADS".

-منو- specld- شذوذ
لا تنشئ كودًا إضافيًا لمنع حدوث أعباء مضاربة.

-مزامنة-شذوذ
عند التمكين ، يضمن المترجم أن الكود الذي تم إنشاؤه لا يحتوي على CSYNC أو
تعليمات SSYNC في وقت قريب جدًا بعد الفروع المشروطة. إذا تم استخدام هذا الخيار ،
تم تعريف "__WORKAROUND_SPECULATIVE_SYNCS".

-منو-سينك-شذوذ
لا تقم بإنشاء رمز إضافي لمنع حدوث تعليمات CSYNC أو SSYNC أيضًا
بعد فترة وجيزة من الفرع الشرطي.

-mlow-64 كيلو
عند التمكين ، يكون المترجم حرًا في الاستفادة من المعرفة الكاملة
يناسب البرنامج ذاكرة 64 كيلو بايت منخفضة.

-من-منخفض -64 كيلو
افترض أن البرنامج كبير بشكل تعسفي. هذا هو الافتراضي.

- مكدس الاختيار L1
قم بفحص المكدس باستخدام المعلومات الموضوعة في ذاكرة لوحة التخزين L1 بواسطة uClinux
نواة.

-متوسط-المكتبة المشتركة
قم بإنشاء رمز يدعم المكتبات المشتركة عبر طريقة معرف المكتبة. هذا يسمح
لتنفيذ مكتبات في مكانها ومشاركتها في بيئة بدون ذاكرة افتراضية
إدارة. هذا الخيار يعني -fPIC. مع bfin-elf الهدف ، هذا الخيار يعني
-مسيم.

-رقم-معرف-مكتبة مشتركة
قم بإنشاء رمز لا يفترض أنه يتم استخدام المكتبات المشتركة القائمة على المعرفات. هذا هو
الافتراضي.

-mleaf-id-shared-library
قم بإنشاء رمز يدعم المكتبات المشتركة عبر طريقة معرف المكتبة ، ولكن يفترض
أن هذه المكتبة أو الملف القابل للتنفيذ لن يرتبط بأي مكتبات مشتركة أخرى للمعرفات.
يسمح ذلك للمترجم باستخدام رمز أسرع للقفزات والمكالمات.

-منو ليف- معرف- مكتبة مشتركة
لا تفترض أن الكود الذي يتم تجميعه لن يرتبط بأي من مكتبات المعرفات المشتركة.
يتم إنشاء رمز أبطأ للقفز وإدخال المكالمات.

-مكتبة-مشارد- id = n
يحدد رقم تعريف المكتبة المشتركة المستندة إلى المعرف التي يتم تجميعها.
يؤدي تحديد القيمة 0 إلى إنشاء رمز أكثر إحكاما ؛ تحديد قوى القيم الأخرى
تخصيص هذا الرقم للمكتبة الحالية ولكن لم يعد هناك مساحة- أو وقت-
فعالة من حذف هذا الخيار.

-مسبب-البيانات
قم بإنشاء رمز يسمح بوضع مقطع البيانات في منطقة مختلفة من الذاكرة
من جزء النص. هذا يسمح للتنفيذ في مكان في بيئة بدون
إدارة الذاكرة الافتراضية عن طريق القضاء على عمليات النقل مقابل قسم النص.

-رقم-سبتمبر-البيانات
قم بإنشاء رمز يفترض أن مقطع البيانات يتبع مقطع النص. هذا هو
الافتراضي.

- مكالمات طويلة
- مكالمات طويلة
يطلب من المترجم إجراء استدعاءات الوظائف عن طريق تحميل عنوان ملف
وظيفة في سجل ثم إجراء مكالمة روتين فرعي على هذا السجل. هذه
التبديل مطلوب إذا كانت الوظيفة الهدف تقع خارج نطاق العنونة 24 بت
الإصدار القائم على الإزاحة من تعليمات استدعاء الإجراء الفرعي.

لم يتم تمكين هذه الميزة بشكل افتراضي. التحديد - مكالمات طويلة يعيد
السلوك الافتراضي. لاحظ أن هذه المفاتيح ليس لها أي تأثير على كيفية إنشاء المحول البرمجي
رمز للتعامل مع استدعاءات الوظائف عبر مؤشرات الوظيفة.

-سريع- fp
الارتباط بمكتبة الفاصلة العائمة السريعة. هذه المكتبة تسترخي بعضًا من IEEE
قواعد معيار الفاصلة العائمة لفحص المدخلات مقابل Not-a-Number (NAN) ، في ملف
مصلحة الأداء.

مينلاين- PLT
تمكين تضمين إدخالات PLT في استدعاءات الوظائف للوظائف غير المعروفة
ربط محليا. ليس له تأثير بدون -mfdpic.

-متعدد النواة
أنشئ تطبيقًا قائمًا بذاته لمعالجات Blackfin متعددة النواة. هذا الخيار يسبب
ملفات البدء المناسبة ونصوص الارتباط التي تدعم استخدام متعدد النواة ، وتحدد
ماكرو "__BFIN_MULTICORE". يمكن استخدامه فقط مع -mcpu = bf561[-sirevision].

يمكن استخدام هذا الخيار مع -مكوريا or -موقع ب، والذي يحدد التطبيق الواحد-
نموذج البرمجة لكل مركز. بدون -مكوريا or -موقع بأطلقت حملة
يتم استخدام نموذج برمجة أحادي التطبيق / ثنائي النواة. في هذا النموذج الرئيسي
يجب تسمية وظيفة Core B باسم "coreb_main".

إذا لم يتم استخدام هذا الخيار ، فسيتم استخدام نموذج برمجة التطبيق أحادي المركز.

-مكوريا
قم بإنشاء تطبيق مستقل لـ Core A من BF561 عند استخدام التطبيق الواحد لكل
نموذج البرمجة الأساسية. يتم استخدام ملفات البدء المناسبة ونصوص الارتباط لدعم Core
A ، ويتم تعريف الماكرو "__BFIN_COREA". لا يمكن استخدام هذا الخيار إلا في ملفات
مرتبط ب -متعدد النواة.

-موقع ب
قم بإنشاء تطبيق مستقل لـ Core B من BF561 عند استخدام التطبيق الواحد لكل
نموذج البرمجة الأساسية. يتم استخدام ملفات البدء المناسبة ونصوص الارتباط لدعم Core
B ، ويتم تعريف الماكرو "__BFIN_COREB". عند استخدام هذا الخيار ، "coreb_main"
يجب استخدامه بدلاً من "الرئيسي". لا يمكن استخدام هذا الخيار إلا مع ملفات
-متعدد النواة.

-msdram
إنشاء تطبيق مستقل لـ SDRAM. يتم استخدام ملفات البدء المناسبة والبرامج النصية للارتباط
لوضع التطبيق في SDRAM ، ويتم تعريف الماكرو "__BFIN_SDRAM". ال
يجب على المُحمل تهيئة SDRAM قبل تحميل التطبيق.

-micplb
افترض أنه تم تمكين ICPLBs في وقت التشغيل. هذا له تأثير على شذوذ معين
الحلول. بالنسبة لأهداف Linux ، يكون الافتراض هو افتراض تمكين ICPLBs ؛ ل
التطبيقات المستقلة الافتراضي هو إيقاف التشغيل.

C6X الخيارات

- مسيرة =الاسم
هذا يحدد اسم العمارة الهدف. يستخدم GCC هذا الاسم لتحديد
ما نوع التعليمات التي يمكن أن تصدرها عند إنشاء رمز التجميع. مسموح
الأسماء هي: c62x, c64x, c64x +, c67x, c67x +, c674x.

-mbig-endian
إنشاء رمز لهدف كبير.

-ملل-endian
قم بإنشاء رمز لهدف صغير. هذا هو الافتراضي.

-مسيم
اختر ملفات بدء التشغيل ونص رابط مناسب لجهاز المحاكاة.

-msdata = افتراضي
ضع البيانات العالمية والثابتة الصغيرة في قسم ".neardata" ، الذي يشار إليه بواسطة
سجل "B14". ضع بيانات عالمية وثابتة صغيرة غير مهيأة في قسم ".bss" ،
والمجاور لقسم ".neardata". ضع بيانات صغيرة للقراءة فقط في ملف
قسم ".rodata". الأقسام المقابلة المستخدمة لأجزاء كبيرة من البيانات هي
".fardata" و ".far" و ".const".

-msdata = الكل
ضع كل البيانات ، وليس الأشياء الصغيرة فقط ، في الأقسام المخصصة للبيانات الصغيرة ، و
استخدام العنونة المتعلقة بتسجيل "B14" للوصول إليها.

-msdata = لا شيء
لا تستخدم الأقسام المخصصة للبيانات الصغيرة ، واستخدم العناوين المطلقة لـ
الوصول إلى كافة البيانات. ضع جميع البيانات العالمية والثابتة التي تمت تهيئتها في ملف ".fardata"
وجميع البيانات غير المهيأة في قسم ".far". ضع كل البيانات الثابتة في
قسم ".const".

CRIS الخيارات

تم تحديد هذه الخيارات خصيصًا لمنافذ CRIS.

- مسيرة =نوع العمارة
-mcpu =نوع العمارة
توليد رمز للعمارة المحددة. اختيارات نوع العمارة هي
v3, v8 و v10 لـ ETRAX 4 و ETRAX 100 و ETRAX 100 LX على التوالي. الافتراضي هو v0
باستثناء cris-axis-linux-gnu ، حيث يكون الافتراضي هو v10.

-mtune =نوع العمارة
ضبط ل نوع العمارة كل ما ينطبق على الكود الذي تم إنشاؤه ، باستثناء
ABI ومجموعة التعليمات المتاحة. اختيارات نوع العمارة هي
نفس الشيء بالنسبة ل - مسيرة =نوع العمارة.

-mmax-stack-frame =n
تحذير عندما يتجاوز إطار المكدس لوظيفة ما n بايت.

-متراكس 4
-متراكس 100
الخيارات -متراكس 4 و -متراكس 100 مرادفات ل - مسيرة = v3 و - مسيرة = v8
على التوالي.

-mmul علة الحل
-mno-mul-bug-workaround
قم بالتغلب على خطأ في تعليمات "muls" و "mulu" لنماذج وحدة المعالجة المركزية حيث توجد
ينطبق. هذا الخيار نشط بشكل افتراضي.

-mpdebug
تمكين المعلومات المتعلقة بالتصحيح المطول الخاصة بـ CRIS في رمز التجميع. هذه
الخيار له أيضًا تأثير إيقاف تشغيل # NO_APP مؤشر رمز منسق إلى
المجمع في بداية ملف التجميع.

-mcc- الحرف الأول
لا تستخدم نتائج كود الشرط من التعليمات السابقة ؛ تنبعث منه دائمًا مقارنة و
تعليمات الاختبار قبل استخدام رموز الحالة.

- عدم الآثار الجانبية
لا تصدر تعليمات ذات آثار جانبية في أوضاع المعالجة بخلاف ما بعد-
زيادة راتب.

-مكدس- محاذاة
-رقم-المكدس- محاذاة
محاذاة البيانات
-لا-محاذاة البيانات
-mconst- محاذاة
-منو-كونست-محاذاة
هذه الخيارات (الجوى خيارات) ترتيب (استبعاد الترتيبات) لإطار المكدس ،
يجب محاذاة البيانات الفردية والثوابت من أجل الحد الأقصى لحجم الوصول إلى البيانات الفردية
لنموذج وحدة المعالجة المركزية المختار. الإعداد الافتراضي هو الترتيب لمحاذاة 32 بت. ABI
تفاصيل مثل تخطيط الهيكل لا تتأثر بهذه الخيارات.

-m32 بت
-m16 بت
-m8 بت
على غرار خيارات المكدس- البيانات- والمحاذاة الثابتة أعلاه ، يتم ترتيب هذه الخيارات لـ
إطار المكدس والبيانات القابلة للكتابة والثوابت لتكون جميعها بمحاذاة 32 بت أو 16 بت أو 8 بت.
الافتراضي هو محاذاة 32 بت.

-من-مقدمة-الخاتمة
-مبرولوج-خاتمة
مع -من-مقدمة-الخاتمة، مقدمة الوظيفة العادية والخاتمة التي تم إنشاؤها
تم حذف إطار المكدس ولا توجد تعليمات إرجاع أو تسلسلات إرجاع
ولدت في الكود. استخدم هذا الخيار فقط مع الفحص البصري لـ
الشفرة المترجمة: لا يتم إنشاء أي تحذيرات أو أخطاء عندما يجب أن تكون السجلات المحفوظة في المكالمة
المحفوظة ، أو يجب تخصيص تخزين للمتغيرات المحلية.

-منو-جوتبلت
-mgotplt
مع -fpic و -fPIC، لا تنشئ (تولد) تسلسلات التعليمات التي يتم تحميلها
عناوين للوظائف من جزء PLT من GOT بدلاً من (تقليدي على الآخر
معماريات) مكالمات إلى PLT. الافتراضي هو -mgotplt.

-نفس
يتم التعرف على خيار عدم التشغيل القديم فقط باستخدام cris-axis-elf و cris-axis-linux-gnu
أهداف.

-ملينكس
يتم التعرف على خيار عدم التشغيل القديم فقط مع هدف cris-axis-linux-gnu.

-سم
يرتب هذا الخيار ، المعترف به لمحور cris-elf ، للربط مع المدخلات والمخرجات
وظائف من مكتبة محاكاة. التعليمات البرمجية والبيانات التي تمت تهيئتها والبيانات الصفرية التهيئة
يتم تخصيصها على التوالي.

-سم 2
اعجاب -سم، ولكن قم بتمرير خيارات الرابط لتحديد موقع البيانات التي تمت تهيئتها عند 0x40000000 وصفر-
تمت تهيئة البيانات على 0x80000000.

CR16 الخيارات

تم تحديد هذه الخيارات خصيصًا لمنافذ CR16.

-مماك
تمكين استخدام تعليمات الضرب والتراكم. معطل بشكل افتراضي.

-mcr16cplus
-مكر 16 ج
قم بإنشاء رمز لبنية CR16C أو CR16C +. بنية CR16C + هي الإعداد الافتراضي.

-مسيم
يربط مكتبة libsim.a المتوافقة مع المحاكاة. ينطبق على ELF
مترجم فقط.

النعناع 32
اختر نوع عدد صحيح بعرض 32 بت.

-مبيت العمليات
يولد تعليمات "sbit" / "cbit" لمعالجة البتات.

- نموذج البيانات =نموذج
اختر نموذج البيانات. اختيارات نموذج هي قرب, بعيدا or متوسط. متوسط هو الافتراضي.
ومع ذلك، بعيدا غير صالح مع -مكر 16 ج، نظرًا لأن بنية CR16C لا تدعم تنسيق
نموذج البيانات البعيدة.

داروين الخيارات

يتم تحديد هذه الخيارات لجميع البنى التي تقوم بتشغيل نظام تشغيل داروين.

FSF GCC على داروين لا تنشئ ملفات كائن "fat" ؛ يقوم بإنشاء ملف كائن لـ
بنية واحدة تم تصميم دول مجلس التعاون الخليجي لاستهدافها. دول مجلس التعاون الخليجي لشركة أبل على داروين تخلق "الدهون"
الملفات إذا كانت متعددة -قوس يتم استخدام الخيارات ؛ يقوم بذلك عن طريق تشغيل المترجم أو الرابط
عدة مرات والانضمام إلى النتائج معًا ليبو.

النوع الفرعي للملف الذي تم إنشاؤه (مثل ppc7400 or ppc970 or i686) بواسطة
العلامات التي تحدد ISA التي تستهدفها دول مجلس التعاون الخليجي ، مثل - وحدة المعالجة المركزية or -مارس.
-فرض_cpusubtype_ALL يمكن استخدام الخيار لتجاوز هذا.

تختلف أدوات داروين في سلوكها عند تقديمها مع عدم تطابق ISA. ال
المجمع as، يسمح فقط باستخدام التعليمات الصالحة للنوع الفرعي من
الملف الذي يتم إنشاؤه ، لذلك لا يمكنك وضع إرشادات 64 بت في ملف ppc750 ملف الكائن. ال
رابط للمكتبات المشتركة ، / usr / bin / libtool، يفشل ويطبع خطأ إذا طُلب منه ذلك
إنشاء مكتبة مشتركة بنوع فرعي أقل تقييدًا من ملفات الإدخال (لـ
على سبيل المثال ، في محاولة لوضع ppc970 ملف الكائن في ملف ppc7400 مكتبة). رابط ل
الملفات التنفيذية ld، يعطي الملف القابل للتنفيذ بهدوء النوع الفرعي الأكثر تقييدًا من أيٍّ من ملفاته
ملفات الإدخال.

-Fدير
أضف دليل إطار العمل دير إلى رأس قائمة الدلائل التي سيتم البحث فيها
لملفات الرأس. هذه الدلائل متداخلة مع تلك المحددة بواسطة -I
الخيارات ويتم فحصها بترتيب من اليسار إلى اليمين.

دليل إطار العمل هو دليل به أطر عمل. الإطار هو
الدليل مع ملف رؤوس و / أو الرؤساء الخاصين الدليل الوارد مباشرة في ذلك
ينتهي في .إطار العمل. اسم إطار العمل هو اسم هذا الدليل باستثناء
ال .إطار العمل. تم العثور على الرؤوس المرتبطة بإطار العمل في أحد هذين
الدلائل مع رؤوس يجري البحث عنها أولا. الإطار الفرعي هو إطار عمل
الدليل الموجود في إطار عمل أُطر الأعمال الدليل. يشتمل على إطار فرعي
يمكن أن تظهر الرؤوس فقط في رأس إطار عمل يحتوي على إطار عمل فرعي ، أو
في رأس إطار فرعي للأشقاء. إطاران فرعيان هما أشقاء إذا حدثت في
نفس الإطار. يجب ألا يكون للإطار الفرعي نفس اسم إطار العمل ؛ أ
يتم إصدار تحذير إذا تم انتهاك هذا. حاليا لا يمكن أن يحتوي إطار فرعي
أطر فرعية. في المستقبل ، قد يتم تمديد الآلية لدعم هذا. ال
يمكن العثور على الأطر القياسية في / نظام / المكتبة / أطر و
/ المكتبة / أطر. مثال يتضمن يبدو مثل "#include "،
أين الإطار يشير إلى اسم الإطار و رأس. h موجود في
الرؤساء الخاصين or رؤوس الدليل.

-الإطاردير
اعجاب -F فيما عدا الدليل الذي يتم التعامل معه كدليل نظام. الاختلاف الرئيسي
بين هذا -الإطار و -F هل هذا مع -الإطار المترجم لا يحذر
حول التركيبات المضمنة في ملفات الرأس التي تم العثور عليها عبر دير. هذا الخيار صالح
فقط لعائلة اللغات C.

-تناول
تنبعث معلومات تصحيح الأخطاء للرموز المستخدمة. لتنسيق تصحيح الطعنات ،
وهذا يتيح -تصحيح-غير مستخدمة-رموز تصحيح. يكون هذا افتراضيًا في وضع التشغيل.

-gfull
تنبعث معلومات تصحيح الأخطاء لجميع الرموز والأنواع.

-mmacosx-version-min =الإصدار
الإصدار الأول من MacOS X الذي سيعمل عليه هذا الملف القابل للتنفيذ هو الإصدار. نموذجي
قيم الإصدار تشمل 10.1 و 10.2 و 10.3.9.

إذا تم إنشاء المترجم لاستخدام رؤوس النظام افتراضيًا ، فسيكون الإعداد الافتراضي لـ
هذا الخيار هو إصدار النظام الذي يعمل عليه المترجم ، وإلا فإن
الافتراضي هو اتخاذ خيارات متوافقة مع العديد من الأنظمة وقواعد التعليمات البرمجية مثل
ممكن.

-مكرنيل
تفعيل وضع تطوير النواة. ال -مكرنيل مجموعات الخيارات -ثابتة, -fno- مشترك,
-fno-use-cxa-atexit, -لا-الاستثناءات, -fno-non-call-الاستثناءات, -فابل-ككست,
- ضعيف و -فنو- ​​rtti حيثما ينطبق ذلك. يحدد هذا الوضع أيضًا -منو-التيفيك,
-مسنة- تعويم, -fno- بنيت و -متفرع- طويل لأهداف PowerPC.

-عوني-بايت- منطقي
تجاوز القيم الافتراضية لـ "منطقي" بحيث "sizeof (منطقي) == 1". بشكل افتراضي "sizeof (منطقي)"
هي 4 عند التحويل البرمجي لـ Darwin / PowerPC و 1 عند التحويل البرمجي لـ Darwin / x86 ، لذلك هذا
الخيار ليس له تأثير على x86.

: تحذير أفضل -عوني-بايت- منطقي يؤدي التبديل إلى GCC لإنشاء رمز غير ثنائي
متوافق مع الكود الذي تم إنشاؤه بدون هذا المفتاح. قد يتطلب استخدام رمز التبديل هذا
إعادة تجميع كافة الوحدات النمطية الأخرى في البرنامج ، بما في ذلك مكتبات النظام. استخدم هذا
التبديل للتوافق مع نموذج بيانات غير افتراضي.

إصلاح ومتابعة
-إضافة ومتابعة
- بيانات غير مباشرة
قم بإنشاء رمز مناسب للتطوير السريع ، مثل السماح لـ GDB بذلك
ديناميكيًا .o الملفات في البرامج قيد التشغيل بالفعل. - بيانات غير مباشرة و
-إضافة ومتابعة يتم توفيرها للتوافق مع الإصدارات السابقة.

-جميع_حمولة
تحميل كافة أعضاء مكتبات الأرشيف الثابتة. انظر يا رجل ld(1) لمزيد من المعلومات.

- أخطاء_ميتة
تسبب في أن تكون الأخطاء المتعلقة بالملفات ذات البنية الخاطئة قاتلة.

-ربط_at_load
يتسبب في وضع علامة على ملف الإخراج بحيث يقوم الرابط الديناميكي بربط الكل
مراجع غير محددة عند تحميل الملف أو تشغيله.

-حزمة
قم بإنشاء ملف تنسيق حزمة Mach-o. انظر يا رجل ld(1) لمزيد من المعلومات.

-محمل_حزمة تنفيذ
يحدد هذا الخيار ملف تنفيذ من شأنها تحميل ملف الإخراج البناء
مرتبط. انظر يا رجل ld(1) لمزيد من المعلومات.

-ديناميكليب
عند تمرير هذا الخيار ، ينتج GCC مكتبة ديناميكية بدلاً من ملف قابل للتنفيذ عندما
ربط باستخدام داروين libtool أمر.

-فرض_cpusubtype_ALL
يؤدي هذا إلى احتواء ملف الإخراج الخاص بـ GCC على الامتداد جميع نوع فرعي ، بدلاً من واحد يتحكم فيه
ال - وحدة المعالجة المركزية or -مارس الخيار.

-العميل المسموح به اسم العميل
-اسم العميل
- التوافق_الإصدار
-النسخة الحالية
-تفصل_الخط
- ملف الاعتماد
-dylib_file
-dylinker_install_name
-ديناميكي
-قائمة_الرموز_المصدرة
-قائمة الملفات
-flat_namespace
-Force_flat_namespace
-headerpad_max_install_names
-صورة_قاعدة
-فيه
-اسم_التثبيت
-صيانة_خاصة_الخارج
-متعدد الوحدات
-تضاعف_تعرّف
-تضاعف_تعرف_غير مستخدمة
- noall_load
-لا_قطع_خط_الخطوات_المصطلحات
-Nofixprebinding
-nomultidefs
-نوبريبيند
-noseglink تصحيح
-pagezero_size
-الخلاصة
-prebind_all_twolevel_modules
-حزمة_خاصة
- قراءة_ فقط_المحرر
-المستقيم
-رموز الكائنات
-لماذا
-seg1addr
- الطائفة
-رموز الكائنات
-قطاعية
-سجادر
-segs_read_only_addr
-segs_read_write_addr
-seg_addr_table
-seg_addr_table_filename
-الرابط
-درس
-segs_read_only_addr
-segs_read_write_addr
-وحدة_وحدة
-ثابتة
-المكتبة الفرعية
-مظلة فرعية
-wolevel_namespace
-مظلة
-غير معرف
-قائمة_الرموز_غير المُصدرة
- ضعف_المرجعية_التطابقات
- ما تم تحميله
يتم تمرير هذه الخيارات إلى رابط داروين. تصف صفحة رجل رابط داروين
لهم بالتفصيل.

ديسمبر ألفا الخيارات

تشبه -m يتم تحديد الخيارات لتطبيقات DEC Alpha:

-من-لينة-تعويم
-مسنة- تعويم
استخدم (لا تستخدم) تعليمات الأجهزة العائمة للفاصلة العائمة
عمليات. متي -مسنة- تعويم محدد ، وظائف في libgcc.a تستخدم لأداء
عمليات الفاصلة العائمة. ما لم يتم استبدالها بالإجراءات الروتينية التي تحاكي
عمليات الفاصلة العائمة ، أو يتم تجميعها بطريقة تسمح باستدعاء مثل هذه المحاكاة
الروتينية ، هذه الإجراءات تصدر عمليات الفاصلة العائمة. إذا كنت تقوم بالتجميع من أجل
ألفا بدون عمليات الفاصلة العائمة ، يجب التأكد من بناء المكتبة
حتى لا ندعوهم.

لاحظ أن تطبيقات Alpha بدون عمليات الفاصلة العائمة مطلوبة
تسجيلات الفاصلة العائمة.

-mfp- ريج
-منو- fp- ريجس
توليد التعليمات البرمجية التي تستخدم (لا تستخدم) مجموعة تسجيل الفاصلة العائمة. -منو- fp- ريجس
يدل -مسنة- تعويم. إذا لم يتم استخدام مجموعة تسجيل الفاصلة العائمة ، فإن النقطة العائمة
يتم تمرير المعاملات في سجلات أعداد صحيحة كما لو كانت أعدادًا صحيحة ونقطة عائمة
تم تمرير النتائج في $ 0 بدلاً من $ f0. هذا هو تسلسل استدعاء غير قياسي ، لذلك
أي دالة ذات وسيطة فاصلة عائمة أو قيمة إرجاع تسمى بواسطة رمز تم تجميعه
مع -منو- fp- ريجس يجب أيضًا تجميعها باستخدام هذا الخيار.

الاستخدام النموذجي لهذا الخيار هو بناء نواة لا تستخدم ، وبالتالي تحتاج
عدم حفظ واستعادة أي سجلات للفاصلة العائمة.

-مييي
تنفذ بنية Alpha أجهزة الفاصلة العائمة المحسّنة للحد الأقصى
أداء. إنه متوافق في الغالب مع معيار النقطة العائمة IEEE. لكن،
للامتثال الكامل ، مطلوب مساعدة البرامج. هذا الخيار يولد رمز
كود متوافق تمامًا مع IEEE إلا أن علم غير دقيق لا يتم الحفاظ عليها (انظر أدناه).
إذا تم تشغيل هذا الخيار ، يتم تحديد ماكرو المعالج الأولي "_IEEE_FP" أثناء
التحويل البرمجي. الكود الناتج أقل كفاءة ولكنه قادر على دعمه بشكل صحيح
الأرقام غير المنسقة وقيم IEEE الاستثنائية مثل ليس رقمًا وعلامة زائد / ناقص
ما لا نهاية. المترجمون ألفا الآخرون يسمون هذا الخيار -ieee_with_no_inexact.

-مي-مع-غير دقيق
هذا مثل -مييي باستثناء الكود الذي تم إنشاؤه يحتفظ أيضًا بـ IEEE علم غير دقيق.
يؤدي تشغيل هذا الخيار إلى قيام الكود الذي تم إنشاؤه بتنفيذ IEEE المتوافق تمامًا
الرياضيات. بالإضافة إلى "_IEEE_FP" ، يتم تعريف "_IEEE_FP_EXACT" على أنه ماكرو معالج مسبق.
في بعض تطبيقات Alpha ، قد يتم تنفيذ الكود الناتج بشكل أبطأ من
الرمز الذي تم إنشاؤه افتراضيًا. نظرًا لوجود القليل جدًا من التعليمات البرمجية التي تعتمد على ملف
علم غير دقيق، يجب عادة عدم تحديد هذا الخيار. المترجمون ألفا الأخرى استدعاء
هذا الخيار -ieee_inexact.

-mfp-trap-mode =وضع فخ
يتحكم هذا الخيار في تحديد الملائمة ذات الصلة بالنقطة العائمة التي يتم تمكينها. ألفا أخرى
المترجمون يسمون هذا الخيار -fptm وضع فخ. يمكن ضبط وضع الملاءمة على واحد من أربعة
القيم:

n هذا هو الإعداد الافتراضي (العادي). الاعتراضات الوحيدة التي تم تمكينها هي
تلك التي لا يمكن تعطيلها في البرامج (على سبيل المثال ، القسمة على مصيدة صفرية).

u بالإضافة إلى الفخاخ التي تم تمكينها بواسطة n، يتم أيضًا تمكين اعتراض التدفق السفلي.

su اعجاب u، ولكن تم وضع علامة على التعليمات لتكون آمنة لإكمال البرنامج (انظر
دليل معمارية ألفا لمزيد من التفاصيل).

فريد اعجاب su، ولكن يتم أيضًا تمكين المصائد غير الدقيقة.

-وضع التقريب mfp =وضع التقريب
يحدد وضع التقريب IEEE. المترجمون ألفا الآخرون يسمون هذا الخيار -fprm
وضع التقريب. وضع التقريب يمكن أن يكون أحد:

n وضع تقريب IEEE العادي. يتم تقريب أرقام الفاصلة العائمة باتجاه أقرب
رقم الجهاز أو باتجاه رقم الجهاز الزوجي في حالة التعادل.

m جولة نحو سالب ما لا نهاية.

c وضع التقريب المفروم. يتم تقريب أرقام الفاصلة العائمة باتجاه الصفر.

d وضع التقريب الديناميكي. حقل في سجل تحكم الفاصلة العائمة (fpcr، انظر
دليل مرجعي لهندسة ألفا) يتحكم في وضع التقريب ساري المفعول. سي
مكتبة تهيئ هذا السجل للتقريب نحو زائد اللانهاية. هكذا،
ما لم يعدل البرنامج الخاص بك fpcr, d يتوافق مع الجولة نحو زائد
ما لا نهاية.

الدقة - mtrap =دقة فخ
في معمارية ألفا ، فخاخ النقطة العائمة غير دقيقة. هذا يعني بدون
برنامج المساعدة من المستحيل الاسترداد من برنامج فخ عائم
يحتاج التنفيذ عادة إلى الإنهاء. يمكن لـ GCC إنشاء رمز يمكن أن يساعد
معالجات اعتراض نظام التشغيل في تحديد الموقع الدقيق الذي تسبب في
فخ النقطة العائمة. اعتمادا على متطلبات التطبيق ، مختلفة
يمكن تحديد مستويات الدقة:

p دقة البرنامج. هذا الخيار هو الخيار الافتراضي ويعني أن معالج الملاءمة يمكنه فقط
تحديد البرنامج الذي تسبب في استثناء النقطة العائمة.

f دقة الوظيفة. يمكن لمعالج الملاءمة تحديد الوظيفة التي تسببت في ملف
استثناء النقطة العائمة.

i دقة التعليمات. يمكن لمعالج المصيدة تحديد التعليمات الدقيقة التي
تسبب في استثناء النقطة العائمة.

توفر برامج التحويل البرمجي لـ Alpha الأخرى الخيارات المكافئة التي تسمى -النطاق_الآمن و
-الاستثمار_أمن.

-mieee- المطابقة
يقوم هذا الخيار بتمييز الكود المُنشأ على أنه متوافق مع IEEE. يجب ألا تستخدم هذا الخيار
ما لم تحدد أيضًا -دقة فخ = أنا وإما -mfp-trap-mode = su or
-mfp-trap-mode = sui. تأثيره الوحيد هو انبعاث الخط .eflag 48 في الوظيفة
مقدمة من ملف التجميع الذي تم إنشاؤه.

- بناء الثوابت
عادةً ما يفحص GCC ثابت عدد صحيح 32 أو 64 بت لمعرفة ما إذا كان يمكنه بنائه
من الثوابت الأصغر في تعليمتين أو ثلاثة. إذا لم يستطع ، فإنه يقوم بإخراج ملف
ثابت كحرف ويقوم بإنشاء رمز لتحميله من مقطع البيانات في وقت التشغيل.

استخدم هذا الخيار لطلب إنشاء GCC من جميع ثوابت عدد صحيح باستخدام رمز ، حتى لو
يتطلب الأمر مزيدًا من التعليمات (الحد الأقصى هو ستة).

عادةً ما تستخدم هذا الخيار لإنشاء محمل ديناميكي للمكتبة المشتركة. نفسها أ
مكتبة مشتركة ، يجب أن تنتقل إلى الذاكرة قبل أن تتمكن من العثور على المتغيرات و
الثوابت في مقطع البيانات الخاص بها.

-mbwx
-منو- bwx
-mcix
-منو سيكس
-إصلاح
-من الإصلاح
-ماكس
-منو ماكس
حدد ما إذا كان يجب على GCC إنشاء رمز لاستخدام BWX و CIX و FIX و MAX الاختيارية
مجموعات التعليمات. الافتراضي هو استخدام مجموعات التعليمات التي تدعمها وحدة المعالجة المركزية
النوع المحدد عبر -mcpu = الخيار أو ذلك الخاص بوحدة المعالجة المركزية التي تم إنشاء GCC عليها إذا لم يتم إنشاء أي منها
محدد.

- طفو - vax
-طوف- ieee
قم بإنشاء التعليمات البرمجية التي تستخدم (لا تستخدم) حساب الفاصلة العائمة VAX F و G بدلاً من ذلك
من IEEE دقة مفردة ومزدوجة.

-صريحة-ريوكس
-منو-صريح-ريلوكس
لم توفر مجمعات Alpha القديمة أي طريقة لإنشاء عمليات نقل الرموز إلا عبر
وحدات الماكرو المجمّع. لا يسمح استخدام وحدات الماكرو هذه بجدولة التعليمات المثلى.
تدعم حاويات GNU اعتبارًا من الإصدار 2.12 صيغة جديدة تسمح للمترجم
وضع علامة صريحة على عمليات إعادة التوطين التي يجب أن تنطبق عليها التعليمات. هذا الخيار هو
غالبًا ما يكون مفيدًا لتصحيح الأخطاء ، حيث يكتشف مجلس التعاون الخليجي قدرات المجمع عند ذلك
تم بناؤه ويقوم بتعيين الإعداد الافتراضي وفقًا لذلك.

بيانات صغيرة
- بيانات كبيرة
متى -صريحة-ريوكس سارية ، يتم الوصول إلى البيانات الثابتة عبر المعدل النسبي
الترحيلات. متي بيانات صغيرة مستخدمًا ، يتم وضع الكائنات التي يبلغ طولها 8 بايت أو أصغر
a صغير البيانات منطقة (أقسام ".sdata" و ".sbss") ويتم الوصول إليها عبر 16 بت
عمليات النقل من سجل gp $. هذا يحد من حجم منطقة البيانات الصغيرة إلى
64 كيلو بايت ، ولكنه يسمح بالوصول إلى المتغيرات مباشرة عبر تعليمات واحدة.

الافتراضي هو - بيانات كبيرة. باستخدام هذا الخيار ، تقتصر منطقة البيانات على أدناه
2 جيجا بايت. يجب أن تستخدم البرامج التي تتطلب أكثر من 2 غيغابايت من البيانات "malloc" أو "mmap"
تخصيص البيانات في الكومة بدلاً من مقطع بيانات البرنامج.

عند إنشاء رمز للمكتبات المشتركة ، -fpic يدل بيانات صغيرة و -fPIC
يدل - بيانات كبيرة.

نص صغير
-تكبير النص
متى نص صغير يفترض المترجم أن رمز البرنامج بأكمله
(أو مكتبة مشتركة) يتسع لـ 4 ميغا بايت ، وبالتالي يمكن الوصول إليها من خلال تعليمات الفرع.
متى بيانات صغيرة ، يمكن للمجمع أن يفترض أن جميع الرموز المحلية تشترك في
قيمة gp $ نفسها ، وبالتالي تقليل عدد التعليمات المطلوبة لوظيفة ما
اتصل من 4 إلى 1.

الافتراضي هو -تكبير النص.

-mcpu =نوع_ وحدة المعالجة المركزية
اضبط مجموعة التعليمات ومعلمات جدولة التعليمات لنوع الماكينة
نوع_ وحدة المعالجة المركزية. يمكنك تحديد إما EV اسم النمط أو رقم الشريحة المقابل.
يدعم مجلس التعاون الخليجي معلمات الجدولة لعائلة المعالجات EV4 و EV5 و EV6 و
يختار القيم الافتراضية لمجموعة التعليمات من المعالج الذي تحدده. لو
لم تحدد نوع المعالج ، فإن الإعدادات الافتراضية لدول مجلس التعاون الخليجي هي المعالج الذي يعمل
تم بناء المترجم.

القيم المدعومة لـ نوع_ وحدة المعالجة المركزية هي

ev4
ev45
21064
تعمل بجدولتها باعتبارها EV4 وليس لها امتدادات مجموعة التعليمات.

ev5
21164
تعمل بجدولتها باعتبارها EV5 وليس لها امتدادات مجموعة التعليمات.

ev56
21164a
يعمل بجدولته باعتباره EV5 ويدعم امتداد BWX.

pca56
21164pc
21164PC
تعمل بجدولة EV5 وتدعم امتداد BWX و MAX.

ev6
21264
يتم الجدولة على شكل EV6 وتدعم امتدادات BWX و FIX و MAX.

ev67
21264a
تعمل بجدولة EV6 وتدعم امتدادات BWX و CIX و FIX و MAX.

تدعم سلاسل الأدوات الأصلية القيمة أيضًا محليالذي يختار أفضل تصميم معماري
خيار للمعالج المضيف. -mcpu = أصلي ليس له أي تأثير إذا لم يعترف دول مجلس التعاون الخليجي
المعالج.

-mtune =نوع_ وحدة المعالجة المركزية
قم بتعيين معلمات جدولة التعليمات فقط لنوع الجهاز نوع_ وحدة المعالجة المركزية.
لم يتم تغيير مجموعة التعليمات.

تدعم سلاسل الأدوات الأصلية القيمة أيضًا محليالذي يختار أفضل تصميم معماري
خيار للمعالج المضيف. -mtune = أصلي ليس له أي تأثير إذا لم يعترف دول مجلس التعاون الخليجي
المعالج.

-الذاكرة-الكمون =الوقت
يضبط وقت الاستجابة الذي يجب أن يفترضه المجدول لمراجع الذاكرة النموذجية كما يراها
تطبيق. هذا الرقم يعتمد بشكل كبير على أنماط الوصول إلى الذاكرة المستخدمة
حسب التطبيق وحجم ذاكرة التخزين المؤقت الخارجية على الجهاز.

خيارات صالحة لـ الوقت هي

عدد
رقم عشري يمثل دورات الساعة.

L1
L2
L3
رئيسي
يحتوي المترجم على تقديرات لعدد دورات الساعة لـ EV4 "النموذجية" و
أجهزة EV5 لمخازن المستوى 1 و 2 و 3 (تسمى أيضًا Dcache و Scache و
Bcache) ، وكذلك الذاكرة الرئيسية. لاحظ أن المستوى 3 صالح فقط مع EV5.

FR30 الخيارات

تم تحديد هذه الخيارات خصيصًا لمنفذ FR30.

نموذج صغير
استخدم نموذج مساحة العنوان الصغير. يمكن أن ينتج عن هذا رمز أصغر ، لكنه يفترض
أن جميع القيم والعناوين الرمزية تناسب نطاق 20 بت.

-منو-لسيم
افترض أن دعم وقت التشغيل قد تم توفيره وبالتالي ليست هناك حاجة لتضمين ملف
مكتبة محاكاة (libsim.a) في سطر أوامر الرابط.

FRV الخيارات

-mgpr-32
استخدم فقط أول 32 سجلًا للأغراض العامة.

-mgpr-64
استخدم كافة سجلات الأغراض العامة البالغ عددها 64.

-mfpr-32
استخدم فقط أول 32 من سجلات الفاصلة العائمة.

-mfpr-64
استخدم كافة سجلات الفاصلة العائمة البالغ عددها 64.

-مشدد-تعويم
استخدم تعليمات الأجهزة لعمليات الفاصلة العائمة.

-مسنة- تعويم
استخدم إجراءات المكتبة لعمليات الفاصلة العائمة.

-مولوك- سم مكعب
تخصيص سجلات كود الشرط ديناميكيًا.

-مثبت- سم مكعب
لا تحاول تخصيص سجلات كود الشرط ديناميكيًا ، استخدم فقط "icc0" و
"fcc0".

-مدوورد
قم بتغيير ABI لاستخدام أحرف مزدوجة.

-منو- dword
لا تستخدم تعليمات كلمات مزدوجة.

- مزدوج
استخدم تعليمات النقطة العائمة المزدوجة.

-منو-ضعف
لا تستخدم تعليمات النقطة العائمة المزدوجة.

الوسائط
استخدم تعليمات الوسائط.

- وسائل الإعلام
لا تستخدم تعليمات الوسائط.

-مولد
استخدم تعليمات الضرب والجمع والطرح.

-منو مولاد
لا تستخدم تعليمات الضرب والجمع والطرح.

-mfdpic
حدد FDPIC ABI ، الذي يستخدم واصفات الوظائف لتمثيل المؤشرات إلى
المهام. بدون أي خيارات متعلقة بالموافقة المسبقة عن علم / PIE ، فهذا يعني ضمناً -fPIE. مع -fpic or
-fpie، يفترض أن إدخالات GOT والبيانات الصغيرة تقع ضمن نطاق 12 بت من GOT
العنوان الأساسي مع -fPIC or -fPIE، يتم حساب إزاحات GOT بـ 32 بت. مع
bfin-elf الهدف ، هذا الخيار يعني -مسيم.

مينلاين- PLT
تمكين تضمين إدخالات PLT في استدعاءات الوظائف للوظائف غير المعروفة
ربط محليا. ليس له تأثير بدون -mfdpic. يتم تمكينه افتراضيًا إذا كان
تحسين السرعة والتجميع للمكتبات المشتركة (على سبيل المثال ، -fPIC or -fpic)، أو
عندما يكون خيار التحسين مثل -O3 أو أعلى موجود في سطر الأوامر.

-mTLS
افترض وجود مقطع TLS كبير عند إنشاء رمز محلي لمؤشر الترابط.

-mtls
لا تفترض وجود مقطع TLS كبير عند إنشاء رمز محلي لمؤشر الترابط.

-mgprel- رو
تفعيل استخدام عمليات نقل "GPREL" في FDPIC ABI للبيانات المعروفة بوجودها في
أقسام للقراءة فقط. يتم تمكينه افتراضيًا ، باستثناء ملفات -fpic or -fpie: على الرغم من
قد يساعد في جعل جدول الأوفست العالمي أصغر حجمًا ، حيث يتم تداول تعليمات واحدة مقابل 1. مع
-fPIC or -fPIE، يتم تداول 3 تعليمات مقابل 4 تعليمات ، يمكن مشاركة أحدها بواسطة عدة أشخاص
الرموز ، ويتجنب الحاجة إلى إدخال GOT للرمز المشار إليه ، لذلك فهو
من المرجح أن يكون فوزًا. إذا لم يكن، -منو- gprel- رو يمكن استخدامها لتعطيله.

-متعدد-مكتبة-الموافقة المسبقة عن علم
الارتباط بمكتبات الموافقة المسبقة عن علم (المكتبة وليس FD). انها ضمنية من قبل -مكتبة- الموافقة المسبقة عن علم، كذلك
كما من قبل -fPIC و -fpic بدون -mfdpic. يجب ألا تضطر أبدًا إلى استخدامه بشكل صريح.

-مربوطة- fp
اتبع متطلبات EABI لإنشاء مؤشر إطار دائمًا كلما كان إطار المكدس
مخصص. يتم تمكين هذا الخيار افتراضيًا ويمكن تعطيله باستخدام
-mno- مرتبط- fp.

- مكالمات طويلة
استخدم العنونة غير المباشرة لاستدعاء الوظائف خارج وحدة الترجمة الحالية. هذه
يسمح بوضع الوظائف في أي مكان داخل مساحة العنوان 32 بت.

-مؤشرات- تسميات
حاول محاذاة التسميات بحد 8 بايت عن طريق إدخال NOPs في الحزمة السابقة.
هذا الخيار له تأثير فقط عندما يتم تمكين تعبئة VLIW. إنه لا يخلق جديدًا
الحزم. إنه يضيف فقط NOPs إلى تلك الموجودة.

-مكتبة- الموافقة المسبقة عن علم
إنشاء كود EABI مستقل عن الموضع.

-ماك -4
استخدم فقط السجلات الأربعة الأولى لمراكم الوسائط.

-ماك -8
استخدم جميع سجلات تراكم الوسائط الثمانية.

-حزمة
تعليمات حزمة VLIW.

-لا حزمة
لا تحزم تعليمات VLIW.

-منو- eflags
لا تضع علامة على مفاتيح ABI في e_flags.

-mcond- الخطوة
تفعيل استخدام تعليمات النقل الشرطي (افتراضي).

هذا المفتاح مخصص بشكل أساسي لتصحيح أخطاء المترجم ومن المحتمل إزالته في ملف
الإصدار المستقبلي.

-منو-كوند-موف
قم بتعطيل استخدام تعليمات النقل الشرطي.

هذا المفتاح مخصص بشكل أساسي لتصحيح أخطاء المترجم ومن المحتمل إزالته في ملف
الإصدار المستقبلي.

-mscc
تفعيل استخدام تعليمات المجموعة الشرطية (افتراضي).

هذا المفتاح مخصص بشكل أساسي لتصحيح أخطاء المترجم ومن المحتمل إزالته في ملف
الإصدار المستقبلي.

-منو- مجلس التعاون الجمركي
تعطيل استخدام تعليمات المجموعة الشرطية.

هذا المفتاح مخصص بشكل أساسي لتصحيح أخطاء المترجم ومن المحتمل إزالته في ملف
الإصدار المستقبلي.

-mcond-exec
تفعيل استخدام التنفيذ الشرطي (افتراضي).

هذا المفتاح مخصص بشكل أساسي لتصحيح أخطاء المترجم ومن المحتمل إزالته في ملف
الإصدار المستقبلي.

-منو كوند-إكسيك
قم بتعطيل استخدام التنفيذ المشروط.

هذا المفتاح مخصص بشكل أساسي لتصحيح أخطاء المترجم ومن المحتمل إزالته في ملف
الإصدار المستقبلي.

-مفلو-فرع
قم بتشغيل تمرير لحزم الفروع في تعليمات VLIW (افتراضي).

هذا المفتاح مخصص بشكل أساسي لتصحيح أخطاء المترجم ومن المحتمل إزالته في ملف
الإصدار المستقبلي.

-منو-فليو-فرع
لا تقم بتشغيل تصريح لتعبئة الفروع في تعليمات VLIW.

هذا المفتاح مخصص بشكل أساسي لتصحيح أخطاء المترجم ومن المحتمل إزالته في ملف
الإصدار المستقبلي.

-متعدد الشروط التنفيذية
تفعيل تحسين "&&" و "||" في التنفيذ المشروط (افتراضي).

هذا المفتاح مخصص بشكل أساسي لتصحيح أخطاء المترجم ومن المحتمل إزالته في ملف
الإصدار المستقبلي.

-منو متعدد-كوند-إكسيك
تعطيل تحسين "&&" و "||" في التنفيذ المشروط.

هذا المفتاح مخصص بشكل أساسي لتصحيح أخطاء المترجم ومن المحتمل إزالته في ملف
الإصدار المستقبلي.

-مختلط- cond-exec
تفعيل تحسينات التنفيذ الشرطي المتداخلة (افتراضي).

هذا المفتاح مخصص بشكل أساسي لتصحيح أخطاء المترجم ومن المحتمل إزالته في ملف
الإصدار المستقبلي.

-رقم-متداخل- cond-exec
تعطيل تحسينات التنفيذ الشرطي المتداخلة.

هذا المفتاح مخصص بشكل أساسي لتصحيح أخطاء المترجم ومن المحتمل إزالته في ملف
الإصدار المستقبلي.

- تحسين الغشاء
يزيل رمز التبديل هذا تعليمات "الأغشية" الزائدة عن الحاجة من التعليمات البرمجية التي تم إنشاؤها بواسطة المحول البرمجي.
يتم تمكينه بشكل افتراضي.

-من-أمثل-غشاء
يقوم هذا المفتاح بتعطيل الإزالة التلقائية لتعليمات "الغشاء" الزائدة عن الحاجة من ملف
رمز تم إنشاؤه.

-mtomcat- احصائيات
تسبب الغاز لطباعة إحصائيات القط.

-mcpu =وحدة المعالجة المركزية
حدد نوع المعالج الذي تريد إنشاء رمز له. القيم الممكنة frv, fr550,
هر, fr500, fr450, fr405, fr400, fr300 و بسيط.

جنو / لينكس الخيارات

تشبه -m تم تحديد الخيارات لأهداف GNU / Linux:

-مجليبك
استخدم مكتبة جنو سي. هذا هو الإعداد الافتراضي باستثناء تشغيل * - * - لينكس- * uclibc * و
* - * - لينكس- * أندرويد * أهداف.

-موكليبك
استخدم مكتبة uClibc C. هذا هو الإعداد الافتراضي * - * - لينكس- * uclibc * أهداف.

-مبيونيك
استخدم مكتبة Bionic C. هذا هو الإعداد الافتراضي * - * - لينكس- * أندرويد * أهداف.

-مندرويد
ترجمة التعليمات البرمجية المتوافقة مع نظام Android الأساسي. هذا هو الإعداد الافتراضي
* - * - لينكس- * أندرويد * أهداف.

عند التحويل البرمجي ، يتيح هذا الخيار -مبيونيك, -fPIC, -لا-الاستثناءات و -فنو- ​​rtti by
إفتراضي. عند الربط ، يجعل هذا الخيار سائق مجلس التعاون الخليجي يجتاز الخيارات الخاصة بنظام Android
للرابط. أخيرًا ، يتسبب هذا الخيار في أن يكون ماكرو المعالج المسبق "__ANDROID__"
يعرف.

-tno- الروبوت- سم مكعب
تعطيل تأثيرات التجميع من -مندرويد، على سبيل المثال ، لا تمكن -مبيونيك, -fPIC,
-لا-الاستثناءات و -فنو- ​​rtti بشكل افتراضي.

-tno-android-ld
تعطيل ربط تأثيرات -مندرويد، على سبيل المثال ، قم بتمرير خيارات ربط Linux القياسية إلى ملف
رابط.

H8 / 300 الخيارات

تشبه -m يتم تحديد الخيارات لتطبيقات H8 / 300:

-استراحة
تقصير بعض مراجع العنوان في وقت الارتباط ، عندما يكون ذلك ممكنًا ؛ يستخدم خيار الرابط
-الاسترخاء.

-mh قم بإنشاء رمز لـ H8 / 300H.

-الآنسة قم بإنشاء رمز لـ H8S.

مين قم بإنشاء رمز لـ H8S و H8 / 300H في الوضع العادي. يجب استخدام رمز التبديل هذا
إما مع -mh or -الآنسة.

-ms2600
قم بإنشاء رمز لـ H8S / 2600. يجب استخدام رمز التبديل هذا مع -الآنسة.

-mexr
يتم تخزين السجلات الممتدة على المكدس قبل تنفيذ الوظيفة مع الشاشة
ينسب. الخيار الافتراضي هو -mexr. هذا الخيار صالح فقط لأهداف H8S.

-منو exr
لا يتم تخزين السجلات الممتدة في المكدس قبل تنفيذ الوظيفة مع الشاشة
ينسب. الخيار الافتراضي هو -منو exr. هذا الخيار صالح فقط لأهداف H8S.

النعناع 32
اجعل بيانات "int" 32 بت افتراضيًا.

-ملاجن -300
في H8 / 300H و H8S ، استخدم نفس قواعد المحاذاة الخاصة بالموديل H8 / 300. الافتراضي
بالنسبة إلى H8 / 300H و H8S ، يتم محاذاة المسافات الطويلة والعائمة على حدود 4 بايت.
-ملاجن -300 يتسبب في محاذاتها على حدود 2 بايت. هذا الخيار ليس له تأثير
على H8 / 300.

HPPA الخيارات

تشبه -m يتم تحديد الخيارات لعائلة أجهزة الكمبيوتر HPPA:

- مسيرة =نوع العمارة
توليد رمز للعمارة المحددة. اختيارات نوع العمارة هي
1.0 لـ PA 1.0 ، 1.1 لـ PA 1.1 و 2.0 لمعالجات PA 2.0. تشير إلى
/usr/lib/sched.models على نظام HP-UX لتحديد خيار البنية المناسبة
لجهازك. تعمل التعليمات البرمجية المجمعة للبنيات ذات الأرقام الأقل على تشغيل أعلى
معماريات مرقمة ، ولكن ليس العكس.

-mpa-risc-1-0
-mpa-risc-1-1
-mpa-risc-2-0
مرادفات ل - مارس = 1.0, - مارس = 1.1و - مارس = 2.0 على التوالي.

- القفز في التأخير
تم تجاهل هذا الخيار وتوفيره لأغراض التوافق فقط.

-تعطيل- fpregs
منع استخدام سجلات الفاصلة العائمة بأي طريقة. هذا ضروري ل
تجميع النواة التي تقوم بتبديل سياق كسول لسجلات الفاصلة العائمة. لو
يمكنك استخدام هذا الخيار ومحاولة تنفيذ عمليات الفاصلة العائمة ، المترجم
يجهض.

-تعطيل-الفهرسة
منع المترجم من استخدام أوضاع عنوان الفهرسة. هذا يتجنب البعض بالأحرى
غامضة عند تجميع رمز MIG الذي تم إنشاؤه ضمن MACH.

-منو-الفضاء-ريجس
قم بإنشاء رمز يفترض أن الهدف لا يحتوي على سجلات مسافة. هذا يسمح لدول مجلس التعاون الخليجي
إنشاء مكالمات غير مباشرة أسرع واستخدام أوضاع عنوان الفهرس غير المقياس.

هذا الرمز مناسب لأنظمة ونواة المستوى 0 PA.

- مكالمات سريعة - غير مباشرة
قم بإنشاء رمز يفترض أن المكالمات لا تتخطى حدود الفضاء أبدًا. هذا يسمح لدول مجلس التعاون الخليجي
ينبعث رمز ينفذ مكالمات غير مباشرة أسرع.

لا يعمل هذا الخيار في وجود مكتبات مشتركة أو وظائف متداخلة.

- المدى الثابت =نطاق التسجيل
إنشاء رمز يعامل نطاق السجل المحدد كسجلات ثابتة. سجل ثابت
هي تلك التي لا يمكن لمخصص السجل استخدامها. هذا مفيد عند تجميع النواة
الشفرة. يتم تحديد نطاق التسجيل كسجلين مفصولة بشرطة. عديد
يمكن تحديد نطاقات التسجيل مفصولة بفاصلة.

-متجر تحميل طويل
قم بإنشاء حمل من 3 تعليمات وتخزين التسلسلات كما هو مطلوب أحيانًا بواسطة HP-UX 10
رابط. هذا يعادل +k خيار لمجمعي HP.

وقت التشغيل
استخدم اصطلاحات الاتصال المحمولة التي اقترحتها HP لأنظمة ELF.

-مغاس
تمكين استخدام توجيهات المجمّع التي يفهمها GAS فقط.

-جدولة =نوع وحدة المعالجة المركزية
جدول الكود وفقًا للقيود الخاصة بنوع الجهاز نوع وحدة المعالجة المركزية. الخيارات
لل نوع وحدة المعالجة المركزية هي 700 7100, 7100LC, 7200, 7300 و 8000. تشير إلى
/usr/lib/sched.models على نظام HP-UX لتحديد خيار الجدولة المناسب لـ
جهازك. الجدولة الافتراضية هي 8000.

-mlinker-opt
قم بتمكين مرور التحسين في رابط HP-UX. لاحظ أن هذا يجعل التصحيح الرمزي
مستحيل. كما أنه يتسبب في حدوث خلل في الوصلات HP-UX 8 و HP-UX 9
إعطاء رسائل خطأ وهمية عند ربط بعض البرامج.

-مسنة- تعويم
توليد الناتج يحتوي على المكالمات مكتبة للالنقطة العائمة. : تحذير المطلوب
المكتبات غير متوفرة لجميع أهداف HPPA. عادة ما تكون مرافق
يتم استخدام مترجم C المعتاد للجهاز ، ولكن لا يمكن القيام بذلك بشكل مباشر
التحويل البرمجي. يجب عليك عمل الترتيبات الخاصة بك لتوفير مكتبة مناسبة
وظائف للترجمة المتقاطعة.

-مسنة- تعويم يغير اصطلاح الاستدعاء في ملف الإخراج ؛ لذلك ، فهي فقط
مفيد إذا كنت تقوم بالتجميع من جميع من برنامج بهذا الخيار. على وجه الخصوص ، تحتاج إلى
جمع libgcc.a، المكتبة التي تأتي مع دول مجلس التعاون الخليجي ، مع -مسنة- تعويم من أجل هذا
للعمل.

-msio
قم بإنشاء المحدد مسبقًا ، "_SIO" ، لخادم IO. الافتراضي هو -موسيو. هذا يولد
المعرفات المسبقة ، "__hp9000s700" ، "__hp9000s700__" و "_WSIO" لمحطة العمل IO.
تتوفر هذه الخيارات ضمن HP-UX و HI-UX.

-مجنو- لد
استخدم الخيارات الخاصة بـ GNU ld. هذا يمر -مشاركة إلى ld عند بناء ملف
مكتبة. هذا هو الإعداد الافتراضي عندما يتم تكوين GCC ، بشكل صريح أو ضمني ، باستخدام
رابط جنو. هذا الخيار لا يؤثر على أي ld يسمى؛ إنه يغير فقط ما
يتم تمرير المعلمات إلى ذلك ld. ld ما يسمى يتم تحديده بواسطة
--مع- لد config ، ومسار بحث برنامج GCC ، وأخيرًا عن طريق المستخدم PATH.
يمكن طباعة الرابط الذي تستخدمه GCC باستخدام التي دول مجلس التعاون الخليجي -طباعة-اسم البرنامج = ld`. هذا
يتوفر الخيار فقط في إصدار 64 بت من HP-UX GCC ، أي تم تكوينه باستخدام
hppa * 64 * - * - hpux *.

-mhp-ld
استخدم الخيارات الخاصة بـ HP ld. هذا يمر -b إلى ld عند بناء مكتبة مشتركة
ويمر + قبول عدم تطابق نوع إلى ld على جميع الروابط. هذا هو الإعداد الافتراضي عندما يكون GCC
تم تكوينه ، بشكل صريح أو ضمني ، باستخدام رابط HP. هذا الخيار لا يؤثر
التي ld يسمى؛ إنه يغير فقط المعلمات التي يتم تمريرها إلى ذلك ld. ld
ما يسمى يتم تحديده بواسطة --مع- لد تكوين الخيار ، برنامج البحث في دول مجلس التعاون الخليجي
المسار ، وأخيرًا بواسطة المستخدم PATH. يمكن طباعة الرابط الذي تستخدمه GCC باستخدام
التي دول مجلس التعاون الخليجي -طباعة-اسم البرنامج = ld`. هذا الخيار متاح فقط في HP-UX 64 بت
دول مجلس التعاون الخليجي ، أي تكوين مع hppa * 64 * - * - hpux *.

- مكالمات طويلة
توليد التعليمات البرمجية التي تستخدم تسلسل المكالمات الطويلة. هذا يضمن أن تكون المكالمة دائمًا قادرة
للوصول بذرة ولدت رابط. الإعداد الافتراضي هو إنشاء مكالمات طويلة فقط عندما يكون ملف
المسافة من موقع الاستدعاء إلى بداية الوظيفة أو وحدة الترجمة ، مثل
قد تكون الحالة ، تتجاوز الحد المحدد مسبقًا الذي تم تعيينه بواسطة نوع الفرع المستخدم. ال
حدود المكالمات العادية هي 7,600,000،240,000،2.0 و XNUMX،XNUMX بايت ، على التوالي لـ PA XNUMX
وبنى PA 1.X. تقتصر عمليات Sibcalls دائمًا على 240,000،XNUMX بايت.

يتم قياس المسافات من بداية الوظائف عند استخدام
- أقسام الوظائف الخيار ، أو عند استخدام ملف -مغاس و وقت التشغيل الخيارات
معًا تحت HP-UX مع رابط SOM.

عادة لا يكون من المرغوب فيه استخدام هذا الخيار لأنه يحط من الأداء. لكن،
قد يكون مفيدًا في التطبيقات الكبيرة ، لا سيما عند استخدام الارتباط الجزئي
بناء التطبيق.

تعتمد أنواع المكالمات الطويلة المستخدمة على قدرات المجمّع والرابط ،
ونوع الكود الذي يتم إنشاؤه. التأثير على الأنظمة التي تدعم طويلا
يجب أن تكون المكالمات المطلقة ، وفرق رمز الموافقة المسبقة عن علم طويل أو الاستدعاءات النسبية للكمبيوتر
صغير نسبيًا. ومع ذلك ، يتم استخدام استدعاء غير مباشر على أنظمة ELF 32 بت في كود الموافقة المسبقة عن علم
وهي طويلة جدًا.

-مونكس =يونكس- الأمراض المنقولة جنسيا
قم بإنشاء محددات المترجم مسبقًا وحدد ملف بدء لمعيار UNIX المحدد.
اختيارات يونكس- الأمراض المنقولة جنسيا هي 93, 95 و 98. 93 مدعوم في جميع إصدارات HP-UX.
95 متوفر في HP-UX 10.10 والإصدارات الأحدث. 98 متوفر في HP-UX 11.11 والإصدارات الأحدث.
القيم الافتراضية هي 93 لـ HP-UX 10.00 ، 95 لـ HP-UX 10.10 حتى 11.00 و 98
لـ HP-UX 11.11 والإصدارات الأحدث.

-مونكس = 93 يوفر نفس التعريفات المسبقة مثل GCC 3.3 و 3.4. -مونكس = 95 ويوفر
التعريفات المسبقة الإضافية لـ "XOPEN_UNIX" و "_XOPEN_SOURCE_EXTENDED" ، وملف البداية
unix95.o. -مونكس = 98 يوفر تعريفات إضافية مسبقة لـ "_XOPEN_UNIX" ،
"_XOPEN_SOURCE_EXTENDED" و "_INCLUDE__STDC_A1_SOURCE" و "_INCLUDE_XOPEN_SOURCE_500" ،
وملف البداية unix98.o.

أنه مهم لاحظ أن هذا الخيار يغير واجهات المكتبات المختلفة
الروتين. كما أنه يؤثر على السلوك التشغيلي لمكتبة C. هكذا، أقصى
الحرص مطلوب في استخدام هذا الخيار.

يجب اختبار رمز المكتبة الذي يهدف إلى العمل مع أكثر من معيار UNIX ،
تعيين واستعادة المتغير "__xpg4_extended_mask" بالشكل المناسب. معظم برمجيات جنو
لا تقدم هذه القدرة.

-نوليبد
قم بإيقاف إنشاء خيارات الارتباط للبحث في libdld.sl عندما يكون ملف -ثابتة الخيار
المحدد على HP-UX 10 والإصدارات الأحدث.

-ثابتة
يعتمد تطبيق HP-UX لـ setlocale في libc على libdld.sl. هناك
ليس نسخة أرشيفية من libdld.sl. وهكذا ، عندما -ثابتة تم تحديد الخيار ،
هناك حاجة إلى خيارات ارتباط خاصة لحل هذه التبعية.

في HP-UX 10 والإصدارات الأحدث ، يضيف برنامج التشغيل GCC الخيارات الضرورية للربط بها
libdld.sl عندما يكون ملف -ثابتة تم تحديد الخيار. يؤدي هذا إلى الملف الثنائي الناتج إلى
كن ديناميكيًا. على منفذ 64 بت ، تنشئ الروابط ثنائيات ديناميكية بشكل افتراضي في
بأي حال. ال -نوليبد يمكن استخدام الخيار لمنع برنامج التشغيل GCC من الإضافة
خيارات الارتباط هذه.

-الخيوط
أضف دعمًا لتعدد مؤشرات الترابط باستخدام امتداد DCE خيط مكتبة تحت HP-UX. هذا الخيار
تعيين إشارات لكل من المعالج والرابط.

IA-64 الخيارات

هذه هي -m خيارات محددة لمعمارية Intel IA-64.

-mbig-endian
إنشاء رمز لهدف كبير. هذا هو الإعداد الافتراضي لـ HP-UX.

-ملل-endian
قم بإنشاء رمز لهدف صغير. هذا هو الإعداد الافتراضي لـ AIX5 و GNU / Linux.

-مجنو- as
-منو-جنو- مثل
قم بإنشاء (أو عدم إنشاء) كود لمجمع جنو. هذا هو الافتراضي.

-مجنو- لد
-منو-جنو-لد
أنشئ (أو لا تفعل) رمز رابط جنو. هذا هو الافتراضي.

-منو الموافقة المسبقة عن علم
قم بإنشاء رمز لا يستخدم سجل مؤشر عمومي. والنتيجة ليست الموقف
رمز مستقل ، وينتهك IA-64 ABI.

-متطاير- asm- توقف
-منو- متطاير- asm- توقف
قم بإنشاء (أو لا تفعل) نقطة توقف مباشرة قبل وبعد عبارات ASM المتقلبة.

-أسماء-تسجيل
-رقم-تسجيل-الأسماء
توليد (أو لا) in, الكونغرسو خارج تسجيل أسماء السجلات المكدسة. هذه
قد يجعل إخراج المجمّع أكثر قابلية للقراءة.

-منو- sdata
-msdata
تعطيل (أو تمكين) التحسينات التي تستخدم قسم البيانات الصغيرة. قد يكون هذا مفيدا
للعمل حول أخطاء المحسن.

-مستمر- GP
قم بإنشاء رمز يستخدم قيمة مؤشر عام واحدة ثابتة. هذا مفيد عندما
تجميع كود النواة.

-تلقائي الموافقة المسبقة عن علم
إنشاء التعليمات البرمجية التي يمكن تغيير مكانها ذاتيًا. هذا يعني -مستمر- GP. وهذا مفيد
عند تجميع كود البرنامج الثابت.

-minline-float-divide-min-latency
قم بإنشاء التعليمات البرمجية للأقسام المضمنة لقيم الفاصلة العائمة باستخدام أدنى زمن انتقال
الخوارزمية.

-minline-float-divide-max-الإنتاجية
قم بإنشاء رمز للقسامات المضمنة لقيم الفاصلة العائمة باستخدام الحد الأقصى من الإنتاجية
الخوارزمية.

-mno-inline-float-divide
لا تقم بإنشاء تعليمات برمجية مضمنة لأقسام قيم الفاصلة العائمة.

-minline-int-divide-min-latency
قم بإنشاء رمز للأقسام المضمنة لقيم الأعداد الصحيحة باستخدام أدنى زمن انتقال
الخوارزمية.

-minline-int-divide-max-الإنتاجية
قم بإنشاء رمز للأقسام المضمنة لقيم الأعداد الصحيحة باستخدام الحد الأقصى للصبيب
الخوارزمية.

-mno-inline-int-divide
لا تقم بإنشاء رمز مضمّن لأقسام قيم الأعداد الصحيحة.

-minline-sqrt-min-latency
قم بإنشاء رمز للجذور التربيعية المضمنة باستخدام الحد الأدنى من خوارزمية زمن الوصول.

-minline-sqrt-max-الإنتاجية
قم بإنشاء رمز للجذور التربيعية المضمنة باستخدام خوارزمية الحد الأقصى للإنتاجية.

-mno- مضمنة- sqrt
لا تقم بإنشاء تعليمات برمجية مضمنة لـ "sqrt".

-مفوس-ماد
-منو-تنصهر-ماد
افعل (لا) تنشئ رمزًا يستخدم الضرب / الجمع المصهور أو الضرب / الطرح
تعليمات. الافتراضي هو استخدام هذه التعليمات.

-mno-dwarf2-asm
-mdwarf2-asm
لا (أو تفعل) إنشاء رمز المجمع لمعلومات تصحيح رقم سطر DWARF 2.
قد يكون هذا مفيدًا عند عدم استخدام مُجمّع جنو.

-مبكرا-توقف-بت
-Mno-early-stop-bits
السماح بوضع وحدات بت التوقف في وقت أبكر من السابقة مباشرة للتعليمات التي
أثار بت التوقف. يمكن أن يؤدي ذلك إلى تحسين جدولة التعليمات ، ولكن ليس دائمًا
القيام بذلك.

- المدى الثابت =نطاق التسجيل
إنشاء رمز يعامل نطاق السجل المحدد كسجلات ثابتة. سجل ثابت
هي تلك التي لا يمكن لمخصص السجل استخدامها. هذا مفيد عند تجميع النواة
الشفرة. يتم تحديد نطاق التسجيل كسجلين مفصولة بشرطة. عديد
يمكن تحديد نطاقات التسجيل مفصولة بفاصلة.

-mtls-size =حجم tls
حدد حجم البت لإزاحات TLS الفورية. القيم الصالحة هي 14 و 22 و 64.

-mtune =نوع وحدة المعالجة المركزية
قم بضبط جدولة التعليمات لوحدة معالجة مركزية معينة ، القيم الصالحة هي إيتانيوم,
إيتانيوم 1, ميرسيد, إيتانيوم 2و ماكينلي.

-milp32
-mlp64
قم بإنشاء رمز لبيئة 32 بت أو 64 بت. تحدد بيئة 32 بت int ،
طويل ومؤشر إلى 32 بت. تعيين بيئة 64 بت int إلى 32 بت وطويل و
المؤشر إلى 64 بت. هذه علامات خاصة بـ HP-UX.

-رقم-جدول-بر-بيانات-المواصفات
-msched-br-data-spec
(Dis / En) جدولة البيانات المضاربة قبل إعادة التحميل. ينتج عن هذا توليد
تعليمات "ld.a" وتعليمات الفحص المقابلة ("ld.c" / "chk.a"). ال
الافتراضي هو "تعطيل".

-msched-ar-data-spec
-رقم-جدول-ار-بيانات-المواصفات
(En / Dis) جدولة بيانات مضاربة قادرة على إعادة التحميل. ينتج عن هذا توليد
تعليمات "ld.a" وتعليمات الفحص المقابلة ("ld.c" / "chk.a"). ال
الافتراضي هو "تمكين".

-منو-جدولة-تحكم-المواصفات
-مشروع-التحكم-المواصفات
(Dis / En) قادر على التحكم في جدولة المضاربة. هذه الميزة متاحة فقط أثناء
جدولة المنطقة (أي قبل إعادة التحميل). ينتج عن هذا إنشاء "ld.s"
التعليمات وإرشادات الفحص المقابلة "chk.s". الافتراضي هو
'إبطال'.

-msched-br-in-data-spec
-رقم-جدول-بر-في-مواصفات-البيانات
(En / Dis) جدولة مضاربة قادرة على التعليمات التي تعتمد على البيانات
أحمال المضاربة قبل إعادة التحميل. هذا فعال فقط مع -msched-br-data-spec
ممكن. الافتراضي هو "تمكين".

-msched-ar-in-data-spec
-منو-جدول-في-بيانات-المواصفات
(En / Dis) جدولة مضاربة قادرة على التعليمات التي تعتمد على البيانات
أحمال المضاربة بعد إعادة التحميل. هذا فعال فقط مع -msched-ar-data-spec
ممكن. الافتراضي هو "تمكين".

-مشروع-في-السيطرة-المواصفات
-الجدول الزمني في السيطرة المواصفات
(En / Dis) جدولة مضاربة قادرة على التعليمات التي تعتمد على
مراقبة الأحمال التخمينية. هذا فعال فقط مع -مشروع-التحكم-المواصفات تمكين.
الافتراضي هو "تمكين".

-رقم-جدول-يفضل-غير-بيانات-المواصفات
-msched-prefer-non-data-spec-insns
في حالة التمكين ، يتم اختيار إرشادات المضاربة بالبيانات للجدول الزمني فقط في حالة عدم وجودها
خيارات أخرى في الوقت الحالي. هذا يجعل استخدام تكهنات البيانات أكثر من ذلك بكثير
تحفظا. الافتراضي هو "تعطيل".

-رقم-جدول-يفضل-عدم-تحكم-المواصفات
-msched-prefer-non-control-spec-insns
في حالة التمكين ، يتم اختيار تعليمات التحكم - المضاربة للجدول الزمني فقط إذا كانت موجودة
لا توجد خيارات أخرى في الوقت الحالي. هذا يجعل استخدام المضاربة الضابطة كثيرًا
أكثر تحفظا. الافتراضي هو "تعطيل".

-رقم-جدول-عد-المواصفات-في-المسار الحرج
-msched-count-spec-in -itical-path
في حالة التمكين ، يتم اعتبار التبعيات التخمينية أثناء حساب
أولويات التعليمات. هذا يجعل استخدام المضاربة أكثر قليلاً
تحفظا. الافتراضي هو "تعطيل".

-msched- المواصفات- ldc
استخدم فحصًا بسيطًا لتكهنات البيانات. هذا الخيار بشكل افتراضي.

-msched-control-spec-ldc
استخدم فحصًا بسيطًا للتحكم في المضاربة. هذا الخيار بشكل افتراضي.

-msched-stop-bits- بعد-كل-دورة
ضع نقطة توقف بعد كل دورة عند الجدولة. هذا الخيار بشكل افتراضي.

-msched-fp-mem-deps-zero-cost
افترض أن مخازن وأحمال الفاصلة العائمة من غير المحتمل أن تتسبب في حدوث تعارض عندما
وضعت في نفس مجموعة التعليمات. هذا الخيار معطل افتراضيا.

-msel-Sched-dont-check-control-spec
توليد الشيكات للتحكم في المضاربة في الجدولة الانتقائية. هذا العلم
معطل بشكل افتراضي.

-msched-max-memory-insns =ماكس إنس
تحديد عدد إدخالات الذاكرة لكل مجموعة تعليمات ، مع إعطاء أولوية أقل لـ
تشير الذاكرة اللاحقة إلى محاولة الجدولة في نفس مجموعة التعليمات.
كثيرًا ما يكون مفيدًا لمنع تضارب ذاكرة التخزين المؤقت للبنك. القيمة الافتراضية هي 1.

-msched-max-memory-insns-hard-limit
يجعل الحد المحدد بواسطة msched-max-memory-insns حد صارم ، عدم السماح بالمزيد
من هذا الرقم في مجموعة التعليمات. خلاف ذلك ، فإن الحد هو "لينة" ، بمعنى
أن العمليات غير المتعلقة بالذاكرة مفضلة عند الوصول إلى الحد الأقصى ، ولكن الذاكرة
قد لا يزال من المقرر العمليات.

LM32 الخيارات

تشبه -m يتم تحديد الخيارات لهندسة LatticeMico32:

-يمكن تحويل برميل
تفعيل تعليمات تحويل البرميل.

تمكين -mdivide
تفعيل تعليمات القسمة والمعامل.

-ممكن مضاعفة
تفعيل تعليمات الضرب.

-تمكين التمديد
تفعيل تعليمات تمديد التوقيع.

- تمكين المستخدم
تمكين التعليمات المعرفة من قبل المستخدم.

M32C الخيارات

-mcpu =الاسم
حدد وحدة المعالجة المركزية التي تم إنشاء الرمز لها. الاسم قد تكون واحدة من r8c لـ R8C / Tiny
سلسلة، m16c لسلسلة M16C (حتى / 60) ، م 32 سم لسلسلة M16C / 80 ، أو m32c
لسلسلة M32C / 80.

-مسيم
يحدد أن البرنامج سيتم تشغيله على جهاز المحاكاة. هذا يسبب بديل
مكتبة وقت التشغيل المراد ربطها والتي تدعم ، على سبيل المثال ، ملف الإدخال / الإخراج. لا يجب عليك
استخدم هذا الخيار عند إنشاء برامج تعمل على أجهزة حقيقية ؛ يجب عليك أن
توفير مكتبة وقت التشغيل الخاصة بك لأي وظائف I / O مطلوبة.

ميمريغس =عدد
يحدد عدد المسجلات الزائفة المستندة إلى الذاكرة التي تستخدم GCC أثناء إنشاء الكود.
يتم استخدام هذه السجلات الزائفة مثل السجلات الحقيقية ، لذلك هناك مقايضة بين
قدرة دول مجلس التعاون الخليجي على ملاءمة الكود في السجلات المتاحة ، وعقوبة الأداء البالغة
باستخدام الذاكرة بدلاً من السجلات. لاحظ أن جميع الوحدات في البرنامج يجب أن تكون
تم تجميعها بنفس القيمة لهذا الخيار. لهذا السبب ، يجب ألا تستخدم هذا
الخيار مع مكتبات وقت التشغيل الافتراضية لدول مجلس التعاون الخليجي.

M32R / د الخيارات

تشبه -m تم تحديد الخيارات لهياكل Renesas M32R / D:

-m32r2
قم بإنشاء رمز لـ M32R / 2.

-m32rx
قم بإنشاء رمز لـ M32R / X.

-m32r
قم بإنشاء رمز لـ M32R. هذا هو الافتراضي.

-mmodel = صغير
افترض أن جميع الكائنات تعيش في أقل من 16 ميغا بايت من الذاكرة (بحيث يمكن أن تكون عناوينها
محملة بالتعليمات "ld24") ، وافترض أن جميع الإجراءات الفرعية يمكن الوصول إليها باستخدام
تعليمات "bl". هذا هو الافتراضي.

يمكن تعيين قابلية عنونة كائن معين باستخدام سمة "النموذج".

-mmodel = متوسط
افترض أن الكائنات قد تكون في أي مكان في مساحة العنوان 32 بت (ينشئ المترجم
تعليمات "seth / add3" لتحميل عناوينهم) ، وافترض أن جميع الإجراءات الفرعية
يمكن الوصول إليه باستخدام التعليمات "bl".

-mmodel = كبير
افترض أن الكائنات قد تكون في أي مكان في مساحة العنوان 32 بت (ينشئ المترجم
تعليمات "seth / add3" لتحميل عناوينهم) ، وافترض أن الإجراءات الفرعية قد لا تكون كذلك
يمكن الوصول إليه باستخدام تعليمات "bl" (يولد المترجم البيانات أبطأ بكثير
تسلسل تعليمات "seth / add3 / jl").

-msdata = لا شيء
تعطيل استخدام منطقة البيانات الصغيرة. يتم وضع المتغيرات في أحد ".data" أو ".bss" أو
".rodata" (ما لم يتم تحديد سمة "section"). هذا هو الافتراضي.

تتكون منطقة البيانات الصغيرة من أقسام ".sdata" و ".sbss". قد تكون الكائنات
وضع صراحة في منطقة البيانات الصغيرة مع سمة "القسم" باستخدام واحدة من هؤلاء
أقسام.

-msdata = sdata
ضع بيانات عالمية وثابتة صغيرة في منطقة البيانات الصغيرة ، لكن لا تولد بيانات خاصة
رمز للإشارة إليهم.

-msdata = استخدام
ضع بيانات عالمية وثابتة صغيرة في منطقة البيانات الصغيرة ، وقم بإنشاء بيانات خاصة
تعليمات للإشارة إليها.

-G NUM
ضع كائنات عامة وثابتة أقل من أو تساوي NUM بايت في البيانات الصغيرة أو
أقسام BSS بدلاً من أقسام البيانات العادية أو أقسام BSS. القيمة الافتراضية لـ NUM is
8. ال -msdata يجب تعيين الخيار على واحد من سداتا or استعمال لهذا الخيار لديه أي
تأثير.

يجب تجميع جميع الوحدات بنفس الطريقة -G NUM القيمة. تجميع مع مختلف
قيم NUM قد تعمل أو لا تعمل ؛ إذا لم يكن الرابط يعطي خطأ
رسالة --- لم يتم إنشاء رمز غير صحيح.

-mdebug
يجعل الكود الخاص بـ M32R في المترجم يعرض بعض الإحصائيات التي قد تساعد
في برامج التصحيح.

الحلقات الخبيثة
قم بمحاذاة جميع الحلقات مع حد 32 بايت.

حلقات -mno- محاذاة
لا تفرض محاذاة 32 بايت للحلقات. هذا هو الافتراضي.

-معدل المشكلة =عدد
القضية عدد تعليمات لكل دورة. عدد يمكن أن يكون 1 أو 2 فقط.

- تكلفة الامتياز =عدد
عدد يمكن أن تكون 1 أو 2. إذا كانت 1 ، فيُفضل أن تكون الفروع على الشرطية
الكود ، إذا كان 2 ، فإن العكس ينطبق.

-mflush-trap =عدد
يحدد رقم الملائمة المراد استخدامه لمسح ذاكرة التخزين المؤقت. الافتراضي هو 12. صالح
الأرقام بين 0 و 15 ضمناً.

-منو-دافق- فخ
يحدد أنه لا يمكن مسح ذاكرة التخزين المؤقت باستخدام الملائمة.

-mflush- func =الاسم
يحدد اسم وظيفة نظام التشغيل لاستدعاء لمسح ذاكرة التخزين المؤقت. ال
الافتراضي هو _مخبأ دافق، ولكن يتم استخدام استدعاء الوظيفة فقط في حالة عدم توفر الملائمة.

-منو-دافق- func
يشير إلى عدم وجود وظيفة نظام تشغيل لمسح ذاكرة التخزين المؤقت.

M680x0 الخيارات

هذه هي -m خيارات محددة لمعالجات M680x0 و ColdFire. الإعدادات الافتراضية
تعتمد على العمارة التي تم اختيارها عند تكوين المترجم ؛ الافتراضات
فيما يلي الخيارات الأكثر شيوعًا.

- مسيرة =قوس
قم بإنشاء رمز خاص بهندسة مجموعة تعليمات M680x0 أو ColdFire محددة.
القيم المسموح بها لـ قوس للهياكل M680x0 هي: 68000, 68010, 68020, 68030,
68040, 68060 و cpu32. يتم اختيار بنى ColdFire وفقًا لـ Freescale
تصنيف ISA والقيم المسموح بها هي: عيسى, isaaplus, إيزاب و إسحاق.

يحدد GCC الماكرو "__mcfقوس__" عندما يتم إنشاء رمز لـ ColdFire
استهداف. ال قوس في هذا الماكرو هو واحد من -مارس الحجج المذكورة أعلاه.

عند استخدامها معًا ، -مارس و -mtune حدد رمزًا يعمل على عائلة مماثلة
المعالجات ولكن هذا هو الأمثل لهندسة معمارية دقيقة معينة.

-mcpu =وحدة المعالجة المركزية
أنشئ رمزًا لمعالج M680x0 أو ColdFire محددًا. ال M680x0 وحدة المعالجة المركزيةق هي:
68000, 68010, 68020, 68030, 68040, 68060, 68302, 68332 و cpu32. كولد فاير وحدة المعالجة المركزيةs
من خلال الجدول أدناه ، والذي يصنف أيضًا وحدات المعالجة المركزية إلى عائلات:

أسرة : - وحدة المعالجة المركزية الحجج
51 : 51 51ac 51ag 51 سي 51em 51je 51jf 51jg 51jm 51mm 51qe 51qm
5206 : 5202 5204 5206
5206e : 5206e
5208 : 5207 5208
5211a : 5210a 5211a
5213 : 5211 5212 5213
5216 : 5214 5216
52235 : 52230 52231 52232 52233 52234 52235
5225 : 5224 5225
52259 : 52252 52254 52255 52256 52258 52259
5235 : 5232 5233 5234 5235 523x
5249 : 5249
5250 : 5250
5271 : 5270 5271
5272 : 5272
5275 : 5274 5275
5282 : 5280 5281 5282 528x
53017 : 53011 53012 53013 53014 53015 53016 53017
5307 : 5307
5329 : 5327 5328 5329 532x
5373 : 5372 5373 537x
5407 : 5407
5475 : 5470 5471 5472 5473 5474 5475 547x 5480 5481 5482 5483 5484 5485

-mcpu =وحدة المعالجة المركزية يتجاوز - مسيرة =قوس if قوس متوافق مع وحدة المعالجة المركزية. مجموعات أخرى من
- وحدة المعالجة المركزية و -مارس مرفوضة.

يحدد GCC الماكرو "__mcf_cpu_وحدة المعالجة المركزية" عندما هدف كولدفاير وحدة المعالجة المركزية تم الإختيار. كذلك
يعرّف "__mcf_family_أسرة"حيث قيمة للعائلات في الجدول أعلاه.

-mtune =لحن
قم بضبط الكود الخاص بهندسة معمارية دقيقة معينة ضمن القيود التي وضعها -مارس
و - وحدة المعالجة المركزية. البنى الدقيقة M680x0 هي: 68000, 68010, 68020, 68030, 68040,
68060 و cpu32. الهندسة المعمارية الدقيقة لـ ColdFire هي: cfv1, cfv2, cfv3, cfv4 و
cfv4e.

يمكنك أيضا استخدام - mtune = 68020-40 للرمز الذي يجب أن يعمل بشكل جيد نسبيًا على 68020 ،
68030 و 68040 الأهداف. - mtune = 68020-60 مشابه ولكنه يتضمن 68060 هدفًا كـ
حسنا. يحدد هذان الخياران نفس قرارات الضبط مثل -m68020-40 و -m68020-60
على التوالي.

يحدد GCC وحدات الماكرو "__mcقوس" و "__mcقوس__" عند ضبط العمارة 680x0
قوس. كما يعرّف "mcقوس" ما لم يكن أي منهما -انسى أو غير جنو -std يستخدم الخيار.
إذا تم ضبط GCC لمجموعة من البنى ، على النحو المحدد بواسطة - mtune = 68020-40 or
- mtune = 68020-60، فهو يحدد وحدات الماكرو لكل بنية في النطاق.

يحدد GCC أيضًا الماكرو "__mأوارش__" عند ضبط معمارية ColdFire الدقيقة
أوارش، حيث أوارش هي إحدى الحجج المذكورة أعلاه.

م 68000
-مك 68000
توليد الإخراج لـ 68000. هذا هو الإعداد الافتراضي عندما يتم تكوين المترجم من أجل
أنظمة تعتمد على 68000. إنه يعادل - مارس = 68000.

استخدم هذا الخيار لوحدات التحكم الدقيقة ذات النواة 68000 أو EC000 ، بما في ذلك 68008 ،
68302 و 68306 و 68307 و 68322 و 68328 و 68356.

م 68010
توليد الإخراج لـ 68010. هذا هو الإعداد الافتراضي عندما يتم تكوين المترجم من أجل
أنظمة تعتمد على 68010. إنه يعادل - مارس = 68010.

م 68020
-مك 68020
توليد الإخراج لـ 68020. هذا هو الإعداد الافتراضي عندما يتم تكوين المترجم من أجل
أنظمة تعتمد على 68020. إنه يعادل - مارس = 68020.

م 68030
توليد الإخراج لـ 68030. هذا هو الإعداد الافتراضي عندما يتم تكوين المترجم من أجل
أنظمة تعتمد على 68030. إنه يعادل - مارس = 68030.

م 68040
توليد الإخراج لـ 68040. هذا هو الإعداد الافتراضي عندما يتم تكوين المترجم من أجل
أنظمة تعتمد على 68040. إنه يعادل - مارس = 68040.

يمنع هذا الخيار استخدام تعليمات 68881/68882 التي يجب محاكاتها
برنامج على 68040. استخدم هذا الخيار إذا كان 68040 الخاص بك لا يحتوي على رمز لمحاكاته
تلك التعليمات.

م 68060
توليد الإخراج لـ 68060. هذا هو الإعداد الافتراضي عندما يتم تكوين المترجم من أجل
أنظمة تعتمد على 68060. إنه يعادل - مارس = 68060.

يمنع هذا الخيار استخدام تعليمات 68020 و 68881/68882 التي يجب أن تكون كذلك
تمت محاكاته بواسطة برنامج على 68060. استخدم هذا الخيار إذا كان 68060 الخاص بك لا يحتوي على رمز
لمحاكاة تلك التعليمات.

- وحدة المعالجة المركزية 32
توليد الإخراج لوحدة المعالجة المركزية 32. هذا هو الإعداد الافتراضي عندما يتم تكوين المترجم من أجل
الأنظمة المستندة إلى CPU32. إنه يعادل - مسيرة = وحدة المعالجة المركزية 32.

استخدم هذا الخيار للميكروكونترولر مع CPU32 أو CPU32 + core ، بما في ذلك 68330 ،
68331 و 68332 و 68333 و 68334 و 68336 و 68340 و 68341 و 68349 و 68360.

م 5200
قم بتوليد إخراج لوحدة المعالجة المركزية ColdFire 520X. هذا هو الإعداد الافتراضي عندما يكون المترجم
تم تكوينه للأنظمة المستندة إلى 520X. إنه يعادل - وحدة المعالجة المركزية = 5206، وهو الآن
تم إهماله لصالح هذا الخيار.

استخدم هذا الخيار لوحدة تحكم دقيقة ذات نواة 5200 ، بما في ذلك MCF5202 و MCF5203 و
MCF5204 و MCF5206.

-m5206e
قم بتوليد مخرجات لوحدة المعالجة المركزية ColdFire 5206e. الخيار الآن مهمل لصالح
أي ما يعادل - وحدة المعالجة المركزية = 5206 هـ.

-m528x
قم بتوليد الإخراج لعضو من عائلة ColdFire 528X. الخيار الآن
مهملة لصالح ما يعادلها - وحدة المعالجة المركزية = 528x.

م 5307
توليد الإخراج لوحدة المعالجة المركزية ColdFire 5307. تم إهمال الخيار الآن لصالح
معادل - وحدة المعالجة المركزية = 5307.

م 5407
توليد الإخراج لوحدة المعالجة المركزية ColdFire 5407. تم إهمال الخيار الآن لصالح
معادل - وحدة المعالجة المركزية = 5407.

-mcfv4e
قم بإنشاء مخرجات لوحدة المعالجة المركزية من عائلة ColdFire V4e (مثل 547x / 548x). وهذا يشمل استخدام
تعليمات الأجهزة العائمة. الخيار يعادل - وحدة المعالجة المركزية = 547x، و يكون
الآن لصالح هذا الخيار.

-m68020-40
قم بتوليد الإخراج لـ 68040 ، بدون استخدام أي من الإرشادات الجديدة. هذه النتائج
في التعليمات البرمجية التي يمكن تشغيلها بكفاءة نسبيًا على 68020/68881 أو 68030 أو a
68040. يستخدم الكود الذي تم إنشاؤه بالفعل تعليمات 68881 التي تمت محاكاتها في
68040.

الخيار يعادل - مارس = 68020 - mtune = 68020-40.

-m68020-60
قم بتوليد الإخراج لـ 68060 ، بدون استخدام أي من الإرشادات الجديدة. هذه النتائج
في التعليمات البرمجية التي يمكن تشغيلها بكفاءة نسبيًا على 68020/68881 أو 68030 أو a
68040. يستخدم الكود الذي تم إنشاؤه بالفعل تعليمات 68881 التي تمت محاكاتها في
68060.

الخيار يعادل - مارس = 68020 - mtune = 68020-60.

-مشدد-تعويم
م 68881
إنشاء تعليمات الفاصلة العائمة. هذا هو الإعداد الافتراضي لـ 68020 وما فوق ، و
لأجهزة ColdFire التي تحتوي على FPU. يقوم بتعريف الماكرو "__HAVE_68881__" في
أهداف M680x0 و "__mcffpu__" على أهداف ColdFire.

-مسنة- تعويم
لا تقم بإنشاء تعليمات الفاصلة العائمة ؛ استخدم مكالمات المكتبة بدلاً من ذلك. هذا ال
افتراضي للأهداف 68000 و 68010 و 68832. وهو أيضًا الإعداد الافتراضي لـ ColdFire
الأجهزة التي لا تحتوي على FPU.

-mdiv
-منو- div
قم بإنشاء (عدم إنشاء) تعليمات تقسيم أجهزة ColdFire والباقي. لو
-مارس يستخدم بدون - وحدة المعالجة المركزية، الإعداد الافتراضي هو "تشغيل" لبنى ColdFire و "إيقاف"
لأبنية M680x0. خلاف ذلك ، يتم أخذ القيمة الافتراضية من وحدة المعالجة المركزية المستهدفة (إما
وحدة المعالجة المركزية الافتراضية ، أو المحددة بواسطة - وحدة المعالجة المركزية). على سبيل المثال ، الإعداد الافتراضي هو "إيقاف التشغيل"
لل - وحدة المعالجة المركزية = 5206 و "تشغيل" لـ - وحدة المعالجة المركزية = 5206 هـ.

يحدد GCC الماكرو "__mcfhwdiv__" عند تمكين هذا الخيار.

-قصير
ضع في اعتبارك أن كتابة "int" بعرض 16 بت ، مثل "short int". بالإضافة إلى المعلمات
التي تم تمريرها إلى المكدس تتم محاذاة أيضًا إلى حد 16 بت حتى على الأهداف التي API الخاصة بها
يفرض الترقية إلى 32 بت.

-منو- باختصار
لا تعتبر النوع "int" بعرض 16 بت. هذا هو الافتراضي.

-منوبيتفيلد
-منو بيتفيلد
لا تستخدم تعليمات حقل البت. ال م 68000, - وحدة المعالجة المركزية 32 و م 5200 الخيارات تعني
-منوبيتفيلد.

-مبيتفيلد
هل استخدم تعليمات حقل البت. ال م 68020 الخيار يعني -مبيتفيلد. وهذا هو
الافتراضي إذا كنت تستخدم تكوينًا مصممًا لـ 68020.

-مرتد
استخدم اصطلاحًا مختلفًا لاستدعاء الوظائف ، حيث تكون الدوال التي تتطلب إصلاحًا
يتم إرجاع عدد من الوسيطات بتعليمات "rtd" ، والتي تظهر حججهم
أثناء العودة. هذا يحفظ تعليمة واحدة في المتصل لأنه ليست هناك حاجة لذلك
البوب ​​الحجج هناك.

اصطلاح الاتصال هذا غير متوافق مع تلك المستخدمة عادة على يونكس ، لذلك أنت
لا يمكن استخدامه إذا كنت بحاجة إلى استدعاء المكتبات المترجمة مع مترجم Unix.

أيضًا ، يجب عليك توفير نماذج أولية للوظائف لجميع الوظائف التي تأخذ متغيرًا
عدد الحجج (بما في ذلك "printf") ؛ وإلا يتم إنشاء رمز غير صحيح لـ
يدعو لتلك الوظائف.

بالإضافة إلى ذلك ، ينتج رمز غير صحيح بشكل خطير إذا قمت باستدعاء وظيفة بها عدد كبير جدًا
الحجج. (عادة ، يتم تجاهل الحجج الإضافية بدون ضرر.)

تعليمات "rtd" مدعومة من قبل 68010 و 68020 و 68030 و 68040 و 68060 و CPU32
المعالجات ، ولكن ليس من خلال 68000 أو 5200.

-منو- rtd
لا تستخدم اصطلاحات الاستدعاء المحددة بواسطة -مرتد. هذا هو الافتراضي.

-ملاين-كثافة العمليات
-mno- محاذاة- كثافة العمليات
التحكم في ما إذا كانت GCC تحاذي "int" و "long" و "long" و "float" و "double" و "long"
متغيرات مزدوجة "على حد 32 بت (-ملاين-كثافة العمليات) أو حد 16 بت
(-mno- محاذاة- كثافة العمليات). تؤدي محاذاة المتغيرات على حدود 32 بت إلى إنشاء رمز يتم تشغيله
أسرع إلى حد ما على المعالجات ذات الحافلات 32 بت على حساب المزيد من الذاكرة.

: تحذير إذا كنت تستخدم -ملاين-كثافة العمليات التبديل ، GCC محاذاة الهياكل التي تحتوي على ما سبق
أنواع مختلفة عن معظم مواصفات الواجهة الثنائية للتطبيق المنشورة لـ
و m68k.

-مبكرل
استخدم وضع العنونة النسبي للكمبيوتر الخاص بـ 68000 مباشرةً ، بدلاً من استخدام الوضع العام
جدول تعويض. في الوقت الحاضر ، هذا الخيار يعني -fpic، مما يسمح بحد أقصى للإزاحة 16 بت
لعنونة النسبي لأجهزة الكمبيوتر. -fPIC غير مدعوم حاليًا بـ -مبكرل، على الرغم من
يمكن دعم هذا للمعالجات 68020 وأعلى.

-لا صارمة- محاذاة
-mstrict- محاذاة
لا تفترض أن النظام يعالج مراجع الذاكرة غير المحاذاة.

-مسبب-البيانات
قم بإنشاء رمز يسمح بوضع مقطع البيانات في منطقة مختلفة من الذاكرة
من جزء النص. هذا يسمح للتنفيذ في المكان في بيئة بدون
إدارة الذاكرة الافتراضية. هذا الخيار يعني -fPIC.

-رقم-سبتمبر-البيانات
قم بإنشاء رمز يفترض أن مقطع البيانات يتبع مقطع النص. هذا هو
الافتراضي.

-متوسط-المكتبة المشتركة
قم بإنشاء رمز يدعم المكتبات المشتركة عبر طريقة معرف المكتبة. هذا يسمح
لتنفيذ المكتبات في المكان والمكتبات المشتركة في بيئة بدون ذاكرة افتراضية
إدارة. هذا الخيار يعني -fPIC.

-رقم-معرف-مكتبة مشتركة
قم بإنشاء رمز لا يفترض أنه يتم استخدام المكتبات المشتركة القائمة على المعرفات. هذا هو
الافتراضي.

-مكتبة-مشارد- id = n
يحدد رقم تعريف المكتبة المشتركة المستندة إلى المعرف التي يتم تجميعها.
يؤدي تحديد القيمة 0 إلى إنشاء رمز أكثر إحكاما ؛ تحديد قوى القيم الأخرى
تخصيص هذا الرقم للمكتبة الحالية ، ولكن لم يعد هناك مساحة- أو وقت-
فعالة من حذف هذا الخيار.

-mxgot
-منو- xgot
عند إنشاء رمز مستقل عن الموضع لـ ColdFire ، قم بإنشاء رمز يعمل إذا
تحتوي GOT على أكثر من 8192 إدخالاً. هذا الرمز أكبر وأبطأ من الكود
ولدت بدون هذا الخيار. في معالجات M680x0 ، لا يلزم هذا الخيار ؛ -fPIC
يكفي.

يستخدم GCC عادةً تعليمة واحدة لتحميل القيم من GOT. بينما هذا
فعال نسبيًا ، فهو يعمل فقط إذا كانت GOT أصغر من حوالي 64 كيلو بايت. اى شى
أكبر يتسبب في قيام الرابط بالإبلاغ عن خطأ مثل:

تم اقتطاع النقل ليناسب: R_68K_GOT16O foobar

إذا حدث هذا ، يجب إعادة ترجمة التعليمات البرمجية الخاصة بك باستخدام -mxgot. يجب أن تعمل بعد ذلك مع
GOTs كبيرة جدا. ومع ذلك ، تم إنشاء رمز مع -mxgot أقل كفاءة ، لأنه
يأخذ 4 تعليمات لجلب قيمة رمز عالمي.

لاحظ أن بعض الروابط ، بما في ذلك الإصدارات الأحدث من رابط جنو ، يمكنها الإنشاء
عدة GOTs وفرز إدخالات GOT. إذا كان لديك مثل هذا الرابط ، ما عليك سوى
لاستخدام -mxgot عند تجميع ملف كائن واحد يصل إلى أكثر من 8192 GOT
إدخالات. قلة قليلة منهم يفعلون ذلك.

ليس لهذه الخيارات أي تأثير ما لم يُنشئ GCC كودًا مستقلاً عن الموضع.

مكور الخيارات

هذه هي -m الخيارات المحددة لمعالجات Motorola M * Core.

-مهاردليت
-منو-هارديليت
الثوابت المضمنة في دفق التعليمات البرمجية إذا كان يمكن إجراؤها في تعليمين أو أقل.

-mdiv
-منو- div
استخدم تعليمات القسمة. (ممكّن افتراضيًا).

-استرخاء- فوري
-من-الاسترخاء-فورى
السماح الفوري بحجم تعسفي في عمليات البت.

على نطاق واسع bitfields
-mno-wide-bitfields
تعامل دائمًا مع حقول البت بحجم "int".

وظائف -m4 بايت
وظائف -mno-4 بايت
إجبار جميع الوظائف على المحاذاة مع حد 4 بايت.

- بيانات الخط
- بيانات الخط
انبعث معلومات الخط.

-مبطء بايت
-mno- بطيئة-بايت
يفضل الوصول إلى الكلمات عند قراءة كميات البايت.

-ملل-endian
-mbig-endian
قم بإنشاء رمز لهدف صغير.

م 210
م 340
توليد رمز للمعالج 210.

-منو-لسيم
افترض أن دعم وقت التشغيل قد تم توفيره ، لذا احذف مكتبة المحاكاة
(libsim.a) من سطر الأوامر رابط.

-زيادة مكدس =الحجم
قم بتعيين الحد الأقصى لمقدار عملية زيادة مكدس واحدة. يمكن للقيم الكبيرة
زيادة سرعة البرامج التي تحتوي على وظائف تحتاج إلى كمية كبيرة من
مساحة المكدس ، لكن يمكنهم أيضًا تشغيل خطأ تجزئة إذا تم تمديد المكدس
كثير جدا. القيمة الافتراضية هي 0x1000.

MeP الخيارات

-معبسديف
يُمكّن تعليمة "abs" ، وهي الفرق المطلق بين سجلين.

- خيارات صغيرة
تمكن جميع التعليمات الاختيارية - متوسط ​​، ضرب ، قسمة ، عمليات بت ،
الصفر البادئ ، والفرق المطلق ، والحد الأدنى / الحد الأقصى ، والمقطع ، والتشبع.

- متوسط
يُمكّن تعليمات "ave" ، التي تحسب متوسط ​​سجلين.

-مستند =n
متغيرات الحجم n يتم وضع وحدات البايت أو أصغر في قسم ".based" بشكل افتراضي.
تستخدم المتغيرات المعتمدة السجل $ tp كسجل أساسي ، ويوجد حد 128 بايت
إلى قسم ".based".

-مبيتوبس
لتمكين تعليمات تشغيل البت --- اختبار البت ("btstm") ، تعيين ("bsetm") ، مسح
("bclrm") ، و invert ("bnotm") ، و test-and-set ("tas").

-مك =الاسم
يختار أي قسم يتم وضع البيانات الثابتة فيه. الاسم قد يكون صغير, قرب، أو بعيدا.

-مقطع
لتمكين تعليمات "القصاصة". لاحظ أن -مقطع ليس مفيدًا إلا إذا كنت أنت أيضًا
تزود -مينماكس.

-mconfig =الاسم
يختار أحد التكوينات الأساسية المضمنة. تحتوي كل شريحة MeP على واحد أو أكثر
وحدات فيه كل وحدة لديها وحدة المعالجة المركزية الأساسية ومجموعة متنوعة من المعالجات الاختيارية
التعليمات والأجهزة الطرفية. توفر أداة "MeP-Integrator" ، التي ليست جزءًا من GCC
هذه التكوينات من خلال هذا الخيار ؛ استخدام هذا الخيار هو نفس استخدام الكل
خيارات سطر الأوامر المقابلة. التكوين الافتراضي هو الافتراضي.

-مكوب
تمكن تعليمات المعالج الثانوي. بشكل افتراضي ، هذا هو معالج ثانوي 32 بت. ملحوظة
أن المعالج المشترك يتم تمكينه بشكل طبيعي عبر ملف -mconfig = الخيار.

-مكوب 32
لتمكين تعليمات المعالج المساعد 32 بت.

-مكوب 64
لتمكين تعليمات المعالج المساعد 64 بت.

-Mivc2
تمكن جدولة IVC2. IVC2 هو معالج مساعد VLIW 64 بت.

-mdc
يتسبب في المتغيرات الثابتة ليتم وضعها في قسم "قريب".

-mdiv
تفعيل تعليمات "div" و "divu".

-meb
إنشاء رمز كبير Endian.

-ميل
قم بتوليد كود صغير.

-ميو- متقلبة
يخبر المترجم أن أي متغير تم تمييزه بالسمة "io" يجب أن يكون كذلك
تعتبر متقلبة.

-مل يتسبب في تعيين المتغيرات إلى قسم ".far" افتراضيًا.

-مليدز
تمكين تعليمات "leadz" (صفر بادئ).

مم يتسبب في تعيين المتغيرات إلى قسم "قريب" افتراضيًا.

-مينماكس
لتمكين تعليمات "min" و "max".

-خلمة
تمكن تعليمات الضرب والمضاعفة.

-لا خيارات
تعطيل كافة التعليمات الاختيارية التي تم تمكينها بواسطة - خيارات صغيرة.

- كرر
لتمكين تعليمات "التكرار" و "erepeat" ، المستخدمة للتكرار المنخفض.

-الآنسة يؤدي إلى جعل جميع المتغيرات افتراضيًا إلى قسم ".tiny". لاحظ أن هناك ملف
65536 بايت حد لهذا القسم. تستخدم الوصول إلى هذه المتغيرات قاعدة٪ gp
تسجيل.

-مساتور
تمكن تعليمات التشبع. لاحظ أن المترجم لا يعمل حاليًا
إنشاء هذه نفسها ، ولكن هذا الخيار مضمن للتوافق مع الأدوات الأخرى ،
مثل".

-msdram
اربط وقت التشغيل المستند إلى SDRAM بدلاً من وقت التشغيل الافتراضي المستند إلى ROM.

-مسيم
ربط مكتبات وقت تشغيل المحاكاة.

-مسيمنوفيك
اربط مكتبات وقت تشغيل المحاكي ، باستثناء الدعم المدمج لإعادة التعيين و
ناقلات الاستثناء والجداول.

-متف
يؤدي إلى جعل جميع الوظائف افتراضيًا إلى قسم ".far". بدون هذا الخيار ، وظائف
افتراضيًا إلى قسم "قريب".

- صغير =n
المتغيرات التي هي n يتم تخصيص بايت أو أصغر للقسم ".tiny". هؤلاء
المتغيرات تستخدم السجل الأساسي $ gp. الإعداد الافتراضي لهذا الخيار هو 4 ، لكن لاحظ ذلك
هناك حد 65536 بايت لقسم ".tiny".

MicroBlaze الخيارات

-مسنة- تعويم
استخدم مضاهاة البرامج للنقطة العائمة (افتراضي).

-مشدد-تعويم
استخدم تعليمات الأجهزة العائمة.

-ممبي
لا تقم بتحسين تحركات الكتلة ، استخدم "memcpy".

-mno-clearbss
تم إهمال هذا الخيار. يستخدم -fno-صفر-تهيئة-في-bss بدلا من ذلك.

-mcpu =نوع وحدة المعالجة المركزية
استخدم ميزات وجدول التعليمات البرمجية لوحدة المعالجة المركزية المعينة. القيم المدعومة موجودة في
شكل vX.YY.Z، حيث X هي نسخة رئيسية ، YY هي النسخة الثانوية ، و Z is
كود التوافق. قيم المثال هي الإصدار 3.00, الإصدار 4.00 ب, الإصدار 5.00, الإصدار 5.00 ب, الإصدار 5.00 ب,
الإصدار 6.00.

-mxl- لينة مول
استخدام برنامج محاكاة مضاعفة (افتراضي).

-mxl-soft-div
استخدم برنامج محاكاة التقسيمات (افتراضي).

-mxl- برميل-التحول
استخدم شيفتر برميل الجهاز.

-mxl- مقارنة النمط
استخدم تعليمات مقارنة الأنماط.

-msmall- يقسم
استخدم البحث عن الجدول الأمثل لأقسام الأعداد الصحيحة الصغيرة.

-mxl- مكدس الاختيار
تم إهمال هذا الخيار. يستخدم -fstack- الاختيار بدلا من ذلك.

-mxl-gp-opt
استخدم أقسام ".sdata" / ". sbss" النسبية لـ GP.

-mxl- الضرب العالي
استخدم تعليمات الضرب العالية للجزء العالي من 32x32 اضرب.

-mxl- تعويم- تحويل
استخدم تعليمات الأجهزة الخاصة بتحويل النقطة العائمة.

-mxl- تعويم الجذر التربيعي
استخدم تعليمات جهاز الجذر التربيعي للفاصلة العائمة.

-mbig-endian
إنشاء رمز لهدف كبير.

-ملل-endian
قم بإنشاء رمز لهدف صغير.

-mxl- إعادة ترتيب
استخدم تعليمات إعادة الترتيب (تحميل / تخزين مقايضة وبايت عكسي).

-mxl- وضع-نموذج التطبيق
حدد نموذج التطبيق نموذج التطبيق. النماذج الصالحة هي

تنفيذ
عادي قابل للتنفيذ (افتراضي) ، يستخدم رمز بدء التشغيل crt0.o.

xmdstub
للاستخدام مع Xilinx Microprocessor Debugger (XMD) المستند إلى برنامج التصحيح التدخلي
وكيل يسمى xmdstub. يستخدم هذا ملف بدء التشغيل crt1.o ويحدد عنوان البداية لـ
البرنامج إلى 0x800.

ألبس الحذاء
للتطبيقات التي يتم تحميلها باستخدام أداة تحميل التشغيل. يستخدم هذا النموذج ملف بدء التشغيل
crt2.o التي لا تحتوي على معالج متجه لإعادة تعيين المعالج. هذا مناسب
لنقل التحكم في إعادة تعيين المعالج إلى أداة تحميل التشغيل بدلاً من ملف
التطبيق.

المبتدئين
للتطبيقات التي لا تتطلب أيًا من متجهات MicroBlaze. هذا الخيار
قد يكون مفيدًا للتطبيقات التي تعمل داخل تطبيق المراقبة. هذا النموذج
يستخدم crt3.o كملف بدء التشغيل.

خيار -xl- الوضع-نموذج التطبيق هو اسم مستعار مهمل لـ -mxl- وضع-نموذج التطبيق.

MIPS الخيارات

-EB إنشاء رمز كبير Endian.

-EL قم بتوليد كود صغير. هذا هو الإعداد الافتراضي لـ mips * el - * - * تكوينات.

- مسيرة =قوس
توليد التعليمات البرمجية التي تعمل على قوس، والذي يمكن أن يكون اسم MIPS ISA العام أو ملف
اسم معالج معين. أسماء ISA هي: mips1, mips2, mips3, mips4,
mips32, mips32r2, mips32r3, mips32r5, mips32r6, mips64, mips64r2, mips64r3, mips64r5
و mips64r6. أسماء المعالجات هي: 4kc, 4km, 4kp, 4KSC, 4kec, 4kem, 4 كيب, 4ksd,
5kc, 5 كيلو, 20kc, 24kc, 24 كف 2_1, 24 كف 1_1, 24kec, 24 كف 2_1, 24 كف 1_1, 34kc, 34 كف 2_1,
34 كف 1_1, 34kn, 74kc, 74 كف 2_1, 74 كف 1_1, 74 كف 3_2, 1004kc, 1004 كف 2_1, 1004 كف 1_1,
loongson2e, loongson2f, loongson3a, M4K, M14K, m14kc, m14ke, m14kec, octeon, octeon +,
octeon2, octeon3, أوريون, p5600, r2000, r3000, r3900, r4000, r4400, r4600, r4650,
r4700, r6000, r8000, rm7000, rm9000, r10000, r12000, r14000, r16000, sb1, sr71000,
vr4100, vr4111, vr4120, vr4130, vr4300, vr5000, vr5400, vr5500, XLR و XLP.
قيمة خاصة من أبي يحدد البنية الأكثر توافقًا لـ ABI المحدد
(هذا هو، mips1 لـ 32 بت ABIs و mips3 لـ 64 بت ABIs).

تدعم سلسلة أدوات Linux / GNU الأصلية القيمة أيضًا محليالذي يختار الأفضل
خيار الهندسة المعمارية للمعالج المضيف. -مارش = أصلي ليس له أي تأثير إذا كان لدول مجلس التعاون الخليجي
لا يتعرف على المعالج.

في أسماء المعالجات ، نهائي 000 يمكن اختصاره كـ k (فمثلا، - مسيرة = r2k).
البادئات اختيارية ، و vr قد تكون مكتوبة r.

أسماء النموذج nf2_1 قم بالإشارة إلى المعالجات التي تحتوي على وحدات FPU مسجلة بنصف معدل
الأساسية ، أسماء النموذج nf1_1 الرجوع إلى المعالجات مع FPUs التي تم تسجيلها بنفس المعدل
كما جوهر ، وأسماء النموذج nf3_2 الرجوع إلى المعالجات مع FPUs سجلت نسبة
من 3: 2 فيما يتعلق بالنواة. لأسباب التوافق ، nf تم قبوله باعتباره أ
مرادف ل nf2_1 في حين nx و bfx يتم قبولها كمرادفات لـ nf1_1.

يحدد GCC اثنين من وحدات الماكرو بناءً على قيمة هذا الخيار. الأول هو "_MIPS_ARCH" ،
الذي يعطي اسم العمارة الهدف ، كسلسلة. الثاني له الشكل
"_MIPS_ARCH_فو "، حيث فو هي القيمة الكبيرة لـ "_MIPS_ARCH". على سبيل المثال،
- مارس = r2000 يعيّن "_MIPS_ARCH" إلى "r2000" ويعرّف الماكرو "_MIPS_ARCH_R2000".

لاحظ أن الماكرو "_MIPS_ARCH" يستخدم أسماء المعالجات المذكورة أعلاه. في أخرى
الكلمات ، لها البادئة الكاملة ولا تختصر 000 as k. في حالة من عند-
أبي، يقوم الماكرو بتسمية العمارة التي تم حلها (إما "mips1" أو "mips3"). الأسماء
العمارة الافتراضية عندما لا -مارس يتم إعطاء الخيار.

-mtune =قوس
تحسين ل قوس. من بين أشياء أخرى ، يتحكم هذا الخيار في طريقة التعليمات
مجدولة ، والتكلفة المتصورة للعمليات الحسابية. القائمة ل قوس القيم
هو نفسه ل -مارس.

عند عدم استخدام هذا الخيار ، يقوم GCC بتحسين المعالج المحدد بواسطة -مارس. من قبل
استخدام -مارس و -mtune معًا ، من الممكن إنشاء رمز يتم تشغيله على ملف
عائلة المعالجات ، ولكن قم بتحسين الشفرة لعضو معين من تلك العائلة.

-mtune يحدد وحدات الماكرو "_MIPS_TUNE" و "_MIPS_TUNE_فو "التي تعمل في نفس الشيء
طريقة مثل -مارس المذكورة أعلاه.

-الرسمات 1
أي ما يعادل -مارش = mips1.

-الرسمات 2
أي ما يعادل -مارش = mips2.

-الرسمات 3
أي ما يعادل -مارش = mips3.

-الرسمات 4
أي ما يعادل -مارش = mips4.

-الرسمات 32
أي ما يعادل -مارش = mips32.

-mips32r3
أي ما يعادل - مسيرة = mips32r3.

-mips32r5
أي ما يعادل - مسيرة = mips32r5.

-mips32r6
أي ما يعادل - مسيرة = mips32r6.

-الرسمات 64
أي ما يعادل -مارش = mips64.

-mips64r2
أي ما يعادل - مسيرة = mips64r2.

-mips64r3
أي ما يعادل - مسيرة = mips64r3.

-mips64r5
أي ما يعادل - مسيرة = mips64r5.

-mips64r6
أي ما يعادل - مسيرة = mips64r6.

-الرسمات 16
-منو- mips16
إنشاء (عدم إنشاء) رمز MIPS16. إذا كان GCC يستهدف MIPS32 أو MIPS64
الهندسة المعمارية ، فإنه يستخدم MIPS16e ASE.

يمكن أيضًا التحكم في إنشاء كود MIPS16 على أساس كل وظيفة عن طريق
سمات "mips16" و "nomips16".

-مفليب- mips16
إنشاء رمز MIPS16 على وظائف بديلة. يتم توفير هذا الخيار للانحدار
اختبار إنشاء كود MIPS16 / non-MIPS16 المختلط ، وهو غير مخصص للعادي
استخدامها في تجميع رمز المستخدم.

-minterlink- مضغوط
-mno-interlink- مضغوط
طلب (لا تطلب) أن يكون الرمز الذي يستخدم المعيار (غير مضغوط) MIPS ISA رابط-
متوافق مع MIPS16 ورمز microMIPS والعكس صحيح.

على سبيل المثال ، لا يمكن للتعليمات البرمجية التي تستخدم ترميز ISA القياسي الانتقال مباشرة إلى MIPS16 أو
كود microMIPS ؛ يجب أن تستخدم إما مكالمة أو قفزة غير مباشرة. -minterlink- مضغوط
لذلك يعطل القفزات المباشرة ما لم يعرف مجلس التعاون الخليجي أن الهدف من القفزة ليس كذلك
مضغوط.

-مينترلينك- mips16
-mno- الربط- mips16
الأسماء المستعارة لـ -minterlink- مضغوط و -mno-interlink- مضغوط. هذه الخيارات
تسبق microMIPS ASE ويتم الاحتفاظ بها للتوافق مع الإصدارات السابقة.

-مابي = 32
-مابي = o64
-مابي = ن 32
-مابي = 64
-مابي = إيبي
قم بإنشاء رمز لـ ABI المحدد.

لاحظ أن EABI له متغير 32 بت و 64 بت. عادة ما يولد مجلس التعاون الخليجي 64 بت
رمز عند تحديد بنية 64 بت ، ولكن يمكنك استخدام -mgp32 للحصول على كود 32 بت
بدلا من ذلك.

للحصول على معلومات حول O64 ABI ، راجعhttp://gcc.gnu.org/projects/mipso64-abi.html>.

يدعم GCC متغيرًا من o32 ABI حيث تكون سجلات الفاصلة العائمة 64 بدلاً من ذلك
من 32 بت. يمكنك تحديد هذه المجموعة مع -مابي = 32 -mfp64. هذا ABI
يعتمد على تعليمات "mthc1" و "mfhc1" ولذلك فهو مدعوم فقط لـ
معالجات MIPS32R2 و MIPS32R3 و MIPS32R5.

تظل تعيينات السجل للوسيطات وقيم الإرجاع كما هي ، لكن كل واحدة
يتم تمرير القيمة العددية في تسجيل واحد 64 بت بدلاً من زوج من 32 بت
السجلات. على سبيل المثال ، يتم إرجاع قيم الفاصلة العائمة العددية بتنسيق f0 دولار فقط ، ليس أ
f0 دولار/f1 دولار زوج. تظل مجموعة سجلات المكالمات المحفوظة أيضًا كما هي من حيث
يتم حفظ تسجيلات الدقة المزدوجة المرقمة.

يتم دعم متغيرين إضافيين لـ o32 ABI لتمكين الانتقال من
32 بت إلى 64 بت المسجلات. هؤلاء هم FPXX (-mfpxx) و FP64A (-mfp64
-منو- غريب- spreg). يفرض ملحق FPXX أنه يجب تنفيذ جميع التعليمات البرمجية بشكل صحيح
عند التشغيل باستخدام سجلات 32 بت أو 64 بت. يمكن ربط الرمز بأي منهما
FP32 أو FP64 ، لكن ليس كلاهما. امتداد FP64A مشابه لملحق FP64 لكن
يحظر استخدام سجلات الدقة الفردية ذات الأرقام الفردية. يمكن استخدام هذا في
بالاقتران مع وضع "FRE" لوحدات FPU في معالجات MIPS32R5 ويسمح لكل من FP32
و FP64A للترابط والتشغيل في نفس العملية دون تغيير أوضاع FPU.

-مبيكلز
-منو- abicalls
قم بإنشاء (عدم إنشاء) التعليمات البرمجية المناسبة للكائنات الديناميكية ذات النمط SVR4.
-مبيكلز هو الإعداد الافتراضي للأنظمة المستندة إلى SVR4.

-مشاركة
-منو- مشترك
قم بإنشاء (لا تنشئ) رمزًا مستقلًا تمامًا عن الموضع ، ويمكن ذلك
لذلك يتم ربطها بالمكتبات المشتركة. هذا الخيار يؤثر فقط -مبيكلز.

الجميع -مبيكلز كان الرمز تقليديًا مستقلًا عن الموضع ، بغض النظر عن الخيارات
مثل -fPIC و -fpic. ومع ذلك ، كإمتداد ، فإن سلسلة أدوات جنو تسمح بالملفات التنفيذية
لاستخدام الوصول المطلق للرموز الملزمة محليًا. ويمكنه أيضًا استخدام GP أقصر
تسلسل التهيئة وإنشاء استدعاءات مباشرة للوظائف المحددة محليًا. هذه
الوضع المحدد بواسطة -منو- مشترك.

-منو- مشترك يعتمد على binutils 2.16 أو أعلى وينشئ كائنات يمكن أن تكون فقط
مرتبط برابط جنو. ومع ذلك ، فإن الخيار لا يؤثر على ABI للنهائي
تنفيذ؛ إنه يؤثر فقط على ABI للكائنات القابلة للنقل. استخدام -منو- مشترك
بشكل عام يجعل الملفات التنفيذية أصغر وأسرع.

-مشاركة هو الافتراضي.

-مبلت
-منو- PLT
افترض (لا تفترض) أن الوصلات الثابتة