GNU C コンパイラの特徴のひとつは、前述のようにANSIあるいはISO等の標準への準拠である。もうひとつの特徴は独自の拡張機能である。このような拡張を「GCC拡張機能」とよぶ。GCC拡張機能は数多いが、多引数マクロ、基本型としての複素数型、式の演算結果としての左辺値、初期化式の拡張、Cでのインライン関数定義、ネストした関数定義、ラベルに対する&演算子の適用などがある。このような拡張は、C99における標準Cの拡張として逆に取り込まれたものも多い。言語機能の拡張のほかに、標準外機能としてasm文によるインラインアセンブラの機能はユニークである。ただし、GCCにおいてはこのインラインアセンブラ機能を利用して記述したコードに対しても最適化が行われる（プログラマが意図してアセンブリ言語を用いて書いたとしても、その通りのコードが出力されない可能性がある）点に注意が必要である。その他、研究論文の発表における実装例のベースとして、あるいは実験的機能実装のベースとしてGCC (G++)が使われることも多い。そのような拡張の最近の例としては、スタックバッファオーバーフローに関する脆弱性の回避のためのGCC拡張ProPoliceなどがある。
GCCはそれ自身が有用なフリーソフトウェアだが、OSやDOSエクステンダ（DJGPP、EMXなど）を構築するための基盤ツールとしても非常に有用であり、商用・非商用を問わず多くの環境で標準的なCコンパイラとして採用されている。特にLinuxやFreeBSDなど、フリーソフトウェアとしてのOSは、もしGCCが存在しなかったならば大きく違ったものになっていたであろうと言われている。実際Linuxの生みの親であるリーナス・トーバルズはGCCをGNUプロジェクトの中で最も重要なものとして挙げている。また、多くの組み込みOS や、ゲームの開発環境でもGCCを採用している場合も多い。これは、クロス開発を容易なものとするGCCの広範なプロセッサへの対応が評価されていることによる。その一方で、現状では生成コードの最適化において、特定のプロセッサへの最適化を図る商用コンパイラに水をあけられているのが実情である。特に科学技術演算で多用されるベクトル演算機構への対応や、特定のベンチマークなどでは顕著であった。これは多様な環境に対応することを第一とし、個別のプロセッサ向けの最適化を追求してこなかったことも大きな要因であったが、最近ではこれを改善するための試みも始められている。（最適化を参照）
GCCは通常のコンパイラと同様にフロントエンド部、最適化部、バックエンド部から構成される。フロントエンド部は字句解析、構文解析などを行い、対応言語ごとに用意されている。たとえばC++フロントエンド、Javaフロントエンドなどがある。バックエンド部のコード生成部（コードジェネレータ）、および最適化部（オプティマイザ）は全言語で共通である。したがってGCCの対応の言語同士の間では、生成コードの質や対応するCPUの種類は原理的に同じになる。なお、フロントエンドおよびバックエンドの間でやりとりされる中間形式としてRTL (Register Transfer Language) が使用される。CコンパイラとしてのGCCの開発のために開発された構文解析部生成系bisonやフリーな字句解析部生成系flexといったプログラムを使用してGNU Cコンパイラその他の各種フロントエンドは構築されている。これらは単独のフリーソフトウェアとしても有用なものである。GCCはバージョン4から中間形式が2つ追加された。まず、各言語は通常フロントエンド言語の木構造を保持した共通中間形式のGENERICに変換されその後GIMPLEという中間形式で木の最適化SSAをおこなってからRTLの最適化がおこなわれる。また、CやC++のコンパイル時にフロントエンドの構文解析、字句解析においてbisonやflexを使用しなくなった。
1985年、当時マサチューセッツ工科大学 (MIT) の研究者であったリチャード・ストールマンによって、既成のコンパイラを拡張する形で開発が始められた。当初コンパイラはPastelというPascalの方言によって書かれていた。その後ストールマンとLeonard H. Tower, Jr.によってC言語で書き直され、GNUプロジェクトの一つとして1987年に公開された。さらに2012年にはLawrence CrowlとDiego NovilloによってC++で書き直された。
氷堆丘は1本の軸に対してだいたい左右対称の形状をしており、その軸は、その氷堆丘を形成した氷河が動きと平行となっている  。 氷堆丘の一般的な規模は、長さ約1km〜2km程度、幅約300m〜600m程度、高さは50m未満。そして、（長さ）：（幅）＝7：4 程度であることが普通である。氷堆丘は、しばしば複数の氷堆丘が固まって存在しているわけだが、このような氷堆丘群を形成する氷堆丘は、どれも似た形状、似た規模、似た向きであることが普通である。さて、氷堆丘の断面を見ると、通常の氷堆丘は幾つもの層を持っている。このことは、氷堆丘が形成される過程で、幾度も幾度も氷河が削り取ってきた砂礫が追加されたであろうことを示唆している。氷堆丘を構成している物質（材料）は、氷河によって運ばれてきた砂礫である。このため、氷堆丘が存在している場所とは全く関係の無い砂礫を含んでいることもある。（全く別な場所から運ばれてきた迷子石のように、現在氷堆丘が存在している場所の岩盤とは全然性質の違う砂礫によって、その氷堆丘が構成されている場合もある。）なお氷堆丘は、砂礫が積み重なってできているとは言っても、砂が主な場合、礫が主な場合、両者が混じったものである場合、いずれもあり得る。洪積世に形成された複数の氷堆丘が固まって存在している場所の多くでは、そこの氷堆丘群の配置が、扇のようになっているのを観察できる  。 例えば、ムーラ氷河（Múlajökull）の氷堆丘群も、180度の弧を持った扇状に並んでいる  。