{"slug": "gcc", "name": "GCC", "category": "dev-libs", "category_name": "Libraries and frameworks", "description": "", "recommenders": 3, "commenters": 14, "warners": 3, "score": 2.278, "rising": 0.35, "first": "2025-12-09", "latest": "2026-10-25", "why": "GCC and LLVM having won the compiler wars and being extremely high quality", "why_is_quote": true, "has_verdict": false, "sentiment": {"recommend": 3, "neutral": 7, "compare": 1, "warn": 3}, "spark": [0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1], "listed": true, "loved": [], "caveat": "", "short_quote": "GCC and LLVM having won the compiler wars and being extremely high quality", "icon": true, "domain": null, "github_repo": null, "official_url": "https://gcc.gnu.org", "pricing": "", "aliases": ["GCC", "gcc"], "verdict": null, "praise": [{"label": "", "summary": "", "quotes": [{"id": 801019728, "item_id": 50063733, "url": "https://news.ycombinator.com/item?id=50063733", "by": "sdevonoes", "date": "2026-10-12", "stance": "recommend", "quote": "I miss the tools I used in the past (gcc, linux, sqlite,\u2026)", "excerpt": "It\u2019s a shame I cannot inspect the tool. It\u2019s a shame I cannot modify it as I see fit. It\u2019s a shame that I need to pay $200/month to use it. But hey, I am a 3X engineer and my boss likes it, so I guess it should be fine? Not really, but I still get to pay the bills (for now) I miss the tools I used in the past (gcc, linux, sqlite,\u2026)", "context": "", "use_case": "", "switched_from": "", "story": "AI is a tool and using it well takes skill"}, {"id": 785986464, "item_id": 49124154, "url": "https://news.ycombinator.com/item?id=49124154", "by": "lanstin", "date": "2026-07-31", "stance": "recommend", "quote": "GCC and LLVM having won the compiler wars and being extremely high quality", "excerpt": "I believe you are underestimating the value of GCC and LLVM having won the compiler wars and being extremely high quality, and of Linux having won the OS wars, being extremely high quality. I use GenAI every day, but the quality is still proportional to the amount of my time - there is a multiplier for quantity of my amount but the 9s approaching 1 quality is not logarithmically different - the effort to fix one big ", "context": "", "use_case": "compiler", "switched_from": "", "story": "GCC steering committee announces AI policy"}, {"id": 773492354, "item_id": 48343272, "url": "https://news.ycombinator.com/item?id=48343272", "by": "fithisux", "date": "2026-05-30", "stance": "recommend", "quote": "I migrated to gcc. Never had a problem.", "excerpt": "There are many open source alternatives/upgrades to M$$$ products. No reason to keep using them. Literally none. I have been a happy exclusive only user of OO/LibeOffice since 2004. Some times I needed to use MSOffice for a paper. It was always problematic. I haven't use VS since 2007. I migrated to gcc. Never had a problem. SQLServer? Only for demo and at work just to pull or save data. Postgres always saved the day", "context": "", "use_case": "compiler", "switched_from": "Visual Studio", "story": "Microsoft degrades functionality of perpetually-licensed offline products"}]}], "caveats": [{"label": "", "summary": "", "quotes": [{"id": 803720128, "item_id": 50232508, "url": "https://news.ycombinator.com/item?id=50232508", "by": "likoya", "date": "2026-10-25", "stance": "warn", "quote": "The GCC compiler is very unpredictable about what it considers unreachable code.", "excerpt": "The GCC compiler is very unpredictable about what it considers unreachable code. Once, I wanted to avoid reading an array x[i] to save L1 cache space, so I used a computed goto (goto base + delta * i;) followed by return x1; return x2; ... return xn;. However, the compiler decided that only the first two return values were reachable and optimized away the rest of the code", "context": "", "use_case": "compiling C code", "switched_from": "", "story": "Attention people who think UB is fine"}, {"id": 753117968, "item_id": 47069873, "url": "https://news.ycombinator.com/item?id=47069873", "by": "pseudohadamard", "date": "2026-02-18", "stance": "warn", "quote": "we love to break your code to show how much cleverererer than you we are", "excerpt": "I think it's a circular problem, the gcc developers are very insular and respond to outside input with anything from ignoring it to getting into long lawyeristic arguments why, if you squint at the text just right, their way is the only right way, which strongly discourages outside contributions. There's only so many hours in the day and arguing till you're blue in the face that silently mutating a piece of code into", "context": "", "use_case": "C compiler", "switched_from": "", "story": "What every compiler writer should know about programmers (Anton Ertl, 2015) [pdf]"}, {"id": 739343089, "item_id": 46208943, "url": "https://news.ycombinator.com/item?id=46208943", "by": "thefaux", "date": "2025-12-09", "stance": "warn", "quote": "Clang and gcc are abysmal on these benchmarks.", "excerpt": "I liked the first few paragraphs, but the article took a wrong turn for me when it pivoted to ir. Compiler ir need not be fiendishly complex, though modern compilers, particularly clang and gcc can create this impression. There are two nice benchmarks that I use to measure the complexity of a compiler: how long is the compiler and how long does it take to self compile. Clang and gcc are abysmal on these benchmarks. I", "context": "", "use_case": "compiler", "switched_from": "", "story": "Compiler Engineering in Practice \u2013 Part 1: What Is a Compiler?"}]}], "who": [{"by": "tnelsond4", "context": "C developer", "url": "https://news.ycombinator.com/item?id=47717744", "date": "2026-04-10"}], "tags": [], "use_cases": ["compiler", "compiling c code", "compiling c/c++", "compiling and testing c code", "compiler optimizations", "compiler underlying other software"], "compared": [{"slug": "clang", "name": "Clang", "co": 6, "switched_from": 0, "switched_to": 0}, {"slug": "visual-studio", "name": "Visual Studio", "co": 2, "switched_from": 1, "switched_to": 0}, {"slug": "linux", "name": "Linux", "co": 2, "switched_from": 0, "switched_to": 0}], "makers": [], "threads": [{"url": "https://news.ycombinator.com/item?id=49108685", "title": "GCC steering committee announces AI policy", "mentions": 2}, {"url": "https://news.ycombinator.com/item?id=50203996", "title": "Attention people who think UB is fine", "mentions": 1}, {"url": "https://news.ycombinator.com/item?id=50063427", "title": "AI is a tool and using it well takes skill", "mentions": 1}, {"url": "https://news.ycombinator.com/item?id=49799306", "title": "When the Debugger Lies", "mentions": 1}, {"url": "https://news.ycombinator.com/item?id=49798204", "title": "AMD's random number generator can't generate a 0?", "mentions": 1}, {"url": "https://news.ycombinator.com/item?id=49555233", "title": "The asteroid currently hitting front end web development", "mentions": 1}], "sentiment_by_month": {"2025-11": {}, "2025-12": {"warn": 1}, "2026-01": {"neutral": 1}, "2026-02": {"compare": 1, "warn": 1}, "2026-03": {"neutral": 1}, "2026-04": {"neutral": 1}, "2026-05": {"recommend": 1}, "2026-06": {}, "2026-07": {"neutral": 1, "recommend": 1}, "2026-08": {}, "2026-09": {"neutral": 3}, "2026-10": {"recommend": 1, "warn": 1}}, "quotes": [{"id": 803720128, "item_id": 50232508, "url": "https://news.ycombinator.com/item?id=50232508", "by": "likoya", "date": "2026-10-25", "stance": "warn", "quote": "The GCC compiler is very unpredictable about what it considers unreachable code.", "excerpt": "The GCC compiler is very unpredictable about what it considers unreachable code. Once, I wanted to avoid reading an array x[i] to save L1 cache space, so I used a computed goto (goto base + delta * i;) followed by return x1; return x2; ... return xn;. However, the compiler decided that only the first two return values were reachable and optimized away the rest of the code", "context": "", "use_case": "compiling C code", "switched_from": "", "story": "Attention people who think UB is fine"}, {"id": 801019728, "item_id": 50063733, "url": "https://news.ycombinator.com/item?id=50063733", "by": "sdevonoes", "date": "2026-10-12", "stance": "recommend", "quote": "I miss the tools I used in the past (gcc, linux, sqlite,\u2026)", "excerpt": "It\u2019s a shame I cannot inspect the tool. It\u2019s a shame I cannot modify it as I see fit. It\u2019s a shame that I need to pay $200/month to use it. But hey, I am a 3X engineer and my boss likes it, so I guess it should be fine? Not really, but I still get to pay the bills (for now) I miss the tools I used in the past (gcc, linux, sqlite,\u2026)", "context": "", "use_case": "", "switched_from": "", "story": "AI is a tool and using it well takes skill"}, {"id": 797287792, "item_id": 49830487, "url": "https://news.ycombinator.com/item?id=49830487", "by": "VorpalWay", "date": "2026-09-24", "stance": "neutral", "quote": "at least modern GCC and Clang will warn and/or error for this", "excerpt": "It makes no sense to me that C and C++ didn't require a diagnostic for this, rather you hit UB. I know that at least modern GCC and Clang will warn and/or error for this (not sure which as I use -Werror), but still, this is pointless UB to have. And no, in this case I don't buy that a C90 compiler would have been unable to check this.", "context": "", "use_case": "compiling C/C++", "switched_from": "", "story": "When the Debugger Lies"}, {"id": 796796288, "item_id": 49799768, "url": "https://news.ycombinator.com/item?id=49799768", "by": "strenholme", "date": "2026-09-22", "stance": "neutral", "quote": "I now test the XOF in both GCC and clang at multiple optimization levels", "excerpt": "Yes, /dev/(u)random is supposed to do that, but what if there\u2019s a bug in a kernel (e.g. some embedded system which may not even be running Linux) which causes /dev/(u)ramdom to be less than secure? There\u2019s also issues where, for example, it may no longer be possible to read /dev/(u)random after putting the process in a chroot() sandbox (chroot() isn\u2019t defined in POSIX so its behavior is not guaranteed to be consisten", "context": "", "use_case": "compiling and testing C code", "switched_from": "", "story": "AMD's random number generator can't generate a 0?"}, {"id": 793126193, "item_id": 49570387, "url": "https://news.ycombinator.com/item?id=49570387", "by": "chpatrick", "date": "2026-09-04", "stance": "neutral", "quote": "CPU optimizations to GCC", "excerpt": "I'm also outsourcing computational geometry to CGAL and CPU optimizations to GCC, so what? I can still reason about them. For example for a problem I had recently Claude pointed out (after some prodding for me) that the determinant of the Jacobian of a function I'm interested in is a polynomial in polar coordinates, so I used a fancy root finding library (which I also didn't write) to solve it efficiently.", "context": "", "use_case": "compiler optimizations", "switched_from": "", "story": "The asteroid currently hitting front end web development"}, {"id": 785986464, "item_id": 49124154, "url": "https://news.ycombinator.com/item?id=49124154", "by": "lanstin", "date": "2026-07-31", "stance": "recommend", "quote": "GCC and LLVM having won the compiler wars and being extremely high quality", "excerpt": "I believe you are underestimating the value of GCC and LLVM having won the compiler wars and being extremely high quality, and of Linux having won the OS wars, being extremely high quality. I use GenAI every day, but the quality is still proportional to the amount of my time - there is a multiplier for quantity of my amount but the 9s approaching 1 quality is not logarithmically different - the effort to fix one big ", "context": "", "use_case": "compiler", "switched_from": "", "story": "GCC steering committee announces AI policy"}, {"id": 785745824, "item_id": 49109114, "url": "https://news.ycombinator.com/item?id=49109114", "by": "Jedd", "date": "2026-07-30", "stance": "neutral", "quote": "almost everything I rely on uses it", "excerpt": "I don't use gcc directly - not in a long while - but almost everything I rely on uses it, and it's hugely encouraging to have the stewards of this project contemplate, and then determine to have this policy. Meanwhile, I don't know who quotemstr is, but they don't sound sane in any of the exchanges in this thread.", "context": "", "use_case": "compiler underlying other software", "switched_from": "", "story": "GCC steering committee announces AI policy"}, {"id": 773492354, "item_id": 48343272, "url": "https://news.ycombinator.com/item?id=48343272", "by": "fithisux", "date": "2026-05-30", "stance": "recommend", "quote": "I migrated to gcc. Never had a problem.", "excerpt": "There are many open source alternatives/upgrades to M$$$ products. No reason to keep using them. Literally none. I have been a happy exclusive only user of OO/LibeOffice since 2004. Some times I needed to use MSOffice for a paper. It was always problematic. I haven't use VS since 2007. I migrated to gcc. Never had a problem. SQLServer? Only for demo and at work just to pull or save data. Postgres always saved the day", "context": "", "use_case": "compiler", "switched_from": "Visual Studio", "story": "Microsoft degrades functionality of perpetually-licensed offline products"}, {"id": 763483904, "item_id": 47717744, "url": "https://news.ycombinator.com/item?id=47717744", "by": "tnelsond4", "date": "2026-04-10", "stance": "neutral", "quote": "GCC -Wall what tells me about most implicit casts going on (which I mostly ignore).", "excerpt": "GCC -Wall what tells me about most implicit casts going on (which I mostly ignore). But not all of them. I think these cast problems are ultimately something that the compiler can and should catch. And a stronger type enforcement system would be nice, but also I use C so i don't have to deal with rust's nonsense", "context": "C developer", "use_case": "compiler warnings for C", "switched_from": "", "story": "Safer Casting in C \u2013 With Zero Runtime Cost \u2013 Making Casts Visible, Auditable"}, {"id": 757786496, "item_id": 47361656, "url": "https://news.ycombinator.com/item?id=47361656", "by": "diath", "date": "2026-03-13", "stance": "neutral", "quote": "in GCC, when your terminal supports them, compiler diagnostic flags are clickable", "excerpt": "I love these and wish they were used more by command line applications. For instance in GCC, when your terminal supports them, compiler diagnostic flags are clickable and something like \"warning: address of local variable \u2018a\u2019 returned [-Wreturn-local-addr]\" can be clicked to open the GCC documentation for that flag.", "context": "", "use_case": "clickable diagnostic flags", "switched_from": "", "story": "Hyperlinks in Terminal Emulators"}, {"id": 753117968, "item_id": 47069873, "url": "https://news.ycombinator.com/item?id=47069873", "by": "pseudohadamard", "date": "2026-02-18", "stance": "warn", "quote": "we love to break your code to show how much cleverererer than you we are", "excerpt": "I think it's a circular problem, the gcc developers are very insular and respond to outside input with anything from ignoring it to getting into long lawyeristic arguments why, if you squint at the text just right, their way is the only right way, which strongly discourages outside contributions. There's only so many hours in the day and arguing till you're blue in the face that silently mutating a piece of code into", "context": "", "use_case": "C compiler", "switched_from": "", "story": "What every compiler writer should know about programmers (Anton Ertl, 2015) [pdf]"}, {"id": 752377553, "item_id": 47023597, "url": "https://news.ycombinator.com/item?id=47023597", "by": "jasode", "date": "2026-02-15", "stance": "compare", "quote": "In contrast, gcc/clang can have more isolation without each version interfering with each other.", "excerpt": ">It starts by not looking into Windows through UNIX developer glasses. People don't need any UNIX biases to just want multiple versions of MSVS to work the way Microsoft advertises. For example, with every new version of Visual Studio, Microsoft always says you can install it side-by-side with an older version. But every time, the new version of VS has a bug in the install somewhere that changes something that breaks", "context": "", "use_case": "compilers", "switched_from": "", "story": "I Fixed Windows Native Development"}, {"id": 746071712, "item_id": 46629482, "url": "https://news.ycombinator.com/item?id=46629482", "by": "cyberax", "date": "2026-01-14", "stance": "neutral", "quote": "GCC can now emit information that can be used to reconstruct the frame pointers for inlined functions", "excerpt": "Ah, I see what you mean. GCC can now emit information that can be used to reconstruct the frame pointers for inlined functions: https://lwn.net/Articles/940686/ It's now filtering through various projects: https://sourceware.org/binutils/wiki/sframe It will not undo _all_ the transformations, but it will help a lot. I used it for backtraces, and it fixed the missing frame issues for me. This was possible with the ear", "context": "", "use_case": "backtraces with inlined functions", "switched_from": "", "story": "Is Rust faster than C?"}, {"id": 739343089, "item_id": 46208943, "url": "https://news.ycombinator.com/item?id=46208943", "by": "thefaux", "date": "2025-12-09", "stance": "warn", "quote": "Clang and gcc are abysmal on these benchmarks.", "excerpt": "I liked the first few paragraphs, but the article took a wrong turn for me when it pivoted to ir. Compiler ir need not be fiendishly complex, though modern compilers, particularly clang and gcc can create this impression. There are two nice benchmarks that I use to measure the complexity of a compiler: how long is the compiler and how long does it take to self compile. Clang and gcc are abysmal on these benchmarks. I", "context": "", "use_case": "compiler", "switched_from": "", "story": "Compiler Engineering in Practice \u2013 Part 1: What Is a Compiler?"}]}