Knowledge

Value range analysis

Source 📝

32:
that tracks the range (interval) of values that a numeric variable can take on at each point of a program's execution. The resulting information can be used in optimizations such as redundancy elimination,
174: 321: 142: 355: 167: 527: 553: 404: 305: 558: 446: 160: 37:, instruction selection, etc., but can also be used to improve the safety of programs, e.g. in the detection of 341: 425: 476: 441: 365: 240: 220: 225: 53: 373: 350: 326: 255: 502: 497: 451: 378: 202: 197: 34: 456: 300: 49: 42: 8: 512: 383: 275: 183: 507: 471: 290: 280: 230: 90: 29: 388: 212: 94: 73:
Harrison, William H. (1977). "Compiler Analysis of the Value Ranges for Variables".
522: 461: 331: 310: 270: 250: 82: 517: 38: 492: 466: 265: 260: 245: 124: 547: 86: 110:
A First Step Towards Automated Detection of Buffer Overrun Vulnerabilities
235: 152: 315: 125:"Value Range Analysis of Conditionally Updated Variables and Pointers" 409: 17: 21: 108:
Wagner, D.; Foster, J. S.; Brewer, E. A.; Aiken, A. (2000).
107: 123:
Birch, Johnnie; van Engelen, Robert; Gallivan, Kyle.
143:"Value range propagation in GCC with Project Ranger" 122: 41:. Techniques for value range analysis typically use 48:Value range analysis is often implemented in the 545: 322:Induction variable recognition and elimination 168: 182: 175: 161: 75:IEEE Transactions on Software Engineering 72: 356:Sparse conditional constant propagation 546: 156: 140: 13: 14: 570: 306:Common subexpression elimination 447:Compile-time function execution 134: 116: 101: 66: 1: 59: 426:Interprocedural optimization 7: 477:Profile-guided optimization 442:Bounds-checking elimination 10: 575: 241:Loop-invariant code motion 485: 434: 418: 397: 364: 340: 289: 221:Automatic parallelization 211: 190: 554:Static program analysis 226:Automatic vectorization 87:10.1109/TSE.1977.231133 559:Compiler optimizations 374:Instruction scheduling 351:Global value numbering 327:Live-variable analysis 256:Loop nest optimization 184:Compiler optimizations 52:and is implemented in 503:Control-flow analysis 498:Array-access analysis 452:Dead-code elimination 410:Tail-call elimination 379:Instruction selection 203:Local value numbering 198:Peephole optimization 35:dead code elimination 533:Value range analysis 457:Expression templates 301:Available expression 26:value range analysis 513:Dependence analysis 384:Register allocation 276:Software pipelining 508:Data-flow analysis 472:Partial evaluation 281:Strength reduction 231:Induction variable 50:Intel C++ Compiler 30:data flow analysis 541: 540: 389:Rematerialization 141:MacLeod, Andrew. 43:symbolic analysis 566: 523:Pointer analysis 462:Inline expansion 332:Use-define chain 311:Constant folding 271:Loop unswitching 251:Loop interchange 177: 170: 163: 154: 153: 147: 146: 138: 132: 131: 129: 120: 114: 113: 105: 99: 98: 70: 20:, in particular 574: 573: 569: 568: 567: 565: 564: 563: 544: 543: 542: 537: 518:Escape analysis 486:Static analysis 481: 430: 414: 393: 366:Code generation 360: 336: 292: 285: 207: 186: 181: 151: 150: 139: 135: 127: 121: 117: 106: 102: 71: 67: 62: 39:buffer overruns 12: 11: 5: 572: 562: 561: 556: 539: 538: 536: 535: 530: 528:Shape analysis 525: 520: 515: 510: 505: 500: 495: 493:Alias analysis 489: 487: 483: 482: 480: 479: 474: 469: 467:Jump threading 464: 459: 454: 449: 444: 438: 436: 432: 431: 429: 428: 422: 420: 416: 415: 413: 412: 407: 401: 399: 395: 394: 392: 391: 386: 381: 376: 370: 368: 362: 361: 359: 358: 353: 347: 345: 338: 337: 335: 334: 329: 324: 319: 313: 308: 303: 297: 295: 287: 286: 284: 283: 278: 273: 268: 266:Loop unrolling 263: 261:Loop splitting 258: 253: 248: 246:Loop inversion 243: 238: 233: 228: 223: 217: 215: 209: 208: 206: 205: 200: 194: 192: 188: 187: 180: 179: 172: 165: 157: 149: 148: 133: 115: 100: 81:(3): 243–250. 64: 63: 61: 58: 24:construction, 9: 6: 4: 3: 2: 571: 560: 557: 555: 552: 551: 549: 534: 531: 529: 526: 524: 521: 519: 516: 514: 511: 509: 506: 504: 501: 499: 496: 494: 491: 490: 488: 484: 478: 475: 473: 470: 468: 465: 463: 460: 458: 455: 453: 450: 448: 445: 443: 440: 439: 437: 433: 427: 424: 423: 421: 417: 411: 408: 406: 405:Deforestation 403: 402: 400: 396: 390: 387: 385: 382: 380: 377: 375: 372: 371: 369: 367: 363: 357: 354: 352: 349: 348: 346: 343: 339: 333: 330: 328: 325: 323: 320: 317: 314: 312: 309: 307: 304: 302: 299: 298: 296: 294: 288: 282: 279: 277: 274: 272: 269: 267: 264: 262: 259: 257: 254: 252: 249: 247: 244: 242: 239: 237: 234: 232: 229: 227: 224: 222: 219: 218: 216: 214: 210: 204: 201: 199: 196: 195: 193: 189: 185: 178: 173: 171: 166: 164: 159: 158: 155: 144: 137: 126: 119: 111: 104: 96: 92: 88: 84: 80: 76: 69: 65: 57: 55: 51: 46: 45:extensively. 44: 40: 36: 31: 28:is a type of 27: 23: 19: 532: 136: 118: 109: 103: 78: 74: 68: 47: 25: 15: 318:elimination 236:Loop fusion 191:Basic block 548:Categories 398:Functional 316:Dead store 60:References 291:Data-flow 18:computing 293:analysis 95:17018610 22:compiler 112:. NDSS. 419:Global 344:-based 93:  435:Other 128:(PDF) 91:S2CID 213:Loop 342:SSA 83:doi 54:GCC 16:In 550:: 89:. 77:. 56:. 176:e 169:t 162:v 145:. 130:. 97:. 85:: 79:3

Index

computing
compiler
data flow analysis
dead code elimination
buffer overruns
symbolic analysis
Intel C++ Compiler
GCC
doi
10.1109/TSE.1977.231133
S2CID
17018610
"Value Range Analysis of Conditionally Updated Variables and Pointers"
"Value range propagation in GCC with Project Ranger"
v
t
e
Compiler optimizations
Peephole optimization
Local value numbering
Loop
Automatic parallelization
Automatic vectorization
Induction variable
Loop fusion
Loop-invariant code motion
Loop inversion
Loop interchange
Loop nest optimization
Loop splitting

Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.