| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
To avoid clashes with compilers that use it as a keyword already
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This is very dumb. Template functions are implicitly marked inline according to
C++, and contrary to popular belief, "inline" *does* influence the compiler's
decision to inline a function. A function the compiler may not have decided to
inline normally may be inlined anyway, or issue a warning if it still decides
not to inline, if explicitly or implicitly marked as such (or does inline it as
requested, but then decides to not inline different functions it normally would
because of a cumulative code size increase or something).
Furthermore, once a function becomes inline due to being a template function,
there's no way to undo it. Marking an inline function "noinline" pushes the
problem the other way, causing the compiler to not inline a function it may
have decided was beneficial to inline. There's no way to declare a template
function to be inlined based solely on compiler heuristics, it will always be
influenced by the implicit "inline" or explicit "noinline".
That's what's happening here. A number of functions had been combined into a
smaller number of large-ish template functions to reduce code duplication and
ease maintanence, causing them to be implicitly inline as a side-effect. GCC
then manages to inline these larger functions as implicitly requested, but in
doing so prevents other smaller functions (which are explicitly marked inline)
from being inlined due to excessive code increase and issue a warning. The
"noinline" is a heavy-handed method of un-pessimizing the optimization pass, on
the assumption the compiler apparently doesn't actually want to inline the
template functions, but does so because they're technically marked inline.
There's no good option here until it gets acknowledged that inline does mean
something beyond allowing multiple definitions, and that template (and other
types of) function definitions sometimes (if not most often) want to allow
multiple definitions but don't want an artificial/detrimental boost in inline
prioritization.
/rant
|
|
|
|
|
| |
This also allows to include 11-bit indices in the fast lookup table path,
without exceeding GCC's internal limit of compile-time calculations.
|
|
|
|
|
| |
This replaces sin/cos calls with an array of 10 complex values for lookup
tables, and separates the first loop iteration with a constant x1 multiplier.
|
| |
|
| |
|
| |
|
|
|
|
|
| |
* disable unavailable functionality on xbox
* use not std version of getenv on xbox
|
| |
|
| |
|
| |
|
| |
|
|
|
| |
Fixes: https://github.com/kcat/openal-soft/issues/850
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
Instead of reinterpret_casting between incompatible types
|
| |
|
| |
|
| |
|
|
|
|
| |
And the standard macro is __has_cpp_attribute, not __has_attribute.
|
|
|
|
|
| |
The syntax parser for GCC 8 (and earlier?) fails when these attributes are in
certain places.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* clang-tidy: use bool literals
Found with modernize-use-bool-literals
Signed-off-by: Rosen Penev <[email protected]>
* clang-tidy: replace std::bind with lambdas
Found with modernize-avoid-bind
Signed-off-by: Rosen Penev <[email protected]>
* clang-tidy: use data() instead of pointer stuff
Found with readability-container-data-pointe
Signed-off-by: Rosen Penev <[email protected]>
* clang-tidy: use empty()
Found with readability-container-size-empty
Signed-off-by: Rosen Penev <[email protected]>
* clang-tidy: remove static in anon namespace
Found with readability-static-definition-in-anonymous-namespace
Signed-off-by: Rosen Penev <[email protected]>
* clang-tidy: remove const return
Found with readability-const-return-type
Signed-off-by: Rosen Penev <[email protected]>
Signed-off-by: Rosen Penev <[email protected]>
|
| |
|
| |
|
| |
|
|
|
|
|
|
| |
It's now decoded to B-Format while being FFT'd, and processed as B-Format.
Again, not that UHJ should really ever be used for convolution, but it's a
valid format someone may want to use despite the overhead from converting it.
|
|
|
|
|
| |
Another test to attempt to workaround MSVC build problems. Also, don't assume
bit-wise value alignment for pointers as a default fallback.
|
|
|
|
| |
This reverts commit 14d7809a89ea51ca663a7ebf09e7bc135b904d5d.
|
|
|
|
| |
Testing to see if this works around issues with MSVC builds
|
| |
|
| |
|
| |
|
| |
|
| |
|