Fork of mbed-os by erkin yucel

Committer:
elessair
Date:
Sun Oct 23 15:10:02 2016 +0000
Revision:
0:f269e3021894
Initial commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
elessair 0:f269e3021894 1 #include "toolchain.h"
elessair 0:f269e3021894 2
elessair 0:f269e3021894 3 #include <stdio.h>
elessair 0:f269e3021894 4 #include <stdint.h>
elessair 0:f269e3021894 5
elessair 0:f269e3021894 6
elessair 0:f269e3021894 7 MBED_PACKED(struct) TestAttrPackedStruct1 {
elessair 0:f269e3021894 8 char a;
elessair 0:f269e3021894 9 int x;
elessair 0:f269e3021894 10 };
elessair 0:f269e3021894 11
elessair 0:f269e3021894 12 typedef MBED_PACKED(struct) {
elessair 0:f269e3021894 13 char a;
elessair 0:f269e3021894 14 int x;
elessair 0:f269e3021894 15 } TestAttrPackedStruct2;
elessair 0:f269e3021894 16
elessair 0:f269e3021894 17 int testPacked() {
elessair 0:f269e3021894 18 int failed = 0;
elessair 0:f269e3021894 19
elessair 0:f269e3021894 20 if (sizeof(struct TestAttrPackedStruct1) != sizeof(int) + sizeof(char)) {
elessair 0:f269e3021894 21 failed++;
elessair 0:f269e3021894 22 }
elessair 0:f269e3021894 23
elessair 0:f269e3021894 24 if (sizeof(TestAttrPackedStruct2) != sizeof(int) + sizeof(char)) {
elessair 0:f269e3021894 25 failed++;
elessair 0:f269e3021894 26 }
elessair 0:f269e3021894 27
elessair 0:f269e3021894 28 return failed;
elessair 0:f269e3021894 29 }
elessair 0:f269e3021894 30
elessair 0:f269e3021894 31
elessair 0:f269e3021894 32 MBED_ALIGN(8) char a;
elessair 0:f269e3021894 33 MBED_ALIGN(8) char b;
elessair 0:f269e3021894 34 MBED_ALIGN(16) char c;
elessair 0:f269e3021894 35 MBED_ALIGN(8) char d;
elessair 0:f269e3021894 36 MBED_ALIGN(16) char e;
elessair 0:f269e3021894 37
elessair 0:f269e3021894 38 int testAlign() {
elessair 0:f269e3021894 39 int failed = 0;
elessair 0:f269e3021894 40
elessair 0:f269e3021894 41 if(((uintptr_t)&a) & 0x7){
elessair 0:f269e3021894 42 failed++;
elessair 0:f269e3021894 43 }
elessair 0:f269e3021894 44 if(((uintptr_t)&b) & 0x7){
elessair 0:f269e3021894 45 failed++;
elessair 0:f269e3021894 46 }
elessair 0:f269e3021894 47 if(((uintptr_t)&c) & 0xf){
elessair 0:f269e3021894 48 failed++;
elessair 0:f269e3021894 49 }
elessair 0:f269e3021894 50 if(((uintptr_t)&d) & 0x7){
elessair 0:f269e3021894 51 failed++;
elessair 0:f269e3021894 52 }
elessair 0:f269e3021894 53 if(((uintptr_t)&e) & 0xf){
elessair 0:f269e3021894 54 failed++;
elessair 0:f269e3021894 55 }
elessair 0:f269e3021894 56
elessair 0:f269e3021894 57 return failed;
elessair 0:f269e3021894 58 }
elessair 0:f269e3021894 59
elessair 0:f269e3021894 60
elessair 0:f269e3021894 61 int testUnused1(MBED_UNUSED int arg) {
elessair 0:f269e3021894 62 return 0;
elessair 0:f269e3021894 63 }
elessair 0:f269e3021894 64
elessair 0:f269e3021894 65 int testUnused() {
elessair 0:f269e3021894 66 return testUnused1(0);
elessair 0:f269e3021894 67 }
elessair 0:f269e3021894 68
elessair 0:f269e3021894 69
elessair 0:f269e3021894 70 int testWeak1();
elessair 0:f269e3021894 71 int testWeak2();
elessair 0:f269e3021894 72
elessair 0:f269e3021894 73 MBED_WEAK int testWeak1() {
elessair 0:f269e3021894 74 return 1;
elessair 0:f269e3021894 75 }
elessair 0:f269e3021894 76
elessair 0:f269e3021894 77 int testWeak2() {
elessair 0:f269e3021894 78 return 0;
elessair 0:f269e3021894 79 }
elessair 0:f269e3021894 80
elessair 0:f269e3021894 81 int testWeak() {
elessair 0:f269e3021894 82 return testWeak1() | testWeak2();
elessair 0:f269e3021894 83 }
elessair 0:f269e3021894 84
elessair 0:f269e3021894 85
elessair 0:f269e3021894 86 MBED_PURE int testPure1() {
elessair 0:f269e3021894 87 return 0;
elessair 0:f269e3021894 88 }
elessair 0:f269e3021894 89
elessair 0:f269e3021894 90 int testPure() {
elessair 0:f269e3021894 91 return testPure1();
elessair 0:f269e3021894 92 }
elessair 0:f269e3021894 93
elessair 0:f269e3021894 94
elessair 0:f269e3021894 95 MBED_FORCEINLINE int testForceInline1() {
elessair 0:f269e3021894 96 return 0;
elessair 0:f269e3021894 97 }
elessair 0:f269e3021894 98
elessair 0:f269e3021894 99 int testForceInline() {
elessair 0:f269e3021894 100 return testForceInline1();
elessair 0:f269e3021894 101 }
elessair 0:f269e3021894 102
elessair 0:f269e3021894 103
elessair 0:f269e3021894 104 MBED_NORETURN int testNoReturn1() {
elessair 0:f269e3021894 105 while (1) {}
elessair 0:f269e3021894 106 }
elessair 0:f269e3021894 107
elessair 0:f269e3021894 108 int testNoReturn() {
elessair 0:f269e3021894 109 if (0) {
elessair 0:f269e3021894 110 testNoReturn1();
elessair 0:f269e3021894 111 }
elessair 0:f269e3021894 112 return 0;
elessair 0:f269e3021894 113 }
elessair 0:f269e3021894 114
elessair 0:f269e3021894 115
elessair 0:f269e3021894 116 int testUnreachable1(int i) {
elessair 0:f269e3021894 117 switch (i) {
elessair 0:f269e3021894 118 case 0:
elessair 0:f269e3021894 119 return 0;
elessair 0:f269e3021894 120 }
elessair 0:f269e3021894 121
elessair 0:f269e3021894 122 MBED_UNREACHABLE;
elessair 0:f269e3021894 123 }
elessair 0:f269e3021894 124
elessair 0:f269e3021894 125 int testUnreachable() {
elessair 0:f269e3021894 126 return testUnreachable1(0);
elessair 0:f269e3021894 127 }
elessair 0:f269e3021894 128
elessair 0:f269e3021894 129
elessair 0:f269e3021894 130 MBED_DEPRECATED("this message should not be displayed")
elessair 0:f269e3021894 131 void testDeprecatedUnused();
elessair 0:f269e3021894 132 void testDeprecatedUnused() { }
elessair 0:f269e3021894 133
elessair 0:f269e3021894 134 MBED_DEPRECATED("this message should be displayed")
elessair 0:f269e3021894 135 int testDeprecatedUsed();
elessair 0:f269e3021894 136 int testDeprecatedUsed() {
elessair 0:f269e3021894 137 return 0;
elessair 0:f269e3021894 138 }
elessair 0:f269e3021894 139
elessair 0:f269e3021894 140 MBED_DEPRECATED_SINCE("mbed-os-3.14", "this message should not be displayed")
elessair 0:f269e3021894 141 void testDeprecatedSinceUnused();
elessair 0:f269e3021894 142 void testDeprecatedSinceUnused() { }
elessair 0:f269e3021894 143
elessair 0:f269e3021894 144 MBED_DEPRECATED_SINCE("mbed-os-3.14", "this message should be displayed")
elessair 0:f269e3021894 145 int testDeprecatedSinceUsed();
elessair 0:f269e3021894 146 int testDeprecatedSinceUsed() {
elessair 0:f269e3021894 147 return 0;
elessair 0:f269e3021894 148 }
elessair 0:f269e3021894 149
elessair 0:f269e3021894 150 int testDeprecated() {
elessair 0:f269e3021894 151 return testDeprecatedUsed() + testDeprecatedSinceUsed();
elessair 0:f269e3021894 152 }
elessair 0:f269e3021894 153