Skip to content

Commit fa984d4

Browse files
Allow to be compiled with speed optimizations
Prevent the asm label issue that follow when compiling: Error: symbol `head20' is already defined Error: symbol `nextbyte20' is already defined Error: symbol `head40' is already defined Error: symbol `nextbyte40' is already defined
1 parent f01f618 commit fa984d4

File tree

1 file changed

+15
-15
lines changed

1 file changed

+15
-15
lines changed

Adafruit_NeoPixel.cpp

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1141,7 +1141,7 @@ void Adafruit_NeoPixel::show(void) {
11411141
next = lo;
11421142
bit = 8;
11431143

1144-
asm volatile("head20:"
1144+
asm volatile("head20%=:"
11451145
"\n\t" // Clk Pseudocode (T = 0)
11461146
"st %a[port], %[hi]"
11471147
"\n\t" // 2 PORT = hi (T = 2)
@@ -1155,7 +1155,7 @@ void Adafruit_NeoPixel::show(void) {
11551155
"\n\t" // 1 next = lo (T = 7)
11561156
"dec %[bit]"
11571157
"\n\t" // 1 bit-- (T = 8)
1158-
"breq nextbyte20"
1158+
"breq nextbyte20%="
11591159
"\n\t" // 1-2 if(bit == 0)
11601160
"rol %[byte]"
11611161
"\n\t" // 1 b <<= 1 (T = 10)
@@ -1167,9 +1167,9 @@ void Adafruit_NeoPixel::show(void) {
11671167
"\n\t" // 2 nop nop (T = 16)
11681168
"rjmp .+0"
11691169
"\n\t" // 2 nop nop (T = 18)
1170-
"rjmp head20"
1170+
"rjmp head20%="
11711171
"\n\t" // 2 -> head20 (next bit out)
1172-
"nextbyte20:"
1172+
"nextbyte20%=:"
11731173
"\n\t" // (T = 10)
11741174
"st %a[port], %[lo]"
11751175
"\n\t" // 2 PORT = lo (T = 12)
@@ -1181,7 +1181,7 @@ void Adafruit_NeoPixel::show(void) {
11811181
"\n\t" // 2 b = *ptr++ (T = 16)
11821182
"sbiw %[count], 1"
11831183
"\n\t" // 2 i-- (T = 18)
1184-
"brne head20"
1184+
"brne head20%="
11851185
"\n" // 2 if(i != 0) -> (next byte)
11861186
: [port] "+e"(port), [byte] "+r"(b), [bit] "+r"(bit),
11871187
[next] "+r"(next), [count] "+w"(i)
@@ -1690,7 +1690,7 @@ void Adafruit_NeoPixel::show(void) {
16901690
next = lo;
16911691
bit = 8;
16921692

1693-
asm volatile("head20:"
1693+
asm volatile("head20%=:"
16941694
"\n\t" // Clk Pseudocode (T = 0)
16951695
"st %a[port], %[hi]"
16961696
"\n\t" // 2 PORT = hi (T = 2)
@@ -1704,7 +1704,7 @@ void Adafruit_NeoPixel::show(void) {
17041704
"\n\t" // 2 PORT = next (T = 7)
17051705
"mov %[next] , %[lo]"
17061706
"\n\t" // 1 next = lo (T = 8)
1707-
"breq nextbyte20"
1707+
"breq nextbyte20%="
17081708
"\n\t" // 1-2 if(bit == 0) (from dec above)
17091709
"rol %[byte]"
17101710
"\n\t" // 1 b <<= 1 (T = 10)
@@ -1718,9 +1718,9 @@ void Adafruit_NeoPixel::show(void) {
17181718
"\n\t" // 1 nop (T = 16)
17191719
"rjmp .+0"
17201720
"\n\t" // 2 nop nop (T = 18)
1721-
"rjmp head20"
1721+
"rjmp head20%="
17221722
"\n\t" // 2 -> head20 (next bit out)
1723-
"nextbyte20:"
1723+
"nextbyte20%=:"
17241724
"\n\t" // (T = 10)
17251725
"ldi %[bit] , 8"
17261726
"\n\t" // 1 bit = 8 (T = 11)
@@ -1732,7 +1732,7 @@ void Adafruit_NeoPixel::show(void) {
17321732
"\n\t" // 1 nop (T = 16)
17331733
"sbiw %[count], 1"
17341734
"\n\t" // 2 i-- (T = 18)
1735-
"brne head20"
1735+
"brne head20%="
17361736
"\n" // 2 if(i != 0) -> (next byte)
17371737
: [port] "+e"(port), [byte] "+r"(b), [bit] "+r"(bit),
17381738
[next] "+r"(next), [count] "+w"(i)
@@ -1753,7 +1753,7 @@ void Adafruit_NeoPixel::show(void) {
17531753
next = lo;
17541754
bit = 8;
17551755

1756-
asm volatile("head40:"
1756+
asm volatile("head40%=:"
17571757
"\n\t" // Clk Pseudocode (T = 0)
17581758
"st %a[port], %[hi]"
17591759
"\n\t" // 2 PORT = hi (T = 2)
@@ -1785,7 +1785,7 @@ void Adafruit_NeoPixel::show(void) {
17851785
"\n\t" // 1 next = lo (T = 24)
17861786
"dec %[bit]"
17871787
"\n\t" // 1 bit-- (T = 25)
1788-
"breq nextbyte40"
1788+
"breq nextbyte40%="
17891789
"\n\t" // 1-2 if(bit == 0)
17901790
"rol %[byte]"
17911791
"\n\t" // 1 b <<= 1 (T = 27)
@@ -1801,9 +1801,9 @@ void Adafruit_NeoPixel::show(void) {
18011801
"\n\t" // 2 nop nop (T = 36)
18021802
"rjmp .+0"
18031803
"\n\t" // 2 nop nop (T = 38)
1804-
"rjmp head40"
1804+
"rjmp head40%="
18051805
"\n\t" // 2 -> head40 (next bit out)
1806-
"nextbyte40:"
1806+
"nextbyte40%=:"
18071807
"\n\t" // (T = 27)
18081808
"ldi %[bit] , 8"
18091809
"\n\t" // 1 bit = 8 (T = 28)
@@ -1817,7 +1817,7 @@ void Adafruit_NeoPixel::show(void) {
18171817
"\n\t" // 2 nop nop (T = 36)
18181818
"sbiw %[count], 1"
18191819
"\n\t" // 2 i-- (T = 38)
1820-
"brne head40"
1820+
"brne head40%="
18211821
"\n" // 1-2 if(i != 0) -> (next byte)
18221822
: [port] "+e"(port), [byte] "+r"(b), [bit] "+r"(bit),
18231823
[next] "+r"(next), [count] "+w"(i)

0 commit comments

Comments
 (0)