Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Confusion caused by use of -fpermissive in AVR and megaAVR compilation recipes #10154

Open
Labels
@allnick

Description

Hi.
There is the problem.

=============================================================

void setup() {
 Serial.begin(9600);
 Serial.println("Start");
}
void loop() {
 char ch = Serial.read();
 switch(ch){
 case '1':
 Serial.println("Block 1 starts executing");
 // Some block 1
 break;
 case '2':
 Serial.println("Block 2 starts executing");
 byte b;
 b = 0; // It's OK.
 // Some block 2
 break;
 case '3':
 Serial.println("Block 3 starts executing");
 // Some block 3
 break;
 case '4':
 Serial.println("Block 4 starts executing");
 // Some block 4
 break;
 }
}

Sketch uses 1668 bytes (5%) of program storage space...
Global variables use 294 bytes (14%) of dynamic memory...

=============================================================

void setup() {
 Serial.begin(9600);
 Serial.println("Start");
}
void loop() {
 char ch = Serial.read();
 switch(ch){
 case '1':
 Serial.println("Block 1 starts executing");
 // Some block 1
 break;
 case '2':
 Serial.println("Block 2 starts executing");
 byte b = 0; // This causes the problem! All blocks below the 2nd are never executed !!!
 // However, the value of the local variable in the 2nd block remains correct!
 // Some block 2
 break;
 case '3':
 Serial.println("Block 3 starts executing");
 // Some block 3
 break;
 case '4':
 Serial.println("Block 4 starts executing");
 // Some block 4
 break;
 }
}

Sketch uses 1596 bytes (4%) of program storage space...
Global variables use 244 bytes (11%) of dynamic memory...

=============================================================

Note the noticeably smaller code size in the second case.
Moreover, this does not depend on the number of blocks below the second one!
It looks like the linker just doesn't include them in the final code!

Additional context

Additional reports

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions

        AltStyle によって変換されたページ (->オリジナル) /