The Design of an Optimizing Compiler Wulf, Johnsson, Weinstock, Hobbs

Total Page:16

File Type:pdf, Size:1020Kb

The Design of an Optimizing Compiler Wulf, Johnsson, Weinstock, Hobbs The Design of an Optimizing Compiler Wulf, Johnsson, Weinstock, Hobbs, and Geschke and The Production-Quality Compiler-Compiler Project Leverett, Cattell, Hobbs, Newcomer, Reiner, Schatz, Wulf Bliss/11 • an outstanding optimizing compiler for the PDP-11 • a fairly simple systems programming language • relied heavily on special case knowledge • strong emphasis on code selection & limited resources Comp 12, Spring 1996 Lecture 5, Page 1 Structure of the Bliss/11 Compiler delay tla - lex syn flo - - - rank final - pack - code - - The phases lexsynflo — scanning, parsing, data-flow analysis delay — determines shape & evaluation order, estimates costs tla, rank, pack — register allocation (memory–memory ops) code — tries to generate optimal code for each expression final — produce object code and perform peephole optimizations Comp 12, Spring 1996 Lecture 5, Page 2 lex-syn-flo lex-syn • hand constructed dfa finds lexemes & builds tables • top-down, recursive descent parser on simplified language (operator language w/o left recursion) • uses an explicit, auxilliary stack to construct tree • local constant folding in constructors • retain extra information to improve error recovery flo • flow analysis to identify optimization opportunities • finds common subexpressions and threads them together • finds possible code motion (hoisting, licm) & threads them • works inside out & incrementally (action routines) Output is set of tables, trees, and threaded opportunities Comp 12, Spring 1996 Lecture 5, Page 3 delay Goals 1. determine the “general shape” of the object code 2. estimate cost of each “program segment” 3. determine an evaluation order for each program segment Engineering • single treewalk using recursive action routines – makes preliminary decisions and passes them down tree – on return, uses returned context to make final decisions • decides on profitability of potential optimizations • uses Sethi-Ullman modified to track cse’s created & deleted • delays unary complements; chooses destroyed operands • multiply into shifts and adds • distributes multiply over adds • more constant folding Comp 12, Spring 1996 Lecture 5, Page 4 tla 1st part of TNBIND Structure • mutually recursive action routines pass around TNs • performs targeting, cost estimation, lifetime characterization, runtime stack optimization, and label assignment Engineering • targeting — parents suggest names for child’s return value • costs — sum over refs of code size, weighted by nesting depth • stack — use “dynamic temporaries” from parameter “pops” (an artifact of PDP-11 idiosyncracies) Comp 12, Spring 1996 Lecture 5, Page 5 rank 2nd part of TNBIND Goals • assign priorities (ranks) to each TN for allocation • costs by number of uses, with arithmetic preference to dense uses Engineering Divide references into four categories based on binding requirements 1. binding to a specific hardware register 2. must be bound to a register 3. must be bound to a memory location 4. may be bound to memory or a register Bliss/11 allows programmer to specify 1–3 by declaration Comp 12, Spring 1996 Lecture 5, Page 6 pack 3rd part of TNBIND Goals • make good use of the machine’s register set • assign TN’s to same register when possible & profitable Engineering • build an interference graph • build a preference graph • interference graph drives allocation • preference graph drives assignment • uses bin packing to find an allocation (equivalent to graph coloring, different terminology) pack tries to minimize memory ops, moves, and initialization TNBIND lives on (in spirit) in DEC compilers Comp 12, Spring 1996 Lecture 5, Page 7 code Goals • capitalize on all the earlier work • perform target-specific case analysis • generate outstanding code Engineering • myriad small details • original compiler used massive case analysis • PQCC substituted automatic pattern matching techniques • PQCC generated patterns from machine descriptions Strong arguments for automating this kind of detailed case analysis “In the final analysis, the quality of the local code has a greater impact on both the size and speed of the final program than any other optimization” Wulf et al., p. 89 Comp 12, Spring 1996 Lecture 5, Page 8 final Goals • produce the final “listing” and object code • perform some final optimizations on results of code Engineering • phase 1 examines adjacent instructions (lfp-style) – cross-jumping – removing code after unconditional branch – simplify algebraic identities involving literals – simplify tests and compares – address mode manipulations (PDP-11 specific) – redundant store elimination • phase 2 looks at each instruction for simplifications • phase 3 tries to use short branches whenever possible It is difficult to determine to what extent the final optimizations would be needed if more complete algorithms, rather than heuristics, existed in earlier phases of the compiler. we suspect that there will always be a role for a module similar to final in compilers with optimization aspirations similar to those of Bliss/11. Wulf et al., p. 125 Comp 12, Spring 1996 Lecture 5, Page 9.
Recommended publications
  • A Case Against the GOT' O William a . Wulf, Carnegie-Mellon Universit Y
    A Case Against the GOT' O William A . Wulf, Carnegie-Mellon Universit y ABSTRAC T suggestion to ban the goto appears to have been a part of the computing folklore for several years , It has been proposed, by E . W . Dijkstra and others , to this author's knowledge the suggestion wa s that the goto statement in programming language i s first made in print by Professor E . W . Dijkstra i n a principal culprit in programs which are diffi- a letter to the editor of the _Communications o f cult to understand, modify, and debug . More cor- the ACM in 1968 (1) . rectly, the argument is that it is possible t o In this paper we shall examine the rational e use the goto to synthesize program structures wit h for the elimination of the Soto in programin g these undesirable properties . Not all uses of th e languages, and some of the theoretical and practi- goto are to be considered harmful ; however, it i s cal implications of its (total) elimination . further argued that the "good" uses of the got o fall into one of a small number of specific case s RATIONAL E which may be handled by specific language con- structs . This paper summarizes the arguments i n At one level, the rationale for eliminatin g favor of eliminating the goto statement and som e the poto has already been given in the introduc- of the theoretical and practical implications o f tion . Namely, it is possible to use the goto in a the proposal . manner which obscures the logical structure of a program to a point where it becomes virtually im- KEY WORDS AND PHRASES : programming, programmin g possible to understand (1,3,4), It is not claimed languages, goto-less programming, structured pro- that every use of the goto obscures the logica l grammin g structure of a program ; it is only claimed that i t CR CATEGORIES : 4 .2, 4 .22, 5 .2 4 is possible to use the Soto to fabricate a "rat' s nest" of control flow which has the undesirabl e INTRODUCTION properties mentioned above .
    [Show full text]
  • Does the Seventh Amendment Compel Fact-‐Finding Before
    HAVE WE GONE TOO FAR: DOES THE SEVENTH AMENDMENT COMPEL FACT-FINDING BEFORE REACHING A DECISION ON PATENT- ELIGIBLE SUBJECT MATTER? JESSE D.H. SNYDER* I. INTRODUCTION Something seems amiss. Settled notions of what can be Patenta- ble are changing.1 To complicate matters further, so far, neither the SuPreme Court nor the Federal Circuit has addressed whether the in- quiry into Patent-eliGible subject matter is factual, legal, or both. And while the scoPe of Patentable subject matter is understandably con- strictinG, the end result may not be coterminous with the SuPreme Court’s Guidance in Alice Corporation Party Limited v. CLS Bank.2 Under Alice, which built uPon the Patent-eliGible subject matter frameworks of Prior cases, for those Patent claims that are directed to a Patent- ineligible concePt (e.G., abstract ideas), Patentability turns on whether an “inventive concePt” exists to “‘transform the nature of the claim’ into a Patent-eliGible aPPlication.”3 The lower courts have seized on the Alice holding, inhuming Pa- tents whose subject-matter failures render them invalid as a matter of law. But what if the means adoPted by the lower courts to reach that leGal conclusion also sidestePs certain constitutional guarantees? What if they are simPlifyinG the analysis at a facial level when a more granular investigation is required? What if, at the motion to dismiss staGe, fact-findinG is still required to determine whether a Patent is * 2015-2016 term law clerk to the Honorable Jimmie V. Reyna of the U.S. Court of APPeals for the Federal Circuit. I earned my J.D., summa cum laude, from Texas Wesleyan School of Law and my B.S.
    [Show full text]
  • Shri Vaishnav Vidyapeeth Vishwavidyalaya, Indore
    SHRI VAISHNAV VIDYAPEETH VISHWAVIDYALAYA, INDORE Memories are special moments that tell our story SMRITI मृत ALUMNI DIRECTORY 2020 The rising flame epitomises leadership through enlightenment The bright orange colour represents brilliance and colour blue reflects serenity and infinity तमसो मा योतगमय Lead me from darkness to light ABOUT UNIVERSITY Shri Vaishnav Vidyapeeth Vishwavidyalaya is a state private university established under Madhya Pradesh Niji Vishwavidyalaya (Sthapana Avam Sanchalan) Adhiniyam in 2015 at Indore, MP(India). The University has been established with a vision to be a leader in shaping better future for mankind through quality education, training and research. It shall pursue the mission to make a difference in sustaining the growth of global societies by developing socially responsible citizens. Value based education being at the helm, the University offers degree and diploma programs through 13 constituent institutes and schools, besides Faculty of Doctoral Studies and Research. Some of the objectives of the University are as under: • To provide teaching and training in higher education and make provision for research as well as advancement and dissemination of knowledge. • To ensure world class quality in its offerings and create higher levels of intellectual abilities. • To create centres of excellence for research and development for sharing knowledge and its applications. Shri Vaishnav Vidyapeeth Vishwavidyalaya at Indore is a multi-disciplinary university focusing on the needs of various segments of the society. FROM THE DESK OF CHANCELLOR “To emerge as a winner, learn to balance relaxation and action” Shri Vaishnav Vidyapeeth Vishwavidyalaya was conceived as an institution of higher learning for imparting quality education to the young and experienced learners alike.
    [Show full text]
  • A Look at Some Compilers MATERIALS from the DRAGON BOOK and WIKIPEDIA MICHAEL WOLLOWSKI
    2/11/20 A Look at some Compilers MATERIALS FROM THE DRAGON BOOK AND WIKIPEDIA MICHAEL WOLLOWSKI EQN oTakes inputs like “E sub 1” and produces commands for text formatter TROFF to produce “E1” 1 2/11/20 EQN EQN oTreating EQN as a language and applying compiler technologies has several benefits: oEase of implementation. oLanguage evolution. In response to user needs 2 2/11/20 Pascal Developed by Nicolas Wirth. Generated machine code for the CDC 6000 series machines To increase portability, the Pascal-P compiler generates P-code for an abstract stack machine. One pass recursive-descent compiler Storage is organized into 4 areas: ◦ Code for procedures ◦ Constants ◦ Stack for activation records ◦ Heap for data allocated by the new operator. Procedures may be nested, hence, activation record for a procedure contains both access and control links. CDC 6000 series The first member of the CDC 6000 series Was the supercomputer CDC 6600, Designed by Seymour Cray and James E. Thornton Introduced in September 1964 Performed up to three million instructions per second, three times faster than the IBM Stretch, the speed champion for the previous couple of years. It remained the fastest machine for five years until the CDC 7600 Was launched. The machine Was Freon refrigerant cooled. Control Data manufactured about 100 machines of this type, selling for $6 to $10 million each. 3 2/11/20 CDC 6000 series By Steve Jurvetson from Menlo Park, USA - Flickr, CC BY 2.0, https://commons.Wikimedia.org/w/index.php?curid=1114605 CDC 205 CDC 205 DKRZ 4 2/11/20 CDC 205 CDC 205 Wiring, davdata.nl Pascal 5 2/11/20 Pascal One of the compiler Writers states about the use of a one-pass compiler: ◦ Easy to implement ◦ Imposes severe restrictions on the quality of the generated code and suffers from relatively high storage requirements.
    [Show full text]
  • Mach-O Programming Topics
    Mach-O Programming Topics Tools > Compiling & Debugging 2006-11-28 subsidiaries in the United States and other Apple Inc. countries. © 2003, 2006 Apple Computer, Inc. Java and all Java-based trademarks are All rights reserved. trademarks or registered trademarks of Sun Microsystems, Inc. in the U.S. and other No part of this publication may be countries. reproduced, stored in a retrieval system, or transmitted, in any form or by any means, PowerPC and and the PowerPC logo are mechanical, electronic, photocopying, trademarks of International Business recording, or otherwise, without prior Machines Corporation, used under license written permission of Apple Inc., with the therefrom. following exceptions: Any person is hereby UNIX is a registered trademark of The Open authorized to store documentation on a Group single computer for personal use only and Simultaneously published in the United to print copies of documentation for States and Canada. personal use provided that the documentation contains Apple’s copyright Even though Apple has reviewed this document, APPLE MAKES NO WARRANTY OR notice. REPRESENTATION, EITHER EXPRESS OR IMPLIED, WITH RESPECT TO THIS The Apple logo is a trademark of Apple Inc. DOCUMENT, ITS QUALITY, ACCURACY, MERCHANTABILITY, OR FITNESS FOR A Use of the “keyboard” Apple logo PARTICULAR PURPOSE. AS A RESULT, THIS (Option-Shift-K) for commercial purposes DOCUMENT IS PROVIDED “AS IS,” AND YOU, THE READER, ARE ASSUMING THE without the prior written consent of Apple ENTIRE RISK AS TO ITS QUALITY AND may constitute trademark infringement and ACCURACY. unfair competition in violation of federal IN NO EVENT WILL APPLE BE LIABLE FOR and state laws.
    [Show full text]
  • Steps Toward a Compiler for BLISS-360
    STEPS TOWARD A COMPILER FOR BLISS-360 Richard Charles Bahler HffiE 1 ihshL postgraduate school Monterey, California THESIS - STEPS TOWARD A COMPILER FOR BLISS- 360 by Richard Charles Bahler Thesis Advisor: Gary A . Kildall June 1972 Appiov&d ^oh. pubtic k.qA.qju> e; diA&iibntion untimittd. Steps Toward a Compiler for BLISS-360 by Richard Charles Bahler Major, United States Marine Corps Reserve B.A., University of Rochester, 1955 Submitted in partial fulfillment of the requirements for the degree of MASTER OF SCIENCE IN COMPUTER SCIENCE from the NAVAL POSTGRADUATE SCHOOL June 1972 ABSTRACT The design of a compiler for the IBM S/360 systems implementation language BLISS-360, a modification of the PDP-10 language BLISS- 10, is described. The compiler has a two-pass structure that is based upon the XPL Compiler Generator System. The first of these passes, which uses the XPL prototype compiler Skeleton,, is examined in some detail. Funda- mental data structures are described for this pass, including a constant table, a dictionary for variable definitions, and an intermediate language table to retain the source program structure and semantics. Modifications which allow the Skeleton compiler to perform a syntax analysis of BLISS- 360 programs are discussed and demonstrated. General requirements are defined for the functions to be performed by the second pass, including machine language code generation from the intermediate language, storage allocation and building program interface linkage. TABLE OF CONTENTS I. INTRODUCTION 9 A. PROJECT GOAL 9 B. THESIS OBJECTIVES 9 II. A BLISS-360 COMPILER — POSSIBLE APPROACHES 11 A. REQUIREMENTS OF THE COMPILER 11 B.
    [Show full text]
  • Openvms Linker Utility Manual
    OpenVMS Linker Utility Manual Order Number: AA–PV6CD–TK April 2001 This manual describes the OpenVMS Linker utility. Revision/Update Information: This manual supersedes the OpenVMS Linker Utility Manual, Version 7.1 Software Version: OpenVMS Alpha Version 7.3 OpenVMS VAX Version 7.3 Compaq Computer Corporation Houston, Texas © 2001 Compaq Computer Corporation Compaq, VAX, VMS, and the Compaq logo Registered in U.S. Patent and Trademark Office. OpenVMS is a trademark of Compaq Information Technologies Group, L.P. in the United States and other countries. UNIX is a trademark of The Open Group. All other product names mentioned herein may be the trademarks or registered trademarks of their respective companies. Confidential computer software. Valid license from Compaq required for possession, use, or copying. Consistent with FAR 12.211 and 12.212, Commercial Computer Software, Computer Software Documentation, and Technical Data for Commercial Items are licensed to the U.S. Government under vendor’s standard commercial license. Compaq shall not be liable for technical or editorial errors or omissions contained herein. The information in this document is provided "as is" without warranty of any kind and is subject to change without notice. The warranties for Compaq products are set forth in the express limited warranty statements accompanying such products. Nothing herein should be construed as constituting an additional warranty. ZK4548 The Compaq OpenVMS documentation set is available on CD–ROM. This document was prepared using VAX DOCUMENT Version 2.1. Contents Preface ............................................................ xi Part I Linker Utility Description 1 Introduction 1.1 Overview . ................................................ 1–1 1.1.1 Linker Functions .
    [Show full text]
  • The Blacklisting Memory Scheduler: Balancing Performance, Fairness and Complexity
    SAFARI Technical Report No. 2015-004 (March, 2015) The Blacklisting Memory Scheduler: Balancing Performance, Fairness and Complexity Lavanya Subramanian, Donghyuk Lee, Vivek Seshadri, Harsha Rastogi, Onur Mutlu Carnegie Mellon University flsubrama,donghyu1,visesh,harshar,[email protected] SAFARI Technical Report No. 2015-004 Abstract—In a multicore system, applications running on different cores is application-aware memory request scheduling (e.g., [30, interfere at main memory. This inter-application interference degrades 31, 28, 17, 18, 41]). The basic idea of application-aware overall system performance and unfairly slows down applications. Prior works have developed application-aware memory request schedulers to memory scheduling is to prioritize requests of different ap- tackle this problem. State-of-the-art application-aware memory request plications differently, based on the applications’ memory ac- schedulers prioritize memory requests of applications that are vulner- cess characteristics. State-of-the-art application-aware memory able to interference, by ranking individual applications based on their memory access characteristics and enforcing a total rank order. schedulers typically i) monitor applications’ memory access In this paper, we observe that state-of-the-art application-aware characteristics, ii) rank applications individually based on memory schedulers have two major shortcomings. First, such sched- these characteristics such that applications that are vulnerable ulers trade off hardware complexity in order to achieve high performance or fairness, since ranking applications individually with a total order to interference are ranked higher and iii) prioritize requests based on memory access characteristics leads to high hardware cost based on the computed ranking. and complexity. Such complexity could prevent the scheduler from We observe that there are two major problems with past meeting the stringent timing requirements of state-of-the-art DDR pro- tocols.
    [Show full text]
  • The Oracle, 1934 Bangor High School
    Bangor Public Library Bangor Community: Digital Commons@bpl Bangor High School Yearbooks Bangor High School 1934 The Oracle, 1934 Bangor High School Follow this and additional works at: https://digicom.bpl.lib.me.us/bhs_yearbooks Recommended Citation Bangor High School, "The Oracle, 1934" (1934). Bangor High School Yearbooks. 30. https://digicom.bpl.lib.me.us/bhs_yearbooks/30 This Book is brought to you for free and open access by the Bangor High School at Bangor Community: Digital Commons@bpl. It has been accepted for inclusion in Bangor High School Yearbooks by an authorized administrator of Bangor Community: Digital Commons@bpl. For more information, please contact [email protected]. c - ?- THE ORACLE JUNE, 1934 PUBLISHED SIX TIMES A YEAR BY THE STUDENTS OF BANGOR HIGH SCHOOL BANGOR, MAINE Tlot• "Or.ot·J,." ;, approvt•cl l1y the Bangor ( ' l1 ~11n lu.•r of Comml'H'l' a .. an ~lClvt"1 - l;\;11g tHl'ff;um . Entt•recl a\ St•,-ou cl LH\ Mattt.•r ,lnnt• 14. 19 14, at th,· p,.,t Qfl,.,.. 11 Ban gor, M .1in,., 111><lt•r tlw A, I of M ai< lc , 1879. ... - --- -- - - - -~ -· -- _.. • • • • • • • • • We wish to express our thanks to thr following through whm;p aid the Oratlc ha: hcc•n able to cont inu<': Thr ach·rrti. J"; ::\Ir. IIolyokc• and the .\Ianual Training dc•part 111 ·nt, for mounting; the linolC'um blocks; ~liss Knight, for lwr IH'lp with tlw typing. FOREWORD N THE past fifty yearn, progrC'ss has become increa.singly im­ I portant as the keynote of our civilization.
    [Show full text]
  • Department of English
    Department of English AFMILJ> @BOBJLKV May 19, 2018 welcome graduates, families, and friends! This is an exciting day for us, faculty and staff in the English department, as we honor and congratulate our undergrad- uate and graduate students on receiving their degrees from Carnegie Mellon University: 15 students who are receiving a B.A., five receiving a B.S., one receiving a B.H.A., eight Additional Majors, 24 Minors, 15 receiving an M.A. in Literary and Cultural Studies, 11 receiving an M.A. in Professional Writing, eight receiving an M.A. in Rhetoric, and seven receiving a Ph.D. You, students, will carry the Carnegie Mellon University English degree throughout your lives. We eagerly await what your journey will hold and hope to remain partners with you in your careers going forward. Your success is our success. Our faculty and staff are proud of you and will miss you. I am grateful to them for their dedication to teaching and mentoring. I am also grateful to you, parents, relatives, and friends, who have given our graduates the support they needed to reach this milestone. It takes hard work to earn a degree in English at Carnegie Mellon, but they could not have done it without support— emotional and practical—from all of you, friends and families. Thank you for giving us the opportunity to teach them and learn from them. We are not saying goodbye to you: as alumni, you will always remain our students, and we look forward to learning about your achievements, your plans, your bold ideas.
    [Show full text]
  • WAMOS 2015 Second Wiesbaden Workshop on Advanced Microkernel Operating Systems
    WAMOS 2015 Second Wiesbaden Workshop on Advanced Microkernel Operating Systems Editor / Program Chair: Robert Kaiser RheinMain University of Applied Sciences Information Science Unter den Eichen 5 65195 Wiesbaden Germany Technical Report August 2015 Contents Foreword 3 Program Committee 3 Keynote Talk 5 Session 1: Kernel Design Principles7 Unikernels Kevin Sapper ...........................................7 Shared libraries for the seL4 Kernel Andreas Werner .......................................... 13 Session 2: IPC Performance and Security 19 Improvement of IPC responsiveness in microkernel-based operating systems Steffen Reichmann ......................................... 19 Side Channel and Covert Channel Attacks on Microkernel Architectures Florian Schneider and Alexander Baumgartner¨ ......................... 23 Session 3: Microkernel Scheduling 29 Towards policy-free Microkernels Olga Dedi ............................................. 29 User-level CPU Inheritance Scheduling Sergej Bomke ........................................... 33 Session 4: Device Drivers and I/O 37 USB in a microkernel based operating system Daniel Mierswa and Daniel Tkocz ................................ 37 User-mode device driver development Annalena Gutheil and Benjamin Weißer ............................. 43 Program 50 © Copyright 2015 RheinMain University of Applies Sciences (HSRM). All rights reserved. The copyright of this collection is with HSRM. The copyright of the individual articles remains with their authors. Foreword Welcome to HSRM and to WAMOS
    [Show full text]
  • Mach-O Runtime Architecture for Mac OS X Version 10.3
    Mach-O Runtime Architecture for Mac OS X version 10.3 2004-08-31 AIX is a trademark of IBM Corp., registered Apple Computer, Inc. in the U.S. and other countries, and is being © 2003, 2004 Apple Computer, Inc. used under license. All rights reserved. Java and all Java-based trademarks are trademarks or registered trademarks of Sun No part of this publication may be Microsystems, Inc. in the U.S. and other reproduced, stored in a retrieval system, or countries. transmitted, in any form or by any means, mechanical, electronic, photocopying, PowerPC and and the PowerPC logo are recording, or otherwise, without prior trademarks of International Business written permission of Apple Computer, Inc., Machines Corporation, used under license with the following exceptions: Any person therefrom. is hereby authorized to store documentation Simultaneously published in the United on a single computer for personal use only States and Canada. and to print copies of documentation for Even though Apple has reviewed this manual, personal use provided that the APPLE MAKES NO WARRANTY OR documentation contains Apple's copyright REPRESENTATION, EITHER EXPRESS OR IMPLIED, WITH RESPECT TO THIS MANUAL, notice. ITS QUALITY, ACCURACY, MERCHANTABILITY, OR FITNESS FOR A The Apple logo is a trademark of Apple PARTICULAR PURPOSE. AS A RESULT, THIS Computer, Inc. MANUAL IS SOLD ªAS IS,º AND YOU, THE PURCHASER, ARE ASSUMING THE ENTIRE Use of the ªkeyboardº Apple logo RISK AS TO ITS QUALITY AND ACCURACY. (Option-Shift-K) for commercial purposes IN NO EVENT WILL APPLE BE LIABLE FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, without the prior written consent of Apple OR CONSEQUENTIAL DAMAGES may constitute trademark infringement and RESULTING FROM ANY DEFECT OR unfair competition in violation of federal INACCURACY IN THIS MANUAL, even if advised of the possibility of such damages.
    [Show full text]