Following up on the comments to JamesK's answer:
"The iron bar bent" is actually a really great analogy. Both "bent" and "compiled" can be used either transitively or intransitively to describe actual action:
The wrench bent the iron bar. — GCC compiled the code.
The iron bar bent. — The code compiled.
Like almost any English verb, both "bend" and "compile" can also be used to describe that some physical action is possible, without necessarily implying that the action was ever specifically carried out:
Wrenches can bend iron bars. — GCC can compile code.
Wrenches bend iron bars. — GCC compiles code.
This particular iron bar can be bent with a wrench. — This particular code can be compiled with GCC.
A wrench easily bends this particular iron bar. — GCC compiles this particular code.
In the last one, I had to cheat a little bit: "A wrench bends this iron bar" is probably grammatical, but it doesn't read to me like something a native speaker would actually say. (Notice also that the beneficiary of the "ease" is the person wielding the tool, not the tool itself. So in the same sense we might indeed say "GCC easily compiles this code," versus "GCC will compile this code, but only with difficulty" — like maybe it takes a few seconds to produce the object file.)
Finally, there's some discussion in the comments about who-or-what is properly doing the action, when a person directs the action but a tool executes it.
I bent the iron bar [using the wrench]. — I compiled the code [using GCC].
The wrench bent the iron bar. — GCC compiled the code.
I am fairly certain that this is a question of philosophy, not of grammar. Compare
John killed the old lady with a knife. — John's knife *killed the old lady.
A stray bullet from John's gun killed the old lady. — A stray bullet from John's gun *murdered the old lady.
My wrench bent the iron bar. — My mitt *caught the baseball.
Some actions can be intuitively attributed to inanimate tools; some actions intuitively require agency. Some, like "killed," seem to be in a gray area requiring some agency but not necessarily a whole person's worth. "Compiled" seems to be far, far on the "no agency required" side of the spectrum.
Notice that our "wrench" analogy isn't quite exact, for at least two reasons:
When you bend an iron bar using a wrench, the outcome depends not just on the wrench but also on your own physical strength. "A wrench bends this iron bar" is frequently dependent on the observer: it may be true for me and false for you (or vice versa). On the other hand, "GCC compiles this code" is rarely dependent on the observer. It'd be much more like saying "The Nargesa MT500A bends this iron bar" — a statement that can be verified by any observer with access to the tool.
Iron bars are rivalrous goods — once I've bent this particular iron bar, it's bent forever, and you have to go get a different iron bar if you want to bend one. Code is non-rivalrous — I can compile this particular piece of code, and then you can also compile it on your machine and we can compare answers. So maybe a tighter analogy to "GCC compiles this particular code" would be "The Nargesa MT500A bends this particular alloy."