1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
|
File: anagram.c
Original provenience: unknown
Source: unknown
2017-04-18:
- Annotated anagram_main as entry-point for timing analysis
2016-06-22:
- Fixed type signature of function anagram_main to conform to TACLeBench
standard, i.e. `void anagram_main (void)`.
2016-05-24:
- Changed type of global variables anagram_achPhrase and
anagram_dictionary to `char const *[]`.
- Changed parameter type of function anagram_BuildMask to
`char const *`.
2016-04-26:
- Fixed array out-of-bounds access introduced by earlier change.
2016-04-20:
- Fixed some compiler warnings.
- Return value of anagram_return depends on the computation inside
of anagram_main.
2016-03-22
- Added forward declarations for all functions.
- Renamed function main to anagram_main.
- Added function anagram_init that calls anagram_ReadDict, removed
call to anagram_ReadDict from anagram_main.
- Added function anagram_return that handles the return value.
- Added new function main that first calls anagram_init,
then anagram_main and finally returns the return value of
anagram_return.
- Added generic TACLeBench header to all files.
- Introduced comments to split file in sections for type
definitions, forward declarations, global variables,
initialization-related and return-value-related functions,
core benchmark functions, and main routine.
- Renamed ch2i, DICTWORDS, Quad, MASK_BITS, MAX_QUADS, MAXCAND,
MAXSOL, ALPHABET, Word, PWord, PPWord, apwCand, cpwCand, Letter,
PLetter, alPhrase, cchPhraseLength, aqMainMask, aqMainSign,
cchMinLength, auGlobalFrequency, achByFrequency, pchDictionary,
Reset, ReadDict, BuildMask, NewWord, NextWord, BuildWord,
AddWords, apwSol, cpwLast, OneStep, DumpWords, FindAnagram and
SortCandidates to anagram_ch2i, anagram_DICTWORDS, anagram_Quad,
anagram_MASK_BITS, anagram_MAX_QUADS, anagram_MAXCAND,
anagram_MAXSOL, anagram_ALPHABET, anagram_Word, anagram_PWord,
anagram_PPWord, anagram_apwCand, anagram_cpwCand, anagram_Letter,
anagram_PLetter, anagram_alPhrase, anagram_cchPhraseLength,
anagram_aqMainMask, anagram_aqMainSign, anagram_cchMinLength,
anagram_auGlobalFrequency, anagram_achByFrequency,
anagram_pchDictionary, anagram_Reset, anagram_ReadDict,
anagram_BuildMask, anagram_NewWord, anagram_NextWord,
anagram_BuildWord, anagram_AddWords, anagram_apwSol,
anagram_cpwLast, anagram_OneStep, anagram_DumpWords,
anagram_FindAnagram and anagram_SortCandidates.
- Renamed swapi, pivot, qsorts, simulated_heap and freeHeapPos to
anagram_swapi, anagram_pivot, anagram_qsorts,
anagram_simulated_heap and anagram_freeHeapPos.
- Renamed achPhrase and dictionary to anagram_achPhrase and
anagram_dictionary.
- Renamed CompareFrequency to anagram_CompareFrequency.
- Increased simulated heap in anagram_stdlib.c to 18000 bytes to
prevent segmentation fault.
- Changed header guard _WCCMALLOC_H to ANAGRAM_STRINGS_H.
- Renamed wccmalloc, wccbzero to anagram_malloc, anagram_bzero.
- Moved declaration of anagram_malloc to header anagram_stdlib.h.
- Introduced header guard ANAGRAM_CTYPE_H.
- Renamed wccislower, wccisupper, wccisalpha, wcctolower to
anagram_islower, anagram_isupper, anagram_isalpha,
anagram_tolower.
- Removed illegal keyword "inline".
- Changed header guard _WCCSTDLIB_H to ANAGRAM_STDLIB_H.
- Renamed wccqsort to anagram_qsort.
- Fixed compiler warning "no previous extern declaration for
non-static variable" for variables simulated_heap and
freeHeapPos by declaring them static.
- Renamed preprocessor define HEAP_SIZE to ANAGRAM_HEAP_SIZE.
- Fixed compiler warning "no previous prototype for function" by
moving includes to the top of the file.
- Fixed compiler warnings "implicit conversion changes signedness"
and "comparison of integers of different signs" by consistenly
using the type unsigned long in qsort helper functions.
- Moved function CompareFrequency to file anagram.c, added
declaration for it in file anagram_compare.h and included it in
anagram_stdlib.h.
- Fixed compiler warning "no previous extern declaration for
non-static variable" by adding forward declarations.
- Fixed compiler warning "macro is not used" by removing unused
macros MAXWORDS and i2ch.
- Replaced macro ch2i by proper function.
- Fixed compiler warning "array subscript is of type 'char' in
function CompareFrequency.
- Fixed compiler warning "unused variable" by removing variable i
in function Reset.
- Fixed compiler warning "no previous extern declaration for
non-static variable" by making global variables in file
anagram.c static.
- Replaced macro lPhrase by its expansion.
- Fixed compiler warnings "implicit conversion loses integer
precision" and "implicit conversion changes signedness" by
adding explicit casts or using the appropriate type for local
variables.
- Fixed compiler warning "array subscript is of type 'char'" by
changing type of some local variables as well as of global
variable achByFrequency to int.
- Changed all //-style comments to /* */-style comments.
- Moved contents of wccmalloc.c to anagram_stdlib.c.
- Renamed input.c to anagram_input.c.
- Renamed wccctype.h to anagram_ctype.h.
- Renamed wccstdlib.c to anagram_stdlib.c.
- Renamed wccstdlib.h to anagram_stdlib.h.
- Renamed wccmalloc.h to anagram_strings.h.
- Applied TACLeBench formatting rules via
astyle --options=doc/example/astylerc.txt
- Tested conformance to C99 via
clang -fsyntax-only -Weverything -Wno-unknown-pragmas -Wno-padded -pedantic -std=c99
2017-06-27
- Remove static declarations.
2017-07-10:
- Adjust alignment calculation in anagram_malloc to not add padding on already
aligned addresses. This prevents a buffer overflow of anagram_simulated_heap.
|