graph TD A["Source Code (.c file)"] --> B[AST]; B --> C[LLVM IR]; C --> D[Assembly]; subgraph Clang-Frontend A -- parser --> B; B -- lowering --> C; end subgraph LLVM C -- "optimizer (opt)" --> C; C -- "backend (llc)" --> D; end A:::source B:::ast C:::ir D:::asm classDef source fill:#FFD700, stroke:#FFA500, stroke-width:2px, color:#000; classDef ast fill:#87CEFA,stroke:#1E90FF,stroke-width:2px; classDef ir fill:#98FB98,stroke:#3CB371,stroke-width:2px; classDef asm fill:#FFA07A,stroke:#FF6347,stroke-width:2px;