Skip to content

error: queries overflow the depth limit! for the parallel frontend #146616

@ywxt

Description

@ywxt

command: rustc -Zthreads=8 c_enum.rs. This is a bug of the parallel frontend. At least the result is difference from the serial frontend.

I tried this code from the crate c_enum:

Updated:

const V1: u32 = 0;
const V2: u32 = V1;
const V3: u32 = V2;
const V4: u32 = V3;
const V5: u32 = V4;
const V6: u32 = V5;
const V7: u32 = V6;
const V8: u32 = V7;
const V9: u32 = V8;
const V10: u32 = V9;
const V11: u32 = V10;
const V12: u32 = V11;
const V13: u32 = V12;
const V14: u32 = V13;
const V15: u32 = V14;
const V16: u32 = V15;
const V17: u32 = V16;
const V18: u32 = V17;
const V19: u32 = V18;
const V20: u32 = V19;
const V21: u32 = V20;
const V22: u32 = V21;
const V23: u32 = V22;
const V24: u32 = V23;
const V25: u32 = V24;
const V26: u32 = V25;
const V27: u32 = V26;
const V28: u32 = V27;
const V29: u32 = V28;
const V30: u32 = V29;
const V31: u32 = V30;
const V32: u32 = V31;
const V33: u32 = V32;
const V34: u32 = V33;
const V35: u32 = V34;
const V36: u32 = V35;
const V37: u32 = V36;
const V38: u32 = V37;
const V39: u32 = V38;
const V40: u32 = V39;
const V41: u32 = V40;
const V42: u32 = V41;
const V43: u32 = V42;
const V44: u32 = V43;
const V45: u32 = V44;
const V46: u32 = V45;
const V47: u32 = V46;
const V48: u32 = V47;
const V49: u32 = V48;
const V50: u32 = V49;
const V51: u32 = V50;
const V52: u32 = V51;
const V53: u32 = V52;
const V54: u32 = V53;
const V55: u32 = V54;
const V56: u32 = V55;
const V57: u32 = V56;
const V58: u32 = V57;
const V59: u32 = V58;
const V60: u32 = V59;
const V61: u32 = V60;
const V62: u32 = V61;
const V63: u32 = V62;
const V64: u32 = V63;
const V65: u32 = V64;
const V66: u32 = V65;
const V67: u32 = V66;
const V68: u32 = V67;
const V69: u32 = V68;
const V70: u32 = V69;
const V71: u32 = V70;
const V72: u32 = V71;
const V73: u32 = V72;
const V74: u32 = V73;
const V75: u32 = V74;
const V76: u32 = V75;
const V77: u32 = V76;
const V78: u32 = V77;
const V79: u32 = V78;
const V80: u32 = V79;
const V81: u32 = V80;
const V82: u32 = V81;
const V83: u32 = V82;
const V84: u32 = V83;
const V85: u32 = V84;
const V86: u32 = V85;
const V87: u32 = V86;
const V88: u32 = V87;
const V89: u32 = V88;
const V90: u32 = V89;
const V91: u32 = V90;
const V92: u32 = V91;
const V93: u32 = V92;
const V94: u32 = V93;
const V95: u32 = V94;
const V96: u32 = V95;
const V97: u32 = V96;
const V98: u32 = V97;
const V99: u32 = V98;
const V100: u32 = V99;
const V101: u32 = V100;
const V102: u32 = V101;
const V103: u32 = V102;
const V104: u32 = V103;
const V105: u32 = V104;
const V106: u32 = V105;
const V107: u32 = V106;
const V108: u32 = V107;
const V109: u32 = V108;
const V110: u32 = V109;
const V111: u32 = V110;
const V112: u32 = V111;
const V113: u32 = V112;
const V114: u32 = V113;
const V115: u32 = V114;
const V116: u32 = V115;
const V117: u32 = V116;
const V118: u32 = V117;
const V119: u32 = V118;
const V120: u32 = V119;
const V121: u32 = V120;
const V122: u32 = V121;
const V123: u32 = V122;
const V124: u32 = V123;
const V125: u32 = V124;
const V126: u32 = V125;
const V127: u32 = V126;
const V128: u32 = V127;
const V129: u32 = V128;
const V130: u32 = V129;
const V131: u32 = V130;
const V132: u32 = V131;
const V133: u32 = V132;
const V134: u32 = V133;
const V135: u32 = V134;
const V136: u32 = V135;
const V137: u32 = V136;
const V138: u32 = V137;
const V139: u32 = V138;
const V140: u32 = V139;
const V141: u32 = V140;
const V142: u32 = V141;
const V143: u32 = V142;
const V144: u32 = V143;
const V145: u32 = V144;
const V146: u32 = V145;
const V147: u32 = V146;
const V148: u32 = V147;
const V149: u32 = V148;
const V150: u32 = V149;
const V151: u32 = V150;
const V152: u32 = V151;
const V153: u32 = V152;
const V154: u32 = V153;
const V155: u32 = V154;
const V156: u32 = V155;
const V157: u32 = V156;
const V158: u32 = V157;
const V159: u32 = V158;
const V160: u32 = V159;
const V161: u32 = V160;
const V162: u32 = V161;
const V163: u32 = V162;
const V164: u32 = V163;
const V165: u32 = V164;
const V166: u32 = V165;
const V167: u32 = V166;
const V168: u32 = V167;
const V169: u32 = V168;
const V170: u32 = V169;
const V171: u32 = V170;
const V172: u32 = V171;
const V173: u32 = V172;
const V174: u32 = V173;
const V175: u32 = V174;
const V176: u32 = V175;
const V177: u32 = V176;
const V178: u32 = V177;
const V179: u32 = V178;
const V180: u32 = V179;
const V181: u32 = V180;
const V182: u32 = V181;
const V183: u32 = V182;
const V184: u32 = V183;
const V185: u32 = V184;
const V186: u32 = V185;
const V187: u32 = V186;
const V188: u32 = V187;
const V189: u32 = V188;
const V190: u32 = V189;
const V191: u32 = V190;
const V192: u32 = V191;
const V193: u32 = V192;
const V194: u32 = V193;
const V195: u32 = V194;
const V196: u32 = V195;
const V197: u32 = V196;
const V198: u32 = V197;
const V199: u32 = V198;
const V200: u32 = V199;
const V201: u32 = V200;
const V202: u32 = V201;
const V203: u32 = V202;
const V204: u32 = V203;
const V205: u32 = V204;
const V206: u32 = V205;
const V207: u32 = V206;
const V208: u32 = V207;
const V209: u32 = V208;
const V210: u32 = V209;
const V211: u32 = V210;
const V212: u32 = V211;
const V213: u32 = V212;
const V214: u32 = V213;
const V215: u32 = V214;
const V216: u32 = V215;
const V217: u32 = V216;
const V218: u32 = V217;
const V219: u32 = V218;
const V220: u32 = V219;
const V221: u32 = V220;
const V222: u32 = V221;
const V223: u32 = V222;
const V224: u32 = V223;
const V225: u32 = V224;
const V226: u32 = V225;
const V227: u32 = V226;
const V228: u32 = V227;
const V229: u32 = V228;
const V230: u32 = V229;
const V231: u32 = V230;
const V232: u32 = V231;
const V233: u32 = V232;
const V234: u32 = V233;
const V235: u32 = V234;
const V236: u32 = V235;
const V237: u32 = V236;
const V238: u32 = V237;
const V239: u32 = V238;
const V240: u32 = V239;
const V241: u32 = V240;
const V242: u32 = V241;
const V243: u32 = V242;
const V244: u32 = V243;
const V245: u32 = V244;
const V246: u32 = V245;
const V247: u32 = V246;
const V248: u32 = V247;
const V249: u32 = V248;
const V250: u32 = V249;
const V251: u32 = V250;
const V252: u32 = V251;
const V253: u32 = V252;
const V254: u32 = V253;
const V255: u32 = V254;
const V256: u32 = V255;
const V257: u32 = V256;
const V258: u32 = V257;
const V259: u32 = V258;
const V260: u32 = V259;
const V261: u32 = V260;
const V262: u32 = V261;
const V263: u32 = V262;
const V264: u32 = V263;
const V265: u32 = V264;
const V266: u32 = V265;
const V267: u32 = V266;
const V268: u32 = V267;
const V269: u32 = V268;
const V270: u32 = V269;
const V271: u32 = V270;
const V272: u32 = V271;
const V273: u32 = V272;
const V274: u32 = V273;
const V275: u32 = V274;
const V276: u32 = V275;
const V277: u32 = V276;
const V278: u32 = V277;
const V279: u32 = V278;
const V280: u32 = V279;
const V281: u32 = V280;
const V282: u32 = V281;
const V283: u32 = V282;
const V284: u32 = V283;
const V285: u32 = V284;
const V286: u32 = V285;
const V287: u32 = V286;
const V288: u32 = V287;
const V289: u32 = V288;
const V290: u32 = V289;
const V291: u32 = V290;
const V292: u32 = V291;
const V293: u32 = V292;
const V294: u32 = V293;
const V295: u32 = V294;
const V296: u32 = V295;
const V297: u32 = V296;
const V298: u32 = V297;
const V299: u32 = V298;
const V300: u32 = V299;
const V301: u32 = V300;
const V302: u32 = V301;
const V303: u32 = V302;
const V304: u32 = V303;
const V305: u32 = V304;
const V306: u32 = V305;
const V307: u32 = V306;
const V308: u32 = V307;
const V309: u32 = V308;
const V310: u32 = V309;
const V311: u32 = V310;
const V312: u32 = V311;
const V313: u32 = V312;
const V314: u32 = V313;
const V315: u32 = V314;
const V316: u32 = V315;
const V317: u32 = V316;
const V318: u32 = V317;
const V319: u32 = V318;
const V320: u32 = V319;
const V321: u32 = V320;
const V322: u32 = V321;
const V323: u32 = V322;
const V324: u32 = V323;
const V325: u32 = V324;
const V326: u32 = V325;
const V327: u32 = V326;
const V328: u32 = V327;
const V329: u32 = V328;
const V330: u32 = V329;
const V331: u32 = V330;
const V332: u32 = V331;
const V333: u32 = V332;
const V334: u32 = V333;
const V335: u32 = V334;
const V336: u32 = V335;
const V337: u32 = V336;
const V338: u32 = V337;
const V339: u32 = V338;
const V340: u32 = V339;
const V341: u32 = V340;
const V342: u32 = V341;
const V343: u32 = V342;
const V344: u32 = V343;
const V345: u32 = V344;
const V346: u32 = V345;
const V347: u32 = V346;
const V348: u32 = V347;
const V349: u32 = V348;
const V350: u32 = V349;
const V351: u32 = V350;
const V352: u32 = V351;
const V353: u32 = V352;
const V354: u32 = V353;
const V355: u32 = V354;
const V356: u32 = V355;
const V357: u32 = V356;
const V358: u32 = V357;
const V359: u32 = V358;
const V360: u32 = V359;
const V361: u32 = V360;
const V362: u32 = V361;
const V363: u32 = V362;
const V364: u32 = V363;
const V365: u32 = V364;
const V366: u32 = V365;
const V367: u32 = V366;
const V368: u32 = V367;
const V369: u32 = V368;
const V370: u32 = V369;
const V371: u32 = V370;
const V372: u32 = V371;
const V373: u32 = V372;
const V374: u32 = V373;
const V375: u32 = V374;
const V376: u32 = V375;
const V377: u32 = V376;
const V378: u32 = V377;
const V379: u32 = V378;
const V380: u32 = V379;
const V381: u32 = V380;
const V382: u32 = V381;
const V383: u32 = V382;
const V384: u32 = V383;
const V385: u32 = V384;
const V386: u32 = V385;
const V387: u32 = V386;
const V388: u32 = V387;
const V389: u32 = V388;
const V390: u32 = V389;
const V391: u32 = V390;
const V392: u32 = V391;
const V393: u32 = V392;
const V394: u32 = V393;
const V395: u32 = V394;
const V396: u32 = V395;
const V397: u32 = V396;
const V398: u32 = V397;
const V399: u32 = V398;
const V400: u32 = V399;
const V401: u32 = V400;
const V402: u32 = V401;
const V403: u32 = V402;
const V404: u32 = V403;
const V405: u32 = V404;
const V406: u32 = V405;
const V407: u32 = V406;
const V408: u32 = V407;
const V409: u32 = V408;
const V410: u32 = V409;
const V411: u32 = V410;
const V412: u32 = V411;
const V413: u32 = V412;
const V414: u32 = V413;
const V415: u32 = V414;
const V416: u32 = V415;
const V417: u32 = V416;
const V418: u32 = V417;
const V419: u32 = V418;
const V420: u32 = V419;
const V421: u32 = V420;
const V422: u32 = V421;
const V423: u32 = V422;
const V424: u32 = V423;
const V425: u32 = V424;
const V426: u32 = V425;
const V427: u32 = V426;
const V428: u32 = V427;
const V429: u32 = V428;
const V430: u32 = V429;
const V431: u32 = V430;
const V432: u32 = V431;
const V433: u32 = V432;
const V434: u32 = V433;
const V435: u32 = V434;
const V436: u32 = V435;
const V437: u32 = V436;
const V438: u32 = V437;
const V439: u32 = V438;
const V440: u32 = V439;
const V441: u32 = V440;
const V442: u32 = V441;
const V443: u32 = V442;
const V444: u32 = V443;
const V445: u32 = V444;
const V446: u32 = V445;
const V447: u32 = V446;
const V448: u32 = V447;
const V449: u32 = V448;
const V450: u32 = V449;
const V451: u32 = V450;
const V452: u32 = V451;
const V453: u32 = V452;
const V454: u32 = V453;
const V455: u32 = V454;
const V456: u32 = V455;
const V457: u32 = V456;
const V458: u32 = V457;
const V459: u32 = V458;
const V460: u32 = V459;
const V461: u32 = V460;
const V462: u32 = V461;
const V463: u32 = V462;
const V464: u32 = V463;
const V465: u32 = V464;
const V466: u32 = V465;
const V467: u32 = V466;
const V468: u32 = V467;
const V469: u32 = V468;
const V470: u32 = V469;
const V471: u32 = V470;
const V472: u32 = V471;
const V473: u32 = V472;
const V474: u32 = V473;
const V475: u32 = V474;
const V476: u32 = V475;
const V477: u32 = V476;
const V478: u32 = V477;
const V479: u32 = V478;
const V480: u32 = V479;
const V481: u32 = V480;
const V482: u32 = V481;
const V483: u32 = V482;
const V484: u32 = V483;
const V485: u32 = V484;
const V486: u32 = V485;
const V487: u32 = V486;
const V488: u32 = V487;
const V489: u32 = V488;
const V490: u32 = V489;
const V491: u32 = V490;
const V492: u32 = V491;
const V493: u32 = V492;
const V494: u32 = V493;
const V495: u32 = V494;
const V496: u32 = V495;
const V497: u32 = V496;
const V498: u32 = V497;
const V499: u32 = V498;
const V500: u32 = V499;
const V501: u32 = V500;
const V502: u32 = V501;
const V503: u32 = V502;
const V504: u32 = V503;
const V505: u32 = V504;
const V506: u32 = V505;
const V507: u32 = V506;
const V508: u32 = V507;
const V509: u32 = V508;
const V510: u32 = V509;
const V511: u32 = V510;
const V512: u32 = V511;
const V513: u32 = V512;
const V514: u32 = V513;
const V515: u32 = V514;
const V516: u32 = V515;
const V517: u32 = V516;
const V518: u32 = V517;
const V519: u32 = V518;
const V520: u32 = V519;
const V521: u32 = V520;
const V522: u32 = V521;
const V523: u32 = V522;
const V524: u32 = V523;
const V525: u32 = V524;
const V526: u32 = V525;
const V527: u32 = V526;
const V528: u32 = V527;
const V529: u32 = V528;
const V530: u32 = V529;
const V531: u32 = V530;
const V532: u32 = V531;
const V533: u32 = V532;
const V534: u32 = V533;
const V535: u32 = V534;
const V536: u32 = V535;
const V537: u32 = V536;
const V538: u32 = V537;
const V539: u32 = V538;
const V540: u32 = V539;
const V541: u32 = V540;
const V542: u32 = V541;
const V543: u32 = V542;
const V544: u32 = V543;
const V545: u32 = V544;
const V546: u32 = V545;
const V547: u32 = V546;
const V548: u32 = V547;
const V549: u32 = V548;
const V550: u32 = V549;
const V551: u32 = V550;
const V552: u32 = V551;
const V553: u32 = V552;
const V554: u32 = V553;
const V555: u32 = V554;
const V556: u32 = V555;
const V557: u32 = V556;
const V558: u32 = V557;
const V559: u32 = V558;
const V560: u32 = V559;
const V561: u32 = V560;
const V562: u32 = V561;
const V563: u32 = V562;
const V564: u32 = V563;
const V565: u32 = V564;
const V566: u32 = V565;
const V567: u32 = V566;
const V568: u32 = V567;
const V569: u32 = V568;
const V570: u32 = V569;
const V571: u32 = V570;
const V572: u32 = V571;
const V573: u32 = V572;
const V574: u32 = V573;
const V575: u32 = V574;
const V576: u32 = V575;
const V577: u32 = V576;
const V578: u32 = V577;
const V579: u32 = V578;
const V580: u32 = V579;
const V581: u32 = V580;
const V582: u32 = V581;
const V583: u32 = V582;
const V584: u32 = V583;
const V585: u32 = V584;
const V586: u32 = V585;
const V587: u32 = V586;
const V588: u32 = V587;
const V589: u32 = V588;
const V590: u32 = V589;
const V591: u32 = V590;
const V592: u32 = V591;
const V593: u32 = V592;
const V594: u32 = V593;
const V595: u32 = V594;
const V596: u32 = V595;
const V597: u32 = V596;
const V598: u32 = V597;
const V599: u32 = V598;
const V600: u32 = V599;
const V601: u32 = V600;
const V602: u32 = V601;
const V603: u32 = V602;
const V604: u32 = V603;
const V605: u32 = V604;
const V606: u32 = V605;
const V607: u32 = V606;
const V608: u32 = V607;
const V609: u32 = V608;
const V610: u32 = V609;
const V611: u32 = V610;
const V612: u32 = V611;
const V613: u32 = V612;
const V614: u32 = V613;
const V615: u32 = V614;
const V616: u32 = V615;
const V617: u32 = V616;
const V618: u32 = V617;
const V619: u32 = V618;
const V620: u32 = V619;
const V621: u32 = V620;
const V622: u32 = V621;
const V623: u32 = V622;
const V624: u32 = V623;
const V625: u32 = V624;
const V626: u32 = V625;
const V627: u32 = V626;
const V628: u32 = V627;
const V629: u32 = V628;
const V630: u32 = V629;
const V631: u32 = V630;
const V632: u32 = V631;
const V633: u32 = V632;
const V634: u32 = V633;
const V635: u32 = V634;
const V636: u32 = V635;
const V637: u32 = V636;
const V638: u32 = V637;
const V639: u32 = V638;
const V640: u32 = V639;
const V641: u32 = V640;
const V642: u32 = V641;
const V643: u32 = V642;
const V644: u32 = V643;
const V645: u32 = V644;
const V646: u32 = V645;
const V647: u32 = V646;
const V648: u32 = V647;
const V649: u32 = V648;
const V650: u32 = V649;
const V651: u32 = V650;
const V652: u32 = V651;
const V653: u32 = V652;
const V654: u32 = V653;
const V655: u32 = V654;
const V656: u32 = V655;
const V657: u32 = V656;
const V658: u32 = V657;
const V659: u32 = V658;
const V660: u32 = V659;
const V661: u32 = V660;
const V662: u32 = V661;
const V663: u32 = V662;
const V664: u32 = V663;
const V665: u32 = V664;
const V666: u32 = V665;
const V667: u32 = V666;
const V668: u32 = V667;
const V669: u32 = V668;
const V670: u32 = V669;
const V671: u32 = V670;
const V672: u32 = V671;
const V673: u32 = V672;
const V674: u32 = V673;
const V675: u32 = V674;
const V676: u32 = V675;
const V677: u32 = V676;
const V678: u32 = V677;
const V679: u32 = V678;
const V680: u32 = V679;
const V681: u32 = V680;
const V682: u32 = V681;
const V683: u32 = V682;
const V684: u32 = V683;
const V685: u32 = V684;
const V686: u32 = V685;
const V687: u32 = V686;
const V688: u32 = V687;
const V689: u32 = V688;
const V690: u32 = V689;
const V691: u32 = V690;
const V692: u32 = V691;
const V693: u32 = V692;
const V694: u32 = V693;
const V695: u32 = V694;
const V696: u32 = V695;
const V697: u32 = V696;
const V698: u32 = V697;
const V699: u32 = V698;
const V700: u32 = V699;
const V701: u32 = V700;
const V702: u32 = V701;
const V703: u32 = V702;
const V704: u32 = V703;
const V705: u32 = V704;
const V706: u32 = V705;
const V707: u32 = V706;
const V708: u32 = V707;
const V709: u32 = V708;
const V710: u32 = V709;
const V711: u32 = V710;
const V712: u32 = V711;
const V713: u32 = V712;
const V714: u32 = V713;
const V715: u32 = V714;
const V716: u32 = V715;
const V717: u32 = V716;
const V718: u32 = V717;
const V719: u32 = V718;
const V720: u32 = V719;
const V721: u32 = V720;
const V722: u32 = V721;
const V723: u32 = V722;
const V724: u32 = V723;
const V725: u32 = V724;
const V726: u32 = V725;
const V727: u32 = V726;
const V728: u32 = V727;
const V729: u32 = V728;
const V730: u32 = V729;
const V731: u32 = V730;
const V732: u32 = V731;
const V733: u32 = V732;
const V734: u32 = V733;
const V735: u32 = V734;
const V736: u32 = V735;
fn main() {}

