diff -uNr JuceLibraryCode.orig/modules/juce_graphics/colour/juce_PixelFormats.h JuceLibraryCode/modules/juce_graphics/colour/juce_PixelFormats.h --- JuceLibraryCode.orig/modules/juce_graphics/colour/juce_PixelFormats.h 2020-04-04 20:56:19.413373918 +0200 +++ JuceLibraryCode/modules/juce_graphics/colour/juce_PixelFormats.h 2020-04-04 20:58:17.006708806 +0200 @@ -108,19 +108,6 @@ forcedinline uint8 getGreen() const noexcept { return components.g; } forcedinline uint8 getBlue() const noexcept { return components.b; } - #if JUCE_GCC && ! JUCE_CLANG - // NB these are here as a workaround because GCC refuses to bind to packed values. - forcedinline uint8& getAlpha() noexcept { return comps [indexA]; } - forcedinline uint8& getRed() noexcept { return comps [indexR]; } - forcedinline uint8& getGreen() noexcept { return comps [indexG]; } - forcedinline uint8& getBlue() noexcept { return comps [indexB]; } - #else - forcedinline uint8& getAlpha() noexcept { return components.a; } - forcedinline uint8& getRed() noexcept { return components.r; } - forcedinline uint8& getGreen() noexcept { return components.g; } - forcedinline uint8& getBlue() noexcept { return components.b; } - #endif - //============================================================================== /** Copies another pixel colour over this one. @@ -339,9 +326,6 @@ { uint32 internal; Components components; - #if JUCE_GCC - uint8 comps[4]; // helper struct needed because gcc does not allow references to packed union members - #endif }; } #ifndef DOXYGEN diff -uNr JuceLibraryCode.orig/modules/juce_graphics/native/juce_RenderingHelpers.h JuceLibraryCode/modules/juce_graphics/native/juce_RenderingHelpers.h --- JuceLibraryCode.orig/modules/juce_graphics/native/juce_RenderingHelpers.h 2020-04-04 20:56:19.420040586 +0200 +++ JuceLibraryCode/modules/juce_graphics/native/juce_RenderingHelpers.h 2020-04-04 21:01:35.270044739 +0200 @@ -583,10 +583,6 @@ { areRGBComponentsEqual = sourceColour.getRed() == sourceColour.getGreen() && sourceColour.getGreen() == sourceColour.getBlue(); - filler[0].set (sourceColour); - filler[1].set (sourceColour); - filler[2].set (sourceColour); - filler[3].set (sourceColour); } else { @@ -642,7 +638,6 @@ const Image::BitmapData& destData; PixelType* linePixels; PixelARGB sourceColour; - PixelRGB filler [4]; bool areRGBComponentsEqual; forcedinline PixelType* getPixel (const int x) const noexcept @@ -657,47 +652,10 @@ forcedinline void replaceLine (PixelRGB* dest, const PixelARGB colour, int width) const noexcept { - if (destData.pixelStride == sizeof (*dest)) - { - if (areRGBComponentsEqual) // if all the component values are the same, we can cheat.. - { - memset (dest, colour.getRed(), (size_t) width * 3); - } - else - { - if (width >> 5) - { - const int* const intFiller = reinterpret_cast (filler); - - while (width > 8 && (((pointer_sized_int) dest) & 7) != 0) - { - dest->set (colour); - ++dest; - --width; - } - - while (width > 4) - { - int* d = reinterpret_cast (dest); - *d++ = intFiller[0]; - *d++ = intFiller[1]; - *d++ = intFiller[2]; - dest = reinterpret_cast (d); - width -= 4; - } - } - - while (--width >= 0) - { - dest->set (colour); - ++dest; - } - } - } + if ((size_t) destData.pixelStride == sizeof (*dest) && areRGBComponentsEqual) + memset ((void*) dest, colour.getRed(), (size_t) width * 3); // if all the component values are the same, we can cheat. else - { - JUCE_PERFORM_PIXEL_OP_LOOP (set (colour)) - } + JUCE_PERFORM_PIXEL_OP_LOOP (set (colour)); } forcedinline void replaceLine (PixelAlpha* dest, const PixelARGB colour, int width) const noexcept