Comments (4)
First part done. Second part: better allocation of temps in general and overlapping them with locals. This requires some more thought though.
from gmqcc.
The correct name for these optimizations is called "peephole optimization", not "minor optimization". Please call them as such :)
from gmqcc.
It's more than just that. Eg. -Ominor
should also use the space of explicitly declared local variables as temps when they're not required for anything else. ie:
void foo(float cond) {
float a, b;
if (cond) {
a = get();
return a * 3 + a * a; // 'b' is entirely unused in this block so one of the MULs is stored in 'b'
} else {
a = get();
b = get();
return a + b;
}
}
Then again this could be its own -O
flag; And of course disabled by -g
from gmqcc.
Closing for now. The "wasted space after temps" is fixed; -Opeephole
reduces code size bout some 3%, and -Otail-recursion
works fine too. Other optimizations come in 0.3.
from gmqcc.
Related Issues (20)
- internal error when a qc function is called with an empty parameter HOT 2
- How should I compile this? HOT 1
- Segfault when variable and typedef share name
- Wrong column numbers
- Broken XOR assign HOT 1
- enum : flag uses incorrect incrementation with =
- frame macro syntax broken with C-style functions HOT 1
- operator != and == does not work with comparisons against nil HOT 1
- invalid types for variable argument function assignment
- Broken char literals get accepted
- Inconsistent math with multiple assignments to the same variable HOT 2
- for loop bug HOT 7
- if(cond) + break; issue with -O3 HOT 1
- if bug HOT 1
- multiple constants with same value HOT 1
- A way to run GMQCC as a linter HOT 5
- Repository and fork
- failed to open `progs.src` for reading when in subdirectory
- Deduplicate emitted opcodes variants
- CRC mismatch when using C-Style Function Declaration on System Entity Fields
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from gmqcc.