I expected to see this happen: compile successfully

Instead, this happened:

error: queries overflow the depth limit!
    --> c_enum.rs:154:45
     |
 154 |               impl(first_expr) $( $value9, )? Self::$field8.0 + 1));
     |                                               ^^^^^^^^^^^^^
...
 358 | / c_enum! {
 359 | |     enum Large : u32 {
 360 | |         Variant1,
 361 | |         Variant2,
...    |
1114 | | }
     | |_- in this macro invocation
     |
     = help: consider increasing the recursion limit by adding a `#![recursion_limit = "256"]` attribute to your crate (`c_enum`)
     = note: query depth increased by 130 when simplifying constant for the type system `<impl at c_enum.rs:338:9: 338:19>::Variant552`
     = note: this error originates in the macro `$crate::__c_enum_decl_variants` which comes from the expansion of the macro `c_enum` (in Nightly builds, run with -Z macro-backtrace for more info)

error: aborting due to 1 previous error

Meta

rustc --version --verbose:

rustc 1.92.0-nightly (52618eb33 2025-09-14)
binary: rustc
commit-hash: 52618eb338609df44978b0ca4451ab7941fd1c7a
commit-date: 2025-09-14
host: x86_64-unknown-linux-gnu
release: 1.92.0-nightly
LLVM version: 21.1.1
Backtrace

<backtrace>

Metadata

Metadata

Assignees

No one assigned

    Labels

    A-macrosArea: All kinds of macros (custom derive, macro_rules!, proc macros, ..)A-parallel-compilerArea: parallel compilerA-type-systemArea: Type systemC-bugCategory: This is a bug.I-ICEIssue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️T-compilerRelevant to the compiler team, which will review and decide on the PR/issue.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions